Problem (sscanf mit mehreren parametern)

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
  • dcmd_setstat(playerid,params[])
    {


    new spieler;
    new zahl;
    new wert;
    if(!IsPlayerConnected(playerid))
    {
    return SendClientMessage(playerid,HELLROT,"Du bist nicht online!");
    }
    if(AccountInfo[playerid][Admin] < 5)
    {
    return SendClientMessage(playerid,HELLROT,"Dazu bist du nicht berechtigt!");
    }
    if(sscanf(params,"udd",spieler,zahl,wert))
    {
    SendClientMessage(playerid,HELLROT,"Benutzung: /setstat [ID/Spielername] [Nummer] [Wert]");
    SendClientMessage(playerid,HELLBLAU,"1. Level | 2. Premium (0-2) | 3. Premiumpunkte");
    SendClientMessage(playerid,HELLBLAU,"4. Alter | 5. Geschlecht (1männlich|2weiblich)");
    return 1;
    }
    if(!IsPlayerConnected(spieler))
    {
    return SendClientMessage(playerid,HELLROT,"Dieser Spieler ist nicht online!");
    }
    if(zahl < 0||zahl > 5)
    {
    SendClientMessage(playerid,HELLROT,"Benutzung: /setstat [ID/Spielername] [Nummer][Wert]");
    SendClientMessage(playerid,HELLBLAU,"1. Level | 2. Premium (0-2) | 3. Premiumpunkte");
    SendClientMessage(playerid,HELLBLAU,"4. Alter | 5. Geschlecht (1männlich|2weiblich)");
    return 1;
    }
    if(zahl == 1 && wert < 1)
    {
    return SendClientMessage(playerid,HELLROT,"Du kannst das Level des Spielers nicht auf 0 setzen!");
    }
    else if(zahl == 2 && wert < 0 ||wert > 2)
    {
    return SendClientMessage(playerid,HELLROT,"Es gibt nur 3 Premiumränge. (0=Garkeiner|1=Donator|2=Elite Donator)");
    }
    else if(zahl == 3 && wert < 0)
    {
    return SendClientMessage(playerid,HELLROT,"Die Premiumpunkte eines Spielers können nicht auf weniger als 0 gesetzt werden!");
    }
    else if(zahl == 4 && wert < 1)
    {
    return SendClientMessage(playerid,HELLROT,"Du kannst das Alter eines Spielers nicht auf weniger als 1 setzen!");
    }
    else if(zahl == 5 && wert < 1||wert > 2)
    {
    return SendClientMessage(playerid,HELLROT,"Es gibt nur 2 Geschlechter. (1=Männlich|2=Weiblich)");
    }
    new str[128];
    new admname[MAX_PLAYER_NAME];
    //new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,admname,sizeof admname);
    //Rest zensiert, damit das nicht jeder kopiert ;D
    return 1;
    }


    Wenn ich Ingame "/setstat 0 1 3" eingebe (0 ist meine id, 1 fürs alter und 3 ist der wert) kommt "Es gibt nur 3 Premiumränge. (0=Garkeiner|1=Donator|2=Elite Donator)".
    Ich glaube das Problem liegt an den beiden Integern.
    Wie könnte ich das fixxen?

    Du suchst eine nette Community, ein hilfsbereites Team & einen Server, wo es Spaß macht, drauf zu spielen?
    Dann bist du bei Sunrise - Reallife genau richtig!

  • if(!IsPlayerConnected(playerid))
    {
    return SendClientMessage(playerid,HELLROT,"Du bist nicht online!");
    }

    Und wen interessiert das bzw wer soll das jemal lesen :P ?



    if( zahl == 1 && wert < 1)
    {
    return SendClientMessage(playerid,HELLROT,"Du kannst das Level des Spielers nicht auf 0 setzen!");
    }
    else if( zahl == 2 && ( wert < 0 || wert > 2) )
    {
    return SendClientMessage(playerid,HELLROT,"Es gibt nur 3 Premiumränge. (0=Garkeiner|1=Donator|2=Elite Donator)");
    }
    else if( zahl == 3 && wert < 0)
    {
    return SendClientMessage(playerid,HELLROT,"Die Premiumpunkte eines Spielers können nicht auf weniger als 0 gesetzt werden!");
    }
    else if( zahl == 4 && wert < 1)
    {
    return SendClientMessage(playerid,HELLROT,"Du kannst das Alter eines Spielers nicht auf weniger als 1 setzen!");
    }
    else if(zahl == 5 && ( wert < 1 || wert > 2 ) )
    {
    return SendClientMessage(playerid,HELLROT,"Es gibt nur 2 Geschlechter. (1=Männlich|2=Weiblich)");
    }

    Bei Zahl == 5 und Zahl == 2 musst du aufpassen,wenn du && mit einem || verknüpfen willst.So wie du es vorher hattest, würde es klappen wenn ( Jetzt bei Zahl == 5 ) die zahl == 5 und wert kleiner als 1 ODER wert größer als 2. Deshalb müsstest du das || in Klammern setzen, damit das als eigener Ausdruck gilt.

  • Zitat

    if(!IsPlayerConnected(playerid))
    {
    return SendClientMessage(playerid,HELLROT,"Du bist nicht online!");
    }

    Kp hab ich mir eingewöhnt ;D
    Danke ich probiers mal aus.

    Du suchst eine nette Community, ein hilfsbereites Team & einen Server, wo es Spaß macht, drauf zu spielen?
    Dann bist du bei Sunrise - Reallife genau richtig!