Procentowy stan wykonanego zadania.
Eldo.
08.09.2013
Cześć.
Posiadam ten plugin:
link: http://amxx.pl/topic...mmisje-zadania/
Dokładnie chodzi mi o:
Opisze quest z dmg.
Aktualnie w pluginie jest tak, gdy gracz ma zadać 500 dmg wyświetla: "350/500" a mi chodzi aby obliczało procentowo tak jak z expe'm na cod mod czy diablo.
Mam nadzieje, że każdy wie o co chodzi.
Z góry dzięki.
d0naciak
09.09.2013
Chcesz żeby Ci to przerobić czy pokazać jak zrobić?
Działanie powinno wyglądać tak:
x = postęp misji y = wymagany postęp misji z = procentowy postęp misji z = x/y * 100.0
Wyobraź to sobie w kodzie (nie zerkałem do niego) i dodaj wynik w odpowiednie miejsce wyobrażając sobie jak powinien wyglądać cały kod.
Eldo.
09.09.2013
Kurde próboje przerobić ten kod ale cos nie moge:
new ileMa = doswiadczenie_gracza[id],ilePotrzeba = doswiadczenie_poziomu[poziom_gracza[id]],ilePotrzebaBylo = poziom_gracza[id]-1 >= 0 ? doswiadczenie_poziomu[poziom_gracza[id]-1] : 0 new Float:fProcent = 0.0; fProcent = (float((ileMa - ilePotrzebaBylo)) / float((ilePotrzeba - ilePotrzebaBylo))) * 100.0;
Użytkownik maybe1love edytował ten post 09.09.2013 20:27
d0naciak
09.09.2013
To tak jak w przykładzie podałeś, dajmy że 350 to aktualny postęp, a 500 do wymagany postęp, wtedy kod będzie wyglądał tak:
350/500 * 100.0 = 70.0%
Tylko tam musisz podstawić zmienne, bo wiadomo wymagany postęp jest inny dla misji i zależny od pluginu rejestrującego Quest'a, a postęp zmienia się w różnych sytuacjach zależnie od rodzaju misji, np. jeżeli w misji chodzi o zabijanie, to z każdym fragiem zmienia sie postęp misji
Tu nie trzeba kombinować tak jak w procentowym XP dla Cod'a
Eldo.
10.09.2013
Kurde, dalej nie wiem jak to zrobic ;c
Wiem, że się nie naucze jak dasz gotowca. Lecz jeszcze nie ten poziom abym mógł robić to. Dlatego proszę Cię o gotowca.
Za pomoc daje
d0naciak
10.09.2013
public MyInfo_QuestMenu(id, qid) { new IQuest=menu_create("Decyzja","MyInfo_QuestMenu_Handle"); menu_additem(IQuest,"Rezygnuje z Questa"); menu_additem(IQuest,"Nie rezygnuje z Questa"); new message[128]; new iName[32], iRew[64], iOpis[256]; ArrayGetString(g_QuestsDesc, qid, iOpis, 255); ArrayGetString(g_QuestsReward, qid, iRew, 63); ArrayGetString(g_QuestsName, qid, iName, 31); if(equal("-1", iRew, 2)) format(message, 127, "^n\rNazwa: \y%s^n\rOpis: \y%s^n\rPostep: \y%0.2f", iName, iOpis, float(fArrayGetCell(g_QuestsProgress[id], qid))/float(ArrayGetCell(g_QuestsTarget, qid)) * 100.0); else format(message, 127, "^n\rNazwa: \y%s^n\rOpis: \y%s^n\rPostep: \y%0.2f^n\rNagroda: \y%s", iName, iOpis, float(fArrayGetCell(g_QuestsProgress[id], qid))/float(ArrayGetCell(g_QuestsTarget, qid)) * 100.0, iRew); menu_addtext(IQuest, message); g_ItemID[id]=qid; menu_setprop(IQuest,MPROP_EXIT,MEXIT_NEVER); menu_display(id, IQuest); return PLUGIN_HANDLED; }
Podmień funkcje w pluginie, na tą wyżej.
Użytkownik d0naciak edytował ten post 10.09.2013 14:20
Eldo.
10.09.2013
Zrobiłem hud z wyświetleniem nazwy + postęp questa.
To public:
public PokazInformacje(id, qid) { id -= ZADANIE_POKAZ_INFORMACJE; new iName[32]; ArrayGetString(g_QuestsName, qid, iName, 31); if(!is_user_alive(id)) { remove_task(id+ZADANIE_POKAZ_INFORMACJE); return; } set_hudmessage(255, 255, 0, 0.02, 0.23, 0, 6.0, 1.0); ShowSyncHudMsg(id, CreateHudSyncObj(), "^n[Quest: %s | %0.2f%%]", iName), float(fArrayGetCell(g_QuestsProgress[id], qid))/float(ArrayGetCell(g_QuestsTarget, qid)) * 100.0);; }
Lecz wywala takie błędy: Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team Error: Undefined symbol "fArrayGetCell" on line 137 Error: Invalid expression, assumed zero on line 137 Warning: Expression has no effect on line 137 Error: Empty statement on line 137 Error: Too many error messages on one line on line 137 Compilation aborted. 4 Errors. Could not locate output file C:\Users\Krupek\Desktop\CodMod\scripting\quests.amx (compile failed).