Jump to content

Fulcrum Mission System v2.1a


horbin

Recommended Posts

HerrOrhan,

     I'll look at adding the ability to support an array of loot in place of the single loot box.

 

If you want to up the ammo on the AI you can modify that in the SoldierData.sqf.

 

Default Rifleman

[ [[Food_Canned,.1],[1,1]],[[Drink,.1],[1,1]],[["FAK",.1],[1,1]],[[Grenades_Smoke,.8],[1,1]],[[Grenades_Hand,.3],[1,1]]    ] 

 

New Rifleman

[ [[Food_Canned,.1],[1,1]],[[Drink,.1],[1,1]],[["FAK",.1],[1,1]],[[Grenades_Smoke,.8],[1,1]],[[Grenades_Hand,.3],[1,1]],    

[["30Rnd_556x45_Stanag_Tracer_Red", 1],[3,5]]    ]

 

This will add with 100% chance 3-5 clips of 30rnd 556 red tracer stanag.  No promise it will match the AI's weapon if it is using a 'random' selection, but this is the best way to add extra ammo.  

 

AI defaults to never run out of ammo, so they always start with 1 clip for the weapon they carry, but usually burn through that pretty quick. :)

Link to comment
Share on other sites

v 1.1a

 

 Fixes:
- tweaks to mission data reading to reduce format errors
- corrected issues with server loosing HC's owner id, resulting in missions hanging.
-  mission vehicles now only persist if a player captures it (ie gets into it).
-  GlobalLootOptions added to BaseLoot.sqf
   20, //Loot box timer- 20minutes after mission completes all loot boxes associated with mission will despawn.
true, // produce smoke at location of a spawned loot box
true // vehicles occupied by players become sell-able and persist through server restart
 
- Missions support multiple loot types/locations. See TestMission01.sqf for syntax!
 This provides mission authors the ability to spawn loot at multiple locations at mission spawn/victory and/or loss.
Link to comment
Share on other sites

!"call (uinamespace getvariable 'BIS_fnc_initDisplay')"

 

Add the above to your BE scripts.txt line 1

 

7 "BIS_fnc" !"call (uinamespace getvariable 'BIS_fnc_initDisplay')" <..rest of your line 1 here>

 

I think this was induced during the last ARMA3 update.

Link to comment
Share on other sites

Heads up.  Still running into issues with vehicles not being cleaned up as they should.....troubleshooting in progress.

 

Sorry guys.

 

 

Ok..Never mind. Let me know if you have issues with 1.1a release.

 

I think I had a server database roll back last night and what I am seeing right now on my test server is a result of that.......

Link to comment
Share on other sites

Phased missions can now use a location other than the parent mission's center
Ex:
// Phased Missions.
// Chaining of missions is unlimited.
// Above triggers will 'suspend' when below phase starts. Phase launched will use its own triggers as specified in its mission script.
// If it is desired to continue to use the above Triggers instead of the 'launched mission's' triggers do the following:
//   uncomment the "NO TRIGGERS' line from the mission being launched (ie the child mission).
// The file needs to be located in the same theme folder as the mission launching them.
[
    ["NukeDevice",["Paros"]],  //Phase01 <-- as an array a 3dlocation, offset, or town name can be specified for the phase mission's center
   // In the above example, based upon the phase01 trigger, when a player gets within 100m of the current encounter's center
//  The NukeDevice mission begins in the town of Paros.
    "TestMission01Enemy", //Phase02 <-- just a file name, phased mission uses THIS mission's center!
   // In this example, when the phase02 triggers become true (for this mission after 5 minutes of time), this mission
//  is started at the current mission's position.
    "TestPhase3" //Phase03
],
 
AI of different factions will engage each other
East or West, Resistance, Civ are the three available sides. (East and West are friends under EPOCH)
 
Added ability to spawn AI of side "CIV"
 
