Nos ez kb a 3. tutom.
Régen láttam ilyesféle tutot a forumon valószínuleg törölve lett.
Egy tároló használatát fogom leírni. Ami a fájlkezelést is kényelmesebbé teheti.
Eloször hozzuk létre:
enum Info //Mátrix létrehozása
{
Name[MAX_PLAYER_NAME], //Név tároló
Money, //Pénz tároló
Score, //Pont tároló
}; //Lezárjuk
A 3 tároló ezen belül lehet akármi, ha lebegopontos értéket akarunk beilleszteni akkor Float: elotag kell, ha esetleg logikai változót akarsz (bár nem ajánlom) akkor bool:
Lehet több tároló is nem csak 3.
Nos most egy tömböt hozzunk létre amivel felhasználhatjuk ezt az egészet:
new pInfo[MAX_PLAYERS][info];
A MAX_PLAYERS a méretet jelenti, az Info résszel beágyazzuk a tömbbe a mátrixot. Általában használatkor a MAX_PLAYERS helyére a játékos azonosító kerül, vagy ha mindenkire vonatkozzon akkor a ciklusban létrehozott azonosító.
Dolgozzunk vele egy kicsit (Egy kis fájlba mentés):
public OnPlayerConnect(playerid)
{
new str[128]; //Karakterlánc létrehozása
new player[MAX_PLAYER_NAME]; //Változó a játékos nevéhez
GetPlayerName(playerid,player,sizeof(player)); //Lekérdezzük a játékos nevét
format(str,sizeof(str),\"/account/%s.ini\",player); //Megformázzuk a karakterláncot a játékos fájlának a helyére
pInfo[playerid][score] = dini_Int(str,\"Score\"); //A Score tárolót beállítjuk a fájlban tárolt értékre
pInfo[playerid][Money] = dini_Int(Account(playerid),\"Money\"); //A Money tárolót beállítjuk a fájlban tárolt értékre
return 1;
}
Persze nem csak így lehet használni, lehet sokféle értéket megadni a tárolónak:
pInfo[playerid][Money] = 5000;
(Csak példának)
Ez a tároló még ráadásul abban is jobb mint az átlagos lekérdezés, hogy el is tárolja rendesen, nem csak a függvényen/cikluson belül (Ugyebár elveszik az érték, a függvény végén, ha csak átlagosan lekérdezzük, de ennél nem.).
Remélem azért valamennyire értheto