großes problem mit strcmp

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
  • Guten Tag


    Ich arbeite eigentlich nur mit dcmd, doch zwischendurch benutzte ich auch mal strcmp. doch bei strcmp kenne ich mich nicht so aus, was wohl diese vielen errors verursacht.
    Ich wollte nun den Fahrlehrern ermöglichen, scheine zu vergeben. es soll so aussehen: /schein SCHEIN ID
    Ich wusste aber nicht wie ich das bei dcmd machen sollte, wenn es einer weiß, wäre es echt nett wenn es mir erklärt werden könnte.
    also habe ich es mit strcmp gemacht, wo ich mich so gut wie garnicht auskenne und somit es aus einem adneren script kopiert und meinem gm angepasst habe.
    doch es tretten mehrere errors auf, die ich nicht lösen kann:
    if(strcmp("/schein", cmdtext, true, 10) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(Spieler[playerid][Member] == 8 || Spieler[playerid][Leader] == 8)
    {
    new x_nr[256];
    x_nr = strtok(cmdtext, idx);
    if(!strlen(x_nr)) {
    SendClientMessage(playerid, COLOR_WHITE, "BENUTZUNG: /schwein License [playerid]");
    SendClientMessage(playerid, COLOR_WHITE, "Scheine: Auto, Flug, Boot, Angel, LKW.");
    return 1;
    }
    if(strcmp(x_nr,"Auto",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze: /schein License [playerid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    new sendername[MAX_PLAYER_NAME],giveplayer[MAX_PLAYER_NAME],string[256];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "*Du hast %s ein Führerschein gegeben!",giveplayer);
    SendClientMessage(playerid, türkis, string);
    format(string, sizeof(string), "* Lehrer %s hat dir ein Führerschein gegeben.",sendername);
    SendClientMessage(giveplayerid, türkis, string);
    Spieler[giveplayerid][Autoschein] = 1;
    Update(giveplayerid);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Ungültige Id!");
    return 1;
    }
    }
    else if(strcmp(x_nr,"Flug",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze: /schein License [playerid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    new sendername[MAX_PLAYER_NAME],giveplayer[MAX_PLAYER_NAME],string[256];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast %s ein Flugschein gegeben!",giveplayer);
    SendClientMessage(playerid, türkis, string);
    format(string, sizeof(string), "*Lehrer %s hat dir eine Flugschein gegeben.",sendername);
    SendClientMessage(giveplayerid, türkis, string);
    Spieler[giveplayerid][Flugschein] = 1;
    Update(giveplayerid);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF, "Ungültige Id!");
    return 1;
    }
    }
    else if(strcmp(x_nr,"Boot",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze: /schein License [playerid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    new sendername[MAX_PLAYER_NAME],giveplayer[MAX_PLAYER_NAME],string[256];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast %s ein Bootschein gegeben.",giveplayer);
    SendClientMessage(playerid, türkis, string);
    format(string, sizeof(string), "* Lehrer %s hat dir ein Bootschein gegeben.",sendername);
    SendClientMessage(giveplayerid, türkis, string);
    Spieler[giveplayerid][Bootschein] = 1;
    Update(giveplayerid);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000FF, "Ungültige Id!");
    return 1;
    }
    }
    else if(strcmp(x_nr,"Angel",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze: /schein Angel [playerid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    new sendername[MAX_PLAYER_NAME],giveplayer[MAX_PLAYER_NAME],string[256];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast %s ein Angelschein gegeben.",giveplayer);
    SendClientMessage(playerid, türkis, string);
    format(string, sizeof(string), "* Lehrer %s hat dir ein Angelschein gegeben.",sendername);
    SendClientMessage(giveplayerid, türkis, string);
    Spieler[giveplayerid][Angelschein] = 1;
    Update(giveplayerid);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000FF, "Ungültige Id!");
    return 1;
    }
    }
    else if(strcmp(x_nr,"LKW",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze: /schein License [playerid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    new sendername[MAX_PLAYER_NAME],giveplayer[MAX_PLAYER_NAME],string[256];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast %s ein LKW schein gegeben.",giveplayer);
    SendClientMessage(playerid, türkis, string);
    format(string, sizeof(string), "* Lehrer %s hat dir ein LKW Schein gegeben.",sendername);
    SendClientMessage(giveplayerid, türkis, string);
    Spieler[giveplayerid][LKWschein] = 1;
    Update(giveplayerid);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000FF, "Ungültige Id!");
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000FF, "Du bist kein Fahrlehrer !");
    return 1;
    }
    }
    return 1;
    }


    hier die errors:


    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2305) : error 017: undefined symbol "strtok"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2305) : error 033: array must be indexed (variable "x_nr")
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2313) : error 017: undefined symbol "tmp"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2313) : error 017: undefined symbol "strtok"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2314) : error 017: undefined symbol "tmp"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2319) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2319) : error 017: undefined symbol "ReturnUser"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2320) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2322) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2326) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2330) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2331) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2332) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2344) : error 017: undefined symbol "tmp"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2344) : error 017: undefined symbol "strtok"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2345) : error 017: undefined symbol "tmp"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2350) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2350) : error 017: undefined symbol "ReturnUser"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2351) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2353) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2357) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2361) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2362) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2363) : error 017: undefined symbol "giveplayerid"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2375) : error 017: undefined symbol "tmp"
    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(2375) : error 017: undefined symbol "strtok"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    26 Errors.

    Ich hoffe es kann mir einer helfen, am besten wäre es wenn mir einer erklären könnte wie ich es bei dcmd mache. mit dcmd kann ich es nur so: /schein SCHEINID ID
    und dann festlegen welcher schein welche id hat, was viel zu umständlich ist meiner meihnung.
    Ich bedanke mich schonmal..


    MfG
    Simon

  • ich kenne mich da überhaupt nicht mit aus sry.. ich habe es aus einem gm kopiert, und es angepasst, mehr net. dann habe ich einiges noch daztu getaden, wie new string und son kram, und habe paar errors weg bekommen, aber nicht alle. so wie ich es euch geschickt habe, steht es unter OnPlayerCommandText. also wird es wohl nicht definiert sein.

  • versuchst du ein Selfmade zu machen in dem du ein GF bearbeitest und dort deine Sachen raus kopierst ?

  • Ich würde sagen selber Schuld wenn man einfach nur kopiert und einfach einfügt...


    • strtok definieren = Funktion
    • der Rest sind Variablen die nochmal nach definiert werden sollten
    • x_nr und tmp sollten nach Code wohl Zeichenketten sein bzw. als String dienen

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • selber schuld habe ich das stimmt ^^


    ich kriegs net mit strcmp gebacken :D vielleicht ist ja einer so nett und könnte es mir mit dcmd erklären, ich werde es nun zunächst selber probieren


    //edit: habe es nun mal mit dcmd probiert und bin nun soweit gekommen:


    dcmd_schein(playerid,params[])
    {
    new pID,schein[256];
    if(sscanf(params, "us", schein, pID))
    {
    SendClientMessage(playerid,0xFF0000FF,"Benutzung: /schein [SCHEIN] [playerid]");
    return SendClientMessage(playerid,grau,"Scheine: Auto, Angel, Boot, LKW, Flug");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Ungültige Id!");
    }
    if(Spieler[playerid][Member] != 8 || Spieler[playerid][Leader] != 8)
    {
    return 0;
    }
    else
    {
    if(schein == ??)
    {
    //was passieren soll
    }
    }
    return 1;
    }


    bei den ?? komm ich nicht weiter, ich müsste nun wissen, wie ich rausbekomme was er an stelle von "schein" geschrieben hat.

    Einmal editiert, zuletzt von Simon ()

  • kürzer und so



    dcmd_schein(playerid,params[])
    {
    new pID,schein[256];
    if(sscanf(params, "us", schein, pID))
    {
    SendClientMessage(playerid,0xFF0000FF,"Benutzung: /schein [SCHEIN] [playerid]");
    return SendClientMessage(playerid,grau,"Scheine: Auto, Angel, Boot, LKW, Flug");
    }
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xFF0000FF,"Ungültige Id!");
    if(Spieler[playerid][Member] != 8 || Spieler[playerid][Leader] != 8)return 0;



    if(strcmp(schein, "Führerschein", true) == 0)
    {
    //hier was passieren soll
    }
    return 1;
    }



    //edit BFX war schneller

    RFT

  • alles kla danke.. probleme gelöst.


    //edit: klappt alles wunderbar bis auf das hier:


    dcmd_accept(playerid,params[])
    {
    new s;
    if(sscanf(params, "s", s))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /accept [SACHE]");
    }
    else
    {
    if(strcmp(s, "schein", true) == 0)
    {
    new str1[256],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(schein[playerid] == 1)
    {
    format(str1,sizeof(str1),"%s hat den Führerschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Führerschein angenommen!");
    Spieler[playerid][Autoschein] = 1;
    }
    if(schein[playerid] == 2)
    {
    format(str1,sizeof(str1),"%s hat den Angelschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Angelschein angenommen!");
    Spieler[playerid][Angelschein] = 1;
    }
    if(schein[playerid] == 3)
    {
    format(str1,sizeof(str1),"%s hat den Bootschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Bootschein angenommen!");
    Spieler[playerid][Bootschein] = 1;
    }
    if(schein[playerid] == 4)
    {
    format(str1,sizeof(str1),"%s hat den LKWschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den LKWschein angenommen!");
    Spieler[playerid][LKWschein] = 1;
    }
    if(schein[playerid] == 5)
    {
    format(str1,sizeof(str1),"%s hat den Flugschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Flugschein angenommen!");
    Spieler[playerid][Flugschein] = 1;
    }
    Update(playerid);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Member] == 8 || Spieler[playerid][Leader] == 8)
    {
    SendClientMessage(i,türkis,str1);
    }
    }
    }
    else
    {
    return 0;
    }
    }
    return 1;
    }


    C:\Users\Simon Siggelkow\Desktop\Reallife\gamemodes\RL.pwn(3846) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    weiß net wo da ein mismatch ist :D

    Einmal editiert, zuletzt von Simon ()

  • dcmd_accept(playerid,params[])
    {
    new s;
    if(sscanf(params, "s", s))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /accept [SACHE]");
    }
    else
    {
    if(strcmp(s, "schein", true) == 0) //hier kommt error, in dieser zeile..
    {
    new str1[256],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(schein[playerid] == 1)
    {
    format(str1,sizeof(str1),"%s hat den Führerschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Führerschein angenommen!");
    Spieler[playerid][Autoschein] = 1;
    schein[playerid] = 0;
    }
    if(schein[playerid] == 2)
    {
    format(str1,sizeof(str1),"%s hat den Angelschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Angelschein angenommen!");
    Spieler[playerid][Angelschein] = 1;
    schein[playerid] = 0;
    }
    if(schein[playerid] == 3)
    {
    format(str1,sizeof(str1),"%s hat den Bootschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Bootschein angenommen!");
    Spieler[playerid][Bootschein] = 1;
    schein[playerid] = 0;
    }
    if(schein[playerid] == 4)
    {
    format(str1,sizeof(str1),"%s hat den LKWschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den LKWschein angenommen!");
    Spieler[playerid][LKWschein] = 1;
    schein[playerid] = 0;
    }
    if(schein[playerid] == 5)
    {
    format(str1,sizeof(str1),"%s hat den Flugschein angenommen!",name);
    SendClientMessage(playerid,türkis,"Du hast den Flugschein angenommen!");
    Spieler[playerid][Flugschein] = 1;
    schein[playerid] = 0;
    }
    Update(playerid);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Member] == 8 || Spieler[playerid][Leader] == 8)
    {
    SendClientMessage(i,türkis,str1);
    }
    }
    }
    else
    {
    return 0;
    }
    }
    return 1;
    }


    //edit: :D:D:D habe den fehler: new s; >>> new s[256];
    also so ein blöder fehler ist mir schon lang net mehr passiert :D

    Einmal editiert, zuletzt von Simon ()