Jump to content

Fulcrum Mission System v2.1a


horbin

Recommended Posts

Motorui,

I'll take a look.

Changes in the Raptor mod, may be forcing the 'side' of the raptors to something other than "RESISTANCE".

Easy fix may be to switch to a 'bodycount' trigger in the missions vs the LowUnitCount' trigger.

Still nothing? Currently off!

Link to comment
Share on other sites

Hmm okay,

I have child missions "Reinforcements" and these KI's stay, after Parent Ends / is killed over FUMS-Admintool.

 

Or do I have something wrong?

 

 Parent:

//BanditCamp.sqf
// Horbin
// 12/31/14
// Based upon drsubo Mission Scripts

[
["Captive", 200,"LAND",[0,0,0],"NONE","NONE"], // Mission Title NOSPACES!, and encounter radius
["Captives","mil_objective", "ELLIPSE","ColorYellow","FDiagonal",200],    // Map Markers ["MapText", "SHAPE", "COLOR", "FILL", size];
   // type is "mil_objective"
[  
    [// NOTIFICATION Messages and Map display Control.
	true, 1,0,
    true, // Notify players via global message
    true,// Show encounter area on the map
    30,    // Win delay: Time in seconds after a WIN before mission cleanup is performed
    10       // Lose delay: Time in seconds after a lose before mission cleanup is performed
          //NOTE: the above delay must occur before the mission is considered 'complete' by the mission manager control loop.
    ],
    // Spawn Mission Message
    [   "Captives",
        "Clones have been Captured.",
        "Humans have captured clones. Go free them!"
     ],
    
    // Mission Success Message
    [   "Mission Success",
        "",
        "Captives have been rescued."
    ],
  
    // Mission Failure Message
    [  "Mission Failure!",
        "",
        "The Humans have escaped with their captives."
    ] 
],
[  //  Loot Config:  Refer to LootData.sqf for specifcs
["None",		[0,0]],		//[static loot, offset location] - spawns with the mission
["NormalLoot",	[0,0]],		// Win loot, offset location - spawns after mission success
["None",		[0,0]]		// Failure loot, offset location - spawns on mission failure
],
[//BUILDINGS: persist = 0: building deleted at event completion, 1= building remains until server reset.
 
	["M3Editor", [0,0], "NONE", 0,
		[
	["Land_TentHangar_V1_F",[14692.4,16710.5,0],312.727,[0,0,1],true]
		]
	]
],
[
//---------------------------------------------------------------------------------
//-----Group Configuration-----  see Convoy section for AI in vehicles! 
//--- See SoldierData.sqf for AI type options.
/*
    Defined AI logic options: See 'Documenation' for details'
["BUILDINGS", [spawnloc], [actionloc], [duration, range]]  
["EXPLORE   ",[spawnloc], [actionloc], [radius]]
["BOXPATROL", [spawnloc], [actionloc], [radius]]
["CONVOY",    [spawnloc], [actionloc], [speed, FlagRTB, FlagRoads, FlagDespawn, convoyType]]
["SENTRY",    [spawnloc], [actionloc], [radius]]
["PARADROP",  [spawnloc], [actionloc], [speed, altitude, FlagRTB, FlagSmokes]]  
["PATROLROUTE", [spawnloc], [actionloc], [behaviour, speed, [locations], FlagRTB, FlagRoads, FlagDespawn, flyHeight]    
    
*/
[["RESISTANCE","COMBAT","RED","COLUMN"],[[1,"Sniper"],[3,"Rifleman"]],["BoxPatrol",[0,0],[0,0],[25]]],
[["RESISTANCE","COMBAT","RED","LINE"],[[1,"Sniper"],[3,"Rifleman"]],["TowerGuard",[0,0],[0,0],[150,"ANY"]]],
[["EAST","SAFE","BLUE","WEDGE"],[[7,"Civ01"]],["Captured",[0,0],[0,0],[-1,[[300,300],[-300,-300],[300,-300],[-300,300]]]]],
[["EAST","SAFE","BLUE","WEDGE"],[[3,"Civ01"]],["Captured",[25,0],[25,0],[0,[[300,300],[-300,-300],[300,-300],[-300,300]]]]]
],
// NOTE: if no buildings are located within 'radius' both 'Buildings' and 'Lookout' will locate nearest buildings to the encounter and move there!
// NOTE: See AI_LOGIC.txt for detailed and most current descriptions of AI logic.

//---------------------------------------------------------------------------------
//-----LAND Vehicle Configuration----- 
[
	[  // Convoy #1                     
		[  	// Vehicle	Offset	Crew (only 1 type!)	Cargo
			["I_UGV_01_F",[175,100],[0,""],"none"]
		],
		[	// Drivers  							# and type			Patrol | spawn	dest | 'Patrol' options
           [["RESISTANCE","COMBAT","RED","COLUMN"],[[1, "Driver"]],["BoxPatrol",[100,100],[0,0],[100]]]
		],
		[ 	// Troops : These are distributed across all vehicles in this convoy.     
		]
   ],
   [ // Convoy #2
		[               
			["B_Truck_01_transport_EPOCH",[50,0],[0,""],"None",[["engine",.9],["fuel",.9],["hull",1],["RGlass",1],["Glass1",1]]], // sets damage to specific parts.
			["B_Truck_01_transport_EPOCH",[60,0],[0,""],"None",[.5]] // overall damage 50%
		],
		[	// Drivers  							# and type			Patrol | spawn	dest | 'Patrol' options
		],
		[ 	// Troops : These are distributed across all vehicles in this convoy.     
		]
	]
],
// Trigger
[
	[
		//Define all the triggers this mission will be using
		// Trigger names must be unique within each mission.
		// NOTE: "FuMS_KillMe" is a reserved trigger word. Do not use!!!
		// NOTE: "OK" is a reserved trigger. Do not define it here.
		//  "OK" can be used in the actions section to force an action to occur at mission start!	 
		//						  offset|radius|time(s)|Name
		["LUCNT",["LowUnitCount","GUER",3,0,[0,0]]],
		["Timer",["TIMER",2700]],
		["Captive1",["Captive",4]]
	],
	[
		// Define what actions should occur when above trigger logics evaluate to true
		// Note: a comma between two logics is interpreted as "AND"
		[["WIN"],["Captive1"]],
		[["CHILD",["Captive_Helo",[0,0],2,120]],["LUCNT"]],
		[["LOSE"],["TIMER"]],
		[["END"],["TIMER","OR","Captive1"]]  
	]      
]
];

