CallRemoteFunction?

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
  • So habe grad versucht, eine 2. Funktion aus nem FS zu laden.


    CallRemoteFunction("OnPlayerSpawn2", "f"); //Habe ich im Gamemode bei OnPlayerSpawn aufgerufen..


    forward OnPlayerSpawn2(playerid);
    public OnPlayerSpawn2(playerid)
    {
    if(xX{playerid} == 1)
    {
    SetPlayerPos(playerid,-376.8379,-4230.9829,17.6320);
    GivePlayerWeapon(playerid, 24, 9999);
    GivePlayerWeapon(playerid, 30, 9999);
    }
    if(xX{playerid} == 2)
    {
    SetPlayerPos(playerid,-365.5645,-4036.0833,18.9681);
    GivePlayerWeapon(playerid, 24, 9999);
    GivePlayerWeapon(playerid, 30, 9999);
    }
    return 1;
    }
    Naja, habs auch schon normal versucht ohne die CRF, werde trotzdem noch in LS respawnt. :wacko:


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • CallRemoteFunction("OnPlayerSpawn2", "d", playerid);


    Danke, funktioniert leider immer noch nicht.


    Werde immer noch in LS respawnt.


    Habe es auch schon normal mit OnPlayerSpawn(playerid) { ... im Filterscript versucht..


    Jemand ne Idee? :D


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Das filterskript sollte auch geladen sein du kannst ja mal probieren ob du mit funcidx was zurück bekommst.
    Aber normal sollte sowas über CallRemoteFunction funktionieren.



    new pointer, idx = funcidx("OnPlayerSpawn2");
    #emit LCTRL 0x1
    #emit NEG
    #emit ADD.C 0x20
    #emit STOR.S.pri pointer
    #emit LREF.S.alt pointer
    #emit LCTRL 0x1
    #emit NEG
    #emit ADD
    #emit LOAD.S.alt idx
    #emit SHL.C.alt 0x3
    #emit ADD
    #emit STOR.S.pri pointer
    #emit LREF.S.pri pointer
    #emit STOR.S.pri pointer
    #emit PUSH.S playerid
    #emit PUSH.C 0x8
    #emit LCTRL 0x6
    #emit ADD.C 0x1C
    #emit PUSH.pri
    #emit LOAD.S.pri pointer
    #emit SCTRL 0x6
    #emit STACK 0x10


    letzte Methode was man noch machen kann ist via emit


    //edit der code funktioniert auch nicht wenn funcidx -1 zurück gibt



  • Ich will ja nur normal gespawnt werden, habe die CRF bei OnPlayerSpawn im normalen Gamemode aufgerufen.


    Naja, was macht man mit diesem Pointer? Sagt mir leider nix. :D


    //Edit: OnPlayerSpawn müsste doch auch über Filterscript aufgerufen werden?


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Mit diesem code hat man die möglichkeit eine funktion mit einem argument aufzurufen.
    new pointer; dient nur als ablage der jeweiligen werte die in den cpu registrieren abgeändert wird.
    Daher sind befehle via emit schneller und verbrauchen weniger memory.
    Hier hier wird mit Opcodes gearbeitet, was zuletzt ausgeführt wird mit den letzen 5 Zeilen abgesehen von Stack damit erhöht man nur diesen sonst meckert die console. Da der befehl #emit CALL entfernt wurde dies bringt den server zum crashen wurde glaub ich aufgrund von sicherheitsgründen entfernt.


    Sowas ist halt hardcoding. Schau erstmal ob funcidx was zurück gibt oder hast #pragma dynamic 0 in deinem skript stehen

  • Mit diesem code hat man die möglichkeit eine funktion mit einem argument aufzurufen.
    new pointer; dient nur als ablage der jeweiligen werte die in den cpu registrieren abgeändert wird.
    Daher sind befehle via emit schneller und verbrauchen weniger memory.
    Hier hier wird mit Opcodes gearbeitet, was zuletzt ausgeführt wird mit den letzen 5 Zeilen abgesehen von Stack damit erhöht man nur diesen sonst meckert die console. Da der befehl #emit CALL entfernt wurde dies bringt den server zum crashen wurde glaub ich aufgrund von sicherheitsgründen entfernt.


    Sowas ist halt hardcoding. Schau erstmal ob funcidx was zurück gibt oder hast #pragma dynamic 0 in deinem skript stehen


    Nein kein:


    #pragma dynamic 0


    Naja, eigentlich will ich ja auch nur, dass der Spieler vom FS respawnt wird, sobald eine Variable auf 1 steht.


    Respawne aber die ganze Zeit in LS, auch wenn die Variable auf ist. Code dazu steht oben.


    Kann es sein der OnPlayerSpawn vom FS nicht an'callt' wird?


    Und wo kommt die funcidx hin?


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Du kannst es bei OnGameModeInit rein packen dort lässt du dir erstmals nur die id ausgeben wie schon erwähnt sollte -1 ausgegeben werden ist die funktion nicht "vorhanden".


    //edit


    Es wäre vllt noch gut zu erwähnen das du die filterskripts in der server.cfg davor eingetragen haben musst

  • Du kannst es bei OnGameModeInit rein packen dort lässt du dir erstmals nur die id ausgeben wie schon erwähnt sollte -1 ausgegeben werden ist die funktion nicht "vorhanden".


    //edit


    Es wäre vllt noch gut zu erwähnen das du die filterskripts in der server.cfg davor eingetragen haben musst


    Kann geschlossen werden.


    Jetzt gehts auf einmal, naja die funcidx hat garnix zurück gegeben. (Hatte die bei OnPlayerSpawn drinne, da OnGameModeInit keine Playerid definiert hat)


    //Close, geht nu alles :D Danke!


    //Edit: Gelöst mit SetSpawnInfo im Hauptgamemode, statt SetPlayerPos(playerid, x,y,z), für die jenigen, die es intressiert.


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

    Einmal editiert, zuletzt von BOMBER ()