Additional AI radio chatter added to identify when AI engage other AI
(see ThemeData.sqf under 'Test' theme. "DetHostileAI" response pair added
 
 
***NOTE*** AI of side "CIVILIAN" are not completely honoring their side allegiance.  After being around AI of side civilian for about 1-2 minutes they seem to no longer remain friendly....Troubleshooting in progress.
Link to comment
Share on other sites

 
Themes:
AirPatrol
4 Separate missions designed to scout the towns of ALTIS.
Each mission is a division of 3 armed helicopters.
The Helo's will patrol their route, return to their starting point and despawn, prompting
the next patrol of helo's to spawn.
 
Fixes:
PatrolRoute: adjusted 'completion radius' on waypoints for aircraft.
             improvements to RTB and cyclic behaviour (see AI_Logic.txt in Docs folder)
ControlLoop: corrected error in random and 'in order' mission selection not properly advancing to the next mission in the list.
SpawnVehicle: vehicle crew members now carry mission specific variables, and now count in Trigger logics.
LogicBomb: corrected a bug that was causing BodyCount trigger to terminate a theme's logic loop.
   
Trigger:
ALLDEADorGone - true when all ai associated with a mission and its phase missions have been killed or have despawned.
This check is done MAP wide, so may be more useful in detecting mission state on some large area missions.
Link to comment
Share on other sites

Tinker with "CIVILIAN" and "RESISTANCE".  I have had some luck with this in a couple areas.  side CIVILIAN will shoot at RESISTANCE, but currently RES sees CIV as friendly.

 

The "CIVILIAN" side seems to treat players as friendly 'sometimes', but will quickly turn hostile.

 

Players are of side "EAST and WEST", depending on gender.

 

Epoch has a script loop that is resetting a players in game 'rating (see addrating), so playing with that generates some unexpected results.   There is code currently in the AI_Killed.sqf script that sets a players rating into the less than -2000 range when they kill a 'civilian' AI. It has only a very temporary effect (1-3 minutes) before the EPOCH loop resets it.

 

More testing is in the works, but right now the AI can be created on any of the four sides ("CIVILIAN", "EAST", "WEST", "RESISTANCE") from the config files.

I am also experimenting with 'setcaptive' for some regional effects and 'special undercover' mission functionality...more to come.

 

Based on info from another thread, it seems the civilian side is also used for buildings and such, too, so making Civilian hostile to AI may break some other things.

 

summary:

CIVILIAN - shoots players, shoots RESISTANCE

RESISTANCE - shoots players, shoots at WEST, shoots at EAST

WEST or EAST - friendly to players, shoot at RESISTANCE

players are side West or East

AddRating has very temporary effect, and may break some other EPOCH functionality.

Link to comment
Share on other sites

My configs

 

description.ext

http://pastebin.com/arsNgqrq

#include "****************.hpp"
author = "Epoch Team - Hosted by SURVIVORS BR";
class Header
{
gameType = Sandbox;
minPlayers = 1;
maxPlayers = 100;
};
respawn = "BASE";
respawnDelay = 600;
respawnDialog = 0;
onLoadMission= "Acesse facebook.com/survivorsepoch";
OnLoadIntro = "Bem Vindo ao Epoch Mod - Hosted By SURVIVORS BR";
//loadScreen = "\x\addons\a3_epoch_assets\pictures\loadScreen_ca.paa";
loadScreen = "scripts\images\loadScreen.paa";
OnLoadIntroTime = False;
OnLoadMissionTime = False;
onLoadName = "Epoch Altis";
disabledAI = true;
scriptedPlayer = 1;
disableChannels[]={0,2,6};
enableItemsDropping = 0;
briefing = 0;
debriefing = 0;
enableDebugConsole = 0;
joinUnassigned = 0;
respawnOnStart = 0;
forceRotorLibSimulation = 0;
corpseManagerMode = 1;
corpseLimit = 10;
corpseRemovalMinTime = 1200;
corpseRemovalMaxTime = 3600;
wreckManagerMode = 1;
wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
class CfgRemoteExecCommands {};

class CfgSounds
{
//*******************
    sounds[] = {};
    class radio1
    {
        name = "radio01";
        // filename, volume, pitch
        sound[] = {"radio01.ogg",1,1};
        titles[] = {0,""};
    };
//**********************
};

class RscTitles
{
	#include "scripts\statusBar.hpp"
	//************************
    class radioChatterBar {
        idd = -1;
        onLoad = "uiNamespace setVariable ['radioChatterBar', _this select 0]";
        onUnload = "uiNamespace setVariable ['radoiChatterBar', objNull]";
        onDestroy = "uiNamespace setVariable ['radioChatterBar', objNull]";
        fadein = 0;
        fadeout = 10;
        duration = 10e10;
        movingEnable = 0;
        controlsBackground[] = {};
        objects[] = {};
        class controls {
            class statusBarText {
                idc = 1010;
                x = safezoneX + 0.5;
                y = safezoneY; // upper left hand corner
                //x = safezoneX + safezoneW - 1.5;
                //y = safezoneY + safezoneH - 0.4; //H
                w = 1; 
                h = 0.3;  //hopefully makes it 10 lines tall
                shadow = 2;
                colorBackground[] = { 1, 0.3, 0, 0.0 };  // uncomment and increase 4th number to have a 	background
                font = "PuristaSemibold";
                size = 0.03;
                type = 13;// CT_TYPES = CT_STRUCTURED_TEXT
                style = 1;
                text="Loading server info...";
                class Attributes {
                    align="left";
                    color = "#FFFFFF"; //"#00FF09";BrightGreen   //#FF8700
                };
            };
        };
    };
//***********************************
}; 

init.sqf

http://pastebin.com/btg0H9hL

// Lootspawner Script
if (isServer) then 
{
	fn_getBuildingstospawnLoot = compile preProcessFileLineNumbers "scripts\LSpawner\fn_LSgetBuildingstospawnLoot.sqf"; 
	LSdeleter = compile preProcessFileLineNumbers "scripts\LSpawner\LSdeleter.sqf";
	execVM "scripts\LSpawner\Lootspawner.sqf";
};

// Welcome Credits
[] execVM "scripts\welcome.sqf";

// Status bar
[] execVM "scripts\fn_statusBar.sqf";

// Name
[] execVM "scripts\player_init.sqf";

//FuMS-HC
[] execVM "HC\Init.sqf";
Link to comment
Share on other sites

SEM isn't built into FuMS.  The SEM in FuMS is a set of old school simple Epoch missions from Epoch 2.

 

Nothing really related to SEM's for EPOCH3.

 

The Simple Epoch Missions are a set of 5 basic "go to spot, kill ai, get loot' missions that each spawn some sort of object (ie vehicle or helo wreck), some ai, and a loot box upon completion.

 

The SEM theme is part of FuMS to provide Admins with an example of how this sort of mission set can be folded into whatever else they want to design.

 

At this point, FuMS has 3 stock Themes that come with it:

Simple epoch Missions - see above

 

Town Raids - Random - random town is selected every 50minutes for invasion.  Forces show up in vehicles, get dropped off, and begin searching buildings in the town.  After 40minutes, vehicles roll back into town to recover the soldiers, 10minutes later, they leave town and the mission ends. Victory is determined by the number of AI killed by players during the event.

-demonstrates Convoy operations, troop insertion ops, troop AI pattern complexity and troop evacuation ops.

 

HeloPatrol - set of 4 helo patrols that appear in random order across ALTIS. These 4 missions use 'town' names for their patrol route and are easily modified to other maps, without having to look up points.  Just change the names of the towns you want the helo's to patrol.

-demonstrates air vehicle use, long range patrol behaviour, support for armed vehicles

 

Anyway, all of these are provided as examples for admins, to build what they want for their server.

 

FuMS does not utilize any hooks, or variables from any other mod. It is 100% stand alone.

Link to comment
Share on other sites

 

My configs

 

description.ext

http://pastebin.com/arsNgqrq

#include "****************.hpp"
author = "Epoch Team - Hosted by SURVIVORS BR";
class Header
{
gameType = Sandbox;
minPlayers = 1;
maxPlayers = 100;
};
respawn = "BASE";
respawnDelay = 600;
respawnDialog = 0;
onLoadMission= "Acesse facebook.com/survivorsepoch";
OnLoadIntro = "Bem Vindo ao Epoch Mod - Hosted By SURVIVORS BR";
//loadScreen = "\x\addons\a3_epoch_assets\pictures\loadScreen_ca.paa";
loadScreen = "scripts\images\loadScreen.paa";
OnLoadIntroTime = False;
OnLoadMissionTime = False;
onLoadName = "Epoch Altis";
disabledAI = true;
scriptedPlayer = 1;
disableChannels[]={0,2,6};
enableItemsDropping = 0;
briefing = 0;
debriefing = 0;
enableDebugConsole = 0;
joinUnassigned = 0;
respawnOnStart = 0;
forceRotorLibSimulation = 0;
corpseManagerMode = 1;
corpseLimit = 10;
corpseRemovalMinTime = 1200;
corpseRemovalMaxTime = 3600;
wreckManagerMode = 1;
wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
class CfgRemoteExecCommands {};

class CfgSounds
{
//*******************
    sounds[] = {};
    class radio1
    {
        name = "radio01";
        // filename, volume, pitch
        sound[] = {"radio01.ogg",1,1};
        titles[] = {0,""};
    };
//**********************
};

class RscTitles
{
	#include "scripts\statusBar.hpp"
	//************************
    class radioChatterBar {
        idd = -1;
        onLoad = "uiNamespace setVariable ['radioChatterBar', _this select 0]";
        onUnload = "uiNamespace setVariable ['radoiChatterBar', objNull]";
        onDestroy = "uiNamespace setVariable ['radioChatterBar', objNull]";
        fadein = 0;
        fadeout = 10;
        duration = 10e10;
        movingEnable = 0;
        controlsBackground[] = {};
        objects[] = {};
        class controls {
            class statusBarText {
                idc = 1010;
                x = safezoneX + 0.5;
                y = safezoneY; // upper left hand corner
                //x = safezoneX + safezoneW - 1.5;
                //y = safezoneY + safezoneH - 0.4; //H
                w = 1; 
                h = 0.3;  //hopefully makes it 10 lines tall
                shadow = 2;
                colorBackground[] = { 1, 0.3, 0, 0.0 };  // uncomment and increase 4th number to have a 	background
                font = "PuristaSemibold";
                size = 0.03;
                type = 13;// CT_TYPES = CT_STRUCTURED_TEXT
                style = 1;
                text="Loading server info...";
                class Attributes {
                    align="left";
                    color = "#FFFFFF"; //"#00FF09";BrightGreen   //#FF8700
                };
            };
        };
    };
//***********************************
}; 

init.sqf

http://pastebin.com/btg0H9hL

// Lootspawner Script
if (isServer) then 
{
	fn_getBuildingstospawnLoot = compile preProcessFileLineNumbers "scripts\LSpawner\fn_LSgetBuildingstospawnLoot.sqf"; 
	LSdeleter = compile preProcessFileLineNumbers "scripts\LSpawner\LSdeleter.sqf";
	execVM "scripts\LSpawner\Lootspawner.sqf";
};

// Welcome Credits
[] execVM "scripts\welcome.sqf";

// Status bar
[] execVM "scripts\fn_statusBar.sqf";

// Name
[] execVM "scripts\player_init.sqf";

//FuMS-HC
[] execVM "HC\Init.sqf";

 

When i had this in descriptions.ext

class CfgSounds

{

//*******************

sounds[] = {};

class radio1

{

name = "radio01";

// filename, volume, pitch

sound[] = {"radio01.ogg",1,1};

titles[] = {0,""};

};

//**********************

};

class RscTitles

{

#include "scripts\statusBar.hpp"

//************************

class radioChatterBar {

idd = -1;

onLoad = "uiNamespace setVariable ['radioChatterBar', _this select 0]";

onUnload = "uiNamespace setVariable ['radoiChatterBar', objNull]";

onDestroy = "uiNamespace setVariable ['radioChatterBar', objNull]";

fadein = 0;

fadeout = 10;

duration = 10e10;

movingEnable = 0;

controlsBackground[] = {};

objects[] = {};

class controls {

class statusBarText {

idc = 1010;

x = safezoneX + 0.5;

y = safezoneY; // upper left hand corner

//x = safezoneX + safezoneW - 1.5;

//y = safezoneY + safezoneH - 0.4; //H

w = 1;

h = 0.3; //hopefully makes it 10 lines tall

shadow = 2;

colorBackground[] = { 1, 0.3, 0, 0.0 }; // uncomment and increase 4th number to have a background

font = "PuristaSemibold";

size = 0.03;

type = 13;// CT_TYPES = CT_STRUCTURED_TEXT

style = 1;

text="Loading server info...";

class Attributes {

align="left";

color = "#FFFFFF"; //"#00FF09";BrightGreen //#FF8700

};

};

};

};

//***********************************

};

 

the server don't start.

 

 

if remove on desciption.ext the server start

Link to comment
Share on other sites

is this your entire description.ext? if not can you post a copy of what it looks like?

 

I am not running into any start issues, using what you have posted.

 

If you are still having issues. The code in the description.ext is just to support the AI's radio chatter and the window you see their messages.

 

Inside the BaseServer.sqf you can set the following to just turn off this functionality.

 

[  // Event and AI Radio messsage behavior
        false, // EnableRadioChatterSystem: turns on the system, allowing below options to function
        true, // EnableRadioAudio: turns on 'audio' effects for radio chatter
        true, // RadioRequired: if false, messages are heard without a radio on the player's belt.
        false, // RadioFollowTheme: Conforms with Theme radio channel choices. False:any radio works for all channels.
        true, 800 // EnableAIChatter: enables random radio chatter between AI when players get within the specified range (meters) as default.
              // NOTE: Theme 'Radio Range' will override this setting.
    ]
 
I am not sure why the code you posed would be stopping your server if the above text is all your description.ext contains.
Link to comment
Share on other sites

my descriptions.ext :

author = "Epoch Mod Team";


class Header
{
gameType = Sandbox;
minPlayers = 1;
maxPlayers = 100;
};
respawn = "BASE";
respawnDelay = 600;
respawnDialog = 0;

onLoadMission= "Epoch";
OnLoadIntro = "Welcome to Epoch Mod";
loadScreen = "\x\addons\a3_epoch_assets\pictures\loadScreen_ca.paa";
OnLoadIntroTime = False;
OnLoadMissionTime = False;
onLoadName = "Epoch Mod";
disabledAI = true;
scriptedPlayer = 1;
disableChannels[]={0,1,2,6};
enableItemsDropping = 0;
briefing = 0;
debriefing = 0;
enableDebugConsole = 0;
joinUnassigned = 0;
respawnOnStart = 0;
forceRotorLibSimulation = 1;

corpseManagerMode = 1;
corpseLimit = 10;
corpseRemovalMinTime = 1200;
corpseRemovalMaxTime = 3600;

wreckManagerMode = 1;
wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;

class CfgRemoteExecCommands {};

class RscTitles
{

#include "dialog\statusBar.hpp"
};

class CfgSounds
{
//*******************
sounds[] = {};
class radio1
{
name = "radio01";
// filename, volume, pitch
sound[] = {"radio01.ogg",1,1};
titles[] = {0,""};
};
//**********************
};

class RscTitles
{
#include "scripts\statusBar.hpp"
//************************
class radioChatterBar {
idd = -1;
onLoad = "uiNamespace setVariable ['radioChatterBar', _this select 0]";
onUnload = "uiNamespace setVariable ['radoiChatterBar', objNull]";
onDestroy = "uiNamespace setVariable ['radioChatterBar', objNull]";
fadein = 0;
fadeout = 10;
duration = 10e10;
movingEnable = 0;
controlsBackground[] = {};
objects[] = {};
class controls {
class statusBarText {
idc = 1010;
x = safezoneX + 0.5;
y = safezoneY; // upper left hand corner
//x = safezoneX + safezoneW - 1.5;
//y = safezoneY + safezoneH - 0.4; //H
w = 1;
h = 0.3; //hopefully makes it 10 lines tall
shadow = 2;
colorBackground[] = { 1, 0.3, 0, 0.0 }; // uncomment and increase 4th number to have a background
font = "PuristaSemibold";
size = 0.03;
type = 13;// CT_TYPES = CT_STRUCTURED_TEXT
style = 1;
text="Loading server info...";
class Attributes {
align="left";
color = "#FFFFFF"; //"#00FF09";BrightGreen //#FF8700
};
};
};
};
//***********************************
};

 

 

that when i had this line that my server don't start!

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...