Child:

//BanditCamp.sqf
// Horbin
// 12/31/14
// Based upon drsubo Mission Scripts

[
["Reinforcements", 200], // Mission Title NOSPACES!, and encounter radius
["Reinforcements","mil_objective","ELLIPSE","ColorRed","FDiagonal",750],    // Map Markers ["MapText", "SHAPE", "COLOR", "FILL", size];
   // type is "mil_objective"
[  
    [// NOTIFICATION Messages and Map display Control.
	true, 1,0,
    false, // Notify players via global message
    false,// Show encounter area on the map
    10,    // Win delay: Time in seconds after a WIN before mission cleanup is performed
    10       // Lose delay: Time in seconds after a lose before mission cleanup is performed
          //NOTE: the above delay must occur before the mission is considered 'complete' by the mission manager control loop.
    ],
    // Spawn Mission Message
    [   "",
         "",
         "High Command is sending help!"
     ],
    
    // Mission Success Message
    [   "",
         "",
         ""
    ],
  
    // Mission Failure Message
    [  "",
        "",
        ""
    ] 
],
[  //  Loot Config:  Refer to LootData.sqf for specifcs
["None",	[0,0]	],	//[static loot, offset location] - spawns with the mission
["None",	[0,0]	],	// Win loot, offset location - spawns after mission success
["None",	[0,0]	]	// Failure loot, offset location - spawns on mission failure
],
[//BUILDINGS: persist = 0: building deleted at event completion, 1= building remains until server reset.

],
[ // AI GROUPS. Only options marked 'Def:' implemented.

],

// Vehicles
[
	[  // Division #1
		[         // Vehicle                 	Offset|Crew (only 1 type!)|CargoLoot (see Loot section below for more detail!)
			["O_Heli_Light_02_unarmed_EPOCH",[0,-1500],[1,"Rifleman"],"None"]
		],
		[  
			// Pilots                           	# and type	|	Patrol	| spawn	| dest | 'Patrol' options
			[["RESISTANCE","COMBAT","RED","COLUMN"],[[1,"Driver"]],["ParaDrop",[0,0],[0,0],["Full",100,true,true]]]
		],
		[   
			// Troops : These are distributed across all aircraft in the division. These lines are identical to the lines in the group section.
			// Troop behaviour and side options			# and type of Troops      Patrol logic|spawn |dest|'Patrol' options
			[["RESISTANCE","COMBAT","RED","COLUMN"],[[2,"Sniper"],[3,"Rifleman"]],["BoxPatrol",[0,0],[0,0],[70]]]
			// 'dest' for troops is where they will go to perform their 'Patrol Logic' once they get on deck
		]
	]
],
// Trigger
[
	[
		//Define all the triggers this mission will be using
		// Trigger names must be unique within each mission.
		// NOTE: "FuMS_KillMe" is a reserved trigger word. Do not use!!!
		// NOTE: "OK" is a reserved trigger. Do not define it here.
		//  "OK" can be used in the actions section to force an action to occur at mission start!	 
		//						  offset|radius|time(s)|Name
	],
	[
		// Define what actions should occur when above trigger logics evaluate to true
		// Note: a comma between two logics is interpreted as "AND"
      [["END"],["OK"]]
	]      
]
];
Link to comment
Share on other sites

