PCMD aufruf per #emit

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
  • [tabmenu]


    [tab='Allgemein']



    Guten Tag da ich mich mal
    Qualifizieren wollte für das Skripting Battle Turnier so just4fun
    habe ich die letzten Tage mich wieder mehr mit
    #emit auseinander gesetztund das ist dabei herraus gekommen ist
    aufjedenfall mal was anderes.



    Wie es vom Speed im Vergleich zu den anderenCommand-Prozessoren ist kann
    ich momentan nicht sagen ich hab noch keinen gemacht jedoch generel von der hooking
    Art dürfte das ganze doch sehr rapide sein.Die einzige momentane besonderheit ist außer das eure Befehle schneller aufgerufen werden
    ist das die schreibweise egal ist ob /TeST oder /TEST ist vollkommen egal es wird trotzdem erkannt.




    Ein großen Dank geht an

    • Y_LESS #emit Tutorial und seine optimierte version von tolower
    • Zeex interessante amx includes auf github
    • BlackAce für das Testen
    • SynonymousZ für das Testen


    [tab='Beispiel']

    //Example
    CMD-> test(playerid,params[])
    {
    printf("ausgegeben %d |%s|",playerid,params);
    return 1;
    }


    [tab='Downloads']




    http://pastebin.com/z9VyWL3Z


    [tab='Edits']
    1. Text entfernt
    2.- 6. Überarbeitung
    [/tabmenu]

  • Man kann versuchen aus einem Polo ein Ferrari zu machen, dennoch wird es nie einer sein. Gute Idee, aber gibt schon 100x diese CMD includes etc. . Außer das manche eventuell komfortabler sind, bringt es nichts.^^ (Sofern kein Plugin <:)

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • Man kann versuchen aus einem Polo ein Ferrari zu machen, dennoch wird es nie einer sein


    Aber man kann einen neuen und besseren Motor einbauen, das macht ihn zwar schneller/besser, aber am aussehen wird sich nichts ändern.
    Da magst du Recht haben :thumbup:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Das "->" kenne ich auch irgendwoher, http://forum.sa-mp.com/showthread.php?t=323777
    Laut deiner Aussage = " hooking Art dürfte das ganze doch sehr rapide sein." ist mir derzeit nicht bekannt das _ALS oder ähnliche "Hook" Funktionen schneller machen, diese sind (nur) für Include zu gebrauchen, und ich denke dass du weißt was Hooking an sich ist.
    Jedoch finde ich es keine gute Idee #emit in verbindung mit einem CMDprecessor zu kombinieren, doch eine gute Idee in das Geschehen von AMX zu kommen.


  • Aber man kann einen neuen und besseren Motor einbauen, das macht ihn zwar schneller/besser, aber am aussehen wird sich nichts ändern.
    Da magst du Recht haben :thumbup:

    You get it, dude!

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • sieht gut aus 10/10


    :D zumindest gefällt mir der aufbau vom cmd
    sprich dsa " cmd->"Command"(playerid,params[])
    aber ürgendwie ähnelt dsa an cmd :D


    mfg kyle


    Danke für die bewertung die grund idee für das define hab ich mir bei BlackAce abgeschaut :D wo dieser mir mal ein define für eine irentierte
    setzen eines arrays zeigen wollte wo wir mal das gespräch so generel mal hatten.
    Aber ich sags mal so wer das so nicht nutzen will kann es ja im define ändern ist jetzt nicht auf dich bezogen :D.


    //edit das einbringen von #emit sollte mal was neues darstellen zu dem versuch ich mich auch mit dem thema auseinander zu setzen.
    Jedoch ist das hooken mit state schneller und sicherer als die verwendung von CallLocalFunction um eine funktion zu hooken.
    Und ein thema zu emit es sind opcodes zu dem sollte das auch schneller sein als CallLocalFunction es wird durch kein umweg gemacht ich hab mir auch mal eine alternative angesehen von Zeex um Functionen auszurufen mit unendliche vielen parametern was so ähnlich ist wie CallLocalFunction nur im emit format da ist dies ein weitaus kürzerer code. Ich kann ja gerne mal schauen was so alles schneller ist.

  • ist mir derzeit nicht bekannt das _ALS oder ähnliche "Hook" Funktionen schneller machen


    ALS ist nicht das hooken ansich.


    Es ist eher eine Methode, mehrere Hooks verfügbar zu machen ;)


    Das mit dem -> hat er "böser weise" von mir.


    Ich sag nur
    new Spawns->[spawns] = {
    //bzw.
    new PInfo->MAX_PLAYERS[players];
    bzw

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

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

  • Ist mir bewusst ;)
    Eine alternative zu _ALS wäre wie prototype in seine Include:

    forward public _PH_();
    _PH_()<_PH_:unhooked>{}
    _PH_()<_PH_:hooked>{}
    _PH_()<>{}

  • Eine alternative zu _ALS wäre wie prototype in seine Include:


    Das Prinzip ist gleich geblieben.


    Der Hook entspricht noch immer ALS, wobei es bei ihm PH heißt.


    Das einzige was anders ist, ist der Funktionsaufruf, der gehookten Funktion, in diesem Fall OnPlayerCommandText

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Ich sag nur
    new Spawns->[spawns] = {
    //bzw.
    new PInfo->MAX_PLAYERS[players];
    bzw


    Wie funktioniert das genau oO
    Das ist doch ein Pointer oder nicht? Funktioniert das ohne eine Include?
    Warum machst du das so?


    und das -> kenn ich von rCmd... ^^ das sieht auch sehr nice aus ^^


    B2T: Ich finde auch dass es mal was anderes ist, ich kenne mich so oder so mit #emit und #pragma nicht so aus ^^
    Wenns funktioniert 10/10 ;)

  • Wie funktioniert das genau oO
    Das ist doch ein Pointer oder nicht? Funktioniert das ohne eine Include?
    Warum machst du das so?


    und das -> kenn ich von rCmd... ^^ das sieht auch sehr nice aus ^^


    B2T: Ich finde auch dass es mal was anderes ist, ich kenne mich so oder so mit #emit und #pragma nicht so aus ^^
    Wenns funktioniert 10/10 ;)


    Das was der liebe BlackAce gepostet hat basiert einfach auf 2 defines warum er das macht musst ihn selbst fragen vllt um leut ezu verwirren
    aber ein besonderen zweck hat es nicht

  • //#define invalid_memory_access
    forward public _PH_();
    _PH_()<_PH_:unhooked>{}
    _PH_()<_PH_:hooked>{}
    _PH_()<>{}
    #endif


    Was mir gerade aufgefallen ist, du hast da noch was vergessen, du hast da endif hingeschrieben, aber keine if Bedingung :D


    So sollte das aussehen:


    #if !defined _ALS_
    forward public _PH_();
    _PH_()<_PH_:unhooked>{}
    _PH_()<_PH_:hooked>{}
    _PH_()<>{}
    #endif


    Aber sonst, gute Arbeit 10/10! ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Jo ist mir auch aufgefallen das es oben gefehlt hab in der include ist es vorhanden ich hab nochmal alles überarbeitet und zu dem muss es wen schon
    #if !defined _PH_ heißen :D wenn bei den defines auch _PH_ steht.