Adminbefehl um einzustellen ,in der Fraktion , mit dem Rang! Wie?

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
  • Hallo !


    Ich wollte meine Admins bischen mehr Gott spielen lassen. ^^
    Ich wollte für die einen Befehl machen indem sie die ID eingeben müssen , die Fraktion , und den Rang.


    Würde dann zb so aussehen :


    /einstellen [PlayerID] [Fraktion] [Rang] (/einstellen 28 LVPD 4 )
    soll heißen der Spieler wird im LVPD mit Rang 4 eingstellt. (Leiter des LVPDs)


    wie soll das im pawn aussehen? habe an das gedacht:


    dcmd_einstellen(playerid,params[])
    {
    if(dini_Int(Spielerdatei,"Team")<4)
    {
    SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    return 1;
    }
    if(dini_Int(Spielerdatei,"Team")==4)
    {
    if(sscanf(params,"udd",pid,fraktion,rang)) return SendClientMessage(playerid,ROT,"Benutzung: /einstellen [PlayerID] [Fraktion] [Rang]");
    else
    {
    if(fraktion = "LVPD")
    {
    dini_IntSet(Spielerdatei,"LVPD",rang);
    return 1;
    }
    }
    }
    }


    wollte das nicht auf jede firma ausführen aber die Zeile mit if(fraktion = "LVPD") ist wichtig
    würde das so gehen?


    Hoffe auf eure Hilfe!


    MfG SuperQueckSilber

    Arbeite an meinem eigenen Projekt :)


    Pure RealLife [PRL]


    Release:2011
    Erster Buchstabe im Script aufgetreten:26.7.2011



  • dcmd_einstellen(playerid,params[])
    {
    if(dini_Int(Spielerdatei,"Team") < 4)
    return SendClientMessage(playerid, ROT, "Du bist kein Admin!");
    if(sscanf(params, "udd", pid, fraktion, rang))
    return SendClientMessage(playerid, ROT, "Benutzung: /einstellen [PlayerID] [Fraktion] [Rang]");
    else
    {
    if(!strcmp("LVPD", fraktion, true, 4)) // oder if(!strcmp("LVPD", fraktion))
    {
    dini_IntSet(Spielerdatei,"LVPD",rang);
    return 1;
    }
    }
    }


    So geht das ;)

    Miete mich (nicht) :love:

  • if(!strcmp("LVPD", fraktion, true, 4))


    strcmp ist so eine Art -> == <-
    Kennste vllt. aus PHP o.ä.


    strcmp vergleicht string 1 und string 2.
    Wenn man jetzt hier unten guckt:


    if(!strcmp("LVPD", fraktion))


    Dann macht der Server folgendes:
    "LVPD" ==/like fraktion ?????
    Also ob eben die Strings gleich bzw. fast gleich sind.


    Wenn du jetzt da das:
    , true, 4
    hin machst, ist das eine Art wie MySQL (like).
    4 bedeutet die Länge.
    Machst du dort z.B. 1 hin, wäre das so:
    if "L%" == fraktion


    Also er nimmt nur noch das "L".



    Ich hoffe ich konnte dir das jetzt gut mit Beispielen erklären.


    Theoretisch kannste
    if(string == string)
    durch
    if(!strcmp(string, string))
    ersetzen



    P.S.: Sa-MP Wiki: http://wiki.sa-mp.com/wiki/Strcmp

    Miete mich (nicht) :love:

  • danke :D


    war sehr durch die 4 verwirrt da mein adminlevel auch 4 ist ôo


    edit:


    bekomme fehler :S
    genau bei der if(!strcmp... zeile
    error 035: argument type mismatch (argument 1)

    Arbeite an meinem eigenen Projekt :)


    Pure RealLife [PRL]


    Release:2011
    Erster Buchstabe im Script aufgetreten:26.7.2011



    Einmal editiert, zuletzt von SuperQueckSilber ()

  • strcmp ( string, string, bool, varchar )


    Also wenn du als erstens "LVPD" und als zweitens fraktion machst... und fraktion auch ein string ist.
    Dann geht eigl. alles.





    Hier ist dein Fehler:
    if(sscanf(params, "udd", pid, fraktion, rang))
    Da musst du dann folgendes nehmen
    if(sscanf(params, "usd", pid, fraktion, rang))

    Miete mich (nicht) :love:

  • ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,7))return SendClientMessage(playerid,deine farbe,"Du bist kein Admin oder dein adminrang reicht nicht aus!");
    new pID,fID;
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,deinefarbe,"Benutze; /makeleader [ID] [fID]");
    SetPVarInt(pID,"Fraktion",fID);
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ich poste jetzt mal den ganzen cmd
    dcmd_aeinstellen(playerid,params[])
    {
    new pid,rang;
    new fraktion[64];
    new Spielerdatei[64];
    new Spielerdatei2[64];
    new adminname [MAX_PLAYER_NAME];
    new eingestellter [MAX_PLAYER_NAME];
    GetPlayerName(playerid,adminname,sizeof(adminname));
    GetPlayerName(pid,eingestellter,sizeof(eingestellter));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",adminname);
    format(Spielerdatei2,sizeof(Spielerdatei2),"/Accounts/%s.txt",eingestellter);
    if(dini_Int(Spielerdatei,"Team")<3)
    {
    SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    return 1;
    }
    if(dini_Int(Spielerdatei,"Team")==3)
    {
    if(sscanf(params,"usd",pid,fraktion,rang)) return SendClientMessage(playerid,ROT,"Benutzung: /aeinstellen [PlayerID] [FRAKTION] [Rang]");
    else
    {
    if(!strcmp("TEAM",fraktion,true,4))
    {
    new string[128];
    format(string,sizeof(string),"Du hast %s ins Team aufgenommen!",eingestellter);
    SendClientMessage(playerid,GELB,string);
    dini_IntSet(Spielerdatei2,"Team",rang);
    return 1;
    }
    }
    }
    return 0;
    }


    so was ist falsch? :S

    Arbeite an meinem eigenen Projekt :)


    Pure RealLife [PRL]


    Release:2011
    Erster Buchstabe im Script aufgetreten:26.7.2011



  • schau dir mal genauer den code an Pat0 dan fählt dir auf das keine errors kommen.
    Jedoch ein Script Fehler vorhanden ist mit den Paramtern
    der parameter PID solte die PlayerID dastellen die einggegeben wird
    sprich wen du 50 Slots hast
    und der PID ohne jeglichen wert Definiert wird, wird sofort die ID 1 Erkannt.
    wird jedoch der PID auf die Slot grösse im Beispiel fall 50 gesetzt so kannst du die ID zwischen 1 udn 50 wählen
    also kleine erklärung


    new PID[50]; // PID ist deine Variable. Die 50 ist der Wert der Zeichen. Sprich du hast 50 Slots und der Spieler 49 soll i.was so gibst du 49 ein und er Erkennt zwei werte.
    mein faforit ist eig. immer 256 :thumbup:

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

  • wenn ich es so wie du habe bekomme ich einen error in der zeile 10 :S


    error 035: argument type mismatch (argument 1)

    Arbeite an meinem eigenen Projekt :)


    Pure RealLife [PRL]


    Release:2011
    Erster Buchstabe im Script aufgetreten:26.7.2011



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