Brauche hilfe mit meinem /setadmin 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
  • Hey Leute ;)




    Also ich habe mir ein /setadmin befehl mit ocmd erstellt, der einen eintrag in die spielerdatei von meinen adminsystem macht z.b. Admdminlevel: 5 oderso. Und ich habe noch etwas dazu gefügt damit der spieler eine nachricht bekommt von wen er admin gemacht wurde und welches level. und noch eine message wen ich admin gemacht habe und welches level hier der befehl:




    http://pastebin.com/raw.php?i=W0cbryx4




    Doch ingame wird mir zwar gesendet:


    You set'ed [Name vom spieler] adminlevel to [Adminlevel].


    Also z.b. You set'ed Dwayne adminlevel to 5.


    Aber bei dem spieler wo admin werden soll kommt:


    Your adminlevel got set'ed to 68 from .




    Hoffe ihr könnt mir helfen danke ;)

  • Hey,


    schau dir die Grundlagen nocheinmal an:


    format(string2,sizeof(string2),"Your adminlevel got set'ed to %i from %s.",name,rank);


    Rank ist keine Zeichenkette, ein Name auch kein Integer.
    Strings können übrigens mehrfach verwendet werden.


    Grüße,
    tonyalva

  • Hey,


    ich versuche nun mal, das ganze genau zu erklären, erstmal ein Eintrag.
    In diesem siehst du die Funktion der einzelnen Platzhalter. (http://wiki.sa-mp.com/wiki/Format)


    format(string,sizeof(string),"You set'ed %s adminlevel to %i.",name,rank);


    Hier ist der 1. Platzhalter ein string, also eine Zeichenkette, der Name des Spielers ist ebenfalls eine.
    Der Rank ist ein Integer, also eine Zahl, soweit so gut.


    format(string2,sizeof(string2),"Your adminlevel got set'ed to %i from %s.",name,rank);


    In diesem Beispiel ist es genau umgekehrt.
    Hier soll der Name in ein Integer gewandelt werden, also ein Zahlenwert.
    Da es allerdings eine Zeichenkette ist, klappt dies natürlich nicht.


    Du musst nun also die Platzhalter verändern.


    Grüße,
    tony

  • Also der sendet das jetzt zwar richtig an den spieler aber ich erhalte irgendwie garkeine meldung..


    so sieht es bis jetzt aus:
    ocmd:setadmin(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,GRAU,"Your adminlevel is not high enough.");
    new
    pID,
    string[128],
    string2[128],
    rank;
    new name[MAX_PLAYER_NAME];
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,ROT,"/setadmin [playerid] [level]");
    if(rank<1||rank>5)return SendClientMessage(playerid,ROT,"Wrong Level.");
    SetPVarInt(pID,"Adminlevel",rank);
    GetPlayerName(pID,name, sizeof(name));
    format(string,sizeof(string),"You set'ed the adminlevel of %s to %i",name,rank);
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string2),"Your adminlevel got set'ed to %i from %s",rank,name);
    SendClientMessage(playerid,GELB,string);
    SendClientMessage(pID,GELB,string2);
    SpielerSpeichern(pID);
    return 1;
    }


    Er sendet mir jetzt also nur "Your adminlevel got set'ed to %i from %s" richtig aber mir sendet er garnix..

  • es liegt definitiv an dem platzhalter ;)

    %s = Zeichenkette, Wörter etc

    %f = Floats , sprich zahlen mit einem . sowas wie 180. 605
    %i oder %d = Integer was ganzen Zahlen entspricht

    verstehe ich nicht den er hat die platzhalter richtig gesetzt auser ich bin blind o.0
    außerdem macht er die klammern nur 1 mal zu ob wohl sie 2 mal augeht ..