Beiträge von Smile325


    Schau mal im Changelog: https://wiki.gtanet.work/index.php?title=Changelog
    Wenn du es auf der Seite unter der Version 0.3.3.0 schaust wirst du fündig.


    Das Script wurde nicht mit C# geschrieben. Deshalb kann ich dir leider nicht helfen.
    Hier findest du das passende Event für Clientside Javascript (client_packages): https://wiki.rage.mp/index.php?title=PlayerDeath



    Ich empfehle dir auch einmal das Wiki durch zu lesen, dort findest du alle Informationen: https://wiki.rage.mp/index.php?title=Main_Page

    ja und wie genau dieaktiviere ich das wieder ?
    er soll ja nicht liegen bleiben


    Such in dem Code nach folgendem;

    Code
    NAPI.Server.SetAutoRespawnAfterDeath(false)


    Wahrscheinlich ist das in der "Main.cs" oder ähnliches. Eigentlich sollte es schon reichen die Zeile einfach zu löschen aber ansonsten kannst du auch das machen

    Code
    NAPI.Server.SetAutoRespawnAfterDeath(true)


    Du hast wahrscheinlich ein heruntergeladenes Script oder? Es könnte auch sein dass es mit dem OnPlayerDeath Event und damit mit mehr Logik zusammen hängt.


    Probier aber erst einmal das mit dem SetAutoRespawnAfterDeath

    Genau das will ich ja nicht
    bis jetzt ist es so das wenn man stirbt man tot da liegen bleibt und daher suche ich ein befehl das er respawnt bzw wieder lebt :D

    Was genau willst du daran nicht?


    Wenn der Spieler nach dem sterben tot liegen bleibt, wurde der auto respawn nach dem tot schon deaktiviert.


    Und nur vom ändern der HP in der Datenbank lebt der Spieler ja nicht sofort wieder. Da musst du schon etwas triggern, deshalb meinte ich Logik die den Spieler wieder spawnen lässt. Mit Spawnen meinte ich in dem Fall jetzt nicht an einem Spawnpoint oder ähnliches sondern an seinem Punkt wo er gestorben ist

    Du kannst, den automatischen Respawn nach dem Tot verhindern. Das geht dann so, wenn du C# Serverside verwendest:


    Code
    NAPI.Server.SetAutoRespawnAfterDeath(bool value)

    Das solltest du dann im ResourceStart machen.


    Dann brauchst du ein Command, dazu solltest du dir das hier durch lesen:
    https://wiki.gtanet.work/index…ing_Started_with_Commands


    Oder falls du kein C# verwendest:
    https://wiki.rage.mp/index.php…ing_Started_with_Commands



    In diesem Command dann die Logik für das setzen der HP in der Datenbank und wahrscheinlich auch Logik die den Spieler danach wieder Spawnen lässt.


    Falls du beim Tot die position von dem Spieler speichern willst:


    JavaScript: https://wiki.rage.mp/index.php?title=Entity::position
    C#: https://wiki.gtanet.work/index.php?title=GetEntityPosition


    Damit kriegst du die und kannst die Speichern.



    Ich hoffe ich habe dich auch nur ansatzweise richtig verstanden bei dem was du fragen wolltest.

    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

    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

    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?

    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.

    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.

    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

    Hey,


    ich versuche mir über ein Event Json übergeben zu lassen, das funktioniert auch eigentlich alles ganz gut bis auf das Deserializen.


    Da ich das ganze mit C# und Visual Studio Code verwende habe ich mir ein Nuget Package dafür raus gesucht "Newtonsoft.Json".


    Diese Fehlermeldung bekomme ich allerdings

    Code
    Exception has been thrown by the target of an invocation. ---> System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0


    Ich habe über den Visual Studio Code´s "Nuget Package Manager" die Version "12.0.2" runtergeladen, deshalb verstehe ich auch gar nicht wieso dort Version "12.0.0.0" steht.


    Im Code versuche ich dann in etwa folgendes:



    Also, Clientside und Serverside funktioniert alles einwandfrei, bis auf eben der komplette Kram mit "Newtonsoft.Json".



    Es gibt über Google eine Menge Lösungsvorschläge aber kaum was davon hat mir geholfen, da das komplett anderer kram war.



    Jemand eine Idee?




    Smile325





    // EDIT: Kann es sein, dass GTANetworkAPI bereits eine Newtonsoft.Json hat? Ich habe eine gefunden mit der Version 10.0.3.
    // EDIT 2: Anscheinend funktioniert es, da bereits eine Newtonsonft.Json von der GTANetworkAPI eingebunden wurde. Die ist aber erst auf der Version 10.0.3.

    Ja, das weiß ich. Meine Frage bezog sich darauf, ob ich das Clientseitig ändern kann um den User die Änderungen zu zeigen bevor ich das Speichere. Habs aber glaube ich raus. Trotzdem Dankeschön

    Moin,


    ich bin gerade an einem Punkt im Script wo ich den Spieler nach der Registrierung die Möglichkeit geben will sich den Skin anzupassen. Leider habe ich keine Beispiele gefunden oder Möglichkeiten wie das umzusetzen ist.


    Hat da jemand Hinweise, Links oder Tipps?