Hallo Leute,
ich habe 2 Probleme mit meinem Anti Moneyhack.
1. Nachdem ein Spieler gestorben ist sollen ihm 1.000€ abgezogen werden, allerdings werden immer nur 100€ abgezogen.
2. Dazu mach ich mal ein Beispiel!
Wenn ein Spieler 10.000€ hat und nachdem er gestorben ist ihm 1.000€ abgezogen wurden kann er sich komischer Weiße Geld hacken bis er insgesammt wieder die 10.000€ voll hat und wird erst dann vom Antihack erkannt.
Die abgezogenen 1000€ werden sozusagen nicht beim amount abgezogen, sodass der Antihack einen Hacker nicht erkennen könnte.
public OnGameModeInit()
{
SetTimer("CheckMoney",3000,true);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
SpielerInfo[playerid][pTode] += 1;
SpielerInfo[killerid][pKills] += 1;
TakeMoney(playerid, 1000); // <---- Hier wird nach dem Tod 1000€ abgezogen!
PayMoney(killerid, 2000);
return 1;
}
forward CheckMoney();
public CheckMoney() // <---- Das Public um den Hacker zu melden und kicken!
{
new i = 0;
for(;i<GetMaxPlayers();i++)
{
if(GetPlayerMoney(i) > SpielerInfo[i][pGeld])
{
new string[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(i,name,sizeof(name));
format(string, sizeof string,"[Anti Moneyhack] %s wurde bei den Versuch sich %d Euro zu hacken gekickt!",name,GetPlayerMoney(i)-SpielerInfo[i][pGeld]);
SendClientMessageToAll(ROT,string);
Kick(i);
}
}
return true;
}
stock PayMoney(playerid,amount) // <---- Der Stock um wenn ein Spieler Geld bekommt die Summe zum amount dazu zurechnen.
{
SpielerInfo[playerid][pGeld] += amount;
GivePlayerMoney(playerid,amount);
return true;
}
stock SetMoney(playerid,amount) // <---- Der Stock um den Spielern beim Login ihr Geld aus der Datenbank zu geben (Siehe LoadPlayer!).
{
SpielerInfo[playerid][pGeld] = amount;
GivePlayerMoney(playerid,amount);
return true;
}
stock TakeMoney(playerid,amount) // <---- Der Stock um wenn ein Spieler Geld abgezogen bekommt die Summe vom amount abzuziehen [HIER SCHEINT ETWAS NICHT ZU STIMMEN!}.
{
SpielerInfo[playerid][pGeld] -= amount;
GivePlayerMoney(playerid,-amount);
return true;
}
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
}
}
return 1;
}
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
SetMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));
}
return 1;
}
Ich hoffe jemand kann mir bei meinem Problem helfen,
falls etwas zu den Scriptzeilen unklar ist bitte einfach Fragen!
Mit freundlichen Grüßen und frohe Weihnachten
AlphaGen