JavaScript im Package Ordner lädt anscheinend nicht

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
  • 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
    creatorMenu.ListChange.on((item, index) => {
        if (item == gender) {
            currentGender = index;
            mp.events.call("changeGender", player, index);
        }
    }




    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
    mp.events.add("changeGender", (player, gender) => {
    	mp.gui.chat.push(gender.toString());
    	mp.events.callRemote("changeGender", player, gender);
    });


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


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





    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

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

  • 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 ()

  • 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
    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