SA-MP Forums Archive
Data twice - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Data twice (/showthread.php?tid=597594)



Data twice - saffierr - 02.01.2016

It's not something very important, although if you'd ask me, its annoying for me.
In my Users.txt from my register/login system, I get this.
After I set someone his admin level or w/e it may be, I see the data twice as you can see.
Is this a bug or ?
The [PlayerData] should actually be on top.


Re: Data twice - Mic_H - 02.01.2016

Check your PlayerData tag.. Might be a copy-paste fail.

Could you post the Snippet.. Including custom functions(if any)


Re: Data twice - fuckingcruse - 02.01.2016

Lucky lmao I don't even get it once and you get it twice . Check the onplayerdisconnet and onplayerlogin dialog. You maybe getting the stats twice.


Re: Data twice - saffierr - 02.01.2016

Hahhahah @fuckingcruse HAHAHHA, you really made me laugh

And, no the tag is simply created with INI_SetTag();

PHP код:
public OnPlayerDisconnect(playerid, reason)
   new 
INI:File = INI_Open(UserPath(playerid));
    
INI_SetTag(File, "PlayerData");
    
INI_WriteInt(File, "Password", PlayerInfo[playerid][Password]);
    
INI_WriteInt(File, "Admin", PlayerInfo[playerid][AdminLevel]);
    
INI_WriteInt(File, "Money", PlayerInfo[playerid][Money]);
    
INI_WriteInt(File, "Vip", PlayerInfo[playerid][VipLevel]);
    
INI_WriteInt(File, "Mechanic", PlayerInfo[playerid][Mechanic]);
    
INI_WriteInt(File, "SupportMember", PlayerInfo[playerid][SupportMember]);
    
INI_WriteInt(File, "Hitman", PlayerInfo[playerid][Hitman]);
    
INI_Close(File); 
PHP код:
OnDialogResponse()
       new 
INI:File = INI_Open(UserPath(playerid));
            
INI_SetTag(File, "PlayerData");
            
INI_WriteInt(File, "Password", udb_hash(inputtext));
            
INI_WriteInt(File, "Admin", 0);
            
INI_WriteInt(File, "Money", 0);
            
INI_WriteInt(File, "Vip", 0);
            
INI_WriteInt(File, "Mechanic", 0);
            
INI_WriteInt(File, "SupportMember", 0);
            
INI_WriteInt(File, "Hitman", 0);
            
INI_Close(File); 



Re: Data twice - Mic_H - 02.01.2016

Do you, by any chance update the file after the admin level is set? If so, please show that too..


Re: Data twice - Mic_H - 02.01.2016

PHP код:
stock Register(name[])
{
    new 
INI:File = INI_Open(name); 
    
INI_SetTag(File, "PlayerData"); 
    
INI_WriteInt(File, "Password", 1);
    
INI_WriteInt(File, "Admin", 0); 
    
INI_WriteInt(File, "Money", 0); 
    
INI_WriteInt(File, "Vip", 0); 
    
INI_WriteInt(File, "Mechanic", 0); 
    
INI_WriteInt(File, "SupportMember", 0); 
    
INI_WriteInt(File, "Hitman", 0); 
    
INI_Close(File);
} 
Quote:

[PlayerData]
Password = 1
Admin = 0
Money = 0
Vip = 0
Mechanic = 0
SupportMember = 0
Hitman = 0

PHP код:
stock Logout(name[])
{
    new 
INI:File = INI_Open(name); 
    
INI_SetTag(File, "PlayerData"); 
    
INI_WriteInt(File, "Password", 12);
    
INI_WriteInt(File, "Admin", 12);
    
INI_WriteInt(File, "Money", 12);
    
INI_WriteInt(File, "Vip", 12);
    
INI_WriteInt(File, "Mechanic", 12);
    
INI_WriteInt(File, "SupportMember", 23);
    
INI_WriteInt(File, "Hitman", 23);
    
INI_Close(File); 
} 
Quote:

