←  Problemy z pluginami

AMXX.pl: Support AMX Mod X i SourceMod

»

Problem nvault

  • +
  • -
Geekos - zdjęcie 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
Odpowiedz

  • +
  • -
Boski Z Polski - zdjęcie 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);
Odpowiedz