SSCANF Fehler?

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
  • HEy
    Es kommt immer das der Betrag Zwischen XX - XX Liegen soll. Aber das macht er ja,
    SScanf ist aktuell.
    Code :

    Spoiler anzeigen
    if(strcmp(cmd, "/contract", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))return SendClientMessage(playerid, BLAU, "FEHLER: /contract [ID/Name] [Betrag]");
    new pID = ReturnUser(tmp), string[128];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))return SendClientMessage(playerid, BLAU, "FEHLER: /contract [ID/Name] [Betrag]");
    new moneys = strval(tmp);
    if(moneys < 50000 || moneys > 1000000)return SendClientMessage(playerid, ROT, "Der Betrag sollte zwischen $5.000 und $1.000.000 liegen.");
    if(Spieler[playerid][Level] < 3)return SendClientMessage(playerid, ROT, "Du brauchst mindestens Level 3 für ein Auftragskill.");
    if(!IsPlayerConnected(pID))return 1;
    if(pID == INVALID_PLAYER_ID)return 1;
    if(Spieler[pID][Level] < 3)return SendClientMessage(playerid, ROT, "Der Spieler ist noch unter Level 3.");
    if(Spieler[pID][Team] == 3 || Spieler[pID][Team] == 5 || Spieler[pID][Team] == 4)
    {
    return SendClientMessage(playerid, BLAU, "Auf Sanitäter, Reporter und Hitmans können keine Auftragsmorde gesetzt werden.");
    }
    if(moneys > 0 && GetPlayerMoney(playerid) >= moneys)
    {
    GivePlayerCash(playerid, (0 - moneys));
    Spieler[pID][ContractGeld] +=moneys;
    format(string, sizeof(string), "* Neuer Auftrag - Von: %s Betrag: $%d Auf: %s", SpielerName(playerid), moneys, SpielerName(pID));
    SendFamilyMessage(4, COLOR_YELLOW, string);
    format(string, sizeof(string), "* Der Auftragsmord auf %s mit $%d wurde weitergeleitet.", SpielerName(pID), moneys);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
    }
    }
    return 1;
    }

  • Es geht doch um die if-Abfrage, IntelligenT. Und nachdem seine Eingaben immer außerhalb der Range sind, dachte ich mir, dass PAWN bei einem String unter Umständen nicht gut Integervergleiche machen kann. atoi konvertiert Strings zu Integer, so am Rande. Sollte man wissen, wenn man sich zu 22.4% in "Scripting Base" aufhält, IntelligenT!

  • Boar Junge.
    ... In SAMP gibt es kein atoi :pinch:
    Vllt gibts das in einer anderen Sprache aber nicht in PAWNO...


    Crocky: Versuchs mal damit:


    if(strcmp(cmd, "/contract", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))return SendClientMessage(playerid, BLAU, "FEHLER: /contract [ID/Name] [Betrag]");
    new pID = ReturnUser(tmp), string[128];
    if(!strlen(tmp))return SendClientMessage(playerid, BLAU, "FEHLER: /contract [ID/Name] [Betrag]");
    new moneys = strval(tmp);
    if(moneys < 5000 || moneys > 1000000)return SendClientMessage(playerid, ROT, "Der Betrag sollte zwischen $5.000 und $1.000.000 liegen.");
    if(Spieler[playerid][Level] < 3)return SendClientMessage(playerid, ROT, "Du brauchst mindestens Level 3 für ein Auftragskill.");
    if(!IsPlayerConnected(pID))return 1;
    if(pID == INVALID_PLAYER_ID)return 1;
    if(Spieler[pID][Level] < 3)return SendClientMessage(playerid, ROT, "Der Spieler ist noch unter Level 3.");
    if(Spieler[pID][Team] == 3 || Spieler[pID][Team] == 5 || Spieler[pID][Team] == 4)
    {
    return SendClientMessage(playerid, BLAU, "Auf Sanitäter, Reporter und Hitmans können keine Auftragsmorde gesetzt werden.");
    }
    if(moneys > 0 && GetPlayerMoney(playerid) >= moneys)
    {
    GivePlayerCash(playerid, (0 - moneys));
    Spieler[pID][ContractGeld] +=moneys;
    format(string, sizeof(string), "* Neuer Auftrag - Von: %s Betrag: $%d Auf: %s", SpielerName(playerid), moneys, SpielerName(pID));
    SendFamilyMessage(4, COLOR_YELLOW, string);
    format(string, sizeof(string), "* Der Auftragsmord auf %s mit $%d wurde weitergeleitet.", SpielerName(pID), moneys);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
    }
    }
    return 1;
    }