Ragemp

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Hallo, ich hoffe hier auf Hilfe, da mir die Community eigentlich immer geholfen hat.
      ich bin grade dabei mich ein bisschen einzufinden, in C##
      allerdings verzweifel ich an einer gewissen stelle.
      ich bin grade dabei ein bisschen was für ein Fraktionssysteme zu basteln.
      allerdings verzweifel ich ein an einem serverEvent. welches da wäre PlayerEnterVehicle
      kurz zu meiner Problematik.
      ich Erstelle mir ein Vehicle mit

      C-Quellcode

      1. Vehicle Schafter1 = NAPI.Vehicle.CreateVehicle(VehicleHash.Schafter6, new Vector3(-1940.64, 460.8065, 101.8254), 100f, 127, 127, "LCN"); // -- Schafter 6



      und das Event PlayerEnterVehicle lautet ja wie folgt.

      Quellcode

      1. [ServerEvent(Event.PlayerEnterVehicle)]
      2. public void OnPlayerEnterLCNVehicle(Client client, Vehicle vehicle, sbyte seatID)
      3. {
      4. }
      wie zum teufel, kann ich es jetzt machen, das nur das erstellte fahrzeug mit diesem befehl gemeint ist?
      egal was und wie ich es versuche, ich komme zu keinem erfolg...
    • Ich weiss nicht, hab ich noch nie gemacht. Ich kenne den Einstiegspunkt von RageMP nicht.
      Jedoch habe ich es dem Beispiel hier entnommen:
      wiki.gtanet.work/index.php?title=OnPlayerEnterVehicle
      Praktisch ist das ein Delegat, der registriert werden muss.

      Sorry, seh es jetzt erst. Meine Annahme war falsch:
      Note: the Attribute should be declared above the method to be invoked, it's alternative to subscribing the method to a delegate, introduced for performance reasons.
    • Ohne mich je damit befasst zu haben, würde ich nach einer kurzen Recherche in der Dokumentation/Wiki sagen, dass es sowas wie "Events pro Element" nicht gibt.

      Dementsprechend bleibt dir nur die Möglichkeit, das in der Funktion selbst abzufragen. Die naive Herangehensweise wäre dann ein if vehicle == Schafter1. Problem ist aber, dass das bei vielen Fahrzeugen und Eventhandlern absolut nicht skaliert (genauer gesagt hättest du <Anzahl von Elementen> * <Anzahl von Events> viele Vergleiche zu tätigen).

      Um einen generischen (d.h. allgemeineren) Ansatz zu fahren, der besser skaliert, könntest du dir ein "Events pro Element"-System selbst bauen.
      Dazu würdest du an einer zentralen Stelle das Event registrieren und dann alle Events in ein Dictionary speichern, bei dem du das Element als Schlüssel und eine Liste von Funktionen (Google: Delegates) als Werte nimmst.

      Wenn das Event dann aufgerufen wird, werden folgende Schritte abgearbeitet:
      1. In Dictionary gucken, ob Eintrag für Element existiert.
      2. Wenn ja, über Liste von Funktionen iterieren und diese aufrufen.
      3. (Wenn Element zerstört wird, korrekt aus Liste entfernen.)
      Die Implementierung davon ist zugegebenerweise schon etwas fortgeschrittener, aber vielleicht macht das ja hier sonst jemand für dich. Wäre eigentlich eine nette Idee für eine Bibliothek.
    • ich denke, das ich dafür noch nicht weit genug bin..


      Habe diesen Code nun wie folgt erstellt, wenn sich jemand auskennt, wäre gut wenn er mir helfen könnte.
      es funktioniert alles, aber Naja die abfragen werden mehr. welche das Problem vom vorposter entspricht..


      C-Quellcode

      1. using GTANetworkAPI;
      2. using reallife.Data;
      3. using reallife.Player;
      4. using System;
      5. using System.Collections.Generic;
      6. using System.Text;
      7. namespace reallife.Fraktion
      8. {
      9. class LCN : Script
      10. {
      11. Vehicle Schafter1 = NAPI.Vehicle.CreateVehicle(VehicleHash.Schafter6, new Vector3(426.6052, -979.0922, 30.70989), 100f, 127, 127, "LCN"); // -- Schafter 6
      12. Vehicle Schafter2 = NAPI.Vehicle.CreateVehicle(VehicleHash.Schafter6, new Vector3(408.2036, -976.2358, 29.41666), 100f, 127, 127, "LCN"); // -- Schafter 6
      13. [ServerEvent(Event.PlayerEnterVehicle)]
      14. public void OnPlayerEnterVehicle(Client client, Vehicle vehicle, sbyte seatID)
      15. {
      16. if (FraktionSystem.HasRank(client, 2))
      17. {
      18. client.SendNotification("~r~1");
      19. }
      20. else
      21. {
      22. if (vehicle == Schafter1)
      23. {
      24. if (seatID == -1)
      25. {
      26. client.SendNotification("~r~1");
      27. client.WarpOutOfVehicle();
      28. }
      29. }
      30. else if (vehicle == Schafter2)
      31. {
      32. if (seatID == -1)
      33. {
      34. client.SendNotification("~r~2");
      35. client.WarpOutOfVehicle();
      36. }
      37. }
      38. }
      39. }
      40. }
      41. }
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von [N]er[d] ()