21.12.2012, 10:17
Hey. Recently I changed my file writing include from Double o' Files 2 to y_ini as I read its faster and more reliable. The problem is that when I come back from school and check new account, some random people have their admin level set to 3 and helper status set to 1 (1 is true/0 is false). I cant see where I made a mistake as only rcon admin can make people admins and testers and I am the only one having this password.
Case Register:
Case Login:
my load stats stock
OnPlayerDisconnect
my stock
SetAdmin CMD
Thank you for any effort.
Case Register:
Код:
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Player Info Save");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteInt(File,"Escapes",0);
INI_WriteInt(File,"Kills",0);
INI_WriteInt(File,"Deaths",0);
INI_WriteInt(File,"TKills",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Helper",0);
INI_WriteInt(File,"Kicks",0);
INI_WriteInt(File,"Bans",0);
INI_WriteInt(File,"Banned",0);
INI_WriteInt(File,"Points",0);
INI_WriteInt(File,"Shotgun",0);
INI_WriteInt(File,"Uzi",0);
INI_WriteInt(File,"MP5",0);
INI_WriteInt(File,"M4",0);
INI_WriteInt(File,"DriveBy",0);
INI_WriteInt(File,"Armour",0);
INI_Close(File);
Код:
if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
{
if( PlayerInfo[ playerid ][ pBanned ] == 1)
{
SendClientMessage(playerid,COLOR_RED,"You were banned due to logging in to a banned account.");
new banname[25];
new banstring[100];
GetPlayerName(playerid,banname,sizeof(banname));
format(banstring,sizeof(banstring),"%s was banned for logging in into banned account.",banname);
banlog(banstring);
Ban(playerid);
}
SendClientMessage(playerid,COLOR_GREEN,"You logged in successfully.");
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ForceClassSelection(playerid);
if(PlayerInfo[playerid][pAdmin]>0)
{
SendClientMessage(playerid,COLOR_BLUE,"You logged in as an admin. Use /ahelp for commands.");
}
if(PlayerInfo[playerid][pHelper]==1)
{
SendClientMessage(playerid,COLOR_ORANGE,"You logged in as a helper. (/helperinfo)");
}
OnPlayerPointsChange(playerid);
}
Код:
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Escapes",PlayerInfo[playerid][pEscapes]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
INI_Int("TKills",PlayerInfo[playerid][pTKills]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Helper",PlayerInfo[playerid][pHelper]);
INI_Int("Kicks",PlayerInfo[playerid][pKicks]);
INI_Int("Bans",PlayerInfo[playerid][pBans]);
INI_Int("Banned",PlayerInfo[playerid][pBanned]);
INI_Int("Points",PlayerInfo[playerid][pPoints]);
INI_Int("Shotgun",PlayerInfo[playerid][pShotgun]);
INI_Int("Uzi",PlayerInfo[playerid][pUzi]);
INI_Int("MP5",PlayerInfo[playerid][pMP5]);
INI_Int("M4",PlayerInfo[playerid][pM4]);
INI_Int("DriveBy",PlayerInfo[playerid][pDriveBy]);
INI_Int("Armour",PlayerInfo[playerid][pArmour]);
Код:
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Player Info Save");
INI_WriteInt(File,"Escapes",PlayerInfo[playerid][pEscapes]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_WriteInt(File,"TKills",PlayerInfo[playerid][pTKills]);
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Helper",PlayerInfo[playerid][pHelper]);
INI_WriteInt(File,"Kicks",PlayerInfo[playerid][pKicks]);
INI_WriteInt(File,"Bans",PlayerInfo[playerid][pBans]);
INI_WriteInt(File,"Banned",PlayerInfo[playerid][pBanned]);
INI_WriteInt(File,"Points",PlayerInfo[playerid][pPoints]);
INI_WriteInt(File,"Shotgun",PlayerInfo[playerid][pShotgun]);
INI_WriteInt(File,"Uzi",PlayerInfo[playerid][pUzi]);
INI_WriteInt(File,"MP5",PlayerInfo[playerid][pMP5]);
INI_WriteInt(File,"M4",PlayerInfo[playerid][pM4]);
INI_WriteInt(File,"DriveBy",PlayerInfo[playerid][pDriveBy]);
INI_WriteInt(File,"Armour",PlayerInfo[playerid][pArmour]);
INI_Close(File);
Код:
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
Код:
CMD:setadmin(playerid,params[]) // rcon
{
new targetid,level;
if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid,COLOR_RED,"Access denied!");
}
if(sscanf(params,"ui",targetid,level))
{
return SendClientMessage(playerid,COLOR_RED,"Usage: /setadmin [playerid] [level(1/3)]");
}
if(!IsPlayerConnected(targetid))
{
return SendClientMessage(playerid,COLOR_RED,"Invalid ID.");
}
if(level<0||level>3)
{
return SendClientMessage(playerid,COLOR_RED,"Invalid level. Choose 0-3");
}
if(PlayerInfo[targetid][pAdmin]==level) return SendClientMessage(playerid,COLOR_RED,"That player already has given level.");
PlayerInfo[ targetid ][ pAdmin ] = level;
new sendername[25];
new recievername[25];
GetPlayerName(playerid,sendername,sizeof(sendername));
GetPlayerName(targetid,recievername,sizeof(recievername));
new senderstring[50];
new recieverstring[50];
if(level>0)
{
format(senderstring,sizeof(senderstring),"%s has been set to admin level: %i",recievername,level);
format(recieverstring,sizeof(recieverstring),"Admin %s has set you as admin level: %i",sendername,level);
SendClientMessage(playerid,COLOR_GREEN,senderstring);
SendClientMessage(targetid,COLOR_ORANGE,recieverstring);
}
else // level is 0
{
format(senderstring,sizeof(senderstring),"%s has been removed from the admin team.",recievername);
format(recieverstring,sizeof(recieverstring),"Admin %s has removed you from the admin team.",sendername);
SendClientMessage(playerid,COLOR_GREEN,senderstring);
SendClientMessage(targetid,COLOR_RED,recieverstring);
}
return 1;
}


