[ROZWIĄZANE] Zapis questów na klasę
Najlepsza odpowiedź
BlackPerfum
12.05.2014 18:31
Wysłałem ci juz działającą wersję w której wykonałem rzeczy tylko z moich postów i działa. Następnym razem czytaj uważniej. A co do nazwy klasy to wcale nie jest taki głupi pomysł bo jak zmienisz kolejnośc wczytywania klas lub dodasz nową to zburzysz dotychczasowy system indexowania

GoldenKill
12.05.2014
Witam
Chciałem zrobić zapis questów na daną klasę, aby wszystkie nie miały tego questa tylko ta na której wybraliśmy, ale mam problem bo mi nie chce działać. Załączam kod zapisu i z góry dziękuje za pomoc
public zapisz_questa(id,akt,quest){ new klasa[64]; new name[64]; get_user_name(id,name,63) cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa)) strtolower(name) new key[100]; formatex(key,99,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest); nvault_set(vault_questy,key,"1"); } public zapisz_aktualny_quest(id){ new klasa[64]; new name[64]; get_user_name(id,name,63) cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa)) strtolower(name) new key[100]; format(key,99,"questy-%d-%s",klasa[id],name); new data[32] formatex(data,charsmax(data),"#%i#%d#%d#%i",quest_gracza[id][Akt],quest_gracza[id][Quest],quest_postep[id],quest_gracza[id][Posiada]); nvault_set(vault_questy2,key,data); } public wczytaj_aktualny_quest(id){ new klasa[64]; new name[64]; get_user_name(id,name,63) cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa)) strtolower(name) new key[100]; format(key,99,"questy-%d-%s",klasa[id],name); new data[32]; nvault_get(vault_questy2,key,data,31); replace_all(data,31,"#"," "); new questt[32],ile[32],akt[10],posiada[10] parse(data,akt,9,questt,31,ile,31,posiada,9) quest_postep[id] = str_to_num(ile) quest_gracza[id][Quest] = str_to_num(questt) quest_gracza[id][Akt] = str_to_num(akt) quest_gracza[id][Posiada] = str_to_num(posiada) } public SprawdzQuesta(id,akt,quest){ new klasa[64]; new name[64]; get_user_name(id,name,63) cod_get_class_name(cod_get_user_class(id), klasa, charsmax(klasa)) strtolower(name) new key[64]; format(key,63,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest); new data[64]; nvault_get(vault_questy,key,data,63); return str_to_num(data); }
OpUr off
12.05.2014
Szczerze to nie chce mi się tego rozkminiać ale na pierwszy rzut oka wiem ze to nie działa. Trochę przekombinowałeś moim zdaniem.
BlackPerfum
12.05.2014
To dlatego piszesz do mnie na skype. Hehe. Proszę:
Szczerze to nie chce mi się tego rozkminiać ale na pierwszy rzut oka wiem ze to nie działa. Trochę przekombinowałeś moim zdaniem.
Ależ to działa tylko chopaczek źle bawi się nazwą klasy. Tak w ogóle to na co ci ona??
Łap
public zapisz_questa(id,akt,quest){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[100]; formatex(key,99,"questy-%i-%s-%i-%i",cod_get_user_class(id),name,akt,quest); nvault_set(vault_questy,key,"1"); } public zapisz_aktualny_quest(id){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[100]; format(key,99,"questy-%i-%s",cod_get_user_class(id),name); new data[32] formatex(data,charsmax(data),"#%i#%d#%d#%i",quest_gracza[id][Akt],quest_gracza[id][Quest],quest_postep[id],quest_gracza[id][Posiada]); nvault_set(vault_questy2,key,data); } public wczytaj_aktualny_quest(id){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[100]; format(key,99,"questy-%i-%s",cod_get_user_class(id),name); new data[32]; nvault_get(vault_questy2,key,data,31); replace_all(data,31,"#"," "); new questt[32],ile[32],akt[10],posiada[10] parse(data,akt,9,questt,31,ile,31,posiada,9) quest_postep[id] = str_to_num(ile) quest_gracza[id][Quest] = str_to_num(questt) quest_gracza[id][Akt] = str_to_num(akt) quest_gracza[id][Posiada] = str_to_num(posiada) } public SprawdzQuesta(id,akt,quest){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[64]; format(key,63,"questy-%i-%s-%i-%i",cod_get_user_class(id),name,akt,quest); new data[64]; nvault_get(vault_questy,key,data,63); return str_to_num(data); }
Ja tylko sprawiłem by to działało ale nie optymalizowałem bo nie tego dotyczy temat
Jak nigdzie błędu nie popełniłem to wszystko działa
BlackPerfum
12.05.2014
Przypomniam to jest zapis. Jeśli w trakcjie gry zmienisz klase to nadal quest będzie aktywny. Lecz jeśli weźmiesz klase, włączysz questa, wyjdziesz z serwera, wejdziesz, i wejdziesz na inna klase to nie będziesz miał tego questa co rozpocząłeś!!! Musisz wyłapać moment zmiany klasy i najpierw zapisać questa a potem odczytać adekwatnego do klasy, musisz także zmienić moment pierwszego wczytania questa i nie używaj mojego imienia bo je tępie.
GoldenKill
12.05.2014
Hmmm, może tak ?
new klasa [33][64]; public cod_class_changed(id, klasa) { quest_gracza[id] = wczytaj_aktualny_quest(id) } Do DeathMsg cod_get_class_name(cod_get_user_class(victim), klasa[victim], charsmax(klasa)); if(klasa[victim][0] == NazwyQ[quest_gracza[attacker]][2]){ quest_postep[attacker]++; zapisz_aktualny_quest(attacker) } Zapis public zapisz_questa(id,akt,quest){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[100]; formatex(key,99,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest); nvault_set(vault_questy,key,"1"); } public zapisz_aktualny_quest(id){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[100]; format(key,99,"questy-%i-%s",klasa[id],name); new data[32] formatex(data,charsmax(data),"#%i#%d#%d#%i",quest_gracza[id][Akt],quest_gracza[id][Quest],quest_postep[id],quest_gracza[id][Posiada]); nvault_set(vault_questy2,key,data); } public wczytaj_aktualny_quest(id){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[100]; format(key,99,"questy-%i-%s",klasa[id],name); new data[32]; nvault_get(vault_questy2,key,data,31); replace_all(data,31,"#"," "); new questt[32],ile[32],akt[10],posiada[10] parse(data,akt,9,questt,31,ile,31,posiada,9) quest_postep[id] = str_to_num(ile) quest_gracza[id][Quest] = str_to_num(questt) quest_gracza[id][Akt] = str_to_num(akt) quest_gracza[id][Posiada] = str_to_num(posiada) } public SprawdzQuesta(id,akt,quest){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[64]; format(key,63,"questy-%i-%s-%i-%i",klasa[id],name,akt,quest); new data[64]; nvault_get(vault_questy,key,data,63); return str_to_num(data); }
BlackPerfum
12.05.2014
Wytłumacz mi na co ci nazwa klasy???
Do DeathMsg
cod_get_class_name(cod_get_user_class(victim), klasa[victim], charsmax(klasa));
if(klasa[victim][0] == NazwyQ[quest_gracza[attacker]][2]){
quest_postep[attacker]++;
zapisz_aktualny_quest(attacker)
}
Zapis
Po co?
Wszystko okey tylko zamiast nazwy klasy pobieraj jej index - cod_get_user_class(id)
Edit
I nie dawaj tego:
quest_gracza[id] = wczytaj_aktualny_quest(id)
Tylko tak:
wczytaj_aktualny_quest(id)
Ale pamiętaj aby najpierw zapisac na starej klasie
Użytkownik BlackPerfum edytował ten post 12.05.2014 16:18
GoldenKill
12.05.2014
Następny błąd występuje tu
cod_get_user_class(vid); if(klasa[vid][0] == NazwyQ[quest_gracza[vid][Akt]]) { quest_postep[kid]++; zapisz_aktualny_quest(kid) }
Taki sam jak ci pisałem tylko NazwyQ
BlackPerfum
12.05.2014
Przeczytaj jeszcze raz mojego ostatniego posta
Tak się dzieje jak udostępniasz za mały skrawek kodu.
Tu potrzeba więcej zmian niż te które wprowadziłeś
Użytkownik BlackPerfum edytował ten post 12.05.2014 16:39
BlackPerfum
12.05.2014
Za chwile ci go wyślę ale możesz mi za ten czas powiedzieć po co ci ta nazwa klasy bo naprawdę nie wiem.
Wytłumacz mi
GoldenKill
12.05.2014
Znalazłem podobny kod w innym pluginie i chciałem zobaczyć czy jak u siebie go zastosuje, questy zaczną się zapisywać na daną klasę, ale niestety nie zadziałał.
Najlepsza odpowiedź
BlackPerfum
12.05.2014
Wysłałem ci juz działającą wersję w której wykonałem rzeczy tylko z moich postów i działa. Następnym razem czytaj uważniej. A co do nazwy klasy to wcale nie jest taki głupi pomysł bo jak zmienisz kolejnośc wczytywania klas lub dodasz nową to zburzysz dotychczasowy system indexowania