#include <a_samp>#include <dini>#include <sscanf2>
enum pdata // létrehozunk egy új változócsoportot{ Level,// A szint értéke Death,//A halálok száma Money,//A pénz értéke Score //A pont értéke}
new PlayerInfo[MAX_PLAYERS][pdata];
public OnPlayerDeath(playerid, killerid, reason){ PlayerInfo[playerid][Death]++; //növeltük az értéket 1-el.return 1;}
CMD:setlevel(playerid,params[]){new playerid2,level;if(sscanf(params,\"id\",playerid2,level)) return SendClientMessage(playerid,-1,\"HASZNÁLAT: /setlevel [játékosid] [szint 0-5]\");if(playerid2 == INVALID_PLAYER_ID)return SendClientMessage(playerid,-1,\"Rossz játékos ID\");if(level < 0 || level > 5)return SendClientMessage(playerid,-1,\"HASZNÁLAT: /setlevel [játékosid] [szint 0-5]\");if(PlayerInfo[playerid][Level] < 5) return SendClientMessage(playerid,-1,\"A parancs használatához legalább 5-ös színtû adminnak kell lenned.\");PlayerInfo[playerid2][Level] = level;SendClientMessage(playerid,-1,\"Sikeresen átállítottad az admin szintjét!\"); SendClientMessage(playerid2,-1,\"Sikeresen át lett állítva az admin szinted!\");return 1;}
public OnPlayerDisconnect(playerid, reason) //Ugye amikor lecsatlakozik a játékos:{new string[128],name[MAX_PLAYER_NAME]; //létrehozunk egy formátumot, és egy nevet.GetPlayerName(playerid,name,sizeof(name)); //Lekérdezzük a játékos nevétformat(string,sizeof(string),\"%s.ini\",name); //A nevéhez hozzácsatoljuk a fájl típusát.if(dini_Exists(string)) //Ha létezik a fájl:{ dini_IntSet(\"Szint\",PlayerInfo[playerid][Level]); //Beállítjuk a \"Szint\" nevû csoportot, dini_IntSet(\"Halalok\",PlayerInfo[playerid][Death]); //Beállítjuk a \"Halalok\" nevû csoportot, dini_IntSet(\"Penz\",GetPlayerMoney(playerid));//Beállítjuk a \"Penz\" nevû csoportot, dini_IntSet(\"Pont\",GetPlayerScore(playerid));//Beállítjuk a \"Pont\" nevû csoportot,}return 1;}
public OnPlayerConnect(playerid){new string[128],name[MAX_PLAYER_NAME]; //Ugyan úgy létrehozunk egy formátumot....GetPlayerName(playerid,name,sizeof(name));format(string,sizeof(string),\"%s.ini\",name); // a nevéhez hozzátesszük a fájlt típusát...if(dini_Exists(string)){PlayerInfo[playerid][Level] = dini_Int(string,\"Level\"); //Lekérdezzük a \"Level\" csoport értékét.PlayerInfo[playerid][Death] = dini_Int(string,\"Halalok\");//Lekérdezzük a \"Halalok\" csoport értékét.GivePlayerMoney(playerid,dini_Int(string,\"Penz\"));//Lekérdezzük a \"Penz\" csoport értékét, és utána hozzáadjuk a pénzt.SetPlayerScore(playerid,dini_Int(string,\"Pont\"));//Lekérdezzük a \"Pont\" csoport értékét, és utána beállítjuk a pontjait.}else{ dini_Create(string); //FONTOS: hogyha nem található a játékos fájlja akkor hozzunk létre egy fájlt.}return 1;}
#include <a_samp>#include <dini>#include <sscanf2>#include <zcmd>enum pdata //az adattároló neve{ Level,// A szint értéke Death,//A halálok száma Money,//A pénz értéke Score //A pont értéke}new PlayerInfo[MAX_PLAYERS][pdata];public OnFilterScriptInit(){return 1;}public OnFilterScriptExit(){return 1;}public OnPlayerConnect(playerid){new string[128],name[MAX_PLAYER_NAME];GetPlayerName(playerid,name,sizeof(name));format(string,sizeof(string),\"%s.ini\",name);if(dini_Exists(string)){PlayerInfo[playerid][Level] = dini_Int(string,\"Level\");PlayerInfo[playerid][Death] = dini_Int(string,\"Halalok\");GivePlayerMoney(playerid,dini_Int(string,\"Penz\"));SetPlayerScore(playerid,dini_Int(string,\"Pont\"));}else{ dini_Create(string);}return 1;}CMD:setlevel(playerid,params[]){new playerid2,level;if(sscanf(params,\"id\",playerid2,level)) return SendClientMessage(playerid,-1,\"HASZNÁLAT: /setlevel [játékosid] [szint 0-5]\");if(playerid2 == INVALID_PLAYER_ID)return SendClientMessage(playerid,-1,\"Rossz játékos ID\");if(level < 0 || level > 5)return SendClientMessage(playerid,-1,\"HASZNÁLAT: /setlevel [játékosid] [szint 0-5]\");if(PlayerInfo[playerid][Level] < 5) return SendClientMessage(playerid,-1,\"A parancs használatához legalább 5-ös színtû adminnak kell lenned.\");PlayerInfo[playerid2][Level] = level;SendClientMessage(playerid,-1,\"Sikeresen átállítottad az admin szintjét!\"); SendClientMessage(playerid2,-1,\"Sikeresen át lett állítva az admin szinted!\");return 1;}public OnPlayerDisconnect(playerid, reason){new string[128],name[MAX_PLAYER_NAME];GetPlayerName(playerid,name,sizeof(name));format(string,sizeof(string),\"%s.ini\",name);if(dini_Exists(string)){ dini_IntSet(string,\"Szint\",PlayerInfo[playerid][Level]); dini_IntSet(string,\"Halalok\",PlayerInfo[playerid][Death]); dini_IntSet(string,\"Penz\",GetPlayerMoney(playerid)); dini_IntSet(string,\"Pont\",GetPlayerScore(playerid));}return 1;}public OnPlayerDeath(playerid, killerid, reason){PlayerInfo[playerid][Death]++; //növeltük az értéket 1-el.return 1;}
Spoiler for ADMIN MODE: ON: Bõvítsd a leírást, 1 percet kapsz Amúgy tényleg és ha valaki pl változók helyett inkább PVar-ar akarja írni vagy dini helyett mysql-al? arra is írhatnál valamit.
enum adatok // létrehozunk egy új változócsoportot{adminszint, // adattárolópenz, // -,,-pont // -,, -}new adatlekeres[MAX_PLAYERS][adatok]; // és lényegében ITT definiálunk egy olyan globális tömböt, amiben egy adott játékos adott információjára tudunk hivatkozni.
Értékelem a segítõ szándékod, de véleményem szerint nem eléggé igényes ahhoz, hogy a kezdõket megfelelõen segítse és megértesse a scriptelés alapköveit.Ami nagyon szemet szúrt, az az enumerátor, ahogy te próbálod értelmezni. Az enumerátor nem \"adattároló\", sõt. Adattárolónak a változókat / static-okat nevezném. Az enumerátor egy olyan csoportot képez, amin keresztül adatra lehet hivatkozni. ( A tárolást a csoporton, tehát az enumerátoron belüli \"változó\" végzi! ) enum adatok // létrehozunk egy új változócsoportot{adminszint, // adattárolópenz, // -,,-pont // -,, -}new adatlekeres[MAX_PLAYERS][adatok]; // és lényegében ITT definiálunk egy olyan globális tömböt, amiben egy adott játékos adott információjára tudunk hivatkozni. A másik, az sscanf nem csak a parancsok miatt hasznosak, lényegében nem is térsz rá arra, hogy mire jó, mikor kell használni, ami természetesen a karakterláncok feldarabolása / szétválasztása. Egyelõre ennyit vettem észre.
#include <a_samp>#include <dini>#include <sscanf2>#include <zcmd>enum pdata //az adattároló neve{ Level,// A szint értéke Death,//A halálok száma Money,//A pénz értéke Score //A pont értéke}new PlayerInfo[MAX_PLAYERS][pdata];public OnFilterScriptInit(){return 1;}public OnFilterScriptExit(){return 1;}public OnPlayerConnect(playerid){new string[128],name[MAX_PLAYER_NAME];GetPlayerName(playerid,name,sizeof(name));format(string,sizeof(string),\"%s.ini\",name);if(dini_Exists(string)){PlayerInfo[playerid][Level] = dini_Int(string,\"Level\");PlayerInfo[playerid][Death] = dini_Int(string,\"Halalok\");GivePlayerMoney(playerid,dini_Int(string,\"Penz\"));SetPlayerScore(playerid,dini_Int(string,\"Pont\"));}else{ dini_Create(string);}return 1;}CMD:setlevel(playerid,params[]){new playerid2,level;if(sscanf(params,\"id\",playerid2,level)) return SendClientMessage(playerid,-1,\"HASZNÁLAT: /setlevel [játékosid] [szint 0-5]\");if(playerid2 == INVALID_PLAYER_ID)return SendClientMessage(playerid,-1,\"Rossz játékos ID\");if(level < 0 || level > 5)return SendClientMessage(playerid,-1,\"HASZNÁLAT: /setlevel [játékosid] [szint 0-5]\");if(PlayerInfo[playerid][Level] < 5) return SendClientMessage(playerid,-1,\"A parancs használatához legalább 5-ös színtu adminnak kell lenned.\");PlayerInfo[playerid2][Level] = level;SendClientMessage(playerid,-1,\"Sikeresen átállítottad az admin szintjét!\");SendClientMessage(playerid2,-1,\"Sikeresen át lett állítva az admin szinted!\");return 1;}public OnPlayerDisconnect(playerid, reason){new string[128],name[MAX_PLAYER_NAME];GetPlayerName(playerid,name,sizeof(name));format(string,sizeof(string),\"%s.ini\",name);if(dini_Exists(string)){ dini_IntSet(string,\"Szint\",PlayerInfo[playerid][Level]); dini_IntSet(string,\"Halalok\",PlayerInfo[playerid][Death]); dini_IntSet(string,\"Penz\",GetPlayerMoney(playerid)); dini_IntSet(string,\"Pont\",GetPlayerScore(playerid));}return 1;}public OnPlayerDeath(playerid, killerid, reason){PlayerInfo[playerid][Death]++; //növeltük az értéket 1-el.return 1;}