johnnyboy 3791 Posted December 18, 2019 Its BBQ time kids! Download Demo Mission Features 3 styles of BBQ compositions: Spit roast large animal (goat, sheep, boars, etc.) Grill fish or small food items directly over fire. Cannibal roticery (as seen in my Property of Mabunga mission) Credit: I want to thank @F2kSel for the roll function that rotates the roticery. init.sqf: Spoiler call compile PreprocessFileLineNumbers "Scripts\JBOY_BBQ.sqf"; // ****************************************************************************** // BBQ a goat on a spit above fire. First parameter is name of a burning campfire object. // ****************************************************************************** _n=[bbqFire1] spawn {params["_fire"]; sleep 2; _n=[_fire,"Goat_random_F",true] spawn JBOY_BBQ;}; // ****************************************************************************** // BBQ some fish on an imaginary grill or pan close to fire. First parameter is name of a burning campfire object. // ****************************************************************************** [grillFire1,["Mullet_F", "Ornate_random_F", "Salema_F", "Mackerel_F"]] spawn JBOY_makeCookingFood; // ****************************************************************************** // BBQ a man ("long pork"!) on a roticery. Note: Due to position of animal center, // they don't look good on roticery. Maybe someone else can make that work... // ****************************************************************************** null=[longpork] spawn JBOY_Roticery ; JBOY_BBQ scripts Spoiler //[bbq1,"Goat_random_F"] spawn JBOY_BBQ; // From init.sqf, spawn with delay: _n=[_x] spawn {params["_fire"]; sleep 2; _n=[_fire,"Goat_random_F",true] spawn JBOY_BBQ;}; JBOY_BBQ = { params["_fire","_animalType",["_addSkulls",false]]; _critter = createAgent [_animalType, getPosATL player, [], 5, "NONE"]; _critter setdamage 1; sleep 2; // wait long enough for death animation complete. They look better dead on bbq. _critter enableSimulation false; _poleStart = createVehicle ["Pole_F", _fire modelToWorld [1.1,0,-.5], [], 0, "CAN_COLLIDE"]; _poleStart enableSimulation false; _poleEnd = createVehicle ["Pole_F", _fire modelToWorld [-1.1, 0, -.5], [], 0, "CAN_COLLIDE"]; _poleEnd enableSimulation false; _skewer = createVehicle ["Pole_F", getpos _fire vectorAdd [0,-.05,.5], [], 0, "CAN_COLLIDE"]; _skewer setdir getdir _poleStart; _skewer enablesimulationGlobal false; _skewer setdir (([_poleStart,_poleEnd] call BIS_fnc_dirTo) + 90); [_skewer,0,90] call BIS_fnc_setPitchBank; _dirTo = ([_poleStart,_poleEnd] call BIS_fnc_dirTo); // color the poles {_x SetObjectTextureGlobal [0,"#(rgb,8,8,3)color(0,1,0,0.01)"]; } foreach [_skewer,_poleStart,_poleEnd]; {_x SetObjectTextureGlobal [1,"#(rgb,8,8,3)color(0,1,0,0.01)"]; } foreach [_skewer,_poleStart,_poleEnd]; if (_addSkulls) then { _skullStart = createVehicle ["Land_HumanSkull_F", [0,0,1], [], 0, "CAN_COLLIDE"]; _skullEnd = createVehicle ["Land_HumanSkull_F", [0,0,2], [], 0, "CAN_COLLIDE"]; _skullStart enableSimulation false; _skullEnd enableSimulation false; // null=[_skullStart,[-.04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; // null=[_skullStart,[ .04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; // null=[_skullEnd,[-.04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; // null=[_skullEnd,[ .04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; // _skullStart attachTo [_poleStart,[0,0,1]]; // _skullEnd attachTo [_poleEnd,[0,0,1]]; _skullStart setpos (_poleStart modelToWorld [0,0,1]); _skullEnd setpos (_poleEnd modelToWorld [0,0,1]); _skullStart setdir ([_fire,_poleStart] call BIS_fnc_dirTo); _skullEnd setdir ([_fire,_poleEnd] call BIS_fnc_dirTo); }; _critter setdir (getdir _fire + 90); _critter setpos (_fire modelToWorld [-.3,-.01, (getpos _skewer select 2) + .5]); [_critter,0,60] call BIS_fnc_setPitchBank; }; // ************************************************************************ // [cookFire1,["Item_Fod_Fish_B", "Item_Fod_Turtle_B","Item_Fod_Corn_B","Item_Fod_Chicken_B","Catshark_F","Mullet_F"]] spawn JBOY_makeCookingFood; // "Item_Fod_Fish_B", "Item_Fod_Turtle_B","Item_Fod_Corn_B" // ************************************************************************ JBOY_makeCookingFood = { params["_fire","_foodTypes"]; //sleep 1; _food1 = createSimpleObject [selectRandom _foodTypes,[0,0,0]]; //_food1 attachTo [_fire,[0.05,0,.25]]; _food1 attachTo [_fire,[0.1,0,.25]]; _food1 setdir (getdir _fire +170); _food2 = createSimpleObject [selectRandom _foodTypes,[0,0,0]]; //_food2 attachTo [_fire,[-0.06,-.16,.25]]; _food2 attachTo [_fire,[-0.01,0,.25]]; _food3 = createSimpleObject [selectRandom _foodTypes,[0,0,0]]; //_food3 attachTo [_fire,[0.1,0.14,.25]]; _food3 attachTo [_fire,[-0.1,0,.25]]; [_food1,0,90] call BIS_fnc_setPitchBank; [_food2,0,90] call BIS_fnc_setPitchBank; [_food3,0,90] call BIS_fnc_setPitchBank; food3 = _food3; //_fire setdir (random 360); }; // *********************************************************** // Puts a man on a roticery, for your cannibal bbq pleasure. // Tried it with animals, but its too difficult to center them for rotating, so it looks bad on animals. // *********************************************************** JBOY_Roticery = { // null=[lunchObj] execvm "Scripts\roticery.sqf" ; if (! isServer) exitwith {}; params["_lunch"]; _lunch setUnitPos "DOWN"; // Give time for unit to go prone. sleep 2; //_lunch setdamage 1; _skewerHeight = .85; _skewerZOffset = -.4; // Height .85 Offset .4 good for man if (( typeOf _lunch) find "Animal" >=0) then { // its a man _skewerHeight = .85; _skewerZOffset = -.1; }; // { // its a goat // _skewerHeight = .85; // _skewerZOffset = -.4; // }; _lunch enablesimulationGlobal false; _lunch setpos [getpos _lunch select 0, getpos _lunch select 1, _skewerHeight]; // Create a skewer and orient it to skewer the horizontal lunch object _skewer = createVehicle ["Pole_F", [0,0,1.5], [], 0, "CAN_COLLIDE"]; _lunch enableCollisionWith _skewer; //_lunch setdir (getdir _skewer) +180; _skewer enablesimulationGlobal false; _skewer setpos [getpos _lunch select 0, (getpos _lunch select 1), (getpos _lunch select 2)+_skewerZOffset]; _skewer setVectorDirAndUp [[0,1,0],[1,0,0]]; _lunch setVectorDir [1,0,0]; // Create a fire and two poles to hold up the skewer. _fire = createVehicle ["Campfire_burning_F", [getpos _lunch select 0, getpos _lunch select 1, 0], [], 0, "CAN_COLLIDE"]; _fire setdir getdir _lunch; if (( typeOf _lunch) find "Animal" >=0) then { // center of dead animal is at its butt instead of center, so shift him over _lunch setpos (_lunch modelToWorld [0,-.5,.2]); null = [_lunch,0,60] call BIS_fnc_setPitchBank; // center of boar: ball attachTo [snack,[-.2,.3,.1]]; }; _poleStart = createVehicle ["Pole_F", _fire modelToWorld [0,1.1,0], [], 0, "CAN_COLLIDE"]; _poleEnd = createVehicle ["Pole_F", _fire modelToWorld [0,-1.1,0], [], 0, "CAN_COLLIDE"]; _skullStart = createVehicle ["Land_HumanSkull_F", [0,0,1], [], 0, "CAN_COLLIDE"]; _skullEnd = createVehicle ["Land_HumanSkull_F", [0,0,2], [], 0, "CAN_COLLIDE"]; // null=[_skullStart,[-.04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; // null=[_skullStart,[ .04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; // null=[_skullEnd,[-.04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; // null=[_skullEnd,[ .04, -.07, 0.028]] execvm "Scripts\createEye.sqf" ; _skullStart attachTo [_poleStart,[0,0,1]]; _skullEnd attachTo [_poleEnd,[0,0,1]]; _skullEnd setdir (getdir _skullStart + 180); _generator = createVehicle ["Land_Portable_generator_F", _fire modelToWorld [0,-1.5,0], [], 0, "CAN_COLLIDE"]; {_x enablesimulationGlobal false; } foreach [_poleStart,_poleEnd]; {_x SetObjectTextureGlobal [0,"#(rgb,8,8,3)color(0,1,0,0.01)"]; } foreach [_skewer,_poleStart,_poleEnd]; {_x SetObjectTextureGlobal [1,"#(rgb,8,8,3)color(0,1,0,0.01)"]; } foreach [_skewer,_poleStart,_poleEnd]; [_lunch,360000,0.05] call f2ksel_roll; // [[[_lunch,360000,0.05],"Scripts\roll.sqf"],"BIS_fnc_execVM",true,true] call BIS_fnc_MP; //null=[_lunch,360*10,0.1] execvm "Scripts\roll.sqf" ; }; f2ksel_roll = { //null=[air1,360,0.01] execvm "Scripts\roll.sqf" ; // by f2ksel (Thank you f2ksel for this great rotation script! // nul=[planename,degrees,transitionspeed] execvm "Scripts\roll.sqf" ; // null=[air1,360,0.01] execvm "roll.sqf" ; // degrees 360 would = 1 roll, 720 = two rolls, pick a large number for multiple rolls. // transition = the speed of the roll, the smaller the number the faster the roll diag_log ["roll.sqf",_this]; _obj = _this select 0; _pitchbank = _obj call BIS_fnc_getPitchBank; _pitch = _pitchbank select 0; _bank = _pitchbank select 1; _deg = _this select 1; _transpeed = _this select 2; _down = 0; // 0.5 amount used to force the plane down. //diag_log [_this,_pitch,_bank]; // input new bank angle _p = 0; for [{_p = _bank},{_p < _bank + _deg},{_p = _p + 1}] do { sleep _transpeed; //diag_log [_obj,_pitch,_p];x [_obj,_pitch, _p] call BIS_fnc_setPitchBank; // _obj setpos (_obj worldToModel _centerPos); if (simulationEnabled _obj) exitWith {}; //if (getpos _obj select 2 < 20) exitWith {};// height at which roll should stop //_pitch = _pitch -0.05;// This will force it down a little quicker }; }; 7 2 4 Share this post Link to post Share on other sites
EO 11275 Posted December 18, 2019 Finger lickin' good. 3 Share this post Link to post Share on other sites
GEORGE FLOROS GR 4207 Posted December 18, 2019 Pushing again arma 3 to new paths ! Keep a human stake for me as well ! Nice work johnnyboy ! 3 Share this post Link to post Share on other sites
killzone_kid 1330 Posted December 18, 2019 you are sick! 1 1 1 Share this post Link to post Share on other sites
asys 42 Posted March 21, 2022 I read one book about war, modern warfare. There was a scene of the execution of the pilot of aircraft by civilian, whom he bombed before. He was tied to an iron bed and slowly roasted over a fire. In your video (1:08), replace the stick on a metal mesh bed and you get that episode from the book. Share this post Link to post Share on other sites