mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Fixed / updated and added Trader Missions
Ported to run it on Events instead fsm
This commit is contained in:
parent
e098a78b4f
commit
eede62bd38
@ -1,3 +1,3 @@
|
||||
5 "" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|Sapper(B|G)|Cloak)_F" !="EPOCH_RyanZombie_[1-5](|_(C|Sp|B|W|M|P))" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F" !="#smokesource" !="SmokeLauncherAmmo"
|
||||
5 "" !="Construct_f" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|Sapper(B|G)|Cloak)_F" !="EPOCH_RyanZombie_[1-5](|_(C|Sp|B|W|M|P))" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F" !="#smokesource" !="SmokeLauncherAmmo"
|
||||
5 "_EPOCH" !="(SapperHead|Jack|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower)_EPOCH" !="(Tipi|Workbench|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH" !="(Tipi|StorageShelf|Safe|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen|Jack|Freezer|Tarp|CinderWallHalf|Bobber)_EPOCH" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(Safe|Workbench|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace|TankTrap)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH" !="(Hesco3|Metal)(_Ghost|_SIM|)_EPOCH" !="(Spike|Metal)_TRAP_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
|
||||
5 SeaGull
|
||||
|
@ -17,7 +17,6 @@ private ["_allowTask","_doTask","_fnc_path","_itemCompile","_menuCondition","_mi
|
||||
//[[[end]]]
|
||||
_missionIndex = lbCurSel 1500;
|
||||
_missionAllowed = true;
|
||||
//systemChat format ["Mission Acepted: %1",_missionIndex];
|
||||
_missionClasses = getArray(getMissionConfig "EpochMissionList" >> "traderMissionClasses");
|
||||
|
||||
_nrEnts = player nearEntities ["Man", 20];
|
||||
@ -29,90 +28,55 @@ _trader = objNull;
|
||||
}forEach _nrEnts;
|
||||
|
||||
if !(isNull _trader) then {
|
||||
|
||||
_menuCondition = getText(getMissionConfig "epochMissions" >> (_missionClasses select _missionIndex) >> "missionDeny");
|
||||
if!(_menuCondition=="")then{
|
||||
if(call compile _menuCondition)then{_missionAllowed = false;};
|
||||
};
|
||||
|
||||
|
||||
if(_missionAllowed)then{
|
||||
_selectedMission = _missionClasses select _missionIndex;
|
||||
_missionTasks = getArray(getMissionConfig "epochMissions" >> _selectedMission >> "tasksList");
|
||||
_epochmissionsconfig = getMissionConfig "epochMissions";
|
||||
_menuCondition = getText (_epochmissionsconfig >> _selectedMission >> "missionDeny");
|
||||
if!(_menuCondition == "")then{
|
||||
if(call compile _menuCondition) then {
|
||||
_missionAllowed = false;
|
||||
};
|
||||
};
|
||||
if(_missionAllowed)then{
|
||||
_missionTasks = getArray (_epochmissionsconfig >> _selectedMission >> "tasksList");
|
||||
_missionname = getText (_epochmissionsconfig >> _selectedMission >> "missionName");
|
||||
_inGameTasksconfig = getMissionConfig "inGameTasks";
|
||||
_taskname = _missionTasks select 0;
|
||||
_simpleTask = getNumber (_inGameTasksconfig >> _taskname >> "simpleTask");
|
||||
|
||||
_simpleTask = getNumber (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "simpleTask");
|
||||
|
||||
//systemChat format ["Simple Task: %1 | Mission: %2 from %3",_simpleTask,_selectedMission,_missionTasks];
|
||||
if (_selectedMission isequalto "debugResetMission") exitwith {
|
||||
EPOCH_ResetTraderMission = true;
|
||||
};
|
||||
if !(EPOCH_ActiveTraderMission isequalto []) exitwith {
|
||||
EPOCH_ActiveTraderMission params ['','',['_missionname','ERROR']];
|
||||
_msg = format ['You are already running %1. Finish or cancel it first',_missionname];
|
||||
[_msg, 5] call Epoch_message;
|
||||
};
|
||||
|
||||
if (_simpleTask > 0) then { //Simple Task
|
||||
|
||||
_simpleTaskFSM = getText (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "initfsm");
|
||||
_simpleTaskSQF = getText (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "initsqf");
|
||||
_simpleTaskFNC = getText (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "initcall");
|
||||
|
||||
if!(_simpleTaskSQF == "")then{//Compile and store SQF Function
|
||||
_tag = getText (getMissionConfig "CfgClientFunctions" >> "A3E" >> "tag");
|
||||
_path = getText (getMissionConfig "inGameTasks" >> "file");
|
||||
_taskNS = _tag + "_" + ((_simpleTaskSQF splitString ".") select 0);
|
||||
_fnc_path = _path + "\" +_simpleTaskSQF;
|
||||
|
||||
if!((typeName _taskNS)=="CODE")then{
|
||||
_itemCompile = compileFinal preprocessFileLineNumbers _fnc_path;
|
||||
missionNamespace setvariable [_taskNS,_itemCompile];
|
||||
}else{
|
||||
_itemCompile = missionNamespace getVariable ["_taskNS",""];
|
||||
_taskSQF = getText ( _inGameTasksconfig >> _taskName >> "initsqf");
|
||||
if !(_taskSQF isequalto '') then {
|
||||
call compile format ["[_taskName,player,_unit,_taskItem] execVM ""%1""",_taskSQF];
|
||||
};
|
||||
|
||||
//Emulating CfgClientFunctions - Is this required ?
|
||||
[] call _itemCompile;
|
||||
|
||||
_taskCall = getText ( _inGameTasksconfig >> _taskName >> "initcall");
|
||||
if !(_taskCall isequalto '') then {
|
||||
call compile _taskCall
|
||||
};
|
||||
|
||||
if!(_simpleTaskFSM == "")then{
|
||||
_simpleTaskFSM = _path + "\" + _simpleTaskFSM;
|
||||
epochSimpleTaskHandle = [] execFSM _simpleTaskFSM;
|
||||
_nexttask = getArray ( _inGameTasksconfig >> _taskName >> "nextTask");
|
||||
if !(_nexttask isequalto []) then {
|
||||
_newtask = selectrandom _nexttask;
|
||||
EPOCH_mission_startTime = diag_ticktime;
|
||||
EPOCH_ActiveTraderMission = [_inGameTasksconfig,_newtask,_missionname];
|
||||
};
|
||||
|
||||
if!(_simpleTaskFNC == "")then{
|
||||
call compile _simpleTaskFNC;
|
||||
}
|
||||
else {
|
||||
EPOCH_mission_startTime = diag_ticktime;
|
||||
EPOCH_ActiveTraderMission = [_inGameTasksconfig,_taskname,_missionname];
|
||||
};
|
||||
|
||||
}else{//Run Task / Mission Monitor
|
||||
|
||||
_doTask = (_missionTasks select 0);
|
||||
_allowTask = true;
|
||||
|
||||
_plyrVar = missionNamespace getVariable ["EPOCH_playerMissionArray",[]] select {_x find "axeTask" > -1;};
|
||||
_uiNSTask = "";
|
||||
if(count _plyrVar > 0)then{
|
||||
_uiNSTask = _plyrVar select 0 select 1;
|
||||
};
|
||||
_miNSTask = missionNameSpace getVariable ["axeTask",""];
|
||||
|
||||
//Allow continuation of mission from Cached Task
|
||||
if!(_uiNSTask == "")then{
|
||||
if(_miNSTask == "")then{
|
||||
_doTask = _uiNSTask;
|
||||
}else{
|
||||
_allowTask = false;
|
||||
[format ["Already on a mission - %1",selectRandom ['Chop Chop !','Get on With It !','What are you waiting for ?','No bonuses for tardiness !']], 5] call Epoch_message;
|
||||
};
|
||||
};
|
||||
|
||||
if(_allowTask)then{
|
||||
epochTaskHandle = [_doTask] execFSM "epoch_code\System\task_control.fsm"
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}else{
|
||||
|
||||
}
|
||||
else {
|
||||
[format["Mission Not Allowed !",_menuCondition], 5] call Epoch_message; //Not formatting, is this intended?
|
||||
|
||||
};
|
||||
|
||||
|
||||
} else {
|
||||
//systemChat format ["Trader Not Found",""];
|
||||
}
|
||||
else {
|
||||
["Trader Lost. Goodbye.", 5] call Epoch_message;
|
||||
};
|
||||
|
@ -169,3 +169,108 @@ for "_i" from _hudIndex to 9 do {
|
||||
_c ctrlSetText "";
|
||||
};
|
||||
missionNamespace setVariable [format["EPOCH_dynHUD_%1","topRight"], nil];
|
||||
|
||||
// EPOCH TraderMissions
|
||||
if (!isnil "EPOCH_ResetTraderMission") then {
|
||||
if (!isNil "EPOCH_taskMarker") then{
|
||||
EPOCH_taskMarker params ["_mkrName","_taskMarkerVis"];
|
||||
[player,_taskMarkerVis,_mkrName] remoteExec ["EPOCH_server_removeMarker",2];
|
||||
EPOCH_taskMarker = nil;
|
||||
};
|
||||
if !(_EPOCH_TraderMissionArray isequalto []) then {
|
||||
_EPOCH_TraderMissionArray params ["_mainblock"];
|
||||
_mainblock params ["","","","","",["_missionCleanUpCall",""]];
|
||||
call _missionCleanUpCall;
|
||||
};
|
||||
EPOCH_ActiveTraderMission = [];
|
||||
_EPOCH_TraderMissionArray = [];
|
||||
_LastMissionTrigger = 0;
|
||||
["Mission sucessfully resettet", 5] call Epoch_message;
|
||||
EPOCH_ResetTraderMission = nil;
|
||||
};
|
||||
|
||||
if !(EPOCH_ActiveTraderMission isequalto []) then {
|
||||
if (_EPOCH_TraderMissionArray isequalto []) then {
|
||||
_EPOCH_TraderMissionArray = EPOCH_ActiveTraderMission call _EPOCH_BuildTraderMisson;
|
||||
};
|
||||
_EPOCH_TraderMissionArray params ["_mainblock","_taskDelay","_triggerintervall","_taskDialogues","_taskEvents","_taskFailed","_taskComplete"];
|
||||
if (diag_ticktime < _taskDelay) exitwith {};
|
||||
if (diag_ticktime < _LastMissionTrigger + _triggerintervall) exitwith {};
|
||||
_LastMissionTrigger = diag_ticktime;
|
||||
_mainblock params ["_inGameTasksconfig","_taskName","_unit","_taskItem","_taskTitle","_missionCleanUpCall","_taskCleanup"];
|
||||
_taskComplete params ["_taskCompleteCond","_taskReward","_taskCompleteDiags","_taskCompleteCall","_taskNextTrigger"];
|
||||
_taskFailed params ['_taskFailedCond','_taskFailTime','_taskFailedDiags','_taskFailedSQF','_taskFailedCall'];
|
||||
if (diag_ticktime > _taskFailTime || call _taskFailedCond) exitwith {
|
||||
if (count _taskFailedDiags > 0) then {
|
||||
_diag = selectRandom _taskFailedDiags;
|
||||
[format ["%1",_diag], 5] call Epoch_message;
|
||||
};
|
||||
if !(_taskFailedSQF isequalto '') then {
|
||||
call compile format ["[_taskName,_plyr,_unit,_taskItem] execVM ""%1""",_taskFailedSQF];
|
||||
};
|
||||
if !(str(_taskFailedCall) == "{}") then {
|
||||
call _taskFailedCall;
|
||||
};
|
||||
if (!isNil "EPOCH_taskMarker") then{
|
||||
EPOCH_taskMarker params ['_mkrName','_taskMarkerVis'];
|
||||
[player,_taskMarkerVis,_mkrName] remoteExec ["EPOCH_server_removeMarker",2];
|
||||
EPOCH_taskMarker = nil;
|
||||
};
|
||||
call _missionCleanUpCall;
|
||||
EPOCH_ActiveTraderMission = [];
|
||||
_EPOCH_TraderMissionArray = [];
|
||||
_LastMissionTrigger = 0;
|
||||
};
|
||||
if (call _taskCompleteCond) exitwith {
|
||||
if (count _taskCompleteDiags > 0) then {
|
||||
_diag = selectrandom _taskCompleteDiags;
|
||||
[format ["%1",_diag], 5] call Epoch_message;
|
||||
};
|
||||
if(count _taskReward > 0) then {
|
||||
_retTaskWH = objNull;
|
||||
_retTaskWH = createVehicle ["GroundWeaponHolder",getPosATL player,[],0,"CAN_COLLIDE"];
|
||||
[player,Epoch_personalToken,_taskReward,[],_retTaskWH,false] remoteExec ["EPOCH_Server_createObject",2];
|
||||
};
|
||||
if !(str(_taskCompleteCall) == "{}") then {
|
||||
call _taskCompleteCall;
|
||||
};
|
||||
if (_taskCleanup isequalto 1) then {
|
||||
if (!isNil "EPOCH_taskMarker") then{
|
||||
EPOCH_taskMarker params ['_mkrName','_taskMarkerVis'];
|
||||
[player,_taskMarkerVis,_mkrName] remoteExec ["EPOCH_server_removeMarker",2];
|
||||
EPOCH_taskMarker = nil;
|
||||
};
|
||||
call _missionCleanUpCall;
|
||||
};
|
||||
if (count _taskNextTrigger > 0) then {
|
||||
_nexttask = selectrandom _taskNextTrigger;
|
||||
_EPOCH_TraderMissionArray = [_inGameTasksconfig,_nexttask] call _EPOCH_BuildTraderMisson;
|
||||
}
|
||||
else {
|
||||
EPOCH_ActiveTraderMission = [];
|
||||
_EPOCH_TraderMissionArray = [];
|
||||
};
|
||||
_LastMissionTrigger = 0;
|
||||
};
|
||||
{
|
||||
_x params ["_taskEventCond","_taskEventCALL","_taskEventTasks"];
|
||||
if (call _taskEventCond) exitwith {
|
||||
call _taskEventCALL;
|
||||
if (count _taskEventTasks > 0) exitwith {
|
||||
_task = selectrandom _taskEventTasks;
|
||||
_EPOCH_TraderMissionArray = [_inGameTasksconfig,_task] call _EPOCH_BuildTraderMisson;
|
||||
};
|
||||
_taskEvents deleteat _foreachindex;
|
||||
};
|
||||
} foreach _taskEvents;
|
||||
{
|
||||
_x params ['_taskDiagCond','_taskDiag'];
|
||||
if (call _taskDiagCond) exitwith {
|
||||
_diag = selectRandom _taskDiag;
|
||||
if !(_diag isequalto "") then {
|
||||
[format ["%1",_diag], 5] call Epoch_message;
|
||||
};
|
||||
_taskDialogues deleteat _foreachindex;
|
||||
};
|
||||
} foreach _taskDialogues;
|
||||
};
|
||||
|
@ -133,3 +133,99 @@ _cursorTarget = objNull;
|
||||
// init cfgBaseBuilding config var
|
||||
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
|
||||
_cfgObjectInteractions = 'CfgObjectInteractions' call EPOCH_returnConfig;
|
||||
|
||||
|
||||
_EPOCH_BuildTraderMisson = {
|
||||
params ['_inGameTasksconfig','_taskName',['_unit',objnull],['_taskItem',objnull]];
|
||||
_taskTitle = getText ( _inGameTasksconfig >> _taskName >> "title");
|
||||
_taskSQF = getText ( _inGameTasksconfig >> _taskName >> "initsqf");
|
||||
if !(_taskSQF isequalto '') then {
|
||||
call compile format ["[_taskName,player,_unit,_taskItem] execVM ""%1""",_taskSQF];
|
||||
};
|
||||
_taskCall = getText ( _inGameTasksconfig >> _taskName >> "initcall");
|
||||
if !(_taskCall isequalto '') then {
|
||||
call compile _taskCall;
|
||||
};
|
||||
|
||||
_taskDelay = diag_ticktime + (getNumber ( _inGameTasksconfig >> _taskName >> "triggerDelay"));
|
||||
_triggerintervall = getNumber ( _inGameTasksconfig >> _taskName >> "triggerintervall");
|
||||
_taskItems = getArray ( _inGameTasksconfig >> _taskName >> "items");
|
||||
if !(_taskItems isequalto []) then {
|
||||
_wh = objNull;
|
||||
_wh = createVehicle ["GroundWeaponHolder",getPosATL player,[],0,"CAN_COLLIDE"];
|
||||
[player,Epoch_personalToken,_taskItems,[],_wh,false] remoteExec ["EPOCH_Server_createObject",2];
|
||||
};
|
||||
|
||||
_taskMarkerType = getnumber (_inGameTasksconfig >> _taskName >> 'markerType');
|
||||
if (_taskMarkerType > 0) then {
|
||||
_taskMarkerVis = getNumber ( _inGameTasksconfig >> _taskName >> "markerVisible");
|
||||
_markerPos = [0,0,0];
|
||||
if (isNil "EPOCH_taskMarkerPos") then {
|
||||
if !(isNull _trgt) then {
|
||||
_markerPos = getPos _trgt;
|
||||
};
|
||||
if !(isNull _unit) then{
|
||||
_markerPos = getPos _unit;
|
||||
};
|
||||
if !(isNull _taskItem) then {
|
||||
_markerPos = getPos _taskItem;
|
||||
};
|
||||
}
|
||||
else {
|
||||
_markerPos = EPOCH_taskMarkerPos;
|
||||
};
|
||||
_mkrName = format ["EPOCHTaskMark%1%2",_taskName,diag_tickTime];
|
||||
EPOCH_taskMarker = [_mkrName,_taskMarkerVis];
|
||||
_taskMarkerText = getText ( _inGameTasksconfig >> _taskName >> "markerText");
|
||||
_taskMarkerRad = getNumber ( _inGameTasksconfig >> _taskName >> "markerRadius");
|
||||
if(_taskMarkerType == 2)then{
|
||||
_markerPos set [0, (_markerPos select 0) + (floor (random _taskMarkerRad) - (_taskMarkerRad / 2))];
|
||||
_markerPos set [1, (_markerPos select 1) + (floor (random _taskMarkerRad) - (_taskMarkerRad / 2))];
|
||||
};
|
||||
[[_taskMarkerVis,player],_markerPos,"ELLIPSE","mil_dot",_taskMarkerText,"ColorYellow",[_taskMarkerRad,_taskMarkerRad], "SolidBorder", 42, 0.6,_mkrName] remoteExec ["EPOCH_server_makeMarker",2];
|
||||
};
|
||||
_taskDialogues = [];
|
||||
{
|
||||
_x params [["_condition",""],["_dialogue",""]];
|
||||
if !(_condition isequalto "" || _dialogue isequalto "") then {
|
||||
_taskDialogues pushback [compile _condition,_dialogue];
|
||||
};
|
||||
} foreach (getarray (_inGameTasksconfig >> _taskName >> 'dialogues'));
|
||||
_taskEvents = [];
|
||||
{
|
||||
_x params [["_condition",""],["_taskEventCALL",""],["_taskEventTasks",[]]];
|
||||
if !(_condition isequalto "") then {
|
||||
_taskEvents pushback [compile _condition,compile _taskEventCALL,_taskEventTasks];
|
||||
};
|
||||
} foreach (getarray (_inGameTasksconfig >> _taskName >> 'callevents'));
|
||||
_taskFailedCond = compile getText ( _inGameTasksconfig >> _taskName >> "failedCondition");
|
||||
_taskFailTime = (getNumber ( _inGameTasksconfig >> _taskName >> "abandonTime"));
|
||||
if (_taskFailTime < 1) then {_taskFailTime=999999} else {_taskFailTime = _taskFailTime + diag_ticktime};
|
||||
_taskFailedDiags = getArray ( _inGameTasksconfig >> _taskName >> "faileddialogues");
|
||||
_taskFailedSQF = getText ( _inGameTasksconfig >> _taskName >> "failedSQF");
|
||||
_taskFailedCall = compile getText ( _inGameTasksconfig >> _taskName >> "failedCall");
|
||||
_nextTask = getArray ( _inGameTasksconfig >> _taskName >> "failedTask");
|
||||
|
||||
_taskCompleteCond = compile getText ( _inGameTasksconfig >> _taskName >> "completeCondition");
|
||||
_taskReward = getArray ( _inGameTasksconfig >> _taskName >> "reward");
|
||||
_taskCompleteDiags = getArray ( _inGameTasksconfig >> _taskName >> "completedialogues");
|
||||
_taskCompleteCall = compile getText ( _inGameTasksconfig >> _taskName >> "completedCALL");
|
||||
_taskNextTrigger = getArray ( _inGameTasksconfig >> _taskName >> "nextTask");
|
||||
|
||||
_missionCleanUpCall = compile getText ( _inGameTasksconfig >> _taskName >> "cleanUpCall");
|
||||
_taskCleanup = getNumber ( _inGameTasksconfig >> _taskName >> "cleanUp");
|
||||
_return = [
|
||||
[_inGameTasksconfig,_taskName,_unit,_taskItem,_taskTitle,_missionCleanUpCall,_taskCleanup],
|
||||
_taskDelay,
|
||||
_triggerintervall,
|
||||
_taskDialogues,
|
||||
_taskEvents,
|
||||
[_taskFailedCond,_taskFailTime,_taskFailedDiags,_taskFailedSQF,_taskFailedCall,_nextTask],
|
||||
[_taskCompleteCond,_taskReward,_taskCompleteDiags,_taskCompleteCall,_taskNextTrigger]
|
||||
];
|
||||
EPOCH_task_startTime = diag_ticktime;
|
||||
_return
|
||||
};
|
||||
_epoch_tradermissionarray = [];
|
||||
EPOCH_ActiveTraderMission = [];
|
||||
_LastMissionTrigger = 0;
|
||||
|
@ -12,24 +12,19 @@
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_refresh.sqf
|
||||
*/
|
||||
private ["_lbl","_missionClasses","_missionName","_menuCondition","_toolTip","_plyrVar","_uiNSTask"];
|
||||
private ["_lbl","_missionClasses","_missionName","_menuCondition","_toolTip","_uiNSTask"];
|
||||
params [["_currentTask",""]];
|
||||
_missionClasses = getArray(getMissionConfig "EpochMissionList" >> "traderMissionClasses");
|
||||
_plyrVar = missionNamespace getVariable ["EPOCH_playerMissionArray",[]] select {_x find "axeTask" > -1;};
|
||||
_uiNSTask = "";
|
||||
if(count _plyrVar > 0)then{
|
||||
_uiNSTask = _plyrVar select 0 select 1;
|
||||
if (count EPOCH_ActiveTraderMission > 0) then {
|
||||
_uiNSTask = EPOCH_ActiveTraderMission select 1;
|
||||
};
|
||||
|
||||
{
|
||||
|
||||
_missionName = getText(getMissionConfig "epochMissions" >> _x >> "missionName");
|
||||
if!(_missionName == "")then{
|
||||
|
||||
_lbl = lbAdd[1500, _missionName];
|
||||
lbSetValue[1500, _lbl, _forEachIndex];
|
||||
_toolTip = getText(getMissionConfig "epochMissions" >> _x >> "missionToolTip");
|
||||
|
||||
_menuCondition = getText(getMissionConfig "epochMissions" >> _x >> "missionDeny");
|
||||
if!(_menuCondition=="")then{
|
||||
if(call compile _menuCondition)then{
|
||||
@ -37,17 +32,10 @@ _uiNSTask = _plyrVar select 0 select 1;
|
||||
_toolTip = getText(getMissionConfig "epochMissions" >> _x >> "missionDenyToolTip");
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
if(_uiNSTask in getArray(getMissionConfig "epochMissions" >> _x >> "tasksList"))then{
|
||||
lbSetColor [1500, _lbl, [0.98,0.98,0.33,1]] ;
|
||||
_toolTip = "CONTINUE - " + _toolTip;
|
||||
};
|
||||
|
||||
lbSetTooltip [1500, _lbl, _toolTip];
|
||||
|
||||
};
|
||||
|
||||
|
||||
}forEach _missionClasses;
|
||||
|
@ -14,14 +14,34 @@
|
||||
*/
|
||||
|
||||
class EpochMissionList{
|
||||
traderMissionClasses[] = {"missionDelivery","missionEscort","missionUav","missionSapper","missionSkull","missionMilitary","gameCaptureTheJammer","gameCarRace","infoTime","infoName","infoNews","infoVehicles","infoPeople","helpAirDrop","debugResetMission"}; //Exclude from here to remove from menu and trigger
|
||||
// traderMissionClasses[] = {"missionMonster","missionDelivery","missionEscort","missionUav","missionSapper","missionSkull","missionMilitary","gameCaptureTheJammer","gameCarRace","infoTime","infoName","infoNews","infoVehicles","infoPeople","helpAirDrop","debugResetMission"}; //Exclude from here to remove from menu and trigger
|
||||
traderMissionClasses[] = {"missionfishing","missionMonster","missionDelivery","missionUav","infoTime","infoName","infoNews","infoVehicles","infoPeople","debugResetMission"}; //Exclude from here to remove from menu and trigger
|
||||
traderMissionActiveNames[] = {}; //Not currently used (WIP)
|
||||
traderMissionLongDesc[] = {}; //Not currently used (WIP)
|
||||
traderMissionActiveLongDesc[] = {}; //Not currently used (WIP)
|
||||
};
|
||||
|
||||
class epochMissions {
|
||||
|
||||
class missionfishing{
|
||||
missionName = "Bring me a fresh Fish"; //Name of mission as it appears in trader list
|
||||
missionToolTip= "Bring the Trader a fresh Fish from the Water."; //Tooltip for trader menu
|
||||
missionDesc = "You must went to the Water and catch a Fish for the Trader and bring it to him."; //Misison description as it appears in trader menu.
|
||||
missionDeny = "!(""MeleeRod"" in weapons player)"; //Specify a call compile condition. If it returns true the mission will be dis-allowed. Title will be rust coloured and prefixed with NOT ALLOWED.
|
||||
missionDenyToolTip = "You need a Fishing-Rod for this Mission"; //Provides a tooltip explaining why the mission is denied. prefixed with NOT ALLOWED.
|
||||
tasksList[] = {"StartFishMission"}; //Must contain a list of tasks used for this mission, in order. Used to control trader menu when mission is active. WIP - To control mission from this array alone.
|
||||
missionTrigger = ""; //A dynamic trigger that sets off the mission anywhere in-game. e.g. player != vehicle player Not currently used (WIP)
|
||||
missionTriggerDialog[] = {""}; //Randomly selected dialogue that is shown when mission is dynamically triggered. Not currently used (WIP)
|
||||
};
|
||||
class missionMonster{
|
||||
missionName = "Escort my Monster (Experimental)"; //Name of mission as it appears in trader list
|
||||
missionToolTip= "Escort a Monster."; //Tooltip for trader menu
|
||||
missionDesc = "You must escort the Traders Monster to another Trader somewhere else on the map."; //Misison description as it appears in trader menu.
|
||||
missionDeny = ""; //Specify a call compile condition. If it returns true the mission will be dis-allowed. Title will be rust coloured and prefixed with NOT ALLOWED.
|
||||
missionDenyToolTip = ""; //Provides a tooltip explaining why the mission is denied. prefixed with NOT ALLOWED.
|
||||
tasksList[] = {"prepForMonsterEscort"}; //Must contain a list of tasks used for this mission, in order. Used to control trader menu when mission is active. WIP - To control mission from this array alone.
|
||||
missionTrigger = ""; //A dynamic trigger that sets off the mission anywhere in-game. e.g. player != vehicle player Not currently used (WIP)
|
||||
missionTriggerDialog[] = {""}; //Randomly selected dialogue that is shown when mission is dynamically triggered. Not currently used (WIP)
|
||||
};
|
||||
class missionDelivery{
|
||||
missionName = "Pikes Peak Express"; //Name of mission as it appears in trader list
|
||||
missionToolTip= "Courier."; //Tooltip for trader menu
|
||||
|
@ -16,184 +16,60 @@
|
||||
//N.B. Local vars can not be used as they are not in scope when call compiled.
|
||||
//
|
||||
// EPOCH_task_startTime - task start diag_tickTime | Usage: diag_tickTime - EPOCH_task_startTime > _someDelayTime;
|
||||
//EPOCH_taskMarkerPos - Will override the built in marker position. Must be set at init stage, i.e. before marker is created.
|
||||
//EPOCH_taskTitle - As set by title in each task class.
|
||||
//EPOCH_taskLastLoop - is the diag_tickTime at the last loop start (based on taskCheckTime). Set to start time until loop starts.
|
||||
//EPOCH_taskItem - Weaponholder object used to hold task item. Is null object until items are spawned in.
|
||||
//EPOCH_taskMarkerName - Name for the marker generated automatically by the task system.
|
||||
//
|
||||
//Stand alone missions can be called by triggering the first task class with: epochTaskHandle = ["myTaskClass"] execFSM "epoch_code\System\task_control.fsm";
|
||||
//
|
||||
// EPOCH_mission_starttime - mission start diag_ticktime
|
||||
// EPOCH_taskMarker - Array for Marker, if set [markername,markerType]. "markerType" see in task description
|
||||
// EPOCH_taskMarkerPos - Markerposition, if set.
|
||||
|
||||
|
||||
class taskWithComments{
|
||||
//Task Author
|
||||
author = "axeman";
|
||||
//Task Title as appears in (Accept / Decline) dialogue box. Leave as "" to trigger code only.
|
||||
//title, desc and img are WIP and will be used for future dialogue GUIs.
|
||||
title = "Find the Backpack.";
|
||||
//Description on task. For dialogue box.
|
||||
desc = "Our new friend has lost his backpack. Find it in a nearby house. It will be within 50m and looks like a white package. He needs the contents to continue on his way.";
|
||||
//Task Image. For dialogue box.
|
||||
img = "\A3\Characters_F_EPA\Data\ui\Icon_V_plate_carrier_snake_ca.paa";
|
||||
//Simple tasks are used for one off calls, e.g. Ask the trader the time. initfsm, initsqf and/or initcall will be triggered and the task will exit with no monitoring.
|
||||
class sampletask {
|
||||
author = "My Name";
|
||||
title = "Mission Title";
|
||||
simpleTask = 0;
|
||||
//Trigger this task. Use this condition to trigger the task (WIP - Mission and Individual Task Triggers from the Main Loop)
|
||||
triggerCondition = "count nearestObjects [player,[""house""],250] > 8";
|
||||
//Limit the number of times this task can run for player per life or server restart. (WIP - Part of client / server mission & task monitoring) - Leave as default !
|
||||
taskLimit = 3;
|
||||
//Pause time in the task loop. This figure is also applied before triggering completion of mission and again before cleanup / reminder / next task.
|
||||
taskCheckTime = 16;
|
||||
//A pause at the start of the task after collecting variables, before anything is created. TODO: maybe remove..
|
||||
triggerDelay = 16;
|
||||
//Spawn helper objects at start of task / mission (e.g. a hatchet for a tree chopping task). Array will accept any object classes which will be positioned appropriately (WIP - Mainly to support vehicle spawning).
|
||||
items[] = {"ItemSodaOrangeSherbet","itemGPS"};
|
||||
//Item Spawn (0 - Do not spawn, 1 - Nearby in House, 2 - Nearby Hidden, 3 - Near Player)
|
||||
itemSpawn = 1;
|
||||
|
||||
//Call these functions at init of task, after item spawn but before marker creation. Allows setting EPOCH_taskMarkerPos
|
||||
initfsm = "";
|
||||
initsqf = "";
|
||||
initcall = "systemChat 'STARTING FROM CONFIG'";
|
||||
|
||||
//Place a marker on task target (0 = No Marker, 1 = Marker, with text, exactly on target, 2 = radial marker with target somewhere random inside marker)
|
||||
markerType = 2;
|
||||
//Set marker radius for radial marker (markerType = 2)
|
||||
markerRadius = 50;
|
||||
//Marker Text - Add text to marker, leave "" for no text. No text available for Marker type 2 yet.
|
||||
markerText = "Last seen here somewhere.";
|
||||
//task fsm / sqf. Call an sqf or FSM, designed to manage the mission locally. Will trigger at task start (After specified delay)
|
||||
//All FSM & SQF Calls pass default variables. e.g. [player ,EPOCH_taskItem] execVM "yourSQF.sqf";
|
||||
//Both options (SQF or FSM) will be presented when a script call is available. Both will be called if value is not ""
|
||||
//All sqf, fsm files are stored, by default, in <Mission Folder>\epoch_code\compile\missions\tasks\ (WIP - Can be edited with the task setting in CfgMissionTasks.hpp)
|
||||
//TODO - Reduce to just call so these can all be pre-CompileFinaled
|
||||
|
||||
//Call additional functions based on condition, e.g. air drop, antagonist spawn, or custom code.
|
||||
//Conditions must return a boolean. e.g. player distance player < 12;
|
||||
callEventBinTask = 0;//If calling another task (callEventTask1 etc.) then bin this task before starting the new one ? - WIP
|
||||
callEventCondition1 = "true";
|
||||
callEventCondition2 = "EPOCH_taskItem distance player < 50";
|
||||
callEventCondition3 = "";
|
||||
|
||||
//All sqf, fsm files are stored, by default, in <Mission Folder>\epoch_code\compile\missions\tasks\ (WIP - Can be edited with the task setting above)
|
||||
callEventCALL1 = "";
|
||||
callEventFSM1 = "";
|
||||
callEventSQF1 = "triggerAirDrop.sqf";
|
||||
//Call another task class from the same mission.
|
||||
callEventTask1 = "";
|
||||
|
||||
callEventCALL2 = "hint 'You are getting warm'";
|
||||
callEventFSM2 = "";
|
||||
callEventSQF2 = "";
|
||||
callEventTask2 = "";
|
||||
|
||||
callEventCALL3 = "";
|
||||
callEventFSM3 = "";
|
||||
callEventSQF3 = "";
|
||||
callEventTask3 = "";
|
||||
|
||||
//dialogues. One of the array will be selected randomly upon each trigger
|
||||
//Dialogue 1 will trigger only one time upon it's condition, designed to be a welcome message.
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"Ok, first thing I need to do is find my rucksack","Help me find my rucksack first.","I need to find my rucksack."};
|
||||
|
||||
//Delay between triggering dialogue, to stop flooding.
|
||||
diagSquelch = 60;
|
||||
//Dialogue 2 and 3 will repeat everytime the condition is met and the squelch time has elapsed. Designed as warnings / hint dialogues. Again, a random message will be chosen from the array.
|
||||
diag2Condition = "diag_tickTime - EPOCH_task_startTime > 20";
|
||||
dialogue2[] = {"I dropped it in one of these buildings. Some.. thing was chasing me.","It is in a house nearby, I have a map that I need in it.","Search the nearby houses until you find it."};
|
||||
diag3Condition = "EPOCH_taskItem distance player < 12";
|
||||
dialogue3[] = {"Wow, you are really close now.","Keep looking, it is right near you.","Smoking hot, you are practically standing on it."};
|
||||
|
||||
//FAILED / ABANDONED
|
||||
//Apply a condition to detect mission failure. e.g. '!alive _unit' if escorting a NPC. Task will bin upon player death anyway.
|
||||
failedCondition = "!alive player";
|
||||
//Abandon Distance - Player moves this far from 'task trigger position' causes abandonment of mission (0 = unlimited)
|
||||
abandonDist = 100;
|
||||
//Time Limit - Once time limit is reached, and completed condition is not met, the mission has failed and will be disposed. 0 = No Limit.
|
||||
abandonTime = 240;
|
||||
//Failed Message (triggered by timeLimit or abandon distance) - Display random message from array upon task failure.
|
||||
failed[] = {"You blew it.","Don't give up your day job pal..","That's you finished mate, bring on the pain."};
|
||||
//Run a command to punish failure of task (triggered by timeLimit or failure condition).
|
||||
failedFSM = "";
|
||||
failedSQF = "";
|
||||
failedCall = "[] call EPOCH_callSapperMigration;";
|
||||
//Add failure task. Can be multiple tasks that are picked at random.
|
||||
failedTask[] = {""};
|
||||
//Dispose of task item at failure 0 = No, 1 = Yes. Cleans up any spawned weaponholders.
|
||||
cleanUp = 1;
|
||||
//Upon FSM disposal call compile each piece of code. Designed to cleanup namespace(s).
|
||||
cleanUpCalls[] = {""};
|
||||
//COMPLETED
|
||||
//Condition met to trigger completion of task.
|
||||
completeCondition = "EPOCH_taskItem distance player < 2";
|
||||
//Drop reward for player - Currently always nearby, on the floor.
|
||||
reward[] = {"ItemSodaOrangeSherbet","ItemSodaPurple","ItemSodaMocha"};
|
||||
//Completed dialogues, selected randomly from each array. With pause in-between completed1 and completed2.
|
||||
completed1[] = {"Well done, that was quick. Let me have it, and here's something for you.","You've found it, good job. I have something in here you can have.","Well found, you're a natural. Here, this is yours, thank you."};
|
||||
completed2[] = {"Now let's head out of town, you lead the way !","It's time to leave this area, let's go !","Do you think we should get out of this area now ?"};
|
||||
//Remind / hint to the player to get them onto the NEXT task. Displays after longer pause
|
||||
reminder[] = {"It's about time we headed out of town.","We need to get away from these houses.","Let's move away from these built up areas."};
|
||||
//Trigger next task at disposal of this one. Allows tasks to be strung together. If more than one a task is selected at random. Leave blank to end mission and reset menu item at trader.
|
||||
nextTask[] = {"findHouseItem"};
|
||||
items[] = {"B_UavTerminal"}; // Items will be dropped on the Ground next to Player
|
||||
triggerDelay = 2; // Before this time (in sec) the task will not Start
|
||||
taskCheckTime = 3; // Intervall (in sec) for the triggers
|
||||
markerType = 0; // Place a marker on task target (0 = No Marker, 1 = Marker, with text, exactly on target, 2 = radial marker with target somewhere random inside marker)
|
||||
markerVisible = 0; // Marker visible for: 0 = Only Player (default), 1 = Group of Player, 2 = Global
|
||||
markerRadius = 0; // Set marker radius for radial marker (markerType = 2)
|
||||
markerText = ""; // Marker Text - Add text to marker, leave "" for no text. No text available for Marker type 2 yet.
|
||||
initcall = ""; // Code to call on task-start
|
||||
cleanUpCall = ""; // Code to call on task failed or when cleanUp = 1 on finished
|
||||
dialogues[] = { // Array to make dialogues while task is running
|
||||
{
|
||||
"alive player", // Condition 1
|
||||
{"Text 1","Text 2","Text 3"} // Array of random dialogues when condition 1 = true
|
||||
},
|
||||
{
|
||||
"alive player", // Condition 2
|
||||
{"Text 1","Text 2","Text 3"} // Array of random dialogues when condition 2 = true
|
||||
}
|
||||
};
|
||||
callevents[] = { // Array to call codes and / or start a nex task
|
||||
{
|
||||
"(diag_tickTime - StartTime > 30)", // Condition 1
|
||||
"", // String with code to call when condition 1 = true
|
||||
{"uavMission1"} // Array of random selected tasks to switch to when condition 1 = true
|
||||
},
|
||||
{
|
||||
"!alive player", // Condition 2
|
||||
"player setdamage 1", // String with code to call when condition 2 = true
|
||||
{"uavMission2"} // Array of random selected tasks to switch to when condition 2 = true
|
||||
},
|
||||
};
|
||||
abandonTime = 240; // Timeout for task
|
||||
failedCondition = "false"; // Failed Condition for Task
|
||||
faileddialogues[] = {"Text1","Text2"}; // Array of random dialogues when task failed
|
||||
completeCondition = "'B_UavTerminal' in assignedItems player"; // Condition to complete the task succesfully
|
||||
completedialogues[] = {"Text1","Text2"}; // Array of random dialogues when task completed successfully
|
||||
completedCALL = ""; // Code to call when task completed successfully
|
||||
reward[] = {}; // Array of items, that spawn next to the Player when completed successfully
|
||||
cleanUp = 0; // Set to 1 to call cleanupcall on success
|
||||
nextTask[] = {"doUAVSpawn"}; // Array of next selected random tasks
|
||||
|
||||
class blankTaskWithDefaults{
|
||||
author = "axeman";
|
||||
title = "";
|
||||
desc = "";
|
||||
img = "";
|
||||
simpleTask = 0;
|
||||
triggerCondition = "";
|
||||
// Not used atm
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 16;
|
||||
triggerDelay = 16;
|
||||
items[] = {""};
|
||||
itemSpawn = 1;
|
||||
markerType = 2;
|
||||
markerRadius = 50;
|
||||
markerText = "";
|
||||
initfsm = "";
|
||||
initsqf = "";
|
||||
initcall = "";
|
||||
itemSpawn = 3;
|
||||
callEventBinTask = 0;
|
||||
callEventCondition1 = "";
|
||||
callEventCondition2 = "";
|
||||
callEventCondition3 = "";
|
||||
callEventCALL1 = "";
|
||||
callEventFSM1 = "";
|
||||
callEventSQF1 = "";
|
||||
callEventTask1 = "";
|
||||
callEventCALL2 = "";
|
||||
callEventFSM2 = "";
|
||||
callEventSQF2 = "";
|
||||
callEventTask2 = "";
|
||||
callEventCALL3 = "";
|
||||
callEventFSM3 = "";
|
||||
callEventSQF3 = "";
|
||||
callEventTask3 = "";
|
||||
diag1Condition = "";
|
||||
dialogue1[] = {""};
|
||||
diagSquelch = 60;
|
||||
diag2Condition = "";
|
||||
dialogue2[] = {""};
|
||||
diag3Condition = "";
|
||||
dialogue3[] = {""};
|
||||
failedCondition = "";
|
||||
diagSquelch = 30;
|
||||
abandonDist = 100;
|
||||
abandonTime = 240;
|
||||
failed[] = {""};
|
||||
failedFSM = "";
|
||||
failedSQF = "";
|
||||
failedCall = "";
|
||||
failedTask[] = {""};
|
||||
cleanUp = 1;
|
||||
cleanUpCalls[] = {};
|
||||
completeCondition = "";
|
||||
reward[] = {""};
|
||||
completed1[] = {""};
|
||||
completed2[] = {""};
|
||||
completedCALL = "";
|
||||
reminder[] = {""};
|
||||
nextTask[] = {""};
|
||||
};
|
@ -3,7 +3,7 @@ author = "axeman";
|
||||
title = "Trader Time";
|
||||
//Simple task will skip all monitoring and run the provided code (call, fsm, sqf) only.
|
||||
simpleTask = 1;
|
||||
initsqf = "traderDiag_timePlease.sqf";
|
||||
initsqf = "epoch_code\compile\missions\tasks\traderDiag_timePlease.sqf";
|
||||
initfsm = "";
|
||||
initcall = "";
|
||||
//Next task is allowed to trigger a task if required.
|
||||
@ -14,7 +14,7 @@ class traderDiagNearby{
|
||||
author = "axeman";
|
||||
title = "Trader Near By Players";
|
||||
simpleTask = 1;
|
||||
initsqf = "traderDiag_nearPlayers.sqf";
|
||||
initsqf = "epoch_code\compile\missions\tasks\traderDiag_nearPlayers.sqf";
|
||||
initfsm = "";
|
||||
initcall = "";
|
||||
nextTask[] = {};
|
||||
@ -24,7 +24,7 @@ class traderDiagNews{
|
||||
author = "axeman";
|
||||
title = "Trader News";
|
||||
simpleTask = 1;
|
||||
initsqf = "traderDiag_news.sqf";
|
||||
initsqf = "epoch_code\compile\missions\tasks\traderDiag_news.sqf";
|
||||
initfsm = "";
|
||||
initcall = "";
|
||||
nextTask[] = {};
|
||||
@ -34,7 +34,7 @@ class traderDiagName{
|
||||
author = "axeman";
|
||||
title = "Traders Name";
|
||||
simpleTask = 1;
|
||||
initsqf = "traderDiag_name.sqf";
|
||||
initsqf = "epoch_code\compile\missions\tasks\traderDiag_name.sqf";
|
||||
initfsm = "";
|
||||
initcall = "";
|
||||
nextTask[] = {};
|
||||
@ -44,7 +44,7 @@ class traderNearVehicles{
|
||||
author = "axeman";
|
||||
title = "Trader Nearby Vehicles";
|
||||
simpleTask = 1;
|
||||
initsqf = "traderDiag_nearVehicles.sqf";
|
||||
initsqf = "epoch_code\compile\missions\tasks\traderDiag_nearVehicles.sqf";
|
||||
initfsm = "";
|
||||
initcall = "";
|
||||
nextTask[] = {};
|
||||
@ -54,7 +54,7 @@ class traderTriggerAirDrop{
|
||||
author = "axeman";
|
||||
title = "Trigger AirDrop";
|
||||
simpleTask = 1;
|
||||
initsqf = "traderDiag_triggerAirDrop.sqf";
|
||||
initsqf = "epoch_code\compile\missions\tasks\traderDiag_triggerAirDrop.sqf";
|
||||
initfsm = "";
|
||||
initcall = "";
|
||||
nextTask[] = {};
|
||||
@ -64,7 +64,7 @@ class traderMissionReset{
|
||||
author = "axeman";
|
||||
title = "Reset Missions";
|
||||
simpleTask = 1;
|
||||
initsqf = "traderDebug_resetMissions.sqf";
|
||||
initsqf = "epoch_code\compile\missions\tasks\traderDebug_resetMissions.sqf";
|
||||
initfsm = "";
|
||||
initcall = "";
|
||||
nextTask[] = {};
|
||||
|
@ -1,232 +1,158 @@
|
||||
class prepForDelivery {
|
||||
author = "axeman";
|
||||
title = "Prep for Delivery";
|
||||
desc = "";
|
||||
img = "";
|
||||
simpleTask = 0;
|
||||
triggerCondition = "";
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 16;
|
||||
triggerDelay = 0;
|
||||
items[] = {"ItemDocumentMission"};
|
||||
itemSpawn = 3;
|
||||
triggerDelay = 2;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initfsm = "";
|
||||
initsqf = "";
|
||||
initcall = "axeDocDeliveryStart = diag_tickTime";
|
||||
callEventBinTask = 0;
|
||||
callEventCondition1 = "(""ItemDocumentMission"" in magazines player)";
|
||||
callEventCondition2 = "";
|
||||
callEventCondition3 = "";
|
||||
callEventCALL1 = "uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]}]";
|
||||
callEventFSM1 = "";
|
||||
callEventSQF1 = "";
|
||||
callEventTask1 = "";
|
||||
callEventCALL2 = "";
|
||||
callEventFSM2 = "";
|
||||
callEventSQF2 = "";
|
||||
callEventTask2 = "";
|
||||
callEventCALL3 = "";
|
||||
callEventFSM3 = "";
|
||||
callEventSQF3 = "";
|
||||
callEventTask3 = "";
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"Pick up the Document to Start."};
|
||||
diagSquelch = 60;
|
||||
diag2Condition = "!(""ItemDocumentMission"" in magazines player)";
|
||||
dialogue2[] = {"Come on Buddy, Pick it up !","It's right next to you on the floor, pick it up to start."};
|
||||
diag3Condition = "";
|
||||
dialogue3[] = {""};
|
||||
failedCondition = "";
|
||||
abandonDist = 100;
|
||||
initcall = "";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"true",
|
||||
{"Pick up the Document to Start."}
|
||||
},
|
||||
{
|
||||
"!(""ItemDocumentMission"" in magazines player)",
|
||||
{"Come on Buddy, Pick it up !","It's right next to you on the floor, pick it up to start."}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime = 240;
|
||||
failed[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the document. Misison Failed !"};
|
||||
failedFSM = "";
|
||||
failedSQF = "";
|
||||
failedCall = "";
|
||||
failedTask[] = {""};
|
||||
cleanUp = 1;
|
||||
cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"};
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the document. Misison Failed !"};
|
||||
completeCondition = "('ItemDocumentMission' in magazines player)";
|
||||
completedialogues[] = {"That's great, let's get out of here.","Good, you have the document, let's move on.","Ok, well done. We can start now."};
|
||||
completedCALL = "uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]}]";
|
||||
reward[] = {};
|
||||
completed1[] = {"That's great, let's get out of here.","Good, you have the document, let's move on.","Ok, well done. We can start now."};
|
||||
completed2[] = {""};
|
||||
reminder[] = {""};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"doDelivery"};
|
||||
|
||||
// Not used atm
|
||||
taskLimit = 3;
|
||||
itemSpawn = 3;
|
||||
callEventBinTask = 0;
|
||||
diagSquelch = 30;
|
||||
abandonDist = 100;
|
||||
};
|
||||
class doDelivery {
|
||||
author = "axeman";
|
||||
title = "Do Delivery";
|
||||
desc = "";
|
||||
img = "";
|
||||
simpleTask = 0;
|
||||
triggerCondition = "(""ItemDocumentMission"" in magazines player)";
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 16;
|
||||
triggerDelay = 3;
|
||||
items[] = {""};
|
||||
itemSpawn = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 8;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initfsm = "";
|
||||
initsqf = "";
|
||||
initcall = "";
|
||||
callEventBinTask = 0;
|
||||
callEventCondition1 = "(axeDocDeliveryStart + 480 < diag_tickTime) && ((player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]]))";
|
||||
callEventCondition2 = "";
|
||||
callEventCondition3 = "";
|
||||
callEventCALL1 = "[""Hey, what are you doing here ? Get on with your task !"", 5] call Epoch_message";
|
||||
callEventFSM1 = "";
|
||||
callEventSQF1 = "";
|
||||
callEventTask1 = "";
|
||||
callEventCALL2 = "";
|
||||
callEventFSM2 = "";
|
||||
callEventSQF2 = "";
|
||||
callEventTask2 = "";
|
||||
callEventCALL3 = "";
|
||||
callEventFSM3 = "";
|
||||
callEventSQF3 = "";
|
||||
callEventTask3 = "";
|
||||
diag1Condition = "(""ItemDocumentMission"" in magazines player)";
|
||||
dialogue1[] = {"Ok, head off to another trader, you can't deliver to any nearby.","All set. Now take that document to another trader further away.","Take that message to another trader or trader city."};
|
||||
diagSquelch = 40;
|
||||
diag2Condition = "!('ItemDocumentMission' in magazines player)";
|
||||
dialogue2[] = {"Don't leave that document anywhere.","If you lose that document you will fail the mission."};
|
||||
diag3Condition = "(count (player nearentities [[""C_Man_1""],42]) > 0) && (count (((player nearentities [[""C_Man_1""],42]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)";
|
||||
dialogue3[] = {"Well done, you have a trader nearby, go see him","Looks like you found another trader, well done, deliver the message.","UAV has spotted another trader nearby, go deliver the message."};
|
||||
failedCondition = "";
|
||||
abandonDist = 0;
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"(""ItemDocumentMission"" in magazines player)",
|
||||
{"Ok, head off to another trader, you can't deliver to any nearby.","All set. Now take that document to another trader further away.","Take that message to another trader or trader city."}
|
||||
},
|
||||
{
|
||||
"!('ItemDocumentMission' in magazines player)",
|
||||
{"Don't leave that document anywhere.","If you lose that document you will fail the mission."}
|
||||
},
|
||||
{
|
||||
"(count (player nearentities [[""C_Man_1""],42]) > 0) && (count (((player nearentities [[""C_Man_1""],42]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)",
|
||||
{"Well done, you have a trader nearby, go see him","Looks like you found another trader, well done, deliver the message.","UAV has spotted another trader nearby, go deliver the message."}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}}
|
||||
"(EPOCH_task_startTime + 480 < diag_tickTime) && ((player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]]))",
|
||||
"[""Hey, what are you doing here ? Get on with your task !"", 5] call Epoch_message",
|
||||
{}
|
||||
}
|
||||
};
|
||||
abandonTime = 1800;
|
||||
failed[] = {"Looks like you took too long buddy, Mission Over.","You need to be quicker next time, Mission Over !","Misison Failed - You took too long, better luck next time."};
|
||||
failedFSM = "";
|
||||
failedSQF = "";
|
||||
failedCall = "";
|
||||
failedTask[] = {""};
|
||||
cleanUp = 0;
|
||||
cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"};
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {"Looks like you took too long buddy, Mission Over.","You need to be quicker next time, Mission Over !","Misison Failed - You took too long, better luck next time."};
|
||||
completeCondition = "(count (player nearentities [[""C_Man_1""],6]) > 0) && (count (((player nearentities [[""C_Man_1""],6]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)";
|
||||
completedialogues[] = {"Hey there pal, it looks like you have something for me ?","Great Job there. Step into my office traveller.","You made it, time to take a look at that message."};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
completed1[] = {"Hey there pal, it looks like you have something for me ?","Great Job there. Step into my office traveller.","You made it, time to take a look at that message."};
|
||||
completed2[] = {""};
|
||||
reminder[] = {""};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"finishDelivery"};
|
||||
};
|
||||
class finishDelivery {
|
||||
author = "axeman";
|
||||
title = "Finish Delivery";
|
||||
desc = "";
|
||||
img = "";
|
||||
simpleTask = 0;
|
||||
triggerCondition = "(""ItemDocumentMission"" in magazines player)";
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 16;
|
||||
triggerDelay = 3;
|
||||
items[] = {""};
|
||||
itemSpawn = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 8;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initfsm = "";
|
||||
initsqf = "";
|
||||
initcall = "axeRndBadNews = floor random 100";
|
||||
callEventBinTask = 1;
|
||||
callEventCondition1 = "(""ItemDocumentMission"" in magazines player)";
|
||||
callEventCondition2 = "axeRndBadNews < 6";
|
||||
callEventCondition3 = "";
|
||||
callEventCALL1 = "player removeMagazine ""ItemDocumentMission""";
|
||||
callEventFSM1 = "";
|
||||
callEventSQF1 = "";
|
||||
callEventTask1 = "";
|
||||
callEventCALL2 = "";
|
||||
callEventFSM2 = "";
|
||||
callEventSQF2 = "";
|
||||
callEventTask2 = "deliveryMissionBadNews";
|
||||
callEventCALL3 = "";
|
||||
callEventFSM3 = "";
|
||||
callEventSQF3 = "";
|
||||
callEventTask3 = "";
|
||||
diag1Condition = "axeRndBadNews > 5";
|
||||
dialogue1[] = {"That's interesting news. Thanks for bringing this.","Great news, you did well to bring this to me."};
|
||||
diagSquelch = 60;
|
||||
diag2Condition = "";
|
||||
dialogue2[] = {""};
|
||||
diag3Condition = "";
|
||||
dialogue3[] = {""};
|
||||
failedCondition = "";
|
||||
abandonDist = 0;
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];axeRndBadNews = nil";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"axeRndBadNews > 5",
|
||||
{"That's interesting news. Thanks for bringing this.","Great news, you did well to bring this to me."}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}}
|
||||
"(""ItemDocumentMission"" in magazines player)",
|
||||
"player removeMagazine ""ItemDocumentMission""",
|
||||
{}
|
||||
},
|
||||
{ // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}}
|
||||
"axeRndBadNews < 6",
|
||||
"",
|
||||
{"deliveryMissionBadNews"}
|
||||
}
|
||||
};
|
||||
abandonTime = 240;
|
||||
failed[] = {""};
|
||||
failedFSM = "";
|
||||
failedSQF = "";
|
||||
failedCall = "";
|
||||
failedTask[] = {};
|
||||
cleanUp = 0;
|
||||
cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"};
|
||||
completeCondition = "axeRndBadNews > 5";
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {};
|
||||
completeCondition = "diag_ticktime - EPOCH_task_startTime > 16 && axeRndBadNews > 5";
|
||||
completedialogues[] = {"Take your reward, you have earnt it","Here is your reward, you are a great courier.","Any time you need work, come and see me, great job."};
|
||||
completedCALL = "_wh = createVehicle[""groundWeaponHolder"",getPosATL player,[],0,""CAN_COLLIDE""];[_wh,""Pelican_EPOCH""] remoteExec [""EPOCH_serverLootObject"",2];";
|
||||
reward[] = {};
|
||||
completed1[] = {"Take your reward, you have earnt it","Here is your reward, you are a great courier.","Any time you need work, come and see me, great job."};
|
||||
completedCALL = "axeRewardWH = createVehicle[""groundWeaponHolder"",getPosATL player,[],0,""CAN_COLLIDE""];[axeRewardWH,""Pelican_EPOCH""] remoteExec [""EPOCH_serverLootObject"",2];";
|
||||
reminder[] = {""};
|
||||
cleanUp = 1;
|
||||
nextTask[] = {};
|
||||
};
|
||||
class deliveryMissionBadNews {
|
||||
author = "axeman";
|
||||
title = "Delivery Gone Bad";
|
||||
desc = "";
|
||||
img = "";
|
||||
simpleTask = 0;
|
||||
triggerCondition = "";
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 4;
|
||||
triggerDelay = 3;
|
||||
items[] = {""};
|
||||
itemSpawn = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 0;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerRadius = 50;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initfsm = "";
|
||||
initsqf = "";
|
||||
initcall = "[player,6] call EPOCH_callSapperMigration";
|
||||
callEventBinTask = 0;
|
||||
callEventCondition1 = "";
|
||||
callEventCondition2 = "";
|
||||
callEventCondition3 = "";
|
||||
callEventCALL1 = "";
|
||||
callEventFSM1 = "";
|
||||
callEventSQF1 = "";
|
||||
callEventTask1 = "";
|
||||
callEventCALL2 = "";
|
||||
callEventFSM2 = "";
|
||||
callEventSQF2 = "";
|
||||
callEventTask2 = "";
|
||||
callEventCALL3 = "";
|
||||
callEventFSM3 = "";
|
||||
callEventSQF3 = "";
|
||||
callEventTask3 = "";
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"Oh my, that's terrible, why did you bring me this news ?","No no no, why would you do this to me, this is awful news."};
|
||||
diagSquelch = 60;
|
||||
diag2Condition = "";
|
||||
dialogue2[] = {""};
|
||||
diag3Condition = "";
|
||||
dialogue3[] = {""};
|
||||
failedCondition = "";
|
||||
abandonDist = 100;
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"true",
|
||||
{"Oh my, that's terrible, why did you bring me this news ?","No no no, why would you do this to me, this is awful news."}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime =240;
|
||||
failed[] = {""};
|
||||
failedFSM = "";
|
||||
failedSQF = "";
|
||||
failedCall = "";
|
||||
failedTask[] = {""};
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {};
|
||||
completeCondition = "diag_ticktime - EPOCH_task_startTime > 8";
|
||||
completedialogues[] = {"You are going to pay for that, get out of my sight","Nobody does that to me, go away.","I would run buddy, I am not pleased."};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 1;
|
||||
cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"};
|
||||
completeCondition = "true";
|
||||
reward[] = {""};
|
||||
completed1[] = {"You are going to pay for that, get out of my sight","Nobody does that to me, go away.","I would run buddy, I am not pleased."};
|
||||
completed2[] = {""};
|
||||
reminder[] = {""};
|
||||
nextTask[] = {};
|
||||
};
|
139
Sources/epoch_config/Configs/CfgMissions/CfgmissionFish.hpp
Normal file
139
Sources/epoch_config/Configs/CfgMissions/CfgmissionFish.hpp
Normal file
@ -0,0 +1,139 @@
|
||||
class StartFishMission {
|
||||
author = "He-Man";
|
||||
title = "Start Fish Mission";
|
||||
simpleTask = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 2;
|
||||
triggerintervall = 5;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],20]) apply {_x getVariable [""AI_SLOT"",-1]}]; EPOCH_Mission_StartPos = getpos player";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"true",
|
||||
{"I really need a fresh Fish. Can you fish me one?","Go to the Water and catch me a fresh Fish. I will reward you"}
|
||||
},
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"true",
|
||||
{"But don't bring me a Fish from this region. Go a bit away","The Fishes from this region are boring. Please go a bit farther"}
|
||||
},
|
||||
{
|
||||
"!(""MeleeRod"" in weapons player)",
|
||||
{"Hey, you need your Fishin Rod for fishing! Don't throw it away"}
|
||||
},
|
||||
{
|
||||
"(surfaceiswater (getpos player) || (surfaceiswater (player modelToWorld[0, 5 + (random 5), 0]))) && player distance EPOCH_Mission_StartPos < 1000",
|
||||
{"The Fishes in this region taste awful. Go to another Spot.","Don't bring me a fish frome here! They taste terrible..."}
|
||||
},
|
||||
{
|
||||
"(surfaceiswater (getpos player) || (surfaceiswater (player modelToWorld[0, 5 + (random 5), 0]))) && player distance EPOCH_Mission_StartPos > 1000",
|
||||
{"Oh nice, here is an excellent spot for fishing...","Use your Fishing-Rod to catch me a fresh Fish"}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime = 1200;
|
||||
failedCondition = "!alive player";
|
||||
faileddialogues[] = {"I guess you have better things to do. - Mission Failed","Mission Failed - Try again later."};
|
||||
completeCondition = "player distance (missionNamespace getVariable [""EPOCH_myBobber"", objNull]) < 40 && player distance EPOCH_Mission_StartPos > 900";
|
||||
completedialogues[] = {"Okay, now catch a Fish","Let's wait now..."};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"CatchFish"};
|
||||
|
||||
// Not used atm
|
||||
taskLimit = 3;
|
||||
itemSpawn = 3;
|
||||
callEventBinTask = 0;
|
||||
diagSquelch = 30;
|
||||
abandonDist = 100;
|
||||
};
|
||||
class CatchFish {
|
||||
author = "He-Man";
|
||||
title = "Catch the Fish";
|
||||
simpleTask = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 8;
|
||||
triggerintervall = 5;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime = 600;
|
||||
failedCondition = "!alive player";
|
||||
faileddialogues[] = {"I guess you have better things to do. - Mission Failed","Mission Failed - You took to long."};
|
||||
completeCondition = "{_x in magazines player} count ([""CfgEpochClient"", ""fishLoots"", [""ItemTuna"",""ItemSeaBass"",""ItemSeaBass"",""ItemSeaBass"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout""]] call EPOCH_fnc_returnConfigEntryV2) > 0";
|
||||
completedialogues[] = {"YEAH! You got one. Bring it to me","Wow, bring the Fish to me!"};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"BringTheFish"};
|
||||
};
|
||||
class BringTheFish {
|
||||
author = "He-Man";
|
||||
title = "Bring the Fish";
|
||||
simpleTask = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 8;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"diag_ticktime - EPOCH_task_startTime > 180",
|
||||
{"Hurry up, I am really hungry.","Hey, where is my Fish? Bring it to me!","Why does it take so long to bring me a Fish?"}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime = 1200;
|
||||
failedCondition = "!alive player";
|
||||
faileddialogues[] = {"I guess you have better things to do. - Mission Failed","Mission Failed - You took to long."};
|
||||
completeCondition = "((player nearentities [[""C_Man_1""],20]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]])) && {_x in magazines player} count ([""CfgEpochClient"", ""fishLoots"", [""ItemTuna"",""ItemSeaBass"",""ItemSeaBass"",""ItemSeaBass"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout""]] call EPOCH_fnc_returnConfigEntryV2) > 0";
|
||||
completedialogues[] = {"Hey, you bring me my Fish? - THANKS!!!","Great Job there. Step into my office traveller.","You made it, thanks for bringing me the Fish."};
|
||||
completedCALL = "{if (_x in magazines player) exitwith {player removeMagazine _x}} foreach ([""CfgEpochClient"", ""fishLoots"", [""ItemTuna"",""ItemSeaBass"",""ItemSeaBass"",""ItemSeaBass"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout""]] call EPOCH_fnc_returnConfigEntryV2)";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"FinishFishMission"};
|
||||
};
|
||||
class FinishFishMission {
|
||||
author = "He-Man";
|
||||
title = "Finish Fish Mission";
|
||||
simpleTask = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 8;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime = 240;
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {};
|
||||
completeCondition = "true";
|
||||
completedialogues[] = {"Take your reward, you have earnt it","Here is your reward, you are a great fisher man.","Any time you need work, come and see me, great job."};
|
||||
completedCALL = "_WH = createVehicle[""groundWeaponHolder"",getPosATL player,[],0,""CAN_COLLIDE""];[_WH,""Mission_Fishing_Payout""] remoteExec [""EPOCH_serverLootObject"",2];";
|
||||
reward[] = {};
|
||||
cleanUp = 1;
|
||||
nextTask[] = {};
|
||||
};
|
134
Sources/epoch_config/Configs/CfgMissions/CfgmissionMonster.hpp
Normal file
134
Sources/epoch_config/Configs/CfgMissions/CfgmissionMonster.hpp
Normal file
@ -0,0 +1,134 @@
|
||||
class prepForMonsterEscort {
|
||||
author = "He-Man";
|
||||
title = "Prep for Monster Escort";
|
||||
simpleTask = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 2;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "EPOCH_Monster = objnull";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"true",
|
||||
{"Hey, thanks for helping me to take my Monster to a friend"}
|
||||
},
|
||||
{
|
||||
"true",
|
||||
{"I will call my monster. Bring him to another Trader"}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}}
|
||||
"true",
|
||||
"uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]}]",
|
||||
{}
|
||||
},
|
||||
{ // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}}
|
||||
"true",
|
||||
"_animalPos = [getposatl player, 150, 250, 5, 0, 2000, 0] call BIS_fnc_findSafePos;_randomAIClass = ""Construct_F"";_animal = createAgent[_randomAIClass, _animalPos, [], 5, ""NONE""];EPOCH_Monster = _animal;[EPOCH_Monster] remoteExec [""EPOCH_localCleanup"",2]",
|
||||
{}
|
||||
}
|
||||
};
|
||||
abandonTime = 240;
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the document. Misison Failed !"};
|
||||
completeCondition = "!isnull EPOCH_Monster";
|
||||
completedialogues[] = {};
|
||||
completedCALL = "[] spawn {_pos = getpos player;_stay = false;while {!isnull EPOCH_Monster && alive EPOCH_Monster && alive player} do {if (EPOCH_Monster distance2d player > 35) then {_stay = false;_pos = getposatl player;}else {if (!_stay) then {_pos = getposatl EPOCH_Monster;_stay = true;};};EPOCH_Monster moveto _pos;_time = diag_ticktime;uisleep 3;waituntil {diag_ticktime - _time > 15 || EPOCH_Monster distance _pos < 25 || isnull EPOCH_Monster};};};";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"EscortMonster"};
|
||||
|
||||
// Not used atm
|
||||
taskLimit = 3;
|
||||
itemSpawn = 3;
|
||||
callEventBinTask = 0;
|
||||
diagSquelch = 30;
|
||||
abandonDist = 100;
|
||||
};
|
||||
class EscortMonster {
|
||||
author = "He-Man";
|
||||
title = "Escort Monster";
|
||||
simpleTask = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 5;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]; deletevehicle EPOCH_Monster";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
{ // {"condition",{"Message1","Message2", ...}}
|
||||
"true",
|
||||
{"That's great, look for the Monster outside.","Good, now search my Monster outside","Ok, well done. We can start now."}
|
||||
},
|
||||
{
|
||||
"true",
|
||||
{"Ok, head off to another trader, you can't deliver to any nearby.","All set. Now take the Monster to another trader further away.","Take that Monster to another trader or trader city."}
|
||||
},
|
||||
{
|
||||
"EPOCH_task_startTime + 60 < diag_ticktime",
|
||||
{"Sorrz, he is an old Man and not very fast...","My Monster is very old a bit lazy"}
|
||||
},
|
||||
{
|
||||
"EPOCH_task_startTime + 120 < diag_ticktime && EPOCH_Monster distance player > 350",
|
||||
{"Don't go to far away or you loose the Monster","Hey, wait for my Monster!"}
|
||||
},
|
||||
{
|
||||
"EPOCH_Monster distance player < 20",
|
||||
{"Go forward, my Monster will follow you!","Hurry up a bit. My Monster is hungry..."}
|
||||
},
|
||||
{
|
||||
"(count (player nearentities [[""C_Man_1""],42]) > 0) && (count (((player nearentities [[""C_Man_1""],42]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)",
|
||||
{"Well done, you have a trader nearby, go see him","Looks like you found another trader, well done, deliver the Monster.","UAV has spotted another trader nearby, go deliver the Monster."}
|
||||
},
|
||||
{
|
||||
"(EPOCH_task_startTime + 480 < diag_tickTime) && ((player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]]))",
|
||||
{"Hey, what are you doing here ? Get on with your task!"}
|
||||
}
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime = 2000;
|
||||
failedCondition = "!alive EPOCH_Monster || !alive player || EPOCH_Monster distance player > 500";
|
||||
faileddialogues[] = {"Oh no, you lost my Monster - Mission Failed","My Monster ist gone, Mission Over!"};
|
||||
completeCondition = "player distance EPOCH_Monster < 50 && (count (player nearentities [[""C_Man_1""],20]) > 0) && (count (((player nearentities [[""C_Man_1""],20]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)";
|
||||
completedialogues[] = {"Hey, you bring me my friends Monster?","Great Job there. Step into my office traveller.","You made it, thanks for bringing me the Monster."};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"finishMonsterEscort"};
|
||||
};
|
||||
class finishMonsterEscort {
|
||||
author = "He-Man";
|
||||
title = "Finish Monster Escort";
|
||||
simpleTask = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 8;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]; deletevehicle EPOCH_Monster";
|
||||
dialogues[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
callevents[] = { // {{ARRAY1},{ARRAY2},... }
|
||||
};
|
||||
abandonTime = 240;
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {};
|
||||
completeCondition = "true";
|
||||
completedialogues[] = {"Take your reward, you have earnt it","Here is your reward, you are a great courier.","Any time you need work, come and see me, great job."};
|
||||
completedCALL = "_WH = createVehicle[""groundWeaponHolder"",getPosATL player,[],0,""CAN_COLLIDE""];[_WH,""Mission_Monster_Payout""] remoteExec [""EPOCH_serverLootObject"",2];";
|
||||
reward[] = {};
|
||||
cleanUp = 1;
|
||||
nextTask[] = {};
|
||||
};
|
@ -2,165 +2,262 @@ class uavMissionAccepted{
|
||||
author = "axeman";
|
||||
title = "UAV Mission Accepted";
|
||||
simpleTask = 0;
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 3;
|
||||
triggerDelay = 2;
|
||||
items[] = {"B_UavTerminal"};
|
||||
itemSpawn = 3;
|
||||
items[] = {};
|
||||
triggerDelay = 1;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
callEventBinTask = 0;
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"The UAV terminal is at your feet, Equip it !","Pick up the terminal and equip yourself with it.","Grab the UAV terminal and put it in your GPS slot."};
|
||||
diagSquelch = 30;
|
||||
diag2Condition = "!('B_UavTerminal' in assignedItems player)";
|
||||
dialogue2[] = {"Hurry it up, pick up and equip the terminal.","Come on, Equip yourself with the terminal.","We don't have all day, get that terminal equipped."};
|
||||
abandonDist = 100;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "";
|
||||
dialogues[] = {};
|
||||
callevents[] = {};
|
||||
abandonTime = 240;
|
||||
failed[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the terminal. Misison Failed !"};
|
||||
failedCondition = "missionNameSpace getVariable [""InSafeZone"",false]";
|
||||
faileddialogues[] = {"Mission not allowed in Safe Zone"};
|
||||
completeCondition = "true";
|
||||
completedialogues[] = {};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"uavMissionStart"};
|
||||
|
||||
// Not used atm
|
||||
taskLimit = 3;
|
||||
itemSpawn = 3;
|
||||
callEventBinTask = 0;
|
||||
diagSquelch = 30;
|
||||
abandonDist = 100;
|
||||
};
|
||||
class uavMissionStart{
|
||||
author = "axeman";
|
||||
title = "UAV Mission Start";
|
||||
simpleTask = 0;
|
||||
items[] = {"B_UavTerminal"};
|
||||
triggerDelay = 1;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "";
|
||||
dialogues[] = {
|
||||
{
|
||||
"true",
|
||||
{"The UAV terminal is at your feet, Equip it !","Pick up the terminal and equip yourself with it.","Grab the UAV terminal and put it in your GPS slot."}
|
||||
},
|
||||
{
|
||||
"!('B_UavTerminal' in assignedItems player)",
|
||||
{"Hurry it up, pick up and equip the terminal.","Come on, Equip yourself with the terminal.","We don't have all day, get that terminal equipped."}
|
||||
}
|
||||
};
|
||||
callevents[] = {
|
||||
{
|
||||
"missionNameSpace getVariable [""InSafeZone"",false]",
|
||||
"['Mission not allowed in Safe Zone',5] call Epoch_Message",
|
||||
{}
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
abandonTime = 240;
|
||||
failedCondition = "false";
|
||||
faileddialogues[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the terminal. Misison Failed !"};
|
||||
completeCondition = "'B_UavTerminal' in assignedItems player";
|
||||
completed1[] = {"That's great, you have 30 seconds to find a safe position.","Find a hidden spot to operate from, take off in 30 seconds.","Find yourself a concealed position to work from, taking off in half a minute."};
|
||||
completedialogues[] = {"That's great, you have 30 seconds to find a safe position.","Find a hidden spot to operate from, take off in 30 seconds.","Find yourself a concealed position to work from, taking off in half a minute."};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"doUAVSpawn"};
|
||||
|
||||
// Not used atm
|
||||
taskLimit = 3;
|
||||
itemSpawn = 3;
|
||||
callEventBinTask = 0;
|
||||
diagSquelch = 30;
|
||||
abandonDist = 100;
|
||||
};
|
||||
class doUAVSpawn{
|
||||
author = "axeman";
|
||||
title = "UAV Spawn";
|
||||
simpleTask = 0;
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 8;
|
||||
items[] = {};
|
||||
triggerDelay = 30;
|
||||
itemSpawn = 0;
|
||||
triggerintervall = 2;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
markerText = "";
|
||||
initcall = "axeUAV = objNull";
|
||||
callEventBinTask = 0;
|
||||
callEventCondition1 = "(diag_tickTime - EPOCH_task_startTime) > 6";
|
||||
callEventCALL1 = "_targetPos = (getPosATL player) findEmptyPosition [25,250,""I_UAV_01_F""];axeUAV = createVehicle[""I_UAV_01_F"", _targetPos, [], 10, ""CAN_COLLIDE""];axeUAV disableTIEquipment true;_driver = (group player) createUnit[""I_UAV_AI"", position axeUAV, [], 0, ""CAN_COLLIDE""];_driver moveInAny axeUAV;";
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"UAV is ready, get prepared !","Here it comes, connecting you now. 10 seconds..","Nice spot, connecting you to the UAV !"};
|
||||
diagSquelch = 60;
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player)";
|
||||
abandonDist = -1;
|
||||
abandonTime = 1200;
|
||||
failed[] = {"Lost it already.. Mission Over","Not a willing pilot eh ? Try again later.","Equipment Lost.. Mission Failed !"};
|
||||
cleanUp = 0;
|
||||
cleanUpCall = "";
|
||||
dialogues[] = {
|
||||
{
|
||||
"true",
|
||||
{"UAV is ready, get prepared! Connecting in 10 seconds","Here it comes, connecting you in 10 seconds..","Nice spot, connecting you to the UAV in 10 seconds!"}
|
||||
}
|
||||
};
|
||||
callevents[] = {
|
||||
{
|
||||
"(diag_tickTime - EPOCH_task_startTime) > 40",
|
||||
"_targetPos = (getPosATL player) findEmptyPosition [25,250,""I_UAV_01_F""];axeUAV = createVehicle[""I_UAV_01_F"", _targetPos, [], 10, ""CAN_COLLIDE""];axeUAV disableTIEquipment true;_driver = (group player) createUnit[""I_UAV_AI"", position axeUAV, [], 0, ""CAN_COLLIDE""];_driver moveInAny axeUAV;[axeUAV] remoteExec [""EPOCH_localCleanup"",2]",
|
||||
{}
|
||||
}
|
||||
};
|
||||
abandonTime = 240;
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive player)";
|
||||
faileddialogues[] = {"Lost it already.. Mission Over","Not a willing pilot eh ? Try again later.","Equipment Lost.. Mission Failed !"};
|
||||
completeCondition = "!(isNull axeUAV)";
|
||||
completedialogues[] = {};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"doUAVAttach"};
|
||||
};
|
||||
class doUAVAttach{
|
||||
author = "axeman";
|
||||
title = "UAV Spawn";
|
||||
simpleTask = 0;
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 16;
|
||||
triggerDelay = 6;
|
||||
itemSpawn = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 2;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
initcall = "player connectTerminalToUAV axeUAV;player action [""SwitchToUAVDriver"", axeUAV];addToRemainsCollector[axeUAV];";
|
||||
callEventBinTask = 0;
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"Woohoo, here we go.. Get it in the air.","Get it in the air, no time to waste","You are a natural kid. Let's fly."};
|
||||
diagSquelch = 60;
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)";
|
||||
abandonDist = -1;
|
||||
markerText = "";
|
||||
initcall = "player action [""SwitchToUAVDriver"", axeUAV];addToRemainsCollector[axeUAV];";
|
||||
cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV";
|
||||
dialogues[] = {
|
||||
{
|
||||
"true",
|
||||
{"Woohoo, here we go.. Get it in the air.","Get it in the air, no time to waste","You are a natural kid. Let's fly."}
|
||||
}
|
||||
};
|
||||
callevents[] = {};
|
||||
abandonTime = 1200;
|
||||
failed[] = {"Lost it already.. Mission Over","Not a natural pilot. Try again later.","Mission Failed !"};
|
||||
cleanUp = 0;
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV";
|
||||
faileddialogues[] = {"Lost it already.. Mission Over","Not a natural pilot. Try again later.","Mission Failed !"};
|
||||
completeCondition = "(getPosATL axeUAV select 2) > 10";
|
||||
completedialogues[] = {};
|
||||
completedCALL = "if(SunOrMoon < 1)then{player action [""lightOn"", axeUAV];};";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {"takeOffUAV"};
|
||||
};
|
||||
class takeOffUAV{
|
||||
author = "axeman";
|
||||
title = "Pilot the UAV";
|
||||
simpleTask = 0;
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 8;
|
||||
triggerDelay = 6;
|
||||
itemSpawn = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 8;
|
||||
triggerintervall = 8;
|
||||
markerType = 0;
|
||||
markerVisible = 0;
|
||||
markerRadius = 0;
|
||||
initcall = "axeUAVRndMission = floor random 2;";
|
||||
callEventBinTask = 1;
|
||||
callEventCondition1 = "(diag_tickTime - EPOCH_task_startTime > 30) && axeUAVRndMission == 0";
|
||||
callEventCondition2 = "(diag_tickTime - EPOCH_task_startTime > 30) && axeUAVRndMission == 1";
|
||||
callEventTask1 = "uavMission1";
|
||||
callEventTask2 = "uavMission2";
|
||||
diag1Condition = "alive axeUAV";
|
||||
dialogue1[] = {"Great start.. Lets take this thing for a ride.","We're off, get some practice, I am finding you a target.","Get clear of this area, I am calculating your target."};
|
||||
diagSquelch = 60;
|
||||
diag2Condition = "alive axeUAV";
|
||||
dialogue2[] = {"Keep it up, you are doing a great job.","Try and find some targets on your way.","Don't get shot down now !"};
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)";
|
||||
abandonDist = -1;
|
||||
abandonTime = 1280;
|
||||
failed[] = {"Oh dear, that didn't go well..","Try again later.","Misison Failed !"};
|
||||
cleanUp = 0;
|
||||
markerText = "";
|
||||
initcall = "";
|
||||
cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV";
|
||||
dialogues[] = {
|
||||
{
|
||||
"alive axeUAV",
|
||||
{"Great start.. Lets take this thing for a ride.","We're off, get some practice, I am finding you a target.","Get clear of this area, I am calculating your target."}
|
||||
},
|
||||
{
|
||||
"alive axeUAV",
|
||||
{"Keep it up, you are doing a great job.","Try and find some targets on your way.","Don't get shot down now !"}
|
||||
}
|
||||
};
|
||||
callevents[] = {
|
||||
{
|
||||
"diag_tickTime - EPOCH_task_startTime > 30",
|
||||
"",
|
||||
{"uavMission1","uavMission2"}
|
||||
}
|
||||
};
|
||||
abandonTime = 240;
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV";
|
||||
faileddialogues[] = {"Oh dear, that didn't go well..","Try again later.","Misison Failed !"};
|
||||
completeCondition = "false";
|
||||
completedCALL = "player connectTerminalToUAV objNull;";
|
||||
completedialogues[] = {};
|
||||
completedCALL = "";
|
||||
reward[] = {};
|
||||
cleanUp = 0;
|
||||
nextTask[] = {};
|
||||
};
|
||||
class uavMission1{
|
||||
author = "axeman";
|
||||
title = "Trader House Recon";
|
||||
simpleTask = 0;
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 16;
|
||||
triggerDelay = 8;
|
||||
items[] = {""};
|
||||
itemSpawn = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 0;
|
||||
triggerintervall = 8;
|
||||
markerType = 2;
|
||||
markerVisible = 0;
|
||||
markerRadius = 180;
|
||||
markerText = "Trader House Recon";
|
||||
initcall = "[] spawn {uavMission1Obj = selectRandom (nearestObjects [axeUAV,[""HOUSE""],2500]);EPOCH_taskMarkerPos = getPosATL uavMission1Obj;};";
|
||||
callEventBinTask = 0;
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"I need some recon on a nearby house","We need intelligence on a potential trader location.","Help us gather intel on a trader house !"};
|
||||
diagSquelch = 60;
|
||||
diag2Condition = "EPOCH_taskMarkerPos distance axeUAV > 450";
|
||||
dialogue2[] = {"I have marked your map, it will be nearby.","Check you map, there is a marker near a safehouse","Search your map for the landing zone, near a traders safehouse."};
|
||||
diag3Condition = "EPOCH_taskMarkerPos distance axeUAV < 450";
|
||||
dialogue3[] = {"Land it nearby and switch off the engine.","You need to land by the house, quietly.","Drop the UAV in the marker, then keep quiet."};
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)";
|
||||
abandonDist = -1;
|
||||
abandonTime = 2200;
|
||||
failed[] = {"Oh dear, Mission Over !","Mission Failed !"};
|
||||
cleanUp = 1;
|
||||
initcall = "_obj = selectRandom (nearestObjects [axeUAV,[""HOUSE""],2500]);EPOCH_taskMarkerPos = getPosATL _obj;";
|
||||
cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV";
|
||||
dialogues[] = {
|
||||
{
|
||||
"true",
|
||||
{"I need some recon on a nearby house","We need intelligence on a potential trader location.","Help us gather intel on a trader house !"}
|
||||
},
|
||||
{
|
||||
"EPOCH_taskMarkerPos distance axeUAV > 450",
|
||||
{"I have marked your map, it will be nearby.","Check you map, there is a marker near a safehouse","Search your map for the landing zone, near a traders safehouse."}
|
||||
},
|
||||
{
|
||||
"EPOCH_taskMarkerPos distance axeUAV < 450",
|
||||
{"Land it nearby and switch off the engine.","You need to land by the house, quietly.","Drop the UAV in the marker, then keep quiet."}
|
||||
}
|
||||
};
|
||||
callevents[] = {};
|
||||
abandonTime = 900;
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV";
|
||||
faileddialogues[] = {"Oh dear, Mission Over !","Mission Failed !"};
|
||||
completeCondition = "!(isengineOn axeUAV) && EPOCH_taskMarkerPos distance axeUAV < 275";
|
||||
completedialogues[] = {"Great work, here's your reward."};
|
||||
completedCALL = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV";
|
||||
reward[] = {"ItemGoldBar","ItemGoldBar"};
|
||||
completed1[] = {"Great work, here's your reward."};
|
||||
completedCALL = "player connectTerminalToUAV objNull;[(driver axeUAV)] joinSilent grpNull;";
|
||||
cleanUp = 1;
|
||||
nextTask[] = {};
|
||||
};
|
||||
class uavMission2{
|
||||
author = "axeman";
|
||||
title = "Deliver UAV To Trader";
|
||||
simpleTask = 0;
|
||||
taskLimit = 3;
|
||||
taskCheckTime = 16;
|
||||
triggerDelay = 8;
|
||||
itemSpawn = 0;
|
||||
items[] = {};
|
||||
triggerDelay = 0;
|
||||
triggerintervall = 8;
|
||||
markerType = 2;
|
||||
markerVisible = 0;
|
||||
markerRadius = 220;
|
||||
markerText = "UAV Trader";
|
||||
initcall = "[] spawn {EPOCH_taskUAVTrader = selectRandom (player nearentities [[""C_Man_1""],10500] select {_x getVariable [""AI_SLOT"",-1] > -1 && player distance _x > 50});EPOCH_taskMarkerPos = getPosATL EPOCH_taskUAVTrader;};";
|
||||
callEventBinTask = 0;
|
||||
diag1Condition = "true";
|
||||
dialogue1[] = {"I need this UAV delivering to my buddy","Recon a rogue trader, land this near his location.","Land this UAV near the target trader."};
|
||||
diagSquelch = 60;
|
||||
diag2Condition = "EPOCH_taskMarkerPos distance axeUAV > 450";
|
||||
dialogue2[] = {"Check your map for his location, you will need to land nearby.","I have marked your map with his location.","Fly to the location marked on your map, then land."};
|
||||
diag3Condition = "EPOCH_taskMarkerPos distance axeUAV < 450";
|
||||
dialogue3[] = {"Get this thing down and the engine off.","Land in the zone and switch your engine off quickly.","Find a landing spot in the area and keep quiet."};
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)";
|
||||
abandonDist = -1;
|
||||
abandonTime = 2600;
|
||||
failed[] = {"Oh dear, Mission Over !","Mission Failed !"};
|
||||
cleanUp = 1;
|
||||
cleanUpCalls[] = {"player connectTerminalToUAV objNull"};
|
||||
completeCondition = "!(isengineOn axeUAV) && EPOCH_taskMarkerPos distance axeUAV < 275";
|
||||
reward[] = {"ItemGoldBar","ItemGoldBar"};
|
||||
completed1[] = {"Great work, here's your reward."};
|
||||
completedCALL = "player connectTerminalToUAV objNull;[(driver axeUAV)] joinSilent grpNull;";
|
||||
initcall = "_obj = selectRandom (player nearentities [[""C_Man_1""],10500] select {_x getVariable [""AI_SLOT"",-1] > -1 && player distance _x > 50});EPOCH_taskMarkerPos = getPosATL _obj;";
|
||||
cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV";
|
||||
dialogues[] = {
|
||||
{
|
||||
"true",
|
||||
{"I need this UAV delivering to my buddy","Recon a rogue trader, land this near his location.","Land this UAV near the target trader."}
|
||||
},
|
||||
{
|
||||
"EPOCH_taskMarkerPos distance axeUAV > 450",
|
||||
{"Check your map for his location, you will need to land nearby.","I have marked your map with his location.","Fly to the location marked on your map, then land."}
|
||||
},
|
||||
{
|
||||
"EPOCH_taskMarkerPos distance axeUAV < 450",
|
||||
{"Get this thing down and the engine off.","Land in the zone and switch your engine off quickly.","Find a landing spot in the area and keep quiet."}
|
||||
}
|
||||
};
|
||||
callevents[] = {};
|
||||
abandonTime = 900;
|
||||
failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV";
|
||||
faileddialogues[] = {"Oh dear, Mission Over !","Mission Failed !"};
|
||||
completeCondition = "!(isengineOn axeUAV) && EPOCH_taskMarkerPos distance axeUAV < 275";
|
||||
completedialogues[] = {"Great work, here's your reward."};
|
||||
completedCALL = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV";
|
||||
reward[] = {"ItemGoldBar","ItemGoldBar"};
|
||||
cleanUp = 1;
|
||||
nextTask[] = {};
|
||||
};
|
||||
|
@ -17,4 +17,6 @@ class inGameTasks {
|
||||
#include "CfgMissions\CfgmissionDelivery.hpp"
|
||||
#include "CfgMissions\CfgmissionUav.hpp"
|
||||
#include "CfgMissions\CfgmissionMilitary.hpp"
|
||||
#include "CfgMissions\CfgmissionMonster.hpp"
|
||||
#include "CfgMissions\CfgmissionFish.hpp"
|
||||
};
|
@ -561,6 +561,62 @@ class CfgMainTable
|
||||
LootMax = 10;
|
||||
tables[] = { "Mission_Payout1" };
|
||||
};
|
||||
class Mission_Monster_Payout
|
||||
{
|
||||
lootMin = 12;
|
||||
LootMax = 20;
|
||||
tables[] = {
|
||||
{ "Tools", 8 },
|
||||
{ "BaseBuilding", 6 },
|
||||
{ "Food", 11 },
|
||||
{ "Equipment", 5 },
|
||||
{ "SniperRifle", 5 },
|
||||
{ "SniperRifleAmmo", 6 },
|
||||
{ "Rifle", 6 },
|
||||
{ "RifleAmmo", 8 },
|
||||
{ "Machinegun", 6 },
|
||||
{ "MachinegunAmmo", 8 },
|
||||
{ "Pistols", 5 },
|
||||
{ "PistolAmmo", 7 },
|
||||
{ "Scopes", 8 },
|
||||
{ "Muzzles", 5 },
|
||||
{ "Hand", 10 },
|
||||
{ "Explosives", 5 },
|
||||
{ "Backpack", 7 },
|
||||
{ "Uniforms", 7 },
|
||||
{ "Vests", 7 },
|
||||
{ "HeadgearArmored", 8 },
|
||||
{ "GenericAuto", 3 }
|
||||
};
|
||||
};
|
||||
class Mission_Fishing_Payout
|
||||
{
|
||||
lootMin = 8;
|
||||
LootMax = 16;
|
||||
tables[] = {
|
||||
{ "Tools", 8 },
|
||||
{ "BaseBuilding", 6 },
|
||||
{ "Food", 11 },
|
||||
{ "Equipment", 5 },
|
||||
{ "SniperRifle", 5 },
|
||||
{ "SniperRifleAmmo", 6 },
|
||||
{ "Rifle", 6 },
|
||||
{ "RifleAmmo", 8 },
|
||||
{ "Machinegun", 6 },
|
||||
{ "MachinegunAmmo", 8 },
|
||||
{ "Pistols", 5 },
|
||||
{ "PistolAmmo", 7 },
|
||||
{ "Scopes", 8 },
|
||||
{ "Muzzles", 5 },
|
||||
{ "Hand", 10 },
|
||||
{ "Explosives", 5 },
|
||||
{ "Backpack", 7 },
|
||||
{ "Uniforms", 7 },
|
||||
{ "Vests", 7 },
|
||||
{ "HeadgearArmored", 8 },
|
||||
{ "GenericAuto", 3 }
|
||||
};
|
||||
};
|
||||
class Sheep_random_EPOCH
|
||||
{
|
||||
lootMin = 2;
|
||||
|
Loading…
Reference in New Issue
Block a user