diff --git a/addons/main/RULES/fn_clientInit.sqf b/addons/main/RULES/fn_clientInit.sqf index 404b2b29..f10e1f14 100644 --- a/addons/main/RULES/fn_clientInit.sqf +++ b/addons/main/RULES/fn_clientInit.sqf @@ -3,7 +3,7 @@ * Initialisierung Rules System * * Author: -* Lord-MDB +* Lord-MDB, form * * Arguments: * None @@ -38,21 +38,32 @@ { [] call FUNC(setup_classnames); - player addEventHandler ["Take", {_this call FUNC(weaponCheck)}]; + // UAV Drohnenstation + [] call FUNC(uav); - // EH für Positionssperre in Fahrzeugen beim Einsteigen - player addEventHandler ["GetInMan", + // Hint Meldung das Zuschauerslot besetzt wurde. + if ((player isKindOf "VirtualSpectator_F") or (player isKindOf "ace_spectator_virtual")) then { - /* - unit: Object - Unit the event handler is assigned to - position: String - Can be either "driver", "gunner" or "cargo" - vehicle: Object - Vehicle the unit entered - turret: Array - turret path - */ - params ["_unit", "_pos", "_vec", "_turret"]; + private _txt = format["%1 hat einen Zuschauerslot ausgewählt.", name player]; + [_txt] remoteExecCall ["hint", 0, false]; + }; - if (!(OPT_SECTORCONTROL_trainingon)) then + if (!(OPT_SECTORCONTROL_trainingon)) then + { + // EH für Waffencheck + player addEventHandler ["Take", {_this call FUNC(weaponCheck)}]; + + // EH für Positionssperre in Fahrzeugen beim Einsteigen + player addEventHandler ["GetInMan", { + /* + unit: Object - Unit the event handler is assigned to + position: String - Can be either "driver", "gunner" or "cargo" + vehicle: Object - Vehicle the unit entered + turret: Array - turret path + */ + params ["_unit", "_pos", "_vec", "_turret"]; + if (!(typeOf _unit in GVAR(pilots))) then { if (_vec isKindOf "Air" && _pos in GVAR(blockedVehiclePositions_air)) then @@ -66,10 +77,7 @@ }; }; }; - }; - if (!(OPT_SECTORCONTROL_trainingon)) then - { if (!(typeOf _unit in GVAR(crew))) then { if (_pos in GVAR(blockedVehiclePositions_veh)) then @@ -83,21 +91,18 @@ }; }; }; - }; - }]; - - // EH für Positionssperre in Fahrzeugen bei Platztausch - player addEventHandler ["SeatSwitchedMan", - { - /* - unit1: Object - Unit switching seat. - unit2: Object - Unit with which unit1 is switching seat. - vehicle: Object - Vehicle where switching seats is taking place. - */ - params ["_unit1", "_unit2", "_vec"]; + }]; - if (!(OPT_SECTORCONTROL_trainingon)) then + // EH für Positionssperre in Fahrzeugen bei Platztausch + player addEventHandler ["SeatSwitchedMan", { + /* + unit1: Object - Unit switching seat. + unit2: Object - Unit with which unit1 is switching seat. + vehicle: Object - Vehicle where switching seats is taking place. + */ + params ["_unit1", "_unit2", "_vec"]; + if (!(typeOf _unit1 in GVAR(pilots))) then { if (_vec isKindOf "Air" && (assignedVehicleRole _unit1 select 0) in GVAR(blockedVehiclePositions_air)) then @@ -125,146 +130,138 @@ }; }; }; - }; - }]; + }]; - // EH für Sprengmeister - player addEventHandler ["FiredMan", - { - /* - 0 unit: Object - Unit the event handler is assigned to (the instigator) - 1 weapon: String - Fired weapon - 2 muzzle: String - Muzzle that was used - 3 mode: String - Current mode of the fired weapon - 4 ammo: String - Ammo used - 5 magazine: String - magazine name which was used - 6 projectile: Object - Object of the projectile that was shot out - 7 vehicle: Object - Vehicle, if weapon is vehicle weapon, otherwise objNull - */ - if ((_this select 1 == "Put") and !(typeOf player in GVAR(pioniers)) and !(((_this select 5) isEqualTo "SatchelCharge_Remote_Mag") or ((_this select 5) isEqualTo "DemoCharge_Remote_Mag") or ((_this select 5) isEqualTo "ClaymoreDirectionalMine_Remote_Mag"))) then + // EH für Sprengmeister + player addEventHandler ["FiredMan", { - // lösche Mine - deleteVehicle (_this select 6); - // gib Spieler Mine zurück - player addMagazine (_this select 5); - // Warnhinweis - private _txt = MLOC(PLACE_MINE); - private _header = MLOC(RULE_VIOLATION); - hint format ["%1\n\n%2", _header, _txt]; - }; - }]; - - // UAV Drohenstation kontrolle - // [] call FUNC(uav); - - // Hint Meldung das Zuschauerslot besetzt wurde. - if ((player isKindOf "VirtualSpectator_F") or (player isKindOf "ace_spectator_virtual")) then - { - private _txt = format["Spieler %1 hat einen Zuschauerslot ausgewählt.", name player]; - [_txt] remoteExecCall ["hint", 0, false]; - }; + /* + 0 unit: Object - Unit the event handler is assigned to (the instigator) + 1 weapon: String - Fired weapon + 2 muzzle: String - Muzzle that was used + 3 mode: String - Current mode of the fired weapon + 4 ammo: String - Ammo used + 5 magazine: String - magazine name which was used + 6 projectile: Object - Object of the projectile that was shot out + 7 vehicle: Object - Vehicle, if weapon is vehicle weapon, otherwise objNull + */ + if ((_this select 1 == "Put") and !(typeOf player in GVAR(pioniers)) and !(((_this select 5) isEqualTo "SatchelCharge_Remote_Mag") or ((_this select 5) isEqualTo "DemoCharge_Remote_Mag") or ((_this select 5) isEqualTo "ClaymoreDirectionalMine_Remote_Mag"))) then + { + // lösche Mine + deleteVehicle (_this select 6); + // gib Spieler Mine zurück + player addMagazine (_this select 5); + // Warnhinweis + private _txt = MLOC(PLACE_MINE); + private _header = MLOC(RULE_VIOLATION); + hint format ["%1\n\n%2", _header, _txt]; + }; + }]; - // Regelmäßig checken ob sich der Spieler außerhalb der Karte aufhält (Livonia = 12800 x 12800) - [{ - private _posX = (getPos player) select 0; - private _posY = (getPos player) select 1; - if ((_posX < 0) or (_posX > 12800) or (_posY < 0) or (_posY > 12800)) then - { - player setDamage 1; - [MLOC(PLAYER_OUT_OF_MAP)] remoteExecCall ["hint", -2]; - }; - }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + // Regelmäßig checken ob sich der Spieler außerhalb der Karte aufhält + [{ + private _mapSize = worldSize; + private _pos = getPos player; + private _posX = _pos select 0; + private _posY = _pos select 1; + if ((_posX < 0) or (_posX > _mapSize) or (_posY < 0) or (_posY > _mapSize)) then + { + player setDamage 1; + [MLOC(PLAYER_OUT_OF_MAP)] remoteExecCall ["hint", -2]; + }; + }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); - // Regelmäßig checken ob sich der Spieler in einem verbotenen Bereich in der nähe einer Feindlichen Basis aufhält - switch OPT_GELDZEIT_Fraktionauswahl do - { - case "AAFvsCSAT": + // Regelmäßig checken ob sich der Spieler in einem verbotenen Bereich in der nähe einer Feindlichen Basis aufhält + switch OPT_GELDZEIT_Fraktionauswahl do { - switch playerSide do + case "AAFvsCSAT": { - case east: + switch playerSide do { - [{ - if (((player distance2D getMarkerPos "AAF_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "AAF_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then - { - player setDamage 1; - [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; - }; - }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); - }; + case east: + { + [{ + if (((player distance2D getMarkerPos "AAF_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "AAF_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then + { + player setDamage 1; + [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; + }; + }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + }; - case independent: - { - [{ - if (((player distance2D getMarkerPos "CSAT_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "CSAT_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then - { - player setDamage 1; - [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; - }; - }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + case independent: + { + [{ + if (((player distance2D getMarkerPos "CSAT_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "CSAT_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then + { + player setDamage 1; + [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; + }; + }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + }; }; }; - }; - case "NATOvsCSAT": - { - switch playerSide do + case "NATOvsCSAT": { - case east: + switch playerSide do { - [{ - if (((player distance2D getMarkerPos "NATO_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "NATO_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then - { - player setDamage 1; - [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; - }; - }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); - }; + case east: + { + [{ + if (((player distance2D getMarkerPos "NATO_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "NATO_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then + { + player setDamage 1; + [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; + }; + }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + }; - case west: - { - [{ - if (((player distance2D getMarkerPos "CSAT_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "CSAT_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then - { - player setDamage 1; - [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; - }; - }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + case west: + { + [{ + if (((player distance2D getMarkerPos "CSAT_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "CSAT_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then + { + player setDamage 1; + [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; + }; + }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + }; }; }; - }; - case "NATOvsAAF": - { - switch playerSide do + case "NATOvsAAF": { - case independent: + switch playerSide do { - [{ - if (((player distance2D getMarkerPos "NATO_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "NATO_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then - { - player setDamage 1; - [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; - }; - }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); - }; + case independent: + { + [{ + if (((player distance2D getMarkerPos "NATO_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "NATO_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then + { + player setDamage 1; + [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; + }; + }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + }; - case west: - { - [{ - if (((player distance2D getMarkerPos "AAF_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "AAF_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then - { - player setDamage 1; - [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; - }; - }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + case west: + { + [{ + if (((player distance2D getMarkerPos "AAF_T_Zone1") < MIN_DISTANCE_TO_ENEMYBASE) or ((player distance2D getMarkerPos "AAF_T_Zone2") < MIN_DISTANCE_TO_ENEMYBASE)) then + { + player setDamage 1; + [MLOC(BASE_DISTANCE)] remoteExecCall ["hint", -2]; + }; + }, INTERVAL_DISTANCE_CHECK] call CFUNC(addPerFrameHandler); + }; }; }; - }; - default - { - ERROR_LOG("RulesClientInit: Fehlerhafte Datenübergabe - Keine Fraktionauswahl erkannt"); + default + { + ERROR_LOG("RulesClientInit: Fehlerhafte Datenübergabe - Keine Fraktionauswahl erkannt"); + }; }; - }; + }; // if (!(OPT_SECTORCONTROL_trainingon)) }] call CFUNC(addEventhandler); diff --git a/addons/main/SECTORCONTROL/fn_clientinitplayereh.sqf b/addons/main/SECTORCONTROL/fn_clientinitplayereh.sqf index 32b01cb5..7cb8ecf8 100644 --- a/addons/main/SECTORCONTROL/fn_clientinitplayereh.sqf +++ b/addons/main/SECTORCONTROL/fn_clientinitplayereh.sqf @@ -14,9 +14,9 @@ */ #include "macros.hpp" -/* EH für das Versetzen der Flaggen im Trainingsmodus */ if (GVAR(trainingon)) then { + // EH für das Versetzen der Flaggen im Trainingsmodus // use stackedEH, cannot override default behavior [QGVAR(move_flag), "onMapSingleClick", { @@ -64,9 +64,12 @@ if (GVAR(trainingon)) then }] call BIS_fnc_addStackedEventHandler; player addAction [("" + ("Teleport") + ""), {[] call FUNC(teleport)}, [], 0, false, true, '', "alive _target"]; + player addAction ["Virtual Arsenal", {["Open", true] spawn BIS_fnc_arsenal;}, [], 5, false, true]; - ["Respawn", { + ["Respawn", + { player addAction [("" + ("Teleport") + ""), {[] call FUNC(teleport)}, [], 0, false, true, '', "alive _target"]; + player addAction ["Virtual Arsenal", {["Open", true] spawn BIS_fnc_arsenal;}, [], 5, false, true]; }] call CFUNC(addEventhandler); }; diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index 1cc1e5dc..328405fc 100755 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -2,7 +2,7 @@ #define MAJOR 1 #define MINOR 9 #define PATCHLVL 1 -#define BUILD 152 +#define BUILD 153 #ifdef VERSION