1.0.2.37 DEV

This commit is contained in:
[VB]AWOL
2013-09-28 21:46:51 -05:00
parent 2d65f9e950
commit ff256dd234
19 changed files with 214 additions and 86 deletions

View File

@@ -396,10 +396,10 @@ class CfgLoot {
0.08,
0.08,
0.14,
0.15,
0.17,
0.08,
0.01,
0.07,
0.05,
0.04,
0.04,
0.01
@@ -453,7 +453,7 @@ class CfgLoot {
0.10,
0.10,
0.11,
0.09,
0.10,
0.06,
0.06,
0.06,
@@ -462,7 +462,7 @@ class CfgLoot {
0.06,
0.01,
0.03,
0.05,
0.04,
0.02
}
};

View File

@@ -2777,6 +2777,7 @@ class CfgVehicles {
};
class VaultStorage: Land_A_tent
{
placement = "vertical";
vehicleClass = "Survival";
displayName = "Safe";
model = "\z\addons\dayz_epoch\models\safe.p3d";
@@ -2790,6 +2791,7 @@ class CfgVehicles {
};
class VaultStorageLocked: Land_A_tent
{
placement = "vertical";
vehicleClass = "Survival";
displayName = "Locked Safe";
model = "\z\addons\dayz_epoch\models\safe.p3d";

View File

@@ -9,7 +9,7 @@ class RscIGUIShortcutButton;
class RscGearShortcutButton;
class RscIGUIListNBox;
class RscActiveText;
// class RscStructuredText;
// class RscPictureGUI;
// class RscStructuredTextGUI;
@@ -1775,6 +1775,14 @@ class RscTitles
name = "statusBorder";
onLoad = "uiNamespace setVariable ['DAYZ_GUI_display', _this select 0];";
class ControlsBackground {
class RscStructuredText_1199: RscStructuredText
{
idc = 1199;
x = 0.250001;
y = 0.350001;
w = 0.5;
h = 0.1;
};
class RscPicture_1201: RscPictureGUI
{
idc = 1201;

View File

@@ -0,0 +1,4 @@
player removeAction s_player_showname;
player removeAction s_player_showname1;
s_player_showname = 1;
player setVariable["DZE_display_name",(_this select 3),true];

View File

@@ -2,7 +2,7 @@
DayZ Base Building
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/
private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay"];
private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_ztick"];
if(TradeInprogress) exitWith { cutText ["\n\nBuilding already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
@@ -11,7 +11,7 @@ TradeInprogress = true;
if((count ((position player) nearObjects ["All",30])) >= DZE_BuildingLimit) exitWith {TradeInprogress = false; cutText ["\n\nCannot build, too many objects witin 30m.", "PLAIN DOWN"];};
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_isWater = (surfaceIsWater (getPosATL player)) or dayz_isSwimming;
_isWater = dayz_isSwimming;
_cancel = false;
_reason = "";
_canBuildOnPlot = false;
@@ -111,13 +111,9 @@ if (_hasrequireditem) then {
_counter = 0;
_isOk = true;
// get inital players position
_location1 = getPosATL player;
_dir = getDir player;
_position = player modeltoworld _offset;
_position = [(_position select 0),(_position select 1), (_position select 2)];
// hintSilent str (_position);
// if ghost preview available use that instead
if (_ghost == "") then {
@@ -127,28 +123,27 @@ if (_hasrequireditem) then {
_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
};
_object setDir _dir;
_object setPos _position;
_object attachTo [player];
_object attachTo [player,_offset];
_position = getPosATL _object;
while {_isOk} do {
_zheightchanged = false;
_zheightdirection = "";
_rotate = false;
if (DZE_Q) then {
DZE_Q = false;
DZE_BuildingZ = DZE_BuildingZ + 0.1;
_zheightdirection = "up";
_zheightchanged = true;
};
if (DZE_Z) then {
DZE_Z = false;
DZE_BuildingZ = DZE_BuildingZ - 0.1;
_zheightdirection = "down";
_zheightchanged = true;
};
_rotate = false;
if (DZE_4) then {
_rotate = true;
DZE_4 = false;
@@ -161,21 +156,36 @@ if (_hasrequireditem) then {
};
if(_rotate) then {
_position = player modeltoworld _offset;
_position = [(_position select 0),(_position select 1), (_position select 2)+DZE_BuildingZ];
_object setDir _dir;
_object setPos _position;
_object setPosATL _position;
diag_log format["DEBUG Rotate BUILDING POS: %1", _position];
};
if(_zheightchanged) then {
detach _object;
_position = player modeltoworld _offset;
_position = [(_position select 0),(_position select 1), (_position select 2)+DZE_BuildingZ];
_position = getPosATL _object;
// make z height stick to ticks
_ztick = (round((_position select 2)*10)/10);
if(_zheightdirection == "up") then {
_position = [(_position select 0),(_position select 1), (_ztick+0.1)];
};
if(_zheightdirection == "down") then {
_position = [(_position select 0),(_position select 1), (_ztick-0.1)];
};
_object setDir (getDir _object);
_object setPos _position;
_object setPosATL _position;
diag_log format["DEBUG Change BUILDING POS: %1", _position];
_object attachTo [player];
diag_log format["DEBUG AChange BUILDING POS: %1", _position];
};
cutText ["Planning construction: PgUp = raise, PgDn = lower, Q or E = flip 180, and Space-Bar to build.", "PLAIN DOWN"];
@@ -188,6 +198,8 @@ if (_hasrequireditem) then {
_isOk = false;
detach _object;
_dir = getDir _object;
_position = getPosATL _object;
diag_log format["DEBUG BUILDING POS: %1", _position];
deleteVehicle _object;
};
@@ -225,25 +237,6 @@ if (_hasrequireditem) then {
};
};
_classname = _classnametmp;
// Start Build
_tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
_tmpbuilt setdir _dir;
// Get position based on player
_location = player modeltoworld _offset;
_location = [(_location select 0),(_location select 1),(_position select 2)];
//hintSilent str (_location);
_tmpbuilt setpos _location;
// No building on roads
if (isOnRoad _location) then { _cancel = true; _reason = "Cannot build on a road."; };
@@ -253,6 +246,19 @@ if (_hasrequireditem) then {
if(!_cancel) then {
_classname = _classnametmp;
// Start Build
_tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
_tmpbuilt setdir _dir;
// Get position based on object
_location = _position;
_tmpbuilt setPosATL _location;
cutText [format["Placing %1, move to cancel.",_text], "PLAIN DOWN"];
_limit = 3;

View File

@@ -6,6 +6,8 @@ scriptName "Functions\misc\fn_damageActions.sqf";
************************************************************/
private ["_weaponName","_action","_turret","_weapons","_assignedRole","_action1","_action2","_x","_vehicle","_unit","_vehType","_displayName","_ammoQty","_ammoSerial","_weapon","_magTypes","_type","_typeVeh","_index","_inventory","_unitTo","_isEngineer","_vehClose","_hasVehicle","_unconscious","_lowBlood","_injured","_inPain","_legsBroke","_armsBroke","_charID","_friendlies","_playerMagazines","_hasBandage","_hasEpi","_hasMorphine","_hasBlood","_hasToolbox","_hasJerry","_hasJerryE","_hasWire","_hasPainkillers","_unconscious_crew","_patients","_crew","_menClose","_hasPatient","_inVehicle","_isClose","_bag","_classbag","_isDisallowRefuel","_hasBarrel","_hasBarrelE"];
disableSerialization;
if (TradeInprogress) exitWith {}; // Do not allow if any script is running.
_menClose = cursorTarget;
@@ -41,10 +43,10 @@ if (_inVehicle) then {
r_player_lastSeat = [];
};
if (_hasPatient and !r_drag_sqf and !r_action and !_inVehicle and !r_player_unconscious and _isClose) then {
if (!isNull _menClose and _hasPatient and !r_drag_sqf and !r_action and !_inVehicle and !r_player_unconscious and _isClose) then {
_unit = cursorTarget;
_isDisallowRefuel = typeOf _unit in ["M240Nest_DZ"];
player reveal _unit;
// player reveal _unit;
_vehClose = (getPosATL player) nearEntities [["Car","Tank","Helicopter","Plane","StaticWeapon","Ship"],5]; //nearestObjects [player, ["Car","Tank","Helicopter","Plane","StaticWeapon","Ship"], 5];
_hasVehicle = ({alive _x} count _vehClose > 0);
_unconscious = _unit getVariable ["NORRN_unconscious", false];

View File

@@ -2,8 +2,7 @@ disableSerialization;
_display = (_this select 0);
_close = {locked _x} count (nearestObjects [player, ["AllVehicles"], 5]) > 0;
cutText ["Cannot access gear on a locked vehicle." , "PLAIN DOWN"];
if(_close) then {
cutText ["Cannot access gear on a locked vehicle." , "PLAIN DOWN"];
_display closeDisplay 1;
};

View File

@@ -37,6 +37,11 @@ if (_canPickLight and !dayz_hasLight and !_isPZombie) then {
s_player_removeflare = -1;
};
if (s_player_showname < 0) then {
s_player_showname = player addAction ["Display Name (Yes)", "\z\addons\dayz_code\actions\display_name.sqf",true, 5, true, false, "",""];
s_player_showname1 = player addAction ["Display Name (No)", "\z\addons\dayz_code\actions\display_name.sqf",false, 5, true, false, "",""];
};
if(_isPZombie) then {
if (s_player_callzombies < 0) then {
s_player_callzombies = player addAction ["Raise Horde", "\z\addons\dayz_code\actions\call_zombies.sqf",player, 5, true, false, "",""];

View File

@@ -154,5 +154,73 @@ if(_humanity != dayz_lastHumanity) then {
};
*/
/*
Opt-in tag system with friend tagging
*/
_targetControl = _display displayCtrl 1199;
_string = "";
_humanityTarget = cursorTarget;
if (!isNull _humanityTarget and isPlayer _humanityTarget and alive _humanityTarget) then {
_distance = (player distance _humanityTarget);
if (_distance < DZE_HumanityTargetDistance) then {
_size = (1-(floor(_distance/5)*0.1)) max 0.1;
// Display name if player opt-in or if friend
_friendlies = player getVariable ["friendlies", []];
_charID = player getVariable ["CharacterID", "0"];
_rcharID = _humanityTarget getVariable ["CharacterID", "0"];
_rfriendlies = _humanityTarget getVariable ["friendlies", []];
_rfriendlyTo = _humanityTarget getVariable ["friendlyTo", []];
if ((_rcharID in _friendlies) and (_charID in _rfriendlies)) then {
if (!(_charID in _rfriendlyTo)) then {
// diag_log format["IS FRIENDLY: %1", _player];
_rfriendlyTo set [count _rfriendlyTo, _charID];
_humanityTarget setVariable ["friendlyTo", _rfriendlyTo, true];
titleText [format["You and %1 are now tagged as friendlies.", (name _humanityTarget)], "PLAIN DOWN"];
};
// <br /><t %2 align='center' size='0.7'>Humanity: %3</t>
_color = "color='#339933'";
_string = format["<t %2 align='center' size='%3'>%1</t>",(name _humanityTarget),_color,_size];
} else {
// Humanity checks
_humanity = _humanityTarget getVariable ["humanity",0];
_color = "color='#ffffff'";
if(_humanity < -5000) then {
_color = "color='#ff0000'";
} else {
if(_humanity > 5000) then {
_color = "color='#3333ff'";
};
};
if(_humanityTarget getVariable ["DZE_display_name", false]) then {
_string = format["<t %2 align='center' size='%3'>%1</t>",(name _humanityTarget),_color,_size];
};
};
};
};
// update gui if changed
if (dayz_humanitytarget != _string) then {
_targetControl ctrlSetStructuredText (parseText _string);
dayz_humanitytarget = _string;
};
_array = [_foodVal,_thirstVal];
_array

View File

@@ -5,9 +5,13 @@ _vehicle = (vehicle player);
_targets = _unit getVariable ["targets",[]];
if (!dayz_zedsAttackVehicles and !(_vehicle in _targets)) exitWith {};
if (!dayz_zedsAttackVehicles and !(_vehicle in _targets)) exitWith {
//diag_log ("not attacking vehicle" + str(_vehicle));
};
if ((speed _vehicle > 10)) exitWith {};
if ((speed _vehicle > 10)) exitWith {
//diag_log ("too fast abort attack" + str(_vehicle));
};
//Do the attack
if (r_player_unconscious && _vehicle == player && _type == "zombie") then {
@@ -23,7 +27,14 @@ if (r_player_unconscious && _vehicle == player && _type == "zombie") then {
};
_dir = [_unit,player] call BIS_Fnc_dirTo;
_unit setDir _dir;
_unit playMove _move;
// _unit playMove _move;
if (local _unit) then {
_unit switchMove _move;
} else {
[objNull, _unit, rSwitchMove, _move] call RE;
};
//Wait
sleep 0.3;

View File

@@ -8,38 +8,46 @@ _attacked = false;
_type = "zombie";
if (alive _x && _continue) then {
_dist = (_x distance _refObj);
_chance = 1;
if ((_dist < dayz_areaAffect) and !(animationState _x == "ZombieFeed")) then {
//diag_log ("within attack range: " + str(_x));
[_x,"attack",(_chance),true] call dayz_zombieSpeak;
//perform an attack
_last = _x getVariable["lastAttack",0];
_entHeight = (getPosATL _x) select 2;
_delta = _pHeight - _entHeight;
if ( ((time - _last) > 1) and ((_delta < 1.5) and (_delta > -1.5)) ) then
{
[_x, _type] spawn player_zombieAttack;
if ( ((time - _last) > 1) and ((_delta < 1.5) and (_delta > -1.5)) ) then
{
//diag_log ("perform attack: " + str(_x));
[_x, _type] spawn player_zombieAttack;
_x setVariable["lastAttack",time];
};
_attacked = true;
} else {
if (speed _x < 4) then {
[_x,"idle",(_chance + 4),true] call dayz_zombieSpeak;
//diag_log ("idle: " + str((_chance + 4)));
} else {
[_x,"chase",(_chance + 3),true] call dayz_zombieSpeak;
//diag_log ("chase: " + str((_chance + 3)));
};
};
//Noise Activation
_targets = _x getVariable ["targets",[]];
if (!(_refObj in _targets)) then {
if (!(_refObj in _targets) and !isNull _refObj) then {
if (_dist < DAYZ_disAudial) then {
if (DAYZ_disAudial > 80) then {
_targets set [count _targets, (driver _refObj)];
_x setVariable ["targets",_targets,true];
//diag_log ("45: " + str(_targets));
} else {
@@ -48,12 +56,14 @@ _attacked = false;
{
_targets set [count _targets,(driver _refObj)];
_x setVariable ["targets",_targets,true];
//diag_log ("54: " + str(_targets));
}
else
{
if (_dist < (DAYZ_disAudial / 2)) then
{
_targets set [count _targets,(driver _refObj)];
//diag_log ("61: " + str(_targets));
_x setVariable ["targets",_targets,true];
};
};
@@ -62,7 +72,7 @@ _attacked = false;
};
//Sight Activation
_targets = _x getVariable ["targets",[]];
if (!(_refObj in _targets)) then {
if (!(_refObj in _targets) and !isNull _refObj) then {
if (_dist < DAYZ_disVisual) then {
_tPos = (getPosASL _refObj);
@@ -70,6 +80,7 @@ _attacked = false;
//_eyeDir = _x call dayz_eyeDir;
_eyeDir = direction _x;
_inAngle = [_zPos,_eyeDir,30,_tPos] call fnc_inAngleSector;
//diag_log ("Angle Check: " + str(_inAngle));
if (_inAngle) then {
//LOS check

View File

@@ -41,7 +41,7 @@ class CfgMods
hidePicture = 0;
hideName = 0;
action = "http://www.dayzepoch.com";
version = "1.0.2.36";
version = "1.0.2.37";
hiveVersion = 0.96; //0.93
};
};
@@ -876,6 +876,8 @@ class CfgBuildingLoot {
{"G36A_camo","weapon"},
{ "Pecheneg_DZ","weapon"},
{"100Rnd_762x54_PK","magazine"},
{"2000Rnd_762x51_M134","magazine"},
};
itemChance[] = {
0.02,
@@ -888,7 +890,7 @@ class CfgBuildingLoot {
0.02,
0.01,
0.02,
0.4,
0.39,
0.19,
0.05,
0.01,
@@ -900,6 +902,7 @@ class CfgBuildingLoot {
0.01,
0.01,
0.01,
0.01,
};
};
class HeliCrash_No50s: Default {
@@ -929,7 +932,8 @@ class HeliCrash_No50s: Default {
//{"G36_C_SD_camo","weapon"},
{"G36A_camo","weapon"},
{"G36K_camo","weapon"},
{"100Rnd_762x54_PK","magazine"}
{"100Rnd_762x54_PK","magazine"},
{"2000Rnd_762x51_M134","magazine"},
};
itemChance[] = {
0.01,
@@ -940,7 +944,7 @@ class HeliCrash_No50s: Default {
0.02,
0.01,
0.02,
0.44,
0.43,
0.23,
0.04,
0.01,
@@ -952,6 +956,7 @@ class HeliCrash_No50s: Default {
//0.01,
0.01,
0.01,
0.01,
0.01
};
};
@@ -1197,6 +1202,7 @@ class HeliCrash_No50s: Default {
{"100Rnd_762x54_PK","magazine"},
{ "militaryclothes","single" },
{"NVGoggles","weapon"},
{"2000Rnd_762x51_M134","magazine"},
};
itemChance[] = {
0.01,
@@ -1236,7 +1242,8 @@ class HeliCrash_No50s: Default {
0.05,
0.03,
0.08,
0.35,
0.34,
0.01,
0.01,
0.01,
0.01,
@@ -2195,6 +2202,7 @@ class HeliCrash_No50s: Default {
{ "","militaryclothes" },
{"WeaponHolder_ItemMachete", "object"},
{ "SCAR_H_LNG_Sniper_SD","weapon" },
{"2000Rnd_762x51_M134","magazine"},
};
itemChance[] = {
0.03,
@@ -2239,7 +2247,7 @@ class HeliCrash_No50s: Default {
0.01,
0.05,
0.05,
0.14,
0.13,
0.01,
0.01,
0.01,
@@ -2248,6 +2256,7 @@ class HeliCrash_No50s: Default {
0.01,
0.05,
0.02,
0.01,
0.01
};
};

View File

@@ -55,7 +55,6 @@ if (!isDedicated) then {
player_throwObject = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_throwObject.sqf";
player_alertZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_alertZombies.sqf";
player_fireMonitor = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\fire_monitor.sqf";
player_friendliesCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_friendliesCheck.sqf";
fn_gearMenuChecks = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_gearMenuChecks.sqf";
//Objects

View File

@@ -152,6 +152,7 @@ boil_tin_cans = [
];
dayz_combination = "";
dayz_humanitytarget = "";
dayz_combatLog = "";
canRoll = true;
@@ -204,6 +205,7 @@ dayz_resetSelfActions = {
s_player_fillfuel = -1;
s_player_grabflare = -1;
s_player_callzombies = -1;
s_player_showname = -1;
s_player_debuglootpos = -1;
s_player_pzombiesattack = -1;
s_player_pzombiesvision = -1;
@@ -432,6 +434,9 @@ if(isNil "DZE_teleport") then {
if(isNil "DZE_BuildingLimit") then {
DZE_BuildingLimit = 150;
};
if(isNil "DZE_HumanityTargetDistance") then {
DZE_HumanityTargetDistance = 25;
};
/*
@@ -491,6 +496,9 @@ if(isServer) then {
if(isNil "EpochEvents") then {
EpochEvents = [];
};
if(isNil "DZE_vehicleAmmo") then {
DZE_vehicleAmmo = 0;
};
dayz_flyMonitor = []; //used for monitor flies
DZE_FlyWorkingSet = [];

View File

@@ -242,19 +242,25 @@ fnc_usec_damageBleed = {
};
fnc_usec_recoverUncons = {
//same actions as in the EH, just timed differently
player setVariable ["NORRN_unconscious", false, true];
player setVariable ["unconsciousTime", 0, true];
player setVariable ["NORRN_unconscious",false,true];
player setVariable ["unconsciousTime",0,true];
player setVariable ["USEC_isCardiac",false,true];
player setVariable["medForceUpdate",true,true];
// player setVariable["medForceUpdate",true,true];
/*
sleep 1;
usecEpi = [player,player];
publicVariable "usecEpi";
*/
r_player_unconscious = false;
sleep 1;
r_player_cardiac = false;
r_player_handler1 = false;
if(animationState player != "AmovPpneMstpSnonWnonDnon_healed") then {
player switchMove "AmovPpneMstpSnonWnonDnon_healed";
};
sleep 1;
disableUserInput false;
[objNull,player,rSwitchMove,"AinjPpneMstpSnonWnonDnon"] call RE;
player switchMove "AinjPpneMstpSnonWnonDnon";
player playMoveNow "AmovPpneMstpSnonWnonDnon_healed";
};

View File

@@ -1237,13 +1237,6 @@ class FSM
" };" \n
"};" \n
"" \n
"dayz_friendliesCheck = [] spawn {" \n
" while {true} do {" \n
" call player_friendliesCheck;" \n
" sleep 5;" \n
" };" \n
"};" \n
"" \n
"dayz_Totalzedscheck = [] spawn {" \n
" while {true} do {" \n
" dayz_maxCurrentZeds = {alive _x} count entities ""zZombie_Base"";" \n

View File

@@ -79,8 +79,7 @@ _key call server_hiveWrite;
clearWeaponCargoGlobal _object;
clearMagazineCargoGlobal _object;
_object allowDamage false;
_object setVehicleAmmo DZE_vehicleAmmo;
_object setVariable ["ObjectID", _oid, true];
@@ -105,8 +104,4 @@ _key call server_hiveWrite;
publicVariable "dayzVehicleInit";
diag_log ("PUBLISH: Created " + (_class) + " with ID " + str(_uid));
sleep 1.0;
_object allowDamage true;
};

View File

@@ -279,6 +279,7 @@ spawn_vehicles = {
clearWeaponCargoGlobal _veh;
clearMagazineCargoGlobal _veh;
_veh setVehicleAmmo DZE_vehicleAmmo;
// Add 0-3 loots to vehicle using random cfgloots
_num = floor(random 4);

View File

@@ -164,6 +164,7 @@ if (isServer and isNil "sm_done") then {
clearWeaponCargoGlobal _object;
clearMagazineCargoGlobal _object;
_object setVehicleAmmo DZE_vehicleAmmo;
if ((typeOf _object) in dayz_allowedObjects) then {
_object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}];