Erklärungen für Anfänger, Teil 2; if, else und Commands

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
  • if, else + Commands


    So, heute erklär ich euch mal das if, else und wie man Commands macht!



    Commands Mit und ohne Parameter


    Also, es gibt 2 Command - Arten, einmal mit Parameter z.B. /kick [playerID] und einmal ohne Parameter: /killme


    Wir Fangen als erstes Ohne Parameter an, also ganz einfache Commands wo man keine ID oder sowas Eingibt.


    Wir erstellen mal den Command /killme der nur für RCON Admins bestimmt ist(InGame /rcon login [RCON Passwort aus Server.cfg])



    if/* Wenn*/(strcmp/* Vergleicht 2 Strings */("/killme"/* Der Command /killme (String 1) */,cmdtext /* Also Command (String 2) */,true /*Es ist also ein Command*/)==0 /*Fragt ab ob die beiden Strings Identisch sind, also zueinander Passen!*/)
    { //Also wenn /killme eingegeben wir Passiert...
    if/* wenn... */(IsPlayerAdmin(playerid)) //... Der Spieler als RCON Admin eingeloggt ist.
    {//Passiert...
    SetPlayerHealth(playerid,0)//Setzt die HP (HealthPoints) Des ausführenden (playerid) auf 0, Er Stirbt ^^
    }//Ende der Ausführung
    else //ansonsten, Wenn der Spieler NICHT als RCON Eingeloggt ist...
    {// ...passiert...
    SendClientMessage/* Sendet eine Nachricht */(playerid, /*Dem Spieler der /killme eingegeben hat*/rot, /* (Farbe, 1. Tutorial Lesen!!!) */ "Du bist kein RCON Admin!");
    }//ende der Ausführung wenn der Spieler Nicht als RCON Eingeloggt ist!
    }//Ende des Kommandos



    Ich weiß dass es nicht Übersichtlich ist, aber hier nochmal im Klartext:


    if = wenn...
    (strcmp = Vergleicht die ersten beiden Strings
    ("/killme" = /killme Der Command (String 1)
    cmdtext = Es ist also ein Command (String 2)
    true = Soweit ich weiß Richtig (Also dass /killme ein Command ist)
    ==0 = dass die Beiden ersten Strings Identisch sind, also zueinander Passen ("/killme" und cmdtext)
    { = Beginnt den Vorgang
    IsPlayerAdmin = Ist der Spieler Admin
    playerid = Wieder der Ausführende, also wenn der Ausführende als Admin eingeloggt ist.
    SetPlayerHealth = Setzt die HP...
    playerid = ...des ausführenden...
    0 = ... auf 0, also Hat er dann kein Leben mehr und Stirbt!
    OPTIONAL: wenn da Steht 100 ( SetPlayerHealth(playerid,100); ) wird die HP Auf 100 Gesetzt, also falls man z.B. 50 HP hat, bekommt man 100 HP, Man Stirbt also nicht!
    else = Ansonsten (Hierbei wenn er NICHT als Admin eingeloggt ist) Passiert ( { )
    SendClientMessage = Sendet eine Nachricht
    playerid = Dem Ausführenden
    rot = Farbe Rot, muss man definiert haben (1. Tutorial Lesen!!!)
    "Du bist kein RCON Admin!" = Den Text: Du bist kein RCON Admin! in der Farbe rot!


    Jetzt nochmal das Ganze ohne die Kommetare:



    if(strcmp("/killme",cmdtext,true )==0)
    {
    if(IsPlayerAdmin(playerid))
    {
    SetPlayerHealth(playerid,0)
    }
    else
    {
    SendClientMessage(playerid,rot, "Du bist kein RCON Admin!");
    }
    }



    So das wars mit Teil 2 ^^


    Kritik, Lobe, Wünsche, Verbesserungsvorschläge usw. sind Erwünscht!


    MfG
    Jim // Chupa


    Es folgt noch ein Tutorial MIT Parametern! (strtok, vielleicht Auch dcmd)


    //EDIT: Verbessert!!! Danke an patoo, der mich auf die Fehler aufmerksam gemacht hat!
    ///EDIT: Nochmals Fehler Verbessert und ==0 Erklärung eingefügt!

    2 Mal editiert, zuletzt von munkee ()

  • recht gut erklärt 10/10 bist du für kleine aufträge noch frei? :)

  • ganz schön erklärt. Kommt auch noch ein Tutorial zu strget und Strock ? mit Strock komm ich nähmlich noch nicht so klar (auch wenn ich dcmd benutze (kürzer übersichtlicher - einfacher) würde ich das gern mal wissen).


    Sonst dieses Tutorial sehr gut 10/10 freue mich auf weitere Teile.


    Viele Grüße
    Steven aka NMS

  • Wieso machst du dafür jetzt nen extra Thread auf? Hätteste doch in den anderen rein editieren können. Ausserdem was willst du erklären? If & else oder befehle? Sollteste dir vllt mal überlegen. Achja und else if fehlt.


    Einfach nur sinnlos. <- Meine meinung

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

  • if/* Wenn*/(strcmp/* eingegeben wird */("/killme"/* Der Command /killme */,cmdtext /* Also Command */,true /*Es ist also ein Command*/))

    fail. http://wiki.sa-mp.com/wiki/Strcmp
    strcmp vegleicht 2 strings
    killme der 1 string mit dem der cmdtext(2ter strin (das ingame eingegebene)) verglichen wird.
    das true gibt an obs case sensitiv is, Wenns true ist dann ist hAlLo das selbe wie hallo wenn false dann nicht.
    Ich bin mir nicht sicher aber der command müsste auch ausgeführt werden wenn man irgendwas anderes eingibt, es müsste so sein:
    if(strcmp("/killme",cmdtext ,true )==0)//==0 wenn die strings identisch sind
    dann man kann die cmds nicht überall hinschreiben zumindest nicht die, die du erklärt hast, sie müssen in onplayercommandtext stehen
    wenn man selbst nicht weiß was man macht dann sollte man keine tuts für anfänger machen die lesen das 1mal und denken das es stimmt.
    von mir mal 3/10 weil ich den rest nicht gelesen habe

  • wegen strcmp: Sry wusst ich nich dachte eig. wenn eingegeben wird :S Danke dass du mich darauf aufmerksam gemacht hast


    und wegen ==0: Mein Fehler Sry hab ich Vergessen!