Charles Barkley 1 Posted June 27, 2018 I want to have a backpack initialized with an action to build up a campsite. For now I have the working script to add the action to the backpack and run the script as the action is triggered/used. Now I want the backpack to disappear after the campsite has been built up. I tried to call deleteVehicle but failed. I think it is because the script is bound to the object that I want to remove and therefore does not work. What I am looking for is like a custom event I might create? Like publishing an event called campFinished and registering and event handler to my object which will kill it in the callback function. Is something like this possible? If not - what is the common approach to achieve a similar result? Complete code is open here: https://github.com/xetra11/ReconMod If anybody wants to reproduce it on it's own. fn_backpackInit.sqf params ["_backpackItem"]; format['init backpack: %1', typeOf _backpackItem] call ReconMod_fnc_log; _backpackItem addAction ["Build Recon Camp", ReconMod_fnc_buildCampsite]; fn_buildCampsite.sqf (last line is my try to delete the backpack - does not work) params ["_target", "_caller"]; private ["_message", "_campComposition"]; _message = format['%1 is building up a campsite', name _caller]; hint _message; 'playing build up animation' call ReconMod_fnc_log; _caller playMove "AinvPknlMstpSnonWnonDnon_medicUp3"; _campComposition = [ ["Land_FirePlace_F",[0.407715,-0.0605469,0.00431442],0,1,0,[],"","",true,false], ["Land_WoodenLog_F",[1.30078,-1.04712,4.19617e-005],0,1,0,[],"","",true,false], ["Land_Ground_sheet_folded_khaki_F",[-0.0664063,1.74048,8.01086e-005],260.778,1,0,[],"","",true,false], ["Land_Laptop_02_unfolded_F",[1.31445,-1.0542,0.5],136.964,1,0,[],"","",true,false], ["Land_Sleeping_bag_F",[-1.36768,-0.928467,-0.00595856],37.9681,1,0,[],"","",true,false], ["Land_Sleeping_bag_brown_folded_F",[2.34326,-0.0712891,-3.8147e-006],245.926,1,0,[],"","",true,false], ["Land_Sleeping_bag_F",[-0.641113,1.8584,-0.0278778],174.749,1,0,[],"","",true,false], ["Land_Sleeping_bag_F",[2.49707,0.719482,0.0018959],266.758,1,0,[],"","",true,false], ["Land_Ground_sheet_khaki_F",[3.14111,-0.101318,3.8147e-006],96.0028,1,0,[],"","",true,false], ["Land_CanisterFuel_F",[-2.85938,1.72168,0.000972748],191.718,1,0,[],"","",true,false], ["Land_Ammobox_rounds_F",[3.03857,1.61816,0.00495911],218.802,1,0,[],"","",true,false], ["Land_TentDome_F",[-4.22217,-0.0065918,0.00314331],181.884,1,0,[],"","",true,false], ["Land_Ammobox_rounds_F",[3.88281,1.70947,9.53674e-005],143.886,1,0,[],"","",true,false], ["Land_TentDome_F",[-2.9668,3.74658,0.0138435],215.286,1,0,[],"","",true,false], ["Land_TentDome_F",[3.51807,3.35718,0.00638962],320.122,1,0,[],"","",true,false] ]; 'constructing camp...' call ReconMod_fnc_log; [position _caller, 0, _campComposition] call BIS_fnc_ObjectsMapper; 'camp build!' call ReconMod_fnc_log; hint 'recon camp has been built up'; _message = format['deleting campsite building item: %1', _target]; _message call ReconMod_fnc_log; deleteVehicle _target; Share this post Link to post Share on other sites
Schatten 288 Posted June 27, 2018 What is class name of _backpackItem/_target? If it is something like "WeaponHolder" then use this code: clearBackpackCargoGlobal _target; deleteVehicle _target; If it is backback then use this code: _holder = objectParent _target; clearBackpackCargoGlobal _holder; deleteVehicle _holder; Share this post Link to post Share on other sites
Charles Barkley 1 Posted June 28, 2018 Can you explain why I first have to add it to a container before I remove it? Because placing it in the first place - isn't the backpack added to a global (world) container therefore and should be "deletable" as well? Share this post Link to post Share on other sites
Schatten 288 Posted June 28, 2018 @Charles Barkley, when you create backpack (using createVehicle) or place it in editor holder creates automatically and backpack is placed to holder. So, to delete backpack you need clear holder (using clearBackpackCargo[Global]), then delete holder. 1 Share this post Link to post Share on other sites
Charles Barkley 1 Posted June 29, 2018 Thanks I try it Share this post Link to post Share on other sites
Charles Barkley 1 Posted June 29, 2018 This is my code now _holder objectParent _target; clearBackpackCargoGlobal _holder; deleteVehicle _holder; and this my error message when I run the action on the backpack _holder objectParent _target; clearBackp> 20:53:10 Error position: <_holder objectParent _target; clearBackp> 20:53:10 Error Undefined variable in expression: _holder 20:53:10 File camp\fn_buildCampsite.sqf [ReconMod_fnc_buildCampsite], line 40 Share this post Link to post Share on other sites
Schatten 288 Posted June 29, 2018 @Charles Barkley, you missed assignment operator. Share this post Link to post Share on other sites
Charles Barkley 1 Posted July 1, 2018 ohhhh... It is so weird with these differences in the syntax to figure such mistakes out :3 Thanks! Share this post Link to post Share on other sites
sean97T 0 Posted March 24, 2022 I'm very new to scripting and I'm trying to do something like OP. trying to setup a "barricade" that players have to clear. wether a vehicle or one of the CUP barricades. they activate the action an hour passes and the barricade is gone. Share this post Link to post Share on other sites
dreadedentity 278 Posted March 24, 2022 Take a look at the addAction wiki, in the "script" parameter there are some default parameters passed to the code, _target (_this select 0) is what you are looking for. Here are the pages for sleep and deleteVehicle. So in that code just put: sleep 3600; //60 seconds per minute * 60 minutes deleteVehicle (_this select 0); You don't need to do anything special like the backpack from the original post, the backpack is the special case, not stuff like vehicles/buildings Share this post Link to post Share on other sites