Guten Tag,
ich habe folgendes Problem: wenn ich jetzt bspw. /pay <Name .. z.B. Test> -45000 eingebe, wird dem Spieler (hier "Test") 45000$ abgezogen. Das wäre ja ein Bug, den man ausnutzen kann. Kann man das irgendwie fixxen?
Mein aktueller Code:
ocmd:pay(playerid,params[])
{
new targetid,name[MAX_PLAYER_NAME],target[MAX_PLAYER_NAME],tmoney;
if(sscanf(params,"ui",targetid,tmoney))return SendClientMessage(playerid,0xFFA300FF,"Benutzung: /pay <SpielerName / ID> <Betrag>");
if(!IsPlayerConnected(targetid))return SendClientMessage(playerid,COLOR_RED,"Der Spieler ist nicht verbunden.");
if(tmoney == 0) return SendClientMessage(playerid,COLOR_RED,"Der Betrag muss minimal 1$ betragen!");
if(GetPlayerMoney(playerid) < tmoney)return SendClientMessage(playerid,COLOR_RED,"Du hast nicht so viel Geld!");
if(playerid == targetid)return SendClientMessage(playerid,COLOR_RED,"Du kannst dir selbst kein Geld geben!");
if(GetDistanceBetweenPlayers(playerid,targetid) > 10)return SendClientMessage(playerid,COLOR_RED,"Der Spieler ist nicht in deiner Nähe!");
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(targetid,target,sizeof(target));
GivePlayerMoney(playerid,-tmoney);
GivePlayerMoney(targetid,tmoney);
new Float:xm, Float:ym, Float:zm,maxplayers=GetMaxPlayers();
if(GetPlayerPos(playerid,xm,ym,zm))
{
for(new i=0;i<maxplayers;i++){
if(IsPlayerConnected(i) && (i==playerid || IsPlayerInRangeOfPoint(i,15,xm,ym,zm))) {
new string[256];
format(string,sizeof(string),"* %s nimmt Geld aus seiner Tasche und gibt es %s (%i$).",name,target,tmoney);
SendClientMessage(i,0xC2A2DAFF,string);
}
}
}
return 1;
}
Mit freundlichen Grüßen
Gredsoft