[PlayerData]
Password = 12
Admin = 12
Money = 12
Vip = 12
Mechanic = 12
SupportMember = 23
Hitman = 23

PHP код:
stock SetAdmin(name[])
{
    new 
INI:File = INI_Open(name);
    
//INI_SetTag(File, "PlayerData");
    
INI_WriteInt(File, "Password", 12);
    
INI_WriteInt(File, "Admin", 999);
    
INI_WriteInt(File, "Money", 12);
    
INI_WriteInt(File, "Vip", 12);
    
INI_WriteInt(File, "Mechanic", 12);
    
INI_WriteInt(File, "SupportMember", 23);
    
INI_WriteInt(File, "Hitman", 23);
    
INI_Close(File);
} 
This gives me the same bug as your's.. After I comment-out the SetTag-Function.

Quote:

Password = 12
Admin = 999
Money = 12
Vip = 12
Mechanic = 12
SupportMember = 23
Hitman = 23
[PlayerData]
Password = 12
Admin = 12
Money = 12
Vip = 12
Mechanic = 12
SupportMember = 23
Hitman = 23

So that ought to be it..


Re: Data twice - saffierr - 02.01.2016

PHP код:
CMD:setadmin(playerid, params[])
{
    if(!
IsPlayerAdmin(playerid)) return 0;
    new 
targetplayer, string[150], Level;
    if(
sscanf(params, "ui", targetplayer, Level)) return SendClientMessage(playerid, COLOR_ORANGE, "Usage: /setadmin [ID] [Level 1-5]");
    if(
Level < 1 || Level > 5) return SendClientMessage(playerid, COLOR_RED, "Error: Available admin levels [1 - 5]");
    if(!
IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_RED, "Error: Player is not connected!");
    if(
PlayerInfo[targetplayer][AdminLevel] == Level) return SendClientMessage(playerid, COLOR_RED, "Error: The player is already this admin level.");
    new 
INI:File = INI_Open(UserPath(targetplayer));
    
INI_WriteInt(File, "Admin", Level);
    
INI_Close(File);
    if(
Level == 1)
    {
        
format(string, sizeof string, "You have been set to a Trial Moderator by %s.", PlayerName(playerid));
        
SendClientMessage(targetplayer, COLOR_LIGHTBLUE, string);
        
format(string, sizeof string, "You have set %s as a Trial Moderator.", PlayerName(targetplayer));
        
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }
    if(
Level == 2)
    {
         
format(string, sizeof string, "You have been set to a Moderator by %s.", PlayerName(playerid));
        
SendClientMessage(targetplayer, COLOR_YELLOW, string);
        
format(string, sizeof string, "You have set %s as a Moderator.", PlayerName(targetplayer));
        
SendClientMessage(playerid, COLOR_YELLOW, string);
    }
    if(
Level == 3)
     {
          
format(string, sizeof string, "You have been set to a General Administrator by %s.", PlayerName(playerid));
        
SendClientMessage(targetplayer, COLOR_GREEN, string);
        
format(string, sizeof string, "You have set %s as a General Administrator.", PlayerName(targetplayer));
        
SendClientMessage(playerid, COLOR_GREEN, string);
      }
    if(
Level == 4)
     {
          
format(string, sizeof string, "You have been set to a Co-Owner by %s.", PlayerName(playerid));
        
SendClientMessage(targetplayer, COLOR_ORANGE, string);
        
format(string, sizeof string, "You have set %s as a Co-Owner.", PlayerName(targetplayer));
        
SendClientMessage(playerid, COLOR_ORANGE, string);
    }
    if(
Level == 5)
    {
        
format(string, sizeof string, "You have been set to the server Owner by %s.", PlayerName(playerid));
        
SendClientMessage(targetplayer, COLOR_LEMON, string);
        
format(string, sizeof string, "You have set %s to the server Owner.", PlayerName(targetplayer));
        
SendClientMessage(playerid, COLOR_LEMON, string);
    }
    
printf("[SETADMIN] %s has set %s as an admin ( %i )", PlayerName(playerid), PlayerName(targetplayer), Level);
    
PlayerInfo[targetplayer][AdminLevel] = Level;
    return 
1;
} 
NOTE:When I set lets say ID 13 as an admin, the next player with ID 13 gets the same admin level... what Should I do?


