Üdv! Készítettem még a szerveremre egy adminisztrátor rendszert de nem használom mert új modom van és a luxadmin tuningolt verizómat használom ezért inkább publikálom a kezdõ felhasználóknak akik nem értenek a dini használatához annak lehet hasznos lesz ez a kis szkript! Pár parancsot a netrõl néztem vagy segítettek benne mert volt gondom a sscanf -al!
Elkészítési Idõ: 1 óra
Készítõ: ZyZu
Dátum: 2012.07.19
Idõ: 17.05
Mentések: Kód, Pénz, Pont, admin színt
LÉTRE HOZNI EGY admin MAPPÁT A SCRIPTFILES MAPPÁBAN!
Szkript Codeban:
//Include
#include <a_samp>
#include <zcmd>
#include <dini>
#include <sscanf>
#include <dudb>
#define Loop(%1,%2) \\
for(new %1=0; %1<%2; %1++)
#pragma unused ret_memcpy
#pragma tabsize 0
enum pInfo
{
pCash,
pScore,
Level,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
#define SERVER_USER_FILE \"admin/%s.ini\"
#pragma unused ret_memcpy
#define GREY 0xAFAFAFAA
#define GREEN 0x33AA33AA
#define YELLOW 0xFFFF00AA
#define LIGHTBLUE 0x33CCFFAA
#define ORANGE 0xFF9900AA
#define WHITE 0xFFFFFFAA
new gPlayerLogged[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
gPlayerLogged[playerid] = 0;
new name[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), SERVER_USER_FILE, name);
if (!dini_Exists(file))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Regisztrálás\", \"{ff0000}Üdvözllek a szerveren! Nincsen ezen a szerveren fiókod, hozzál létre írd be a jelszavad!\", \"Regisztrálás\", \"Killép\");
}
if(fexist(file))
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Bejeletkezés\", \"{00ff48}Üdv kérlek jeletkezz be a szerverre és írd be a jelszavad!\",\"Bejeletkezés\", \"Killép\");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new name[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), SERVER_USER_FILE, name);
if(gPlayerLogged[playerid] == 1)
{
dini_IntSet(file, \"Score\", PlayerInfo[playerid][pScore]);
dini_IntSet(file, \"Money\", PlayerInfo[playerid][pCash]);
}
gPlayerLogged[playerid] = 0;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == 1)
{
new name[MAX_PLAYER_NAME], file[256], string[128];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), SERVER_USER_FILE, name);
if(!response) return Kick(playerid);
if (!strlen(inputtext)) return
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Regisztrálás\", \"{ff0000}Üdvözllek a szerveren! Nincsen ezen a szerveren fiókod, hozzál létre írd be a jelszavad!\", \"Regisztrálás\", \"Killép\");
dini_Create(file);
dini_IntSet(file, \"Password\", udb_hash(inputtext));
dini_IntSet(file,\"Level\",0);
dini_IntSet(file, \"Money\",PlayerInfo[playerid][pCash] = 500);
dini_IntSet(file, \"Score\",PlayerInfo[playerid][pScore] = 0);
format(string, 128, \"{00ff48}AccServ: {ff0000}Sikeres regisztrálás! A karakter neve {00ff48}%s{ff0000}, {ff0000}jelszavad {00ff48}%s{ff0000}!\", name, inputtext);
SendClientMessage(playerid, -1, string);
PlayerInfo[playerid][Level] = dini_Int(file,\"Level\");
gPlayerLogged[playerid] = 1;
}
if (dialogid == 2)
{
new name[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), SERVER_USER_FILE, name);
if(!response) return Kick(playerid);
if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Bejeletkezés\", \"{00ff48}Üdv kérlek jeletkezz be a szerverre és írd be a jelszavad!\",\"Bejeletkezés\", \"Killép\");
new tmp;
tmp = dini_Int(file, \"Password\");
if(udb_hash(inputtext) != tmp)
{
SendClientMessage(playerid, -1, \"{ff0000}Rossz jelszó!\");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Bejeletkezés\", \"{00ff48}Üdv kérlek jeletkezz be a szerverre és írd be a jelszavad!\",\"Bejeletkezés\", \"Killép\");
}
else
{
gPlayerLogged[playerid] = 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
GivePlayerMoney(playerid, dini_Int(file, \"Money\")-GetPlayerMoney(playerid));
SendClientMessage(playerid,-1, \"{00ff48}AccServ: {ff0000}Síkeres Bejeletkezés!\");
PlayerInfo[playerid][Level] = dini_Int(file,\"Level\");
if(PlayerInfo[playerid][Level] == 0)
return SendClientMessage(playerid,YELLOW,\"AccServ: {ff0000}Sikeres Belépés! Státusz: {ff0000}Játékos\");
if(PlayerInfo[playerid][Level] == 1)
return SendClientMessage(playerid,YELLOW,\"AccServ: {ff0000}Sikeres Belépés! Státusz: {ff0000}Segítõkész\");
if(PlayerInfo[playerid][Level] == 2)
return SendClientMessage(playerid,YELLOW,\"AccServ: {ff0000}Sikeres Belépés! Státusz: {ff0000}Moderátór\");
if(PlayerInfo[playerid][Level] == 3)
return SendClientMessage(playerid,YELLOW,\"AccServ: {ff0000}Sikeres Belépés! Státusz: {ff0000}V.I.P)\");
if(PlayerInfo[playerid][Level] == 4)
return SendClientMessage(playerid,YELLOW,\"AccServ: {ff0000}Sikeres Belépés! Státusz: {ff0000}Adminisztrátor\");
if(PlayerInfo[playerid][Level] == 5)
return SendClientMessage(playerid,YELLOW,\"AccServ: {ff0000}Sikeres Belépés! Státusz: {ff0000}Fõ Adminisztrátor\");
if(PlayerInfo[playerid][Level] > 5)
return SendClientMessage(playerid,YELLOW,\"AccServ: {ff0000}Sikeres Belépés! Státusz: {ff0000}Tulajdonós)\");
}
}
return 1;
}
CMD:setlevel(playerid, params[])
{
new id;
new ammount;
if(IsPlayerAdmin(playerid))
{
if(sscanf(params, \"ui\", id, ammount)) return SendClientMessage( playerid, 0xFF0000AA, \"Használat: /setlevel <Játékos ID/Név> <Szint>\" );
new
string[ 64 + 1 ],
file[ 100 ],
name[ MAX_PLAYER_NAME],
PlayerName[ MAX_PLAYER_NAME ];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(id, PlayerName, sizeof(PlayerName));
format( file, sizeof( file ), SERVER_USER_FILE, PlayerName );
format(string, sizeof(string), \"Adminisztrátor %s kienevezett %d színtû adminnak!\", name, ammount);
SendClientMessage(id, GREY, string);
format(string, sizeof(string), \"Síkeresen kinevezted %s színtû %d administrátornak!\", PlayerName, ammount);
SendClientMessage(playerid, GREY, string);
PlayerInfo[id][Level] = ammount;
dini_IntSet(file,\"Level\",ammount);
}
else return SendClientMessage(playerid, GREEN, \"Nem vagy Admin!\");
AdminCommand(playerid, \"SETLEVEL\");
return 1;
}
CMD:armourall(playerid, params[])
{
#pragma unused params
if(PlayerInfo[playerid][Level] < 4)
return SendClientMessage(playerid, ORANGE, \"Nem vagy Admin!\");
new string[71];
GetPlayerName(playerid, string, 128);
format(string, 71, \"Administrátor %s mindenki páncélzatát feltöltötte!\", string);
SendClientMessageToAll(YELLOW, string);
SetAllArmor(100.0);
AdminCommand(playerid, \"ARMOURALL\");
return 1;
}
CMD:healall(playerid, params[])
{
#pragma unused params
if(PlayerInfo[playerid][Level] < 4)
return SendClientMessage(playerid, ORANGE, \"Nem vagy Admin!\");
new string[71];
GetPlayerName(playerid, string, 128);
format(string, 71, \"Adminisztrátor %s mindenki életétt felöltötte!\", string);
SendClientMessageToAll(YELLOW, string);
SetAllHealth(100.0);
AdminCommand(playerid, \"HEALALL\");
return 1;
}
CMD:setscore(playerid, params[])
{
if(PlayerInfo[playerid][Level] < 4)
return SendClientMessage(playerid, ORANGE, \"Nem vagy Admin!\");
new tmp[256], tmp2[256];
new Index;
tmp = strtok(params, Index);
tmp2 = strtok(params, Index);
new id = strval(tmp);
new score = strval(tmp2);
if(!strlen(tmp))
return SendClientMessage(playerid,GREY,\"USAGE: /setscore <JátékosID> <Pont> \");
if(!strlen(tmp2))
return SendClientMessage(playerid,GREY,\"USAGE: /setscore <JátékosID> <Pont> \");
if(!IsPlayerConnected(id))
return SendClientMessage(playerid,GREY,\"Invalid ID\");
new string[72];
new pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
GetPlayerName(id, pName, MAX_PLAYER_NAME);
format(string, 72, \"Administrátor %s módosította a pontod %d!\", aName, score);
SendClientMessage(id, YELLOW, string);
format(string, 72, \"Átraktad a pontját %s! Pont: %d\", pName, score);
SendClientMessage(playerid, YELLOW, string);
SetPlayerScore(id, score);
AdminCommand(playerid, \"SETSCORE\");
return 1;
}
CMD:admins(playerid, params[])
{
new string[34];
#pragma unused params
SendClientMessage(playerid, GREEN, \"Elérhetõ Adminisztárotok:\");
Loop(i, MAX_PLAYERS)
{
new aName[MAX_PLAYER_NAME];
if(PlayerInfo[Level] >= 1)
{
GetPlayerName(i, aName, MAX_PLAYER_NAME);
format(string, 128, \"Adminisztrátorok: %s\", aName);
}
}
SendClientMessage(playerid, YELLOW, string);
return 1;
}
stock GivePlayerScore(playerid, score)
{
SetPlayerScore(playerid, GetPlayerScore(playerid) + (score) );
return 1;
}
stock SetAllHealth(Float:health)
{
Loop(i, MAX_PLAYERS)
{
if(IsPlayerConnected(i))
{
SetPlayerHealth(i, health);
}
}
return 1;
}
stock AdminCommand(playerid,command[])
{
new string[128];
GetPlayerName(playerid,string,128);
format(string,sizeof(string),\"<< Adminisztrátor %s || Színt: %d || Használta: %s >>\", string, PlayerInfo[playerid][Level], command);
Loop(i, MAX_PLAYERS)
{
if(PlayerInfo[Level] >= 1)
{
SendClientMessage(i, YELLOW, string);
}
}
}
stock SetAllArmor(Float:armor)
{
Loop(i, MAX_PLAYERS)
{
if(IsPlayerConnected(i))
{
SetPlayerArmour(i, armor);
}
}
return 1;
}
Tesztelve van mûködik, jöhetnek a kérdések és a kritikák!