y_ini making random people admin & helper
#1

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:
Код:
	        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);
Case Login:
Код:
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);
}
my load stats stock
Код:
    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]);
OnPlayerDisconnect
Код:
    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);
my stock
Код:
stock UserPath(playerid)
{
    new string[128],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),PATH,playername);
    return string;
}
SetAdmin CMD
Код:
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;
}
Thank you for any effort.
Reply
#2

Quote:
Originally Posted by PDChaseOfficial
Посмотреть сообщение
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.
On the server_log.txt, it should write who joins as a RCON Admin, in case someone found your password.
Reply
#3

Quote:
Originally Posted by Dwane
Посмотреть сообщение
On the server_log.txt, it should write who joins as a RCON Admin, in case someone found your password.
Good point. When I ran over the server log, only I was logged in to admin. No one else, ever.
Reply
#4

Search your server for pHelper == 1 or something and see if it's somewhere it shouldn't be.
Reply
#5

Most important question: do you actually reset the player variables on disconnect? It's not like that happens automatically.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)