Witam mam pewno pytanie, da się jakoś zrobić gdy gracz zmienia nick, to żeby statystyki się zerowały gdy gracz o takim nicku nie był zapisany, lub zmiana nicku = wczytanie statystyk gracza który jest już zapisany, wiem ,że można zablokować zmianę nicku, ale ja tego nie chce zrobić
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Zapis oraz odczyt nvault
Best Answer GwynBleidD, 21.11.2014 13:37
Ma zostać puste, a dostajesz argument type mismatch, bo parametr name w ZapiszDaneNick powinien być tablicą. Ostatecznie powinno wyglądać to tak:
public Zapisz_Dane(id) { new name[64]; get_user_name(id, name, 63) ZapiszDaneNick(id, name) } public ZapiszDaneNick(id, name[]){ new vaultkey[40], vaultdata[25] formatex(vaultkey, 39 ,"%s-ggg", name); formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name) nvault_set(zapis_sprawdz, vaultkey, vaultdata); }Z Wczytaj_Dane chyba sobie już poradzisz Go to the full post
#1
Posted 19.11.2014 22:10
#2
Posted 20.11.2014 04:08
public client_infochanged(id){ new newname[32], oldname[32]; get_user_info(id, "name", newname, 31); get_user_name(id, oldname, 31); if(!equal(oldname, newname)){ //tu dajesz kod zapisujący staty dla nicku "oldname" oraz wczytujący dla nicku "name" + możesz dodać zerowanie statów w tabeli podczas danej mapy (żeby przy nastepnej zmianie nicku nie wczytac tulu fragow/smierci ile aktualnie posiada, albo zapisywac do zmiennej globalnej podczas zmiany nicku i odejmowac je przy nastepnej i tak w kółko. } }
Edited by grankee, 20.11.2014 04:10.
#3
Posted 20.11.2014 08:52
public client_infochanged(id){ new newname[32], oldname[32]; get_user_info(id, "name", newname, 31); get_user_name(id, oldname, 31); if(!equal(oldname, newname)){ Zapisz_Dane(id) padlofiara[id] = 0; zabil[id] = 0; Wczytaj_Dane(id) } }
Zrobiłem coś takiego, ale to nie działa, jest dalej tak ,że jak zmieniam nick, to statystyki są takie same które miałem na starym nicku, jakieś inne propozycję ?
#4
Posted 20.11.2014 19:21
Jeśli chcesz to w tabeli zresetować to musisz użyć
set_user_frags cs_set_user_deaths
#5
Posted 20.11.2014 19:33
public client_infochanged(id){ new newname[32], oldname[32]; get_user_info(id, "name", newname, 31); get_user_name(id, oldname, 31); if(!equal(oldname, newname)){ Zapisz_Dane(id) padlofiara[id] = 0; zabil[id] = 0; Wczytaj_Dane(id) } }Zrobiłem coś takiego, ale to nie działa, jest dalej tak ,że jak zmieniam nick, to statystyki są takie same które miałem na starym nicku, jakieś inne propozycję ?
1. Do Zapisz_Dane(id) i Wczytaj_Dane(id) podajesz tylko ID, przez co te funkcje spróbują na podstawie ID same pobrać nick gracza. Stwórz ich alternatywne wersje, do których podasz nick, a nie id. I wtedy odpowiednio podaj do nich oldname i newname
2. Obie te funkcje wywołane z client_infochanged wywołają się dla STAREGO nicku, client_infochanged jest wywoływany przed właściwą zmianą nicku na serwerze (aby można było taką zmianę zablokować), więc nie dziwota, że statystyki się nie zmienią skoro wczytujesz nadal te dla starego nicku
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#6
Posted 20.11.2014 20:24
Można prosić o jakiś przykład ?
#7
Posted 20.11.2014 23:53
załóżmy, że kod funkcji zapisz wygląda tak:
ZapiszDane(id) { new name[64]; get_user_name(id, name, 63); // ... dalej zapis danych na nick w SQL lub nvault }
Stwórz więc funkcję ZapiszDaneNick(id, name) do której przeniesiesz wszystko z Zapisz_Dane, prócz pobierania nicku gracza. Następnie w Zapisz_Dane po pobraniu nicku wywołasz ZapiszDaneNick. Tą samą funkcję również wykonasz w client_infochanged, podając jako nick oldname. Dla Wczytaj_Dane postąp analogicznie, podając tym razem newname w client_infochanged.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#8
Posted 21.11.2014 02:06
Gwyn
get_user_info(id, "name", newname, 31);
wczyta nowy nick (ten po zmianie)
#9
Posted 21.11.2014 11:30
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#10
Posted 21.11.2014 12:06
Hmmmmm, najwyraźniej ja źle zrozumiałem ... Wyświetla mi się błąd : ""error 035: argument type mismatch (argument 2)"
Właśnie Zapisz_Dane(id) ma zostać puste w sensie ,że zostaje tylko pobieranie nicku + zapis danych na nick ? Czy tak jak teraz jest ?
public Zapisz_Dane(id) { new name[64]; get_user_name(id, name, 63) ZapiszDaneNick(id, name) new vaultkey[40], vaultdata[25] formatex(vaultkey, 39 ,"%s-ggg", name); formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name) nvault_set(zapis_sprawdz, vaultkey, vaultdata); } public ZapiszDaneNick(id, name){ new vaultkey[40], vaultdata[25] formatex(vaultkey, 39 ,"%s-ggg", name); formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name) nvault_set(zapis_sprawdz, vaultkey, vaultdata); }
#11
Posted 21.11.2014 13:37 Best Answer
public Zapisz_Dane(id) { new name[64]; get_user_name(id, name, 63) ZapiszDaneNick(id, name) } public ZapiszDaneNick(id, name[]){ new vaultkey[40], vaultdata[25] formatex(vaultkey, 39 ,"%s-ggg", name); formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name) nvault_set(zapis_sprawdz, vaultkey, vaultdata); }Z Wczytaj_Dane chyba sobie już poradzisz
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#12
Posted 21.11.2014 14:46
Dzięki za zainteresowanie, wszystko działa teraz jak należy
#13
Posted 22.11.2014 02:18
Jednak nie działa jak należy Są dwa problemy jeden załatany
public Zapisz_Dane(id) { new name[64]; get_user_name(id, name, 63) ZapiszDaneNick(id, name) } public ZapiszDaneNick(id, name[]){ new vaultkey[40], vaultdata[25] formatex(vaultkey, 39 ,"%s-ggg", name); formatex(vaultdata, 24, " ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%s^"", zabil[id], padlofiara[id], poziomct[id], poziomtt[id], name) nvault_set(zapis_sprawdz, vaultkey, vaultdata); }
Gdy jest tak ustawione, to nie zapisuje statystyk ..
new name[64]; get_user_name(id, name, 63)dodałem również do ZapiszDaneNick
I zapis teraz działa, teraz problem jest z odczytem Bo wczytuje dalej stary nick ...
Wczytaj_Dane(id, name[]) Jest zrobione tak + w client_infochanged(id) Wczytaj_Dane(id, oldname);
@POST UP NIE MOGŁEM EDYTOWAĆ
#14
Posted 22.11.2014 14:48
Pokaż funkcje Zapisz_Dane, ZapiszDaneNick, Wczytaj_Dane, WczytajDaneNick i client_infochanged w całości.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#15
Posted 22.11.2014 15:01
^"%d^"A po co tak? Inty można dawać bez tego "".
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#16
Posted 22.11.2014 22:27
Dzięki za zaangażowanie oraz za zainteresowanie, sebul, bo tak chciałem że tak powiem dla estetyki, mi to odpowiada Wdarła mi się literówka i dzięki temu nie czytało danych, udało mi się to naprawić dzięki raz jeszcze
#17
Posted 23.11.2014 14:59
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users