ocmd: makeleader 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
  • Guten tag,


    ich wollte mich an einen ocmd:makeleader befehl ransetzten.


    Dies habe ich wie folgt gemacht:


    ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, fraktname[128],string[128];
    if(sscanf(params,"us",pID,fraktname))return SendClientMessage(playerid,HELLBLAU,"/makeleader [id] [Fraktion]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s zum Leader gemacht. Fraktion: %s",Spielername(pID),Spielername(playerid),fraktname);
    SendClientMessageToAll(ROT,string);
    SetPVarInt(pID,"Fraktion",fraktname(pID));
    SpielerSpeichern(pID);
    }


    dann meine fraktionen
    #define fraktname1 "MC Polizei"
    #define fraktname2 "Medical Department"
    #define fraktname3 "A Rufa"


    folgende dateien werden abgespeichert und geladen:
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    }
    return 1;
    }


    MfG

  • SetPVarInt(pID,"Fraktion",fraktname(pID));


    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));


    Der Wert "Fraktion" ist bei Dir ein Integer, also kann dies so nicht klappen.
    Wenn Du es so machen willst, musst Du "Fraktion" einen Integer zuordnen und diesen dann halt jeweils abfragen.


    Also:


    if(sscanf(params,"ud",pID,fraknumber))return SendClientMessage(playerid,HELLBLAU,"/makeleader [id] [Fraktionsnummer]");


    Dann speicherst Du jeweils den Wert.


    Grüße,
    tonyalva

  • zeig vor wie dann kann ich mir darunter was vorstellen :(


    MfG

  • dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));


    Es muss also schonmal ein Zahlenwert sein.
    Du ordnest nun also jeder Fraktion einen Wert zu, z.B PD = 1.
    Beim Befehl setzt du nun die Variable auf den Wert.
    Wenn du die Fraktion abfragen möchtest, benutzt du dann halt:


    GetPVarInt(playerid,"Fraktion")


    Grüße,
    tonyalva

  • ich meinte wie ich das nutzen soll den gesamten ocmd


    /edit:
    ich meinte das du mir ein bespiel mit einer frkation per pwn code lieferst

    Einmal editiert, zuletzt von _SKY_ ()

  • Ich weiß, wie du es meintest.
    Allerdings sollte man auch ein bisschen Eigeninitiative aufbringen und der Teil, den ich erklärt habe, ist auch relativ verständlich..

    ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, fraknumber,string[128];
    if(sscanf(params,"ud",pID,fraknumber))return SendClientMessage(playerid,HELLBLAU,"/makeleader [id] [Fraktionsnummer]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s zum Leader der Fraktion Nummer %d ernannt",Spielername(pID),Spielername(playerid),fraknumber);
    SendClientMessageToAll(ROT,string);
    SetPVarInt(pID,"Fraktion",fraknumber);
    SpielerSpeichern(pID);
    }

  • nurnoch:


    C:\Users\Marcell\Music\SAMP 0.3c Windows Server\gamemodes\S3R.pwn(187) : error 017: undefined symbol "Spielername"


    könnte mir jmd. sagen wie ich den noch weg bekomme?

  • nurnoch:


    C:\Users\Marcell\Music\SAMP 0.3c Windows Server\gamemodes\S3R.pwn(187) : error 017: undefined symbol "Spielername"


    könnte mir jmd. sagen wie ich den noch weg bekomme?


    Du hast in deinem Code ebenfalls die gleiche Zeile benutzt, darum verstehe ich nicht, warum es da jetzt Probleme mit gibt?..


    new giveplayername[MAX_PLAYER_NAME];
    GetPlayerName(pID, giveplayername, MAX_PLAYER_NAME);
    format(string,sizeof(string),"AdmCmd: %s wurde von %s zum Leader der Fraktion Nummer %d ernannt",giveplayername,Spielername(playerid),fraknumber);


    Eine Möglichkeit.


    Grüße,
    tonyalva

  • new Spielername[MAX_PLAYER_NAME];


    Zitat

    Der Beitrag ist zu kurz. Der Beitrag muss mindestens 15 Zeichen lang sein und 6 Wörter enthalten.

  • hab es so:


    ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, fraknumber,string[128];
    new giveplayername[MAX_PLAYER_NAME];
    GetPlayerName(pID, giveplayername, MAX_PLAYER_NAME);
    format(string,sizeof(string),"AdmCmd: %s wurde von %s zum Leader der Fraktion Nummer %d ernannt",giveplayername,Spielername(playerid),fraknumber);
    if(sscanf(params,"ud",pID,fraknumber))return SendClientMessage(playerid,HELLBLAU,"/makeleader [id] [Fraktionsnummer]");
    SendClientMessageToAll(ROT,string);
    SetPVarInt(pID,"Fraktion",fraknumber);
    SpielerSpeichern(pID);
    return 1;
    }


    und 1. Error....


    C:\Users\Marcell\Music\SAMP 0.3c Windows Server\gamemodes\S3R.pwn(189) : error 017: undefined symbol "Spielername"


    Der an dieser Zeile ist:
    format(string,sizeof(string),"AdmCmd: %s wurde von %s zum Leader der Fraktion Nummer %d ernannt",giveplayername,Spielername(playerid),fraknumber);

  • _Sky_ mach das new new Spielername[MAX_PLAYER_NAME];

  • wie, so?


    ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, fraknumber,string[128];
    new Spielername[MAX_PLAYER_NAME];
    new giveplayername[MAX_PLAYER_NAME];
    GetPlayerName(pID, giveplayername, MAX_PLAYER_NAME);
    format(string,sizeof(string),"AdmCmd: %s wurde von %s zum Leader der Fraktion Nummer %d ernannt",giveplayername,Spielername(playerid),fraknumber);
    if(sscanf(params,"ud",pID,fraknumber))return SendClientMessage(playerid,HELLBLAU,"/makeleader [id] [Fraktionsnummer]");
    SendClientMessageToAll(ROT,string);
    SetPVarInt(pID,"Fraktion",fraknumber);
    SpielerSpeichern(pID);
    return 1;
    }


    habe ich jetze 4 errors..


    MfG

  • Hallo SKY,
    Wie ich sehe und vielleicht auch so ist benutz du das Tutorials Script von MrMonat?
    Hier ist der ocmd code für makeleader, bei mir funtz er so wie er ist probiers mal aus.


    ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,ROT,"Du bist kein Admin."); //Adminabfrage halt ^^
    new pID, rank;
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,WEIß,"/setteam [spieler] [Fraktionid]"); //SendClientMessage verändert (Sollte klar sein)
    if(rank<0||rank>3)return SendClientMessage(playerid,ROT,"Bitte gültige Fraktion angeben."); //0-3 = Zivi bis 3.Fraktion
    SetPVarInt(pID,"Fraktion",rank); //Es wird die Fraktion in der Spielerdatei geändert
    SpawnPlayer(pID); //Der Spieler wird respawnt.
    SpielerSpeichern(pID); //Und die Datei wird gespeichert
    return 1;
    }

    Warum fällt immer die Wand um, wenn ein Mantafahrer dagegen fährt? - Der Klügere gibt nach!


  • ich danke dir homer,
    ja ich benütze im wesentlichen das MrMonat Script habe es nur umgebaut halt , bin am scripten lernen :>


    Danke funktioniert :>

  • Sorry,


    ich dachte, du wirst es sehen..
    Meine Lösung geht auch, nur musst du das Prinzip halt dann auch anwenden, wenn ich es schon zeige..


    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, MAX_PLAYER_NAME);
    format(string,sizeof(string),"AdmCmd: %s wurde von %s zum Leader der Fraktion Nummer %d ernannt",giveplayername,sendername,fraknumber);

  • so hab wieder ein prob


    ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, rank, string[128];
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,HELLBLAU,"/setteam [spieler] [Fraktionid]"); //SendClientMessage verändert (Sollte klar sein)
    if(rank<0||rank>3)return SendClientMessage(playerid,ROT,"Bitte gültige Fraktion angeben."); //0-3 = Zivi bis 3.Fraktion
    SetPVarInt(pID,"Fraktion",rank); //Es wird die Fraktion in der Spielerdatei geändert
    format(string,sizeof(string),"AdmCmd: %s wurde von %s geleadert! Fraktion: %s",SpielerName(pID),SpielerName(playerid),rank);
    SendClientMessageToAll(ROT,string);
    SpawnPlayer(pID); //Der Spieler wird respawnt.
    SpielerSpeichern(pID); //Und die Datei wird gespeichert
    return 1;
    }




    Es wird angezeigt:
    AdmCmd: SkyLight wurde von (admin der geleadert hat) geleadert. Fraktion:
    bei fraktion kommt aber nichts.
    könnte man das noch i-wie machen`?
    Das dort dan steht zu welcher Fraktion er geleadert wurde?


    MfG

  • Diese Lösung habe ich bereits gepostet.
    Fraktion: %s


    Die Fraktion ist in deinem Code allerdings kein string.
    Entweder du lässt den Wert dort anzeigen oder du lässt bei jeder Fraktion zusätzlich einen Namen zuordnen.


    Grüße,
    tony

  • bitte mach es mit der pwn code funktion wie ich das genau machen muss
    bei dir versteh ich leider garnichts :<