26.10.2015, 18:09
How to block server-sided money hackers without using this https://sampforum.blast.hk/showthread.php?tid=96418 ?
new pMoney[MAX_PLAYERS];
stock GivePlayerMoneyEx(playerid, amount)
{
pMoney[playerid] += amount;
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, amount);
}
stock GetPlayerMoneyEx(playerid) return pMoney[playerid];
stock ResetPlayerMoneyEx(playerid)
{
pMoney[playerid]=0;
ResetPlayerMoney(playerid);
}
public OnPlayerUpdqte(playerid)
{
if(GetPlayerMoney(playerid) > GetPlayerMoneyEx(playerid)) Ban(playerid);
return 1;
}
pawn Код:
|
new money[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
if(/*IsSpawnedCheck &&*/GetPlayerMoney(playerid)!=money[playerid]) {//player money doesnt match player variable money
//its point is just to change hud money
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,money[playerid]);
}
return 1;
}
GiveCash(playerid,amount){
money[playerid] += amount;
//its point is just to change hud money
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,money[playerid]);
return 1;
}
GetCash(playerid)return money[playerid];
//example
CMD:pay(playerid,par[]){
new user,amount;
if(sscanf(par,"ud",user,amount))return SendClientMessage(playerid,-1,"/pay [userid] [amount]");
if(!IsPlayerConnected(user))return SendClientMessage(playerid,-1,"Other user is not connected!");
if(amount < 0 || amount > money[playerid])return SendClientMessage(playerid,-1,"You dont have enough money!");
GiveCash(playerid,-amount);
GiveCash(user,amount);
return 1;
}
// DEVELOPMENT SCRIPT
// ** INCLUDES
#include <a_samp>
// ** VARIABLES
// *** PER-PLAYER VARIABLES
new pMoney[MAX_PLAYERS];
// ** HOOKS
// *** GivePlayerMoney
stock Hook_GivePlayerMoney(playerid, amount)
{
pMoney[playerid] += amount;
return GivePlayerMoney(playerid, amount);
}
#if defined _ALS_GivePlayerMoney
#undef GivePlayerMoney
#else
#define _ALS_GivePlayerMoney
#endif
#define GivePlayerMoney Hook_GivePlayerMoney
// *** GetPlayerMoney
stock Hook_GetPlayerMoney(playerid)
{
return pMoney[playerid];
}
#if defined _ALS_GetPlayerMoney
#undef GetPlayerMoney
#else
#define _ALS_GetPlayerMoney
#endif
#define GetPlayerMoney Hook_GetPlayerMoney
// *** ResetPlayerMoney
stock Hook_ResetPlayerMoney(playerid)
{
pMoney[playerid] = 0;
return ResetPlayerMoney(playerid);
}
#if defined _ALS_ResetPlayerMoney
#undef ResetPlayerMoney
#else
#define _ALS_ResetPlayerMoney
#endif
#define ResetPlayerMoney Hook_ResetPlayerMoney
// ** MAIN
main()
{
print("Loaded \"anti_money_hacks.amx\".");
}
// ** CALLBACKS
public OnGameModeInit()
{
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
pMoney[playerid] = 0;
return 1;
}