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
Najlepsza odpowiedź 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
#1
Napisano 19.11.2014 22:10
#2
Napisano 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.
}
}
Użytkownik grankee edytował ten post 20.11.2014 04:10
#3
Napisano 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
Napisano 20.11.2014 19:21
Jeśli chcesz to w tabeli zresetować to musisz użyć
set_user_frags cs_set_user_deaths
#5
Napisano 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
Napisano 20.11.2014 20:24
Można prosić o jakiś przykład ? ![]()
#7
Napisano 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
Napisano 21.11.2014 02:06
Gwyn
get_user_info(id, "name", newname, 31);
wczyta nowy nick (ten po zmianie)
#9
Napisano 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
Napisano 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
Napisano 21.11.2014 13:37 Najlepsza odpowiedź
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
Napisano 21.11.2014 14:46
Dzięki za zainteresowanie, wszystko działa teraz jak należy ![]()
#13
Napisano 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
Napisano 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
Napisano 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
Napisano 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
Napisano 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
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych


Dodatki SourceMod



Temat jest zamknięty