I'll take a look at it. Should be working.

 

 

Take a look at your HC .rpt also.   If AI are engaged/detect players they WILL NOT get cleaned up until they go 3 minutes w/o seeing a player.  Is this maybe the case?

 

Ah, this could be.

I will check tomorrow again and let you know!

Where can I find the RPT for the HC?

Link to comment
Share on other sites

Hi Horbin, can u take a look at this error?, I'm, trying for a week now to fix this.

17:43:10 Cannot create non-ai vehicle RaptorAIM1_W,
17:43:10 Cannot create non-ai vehicle RaptorAIM1_W,
17:43:10 Cannot create non-ai vehicle RaptorAIM1_W,
17:43:10 Cannot create non-ai vehicle RaptorAIF2_E,
17:43:10 Cannot create non-ai vehicle RaptorAIF2_E,
17:43:10 Cannot create non-ai vehicle RaptorAIF2_E, 

And this is my full *.rpt:

http://pastebin.com/bqyfEY02

 

Thanks in advance, Rui

Link to comment
Share on other sites

Motorui,

    Looks like the class name used by the raptors mod has changed.

 

I will have to look to see what it was changed too, but if you figure that out, you can look in FuMS\HC\AI\SpawnSoldier.sqf line 49 and 50 and make the changes there.  That will fix the error.  

 

Until it is fixed, you can just turn off the Jurasic theme by commenting it out of the BaseServer.sqf.

Link to comment
Share on other sites

I am trying to edit the captives mission such that it doesn't static end/fail on a 30 minute timer but instead fails when there are less than 7 captives left alive.   It is my understanding that captives are on the side of "EAST" :

[["EAST","SAFE","BLUE","WEDGE"],[[10,"Civ01"]],["Captured",[0,0],[0,0],[-1,[[300,300],[-300,-300],[300,-300],[-300,300]]  ]] ],

[["EAST","SAFE","BLUE","WEDGE"],[[3,"Civ01"]],["Captured",[25,0],[25,0],[0,[[300,300],[-300,-300],[300,-300],[-300,300]]  ]] ]

However when I set the following fail trigger condition, it triggers immediately at mission start:

Triggers:

  ["LUCNT",["LowUnitCount","GUER",3,0,[0,0]]  ],
  ["FAILCNT",["LowUnitCount","EAST",7,0,[0,0]]  ],
  ["Timer",["TIMER", 300] ],
  ["Captive1", ["Captive", 7]  ]

Actions:
  [["WIN"],["Captive1"     ]],  
  [["CHILD",["Help_Helo",[0,0],3,120]],["LUCNT"     ]],     
  [["LOSE"],["FAILCNT","Timer"]   ],
  [["END"],["FAILCNT","OR","Captive1"     ]]  

Any ideas what I am doing wrong?  

Link to comment
Share on other sites

Korwiin,

      When the captives are spawned, the are side="EAST".  The Arma3 setCaptive is used to keep AI from killing them.  I think this function sets the 'side' of those captives to "CIVILIAN".  This should help too, because lowunitcount, "EAST" will include male players :)

 

