Befehl funktioniert nicht richtig

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.
    Wiedermal will ein Befehl nicht obwohl ich nichts falsches sehe.
    also mal der Code:

    COMMAND:setskin(playerid,params[])
    {
    new pID,newSkin,string[124],string2[124],name[20],playername[20],string3[50];
    if(SpielerInfo[playerid][Adminlevel]>=2)
    if(aLogin[playerid]==1)
    if(sscanf(params,"ui",pID,newSkin))
    if(IsPlayerConnected(pID))
    {
    SetPlayerSkin(pID,newSkin);
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Admin %s hat dir einen neuen Skin gegeben (skinid: %i)",playername,newSkin);
    format(string2,sizeof(string2),"Admin %s hat %s die Skinid %i gegeben",playername,name,newSkin);
    format(string3,sizeof(string3),"Eingabe: %i", newSkin);
    SendClientMessage(pID,GRAU,string);
    SendClientMessage(pID,GRAU,string3);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel]>=1)
    {
    SendClientMessage(i,GRAU,string2);
    }
    }
    }
    else return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else return SendClientMessage(playerid,ROT,"Verwendung: /setskin [playerid] [skinid]");
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    else return SendClientMessage(playerid,ROT,"Sie haben nicht das benötigte Adminlevel.");
    return 1;
    }
    So.
    Das Problem.
    Wenn ich Ingame gehe und nur /setskin mache gebe ich mir (ID 0) die Skinid 0.
    Wenn ich nun /setskin 0 eingebe kommt wieder das selbe.
    Aber wenn ich eine Zahl dran mache kommt: "Verwende.......".
    Danke für eure Hilfe.


    EDIT// Überschrift editiert


  • if(SpielerInfo[playerid][Adminlevel]>=2)
    if(aLogin[playerid]==1)
    if(sscanf(params,"ui",pID,newSkin))

    Du fragst zwar alles ab, aber du sagst nicht was passieren soll. Du musst schon angeben das der Code unterbrochen wird wenn die bedingungen nicht stimmen. Du kannst nicht erst 100 mal If(bedingung) abfragen und am ende des Codes dann mit else sagen was passieren soll, ohne eine klammer gesetzt zu haben.
    Also entweder so:
    COMMAND:setskin(playerid,params[])
    {
    new pID,newSkin,string[124],string2[124],name[20],playername[20],string3[50];
    if(SpielerInfo[playerid][Adminlevel]<2) return SendClientMessage(playerid,ROT,"Sie haben nicht das benötigte Adminlevel.");
    if(aLogin[playerid]!=1) return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    if(sscanf(params,"ui",pID,newSkin)) return SendClientMessage(playerid,ROT,"Verwendung: /setskin [playerid] [skinid]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    SetPlayerSkin(pID,newSkin);
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Admin %s hat dir einen neuen Skin gegeben (skinid: %i)",playername,newSkin);
    format(string2,sizeof(string2),"Admin %s hat %s die Skinid %i gegeben",playername,name,newSkin);
    format(string3,sizeof(string3),"Eingabe: %i", newSkin);
    SendClientMessage(pID,GRAU,string);
    SendClientMessage(pID,GRAU,string3);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel]>=1)
    {
    SendClientMessage(i,GRAU,string2);
    }
    }
    return 1;
    }
    Oder So wie du es vllt vor hattest:
    COMMAND:setskin(playerid,params[])
    {
    new pID,newSkin,string[124],string2[124],name[20],playername[20],string3[50];
    if(SpielerInfo[playerid][Adminlevel]>=2)
    {
    if(aLogin[playerid]==1)
    {
    if(sscanf(params,"ui",pID,newSkin)) return SendClientMessage(playerid,ROT,"Verwendung: /setskin [playerid] [skinid]");
    if(IsPlayerConnected(pID))
    {
    SetPlayerSkin(pID,newSkin);
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Admin %s hat dir einen neuen Skin gegeben (skinid: %i)",playername,newSkin);
    format(string2,sizeof(string2),"Admin %s hat %s die Skinid %i gegeben",playername,name,newSkin);
    format(string3,sizeof(string3),"Eingabe: %i", newSkin);
    SendClientMessage(pID,GRAU,string);
    SendClientMessage(pID,GRAU,string3);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel]>=1)
    {
    SendClientMessage(i,GRAU,string2);
    }
    }
    }
    else return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    }
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    }
    else return SendClientMessage(playerid,ROT,"Sie haben nicht das benötigte Adminlevel.");
    return 1;
    }


    Mfg.

    The fact is, I am right. And if you think I'm wrong, you are wrong.