Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Draba - zdjęcie

Draba

Rejestracja: 14.05.2011
Aktualnie: Nieaktywny
Poza forum Ostatnio: 13.08.2012 17:33
-----

Moje tematy

Zapis i odczyt zmiennych z pliku

23.05.2011 20:04

Witam
Czy ktoś mógłby napisać prosty plugin (właściwie to jego część), który zapisywałby do pliku 3 zmienne i po zmianie mapy je wczytywał?

Zmienne:
[int] topexp
[string] topexpname
[string] topexplvl

Plik mógłby się znajdować np tutaj: "plugins/zp_top/zp_top.txt".

Dane powinny być zapisane w ten sposób:
[plik]
topexp
topexpname
topexplvl
[/plik]

Dodatkowo podczas zapisywania nowych wartości, te stare powinny być automatycznie usunięte.

Z góry dzięki, dam +.

nvault odczyt string

22.05.2011 20:41

Witam

//(...)

new topexp; // il. expa
new topexpname[35]; // nick gracza 
new topexplvl[35]; // ranga

//(...)
public top_stats_save()
{
	new vaultkey[64], vaultdata[512];

        format(vaultkey,63,"zp_czempion")
        format(vaultdata,511,"%i#%s#%s#",topexp,topexpname,topexplvl)

        nvault_set(zp_top,vaultkey,vaultdata)
}

public top_stats_load()
{
	new vaultkey[64],vaultdata[512]

        format(vaultkey,63,"zp_czempion")
        format(vaultdata,511,"%i#%s#%s#",topexp,topexpname,topexplvl) 

        nvault_get(zp_top,vaultkey,vaultdata,511)
	replace_all(vaultdata, 511, "#", " ")

	new jeden[100], dwa[100], trzy[100];
	topexp = str_to_num(jeden);

	parse(vaultdata, dwa, charsmax(dwa), topexpname, charsmax(topexpname));
	parse(vaultdata, trzy, charsmax(trzy), topexplvl, charsmax(topexplvl));

}

Problem polega na tym, że plugin poprawnie zapisuje i odczytuje tylko 2 pierwsze zmienne (topexp, topexpname). Topexplvl jest poprawnie wyświetlana tylko, wtedy jeżeli gracz jest na serwerze. Po zmianie mapy, błędnie wyświetla dane - zamiast informacji o poziomie, jest drugi raz podany nick, czyli po prostu nie odczytuje poprawnie topexplvl.

Statystyki pokazuje w ten sposób, ale to nie ma żadnego znaczenia (tak sądzę):
formatex(tempstring,charsmax(tempstring),"<b><font color=#F21533>OBECNY CZEMPION:</br> %s | %s | exp: %i</b></font><br /><br />", topexpname, topexplvl, topexp);


Nie znam się w ogóle na nvault i na pewno brakuje gdzieś czegoś, dlatego zwracam się do was z prośbą o pomoc.
Pozdrawiam

Dodano 22 maj 2011 - 20:55:
Sry za post pod postem, proszę moderatora o złączenie tej wiadomości z 1 postem (nie mogę edytować ;/).

To co opisałem jednak nie działa.
Wróciłem do starej wersji i tak wygląda działający kod z 2 zmiennymi:

public top_stats_save()
{
	new vaultkey[64],vaultdata[256];

        format(vaultkey,63,"zp_topexp");
        format(vaultdata,255,"%i#%s#",topexp,topexpname);

        nvault_set(zp_top,vaultkey,vaultdata);
}

public top_stats_load()
{
	new vaultkey[64],vaultdata[256];

        format(vaultkey,63,"zp_topexp");
        format(vaultdata,255,"%i#%s#",topexp,topexpname) ;

        nvault_get(zp_top,vaultkey,vaultdata,255);
	replace_all(vaultdata, 255, "#", " ");

	new jeden[100];
	new str_rank[32];
	parse(vaultdata, str_rank, charsmax(str_rank), topexpname, charsmax(topexpname));
	

 	parse(vaultdata, jeden, 99);
	topexp = str_to_num(jeden);
}

Jak dodać do tego 3 zmienną typu string?

Dodano 22 maj 2011 - 20:56:

Witam

//(...)

new topexp; // il. expa
new topexpname[35]; // nick gracza 
new topexplvl[35]; // ranga

//(...)
public top_stats_save()
{
	new vaultkey[64], vaultdata[512];

        format(vaultkey,63,"zp_czempion")
        format(vaultdata,511,"%i#%s#%s#",topexp,topexpname,topexplvl)

        nvault_set(zp_top,vaultkey,vaultdata)
}

public top_stats_load()
{
	new vaultkey[64],vaultdata[512]

        format(vaultkey,63,"zp_czempion")
        format(vaultdata,511,"%i#%s#%s#",topexp,topexpname,topexplvl) 

        nvault_get(zp_top,vaultkey,vaultdata,511)
	replace_all(vaultdata, 511, "#", " ")

	new jeden[100], dwa[100], trzy[100];
	topexp = str_to_num(jeden);

	parse(vaultdata, dwa, charsmax(dwa), topexpname, charsmax(topexpname));
	parse(vaultdata, trzy, charsmax(trzy), topexplvl, charsmax(topexplvl));

}

Problem polega na tym, że plugin poprawnie zapisuje i odczytuje tylko 2 pierwsze zmienne (topexp, topexpname). Topexplvl jest poprawnie wyświetlana tylko, wtedy jeżeli gracz jest na serwerze. Po zmianie mapy, błędnie wyświetla dane - zamiast informacji o poziomie, jest drugi raz podany nick, czyli po prostu nie odczytuje poprawnie topexplvl.

Statystyki pokazuje w ten sposób, ale to nie ma żadnego znaczenia (tak sądzę):
formatex(tempstring,charsmax(tempstring),"<b><font color=#F21533>OBECNY CZEMPION:</br> %s | %s | exp: %i</b></font><br /><br />", topexpname, topexplvl, topexp);


Nie znam się w ogóle na nvault i na pewno brakuje gdzieś czegoś, dlatego zwracam się do was z prośbą o pomoc.
Pozdrawiam

Dodano 22 maj 2011 - 20:55:

To co opisałem jednak nie działa.
Wróciłem do starej wersji i tak wygląda działający kod z 2 zmiennymi:

public top_stats_save()
{
	new vaultkey[64],vaultdata[256];

        format(vaultkey,63,"zp_topexp");
        format(vaultdata,255,"%i#%s#",topexp,topexpname);

        nvault_set(zp_top,vaultkey,vaultdata);
}

public top_stats_load()
{
	new vaultkey[64],vaultdata[256];

        format(vaultkey,63,"zp_topexp");
        format(vaultdata,255,"%i#%s#",topexp,topexpname) ;

        nvault_get(zp_top,vaultkey,vaultdata,255);
	replace_all(vaultdata, 255, "#", " ");

	new jeden[100];
	new str_rank[32];
	parse(vaultdata, str_rank, charsmax(str_rank), topexpname, charsmax(topexpname));
	

 	parse(vaultdata, jeden, 99);
	topexp = str_to_num(jeden);
}

Jak dodać do tego 3 zmienną typu string?


Dodano 22 maj 2011 - 20:57:
Sry za ten chaos, mam nadzieję, że ktoś się połapie ;/