Jump to content

FMission


Recommended Posts

the problem is related to the function, which calls the units and vehicles: bis_fnc_findsafepos. this function is spawning the units in the center of the map, if it cant find a safe position. but I have the feeling, that it sometimes just spawns them in the center, wether it could safely spawn them or not.

I removed that function and spawn the units now like DZMS does.

 

Just working with the example and not NetShark's code, what I see is the default way the example calls the mission. It will find a position for the mission, and then within that it will index the loot location within that. From that loot location, it will spawn the mission itself. My presumption is the intent is to add more randomness to it, and make it more harder to pinpoint the objective from the map.

 

If he didn't account for that when he built his mission, that may explain why they spawned in such a detached manner.

// Random location

_position = [getMarkerPos _spawnMarker,0,_spawnRadius,10,0,20,0] call BIS_fnc_findSafePos;

_loot_pos = [_position,0,(_markerRadius - 100),10,0,20,0] call BIS_fnc_findSafePos;

_position is the safe location found by the game

_loot_pos is the location found within the confines of the marker radius (minus 100 as indicated by the code).

 

I'm still figuring this all out myself. I like the bones of it, though I need to learn a lot of stuff just to get it to do what I want it to do. The open layout of things makes this a bit fun. Anyways... take it sleazy.

Link to comment
Share on other sites

Hi, thanks for pointing out all that :)

In my case, I decided to reduce the markerRadius and so far it's been working fine.

 

Another question:

What if I want to spawn a mission on a static location?

What would be the right sintax to modify the line:

_spawnMarker = 'center';

Can I use coordinates there?

Link to comment
Share on other sites

Hi, thanks for pointing out all that :)

In my case, I decided to reduce the markerRadius and so far it's been working fine.

 

Another question:

What if I want to spawn a mission on a static location?

What would be the right sintax to modify the line:

_spawnMarker = 'center';

Can I use coordinates there?

 

Yeah to do static locs just put coords in after _pos = blah blah, then reference that pos in your call.

Link to comment
Share on other sites

Yeah to do static locs just put coords in after _pos = blah blah, then reference that pos in your call.

 

Hey Thanks, but I didn't get it....

 

you mean I have to set the coords on each variable with _pos, (eg: _loot_pos, _aiunit_spawn_pos, etc) ?

_loot_pos = [_position,0,(_markerRadius - 100),10,0,20,0] call BIS_fnc_findSafePos;

and, what kind of coords will I use? database coords like or mission.sqm file like?

So, for example: 

Instead of: 

_aiunit1 = [_aiunit_spawn_pos,50,4,"Bandit",_loot_pos,"M2"] execVM "\z\addons\dayz_server\addons\FMission\AI_BP\AI_Unit_Common.sqf";
sleep .5;

I should use:

_aiunit1 = [[325,[3010.98,11830.5,0.277]],50,4,"Bandit",_loot_pos,"M2"] execVM "\z\addons\dayz_server\addons\FMission\AI_BP\AI_Unit_Common.sqf";
sleep .5;

or: 

_aiunit1 = [14825.6,110.96082,16547.9,50,4,"Bandit",_loot_pos,"M2"] execVM "\z\addons\dayz_server\addons\FMission\AI_BP\AI_Unit_Common.sqf";
sleep .5;

Thanks

Link to comment
Share on other sites

This is what I am getting with both vehicle and heli patrols:

 

 6:15:16 "FAI Vehicle 1.0: -=HMMWV_M1151_M2_CZ_DES_EP1_DZ=- Spawned @ Location: [6770.97,12809.2] | Patrol Radius: 100m"
 6:15:16 Error in expression <pletionRadius 20;