Re: Data twice - saffierr - 02.01.2016

Someone ?


Re: Data twice - Mic_H - 03.01.2016

PHP код:
CMD:setadmin(playerid, params[]) 
{ 
    if(!
IsPlayerAdmin(playerid)) return 0; 
    new 
targetplayer, string[150], Level; 
    if(
sscanf(params, "ui", targetplayer, Level)) return SendClientMessage(playerid, COLOR_ORANGE, "Usage: /setadmin [ID] [Level 1-5]"); 
    if(
Level < 1 || Level > 5) return SendClientMessage(playerid, COLOR_RED, "Error: Available admin levels [1 - 5]"); 
    if(!
IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_RED, "Error: Player is not connected!"); 
    if(
PlayerInfo[targetplayer][AdminLevel] == Level) return SendClientMessage(playerid, COLOR_RED, "Error: The player is already this admin level."); 
    new 
INI:File = INI_Open(UserPath(targetplayer)); 
    
INI_SetTag(File, "PlayerData"); //THIS IS THE FIX.. 
    //You have forgotten this line in other commands too.. Like /setvip /setmechanic or w.e
    
INI_WriteInt(File, "Admin", Level); 
    
INI_Close(File); 
    if(
Level == 1) 
    { 
        
format(string, sizeof string, "You have been set to a Trial Moderator by %s.", PlayerName(playerid)); 
        
SendClientMessage(targetplayer, COLOR_LIGHTBLUE, string); 
        
format(string, sizeof string, "You have set %s as a Trial Moderator.", PlayerName(targetplayer)); 
        
SendClientMessage(playerid, COLOR_LIGHTBLUE, string); 
    } 
    if(
Level == 2) 
    { 
         
format(string, sizeof string, "You have been set to a Moderator by %s.", PlayerName(playerid)); 
        
SendClientMessage(targetplayer, COLOR_YELLOW, string); 
        
format(string, sizeof string, "You have set %s as a Moderator.", PlayerName(targetplayer)); 
        
SendClientMessage(playerid, COLOR_YELLOW, string); 
    } 
    if(
Level == 3) 
     { 
          
format(string, sizeof string, "You have been set to a General Administrator by %s.", PlayerName(playerid)); 
        
SendClientMessage(targetplayer, COLOR_GREEN, string); 
        
format(string, sizeof string, "You have set %s as a General Administrator.", PlayerName(targetplayer)); 
        
SendClientMessage(playerid, COLOR_GREEN, string); 
      } 
    if(
Level == 4) 
     { 
          
format(string, sizeof string, "You have been set to a Co-Owner by %s.", PlayerName(playerid)); 
        
SendClientMessage(targetplayer, COLOR_ORANGE, string); 
        
format(string, sizeof string, "You have set %s as a Co-Owner.", PlayerName(targetplayer)); 
        
SendClientMessage(playerid, COLOR_ORANGE, string); 
    } 
    if(
Level == 5) 
    { 
        
format(string, sizeof string, "You have been set to the server Owner by %s.", PlayerName(playerid)); 
        
SendClientMessage(targetplayer, COLOR_LEMON, string); 
        
format(string, sizeof string, "You have set %s to the server Owner.", PlayerName(targetplayer)); 
        
SendClientMessage(playerid, COLOR_LEMON, string); 
    } 
    
printf("[SETADMIN] %s has set %s as an admin ( %i )", PlayerName(playerid), PlayerName(targetplayer), Level); 
    
PlayerInfo[targetplayer][AdminLevel] = Level; 
    return 
1; 
}