/pay lässt Server crashen

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
  • ocmd:pay(playerid,params[])
    {
    new string[124], string2[130], Money, TargetID;
    if(sscanf(params, "si", TargetID, Money))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /pay [Username/ID] [Betrag]");
    if(Money >= GetPlayerMoney(playerid))
    {
    if(GetDistanceBetweenPlayers(playerid, TargetID, 15))
    {
    GivePlayerMoney(playerid, -Money);
    GivePlayerMoney(TargetID, Money);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(GetDistanceBetweenPlayers(playerid, i, 25))
    {
    format(string2, 130, "%s greift in die Brieftasche und gibt etwas Geld an %s!", SpielerName(playerid), SpielerName(TargetID));
    SendClientMessage(i, FARBE_ME, string2);
    }
    }
    format(string, 124, "Du hast %i$ von %s erhalten!", Money, SpielerName(playerid));
    SendClientMessage(TargetID, FARBE_GRAU, string);
    printf(string);
    format(string, 124, "Du hast %i$ an %s übergeben!", Money, SpielerName(TargetID));
    SendClientMessage(playerid, FARBE_GRAU, string);
    }
    }
    else
    {
    SendClientMessage(playerid, FARBE_ROT, "Error: Du hast nicht soviel Geld!");
    }

    return 1;
    }


    LG

  • ocmd:pay(playerid,params[])
    {
    new string[124], string2[130], Money, TargetID;
    if(sscanf(params, "ui", TargetID, Money))
    {
    SendClientMessage(playerid, FARBE_GRAU, "Fehler: /pay [Username/ID] [Betrag]");
    return 1;
    }
    else if(Money >= GetPlayerMoney(playerid))
    {
    if(GetDistanceBetweenPlayers(playerid, TargetID, 15))
    {
    GivePlayerMoney(playerid, -Money);
    GivePlayerMoney(TargetID, Money);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(GetDistanceBetweenPlayers(playerid, i, 25))
    {
    format(string2, 130, "%s greift in die Brieftasche und gibt etwas Geld an %s!", SpielerName(playerid), SpielerName(TargetID));
    SendClientMessage(i, FARBE_ME, string2);
    }
    }
    format(string, 124, "Du hast %i$ von %s erhalten!", Money, SpielerName(playerid));
    SendClientMessage(TargetID, FARBE_GRAU, string);
    printf(string);
    format(string, 124, "Du hast %i$ an %s übergeben!", Money, SpielerName(TargetID));
    SendClientMessage(playerid, FARBE_GRAU, string);
    }
    }
    else
    {
    SendClientMessage(playerid, FARBE_ROT, "Error: Du hast nicht soviel Geld!");
    }
    return 1;
    }


    "si" = String + Integer
    "ui" = ID + Integer
    Müsste so eigentlich Funktionieren.


  • bei dem else muss nicht zwingend ein return hin was mich an dem Befehl noch stört
    außer das was du hier schon korrigiert hast ist bei der for schleife ein break;
    hin und noch die if abfrage ob der spieler überhaupt connectet ist was will ja nicht unnötig speed verplempern
    zu dem werden hier unnötig große strings genutzt wo 64 noch sehr gut reicht.


  • bei dem else muss nicht zwingend ein return hin was mich an dem Befehl noch stört
    außer das was du hier schon korrigiert hast ist bei der for schleife ein break;
    hin und noch die if abfrage ob der spieler überhaupt connectet ist was will ja nicht unnötig speed verplempern
    zu dem werden hier unnötig große strings genutzt wo 64 noch sehr gut reicht.


    Wenn man es genau haben will dann hast du da die richtigen Punkte angesprochen.
    Ich wollte jetzt nicht noch direkter drauf eingehen.