TheoneandonlyNOR 12 Posted June 6, 2019 Hello! I get straigt to the point: I am creating a mission in 3Eden and I have stumbled on an holdback. I have used the ALIVE modules to make civilians spawn on the map. (Standard ALIVE Civilian spawn) And if I use Allow interact in the module "Civilian Population" We can interact with them in-game to detain, tell go away and so on... But I wish to have this on the ACE interaction menu instead. How do I make this? I belive this is done tru scripting. Regards!!! Share this post Link to post Share on other sites
redarmy 420 Posted June 6, 2019 2 hours ago, TheoneandonlyNOR said: Hello! I get straigt to the point: I am creating a mission in 3Eden and I have stumbled on an holdback. I have used the ALIVE modules to make civilians spawn on the map. (Standard ALIVE Civilian spawn) And if I use Allow interact in the module "Civilian Population" We can interact with them in-game to detain, tell go away and so on... But I wish to have this on the ACE interaction menu instead. How do I make this? I belive this is done tru scripting. Regards!!! Highly doubt it can be done without collaberation between the ACE3 team and ALIVE team. Share this post Link to post Share on other sites
TheoneandonlyNOR 12 Posted June 6, 2019 5 hours ago, redarmy said: Highly doubt it can be done without collaberation between the ACE3 team and ALIVE team. ow it can. We got an mission called Hearts and minds. And in that mission the maker have scripted that function. And this is what he used to make it work: (I could not) Unit_init.sqf: private ["_unit","_type"]; _unit = _this select 0; _type = typeOf _unit; diag_log format ["UNIT INIT : %1",[_this,side (_this select 0), _type]]; switch true do { case (side _unit != west && side _unit != civilian) : { if (isServer) then {_unit call btc_fnc_mil_unit_create;}; if (!isDedicated) then { if (isNil "btc_actions_units") then {btc_actions_units = [];}; if !(_type in btc_actions_units) then { btc_actions_units pushBack _type; _action = ["Search_intel", "Search for intel", "", {(_this select 0) spawn btc_fnc_info_search_for_intel;}, {!Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; }; }; }; case (side _unit isEqualTo civilian) : { if (isServer) then {_unit call btc_fnc_civ_unit_create;}; if (!isDedicated) then { if (isNil "btc_actions_units") then {btc_actions_units = [];}; if !(_type in btc_actions_units) then { btc_actions_units pushBack _type; sleep 1; _action = ["Civil_Orders","Civil Orders","",{},{true}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["Civil_Stop", "Stop", "", {[1,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["Civil_Get_down", "Get down", "", {[2,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["Civil_Go_away", "Go away", "", {[3,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["Ask_Info", "Ask info", "", {[(_this select 0), false] spawn btc_fnc_info_ask;}, {Alive (_this select 0) && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; }; }; }; }; veh_init.sqf: private ["_veh","_type"]; _veh = _this select 0; _type = typeOf _veh; switch true do { case (_type isKindOf "LandVehicle") : { if (isNil "btc_actions_veh") then {btc_actions_veh = [];}; if !(_type in btc_actions_veh) then { private ["_action"]; btc_actions_veh pushBack _type; _action = ["Logistic","Logistic","",{},{true}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["log_tow", "Tow", "", {(_this select 0) spawn btc_fnc_log_tow;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[(_this select 0),btc_log_vehicle_selected] call btc_fnc_log_can_tow}}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["log_hook", "Hook", "", {(_this select 0) spawn btc_fnc_log_hook;}, {true}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["log_hook", "Unhook", "", {(_this select 0) spawn btc_fnc_log_unhook;}, {true}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; //Cargo _action = ["check_cargo", "Check Cargo", "", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["Load_selected", "Load selected", "", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; }; }; case (_type isKindOf "Helicopter") : { if (isNil "btc_actions_veh") then {btc_actions_veh = [];}; if !(_type in btc_actions_veh) then { private ["_action"]; btc_actions_veh pushBack _type; _action = ["Logistic","Logistic","",{},{true}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; //Cargo _action = ["check_cargo", "Check Cargo", "", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["Load_selected", "Load selected", "", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; }; }; }; add_actions.sqf: Spoiler //Arsenal _action = ["btc_arsenal", "Arsenal", "", {["Open",true] call BIS_fnc_arsenal;}, {true}] call ace_interact_menu_fnc_createAction; [btc_gear_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; //Database //_action = ["Database","Database","",{},{serverCommandAvailable "#logout"}] call ace_interact_menu_fnc_createAction; _action = ["Database","Database","",{},{serverCommandAvailable "#logout" || !isMultiplayer}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["request_save","Save","",{call btc_fnc_db_request_save;},{true}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Database"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["request_delete","Delete","",{call btc_fnc_db_request_delete;},{true}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Database"], _action] call ace_interact_menu_fnc_addActionToObject; //Intel _action = ["Search_intel", "Search for intel", "", {(_this select 0) spawn btc_fnc_info_search_for_intel;}, {!Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_type_units; _action = ["Interrogate_intel", "Interrogate", "", {[(_this select 0),true] spawn btc_fnc_info_ask;}, {(Alive (_this select 0) && {[(_this select 0)] call ace_common_fnc_isAwake} && captive (_this select 0))}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_type_units; //IEDs _action = ["Check_IED", "Check for IED", "", {(_this select 0) spawn btc_fnc_ied_check_for;}, {true}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_type_ieds; _action = ["Disarm_IED", "Disarm IED", "", {(_this select 0) spawn btc_fnc_ied_disarm;}, {((_this select 0) getVariable ["active",false] && {"ACE_DefusalKit" in items player})}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_type_ieds; //Log point _action = ["Logistic","Logistic","",{},{true}] call ace_interact_menu_fnc_createAction; [btc_create_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Require_object", "Require object", "", {[btc_create_object_point] spawn btc_fnc_log_create}, {true}, {}, [], [0,0,0.4], 5] call ace_interact_menu_fnc_createAction; [btc_create_object, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Repair_wreck", "Repair wreck", "", {[btc_create_object_point] spawn btc_fnc_log_repair_wreck}, {true}, {}, [], [0,0,0], 5] call ace_interact_menu_fnc_createAction; [btc_create_object, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToObject; //Logistic _action = ["Logistic","Logistic","",{},{true}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_loadable; _action = ["Load_in", "Load in", "", {(_this select 0) call btc_fnc_log_select;}, {true}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_loadable; _action = ["Load_selected", "Load selected", "", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_can_load; _action = ["check_cargo", "Check cargo", "", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_can_load; _action = ["Mount_FOB", "Mount FOB", "", {(_this select 0) spawn btc_fnc_fob_create}, {true}] call ace_interact_menu_fnc_createAction; [btc_fob_mat, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; _action = ["Place", "Place", "", {(_this select 0) spawn btc_fnc_log_place;}, {!btc_log_placing}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_placeable; _action = ["check_cargo","Check cargo","",{(vehicle player) spawn btc_fnc_log_check_cargo;},{!(vehicle player isEqualto player)}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToObject; //Lift _action = ["Lift","Lift","",{},{(typeOf vehicle player) isKindOf "Helicopter"}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Deploy_ropes","Deploy ropes","",{[] spawn btc_fnc_log_lift_deploy_ropes;},{!btc_ropes_deployed && {((driver vehicle player) isEqualTo player)} && {(getposATL player) select 2 > 4}}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Lift"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Cut_ropes","Cut ropes","",{[] spawn btc_fnc_log_lift_destroy_ropes;},{btc_ropes_deployed && {((driver vehicle player) isEqualTo player)}}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Lift"], _action] call ace_interact_menu_fnc_addActionToObject; //Orders _action = ["Civil_Orders","Civil Orders","",{},{true}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Civil_Stop","Stop","",{[1] call btc_fnc_int_orders;},{(vehicle player isEqualTo player)}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Civil_Get_down","Get down","",{[2] call btc_fnc_int_orders;},{(vehicle player isEqualTo player)}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Civil_Go_away","Go away","",{[3] call btc_fnc_int_orders;},{(vehicle player isEqualTo player)}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["Civil_Orders","Civil Orders","",{},{true}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_civ_type_units; _action = ["Civil_Stop", "Stop", "", {[1,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_civ_type_units; _action = ["Civil_Get_down", "Get down", "", {[2,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_civ_type_units; _action = ["Civil_taxi", "Taxi", "", {[4,(_this select 0)] spawn btc_fnc_int_orders;}, {((Alive (_this select 0)) && !((vehicle (_this select 0)) isEqualTo (_this select 0)))}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_civ_type_units; _action = ["Civil_Go_away", "Go away", "", {[3,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_civ_type_units; _action = ["Ask_Info", "Ask info", "", {[(_this select 0),false] spawn btc_fnc_info_ask;}, {Alive (_this select 0) && {[(_this select 0)] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_civ_type_units; _action = ["Ask_Reputation", "Ask Reputation", "", {[(_this select 0)] spawn btc_fnc_info_ask_reputation;}, {Alive (_this select 0) && {[(_this select 0)] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_civ_type_units; //Re-deploy _action = ["fob_redeploy", "Re-deploy", "", {[] spawn btc_fnc_fob_redeploy}, {btc_p_redeploy}, {}, [], [0.4,0,0.4], 5] call ace_interact_menu_fnc_createAction; [btc_gear_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; //Side missions _action = ["side_mission","Side mission","",{},{!(isNil {player getVariable "side_mission"})}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["side_mission","Abort","",{[] call btc_fnc_side_abort},{!(isNil {player getVariable "side_mission"}) && {btc_side_assigned}}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions", "side_mission"], _action] call ace_interact_menu_fnc_addActionToObject; _action = ["side_mission","Request","",{[] spawn btc_fnc_side_request},{!(isNil {player getVariable "side_mission"}) && {!btc_side_assigned}}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions", "side_mission"], _action] call ace_interact_menu_fnc_addActionToObject; Share this post Link to post Share on other sites
JD Wang 352 Posted June 6, 2019 I've looked at this previously, and in the end decided it was way more work than it was worth to me. You basically have to go through the ALiVE code find the functions referred to by the addactions, and then add them as ACE interactions to all civilians that spawn. The slightly easier way then is to create your own ALiVE fork from github and essentially run your own version. Again in my eyes more trouble than it's worth Share this post Link to post Share on other sites