SA-MP Forums Archive
Loading Player's money and score bug/error - 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: Loading Player's money and score bug/error (/showthread.php?tid=372027)



Loading Player's money and score bug/error - _Khaled_ - 25.08.2012

Problem is, it loads money good when I login, BUT after I die, the money increases instead of decreasing..
Some codes
pawn Код:
public OnPlayerConnect(playerid)
{
        new pname[MAX_PLAYER_NAME], string[63 + MAX_PLAYER_NAME];
        SendClientMessage(playerid,COLOR_GREEN,"Welcome to San Andreas City Cops and Robbers");
        SendClientMessage(playerid,COLOR_GREEN,"Make sure you read and Abide by our /rules, and obey our admins.");
        TogglePlayerClock(playerid, 0);

       
        if(fexist(UserPath(playerid)))
        {
           INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
           ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{F81414}San Andreas City Cops and Robbers","{FFFFFF}Welcome back, Please type your password below to login.","Login","Quit");
        }
        else
        {
           ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"{F81414}San Andreas City Cops and Robbers","{FFFFFF}Welcome, Please type your password below to register a new account.","Register","Quit");
        }
        GetPlayerName(playerid, pname, sizeof(pname));
        format(string, sizeof(string), "%s has Joined the server.", pname);
        SendClientMessageToAll(COLOR_CYAN, string);
        return 1;
}
//===================================================================
public OnPlayerDisconnect(playerid, reason)
{
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"Player's Data");
    INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    INI_WriteInt(File,"Score",GetPlayerScore(playerid));
    INI_WriteInt(File,"AdminLevel",PlayerInfo[playerid][pAdminLevel]);
    INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    INI_WriteInt(File,"Banned",PlayerInfo[playerid][pBanned]);
    INI_Close(File);

    ResetVariables(playerid);

    new pname[MAX_PLAYER_NAME], string[63 + MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "%s has Left the server.", pname, aDisconnectNames[reason]);
    SendClientMessageToAll(COLOR_CYAN, string);
    return 1;
}
//====================================================================
public OnPlayerSpawn(playerid)
{
        new BigString[1900];
        strcat(BigString, "\n{FFFFFF}1.  Respect and obey all Admins.", 1900 );
        strcat(BigString, "\n{FFFFFF}2.  Do not Deathmatch or Teamkill.", 1900 );
        strcat(BigString, "\n{FFFFFF}3.  Do not Spam.", 1900 );
        strcat(BigString, "\n{FFFFFF}4.  Do not use cheats or hacks.", 1900 );
        strcat(BigString, "\n{FFFFFF}5.  Respect all other players.", 1900 );
        strcat(BigString, "\n{FFFFFF}6.  Cops and Robbers should never team up.", 1900 );
        strcat(BigString, "\n{FFFFFF}7.  Never quit to avoid anything.", 1900 );
        strcat(BigString, "\n{FFFFFF}8.  Medics should never harm other players.", 1900 );
        strcat(BigString, "\n{FFFFFF}9.  Never abuse a bug.", 1900 );
        strcat(BigString, "\n{FFFFFF}10. No mods are allowed.", 1900 );
        ShowPlayerDialog(playerid,1, DIALOG_STYLE_MSGBOX, "{ff0000}Main Server Rules:", BigString, "Accept","Ignore");
       
    TextDrawShowForPlayer(playerid,Clock);
    TextDrawShowForPlayer(playerid,Date);

    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]); //I guess check that
    SetPlayerScore(playerid, PlayerInfo[playerid][pScore]); //I guess check that too
   
    if(gTeam[playerid] == TEAM_CIVIL)
    {
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,2004.93,1544.25,13.59);
        SetPlayerFacingAngle(playerid,270.0);
        SetPlayerToTeamColour(playerid);
        SetCameraBehindPlayer(playerid);
        GivePlayerWeapon(playerid,22,500);
    }
    if(gTeam[playerid] == TEAM_COP)
    {
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,2281.53,2425.36,3.48);
        SetPlayerFacingAngle(playerid,0.0);
        SetPlayerToTeamColour(playerid);
        SetCameraBehindPlayer(playerid);
        GivePlayerWeapon(playerid,3,500);
        GivePlayerWeapon(playerid,22,500);
    }
    if(gTeam[playerid] == TEAM_ARMY)
    {
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,278.17,1989.68,17.64);
        SetPlayerFacingAngle(playerid,270.0);
        SetPlayerToTeamColour(playerid);
        SetCameraBehindPlayer(playerid);
        GivePlayerWeapon(playerid,30,500);
        GivePlayerWeapon(playerid,29,500);
    }
    if(gTeam[playerid] == TEAM_CIA)
    {
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,2228.01,2457.64,-7.45);
        SetPlayerFacingAngle(playerid,270.0);
        SetPlayerToTeamColour(playerid);
        SetCameraBehindPlayer(playerid);
        GivePlayerWeapon(playerid,24,500);
        GivePlayerWeapon(playerid,29,500);
    }
    if(gTeam[playerid] == TEAM_MEDIC)
    {
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,1607.42,1823.57,10.82);
        SetPlayerFacingAngle(playerid,0.0);
        SetPlayerToTeamColour(playerid);
        SetCameraBehindPlayer(playerid);
        GivePlayerWeapon(playerid,22,500);
    }
    if(gTeam[playerid] == TEAM_FIRE)
    {
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,1754.43,2072.12,10.82);
        SetPlayerFacingAngle(playerid,180.0);
        SetPlayerToTeamColour(playerid);
        SetCameraBehindPlayer(playerid);
        GivePlayerWeapon(playerid,42,500);
        GivePlayerWeapon(playerid,22,500);
    }
    return 1;
}
//=================================================================
public OnPlayerDeath(playerid, killerid)
{
    PlayerInfo[killerid][pKills]++;
    PlayerInfo[playerid][pDeaths]++;
   
    if(gTeam[playerid] == TEAM_CIVIL)
    {
        new mrand =random(2000); //THIS
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,2004.93,1544.25,13.59);
        SetPlayerFacingAngle(playerid,270.0);
        SetPlayerToTeamColour(playerid);
        GivePlayerMoney(playerid,-mrand); //THIS
    }
    if(gTeam[playerid] == TEAM_COP)
    {
     new mrand =random(2000); //THIS
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,2281.53,2425.36,3.48);
        SetPlayerFacingAngle(playerid,0.0);
        SetPlayerToTeamColour(playerid);
        GivePlayerMoney(playerid,-mrand); //THIS
    }
    if(gTeam[playerid] == TEAM_ARMY)
    {
        new mrand =random(2000); //THIS
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,278.17,1989.68,17.64);
        SetPlayerFacingAngle(playerid,270.0);
        SetPlayerToTeamColour(playerid);
        GivePlayerWeapon(playerid,30,500);
        GivePlayerWeapon(playerid,29,500);
        GivePlayerMoney(playerid,-mrand); //THIS
    }
    if(gTeam[playerid] == TEAM_CIA)
    {
        new mrand =random(2000); //THIS
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,2228.01,2457.64,-7.45);
        SetPlayerFacingAngle(playerid,90.0);
        SetPlayerToTeamColour(playerid);
        GivePlayerWeapon(playerid,24,500);
        GivePlayerWeapon(playerid,29,500);
        GivePlayerMoney(playerid,-mrand); //THIS
    }
    if(gTeam[playerid] == TEAM_MEDIC)
    {
        new mrand =random(2000); //THIS
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,1607.42,1823.57,10.82);
        SetPlayerFacingAngle(playerid,0.0);
        SetPlayerToTeamColour(playerid);
        GivePlayerWeapon(playerid,22,500);
        GivePlayerMoney(playerid,-mrand); //THIS
    }
    if(gTeam[playerid] == TEAM_FIRE)
    {
        new mrand =random(2000); //THIS
        SetPlayerInterior(playerid,0);
        SetPlayerPos(playerid,1754.43,2072.12,10.82);
        SetPlayerFacingAngle(playerid,180.0);
        SetPlayerToTeamColour(playerid);
        GivePlayerWeapon(playerid,42,500);
        GivePlayerWeapon(playerid,22,500);
    GivePlayerMoney(playerid,-mrand); //THIS
    }
    return 1;
}
//=================================================
No compiling error.


Re: Loading Player's money and score bug/error - Calgon - 25.08.2012

It's because money doesn't reset when you die IIRC.

In OnPlayerSpawn, I'd suggest using ResetPlayerMoney(playerid) to set their money back to 0, then you can load the money from your variable and they'll have the right amount again.

pawn Код:
ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]); //I guess check that



Re: Loading Player's money and score bug/error - _Khaled_ - 25.08.2012

So I delete GivePlayerMoney, or just put it down Reset?


Re: Loading Player's money and score bug/error - Calgon - 25.08.2012

Add the reset, I literally just said you should and even gave you code for it...


Re: Loading Player's money and score bug/error - _Khaled_ - 25.08.2012

It just resets the money to what it was, for example if the player gained 10 000$ while he had 3000 so = 13 000, and he should lose rand 2000, it get's back to 3000.


Re: Loading Player's money and score bug/error - _Khaled_ - 25.08.2012

Bump, anyone can help?


Re: Loading Player's money and score bug/error - _Khaled_ - 25.08.2012

Someone?


Re: Loading Player's money and score bug/error - Calgon - 25.08.2012

In OnPlayerDeath, set PlayerInfo[playerid][pCash] to GetPlayerMoney.

pawn Код:
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
You shouldn't be using code which works this way though - hacking money is very easy. See https://sampforum.blast.hk/showthread.php?tid=71136

Also, stop bumping.


Re: Loading Player's money and score bug/error - _Khaled_ - 25.08.2012

Still, same error

I added
pawn Код:
ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash])
Under OnPlayerSpawn
and
pawn Код:
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
under OnPlayerDeath


Re: Loading Player's money and score bug/error - _Khaled_ - 25.08.2012

Someone?