Befehl geht nur so halb

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
  • Hey Com, ich habe einen /makeleader Befehl geschriben, welcher bei Spielern gehen soll, welche online sind und welche offline sind


    Wenn ich jetzt /makeleader 0 1 schreibe geht es


    Doch wenn ich jetzt schreibe /makeleader Speiky23 1 schreibe geht es nicht, es wird in die if Klammer gegriffen, welche zutreffen soll, wenn man Online ist


    ocmd:makeleader(playerid,params[]) {
    new _id_, frak, msg[128], name__[24], query[128] , error, status;
    if(sscanf(params,"ui",_id_,frak)) error++;
    if(sscanf(params,"s[24]i",name__,frak)) error++, status = 1;
    if(error == 2) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Benutze: /makeleader [Spielerid / (Voller) Name] [Fraktion]");

    if(status) {
    if(!ExistUser(name__)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Dieses Spieler ist uns leider nicht bekannt!");
    SendClientMessage(playerid,white,"Erfolgreich");
    format(query,sizeof(query),"UPDATE `accounts` SET `leader` = '%i' WHERE `name` = '%s'", frak, name__);
    mysql_query(connection, query);
    return 1;
    } else {
    if(!IsPlayerConnected(_id_)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Der Spieler ist nicht verbunden (Nutze: /makeleadero [Gesamter Name] [Fraktionsid]");
    PlayerInfo[_id_][leader] = frak;
    format(msg,sizeof(msg),"%s %s hat dich zum Leader der Fraktion %d erklärt!", GetAdminName(PlayerInfo[playerid][a_rank]), PlayerInfo[playerid][_name], frak) ,SendClientMessage(playerid,lightblue,msg);
    format(msg,sizeof(msg),"Du hast den Spieler %s den Leaderstatus der Fraktion %i gegeben!",PlayerInfo[_id_][_name], frak), SendClientMessage(playerid,lightblue,msg);
    return 1;
    }
    }


    Habe leider keine Idee wie ich es bewerkstelligen soll?

  • Teste mal den Code
    ocmd:makeleader(playerid,params[]) {
    new _id_=-1, frak, msg[128], name__[24], query[128];
    if(sscanf(params,"ui",_id_,frak))if(sscanf(params,"s[24]i",name__,frak))return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Benutze: /makeleader [Spielerid / (Voller) Name] [Fraktion]");
    if(_id_==-1) {
    if(!ExistUser(name__)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Dieses Spieler ist uns leider nicht bekannt!");
    SendClientMessage(playerid,white,"Erfolgreich");
    format(query,sizeof(query),"UPDATE `accounts` SET `leader` = '%i' WHERE `name` = '%s'", frak, name__);
    mysql_query(connection, query);
    }
    else {
    if(!IsPlayerConnected(_id_)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Der Spieler ist nicht verbunden (Nutze: /makeleadero [Gesamter Name] [Fraktionsid]");
    PlayerInfo[_id_][leader] = frak;
    format(msg,sizeof(msg),"%s %s hat dich zum Leader der Fraktion %d erklärt!", GetAdminName(PlayerInfo[playerid][a_rank]), PlayerInfo[playerid][_name], frak) ,SendClientMessage(playerid,lightblue,msg);
    format(msg,sizeof(msg),"Du hast den Spieler %s den Leaderstatus der Fraktion %i gegeben!",PlayerInfo[_id_][_name], frak), SendClientMessage(playerid,lightblue,msg);
    }
    return 1;
    }

    All in all it's just another brick in the wall

  • SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Der Spieler ist nicht verbunden (Nutze: /makeleadero [Gesamter Name] [Fraktionsid]");


    Wenn ich eingbe /makeleader Flashboot 1 wird das kommentierte aufgerufen


    Edit habs jetzt so nur jetzt kann ich nurnoch leuten geben die offline sind :/


    ocmd:makeleader(playerid,params[]) {
    new _id_, frak, msg[128], name__[24], query[128];
    if(!sscanf(params,"s[24]i",name__,frak)) {
    if(!ExistUser(name__)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Dieses Spieler ist uns leider nicht bekannt!");
    SendClientMessage(playerid,white,"Erfolgreich");
    format(query,sizeof(query),"UPDATE `accounts` SET `leader` = '%i' WHERE `name` = '%s'", frak, name__);
    mysql_query(connection, query);
    }
    else if(!sscanf(params,"ui",_id_,frak)) {
    if(!IsPlayerConnected(_id_)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Der Spieler ist nicht verbunden (Nutze: /makeleadero [Gesamter Name] [Fraktionsid]");
    PlayerInfo[_id_][leader] = frak;
    format(msg,sizeof(msg),"%s %s hat dich zum Leader der Fraktion %d erklärt!", GetAdminName(PlayerInfo[playerid][a_rank]), PlayerInfo[playerid][_name], frak) ,SendClientMessage(playerid,lightblue,msg);
    format(msg,sizeof(msg),"Du hast den Spieler %s den Leaderstatus der Fraktion %i gegeben!",PlayerInfo[_id_][_name], frak), SendClientMessage(playerid,lightblue,msg);
    }
    else return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Benutze: /makeleader [Spielerid / (Voller) Name] [Fraktion]");
    return 1;
    }

    Einmal editiert, zuletzt von NicoWiss ()

  • Keine Ahnung, ob es so mit sscanf funktioniert, aber versuchen kostet ja nichts :P



    ocmd:makeleader(playerid,params[])
    {
    new _id_, frak, msg[128], name__[24], query[128];
    if(!sscanf(params,"s[24]i",name__,frak))
    {
    if(!sscanf(params,"ui",_id_,frak))
    {
    if(!IsPlayerConnected(_id_)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Der Spieler ist nicht verbunden (Nutze: /makeleadero [Gesamter Name] [Fraktionsid]");
    PlayerInfo[_id_][leader] = frak;
    format(msg,sizeof(msg),"%s %s hat dich zum Leader der Fraktion %d erklärt!", GetAdminName(PlayerInfo[playerid][a_rank]), PlayerInfo[playerid][_name], frak) ,SendClientMessage(playerid,lightblue,msg);
    format(msg,sizeof(msg),"Du hast den Spieler %s den Leaderstatus der Fraktion %i gegeben!",PlayerInfo[_id_][_name], frak), SendClientMessage(playerid,lightblue,msg);
    }
    else
    {
    if(!ExistUser(name__)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Dieses Spieler ist uns leider nicht bekannt!");
    SendClientMessage(playerid,white,"Erfolgreich");
    format(query,sizeof(query),"UPDATE `accounts` SET `leader` = '%i' WHERE `name` = '%s'", frak, name__);
    mysql_query(connection, query);
    }
    }
    else return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Benutze: /makeleader [Spielerid / (Voller) Name] [Fraktion]");
    return 1;
    }

    Berlin - Tel Aviv - Moskau

  • Mal so gefragt warum wird überhaupt 2 mal abgefragt ? der u Parameter kann sowohl den Namen als auch die ID aufnehmen.


    Weil um einen Datenbankrequest zu machen kann ich eine playerid nicht gebrauchen da brauch ich debn vollen namen und er soll automatishc erknnen ob er jetzt den spieler offline bearbeiten soll oder ob er den spieler ingame bearbeiten soll

  • Und so?



    ocmd:makeleader(playerid,params[])
    {
    new _id_, frak, msg[128], name__[24], query[128];
    if(!sscanf(params,"s[24]i",name__,frak))
    {
    if(!sscanf(params,"ui",_id_,frak))
    {
    if(IsPlayerConnected(_id_))
    {
    PlayerInfo[_id_][leader] = frak;
    format(msg,sizeof(msg),"%s %s hat dich zum Leader der Fraktion %d erklärt!", GetAdminName(PlayerInfo[playerid][a_rank]), PlayerInfo[playerid][_name], frak) ,SendClientMessage(playerid,lightblue,msg);
    format(msg,sizeof(msg),"Du hast den Spieler %s den Leaderstatus der Fraktion %i gegeben!",PlayerInfo[_id_][_name], frak), SendClientMessage(playerid,lightblue,msg);
    }
    }
    else
    {
    if(!ExistUser(name__)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Dieses Spieler ist uns leider nicht bekannt!");
    SendClientMessage(playerid,white,"Erfolgreich");
    format(query,sizeof(query),"UPDATE `accounts` SET `leader` = '%i' WHERE `name` = '%s'", frak, name__);
    mysql_query(connection, query);
    }
    }
    else return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Benutze: /makeleader [Spielerid / (Voller) Name] [Fraktion]");
    return 1;
    }

    Berlin - Tel Aviv - Moskau

  • Leute, warum so umständlich:


    ocmd:makeleader(playerid,params[])
    {
    new _id_, frak, msg[128], name__[24], query[128];
    if(sscanf(params,"s[24]i",name__,frak)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Benutze: /makeleader [Spielerid / (Voller) Name] [Fraktion]");


    if(!IsNumeric(name__))
    {
    if(!ExistUser(name__)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Dieser Spieler ist uns leider nicht bekannt!");
    SendClientMessage(playerid,white,"Erfolgreich");
    format(query,sizeof(query),"UPDATE `accounts` SET `leader` = '%i' WHERE `name` = '%s'", frak, name__);
    mysql_query(connection, query);
    return 1;
    }
    else
    {
    _id_ = strval(name__);
    if(!IsPlayerConnected(_id_)) return SendClientMessage(playerid,white,"["html_red"Fehler"html_white"]: Der Spieler ist nicht verbunden (Nutze: /makeleader [Gesamter Name] [Fraktion]");
    PlayerInfo[_id_][leader] = frak;
    format(msg,sizeof(msg),"%s %s hat dich zum Leader der Fraktion %d erklärt!", GetAdminName(PlayerInfo[playerid][a_rank]), PlayerInfo[playerid][_name], frak) ,SendClientMessage(playerid,lightblue,msg);
    format(msg,sizeof(msg),"Du hast den Spieler %s den Leaderstatus der Fraktion %i gegeben!",PlayerInfo[_id_][_name], frak), SendClientMessage(playerid,lightblue,msg);
    return 1;
    }
    }


    IsNumeric:

    Spoiler anzeigen
    IsNumeric(const string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
    }


  • Profi es geht

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