Includes richtig erstellen | Hooking ganz einfach

  • @Jeffry danke ich bin sehr froh das ganze endlich verstanden zu haben!
    in der abrage ob _ALS_OnPlayerRequestClass als "irgendetwas" also in deinem beispiel als "" definiert ist, "speichert" man also quasi improvisiert ab, ob schon das gamemode-OnPlayerRequestClass als hook_OnPlayerRequestClass defined wurde? entschuldige die umständliche formulierung.



    //EDIT
    nachdem du alles so genial erklärt hast verbleibt dann doch noch eine frage:
    beim teil


    C
    1. return CallLocalFunction("Hook_OnPlayerRequestClass","ii",playerid, classid);

    also was in der funktion steht kannst du mir da auch nochmal erklären was also passiert ist?

  • in der abrage ob _ALS_OnPlayerRequestClass als "irgendetwas" also in deinem beispiel als "" definiert ist, "speichert" man also quasi improvisiert ab, ob schon das gamemode-OnPlayerRequestClass als hook_OnPlayerRequestClass defined wurde?

    Ja, du speicherst eben, dass du das Callback bereits gehookt hast.



    also was in der funktion steht kannst du mir da auch nochmal erklären was also passiert ist?

    Das ruft die Funktion Hook_OnPlayerRequestClass auf, also das OnPlayerRequestClass aus dem Gamemode, was der Compiler ja zu Hook_OnPlayerRequestClass umbenannt hat. Da es hier aber zwischen " " steht, müssen wir das "Hook_" mit angeben, da der Compiler in Strings nichts ersetzt.

    sigsmall_winter.png

  • @Jeffry nenn' mich blöde aber das raffe ich immer noch nicht. Was meinst du mit "mit angeben"?
    denn das gamemode- OnPlayerRequestClass heißt ja eh schon hook_OnPlayerRequestClass, also deswegen müssen wir das ja auch so aufrufen oder? also ich mein ich versteh nicht was das mit den "" zu tun hat.
    außerdem heißt es ja CallLocalFunction, obwohl wir doch vom include her das gamemode-OnPlayerRequestClass aufrufen?

  • das gamemode- OnPlayerRequestClass heißt ja eh schon hook_OnPlayerRequestClass

    Ja, aber in deinem Gamemode-Code steht ja OnPlayerRequestClass, das wird durch das Hook_OnPlayerRequestClass in der Include aufgerufen.
    Ich wollte nur deutlich machen, dass du in CallLocalFunction nicht einfach "OnPlayerRequestClass" schreiben kannst.



    außerdem heißt es ja CallLocalFunction, obwohl wir doch vom include her das gamemode-OnPlayerRequestClass aufrufen?

    Da die Include in den Gamemode eingebettet ist, ist es ein lokaler Aufruf.
    Ein CallRemoteFunction wäre es aus einer anderen .pwn Datei.

    sigsmall_winter.png

    Einmal editiert, zuletzt von Jeffry ()

  • @Jeffry
    Hook_Hook_OnPlayerRequestClass war hoffentlich ein tippfehler oder habe ich wieder etwas nicht verstanden?


    außerdem was kann ich gegen diese beiden warnings machen?


    \gamemodes\UltimateReallife.pwn(343) : warning 201: redefinition of constant/macro (symbol "OnPlayerRequestClass")


    \gamemodes\UltimateReallife.pwn(820) : warning 203: symbol is never used: "Hook_main"

  • Hook_Hook_OnPlayerRequestClass war hoffentlich ein tippfehler

    Oh ja, Copy-Paste. ^_^



    außerdem was kann ich gegen diese beiden warnings machen?

    Zu 1: Da wird OnPlayerRequestClass doppelt definiert. Kommt auf den Code drauf an, was man da machen muss, poste den gegebenenfalls mal.
    Zu 2: Den hook von main nutzt du nie, da hast du wohl was falsch gemacht. Mache es besser mit OnGameModeInit, da main kein public ist.

    sigsmall_winter.png

  • @Jeffry
    1.welchen Code soll ich posten?
    2. sollte doch mit normallen callbacks (das ist doch die bezeichnung von funktionen in pawno oder?) auch gehen, und könnte es vielleicht daran liegen, dass ich das "return CallLocalFunction("Hook_main","ii");" falsch platziert habe?
    3. was macht eigentlich "return" allgemein? weil bei vielen sachen steht ja so was wie "return 1;"?

  • @Jeffry
    1. Mann bin ich blöd! Als ich kopieren wollte ist mir aufgefallen, dass ich doch noch ein paar Sachen da bei der Funktion stehen hatte die da nicht hingehören-.- jetzt geht es.
    3. Und was bedeutet dann das was danach steht? Wenn man z.B. return CallLocalFunction[...] schreibt, oder auch return 1 oder return 0 oder was auch immer es gibt, was bedeutet das?

  • 3.
    Dass dann diese Anweisung ausgeführt wird, mit dem Beenden der vorherigen Funktion, und der Wert, den diese Anweisung zurück gibt, dann zurück gegeben wird (falls es irgendwo abgefragt wird).
    Meistens sagt man:
    return 1 = Alles ok
    return 0 = Fehler
    (Nicht immer so)


    Den Funktionsaufruf im return muss man nicht machen, man kann ihn auch vor das return 1; schreiben, das ist oftmals nur Stilsache.

    sigsmall_winter.png


  • Guten Tag, ich wollte OnPlayerGiveDamageDynamicActor im Include Hooken aber dann kommt dass es mehr als 31 Zeichen lang ist was kann ich da machen ?

    Code
    1. public OnPlayerGiveDamageDynamicActor(playerid, STREAMER_TAG_ACTOR actorid, Float:amount, weaponid, bodypart)
  • Beitrag von xyR ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Verwende nun YSI ().