Unknown Command beim DM Script

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
  • Bei meinem DM Script habe ich den befehl /joindm wenn ich jetzt nur "/joindm" eingebe bekomme ich Server:/joindm [Teamid] wenn ich jedoch jetzt /joindm 1 eingebe bekomme ich Server: Unknown Command
    if(strcmp(cmdtext,"/joindm",true) == 0) //ToDo: Dcmd
    {
    new tmp[256];


    tmp = strtok_(cmdtext, idx);
    if(!strlen(tmp)) SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");
    if(strlen(tmp)>1) SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");
    if(strcmp(tmp,"1",true) == 0) PlayerInfo[playerid][DMTeam] = 1 && JoinPlayerDM(playerid);
    else if(strcmp(tmp,"2",true) == 0) PlayerInfo[playerid][DMTeam] = 2 && JoinPlayerDM(playerid);
    else SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");


    return 1;
    }

    MrX
    - Nichtmehr bei SA:MP aktiv -

  • versuchs mal mit return 0;


    oder so:


    if(strcmp(cmdtext,"/joindm",true) == 1) //ToDo: Dcmd
    {
    new tmp[256];


    tmp = strtok_(cmdtext, idx);
    if(!strlen(tmp)) SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");
    if(strlen(tmp)>1) SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");
    if(strcmp(tmp,"1",true) == 0) PlayerInfo[playerid][DMTeam] = 1 && JoinPlayerDM(playerid);
    else if(strcmp(tmp,"2",true) == 0) PlayerInfo[playerid][DMTeam] = 2 && JoinPlayerDM(playerid);
    else SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");


    return 1;
    }


    oder so


    if(strcmp(cmdtext,"/joindm",true) == 1) //ToDo: Dcmd
    {
    new tmp[256];


    tmp = strtok_(cmdtext, idx);
    if(!strlen(tmp)) SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");
    if(strlen(tmp)>1) SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");
    if(strcmp(tmp,"1",true) == 0) PlayerInfo[playerid][DMTeam] = 1 && JoinPlayerDM(playerid);
    else if(strcmp(tmp,"2",true) == 0) PlayerInfo[playerid][DMTeam] = 2 && JoinPlayerDM(playerid);
    else SendClientMessage(playerid,COLOR_WHITE,"Server:/joindm [Teamid]");


    return 0;
    }

  • Quatsch, gerade durch das return 0 kommt die Meldung "Unknown Command", da muss return 1; rein.


    MrX:
    Durchsuch das Forum mal nach strtok

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!

  • Jo, weil du wenn du das rechts oben eingibst wird nur das Thema durchsucht. Klick mal auf suchen oder geh in die Forenübersicht und such dann mal ;)

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!

  • Ja das ist immer da, daher kommt auch dass angezeigt wird "Unknown Command", ist auch so gewollt um für befehle die es nicht gibt diese Meldung auszugeben.


    Das Problem ist hier aber, dass "/joindm 1" mit "/joindm" verglichen wird, und das gleicht sich nicht. Deswegen soll MrX mal nach strtok suchen, da diese Funktion stückchenweise den Text von einem Leerzeichen zum nächsten zurückgibt ;)

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!

  • strcut(string[], index, identify=' ') {
    new string2[256], scount = 0, virtual = 0;
    for(new i = 0; i < strlen(string); i++) {
    if(string[i] == identify) {
    virtual++;
    string2[scount] = '\0';
    if(virtual == index)
    return string2;
    scount=0;
    } else {
    string2[scount] = string[i];
    scount++;
    }
    }
    string2 = "";
    return string2;
    }
    kA Obs funktioniert :>
    aber z.b.:
    /joindm 2
    um nur den ersten Wert (/joindm) zu bekommen wäre es dann:
    strcut(cmdtext, 1);
    /* beispiel */
    if(!strcmp(strcut(cmdtext, 1),"/joindm"));
    Mit dem zweiten Wert wäre dann der index 2 ;p

  • Also müsst ich ein weiteres mal strtok einbauen und dann den neuen wert an strcmp weitergeben?
    Edit
    DMAs Post gar nicht gesehen :/
    Wenn ich jetzt den 2. Wert haben möchte (1oder2) müsste ich doch

    /* beispiel */
    if(!strcmp(strcut(cmdtext, 2),"1"))


    benutzen oder?

    MrX
    - Nichtmehr bei SA:MP aktiv -

    2 Mal editiert, zuletzt von MrX ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen