Problem nvault
Geekos
06.03.2024
Witam mam taki kod na zapis waluty "Farbek"
tutaj 1 część :
public client_putinserver(id) { Wczytaj(id); }
tutaj 2 część :
public client_disconnect(id){ Zapisz(id); farbki[id] = 0; }
tutaj 3 część:
public Zapisz(id) { new name[48]; get_user_name(id,name,47); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-rangi", name); format(vaultdata, 255, "%i ^"%s^"",farbki[id],name); nvault_set(vault, vaultkey, vaultdata); log_amx("%s Zapisywanie", vaultdata); return; } public Wczytaj(id) { new name[48]; get_user_name(id,name,47); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-rangi", name); nvault_get(vault, vaultkey, vaultdata,255); new farbki_temp[33]; parse(vaultdata, farbki_temp, 32); farbki[id] = str_to_num(farbki_temp); log_amx("%s Ladowanie", vaultdata); return; }
Log z konsoli jak wchodze do gry :
L 03/06/2024 - 19:11:58: [farbki.amxx] 5 "brdvsky" Ladownianie
Log z konsoli jak wychodzę z gry :
L 03/06/2024 - 19:12:00: [farbki.amxx] 5 "brdvsky" Zapisywanie
I niby sie wszystko zapisuje ale jak wejde jeszcze raz do gry i mimo że pokaże że mam 5 farbek w konsoli w hud pokazuje mi 0 i nalicza mi od nowa jakbym miał faktycznie ich 0, uczę sie dopiero takich rzeczy moze ktoś coś podpowie
--------NAPRAWIONE
Użytkownik Geekos edytował ten post 06.03.2024 19:41
Boski Z Polski
07.03.2024
public saveData(id) { new name[33]; get_user_name(id, name, 32); nvault_set(vault, fmt("^"%s^"", name), fmt("%i", farbki[id])); } public getData(id) { new name[33], data[10]; get_user_name(id, name, 32); if(nvault_get(vault, fmt("^"%s^"", name), data, 9)) farbki[id] = str_to_num(data); }
Poprawiona wersja, a ogólnie w zapisie, którym podałeś bezsensowne jest podwójne zapisywanie nicku (gdzie w sumie sam key jest już źle sformatowany bo powinnien być w cudzysłowiu)
new farbki_temp[33]; parse(vaultdata, farbki_temp, 32);
Nie dam sobie ręki uciąć, ale tego typu zapis odczytuje tylko i wyłącznie jedną wartość. Ty zapisujesz dwie wartości, więc powinno to wyglądać:
new farbki_temp[33], farbki_name[48]; parse(vaultdata, farbki_temp, 32, farbki_name, 47); farbki[id] = str_to_num(farbki_temp);