if (_i == 0) then
{
_hwp setWaypointSpeed "LIMITED";
_hwp se>
 6:15:16   Error position: <_hwp setWaypointSpeed "LIMITED";
_hwp se>
 6:15:16   Error Undefined variable in expression: _hwp
 6:15:16 File z\addons\dayz_server\addons\FMission\FAI\FAI_fn_vehiclePatrol.sqf, line 59
 6:15:16 Error in expression <


_vwp = _grp addWaypoint [_wpPos, 0];
_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error position: <_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error Undefined variable in expression: _hwp
 6:15:16 File z\addons\dayz_server\addons\FMission\FAI\FAI_fn_vehiclePatrol.sqf, line 53
 6:15:16 Error in expression <


_vwp = _grp addWaypoint [_wpPos, 0];
_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error position: <_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error Undefined variable in expression: _hwp
 6:15:16 File z\addons\dayz_server\addons\FMission\FAI\FAI_fn_vehiclePatrol.sqf, line 53
 6:15:16 Error in expression <


_vwp = _grp addWaypoint [_wpPos, 0];
_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error position: <_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error Undefined variable in expression: _hwp
 6:15:16 File z\addons\dayz_server\addons\FMission\FAI\FAI_fn_vehiclePatrol.sqf, line 53
 6:15:16 Error in expression <


_vwp = _grp addWaypoint [_wpPos, 0];
_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error position: <_hwp setWaypointType "MOVE";
_hwp setWay>
 6:15:16   Error Undefined variable in expression: _hwp
 6:15:16 File z\addons\dayz_server\addons\FMission\FAI\FAI_fn_vehiclePatrol.sqf, line 53
 6:15:16 Error in expression <vate ["_hwp"];
_hwp = _grp addWaypoint [_pos, 0];
_hwp setWaypointType "CYCLE";
>
 6:15:16   Error position: <_pos, 0];
_hwp setWaypointType "CYCLE";
>
 6:15:16   Error Undefined variable in expression: _pos
 6:15:16 File z\addons\dayz_server\addons\FMission\FAI\FAI_fn_vehiclePatrol.sqf, line 66


 

nothing obvious is jumping out, it happens with all example missions I have used that spawn vehicles and heli patrols

 

edit, I noticed your github history, the arrays are named slightly differently.

I too am getting these errors any luck fixing this? 

Link to comment
Share on other sites

I too am getting these errors any luck fixing this? 

 

yeah, I'll post corrected files

 

/*
    File: FAI_fn_vehiclePatrol.sqf
    Author: Joris-Jan van 't Land

    Description:
    Create a random patrol of several waypoints around a given position.

    Parameter(s):
    _this select 0: the group to which to assign the waypoints (Group)
    _this select 1: the position on which to base the patrol (Array)
    _this select 2: the maximum distance between waypoints (Number)
    _this select 3: (optional) blacklist of areas (Array)
    
    Returns:
    Boolean - success flag
    
    Customized by Foamy for FMission
    
*/

//Validate parameter count
if ((count _this) < 3) exitWith {diag_log "Log: [taskPatrol] Function requires at least 3 parameters!"; false};

private ["_grp", "_patrolpos", "_maxDist", "_blacklist"];
_grp = _this select 0;
_patrolpos = _this select 1;
_maxDist = _this select 2;

_blacklist = [];
if ((count _this) > 3) then {_blacklist = _this select 3};

//Validate parameters
if ((typeName _grp) != (typeName grpNull)) exitWith {diag_log "Log: [taskPatrol] Group (0) must be a Group!"; false};
if ((typeName _patrolpos) != (typeName [])) exitWith {diag_log "Log: [taskPatrol] Position (1) must be an Array!"; false};
if ((typeName _maxDist) != (typeName 0)) exitWith {diag_log "Log: [taskPatrol] Maximum distance (2) must be a Number!"; false};
if ((typeName _blacklist) != (typeName [])) exitWith {diag_log "Log: [taskPatrol] Blacklist (3) must be an Array!"; false};

_grp setBehaviour "SAFE";

//Create a string of randomly placed waypoints.
private ["_prevPos"];
//_prevPos = _pos;
for "_i" from 0 to (2 + (floor (random 3))) do
{
    private ["_vwp", "_wpPos"];
    _wpPos = [_patrolpos, 50, _maxDist, 1, 0, 60 * (pi / 180), 0, _blacklist] call BIS_fnc_findSafePos;
    //_newPos = [_prevPos, 50, _maxDist, 1, 0, 60 * (pi / 180), 0, _blacklist] call BIS_fnc_findSafePos;
    //_prevPos = _newPos;
    //_prevPos = _pos;

    _vwp = _grp addWaypoint [_wpPos, 0];
    _vwp setWaypointType "MOVE";
    _vwp setWaypointCompletionRadius 20;

    //Set the group's speed and formation at the first waypoint.
    if (_i == 0) then
    {
        _vwp setWaypointSpeed "LIMITED";
        _vwp setWaypointFormation "STAG COLUMN";
    };
};

//Cycle back to the first position.
private ["_vwp"];
_vwp = _grp addWaypoint [_patrolpos, 0];
_vwp setWaypointType "CYCLE";
_vwp setWaypointCompletionRadius 20;

true
/*
    File: FAI_fn_heliPatrol.sqf
    Author: Joris-Jan van 't Land

    Description:
    Create a random patrol of several waypoints around a given position.

    Parameter(s):
    _this select 0: the group to which to assign the waypoints (Group)
    _this select 1: the position on which to base the patrol (Array)
    _this select 2: the maximum distance between waypoints (Number)
    _this select 3: (optional) blacklist of areas (Array)
    
    Returns:
    Boolean - success flag
    
    Customized by Foamy for FMission
    
*/

//Validate parameter count
if ((count _this) < 3) exitWith {diag_log "Log: [taskPatrol] Function requires at least 3 parameters!"; false};

private ["_grp", "_patrolpos", "_maxDist", "_blacklist"];
_grp = _this select 0;
_patrolpos = _this select 1;
_maxDist = _this select 2;

_blacklist = [];
if ((count _this) > 3) then {_blacklist = _this select 3};

//Validate parameters
if ((typeName _grp) != (typeName grpNull)) exitWith {diag_log "Log: [taskPatrol] Group (0) must be a Group!"; false};
if ((typeName _patrolpos) != (typeName [])) exitWith {diag_log "Log: [taskPatrol] Position (1) must be an Array!"; false};
if ((typeName _maxDist) != (typeName 0)) exitWith {diag_log "Log: [taskPatrol] Maximum distance (2) must be a Number!"; false};
if ((typeName _blacklist) != (typeName [])) exitWith {diag_log "Log: [taskPatrol] Blacklist (3) must be an Array!"; false};

_grp setBehaviour "SAFE";

//Create a string of randomly placed waypoints.
private ["_prevPos"];
//_prevPos = _pos;
for "_i" from 0 to (2 + (floor (random 3))) do
{
    private ["_hwp", "_wpPos"];
    _wpPos = [_patrolpos, 50, _maxDist, 1, 0, 60 * (pi / 180), 0, _blacklist] call BIS_fnc_findSafePos;
    //_newPos = [_prevPos, 50, _maxDist, 1, 0, 60 * (pi / 180), 0, _blacklist] call BIS_fnc_findSafePos;
    //_prevPos = _newPos;
    //_prevPos = _pos;

    _hwp = _grp addWaypoint [_wpPos, 0];
    _hwp setWaypointType "MOVE";
    _hwp setWaypointCompletionRadius 20;

    //Set the group's speed and formation at the first waypoint.
    if (_i == 0) then
    {
        _hwp setWaypointSpeed "LIMITED";
        _hwp setWaypointFormation "STAG COLUMN";
    };
};

//Cycle back to the first position.
private ["_hwp"];
_hwp = _grp addWaypoint [_patrolpos, 0];
_hwp setWaypointType "CYCLE";
_hwp setWaypointCompletionRadius 20;

true

 

I almost submitted a github push for that, but... eh...

 

it added spaces when I first tried, lets see if editing fixes.

Link to comment
Share on other sites

  • 4 weeks later...
  • 2 weeks later...
  • 4 weeks later...

Hi,

Can someone tell me what I have to do, to change the minefield so mines only explode when vehicles drive over them (all vehicles including bike) and not players on foot, cause this anoys alot of my players and I realy would like to change it.

This is an awsome Mission System, much respect to Foamy for his work!

 

Many thx in advance.

Link to comment
Share on other sites

in your FLoot -> FLoot_Bandit:

 

if (_diceRoll < _lootChance) then

{

    diag_log("FLoot: Extra Loot Chance Success");

    _itemMeds = _itemslistMeds call BIS_fnc_selectRandom;

    _unitname addMagazine _itemMeds;

    

    _itemMisc = _itemslistMisc call BIS_fnc_selectRandom;

    _unitname addMagazine _itemMisc;

    sleep 1;

    

    _unitname addweapon "RPG7V"; //new

    _unitname addmagazine "PG7V"; //new

    _unitname addmagazine "PG7V"; //new

    rpg = true;//new

}

else

{

diag_log("FLoot: Extra Loot Chance Failed");

sleep 1;

};

 

 

then create a file FAI_Unit_Killed:

 

private ["_victim","_killer","_banditKills"];



_victim = _this select 0;

_killer = _this select 1;

_banditKills = _killer getVariable ["banditKills",0];

_killer setVariable ["banditKills",_banditKills + 1,true];



if (rpg) then {

_victim removeWeapon "RPG7V";

_victim removeMagazine "PG7V";

_victim removeMagazine "PG7V";

};

 

 

then in FAI_Create_Unit set the path to the FAI killed sqf:

 

// Set AI Variables    

    _aiunit enableAI "TARGET";

    _aiunit enableAI "AUTOTARGET";

    _aiunit enableAI "MOVE";

    _aiunit enableAI "ANIM";

    _aiunit enableAI "FSM";

    _aiunit allowDammage true;

    _aiunit setCombatMode "RED";

    _aiunit setBehaviour "COMBAT";

    _aiunit addEventHandler ["killed",{_this ExecVM "\z\addons\dayz_server\addons\FMission\FAI\FAI_Unit_Killed.sqf"}];//new

Link to comment
Share on other sites

See, this is exactly what I was hoping for when I did this. Seeing you guys work together to make it better. LOVE IT!

 

I wish I had time to devote to FMission since my coding skills have increased dramatically (about 3000 hours) since I wrote this system and I could make it super wicked now but alas I am committed to my new projects for Arma 3 and need to finish those before doing anything else. Perhaps once I get those up and running I can come back to FMission and make it the best missions system for epoch hands down.

 

I am re-doing my master dev server next week so maybe I will setup an A2 Dev environment and finish up the last of those other missions I did.

 

For those interested in my other projects here is a bit of info.

 

CQ - ETA Summer 2015

"Closed Quarters" is a Team DM platform for Arma 3 that will be a fast paced COD style of game play with kill streaks, perks, levels, achievements etc etc. We are going all out on this with great visuals, sounds and level design. There is nothing like this out there for Arma. 

 

We changed forums and services for our new games so here is the new link to the main community.

http://www.therevolutiongaming.com/

Link to comment
Share on other sites

hey FoamysWorld, just wanted to say thank you for this awesome mission system. It might not be DZMS or WAI, but I love the 

fact, that it is so small yet so customizable.

made some kool mission with it like convoy, base defence, secret cave mission and kill a certain target etc.

 

I think it is good as it is. its a base where admin can start doing their own thing with.

maybe only the killcounter for npc could be implemented and rpgs as a choice.

but thats it I think.

Link to comment
Share on other sites

  • 4 weeks later...

Please sign in to comment

You will be able to leave a comment after signing in



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