See if using "CIVILIAN" vs "EAST" produces better results.

 

-Horbin

Link to comment
Share on other sites

See if using "CIVILIAN" vs "EAST" produces better results.

 

-Horbin

 

Thanks for the quick response.  CIV did the trick, however, it will fail the mission if too many captives are told to "FLEE", which I presume switches them back from CIV to EAST.

Maybe a future version could add a new trigger specifically for LowCaptiveCount or CaptiveBodyCount, either or will work for some expanded mission creativity.

 

Thanks for the work around,

 

-- Korwiin

Link to comment
Share on other sites

I am trying to create a mission that will spawn a crate INSIDE the debug box (the intent is to has something more than Dan's underwear on before they teleport out.   I am having challenges getting this thing to spawn inside the debug box, it seems some code somewhere is avoiding the 2 objects colliding and its spawns the loot crate a few meters outside of the debug box.   Any idea how to make this work?    I am currently using a static 2d loc in the ThemeData under the mission list section like this:

 

//***** Mission List *****
["debugbox",[23601.5,17993]]

 

And all of the offsets under debugbox.sql are currently set to 0,0.   I did try using a 3 digit loc under the mission file static loot section, but the 3d location there caused errors  below:

 

14:06:57 Error in expression <Town;} 
else { _newloc = _origin;};
};
_newloc

 

>
14:06:57   Error position: <_newloc

 

>
14:06:57   Error Undefined variable in expression: _newloc
14:06:57 File FuMS\HC\MsnCtrl\Util\XPos.sqf, line 32
14:06:57 "<FuMS> FillLoot : Creating LAND_METALCASE_01_LARGE_F at any with option DEBUGCRATE1"
14:06:57 "##FillLoot: SmokeBox Proximity:100 Dur:1 minutes Colors:["Red"]"
14:06:57 Error in expression <ting %1 at %2 with option %3",_boxtype, _pos, _typeLoot];
_box = createVehicle [>
14:06:57   Error position: <_pos, _typeLoot];
_box = createVehicle [>
14:06:57   Error Undefined variable in expression: _pos
14:06:57 File FuMS\HC\Loot\FillLoot.sqf, line 76
14:06:57 "<FuMS> FillLoot: 14 items added to <NULL-object>"
14:06:57 "<FuMS> FillLoot: <NULL-object> has 0 items (verified)"
14:06:57 Error in expression <
};

_isVehicle = false;
if ( (TypeName _pos) == "OBJECT") then
{

_isVehicle = >
14:06:57   Error position: <_pos) == "OBJECT") then
{

_isVehicle = >
14:06:57   Error Undefined variable in expression: _pos
14:06:57 File FuMS\HC\Loot\FillLoot.sqf, line 30
14:06:57 Error in expression <Ctrl_Util_XPos;
_box = [_loot select 0, _pos, _themeIndex] call FuMS_fnc_HC_Loot>
14:06:57   Error position: <_pos, _themeIndex] call FuMS_fnc_HC_Loot>
14:06:57   Error Undefined variable in expression: _pos
14:06:57 File FuMS\HC\MsnCtrl\Spawn\SpawnMissionLoot.sqf, line 54

Link to comment
Share on other sites

I think a fums mission for this is not the best way.

When the startgear should be the same for everyone, try this:

 

Make a sensor in the mission.sqm:

	class Sensors
	{
		items=1;
		class Item0
		{
			position[]={23600.1,0.1,18000.1};
			a=5;
			b=5;
			activationBy="ANY";
			repeating=1;
			interruptable=1;
			age="UNKNOWN";
			expCond = "(vehicle player) in thislist;";
			expActiv="dome = execVM ""addons\Startgear\Startgear.sqf"";";
			expDesactiv="terminate dome;";
			class Effects
			{
			};	
		};
	};

Create the file addons\Startgear\Startgear.sqf:

if ( alive player ) then {
sleep 3;
	removeBackpackGlobal player;										
	player addbackpack "B_Parachute";
	player addWeapon "EpochRadio0";
	player addWeapon "NVG_EPOCH";									
	player addWeapon "Rollins_F";
	player addItemToVest "5Rnd_rollins_mag";									
	player forceAddUniform "U_C_Poor_1";
		};
Link to comment
Share on other sites

What I originally wanted to do was build some shelves at the trader cities and let the user community maintain a shared stash of freebies on their own.   It would be a sandbox experiment to see if people use it and stock it, or just rob it and sell the stuff to the vendor.    Using the epoch built shelves would commit the contents of the shelve to the database and persistent through resets, however, at this time there does not seem to be a way to remove the build restriction on safe zones.  

 

I am trying to collapse as many modifications/scipts as I can into a FUMS mission.   Updating epoch has been a nightmare with all the places and files in various places being edited.

 

This theme I am working on is called "Carepack" and it will spawn 4 silent/unlabeled missions, 1 in each trader city and the debug box.   The plan is random civilian clothes and backpacks in the debug box, and random handguns and handgun ammo at the starter cities. Quantities are limited per server reset, and items are random starter/newbie gear.   I want to preserve that element of random discovery and looting... when people spawn in with a static load out, it gets the job done, but is less fun/entertaining than opening a cracker jack box and hoping you find something nice inside... plus if its empty, it causes drama and I believe that too is healthy for player immersion.

Link to comment
Share on other sites

Korwiin,

   Try changing the offset for the loot from [0,0] to the exact location you want using 3D coords.  Hopefully that will do the trick.

 

Failing that, try changing line 77 of \FuMS\HC\Loot\FillLoot.sqf to the following:

 

_box = createVehicle [_boxtype, _pos, [], 0, "CAN_COLLIDE"];

 

hopefully one of those gets you what you need.

Link to comment
Share on other sites

Hi,

I have set all my AI's to:

[.9, .9, .9, .9, .9, .9, .9, .9], // Soldier skill levels
but the Ai's don't shoot back at higher distance (e.g. 800m).
I set this in SoldierData.sqf and BaseServer.sqf and I also set "global soldier data" to true in the missions.
 
Is this setting not meaningful, or is it impossible to get the AI's more difficult?
Link to comment
Share on other sites

He-Man,

   That should be doing it.  The 4th number is the spot distance, and the 5th the spotTime. Try setting both of those to 1.0 and see if that helps.

 

Also, the settings that are in the BaseServer.sqf are global override settings.  If the value in the BaseServer.sqf is anything other than 0.0, the value in the BaseServer.sqf is used instead of the value for the individual AI located in the SoldierData.sqf.

 

The only other thing I could see being the issue is that the weather conditions are possibly limiting the AI?

Link to comment
Share on other sites

Is there a possibility to configure the scopes of the AI's`?

They often only have small scopes on srifles, and I think this is the reason, why they don't shoot on larger distance.

 

And back to #1079:

Is it changeable, that the AI's will definitely be cleaned up on mission end?

Atm, sometimes a timer triggers the loose of a mission, the buildings despawn and the AI's stay.

 

He-Man

Link to comment
Share on other sites

FuMS\HC\AI\SpawnSoldier.sqf - remove line 167, replace with the following:

if (TypeName (_gear select 0) == "STRING") then { _unit addPrimaryWeaponItem (_gear select 0);}
else
{
  if ([_gear select 0] call FuMS_fnc_HC_Loot_AddIt) then{ _unit addPrimaryWeaponItem (WeaponAttachments_Optics call BIS_fnc_selectRandom);};  //scopes
};

\FuMS\HC\Val\VerifySoldier.sqf change line 99 to:

if (TypeName _x != "SCALAR" and TypeName _x !="STRING") exitWith {_abort=true; _msg=format ["%1should be an array of 3 numbers between 0-1.0. The 1st number may also be a string. found %1",_dat3];};

With the above changes, you can now designate a specific scope in each AI type's definition located in the GlobalSoldierData.sqf.  Just replace the number with the name of the scope you want.

Ex:    [ 1, .3. 0]   change to ["optic_tws", .3. 0]

 

 

 

 

 

There is no option to 'turn off' the AI clean-up protection if the AI is detecting a player.  If you want to remove this behavior, comment out the following lines in \FuMS\HC\MsnCtrol\LogicBomb\RemoveDecayObjects.sqf

Line 51, 152

(both of these lines should now look like   // _enemy = _x findNearestEnemy _x; )

 

Hope that helps!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...