Fahrzeugrespawn nach Fahrzeugbenutzung
Moin,
ich hab ein Problem mit meinem Fahrzeug-Respawn, es funktioniert nur solange wie ich nicht in ein Fahrzeug eingestiegen bin..:stupid: hier die scripte.. init.sqf Code:
arrays = [] execVM "BierAIG\arrays.sqf"; Code:
respawnClasses = ["Truck5tRepair","Truck5tReammo","Truck5tRefuel"]; Code:
if (!isServer) exitWith{}; Code:
if (!isServer) exitWith{}; für nen Fingerzeig warum , wieso , weshalb wäre ich dankbar die .rpt geben nix an Fehlern raus.. Mfg Langer P.S. ich teste aufn Dedi server |
keiner mehr da?:naughty:
also das Problem liegt anscheinend daran das per script erstellte Fahrzeuge Local aufm Server sind , sobald nen Client einsteigt wird des Fahrzeug local auf selbigen, nur wird der Eventhandler nicht "übernommen"... ne Möglichkeit dies zu umgehen wäre es per getin-Eventhandler ,auf dem Client einen zusätzlichen killed-EH "anzubringen", nur sollte darauf geachtet werden diese uU. meheren EH's mit _unit removeAllEventhandlers "killed"; zu entfernen Mfg Langer P.S. falls ich daneben liegen sollte , und hier noch jemand liest, berichtigt mich bitte:zahn: P.P.S. die suche funzt nicht mehr |
Das einfachste aus meiner Sicht wäre, das init-script global auszuführen (so das jeder den eventhandler hat) und dann erst bei Auslösen des Events die Lokalität des Fahrzeugs zu überprüfen anstelle von (!isServer).
Das sollte eigl. vollkommen ausreichen. Mit dem GetIn würde es nur unnötig komplex und fehleranfällig. Das Einzige was zählt, ist auf welchem Rechner das Fahrzeug lokal ist. Wenn z.B. jemand einsteigt und dann vom Server geht, dann wird mit Sicherheit kein GetOut ausgelöst. Das Fahrzeug wäre dann wieder beim Server lokal und dein Script wüsste nichts davon. Dumm gelaufen ^^ |
Code:
if (!(_x in respawnClasses)) then Zudem n Array zu modifizieren über welches du gerade iterierst könnte n Problem sein. Es müsste so heißen: Code:
} forEach vehicle; |
erstmal danke für die antworten :daumen:
@.kju temp_list2 = temp_list2 - [_x]; löscht Fahrzeuge ausm Array welche nicht respawnen sollen, oder was meinst? mmh ich dachte bisher das der codeblock innerhalb von den Klammern, {codeblock;} foreach arraywert; ausgeführt wird, der arraywert nur vor der "erledigung" eingelesen wird und während der Laufzeit unangetastet bleibt ..:komisch: hast aber recht, so: {}foreach vehicles; , is besser..:) @Tajin irgendwie "hängt" sich mein gedankengang dabei auf... ich müsste also ,theoretisch, nur das eigentliche spawnen (und löschen) der Fahrzeuge in if (isServer) then {respawn,löschen}; packen, danach auf allen Clients und dem Server EHs "verteilen".. ?? nur schlägt ja der Server-EH nicht an weils Fahrzeug auf nem Client lokal wird, nachm einsteigen.. heisst Server führt das script net aus.. oder??:omg: ich kann des leider erst heut abend testen... daher theorie :zahn: ich geb Meldung wenn ichs "raushab"... Notfals hau ich dem Server das mit addPublicVariable-EH und publicVariable um die Ohren :schlagen: Mfg Langer |
Liste der Anhänge anzeigen (Anzahl: 1)
so habs nun so umgebaut das es funzt :)
hier die scripte: init.sqf Code:
if (isServer) then Code:
_fahrzeug = _this select 0; Code:
_wert = _this select 0; Code:
_wert = _this select 0; Code:
_wert = _this select 0; Code:
_toter = _this select 0; ein buuuuuh auf EH's die nur lokal laufen :p(beste wäre wählbar ob lokal/global wie bei Variablen) vielen Dank für eure Hilfe:daumen: Mfg Langer P.S. im anhang eine Test.pbo zum anguggn auf nem dedi-server |
Code:
NachrichtvomServer = ""; Code:
"NachrichtVomClient" addPublicVariableEventHandler |
Zum Vergleich / für Ideen das VehicleRespawn.sqf von AAS:
pastebin - collaborative debugging tool |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias