V64 Bug-fix-tastic

This commit is contained in:
second_coming 2016-08-27 14:15:35 +01:00
parent bb6c88d1f5
commit b25ca8a81c
8 changed files with 75 additions and 34 deletions

View File

@ -1,3 +1,8 @@
=================================================================================
V64 (27-08-2016)
=================================================================================
Another bug fixed in the repair vehicle eventhandler
=================================================================================
V63 (26-08-2016)
=================================================================================

View File

@ -4,7 +4,7 @@ class CfgPatches
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
a3_exile_occupation_version = "V63 (26-08-2016)";
a3_exile_occupation_version = "V64 (27-08-2016)";
requiredAddons[] = {"a3_dms"};
author[]= {"second_coming"};
};

View File

@ -109,8 +109,8 @@ SC_staticSurvivors = [ //[[pos],ai count,radius,search buildings]
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SC_colourTransport = true; // true if you want the public transport coloured
SC_secureTransport = true; // true if you want the public transport and pilot to be indestructible
SC_occupyTransportClass = ["Exile_Chopper_Hummingbird_Green"]; // to always use the same vehicle, specify one option only
SC_secureTransport = true; // true if you want the public transport and pilot to be indestructible
SC_occupyTransportClass = ["Exile_Chopper_Orca_BlackCustom"]; // to always use the same vehicle, specify one option only
SC_occupyTransportStartPos = []; // if empty defaults to map centre
@ -401,13 +401,14 @@ SC_BanditBackpack = ["B_HuntingBackpack","B_Kitbag_cbr","B_Kitbag_mca
if (worldName == 'Napf' AND SC_useMapOverrides) then
{
SC_maxAIcount = 120;
SC_useApexClasses = false;
};
if (worldName == 'Chernarus' AND SC_useMapOverrides) then
{
SC_maxAIcount = 120;
SC_useApexClasses = false;
};
if (worldName == 'Tanoa' AND SC_useMapOverrides) then
@ -450,21 +451,21 @@ if (SC_debug) then
SC_extendedLogging = true;
SC_processReporter = true;
SC_mapMarkers = true;
SC_occupyPlaces = true;
SC_occupyVehicle = false;
SC_occupyMilitary = true;
SC_occupyPlaces = false;
SC_occupyVehicle = true;
SC_occupyMilitary = false;
SC_occupyRandomSpawn = true;
SC_occupyStatic = false;
SC_occupySky = true;
SC_occupySky = false;
SC_occupySea = false;
SC_occupyTraders = true;
SC_occupyTraders = false;
SC_occupyTransport = true;
SC_occupyLootCrates = true;
SC_occupyHeliCrashes = true;
SC_maxAIcount = 100;
SC_maxNumberofVehicles = 5;
SC_occupyLootCrates = false;
SC_occupyHeliCrashes = false;
SC_maxAIcount = 150;
SC_maxNumberofVehicles = 10;
SC_maxNumberofBoats = 5;
SC_maxNumberofHelis = 5;
SC_maxNumberofHelis = 1;
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -9,6 +9,8 @@ if(SC_extendedLogging) then
_deadDriver = _this select 0;
_vehicle = _deadDriver getVariable "SC_drivenVehicle";
_vehicle removeAllMPEventHandlers "mphit";
_vehicle setVariable ["SC_repairStatus",false,true];
if(SC_debug) then
{

View File

@ -4,10 +4,17 @@
_vehicle = _this select 0;
_repairStatus = _vehicle getVariable "SC_repairStatus";
_logDetail = format ["[OCCUPATION:repairVehicle]:: Vehicle %1 _repairStatus %2",_vehicle, _repairStatus];
[_logDetail] call SC_fnc_log;
if(_repairStatus) exitWith {};
// Mark the vehicle as currently being repaired
_vehicle setVariable ["SC_repairStatus",true,true];
_vehicle removeAllMPEventHandlers "mphit";
_logDetail = format ["[OCCUPATION:repairVehicle]:: Starting repair check Vehicle %1 _repairStatus %2",_vehicle, _repairStatus];
[_logDetail] call SC_fnc_log;
_vehicleDamage = damage _vehicle;
_damagedWheels = 0;
@ -31,7 +38,10 @@ if(isNil "_assignedDriver") then
_groupMembers = units _group;
_assignedDriver = _groupMembers call BIS_fnc_selectRandom;
_logDetail = format ["[OCCUPATION:repairVehicle]:: Selected replacement driver for %1 _repairStatus %2",_vehicle, _assignedDriver];
[_logDetail] call SC_fnc_log;
_assignedDriver removeAllMPEventHandlers "mphit";
_assignedDriver disableAI "TARGET";
_assignedDriver disableAI "AUTOTARGET";
@ -75,13 +85,16 @@ if ((_vehicle getHitPointDamage "HitFuel") > 0) then { _fueltankDamage = true; }
if(_wheelDamage OR _engineDamage OR _fueltankDamage) then
{
_logDetail = format ["[OCCUPATION:repairVehicle]:: Unit %2 repairing vehicle at %1",time,_assignedDriver];
[_logDetail] call SC_fnc_log;
[_vehicle,_assignedDriver ] spawn
{
_vehicle = _this select 0;
_driver = _this select 1;
_vehicle setVariable ["SC_repairStatus",true,true];
_repairStatus = _vehicle getVariable "SC_repairStatus";
_logDetail = format ["[OCCUPATION:repairVehicle]:: Unit %2 repairing(%3) vehicle at %1",time,_driver,_repairStatus];
[_logDetail] call SC_fnc_log;
_vehicle forceSpeed 0;
sleep 0.2;
@ -123,18 +136,22 @@ if(_wheelDamage OR _engineDamage OR _fueltankDamage) then
_wp setWaypointType "GETIN";
sleep 5;
_tempLocation = _vehicle getVariable "SC_vehicleSpawnLocation";
_originalSpawnLocation = _tempLocation select 0;
_radius = _tempLocation select 1;
_driver action ["movetodriver", _vehicle];
_vehicle forceSpeed -1;
[_group, _originalSpawnLocation, _radius] call bis_fnc_taskPatrol;
_group setBehaviour "SAFE";
_group setCombatMode "RED";
_driver enableAI "MOVE";
_driver enableAI "FSM";
if(!isNil "_tempLocation") then
{
_originalSpawnLocation = _tempLocation select 0;
_radius = _tempLocation select 1;
[_group, _originalSpawnLocation, _radius] call bis_fnc_taskPatrol;
};
_driver action ["movetodriver", _vehicle];
_group setBehaviour "SAFE";
_group setCombatMode "RED";
_driver enableAI "MOVE";
_driver enableAI "FSM";
// Mark the vehicle as not currently being repaired and reapply the mphit eventhandler
_vehicle setVariable ["SC_repairStatus",false,true];
_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitLand;"];
};
// Mark the vehicle as not currently being repaired
_vehicle setVariable ["SC_repairStatus",false,true];
}
else
{
@ -142,4 +159,8 @@ else
_vehicle setVariable ["SC_repairStatus",false,true];
_logDetail = format ["[OCCUPATION:repairVehicle]:: Not enough damage to disable %2, driver is %3 at %1",time,_vehicle,_assignedDriver];
[_logDetail] call SC_fnc_log;
};
//_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitLand;"];
};
_repairStatus = _vehicle getVariable "SC_repairStatus";
_logDetail = format ["[OCCUPATION:repairVehicle]:: Finished mphit eventhandler for Vehicle %1 _repairStatus %2",_vehicle, _repairStatus];
[_logDetail] call SC_fnc_log;

View File

@ -42,6 +42,13 @@ if(time < 300) exitWith
else
{
_groupLeader = leader _group;
if(isNil "_groupLeader" OR !alive _groupLeader) then
{
_groupMembers = units _group;
_groupLeader = _groupMembers call BIS_fnc_selectRandom;
};
_distanceFromSelectedPlayer = 500;
_selectedPlayer = _group getVariable "SC_huntedPlayer";
@ -340,6 +347,7 @@ _livePlayers call BIS_fnc_arrayShuffle;
_unit disableAI "AUTOTARGET";
_unit disableAI "TARGET";
_unit disableAI "MOVE";
_unit disableAI "FSM";
_unitName = ["survivor"] call SC_fnc_selectName;
if(!isNil "_unitName") then { _unit setName _unitName; };
_unit addMPEventHandler ["mpkilled", "_this call SC_fnc_randomUnitMPKilled;"];
@ -352,7 +360,8 @@ _livePlayers call BIS_fnc_arrayShuffle;
_unit enableAI "AUTOTARGET";
_unit enableAI "TARGET";
_unit enableAI "MOVE";
_unit setCaptive false;
_unit setCaptive false;
_unit setCombatMode "RED"
}foreach units _group;
if(SC_randomSpawnAnnounce) then
@ -373,7 +382,7 @@ _livePlayers call BIS_fnc_arrayShuffle;
_wp setWaypointBehaviour "AWARE";
_wp setWaypointCombatMode "RED";
_wp setWaypointCompletionRadius 25;
_wp setWaypointType "SAD";
_wp setWaypointType "MOVE";
[_group, _destination, 350] call bis_fnc_taskPatrol;
_group allowFleeing 0;

View File

@ -184,6 +184,9 @@ while {true} do
_transport setVariable ["SC_assignedDriver", _transportDriver,true];
_transport setVariable ["SC_transport", true,true];
_transport setVariable ["SC_vehicleSpawnLocation", _spawnLocation,true];
_SC_vehicleSpawnLocation = [_spawnLocation,2000,worldName];
_transport setVariable ["SC_vehicleSpawnLocation", _SC_vehicleSpawnLocation,true];
_transportDriver setVariable ["DMS_AssignedVeh",_transport];
_transportDriver setVariable ["SC_lastSpoke", time, true];
_transport addEventHandler ["getin", "_this call SC_fnc_getOnBus;"];
@ -214,12 +217,12 @@ while {true} do
{
{
_markerPos = _x;
_wp = _group addWaypoint [_markerPos, 25];
_wp = _group addWaypoint [_markerPos, 100];
_wp setWaypointType "MOVE";
_wp setWaypointBehaviour _transportBehaviour;
_wp setWaypointspeed _transportSpeed;
_wp = _group addWaypoint [_markerPos, 5];
_wp = _group addWaypoint [_markerPos, 25];
_wp setWaypointType "TR UNLOAD";
_wp setWaypointBehaviour "SAFE";
_wp setWaypointspeed "LIMITED";
@ -251,7 +254,7 @@ while {true} do
};
// Add a final CYCLE
_wp = _group addWaypoint [_spawnLocation, 20];
_wp = _group addWaypoint [_spawnLocation, 25];
_wp setWaypointType "CYCLE";
_wp setWaypointBehaviour _transportBehaviour;
_wp setWaypointspeed _transportSpeed;