Brauche Hilfe bei meinem /id-Befehl

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
  • Abend, ziel ist es, dass wenn ich beispielsweise "/id eter" eingebe und ein Spieler Namens "Peter" auf dem Server ist
    er angezeigt wird. Wenn nun auch noch ein Spieler Namens "Kreter" auf dem Server ist sollte dieser Spieler ebenfalls angezeigt werden.
    Mein Ansatz:
    if(strcmp(cmd, "/id", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_DBLUE, "nutze: /id [id/spielername]");
    return 1;
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new name[65];
    name = SpielerName(i);
    if(strfind(name,cmdtext,true) != -1)
    {
    format(string, sizeof(string), "ID: (%d) %s, Level: %d",i,name,SpielerInfo[i][pLevel]);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    }
    return 1;
    }


    #Edit:
    Hab nun geschafft, dass ich ein Teil des Namens eingeben kann und alle die einen solchen Teil im Namen haben werden angezeigt, allerdings ist mein Problem nun, dass ich altanativ trotzdem noch gern zB. /id 1 eingebe möchte.
    Wie füg ich das nun ein?
    if(strcmp(cmd, "/id", true) == 0)
    {
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid,COLOR_DBLUE, "* NUTZE: /id [{C80000}id/spielername{2641FE}]");
    return 1;
    }
    if(strlen(result) < 3)
    {
    SendClientMessage(playerid,COLOR_GREY, "* INFO: Mindestens 3 Buchstaben!");
    return 1;
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new name[65];
    name = SpielerName(i);
    //if(strfind(text,SchimpfWort[i],true) != -1)
    if(strfind(name,(result),true) != -1)
    {
    format(string, sizeof(string), "ID: (%d) %s, Level: %d",i,name,SpielerInfo[i][pLevel]);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    Gruß
    Joe

  • hach joe mein Lieber ^^
    Immer brauchst du Hilfe
    <- Christian_Valente ;D


    Naja ich würde es einfach so machen


    if(strcmp(cmd, "/id", true) == 0)
    {
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid,COLOR_DBLUE, "* NUTZE: /id [{C80000}id/spielername{2641FE}]");
    return 1;
    }
    if(IsNumeric(result))
    {
    new id = strval(result);
    if(IsPlayerConnected(id))
    {
    format(string, sizeof(string), "ID: (%d) %s, Level: %d",id,SpielerName(id),SpielerInfo[id][pLevel]);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    return 1;
    }
    }
    if(strlen(result) < 3)
    {
    SendClientMessage(playerid,COLOR_GREY, "* INFO: Mindestens 3 Buchstaben!");
    return 1;
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new name[65];
    name = SpielerName(i);
    //if(strfind(text,SchimpfWort[i],true) != -1)
    if(strfind(name,(result),true) != -1)
    {
    format(string, sizeof(string), "ID: (%d) %s, Level: %d",i,name,SpielerInfo[i][pLevel]);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    Grüße ;)



    //edit
    return vergessen

    ik bin der vito c:

  • Nunja dann gehst du bei Spieler 125 erstmal suchen da ist /id 125 schneller ;)



    PS:
    in ocmd ist das ganze einfacher. Außerdem solltest du in der for Schleife ein "IsPlayerconnected" einbauen


    Hier mal mein Befehl in ocmd ^^

    ocmd:id(playerid, params[])
    {
    new tName[MAX_PLAYER_NAME];
    if(sscanf(params,"s",tName)) {
    return SendNutzMsg(playerid, "/id [Spieler]");
    }
    if(IsNumeric(tName))
    {
    new id = strval(tName);
    if(IsPlayerConnected(id))
    {
    format(string, sizeof(string), "ID: (%d) %s, Level: %d",id,SpielerName(id),PlayerInfo[id][pLevel]);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    return 1;
    }
    }
    if(strlen(tName) < 3)
    {
    SendInfoMsg(playerid, "Nutze mindestens 3 Zeichen.");
    return 1;
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(strfind(SpielerName(i),(tName),true) != -1)
    {
    format(string, sizeof(string), "ID: (%d) %s, Level: %d",i,SpielerName(i),PlayerInfo[i][pLevel]);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    }
    return 1;
    }

    ik bin der vito c: