JavaScript im Package Ordner lädt anscheinend nicht

  • Moin,


    nach einer Umstrukturierung meines Codes ist mir aufgefallen, dass es in meiner Character Erstellung nicht mehr möglich ist das Geschlecht zu ändern. Nach ein bisschen rum probieren und nach verfolgen habe ich festgestellt, dass mein ServerSide Event im Package Verzeichnis gar nicht mehr aufgerufen wird.


    Hier einmal der komplette Code der dazu gehört:


    Hier wird das erste Event aufgerufen:

    Code
    1. creatorMenu.ListChange.on((item, index) => {
    2. if (item == gender) {
    3. currentGender = index;
    4. mp.events.call("changeGender", player, index);
    5. }
    6. }




    In der client_packages gibt es ein Ort wo ich Events bündel um die Logik nicht so verstreut zu haben:


    Hier funktioniert das "mp.gui.chat.push" noch!

    Code
    1. mp.events.add("changeGender", (player, gender) => {
    2. mp.gui.chat.push(gender.toString());
    3. mp.events.callRemote("changeGender", player, gender);
    4. });


    Sobald ich dann das ServerSide Event aufrufe passiert gar nichts mehr, dort wird auch nichts in den Chat ausgegeben oder ähnliches:


    Code
    1. mp.events.add("changeGender", (player, gender) => {
    2. player.outputChatBox(gender.toString());
    3. player.model = freemodeCharacters[gender];
    4. });





    Die Ordnerstruktur ist folgende:


    Server-Files:

    • client_packages

      • ResourceName

        • skincreator

          • index.js (Hieraus stammt der erste Codeabschnitt!)
        • events

          • character.js (Hieraus stammt der zweite Codeabschnitt!)


    • packages

      • spawn

        • index.js (Hieraus stammt der dritte Codeabschnitt!)




    Fällt euch vielleicht auf warum es nicht funktionieren könnte?
    Ich bin langsam am verzweifeln^^




    Mit freundlichen Grüßen
    Smile325

  • Sicher, dass player in dem Fall auch mp.players.local ist? Vom einem Event zum anderen Event clientside brauchst du den Spieler nicht übergeben, das ist sowieso immer nur der lokale Spieler.

    LeonMrBonnie.de


    Scripting

    JavaScript Programmierer

    Auch im Bereich GTA:V und dort der RageMP oder alt:V API helfe ich gern.


    Kontakt

    Konversation: Konversation starten

    Oder eine der Kontaktmöglichkeiten auf leonmrbonnie.de

  • Und muss ich den explizit mit geben oder wird der quasi aus einer anderen Quelle mit gegeben? Ich weiß nicht warum, aber irgendwie schien das nicht immer 100% klar zu sein wie das genau gehandhabt wird.


    Ich habe mein Serverside Event in der packages/spawn/index.js bearbeitet, dass ich wirklich nur den player als parameter habe. Selbst ein player.outputChatBox("1"); wird nicht ausgegeben.

  • Alles Klar.


    Ich habe mal meine Ordnerstruktur 1 zu 1 wie in den Docs aufgebaut und habe nun unter "packages" einen Ordner mit dem Resourcennamen und dort drinne eine index.js. Diese bindet dann meine events mit einem require ein.


    Code
    1. require('ResourcesName/events/main.js');

    Leider kann ich das Event nie aufrufen, egal ob ich diese in der index.js einfüge oder in der main.js. Ich weiß nicht wie das passieren konnte, nachdem ich ein paar Files verschoben habe. Selbst wenn ich diese auf ihren Ursprünglichen Platz zurück verschiebe, funktioniert es nicht.

  • require kann nicht innerhalb der Ressource auf die Ordner von anderen Ressourcen zugreifen, deswegen brauchst du den Ordnernamen von den Ressourcen nicht mit in den Pfad schreiben.
    Das Root Verzeichnis von require ist immer der Ordner der Ressource.

    LeonMrBonnie.de


    Scripting

    JavaScript Programmierer

    Auch im Bereich GTA:V und dort der RageMP oder alt:V API helfe ich gern.


    Kontakt

    Konversation: Konversation starten

    Oder eine der Kontaktmöglichkeiten auf leonmrbonnie.de


  • Also, ich hab ein bisschen rum probiert, der komplette andere Code funktioniert.
    Nur meine Serverside Events unter packages funktionieren nicht bzw werden überhaupt nicht gefunden.



    Ist aber schon richtig dass ich auch unter packages serverside kram machen kann mit JavaScript obwohl ich für den restlichen kram serverside bis jetzt c# benutzt habe oder?


    Ich habe das Gefühl ohne ein bisschen JavaScript auf der Serverseite kann man eine Menge nicht erreichen, oder täusche ich mich da?

    Einmal editiert, zuletzt von Smile325 ()

  • Code
    1. mp.events.add("changeGender", (player, gender) => {
    2. player.outputChatBox("Hallo");
    3. player.model = freemodeCharacters[gender];
    4. });

    Das ist ServerSide. Hier wird nicht einmal das "outputChatBox" getriggered

  • Achso, na dann hab ich es bereits getan :P Also die richtigen Parameter werden in das Event gegeben, nur das Event wird nie getriggered. Ich hab mal in die Javascript Datei mit den Events einen Syntax Fehler gemacht, in der Vergangenheit wurde das sofort beim Laden angemeckert, diesmal lief aber alles wie "erwartet" und das Script lief. Bis auf das halt das Event beziehungsweise die Serverside Events "fehlten".


    Ich würde die Suche aufgeben und versuchen die komplette Serverside mit C# zu realisieren, was mich seit dem du mir sagtest, in C# sei alles genauso möglich wie mit Javascript, angesprochen hat.
    Kannst du mir vielleicht sagen ob ich unter C# Serverside auch Serverside Events triggern kann? Also ob Serverside -> Serverside möglich ist? Weil Clientside geht das ja und logischerweise auch zwischen Client und Serverseitig auch.




    #Edit: Die Events kann ich einfach nicht triggern, ich habe jetzt alles mit C# und meine bestehenden Events funktionieren alle, selbst die Daten in die Datenbank schreiben.
    #Edit2: Ich hab das C bei dem Event klein geschrieben, jetzt funktioniert es. Aber nur wenn ich das Event mit C# erstellt habe. Mit Javascript wurde es erneut nicht gefunden

    Einmal editiert, zuletzt von Smile325 ()

  • Ja, ist mir danach auch aufgefallen. Trotzdem Dankeschön!


    Weißt du zufällig wie ich das Geschlecht des Spielers verändere? Es gibt für den Player eine Property die model heißt, in Javascript habe ich aber dort sowas hier gebraucht:



    Code
    1. const freemodeCharacters = [mp.joaat("mp_m_freemode_01"), mp.joaat("mp_f_freemode_01")];

    ich hab diese Möglichkeit für c# nicht gefunden und player.SetCustomization hat noch kein Wiki Eintrag, ich glaube da konnte man das Geschlecht ebenfalls anpassen



    #Edit: Ebenfalls wieder eine Frage die ich mir hätte sparen können. Ich hätte ganz leicht selber in die Klasse schauen können. Danke für deine großzügige Hilfe @LeonMrBonnie