Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <zcmd>
- #include <sscanf>
- #include <YSI\y_ini>
- #define buywallet 100
- #define playerfile "Users/%s.ini"
- enum PlayerInfo
- {
- pWallet, pCash
- }
- new
- rp[MAX_PLAYERS],
- rp1[MAX_PLAYERS],
- pInfo[MAX_PLAYERS][PlayerInfo];
- //--------------------------------------------------------------------
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- for(new i, j = GetPlayerPoolSize(); i <= j; i++)
- {
- if(fexist(UserPath(i)))
- {
- INI_ParseFile(UserPath(i), "LoadUser_%s", .bExtra = true, .extra = i);
- }
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i, j = GetPlayerPoolSize(); i <= j; i++)
- {
- SaveStats(i);
- }
- return 1;
- }
- #endif
- public OnPlayerConnect(playerid)
- {
- if(fexist(UserPath(playerid)))
- {
- INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
- }
- //pInfo[playerid][pWallet] = 1;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- new name[MAX_PLAYER_NAME], tname[MAX_PLAYER_NAME], targetid, money = GetPlayerMoney(playerid);
- GetPlayerName(playerid, name, sizeof(name));
- GetPlayerName(targetid, tname, sizeof(tname));
- switch(reason)
- {
- case 0: // Timeout / Crashed
- {
- if(rp[playerid] == 1 || rp1[targetid] ==1)
- {
- if(pInfo[targetid][pWallet] == 0)
- {
- new string [200];
- format(string,sizeof(string), "You've recovered your wallet(0$). Reason: %s(%d) has crashed.", name, playerid);
- SendClientMessage(playerid, -1, string);
- pInfo[targetid][pWallet] = 1;
- pInfo[playerid][pWallet] = 0;
- pInfo[playerid][pCash] = 0;
- } else return 1;
- }
- return 1;
- }
- case 1: // Left
- {
- if(rp[playerid] == 1 || rp1[targetid] ==1)
- {
- if(pInfo[targetid][pWallet] == 0)
- {
- new string [200];
- format(string,sizeof(string), "You've recovered your wallet(0$). Reason: %s(%d) has left.", name, playerid);
- SendClientMessage(playerid, -1, string);
- pInfo[targetid][pWallet] = 1;
- pInfo[playerid][pWallet] = 0;
- pInfo[playerid][pCash] = 0;
- } else return 1;
- }
- }
- case 2: // Kicked / Banned
- {
- if(rp[playerid] == 1 || rp1[targetid] ==1)
- {
- if(pInfo[targetid][pWallet] == 0)
- {
- new string [200];
- GivePlayerMoney(targetid, money);
- GivePlayerMoney(playerid, -money);
- format(string,sizeof(string), "You've recovered your wallet(%d$). Reason: %s(%d) has been kicked/banned.", name, playerid, money);
- SendClientMessage(playerid, -1, string);
- pInfo[targetid][pWallet] = 1;
- pInfo[playerid][pWallet] = 0;
- pInfo[playerid][pCash] = 0;
- } else return 1;
- }
- }
- }
- SaveStats(playerid);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- new money = GetPlayerMoney(playerid), string[150], name[MAX_PLAYER_NAME], tname[MAX_PLAYER_NAME];
- GivePlayerMoney(killerid, money);
- GivePlayerMoney(playerid, -money);
- GetPlayerName(killerid, name, sizeof(name));
- GetPlayerName(playerid, tname, sizeof(tname));
- if(rp[playerid] == 1 || rp1[killerid] ==1)
- {
- format(string,sizeof(string), "You're killed by %s(%d) and lost your '%d$'.", name, killerid, money);
- SendClientMessage(playerid, -1, string);
- format(string,sizeof(string), "You killed %s(%d) and recovered your money and also looted his cash('%d$').", tname, playerid, money);
- SendClientMessage(killerid, -1, string);
- pInfo[playerid][pWallet] = 0;
- pInfo[killerid][pWallet] = 1;
- } else SendClientMessage(playerid, -1, "You'll not recieve any money he robbed from you.");
- return 1;
- }
- CMD:rob(playerid, params[])
- {
- new rob = random(10), targetid, Float:x, Float:y, Float:z, name[MAX_PLAYER_NAME], tname[MAX_PLAYER_NAME], money = GetPlayerMoney(targetid), string[200];
- GetPlayerPos(targetid, x, y, z);
- GetPlayerName(playerid, name, sizeof(name));
- GetPlayerName(targetid, tname, sizeof(tname));
- if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, -1, "SERVER: /rob <playerid>");
- if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "SERVER: Target ID not found(offline).");
- if(!IsPlayerInRangeOfPoint(playerid, 5, x, y, z)) return SendClientMessage(playerid, -1, "SERVER: Target ID is not in range.");
- if(GetPlayerMoney(targetid) < 1) return SendClientMessage(playerid, -1, "SERVER: Target ID doesn't have any cash.");
- if(pInfo[playerid][pWallet] == 0) return SendClientMessage(playerid, -1, "SERVER: You don't have wallet to store money, /buywallet.");
- if(pInfo[targetid][pWallet] == 0) return SendClientMessage(playerid, -1, "SERVER: Target ID doesn't have any wallet to be robbed.");
- if(rob == 0 || rob == 2 || rob == 4 || rob == 6 || rob == 8 || rob == 10)
- {
- GivePlayerMoney(playerid, money);
- GivePlayerMoney(targetid, -money);
- format(string, sizeof(string), "You robbed %d$ from %s(%d). If player kills you then you'll loose money you've robbed!", money, tname, targetid);
- SendClientMessage(playerid, -1, string);
- format(string,sizeof(string), "%s(%d) has robbed your wallet containing '%d$'.", name, playerid, money);
- SendClientMessage(targetid, -1, string);
- SendClientMessage(targetid, -1, "Kill the player to regain your wallet before they hide it somewhere else you'll loose money.");
- pInfo[targetid][pWallet] = 0;
- rp[playerid] = 1;
- rp1[targetid] = 1;
- SetTimerEx("robbedplayer", 30000, false, "i", playerid);
- SetTimerEx("beingrobbed", 30000, false, "i", targetid);
- }
- else
- {
- SendClientMessage(playerid, -1, "Player noticed you robbing them, attempt failed.");
- format(string,sizeof(string), "%s(%d) tried to rob your wallet.", name, playerid);
- SendClientMessage(targetid, -1, string);
- }
- return 1;
- }
- CMD:wallet(playerid, params[])
- {
- new string [150];
- format(string,sizeof(string), "SERVER: Your wallet contains the same amount of money your HUD shows (%d).", GetPlayerMoney(playerid));
- SendClientMessage(playerid, -1, string);
- return 1;
- }
- CMD:buywallet(playerid, params[])
- {
- if(pInfo[playerid][pWallet] == 0)
- {
- new string [150];
- format(string,sizeof(string), "SERVER: You bought a wallet for '%d'. Your money will be saved on exit. Beaware of being pickpocketed!", buywallet);
- SendClientMessage(playerid, -1, string);
- GivePlayerMoney(playerid, -buywallet);
- } else SendClientMessage(playerid, -1, "SERVER: You already have a wallet.");
- return 1;
- }
- stock UserPath(playerid)
- {
- new string[128], vname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, vname, sizeof(vname));
- format(string, sizeof(string), playerfile, vname);
- return string;
- }
- forward SaveStats(playerid);
- public SaveStats(playerid)
- {
- if(pInfo[playerid][pWallet] == 1)
- {
- new INI:File = INI_Open(UserPath(playerid));
- INI_SetTag(File,"WALLET-DATA");
- INI_WriteInt(File, "Wallet", pInfo[playerid][pWallet]);
- INI_WriteInt(File, "Cash", GetPlayerMoney(playerid));
- INI_Close(File);
- }
- else
- {
- new INI:File = INI_Open(UserPath(playerid));
- INI_SetTag(File,"WALLET-DATA");
- INI_WriteInt(File, "Wallet", 0);
- INI_WriteInt(File, "Cash", 0);
- INI_Close(File);
- }
- }
- forward robbedplayer(playerid);
- public robbedplayer(playerid)
- {
- rp[playerid] = 0;
- SendClientMessage(playerid, -1, "You're safe now from loosing money you've just robbed by getting killed.");
- return 1;
- }
- forward beingrobbed(targetid);
- public beingrobbed(targetid)
- {
- rp1[targetid] = 0;
- SendClientMessage(targetid, -1, "You're no longer being able to recover your money by killing that person.");
- return 1;
- }
Add Comment
Please, Sign In to add comment