/pay "Bug" ausnutzbar

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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

  • Ups. Ich hab's jetzt so gemacht:


    if(tmoney <= 0) return SendClientMessage(playerid,COLOR_RED,"Der Betrag muss minimal 1$ betragen!");


    Müsste ja eigentlich gehen, oder?