Jump to content

Blackheart_Six

Member
  • Content Count

    311
  • Joined

  • Last visited

  • Medals

Community Reputation

146 Excellent

1 Follower

About Blackheart_Six

  • Rank
    Staff Sergeant

Profile Information

  • Gender
    Male
  • Location
    Virginia

Contact Methods

  • Biography
    US Army, 2 Armored Division.
    Arma user since Arma I
  • Steam url id
    http://steamcommunity.com/id/blackheart_six/

Recent Profile Visitors

1291 profile views
  1. From Discord: Roy86Today at 7:34 AM @[AWG]Blackheart_Six Well the good news is all the bugs are fixed. I am just in the process of adding each feature back and testing as I had to rewrite the core event framework and fix the CfgTask creation. It's all working now but just adding all the features back. I've been pulling many late nights after work to get this done so we can have a good 2021 plus I added modularisation so that took some recoding too and then some
  2. A simple script to add an action to the menu to create a combat service support vehicle at a random location on the map. //Combat Service Support //Blackheart_Six //Feel free to optimize script for the good of all mankind. //Instructions For Use: //Copy combatServiceSupport.sqf to your mission folder or scripts folder. //Place a unit and name it "sl1". //Place the following command in the init.sqf file: //call compile preprocessFileLineNumbers "combatServiceSupport.sqf"; // //RECOMMENDATIONS: Don't let everyone call the script. You'll have a server full of vehicles. Let a leader use the script. IE Squad Leader or Officer. //If you have to have unit named to a certian variable, then do a find and replace for sl1, and replace with required name. //Code by Serena (BI Forums) RemoveActionByName = { params ["_object", "_name"]; {if (_object actionParams _x select 0 == _name) exitWith {_object removeAction _x}} forEach actionIDs _object; }; level1 = { sl1 addAction [ "<t color='#FFBB00'>Combat Service Support</t>", { [sl1, "<t color='#FFBB00'>Combat Service Support</t>"] call RemoveActionByName; call level2a; call level2b; call level2c; call level2d; }, nil, -1, false, true,"", "_this == _target"]; }; level2a = { sl1 addAction ["<t color='#FFBB00'>Request Class III - Fuel</t>", { delvehs = nearestObjects [getMarkerPos "classIIIMrk", [], 10];{ if (isPlayer _x) then { hint ""} else { deleteVehicle _x}; }forEach delvehs; deleteMarker "classIIIMrk"; //Position _rndmPos1 = [[[position sl1, 3000]],["water"]] call BIS_fnc_randomPos; _pos = _rndmPos1; _radius = 500; _exp = "(1 + meadow) * (1 - forest) * (1 - trees) * (1 - hills)"; _prec = 10; _bestplace = selectBestPlaces [_pos,_radius,_exp,_prec,1]; _spot = _bestplace select 0; _spot2 = _spot select 0; //Create marker _classIIImrk = createMarker ["classIIIMrk",_spot2]; "classIIIMrk" setMarkerShape "ICON"; "classIIIMrk" setMarkerType "B_Support"; "classIIIMrk" setMarkerText "CLASS III - FUEL"; //Create Vehicle _classIIIVeh = createVehicle ["B_Truck_01_fuel_F",getMarkerPos "classIIIMrk",[],0,"NONE"]; _classIIIVeh allowDamage false; //Cleanup [sl1, "<t color='#FFBB00'>Request Class III - Fuel</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class V - Ammo</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class VIII - Medical</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class IX - Repair</t>"] call RemoveActionByName; call level1; }, nil, -1, false, true,"", "_this == _target"]; }; level2b = { //Class V - Ammunitions _L2B = sl1 addAction ["<t color='#FFBB00'>Request Class V - Ammo</t>",{ delvehs = nearestObjects [getMarkerPos "classVMrk", [], 10];{ if (isPlayer _x) then { hint ""} else { deleteVehicle _x}; }forEach delvehs; deleteMarker "classVMrk"; _rndmPos1 = [[[position sl1, 3000]],["water"]] call BIS_fnc_randomPos; _pos = _rndmPos1; _radius = 500; _exp = "(1 + meadow) * (1 - forest) * (1 - trees) * (1 - hills)"; _prec = 10; _bestplace = selectBestPlaces [_pos,_radius,_exp,_prec,1]; _spot = _bestplace select 0; _spot2 = _spot select 0; //Create Logistics marker _classVmrk = createMarker ["classVMrk",_spot2]; "classVMrk" setMarkerShape "ICON"; "classVMrk" setMarkerType "B_Support"; "classVMrk" setMarkerText "CLASS V - AMMO"; //Create Vehicle _classVVeh = createVehicle ["B_Truck_01_ammo_F",getMarkerPos "classVMrk",[],0,"NONE"]; _classVVeh allowDamage false; //Cleanup [sl1, "<t color='#FFBB00'>Request Class III - Fuel</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class V - Ammo</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class VIII - Medical</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class IX - Repair</t>"] call RemoveActionByName; call level1; }, nil, -1, false, true,"", "_this == _target"]; }; level2c = { //Class VIII - Medical sl1 addAction ["<t color='#FFBB00'>Request Class VIII - Medical</t>",{ delvehs = nearestObjects [getMarkerPos "classVIIIMrk", [], 10];{ if (isPlayer _x) then { hint ""} else { deleteVehicle _x}; }forEach delvehs; deleteMarker "classVIIIMrk"; _rndmPos1 = [[[position sl1, 3000]],["water"]] call BIS_fnc_randomPos; _pos = _rndmPos1; _radius = 500; _exp = "(1 + meadow) * (1 - forest) * (1 - trees) * (1 - hills)"; _prec = 10; _bestplace = selectBestPlaces [_pos,_radius,_exp,_prec,1]; _spot = _bestplace select 0; _spot2 = _spot select 0; //_cssPos1 = [_spot2,0,100,0,1,0.3,0] call BIS_fnc_findSafePos; //Create Logistics marker _classVIIImrk = createMarker ["classVIIIMrk",_spot2]; "classVIIIMrk" setMarkerShape "ICON"; "classVIIIMrk" setMarkerType "B_med"; "classVIIIMrk" setMarkerText "CLASS VIII - MEDICAL"; //Create Vehicle _classVVeh = createVehicle ["B_Truck_01_medical_F",getMarkerPos "classVIIIMrk",[],0,"NONE"]; _classVVeh allowDamage false; //Cleanup [sl1, "<t color='#FFBB00'>Request Class III - Fuel</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class V - Ammo</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class VIII - Medical</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class IX - Repair</t>"] call RemoveActionByName; call level1; }, nil, -1, false, true,"", "_this == _target"]; }; level2d = { //Class IX - Repair sl1 addAction ["<t color='#FFBB00'>Request Class IX - Repair</t>",{ //Removes existing objects delvehs = nearestObjects [getMarkerPos "classIXMrk", [], 10];{ if (isPlayer _x) then { hint ""} else { deleteVehicle _x}; }forEach delvehs; deleteMarker "classIXMrk"; //Create Position _rndmPos1 = [[[position sl1, 3000]],["water"]] call BIS_fnc_randomPos; _pos = _rndmPos1; _radius = 500; _exp = "(1 + meadow) * (1 - forest) * (1 - trees) * (1 - hills)"; _prec = 10; _bestplace = selectBestPlaces [_pos,_radius,_exp,_prec,1]; _spot = _bestplace select 0; _spot2 = _spot select 0; //Create marker _classIXmrk = createMarker ["classIXMrk",_spot2]; "classIXMrk" setMarkerShape "ICON"; "classIXMrk" setMarkerType "B_Service"; "classIXMrk" setMarkerText "CLASS IX - REPAIR"; //Create Vehicle _classIIIVeh = createVehicle ["B_Truck_01_repair_F",getMarkerPos "classIXMrk",[],0,"NONE"]; _classIIIVeh allowDamage false; //Cleanup [sl1, "<t color='#FFBB00'>Request Class III - Fuel</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class V - Ammo</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class VIII - Medical</t>"] call RemoveActionByName; [sl1, "<t color='#FFBB00'>Request Class IX - Repair</t>"] call RemoveActionByName; call level1; }, nil, -1, false, true,"", "_this == _target"]; }; call level1;
  3. Well if you are only doing applications work, then no excuse! :-)
  4. LDL, I don't think that is a fair assumption. Roy is not dabbling. That's not right. I don't have any insight to what he is doing, but I do know this...he is hand coding tens of thousands of lines of code. He is creating a framework from the ground up, by himself, all for the total cost to you and me of ZERO dollars. I have been waiting as long as anyone, and I will wait as long as it takes. Form Follows Function. If it doesn't function, then it ain't worth a hill of beans. He is programmer by trade. Do you think he wants to work all day doing software programming and coding, then come home and do more programming? I think not.
  5. Update post. See above. Now when that will be, only Roy knows.
  6. Another item I was working on is getting patrolling insurgent units in boats. I tried using JBOY Longboat script to convert the boats, and create crews, but it just wouldn't work. So this is what I came up with for this. This will create a syndicate rhib, add crew to all positions. With this method, when the boat gets destroyed, the crew will get cleaned up as well. Additionally the position code puts the boat in deep water off shore. I am by no means a scripter, programmer, and coder. If you have a better way, more optimized please feel free to correct. I just read the biki's and guess. _pirates = [ ["SIDE", resistance], ["VEHICLES", ["I_C_Boat_Transport_02_F"]], ["VEHICLES_COUNT", 5], ["MAX_GROUPS_COUNT", 0], ["MIN_SPAWN_DISTANCE", 0], ["MAX_SPAWN_DISTANCE", 15000], ["MIN_SKILL", 0.4], ["MAX_SKILL", 0.6], ["AREA_MARKER", ""], ["ON_UNIT_CREATING",{}], ["ON_UNIT_CREATED", { private ["_centerposition","_pos","_radius","_exp","_prec","_bestplace","_spot","_spot2"]; _centerposition = [worldSize/2, worldsize/2,0]; _pos = _centerPosition; _radius = worldSize/2; _exp = "(4 * (WaterDepth interpolate [1,15,0,1]))"; _prec = 100; _bestplace = selectBestPlaces [_pos,_radius,_exp,_prec,1]; _spot = _bestplace select 0; _spot2 = _spot select 0; (_this select 0) setVehiclePosition [_spot2, [],0, "NONE"]; if (canMove (_this select 0)) then { _pirate2 = (_this select 1) createUnit ["I_C_Soldier_Bandit_1_F",(_this select 0), [], 0, "CARGO"];_pirate2 moveInCargo [(_this select 0), 2];(units _pirate2) join (_this select 1); _pirate3 = (_this select 1) createUnit ["I_C_Soldier_Bandit_1_F",(_this select 0), [], 0, "CARGO"];_pirate3 moveInCargo [(_this select 0), 3];(units _pirate3) join (_this select 1); _pirate4 = (_this select 1) createUnit ["I_C_Soldier_Bandit_1_F",(_this select 0), [], 0, "CARGO"];_pirate4 moveInCargo [(_this select 0), 4];(units _pirate4) join (_this select 1); _pirate5 = (_this select 1) createUnit ["I_C_Soldier_Bandit_1_F",(_this select 0), [], 0, "CARGO"];_pirate5 moveInCargo [(_this select 0), 5];(units _pirate5) join (_this select 1); _pirate6 = (_this select 1) createUnit ["I_C_Soldier_Bandit_1_F",(_this select 0), [], 0, "CARGO"];_pirate6 moveInCargo [(_this select 0), 7];(units _pirate6) join (_this select 1); _pirate7 = (_this select 1) createUnit ["I_C_Soldier_Bandit_1_F",(_this select 0), [], 0, "CARGO"];_pirate7 moveInCargo [(_this select 0), 7];(units _pirate7) join (_this select 1); }; 0 = [(_this select 0),"colorBlue",true,2000] execVM "Scripts\JBOY_boatRandomPatrol.sqf"; }], ["ON_UNIT_REMOVING", { }], ["DEBUG", false] ]; _pirates spawn ENGIMA_TRAFFIC_StartTraffic;
  7. FYI... Here is what I use to spawn civilian boat traffic. I haven't done a lot of testing on path finding, and how the boats move. But so far so good. At least this gets them on the water and moving. _civSea = [ ["SIDE", civilian], ["VEHICLES", [ "C_boat_civil_01_F", "C_boat_civil_01__boat_F", "C_boat_civil_01__rescue_F", "C_rubberboat_F", "C_boat_transport_02_F", "C_scooter_Transport_01_F" ]], ["VEHICLES_COUNT", 10], ["MIN_SPAWN_DISTANCE", 2000], ["MAX_SPAWN_DISTANCE", 5000], ["MIN_SKILL", 0.4], ["MAX_SKILL", 0.6], ["AREA_MARKER", ""], ["HIDE_AREA_MARKER", false], ["ON_UNIT_CREATING",{}], ["ON_UNIT_CREATED", { _ranPos = [nil, ["ground"]] call BIS_fnc_randomPos; (_this select 0) setVehiclePosition [_ranPos, [],50, "NONE"]; 0 = [(_this select 0), "ColorBlue",true,2000] execVM "Scripts\JBOY_boatRandomPatrol.sqf"; }], ["ON_UNIT_REMOVING", {}], ["DEBUG", false] ]; CHANGE 1: Changed position commands to not use markers. Working on using FindSafePos as well.
  8. A bit, is like a yonder. It is only known to the person who utters it. "Just go down yonder, and hold it".
  9. @roy86 just a thought, but if your building missions, can we assume the framework is done and ready for beta test 2? Additionally are the modules i.e. vehicle depot, stand alone module? Or is there dependencies on the framework? imho and ive truly have been humbled trying to create small functions, its amazing the coding you’ve put into this. I understand the time it takes to write test rewrite and repeat that thousands of times across hundreds of files. THANK YOU!
  10. Hi Roy, Can't handle watching the videos! Driving me crazy! It's looking great. Can't wait to be able to create content. Comparing to original documentation, looks very familiar. IMHO on locations, if possible... Insurgents would establish camps in forested valley areas, far from roads and urban areas to conceal smoke from fires, and overhead drone and satellite views. They would occupy steeper and narrower terrain to limit forces to maneuver in that space. NW Altis mountains is an example of that. Not sure if possible to find a location based on terrain features like valley, or draw. I've tried using BIS_fnc_findSafePos and selectBestPlaces with not much success. Just an idea... Keep up the great work. Amazing stuff in the videos.
  11. If you need help with documentation I am sure there are a few, that will help out, me included. As I stated before, I am really interested in the A3 MPSF side of things. A3 MPSF could become the "combat patrol" mode we all envisioned, but BI has ignored. On a side note..... I uploaded PO3 to our group server. And it still runs like a champ. Which after 6 years since it's release is amazing! Outside of some mission issues that were known, I haven't seen any NEW issues. That is a testament to your code. After all the Arma updates, and PO3 still runs great.
  12. Wow, looks great, Roy! Good insight to what your doing, and how you code it with the dev video. Glad to see event/task code structure resembles what is up in the wiki and the beta MPSF. I think that is a great system for creating missions quickly. Are you thinking of doing another beta? Looks like a lot of changes/additions since Dec. 2017 beta. Seeing all this is very exciting, but don't want to get out too far over my ski's. ⛷️ Still just around.
×