27.11.2013, 23:36 | #1 (permalink) |
Registriert seit: 27.11.2013
Alter: 49
Beiträge: 10
|
Script funktioniert nicht auf Dedicated Server.
Moin,
ich bin noch recht frisch, was Editing/Scripting angeht und komme derzeit bei folgendem Problem einfach nicht weiter: In einer COOP-Mission sollen die Spieler (maximal 5) am Ende durch einen Heli ausgeflogen werden. Jeder Spieler hat einen Eventhandler (Fired) erhalten, welcher das Script für die Heli-Abholung startet. Initzeile der Spieler: Code:
this addEventHandler ["fired",{_this execvm "chemlight_extraction.sqf"}]; Code:
task4=true; publicVariable "task4"; Code:
private ["_shooter", "_ammotype"]; _shooter = _this Select 0; _ammotype = _this Select 4; if (isServer) then { if (task4) then { sleep 2; switch (_ammotype) do { case "Chemlight_green": { _wp0 = group heli1 addWaypoint [ getpos player, 50]; _wp0 setWaypointType "MOVE"; _wp0 setWaypointStatements ["true", "heli1 land 'GET IN'"]; ... Rest des Scripts ... }; }; }; Auf einem Dedicated Server klappt das leider nicht (Trigger löst aus, aber nach dem Werfen des Lichts passiert nichts). Da das Script ansonsten funktioniert ist es vermutlich ein Lokalitätsproblem. Ich steige aber leider, trotz intensiver Lektüre des BIS Wikis nicht dahinter. Vielleicht mag mir hier ja jemand die Richtung weisen. Danke! |
28.11.2013, 22:41 | #3 (permalink) |
Registriert seit: 27.11.2013
Alter: 49
Beiträge: 10
|
In dem Thema ist die Erklärung der Lokalitäten sehr gut zusammengefasst. Nach mehrfachem Lesen hat es dann irgendwann Klick gemacht. Problem gelöst - Vielen Dank!
Hier noch die Auflösung, falls jemand mit einem ähnlichen Problem hier landen sollte: Das Script "chemlight_extraction.sqf" wurde direkt über den Eventhandler einer Spielereinheit aus deren Init Zeile gestartet: Code:
this addEventHandler ["fired",{_this execvm "chemlight_extraction.sqf"}]; Meine Lösung (vielleicht nicht die beste, aber sie funktioniert): Ich habe den Eventhandler ein gesondertes Script ausführen lassen: Code:
this addEventHandler ["fired",{_this execvm "lichtgeworfen.sqf"}]; Code:
//Script lichtgeworfen.sqf lightshooter = _this Select 0; publicVariable "lightshooter"; lightammotype = _this Select 4; publicVariable "lightammotype"; lightthrown = true; publicVariable "lightthrown"; "lightammotype" ist der Classname der dabei vom Spieler verwendeten "Munition" "lightthrown" ist eine boolesche Variable, die für "wahr" erklärt wird. Alle drei Variablen werden mit publicVariable für den Server bekannt gemacht (und auch für die anderen Clients, wobei das in diesem Fall egal ist). Das eigentliche Heli Script hat einen neuen Namen bekommen (extractcheck.sqf) und wurde bereits zu Missionsbeginn über die init.sqf gestartet: Code:
if (isServer) then {execVM "extractcheck.sqf";}; Das Resultat sieht bei mir so aus: Code:
waitUntil {sleep 2; (task4 && lightthrown)}; while {true} do { sleep 0.1; switch (lightammotype) do { case "Chemlight_green": { _wp0 = group heli1 addWaypoint [ getpos lightshooter, 50]; _wp0 setWaypointType "MOVE"; _wp0 setWaypointStatements ["true", "heli1 land 'GET IN'"]; ... Hier weiterer Code für den Heli ... }; default {}; }; }; Danke nochmal an JeeperCreeper für den Verweis auf den anderen Thread! Die fertige Missi gibt es übrigens über den Steam Workshop, bei interesse: Steam Workshop :: [COOP-5] STARS Midnight Flash (German) Wer mag, darf dort auch gern konstruktives Feedback geben. Ich lerne ja noch... P.S.: Ergänzend möchte ich noch hinzufügen, dass ich den Eventhandler inzwischen aus der Init der Spielereinheiten entfernt habe, da er sonst die ganze Zeit über mit jedem Schuss (egal welche Munition) das "lichtgeworfen.sqf" Script auslöst, was unnötige Rechenlast bedeutet. Stattdessen bekommen die Spieler den Eventhandler nun erst zugewiesen, wenn sie in den Trigger für die Abholzone laufen: Code:
Bei Aktivierung: player addEventHandler ["fired",{_this execvm "lichtgeworfen.sqf"}]; Geändert von Grollig (29.11.2013 um 00:32 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Beta-Patch für OpA erschienen | det99 | Community | 1429 | 18.07.2014 16:51 |
[LINUX] Server probleme | Gonzo1690 | Technische Fragen & Probleme | 1 | 23.09.2013 22:00 |
Script wirklich nur auf Server ausgeführt? | Sol.LrMartyn | Editing & Scripting | 1 | 02.08.2013 14:11 |
Patch 1.59 | Buccs | Community | 83 | 10.06.2011 05:34 |
Arma 2 Server Problem | S@ndviper | Multiplayer | 14 | 15.11.2010 18:45 |