Szerző Téma: Másféle dini mentés  (Megtekintve 503 alkalommal)

Nem elérhető inf

  • 366
    • Profil megtekintése
Másféle dini mentés
« Dátum: 2014. December 12. - 19:47:29 »
0 Show voters
Sziasztok!
Na ugyebár mindenki úgy szokta csinálni a mentést dini-vel hogy mindent először változóban tárol majd amikor leállítjuk a szervert vagy a játékos kilép akkor a változó értéket lementjük dini-vel.
Nekem most eszembe jutott ez a mentés fajta amikor nem használok változót hanem egyből dini-vel mentem.
Példa:
Ugyebár így néz ki egy rendes mentés dini-vel.
 
new Ertek1[MAX_PLAYERS];
new Ertek2[MAX_PLAYERS];
new Ertek3[MAX_PLAYERS];
CMD:test(playerid, params[])
{
new id, ertek1, ertek2, ertek3;
    if(sscanf(params,\"uddd\",id,ertek1,ertek2,ertek3)) return SendClientMessage(playerid, -1,  \"{\"piros\"}Használat: /test <Játékos> <Érték 1> <Érték 2> <Érték 3>\");
Ertek1[id] = ertek1;
Ertek2[id] = ertek2;
Ertek3[id] = ertek3;
    SendClientMessage(playerid, 0xFFFFFFFF, \"Értékek sikeresen elmentve!\");
return 1;
}
CMD:gettest(playerid, params[])
{
new string[128];
format(string, sizeof(string), \"A te értékeid: Érték 1: %d, Érték 2: %d, Érték 3: %d\", Ertek1[playerid], Ertek2[playerid], Ertek3[playerid]);
SendClientMessage(playerid, 0xFFFFFFFF, string);
return 1;
}
public OnPlayerConnect(playerid, reason)
{
    new file[128];
format(file,sizeof(file),\"/users/%s.ini\",GetName(playerid));
Ertek1[playerid] = dini_Int(file,\"Ertek1\");
Ertek2[playerid] = dini_Int(file,\"Ertek2\");
Ertek3[playerid] = dini_Int(file,\"Ertek3\");
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    new file[128];
format(file,sizeof(file),\"/users/%s.ini\",GetName(playerid));
dini_IntSet(file,\"Ertek1\",Ertek1[playerid]);
dini_IntSet(file,\"Ertek2\",Ertek2[playerid]);
dini_IntSet(file,\"Ertek3\",Ertek3[playerid]);
Ertek1[playerid] = 0;
Ertek2[playerid] = 0;
Ertek3[playerid] = 0;
return 1;
}

 
És így nézne ki az én mentésem:
 
CMD:test(playerid, params[])
{
new id, ertek1, ertek2, ertek3;
    if(sscanf(params,\"uddd\",id,ertek1,ertek2,ertek3)) return SendClientMessage(playerid, -1,  \"{\"piros\"}Használat: /test <Játékos> <Érték 1> <Érték 2> <Érték 3>\");
new file[128];
format(file,sizeof(file),\"/users/%s.ini\",GetName(playerid));
dini_IntSet(file,\"Ertek1\",ertek1);
dini_IntSet(file,\"Ertek2\",ertek2);
dini_IntSet(file,\"Ertek3\",ertek3);
    SendClientMessage(playerid, 0xFFFFFFFF, \"Értékek sikeresen elmentve!\");
return 1;
}
CMD:gettest(playerid, params[])
{
new string[128];
format(string, sizeof(string), \"A te értékeid: Érték 1: %d, Érték 2: %d, Érték 3: %d\", dini_Int(file,\"Ertek1\"), dini_Int(file,\"Ertek2\"), dini_Int(file,\"Ertek3\"));
SendClientMessage(playerid, 0xFFFFFFFF, string);
return 1;
}

 
Ti szerintetek melyiket érdemesebb használni?
Ha jól belegondolok ha kifagy a szerver akkor az OnPlayerDisconnect nem fut le és ez által nem ment el semmit.
Viszont az enyémben egyből elment mindent.

Másféle dini mentés
« Válasz #1 Dátum: 2014. December 12. - 19:58:13 »
+1 Show voters
Szerintem sokkal célszerűbb és logikusabb változókba menteni. Egyszer már volt erről téma, emlékszem, de nem találom...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal