Einfaches /slap +Höhen einstellung

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 Breadfish.


    Ich dachte mir so ein /slap befehl kann sehr nütztlich sein.



    So für alle die kein /slap kennen.
    Wenn ein Admin jemanden "geslappt" dann wird er in die luft geportet.
    Und wird dann runter fallen.Dies kann man z.b benutzen wenn ein Spieler nervt.
    Oder bei anderen fällen.



    So nun zum Befehl.


    Was braucht ihr alles?
    Ein Adminsystem.
    Grundkenntnisse.
    OCMD(geht auch mit dmcd oder mit anderen.Downloadlink gleich unten)
    Sscanf(Ihr braucht den code für sscanf.Den werde ich dann unten mit paste bin verlinken.)


    So mehr braucht ihr auch nicht.


    =========================================Downloads=========================================
    Sscanf code(Pastebin):http://pastebin.com/jAqvuh8h
    Ocmd.Include:http://uploaded.to/file/ttos8rz7


    =========================================Befehl=========================================
    Erstmal definiert ihr das include ocmd:
    #include <ocmd>



    Danach könnt ihr auch gleich Farben definieren:
    #define gelb 0xFFE600FF
    #define rot 0xFF000FFF



    Ihr könnt auch eure eigennen nehmen.Mir egale.

    Jetzt sucht ihr euch ein geeigneten platzt.
    Ihr müsst es irgendwo hin.
    Aber nicht in publics.Und Wichtig!!!Ihr dürft es auch nicht bei OnPlayerCommandText!


    Jetzt bauen wir mal das grundgestützt auf:


    Das würde so aussehen:
    ocmd:slap(playerid,params[])
    {
    return 1;
    }


    So jetzt zur erklärung:
    ocmd://Damit das script weis jetzt kommt ein ocmd befehl.
    slap//Das ist der name des befehles.Ihr braucht nicht wie bei OnplayerCommand /slap
    (playerid,//Erklärt sich ja von selbst...
    params[])//Das sind die parameter die wir dann gleich benutzen werden.


    So jetzt machen wir es so das es nur Admins können.
    Bei mir wär das so:
    if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");


    Ändert es einfach auf euer Admin abfrage aus.



    So jetzt brauchen wir erstmal die Positionen.
    Die wir brauchen.Damit wir überhaupt wissen.An welcher position der Spieler ist.
    Um ihn dann in die höhe zu katapultieren!.


    Dies lesen wir mits Float aus.


    Das würde dann soh aussehen:
    new Float:X,Float:Y,Float:Z;


    So zur erklärung:
    new//Damit das script weis es kommt eine neue Variable oder string etc...
    Float:X//Das wird dann unsere X koordinaten auslesen!
    Float:Y//Das wird dann unsere Y koordinaten auslesen!
    Float:X//Das wird dann unsere Z koordinaten auslesen!/pwn]


    Jetzt brauchen wir 2 Variablen die wir brauchen um die Spieler id und die Höhe auszulesen.



    Dies würde so aussehen:
    [pwn]new ID, hohe;


    Zur erklärung:
    new//Damit das script weis es kommt wieder eine Variablen(Mann konnte sie auch oben einfügen.Aber ich finde es so das es Viel orgninneler aussieht.
    ID//Die variable id werden wir dann im sscanf abfrage umwandeln.
    hohe//Ich nenne es hohe damit im Script keine fehler auftreten.Ich weis nicht wieso wegen diesem ö.Aber auch egal das werden wir auch umwandeln.


    Sop nun zum sscanf abfrage.


    Dies würde wenn es fertig ist so aussehen:
    if(sscanf(params,"ui",ID,hohe))return SendClientMessage(playerid,gelb,"Benutze /slap [ID] [Höhe]!");


    So zur erklärung:
    if(sscanf//Es sagt dem script das jetzt eine Sscanf abfrage kommt.
    (params//Das sind die parameter die wir gleich benutzen werden
    ,"u//Das u steht für.Einen parameter den wir gleich benutzen werden.Das u kann sowohl der spielername sowohl die Spieler id genutzt werden
    i"//Das ist ein integer für die höhe das wir auch brauchen werden
    ,ID//Das ID erstezt dann das u somit es weis wenn wir im befehl irgendeine ID/Name nach slap eingeben das er es sofort weis.
    ,hoch))//DAs hoch erstezt dann das integer.Das wir dann brauchen werden für die Höhe
    return SendClientMessage(playerid,gelb,"Benutze /slap [ID] [Höhe]");//Das heißt
    //falls der Admin keine parameter als /slap eingibt dann kommt die fehler meldung.Oder falls er die /slap [ID] kommt diese fehler meldung auch


    So jetzt können wir auch abfrage ob wir ene bestimmte höhe wollen:
    Das würde so aussehen:
    if(hohe<5||hohe>20)return SendClientMessage(playerid,gelb,"Benutze eine Höhe von [5-20]!");7


    Jetzt zur erklärung:
    if(hohe<5||hohe>20)//Das fragt ab ob die höhe kleiner als 5 ist oder ob die höher große als 20 ist.Allso wenn er z.b 50 eingibt würde diese fehler meldung //kommen!
    return SendClientMessage(playerid,gelb,"Gib eine Höhe von [5-20] ein!");//Das ist die Fehler meldung das annkommt falls es halt höher ist..etc


    So jetzt kommt noch die abfrage der Spieler position.


    Dies würde so aussehen:
    GetPlayerPos(ID,X,Y,Z)


    Jetzt zur erklärung:
    GetPlayerPos(//Fragt dann die Spieler position ab!
    ID,//Fragt die position der Spieler ID/Name von oben!
    X,//Das fragt dann die X koordinaten von oben ab.Und speichert sie dann als X



    Y,//Das fragt dann die Y koordinaten von oben ab.Und speichert sie dann als Y


    Z)//Das fragt dann die Z koordinaten von oben ab.Und speichert sie dann als Z



    So jetzt nurnoch das der Spieler überhaupt hoch geportet wird:


    Das würde so aussehen:
    SetPlayerPos(ID,X,Y,Z+hohe);


    Jetzt zur erklärung:
    SetPlayerPos(//Das setzt die spieler position.
    ID,//Die position wird von der Spieler ID/Name geändert nicht von uns!
    X,//Das sind die X koordinaten die wir von oben abgelesen haben.


    Y,//Das sind die Y koordinaten die wir von oben abgelesen haben.


    X,//Das sind die Z koordinaten die wir von oben abgelesen haben.


    So bei +hohe)//Das fügt dann die höhe hinzu die wir oben eingeben
    //Das ist das wichtigste


    Wenn ihr alles habt das würde dann so aussehen:
    ocmd:slap(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid,6))return SendClientMessage(playerid,rot,"Du bist kein Admin lvl 6!");
    new Float:X,Float:Y,Float:Z;
    new ID, hohe;
    if(sscanf(params,"ui",ID,hohe))return SendClientMessage(playerid,gelb,"Benutze /slap [ID] [Höhe]!");
    if(hohe<5||hohe>20)return SendClientMessage(playerid,gelb,"Benutze eine Höhe von [5-20]!");
    GetPlayerPos(ID,X,Y,Z);
    SetPlayerPos(ID,X,Y,Z+hoch);
    return 1;
    }



    Das wärs auch.Ich hoffe ich konnte einigen mit diesem Tutorial helfen.


    Falls ihr irgendwelche fehler findent.


    Bitte gleich posten.Damit ichs verbessern kann.


    //Edit:Fehler behoben bei SetPlayerPos(..+hoch zu +hohe



    MFG K44n

    Ich Scripte nicht mehr!
    Signatur zuletzt Aktualiesiert:11.07.2012





    MFG K44n

    Einmal editiert, zuletzt von K44n ()

  • Ich glaub um den Spieler in die Höhe zu porten, er runterfällt und dann stirbt

  • Um den Spieler zu nerven.
    Aber ich denke, dieses Tutorial ist eher dafür gut, um Anfänger die Befehle mit Parametern (und in dem Fall mit OCMD) näher zu bringen.
    Am Anfang hatte ich auch Schwierigkeiten mit OCMD, bis ich es irgendwann durch ein Tutorial gelernt habe.
    Jetzt fällt es mir leicht.
    Gutes Tutorial. Schön für Anfänger.
    Rechtschreibung nicht immer gut , und der Fehler von dem ersten Beitrag halt.
    Solltest du beheben.
    9/10 Punkten. Schön erklärt, übersichtlich und ja. 1 Punkt Abzug halt für den Fehler.

  • Beitrag von hackedicht ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Achja slap dient auch dazu healthhack zu erkennen ;)
    Verliert er kein Leben, dann hat er Healthhack an.
    Wobei ich da aber lieber SetPlayerVelocity verwenden würde, da Sobeit soweit ich weiss das erkennen kann und Leben abzieht.

  • Achja slap dient auch dazu healthhack zu erkennen ;)
    Verliert er kein Leben, dann hat er Healthhack an.
    Wobei ich da aber lieber SetPlayerVelocity verwenden würde, da Sobeit soweit ich weiss das erkennen kann und Leben abzieht.


    Ich habe selber ein Zeit lang Sobeit genutzt und Sobeit KANN es erkennen, aber nicht immer.
    Zum /slap-Befehl, ich finde es schade immer so einen "Abuse" Befehl zu sehen. Der Befehl ist recht unwichtig.
    MfG Source


  • Ich habe selber ein Zeit lang Sobeit genutzt und Sobeit KANN es erkennen, aber nicht immer.
    Zum /slap-Befehl, ich finde es schade immer so einen "Abuse" Befehl zu sehen. Der Befehl ist recht unwichtig.
    MfG Source


    Ich habe schon einige Hacker auf meinem DM Server mit dieser Methode gebusted.
    Klar, kann S0beit das erkennen, anhand des Höhenunterschieds, aber dennoch ist es ein probates Mittel gegen Hacker.
    Und wenn jemand abused ist es für einen professionellen Serverinhaber mit Durchsetzungskraft und Logsystem sicher möglich, diesen zu sanktionieren. ;)