Jump to content

rejenorst

Member
  • Content Count

    427
  • Joined

  • Last visited

  • Medals

Posts posted by rejenorst


  1. overview.jpg

     

    STEAM LINK

     https://steamcommunity.com/sharedfiles/filedetails/?id=2038618881 

     

    Mission name is a bit misleading as it doesn't take place in or near Pyrgos but plays on the whole Operation Steel Pegasus theme of busting a move towards Pyrgos.

    Your play as part of a US Marine Corp Platoon who do an amphibious assault on low draft Riverine craft to secure a beachhead for potential supply or withdrawal operations only to find yourself dragged inland a bit deeper.

     

    Mission is voice acted and has some of my music in it.

    Uses some assets from Jets and Marksman.

    You do not control a squad. Your are led by an AI Squad leader.

    At least one of your squad mates must survive.

    Localized stringtable includes English and German. Please message me if you would like to translate to another language.


    Open only if you prefer spoilers and don't like surprises (No plot surprises as there isn't much of a story just scripts and what the mission is broken up into):

     

    Spoiler

    This is a short mission that takes place in Altis around Mazi Bay. Its split into 3 parts: Preparation (a little bit of an atmospheric start where you can pick and choose your equipment), an amphibious landing with a short fire fight and an urban Mout task.

    This mission was generally to test scripts I have been working on and off on.

     

    Points of interest:

    The land fire fight the AI will try to move away/use more smoke/crawl away if it feels the odds are stacked against it. It factors in the number enemies it can see vs friendlies, the amount of armor rating units have and whether they have launchers (not really utilized much in this short mission but you will get to see a little bit of what I am working on).

     

    The MOUT fight at the end I wanted to achieve a few things with the script:

     

    - Have AI move from house to house

    - Increase survival for AI or lethality of potential kill zones

    - Have AI remain grouped in squads so as to feed the normal target info to each other and use team leader's target list as the point of focus for the squad

    - Have script prioritize units for movement from house to house who are farthest from team leader selected target

    - Move only 40% of units unless unit count is <- 2 while the rest wait

    - Get AI to randomly flank target position house rather than make a straight line for target area (they still will but where there are enough houses they have a decent spread

    - Get AI to remain in relative proximity of the squad (catch up if lagging behind if the distance exceeds X)

     

    Won't say the script has achieved my points as these where goals I wanted to give you an idea of where I was heading out. 

     

    Your squad has a predetermined point it will gradually sweep towards and spread out in the process (depending on number of houses. Initially units might bunch up around the graveyard). 

     

    MOUT ends once your squad leader gets within 100m of the determined point and then walks to a given waypoint or the enemy are all eliminated.

     

    Experience will vary with each play through. AI skill is set randomly to medium/high for faster reactions etc for the Urban side of the mission. Your position is not fed to the AI, the AI remains grouped so it automatically passes information on as it normally does ingame. AI is scripted to try and break off engagement if it gets suppressed while moving from house to house but this doesn't always work and can lead to stupid behaviors. In any case hope you guys enjoy.

     

     

     

    Arma3-x64-2020-03-27-20-24-07-136.jpg

     

    Let me know if the music is too loud or if the levels in the music are off and if you run into any problems. Thank you!

    • Like 6

  2. This script is intended to be used if you want a group to board in cargo positions only in a convoy that has another group assigned as drivers. It will assign each unit where there is room and will calculate how many units have already been assigned to a particular vehicle vs the cargo spaces available (for own group only. If another group is assigned to cargo and in the process of boarding this will not work correctly). If you're looking for units to command vehicles in a convoy your best off using addvehicle command. This is just for assigning units to cargo of vehicles driven by other groups.

     

    There are likely way better more efficient scripts out there and this one still needs more testing.

     

    INPUT:

    _hasBoarded = [_group,_assignedVehicles] call rej_fnc_assignCargo;

    _group = the group you want to assign to cargo.

    _assignedVehicles = An array of vehicles you want group to board.

     

    Return Value Example:

    0: Boolean. True if all alive units have boarded. Will return false if units are still in the process of boarding.

    1: Boolean: True if there wasn't enough cargo spaces for all units. Meaning boarding has failed and should not be continued,You may need to unassignVehicle any units that have boarded.

    2: Number of alive units counted

    3: Number of boarded units counted.

     

    2 and 3 should be equal if 0 == true.

    0 should be false if 1 is true.

     

    Script:

     

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //-- This Script Will Check For Available Cargo Positions In One Or More Vehicles Within An Array And Assign Units Not Currently In The Vehicle To Get In Cargo --//
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    _targetGroup = _this select 0;
    _vehicles = _this select 1;
    _vehicleCount = (count _vehicles) - 1;
    
    copytoclipboard str(_targetGroup);
    _units = units _targetGroup;
    _aliveUnits = 0;
    _boardedUnits = 0;
    
    _returnVar = [false,false,_aliveUnits,_boardedUnits];
    
    _unitCount = (count _units) - 1;
    if (_unitCount >= 0) then 
    {
    	
    	for [{_a = 0},{(_a <= _unitCount)},{_a = _a + 1}] do {
    		_unit = _units select _a;
    		if (lifeState _unit find "DEAD" < 0) then
    		{
    			_aliveUnits = _aliveUnits + 1;
    			if ((not (vehicle _unit in _vehicles)) && (currentCommand _unit != "GET IN")) then
    			{
    				if (_vehicleCount >= 0) then
    				{
    					_vehiclePositionFound = false;
    					for [{_b = 0},{(_b <= _vehicleCount) && (!_vehiclePositionFound)},{_b = _b + 1}] do {
    						_vehicle = _vehicles select _b;
    						_emptyPositions = _vehicle emptyPositions "CARGO";
    						_alreadyAssignedCargoPositions = 0;
    						
    						{if ((_unit != _x) && (assignedVehicle _x == _vehicle) && (vehicle _x != _vehicle)) then {_alreadyAssignedCargoPositions = _alreadyAssignedCargoPositions + 1};} forEach _units; 
    						
    						if (_emptyPositions - _alreadyAssignedCargoPositions > 0) then
    						{
    							_unit assignAsCargo _vehicle; 
    							[_unit] orderGetIn true;
    							_vehiclePositionFound = true;
    						};
    					};
    					_b = nil;
    					if (!_vehiclePositionFound) then
    					{
    						_returnVar set [1,true];
    					};
    				};
    				} else {
    				if (vehicle _unit in _vehicles) then
    				{
    					_boardedUnits = _boardedUnits + 1;
    				};
    			};
    		};
    	};
    	_a = nil;
    	if (_boardedUnits == _aliveUnits) then
    	{
    		_returnVar set [0,true]; 
    		_returnVar set [2,_aliveUnits];
    		_returnVar set [3,_boardedUnits];
    	};
    };
    _returnVar

     

    Put this in init.sqf:

    rej_fnc_assignCargo = compile preProcessFileLineNumbers "rej_commandscript\functions\rej_fnc_assigncargo.sqf";

    To Check if group has boarded (can be used in a loop to check progress of boarding):

    _hasBoarded = [_group,_assignedVehicles] call rej_fnc_assignCargo;
    if ((_hasBoarded select 0) && (not (_hasBoarded select 1))) then
    {
        //-- Boarding completed --//
    } else {
        if (_hasBoarded select 1) then {
    	//-- Boarding has failed --//
        };
    };
    • Like 1

  3. UPDATE 19.08.2016: Have updated script so that if primary weapon is replaced then unit will select primary weapon and if units need to reload after script launch they will reload all their weapons.

     

    Also tested with a moveincargo comand shortly after and still seems to reload weapon though you may hear a reload noise.

     

    An example of adding a weapon, optic for primary gun and magazines to player (group is left grpNull since your not spawning a unit):

     

    [grpNull,player,[["WEAPP","arifle_SPAR_01_blk_F"],["ATTP","optic_Aco"],["MAG","30Rnd_556x45_Stanag",6]]] call rej_fnc_spawnUnit;


  4.  This is just a quick script I am currently using to either spawn units with specific equipment changes or to change the equipment of an existing unit. There are better scripts out there that are likely much more efficient but thought I'd upload it for anyone wanting it. The script still needs testing. If you have any problems with it, please post the inputs and I'll try and replicate then fix he problem.

     

    UPDATE 19.08.2016: Have updated script so that if primary weapon is replaced then unit will select primary weapon and if units need to reload after script launch they will reload all their weapons.

     

    Input arguements:

    0: group (if planning on spawning units otherwise set as grpNull or anything as it is only used in spawning)

    1: existing unit or spawn array eg: ["B_Soldier_SL_F",_startPos,[],_placementRadius,"FORM"]

    2: Items array eg: [["HEAD","H_Watchcap_blk"]]. The first string is the reference string so my script knows which code to execute and the second is the classname. In some cases if class name is left "" it will just remove the current item type.

    3: Optional Boolean either true or false (True by default). Determines whether inventory is automatically transferred from old to newly spawned vest/uniform/backpack.

     

    To change the appearance of a unit only; you can do this: (adds a cap to head, a silencer to primary weapon and a vest the items  of which will be automatically transferred to the new vest. Can be turned off):

    [grpNull,player,[["HEAD","H_Watchcap_blk"],["ATTP","muzzle_snds_H"],["VEST","V_PlateCarrier1_rgr"]]] call rej_fnc_spawnUnit;
    

    You can either use it as a function by placing this in the init (Make sure you change the sqf name appropriately):

    /////////////////////////
    //-- Spawn functions --//
    /////////////////////////
    rej_fnc_spawnUnit = compile preProcessFileLineNumbers "rej_spawnunit.sqf";
    

    Spawning a group with SF helmet, specific vests and no goggles with a placement radius of 25 meters and Sergeant and two Corporal ranks:

    ////////////////////////
    //-- Create group 1 --//
    ////////////////////////
    _group = createGroup WEST;
    
    _groupType =
    [
    [_group,["B_Soldier_SL_F",_startPos,[],25,"FORM"],[["ATTP","muzzle_snds_H"],["HEAD","H_HelmetSpecB"],["VEST","V_PlateCarrier1_rgr"],["GOOGLES",""],["RANK","SERGEANT"]]],
    [_group,["B_Soldier_TL_F",_startPos,[],25,"FORM"],[["ATTP","muzzle_snds_H"],["HEAD","H_HelmetSpecB"],["VEST","V_PlateCarrier1_rgr"],["GOOGLES",""],["RANK","CORPORAL"]]],
    [_group,["B_soldier_LAT_F",_startPos,[],25,"FORM"],[["ATTP","muzzle_snds_H"],["HEAD","H_HelmetSpecB"],["VEST","V_PlateCarrier1_rgr"],["GOOGLES",""],["RANK","CORPORAL"]]],
    [_group,["B_soldier_M_F",_startPos,[],25,"FORM"],[["ATTP","muzzle_snds_H"],["HEAD","H_HelmetSpecB"],["VEST","V_PlateCarrier1_rgr"],["GOOGLES",""]]],
    [_group,["B_medic_F",_startPos,[],25,"FORM"],[["ATTP","muzzle_snds_H"],["HEAD","H_HelmetSpecB"],["VEST","V_PlateCarrier1_rgr"],["GOOGLES",""]]],
    [_group,["B_soldier_AR_F",_startPos,[],25,"FORM"],[["ATTP","muzzle_snds_H"],["HEAD","H_HelmetSpecB"],["VEST","V_PlateCarrier1_rgr"],["GOOGLES",""]]],
    [_group,["B_Soldier_A_F",_startPos,[],25,"FORM"],[["ATTP","muzzle_snds_H"],["HEAD","H_HelmetSpecB"],["VEST","V_PlateCarrier1_rgr"],["GOOGLES",""]]]
    ];
    
    {_x call rej_fnc_spawnUnit} forEach _groupType;
    
    
    
    

    String codes:

     

    ATTH = HandGun attachement
    ATTP = Primary weapon attachement
    ATTS = Secondary weapon attachment
    BACK = Backpack
    FACE = Setface. String should be the face you want for unit.
    GOOGLES = Googles
    HEAD = Helmet/headgear
    ITEM = items (Adds item eg:. ["ITEM",<insert classname>,2]. See MAG for similar input description.)
    MAG = Magazine eg: ["MAG","20Rnd_762x51_Mag",2] 3rd input is the number of magazines
    NVG = Night vission goggles
    NAME = setName command. Eg: ["NAME",["Ben Kerry","Ben","Kerry"]]
    NAMESOUND = setNameSound command. Eg: ["NAMESOUND","dixon"]
    PITCH = Voice pitch. setPitch command. EG: ["PITCH",1]    
    RANK = setRank command. EG: ["RANK","CORPORAL"]    
    SPEAKER = setspeaker command. EG ["SPEAKER","NoVoice"];
    UNI = Set Uniform
    VEST = set vest
    WEAPH = set Handgun weapon (Magazines of previous weapon will be removed)
    WEAPP = Set primary weapon (Magazines of previous weapon will be removed)
    WEAPS = Set secondary weapon (Magazines of previous weapon will be removed)
     

     

    NOTE: For items and magazines the script will check if it can add the item to the unit before placing it in inventory.

     

    EDIT: 10/04/2016

    Fixed googles not being removed properly when adding an array specifying GOOGLES as "".

     

     

    The script itself:

    ///////////////////////////////////////
    //-- Rejenorst's unit spawn script --//
    ///////////////////////////////////////
    _group = _this select 0;
    _unitSpawnInfo = _this select 1;
    _unitEquipment = _this select 2;
    _reAddItems = true;
    if (count _this > 3) then
    {
        _reAddItems = _this select 3;
    };
    
    //////////////////////////////////////////////////////////////////////////
    //-- Define variables and check if unit exists or needs to be spawned --//
    //////////////////////////////////////////////////////////////////////////
    private["_unit"];
    if (typename _unitSpawnInfo == "OBJECT") then
    {
        _unit = _unitSpawnInfo;
    } else {
        _unitType = _unitSpawnInfo select 0;
        _unitSpawnPos = _unitSpawnInfo select 1;
        _unitMarkers = _unitSpawnInfo select 2;
        _unitPlacementRadius = _unitSpawnInfo select 3;
        _unitSpecial = _unitSpawnInfo select 4;
    
        _unit = _group createUnit [_unitType,_unitSpawnPos,_unitMarkers,_unitPlacementRadius,_unitSpecial];
        //["SoldierWB", position player, [], 100, "FORM"]
    };
    
    //////////////////////////////////////////////////
    //-- Check if unit has been spawned or exists --//
    //////////////////////////////////////////////////
    if (isNil "_unit") then
    {
        _unit = objNull;
    };
    
    ///////////////////////
    //-- Add equipment --//
    ///////////////////////
    if (!isNull _unit) then
    {
        private["_magCount","_magArray"];
        _itemTransferArray = [];
        _magazinesAmmoFull = magazinesAmmoFull _unit;
    
        ////////////////////////
        //-- Add unit items --//
        ////////////////////////
        _arrayCount = (count _unitEquipment) - 1;
        if (_arrayCount >= 0) then
        {
            for "_i" from 0 to _arrayCount do {
                _itemArray = _unitEquipment select _i;
                _itemString =  toUpper (_itemArray select 0);
                _item = _itemArray select 1;
                
                _checkItem = [_unit,_itemString,_item] call {
                    _unit = _this select 0;
                    _itemString = _this select 1;
                    _item = _this select 2;
                    
                    if (_itemString == "ATTH") exitWith {_unit addHandgunItem _item};
                    if (_itemString == "ATTP") exitWith {_unit addPrimaryWeaponItem _item};
                    if (_itemString == "ATTS") exitWith {_unit addSecondaryWeaponItem _item};
                    if (_itemString == "BACK") exitWith {
                        _itemsToTransfer = backpackItems _unit;
                        removeBackPack _unit;
                        if (_item != "") then
                        {
                            _unit addBackPack _item;
                        };
                        {if (_unit canAddItemToBackpack _x) then {_unit addItemToBackpack _x};} forEach _itemsToTransfer;
                    };
                    if (_itemString == "FACE") exitWith {_unit setFace _item;};
                    if (_itemString == "GOOGLES") exitWith {
                        removeGoggles _unit;
                        if (_item != "") then
                        {
                            _unit addGoggles _item;
                        };
                    };
                    if (_itemString == "HEAD") exitWith {
                        removeHeadgear _unit;
                        if (_item != "") then
                        {
                            _unit addHeadgear _item;
                        };
                    };
                    if (_itemString == "ITEM") exitWith {
                         _itemCount = 0;
                        if (count _itemArray > 2) then
                        {
                            _itemCount = (_itemArray select 2) - 1;
                        };
                        if (_itemCount >= 0) then
                        {
                            for "_a" from 0 to _itemCount do {
                                if (_unit canAdd _item) then
                                {
                                    _unit addItem _item;
                                };
                            };
                            _a = nil;
                        };
                    };
                    if (_itemString == "MAG") exitWith {
                        _magazineCount = 0;
                        if (count _itemArray > 2) then
                        {
                            _magazineCount = (_itemArray select 2) - 1;
                        };
                        if (_magazineCount >= 0) then
                        {
                            for "_a" from 0 to _magazineCount do {
                                if (_unit canAdd _item) then
                                {
                                    _unit addMagazine _item;
                                };
                            };
                            _a = nil;
                        };
                    };
                    if (_itemString == "NVG") exitWith {
                        _assignedItems = assignedItems _unit;
                        {if (_x find "NVGoggles" > (-1)) then {_unit unassignItem _x;_unit removeItem _x};} forEach _assignedItems;
                        if (_item != "") then
                        {
                            _unit addItem _item;
                        };
                    };
                    if (_itemString == "NAME") exitWith {_unit setName _item};
                    if (_itemString == "NAMESOUND") exitWith {_unit setNameSound _item};
                    if (_itemString == "PITCH") exitWith {_unit setPitch _item};
                    if (_itemString == "RANK") exitWith {_unit setRank _item};
                    if (_itemString == "SPEAKER") exitWith {_unit setSpeaker _item};
                    
                    if (_itemString == "UNI") exitWith {
                        _itemsToTransfer = uniformItems _unit;
                        removeUniform _unit;
                        if (_item != "") then
                        {
                            _unit forceAddUniform _item;
                        };
                        if (_reAddItems) then
                        {
                            {if (_unit canAddItemToUniform _x) then {_unit addItemToUniform _x};} forEach _itemsToTransfer;
                        };
                    };
                    if (_itemString == "VEST") exitWith {
                        _itemsToTransfer = vestItems _unit;
                        removeVest _unit;
                        if (_item != "") then
                        {
                            _unit addVest _item;
                        };
                        if (_reAddItems) then
                        {
                            {if (_unit canAddItemToVest _x) then {_unit addItemToVest _x};} forEach _itemsToTransfer;
                        };
                    };
                    if (_itemString == "WEAPH") exitWith {
                        if (handgunWeapon _unit != "") then
                        {
                            _magArray = getArray (configfile >> "CfgWeapons" >> (handgunWeapon _unit) >> "magazines");
                            _magCount = (count _magArray) - 1;
                            _unit removeWeapon (handgunWeapon _unit);
                        };
                        if (_item != "") then
                        {
                            _unit addWeapon _item;
                        };
                        if (!isNil "_magCount") then
                        {
                            if (_magCount >= 0) then
                            {
                                for "_a" from 0 to _magCount do {
                                    _mag = _magArray select _a;
                                    _unit removeMagazines _mag;
                                };
                                _a = nil;
                                _magCount = nil;
                                _magArray = nil;
                            };
                        };
                    };
                    if (_itemString == "WEAPP") exitWith {
                        if (primaryWeapon _unit != "") then
                        {
                            _magArray = getArray (configfile >> "CfgWeapons" >> (primaryWeapon _unit) >> "magazines");
                            _magCount = (count _magArray) - 1;
                            _unit removeWeapon (primaryWeapon _unit);
                        };
                        if (_item != "") then
                        {
                            _unit addWeapon _item;
                            _unit selectWeapon _item;
                        };
                        if (!isNil "_magCount") then
                        {
                            if (_magCount >= 0) then
                            {
                                for "_a" from 0 to _magCount do {
                                    _mag = _magArray select _a;
                                    _unit removeMagazines _mag;
                                };
                                _a = nil;
                                _magCount = nil;
                                _magArray = nil;
                            };
                        };
                    };
                    if (_itemString == "WEAPS") exitWith {
                        if (secondaryWeapon _unit != "") then
                        {
                            _magArray = getArray (configfile >> "CfgWeapons" >> (secondaryWeapon _unit) >> "magazines");
                            _magCount = (count _magArray) - 1;
                            _unit removeWeapon (secondaryWeapon _unit);
                        };
                        if (_item != "") then
                        {
                            _unit addWeapon _item;
                        };
                        if (!isNil "_magCount") then
                        {
                            if (_magCount >= 0) then
                            {
                                for "_a" from 0 to _magCount do {
                                    _mag = _magArray select _a;
                                    _unit removeMagazines _mag;
                                };
                                _a = nil;
                                _magCount = nil;
                                _magArray = nil;
                            };
                        };
                    };
                };
    
            };
        };
        _i = nil;
        if (needReload _unit == 1) then {reload _unit};
    };
    
    • Like 1

  5. Have updated the steam version of this mission. I have been super busy with work and overseas travel lately. The uploaded version had a fatal oversight that the large boat at start was to close to the smaller boats resulting in potential death at start. Have fixed this. Additionally have removed an awareness part of the script for friendly units which ws incompatible with another part of combat script resulting in units not moving as much as they should. Additionally have lowered enemy skill maximum random variable settings to decrease difficulty somewhat and have also added an FIA squad that will join the player's squad should his unit count to to low (IF they're still alive as they will aid you at the beach early on and then wait there to reinforce you if needed). This hopefully makes the mission a bit more enjoyable and easier to cope with. It certainly doesn't stop you from having to watch your back.

     

    This mission had been a great help in testing some scripts I have been working on. It has also enabled me to identify major weaknesses and inefficiencies which I am attempting to address in a new more efficient script for future missions.

     

    http://steamcommunity.com/sharedfiles/filedetails/?id=532117787

    • Like 1

  6. Hi Kendar,

    as I mentioned above - the release is not so far as I expected..., please have still a little patience.  :)

     

     

     

    Hi mate,

    thanks for your kind words, may be you can use them for one of your next upcoming missions?  ;)

     

    Greetings

    McLupo

     

    Will definitely give these a try. Probably won't be in the next mission (as it will be a vanilla test mission for further scripts) but after next mission I want to do a lot more work with mods etc :D

    • Like 1

  7. Hi Inlesco!

     

    Thank you very much for the great feedback :D

     

    I loved the intense CQC. I’ve shot AAF when one of them was breaching into a building. That was a moment of awesomeness, considering this is dynamic AI doing stuff.

     

    The garrison script I have caters for explosive specs and mine layers. Explosive specs if in your area will lay down explosives and run away to a nearby building. If they know your near the explosives and there are no friendly's nearby they will detonate. After which they will likely resume building to building movement in your/nearest enemy direction. Mine layers may lay mines on occasion if they spot you and try and run away. This sometimes leads to hilarity. I once had the hostage accidentally walk over one of those mines ^_^

     

     

    There's some good ideas which I might add to the mission:

     

     

    Advise the player to check the inventory of the boat (there’s some useful goodies inside!)

    I might add a radio message or hint for this.

     

     

    unitPlay for boat insertion? The smoothness of the insertion is certainly unpredictable.

     

    The units currentcommand will switch to GET OUT. Sadly for some reason units sometimes get stuck in this mode when exiting boats (especially the zodiacs). I believe its to do with the fact that units attempt to run off to the deep end where they get stuck. Unitplay might help but the units may still be in GET OUT mode which means they may attempt to run to the side of the boat to fullfill their GETOUT condition (I assume) and get stuck. They usually snap out of it after a while. Currently my script switches leaders when units get stuck in GET OUT and will setpos subordinate units on the leaders position should they lag to far behind. After about 3 setpos' subordinates generally resume following leader. I think BI needs to disable the units moving to a set waypoint at the side of boats after disembarking. When units get out of helicopters or tanks they always seem to move away from the vehicle off to the side. Seems hard-coded or something.

     

     

    I’ve seen vehicles teleporting around in the city (offroads, hatchbacks,  etc.). Must be a faulty script.

     

    FIA hatchbacks? My script checks when a vehicle gets stuck. The FIA offroad that drops off hotel bravo may have gotten stuck and the script may have setpos'd it to a new location. After 3 setpos attempts it will or should kill/destroy the vehicle.

     

     

    Add a civilian kill cap for the player?

     

    I contemplated doing it but would likely have to add more eventhandlers to each civ. I can add this to the next update.

     

     

     

    Also, civilians walk in ‘Slow’ mode during the firefights in the city. They should run or stay crouched / prone behind cover. This really ruins immersion.

     

    Yeah I think I will change this to have them run only. Currently each civ has a firednear eventhandler that switches them to run/scream when fired near. I might just make them perma run.

     

     

    enableEnvironment false?  Too many bunnies and butterflies around in the battlefield, snakes too. Annoys a little.

     

    Good idea. I might try that out thanks :D didn't know it disables wildlife.

     

     

    AI gets into the balconies without opening the door.

    Usually they're pretty good and I generally see open doors where the AI ventures but I have seen them occasionally moving through doors instead of opening them. Adding resources to correct this would mean additional nearby door checks which if it happens only occasionally I'd prefer to avoid but I'll keep it in mind and see if there's an effective way of dealing with it.
     

     

    The second squad got lost or something. I had no idea of their location, nor they did report anything. No tension created on that one.

     

    You mean Hotel Bravo? They're an FIA squad (ie: they are friendly but not part of your group.) They will randomly patrol around the objective area looking for enemies and checking areas of last known enemy contacts. I might explore some more tension creating avenues for this and I might change the orders they're given as well.

     

     

     

    Also, if possible, some small AI extraction script to order them to take cover or simply halt would be great. Or, better yet, make the player and captured AI a separate team that must link up with the remaining survivors.

     

    Do you mean for your team to wait for you while you extract the hostage instead of heading back to the vehicle without waiting? I might look into that and see if I can sort something out. It will take me a little while to get on these things as I work on another mission and come back to this one every so often to update scripts and do repairs etc especially when I have new scripts that can replace older ones :)

    • Like 1

  8. Hmmm that is strange. I have failed the mission a couple of times but I am getting a lot more successful completions on play-through then before. I have noticed that if the enemy spots you early they will start making their way down to towards you which can be problematic at the beach but most of the time in playthroughs my men have managed to get off the beach and into town. I have never had any problems with the savegame error that you mentioned and I save a lot :0

     

    Can you try the following?:

     

    -Disable any mods (Especially AI mods).

    -Delete the mission and download it again (In case of corrupt mission file)

     

    I will delete my mission and download it from steam just to see if something is wrong with the upload.

     

    if the mission is a failure then it will be one of the following reasons being triggered:

     

    1) Vip is dead/kiled.

    2) All your men have been killed. (At least one of your men must stay alive)

    3) You have left the mission area (ie: 400 meters outside the city. You will get a warning over the radio and have 10 secs to get back).

     

    Next time you get the error check the debriefing to see which one of these it is that way I can isolate what is being triggered.

     

     

    Also for the grenade launcher you can choose a rifle with gren launcher on the briefing screen :)

    I recommend TRG http://armedassault.wikia.com/wiki/TRG_21

     

    Its really good with a scope and has limited recoil. Grab the eglm version on briefing screen.

     

    I will probably lower the number of enemies in the city or at least give players a dialogue screen to choose hard/normal/easy modes.

     

     

    EDIT:

    Have done some test in various difficulty modes. It seems that in elite mode where AI difficulty is set to expert I have noticed the AI taking more time to get to its destination. Have therefore updated the mission and disabled attack in the player group's waypoint. This seems to get the AI to at least look for cover rather than to try and head on any enemies. The group will still move slowly in expert modes but for they did seem to advance for me. I must admit I did not do enough testing in the higher difficulty levels previously. However some of the errors your reporting are errors I have never come across. PM me if the problems persist. Also note: At the beginning of the mission units will automatically get spread out across the city. It can be bad luck of the draw if you get multiple enemies moving to the beach at the start. This is bad mission design on my part as a landing area should be safe to avoid frustration. I hope you will excuse my tardiness on that point as this has been mostly a test mission to work on my scripts. Hopefully in future missions I can take what I've learned here and apply them in my mission design concepts. 

    • Like 1

  9. Thanks McLupo :D

     

    Also did another update. I forgot I had updated a scipt that checks whether the player is the last surviving member of group. Unfortunately that script update was badly done and so when your team members died it could result in the end mission sequence being spammed. Have fixed that now.

     

     

    Please let me know if you come across any errors and if you can please post the errors from the rtp file. Thank you!.

    • Like 1

  10. Awesome thanks guys :)

     

     

    There will be a small update tonight probably just to fix an inconsequential error that may pop up if you use showerrors. Its related to when the FIA vehicle drops off its cargo group at its destination. Usually the car drops off its cargo when fired upon or just gets shot up but should it reach its destination without hindrance you may see the error. It shouldn't affect the mission as its at the end of the script. Didn't seem to affect my last test. Basically its because I used an unspecified variable for unlocking the vehicle in the script. Ie: _vehicle is not defined. This is ok since AI will exit anyway.

     

    I am also trying to find a way to hide the player marker on briefing screen as the player gets setpossed into the boats. Haven't found a way to do this just yet. This is the thread for the issue should anyone have an idea on how to do that:

     

    https://forums.bistudio.com/topic/185328-hide-player-marker-on-briefing/

     

    EDIT: Just using a work around for now by having the player setpos'd into boat index position in init. Seems to solve that problem.

     

     

    EDIT #2:

    Have now uploaded/updated the steam mission with a fix for the vehicle lock error and player marker on briefing start. (player should no longer show up south of Kavala).

    • Like 1

  11. Well I tried playing around with it with mixed results. In the editor it worked and removed only the unit markers and left my user defined map markers alone. Exporting the mission however;

     

    Player marker remained on briefing but once in the mission all my markers where gone and infantry/player markers remained. So basically the opposite. Was really weird.

     

    I used this:

     

    {if (_x find "_USER_DEFINED #" < 0) then {_x setMarkerAlpha 1};} forEach allMapMarkers;

     

     

    With the change marker size suggestion I am not sure if default marker sizes are all the same.


  12. Have been extremely busy with work but am still coding around on other missions with my command scripts. Have updated Harpoon Delta with the latest version of core scripts and changed some things with garrison awareness scripts.

     

    DOWNLOAD LINKS:

    Version 8 (Steam): http://steamcommunity.com/sharedfiles/filedetails/?id=532117787

    (Deleted old steam upload due to errors on attempting to update and general loss of patience) :angry:

    Changelog:

     

    Version 8:

     

    • Have lowered difficulty substantially by making changes to enemy awareness in garrison script and have also increased friendly team awareness and aggressiveness to improve friendly team survivability. Previous script had problems in that it resulted in enemies maintaining lock-on on enemy targets even if target moved away behind cover. Enemies should now be easier to get a jump on but keep in mind that the more enemies know about your position the more likely it will be difficult to maintain the element of surprise. (Tests done only in vanilla Arma3).

     

    • Lots of small unseen script updates to core scripts.
    • Like 2
×