Wie kann ich in einem befehl, zwei machen?

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
  • Hallo Community


    Ich habe mal eine Frage,...
    Wie kann ich in einem Befehl, zwei machen
    also das sollte so gehen


    wenn man z.B. /base schreibt
    Kann man dahinter noch etwas auswählen z.B.
    /base [auf/zu]



    wenn mir jemand helfen kann, danke im vorraus


    LG

  • Also du beginnst mit einem normale Grundgerüst:
    if(strcmp(cmdtext,"/befehl",true) == 0)
    {
    return 1;
    }
    Wenn du es noch nicht hast, dann machst du new tmp[256], idx; in den Public OnPlayerCommandText


    Wenn das gemacht ist kannst du in den vorherigen Befehl das rein machen tmp = strtok(cmdtext,idx);
    Dann folgt eine Abfrage:
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, FARBE, "BENUTZUNG: /befehl[an/aus]");
    return 1;
    }
    Nun kommen noch die Abfragen mit "an" und "aus"
    if(strcmp(tmp,"an",true) == 0)
    {
    SendClientMessage(playerid,FARBE,"Dein Befehl ist jetzt an");
    }
    else if(strcmp(tmp,"aus",true) == 0)
    {
    SendClientMessage(playerid,FARBE,"Dein Befehl ist jetzt aus");
    }
    Alles in einem sieht das dann so aus:
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    new tmp[256];
    if(strcmp(cmdtext,"/befehl",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, FARBE, "BENUTZUNG: /befehl[an/aus]");
    return 1;
    }
    if(strcmp(tmp,"an",true) == 0)
    {
    SendClientMessage(playerid,FARBE,"Dein Befehl ist jetzt an");
    }
    else if(strcmp(tmp,"aus",true) == 0)
    {
    SendClientMessage(playerid,FARBE,"Dein Befehl ist jetzt aus");
    }
    return 1;
    }
    return 0;
    }


    Falls kommt: Undefined Symbol strtok, machst du dann das hier ins Script:
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }

  • Hei, Danke erstma
    bei mir kommt dieser Error hier raus



    C:\Users\Gta Server\Desktop\Neuer Ordner\SEHR WICHTIG\Selfmade\gamemodes\SelfMade-Fix.pwn(2135) : error 017: undefined symbol "idx"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    //EDIT; HABS HAT NUR new idx; gefehlt


    Danke dir

  • Ich habe ein problem,...wenn ich dieses Befehl benutze kommt ingame


    Server Unknown Command..


    if(strcmp(cmdtext,"/base",true) == 0)
    {
    new LeaderName[MAX_PLAYER_NAME],idx;
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GREY,"FEHLER: /base [auf/zu]");
    return 1;
    }
    if(strcmp(tmp,"auf",true) == 0)
    {
    GetPlayerName(playerid,LeaderName,sizeof(LeaderName));
    if(SpielerInFraktion(playerid,16))
    {
    if(SpielerInfo[playerid][pRank] == 6)
    {
    if(BIKEREINGANGAUF == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,3,681.6220,-473.3460,16.5363))
    {
    format(string,sizeof string,"Fraktionsleader: %s hat die Eingangstür aufgeschlossen.",LeaderName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    BIKEREINGANGZU = 1;
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktion");
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits aufgeschlossen.");
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    }
    else if(strcmp(tmp,"zu",true) == 0)
    {
    if(SpielerInFraktion(playerid,16))
    {
    if(SpielerInfo[playerid][pRank] == 6)
    {
    if(BIKEREINGANGZU == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,3,681.6220,-473.3460,16.5363))
    {
    format(string,sizeof string,"Fraktionsleader: %s hat die Eingangstür aufgeschlossen.",LeaderName);
    SendClientMessage(playerid,COLOR_SPECIALBLUE,string);
    BIKEREINGANGAUF = 1;
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an dem Eingang, deiner Fraktion");
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Deine Base ist bereits abgeschlossen.");
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht den benötigten Rank dafür.");
    }
    else return SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    }
    return 1;
    }