Problem is, it loads money good when I login, BUT after I die, the money increases instead of decreasing..
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;
}
//=================================================
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.
Add the reset, I literally just said you should and even gave you code for it...
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.
You shouldn't be using code which works this way though - hacking money is very easy. See