Mieści się on w pliku inc.
Tu jego zawartosc :
#if defined _Save_included
#endinput
#endif
#include <amxmodx>
new sciezka[] = "addons/amxmodx/Zapis_v2" // Folder zapisywanych plikow
/* Funkcja Zapisywania */
public ZapiszDane(const file[], const key[], const data[])
{
new ominac
new c[1024], sciezka_[128], arg1[64], tekst[500], len;
formatex(sciezka_, 127, "%s/%s", sciezka, file);
formatex(c, 1023, "^"%s^" ^"%s^"", key, data);
if(!dir_exists(sciezka))
mkdir(sciezka);
if(!file_exists(sciezka_))
write_file(sciezka_, "", 0);
for(new i; read_file(sciezka_, i, tekst, 499, len);i++)
{
parse(tekst, arg1, 63);
if(equal(key, arg1, strlen(arg1)))
{
write_file(sciezka_, c, i);
ominac++
}
else
continue;
}
if(!ominac)
write_file(sciezka_, c, -1);
ominac = 0
}
/* Funkcja Odczytywania */
public WczytajDane(const file[], const key[], data[], len)
{
new tekst[1101], len, sciezka_[128];
new arg1[64], arg2[1024];
formatex(sciezka_, 127, "%s/%s", sciezka, file)
if(!file_exists(sciezka_))
return PLUGIN_CONTINUE
for(new i; read_file(sciezka_, i, tekst, 1100, len);i++)
{
parse(tekst, arg1, 63, arg2, 1023);
if(equal(key, arg1, strlen(arg1)))
copy(data, len, arg2);
else
continue;
}
return PLUGIN_CONTINUE
}
/* Funkcja Usuwania */
public UsunDane(const file[], const key[])
{
new tekst[1101], len, sciezka_[128];
new arg1[64], arg2[1024];
formatex(sciezka_, 127, "%s/%s", sciezka, file)
if(!file_exists(sciezka_))
return PLUGIN_CONTINUE
for(new i; read_file(sciezka_, i, tekst, 1100, len);i++)
{
parse(tekst, arg1, 63, arg2, 1023);
if(equal(key, arg1, strlen(arg1)))
write_file(sciezka_, "", i);
else
continue;
}
return PLUGIN_CONTINUE
}
teraz przedstawie funkcje i jak je uzywać:
ZapiszDane(const file[], const key[], const data[])
Zapisuje dane data[] do pliku file[] do klucza key[] np:
new nick[33]
get_user_name(id, nick, 32)
ZapiszDane("plik.txt", nick, "Dane")
WczytajDane(const file[], const key[], data[], len)
Wczytuje dane z pliku file[] z klucza key[] do data[] o dlugosci len np:
new nick[33], dane[33]
get_user_name(id, nick, 32)
WczytajDane("plik.txt", nick, dane, 32)
UsunDane(const file[], const key[])
Usuwa dane z pliku file[] z klucza key[] np:
new nick[33]
get_user_name(id, nick, 32)
UsunDane("plik.txt", nick)
const file[]- Nazwa pliku z rozszerzeniem np: "plik.txt"
const key[]- Klucz, po ktorym ma wyszukiwać np :
const data[]- Co ma zapisać do danego klucza / Do czego ma wczytac.
len- do ilu ma zapisac (tylko w WczytajDane)
Plik tworzy sie w folderze : addons/amxmodx/Zapis_v2/nazwa_pliku.rozszerzenie
A teraz przykład użycia w krótkim kodzie:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <savev>
#include <fun>
#define PLUGIN "Zapis"
#define VERSION "1.0"
#define AUTHOR "tomcionek15 & grs4"
new plik[] = "fragi_gracza.txt"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /zapisz", "Zapisz")
register_clcmd("say /wczytaj", "Wczytaj")
}
public Zapisz(id)
{
new nick[33], dane[64]
get_user_name(id, nick, 32)
formatex(dane, 63, "%d %d %d %d", get_user_frags(id), get_user_deaths(id), get_user_health(id), get_user_armor(id))
ZapiszDane(plik, nick, dane)
}
public Wczytaj(id)
{
new nick[33], dane[64]
get_user_name(id, nick, 32)
WczytajDane(plik, nick, dane, 63)
new fg[5], dg[5], zg[5], ag[5] // fg = fragi gracza, dg = dedy graczca itd...
parse(dane, fg, 5, dg,5, zg, 5, ag, 5)
client_print(id, 3, "Z poprzedniego zapisu wynika, ze miales")
client_print(id, 3, "%d zabic i zgineles %d razy,", str_to_num(fg), str_to_num(dg))
client_print(id, 3, "miales %d zycia, i %d kamizelki", str_to_num(zg), str_to_num(ag))
}
A o to efekt:
zawartośc pliku : Zapis_v2/fragi_gracza.txt :
"STRIKER--McPr0 <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />" "1 4 98 0"
Plik .inc w zalączniku
I .sma uzyte.
===
Wszystko co robie, robie dla ludzi
Załączone pliki
Użytkownik PaTrIcKx edytował ten post 22.08.2012 11:39