Jump to content
Sign in to follow this  
highhead

Multi-Session Operations v4.5 released

Recommended Posts

well my report:

If the CQB was suppose to be fixed in 4.55 sadly its not, with CQB on the Independent faction still attack and kill them self's, for some reason when I ask for a Patrol Operation I get nothing, no response what so ever...

Share this post


Link to post
Share on other sites

These changes sound good Highhead. Particularly the East/West spawning tidy up - I enjoy playing Russia v Insurgents and this will make it much more straightforward.

I am thinking of changing the CQBclientloop to run server side and check for Blufor units rather than local player - I am the only player on the server so it is a better use of the available resources for me. I want CQB to be triggered by friendly AI units as well as the player unit.

What do you think of:

                   if ((({(local _x) && ((faction _x) in MSO_FACTIONS)} count allunits) < CQBaicap) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1000]) >1) then {

                       if (((_activenow <= 8) && _regular) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1000]) >1) then {
                       	if ((isnil "_suspend") && (isnil "_clear")) then {
                               _activenow = _activenow + 1;
                   			[(_pos),(_x select 0),900] call MSO_fnc_CQBspawnRandomgroup;
                   		};
                       };                        

                       if (((_activenow <= 8) && _strategic) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1500]) >1) then {
                       	if ((isnil "_suspend") && (isnil "_clear")) then {
                               _activenow = _activenow + 1;
                   			[(_pos),(_x select 0),1400] call MSO_fnc_CQBspawnRandomgroup;
                   		};
                       };

                   };
			} foreach CQBpositionsLocal;

Does that look to you like it will work? Basically changed to check for West units within 1000 of reg positions and 1500 of strat positions. Untested at the moment.

Edited by jiltedjock

Share this post


Link to post
Share on other sites

Sakowski,

Tested RU vs. GUE on chernarus. No issues. If you play vs. iNS & GUE it wont work since INS is side east too. PO2 module with east is not tested, could be that it doesnt work in its current implementation.

Jilted, will take a look tomorrow. I also think it could be interestimg esp. or HC use!

Enjoy!

Share this post


Link to post
Share on other sites
Sakowski,

Tested RU vs. GUE on chernarus. No issues. If you play vs. iNS & GUE it wont work since INS is side east too. PO2 module with east is not tested, could be that it doesnt work in its current implementation.

Jilted, will take a look tomorrow. I also think it could be interestimg esp. or HC use!

Enjoy!

Independent are not on the East side, they are set to be friendly only with BLUFOR.

I tested it out on Lingor, my edited KPA vs GUE ((they are independent)) they kill each other when they see each other either way CQB is not so needed so its good it works without it.

Share this post


Link to post
Share on other sites
Ambient Planes need to have a active airport nearby. If you teleport near an airport and a nearby town goes active (indicates it best) you will have airplanes too (try at rasman airfield, takistan f.e.).

Just had loads of landing / starting SU and an epic failed CASEVAC thx to them while playing in this area.

Highhead, as you said Rasman works great with Ambient Aircraft but Lingor did not spawn any, just Helo's in v4.55. Maybe others have found different with Lingor? Must have to do with the map?

Share this post


Link to post
Share on other sites
Highhead, as you said Rasman works great with Ambient Aircraft but Lingor did not spawn any, just Helo's in v4.55. Maybe others have found different with Lingor? Must have to do with the map?

Confirm on that, once in older version I remember planes flying over.

Share this post


Link to post
Share on other sites
Confirm on that, once in older version I remember planes flying over.

Yes I remember that too! So I am not going nuts! :), I think the Airport Locations must have been defined in an earlier version?

Share this post


Link to post
Share on other sites

Is anyone still maintaining an I44 version of this? I've been looking everywhere. :eek:

Share this post


Link to post
Share on other sites

Sakowski, i sent you a PM with a quick ripoff example of RU (EAST) vs. GUE (INDEPENDENT) on chernarus.

CQB is enabled and also PO2 is working (tested with "MSO Autotasking").

Veng, i recall that we had issues with ambient planes on Lingor once (big piles of planes on northern airport, cuz they got stuck somewhere).

So could easily be we disabled something that i am not aware of at the moment, will doublecheck.

Bhaz, unfortunatly not at the moment for i44.

But I worked hard on a Vietnam The Exp. (VTE) version of MSO, took me over a week to get working with all the custom factions/custom groups etc. If anyone likes to have it, PM me.

Enjoy mates!

Share this post


Link to post
Share on other sites

I will check it out and see, anyways beside editing in editor what else needs to be edited to make it work perfectly?

EDIT: Seems like the missions in here work however still getting "Check your fire" randomly when not even firing upon anyone.

As well where can I find codes for the vehicles so they respawn, ammo resupply etc what I mean is the code that goes to init section.

EDIT 2: Uhh any way to make sure AI does not spawn next to the opfor spawn? every time I want to test out the base I get enemies or tanks spawned next to my face or close and get killed...

Edited by Sakowski

Share this post


Link to post
Share on other sites

Markers named respawn_east, ammo and ammo_1 (to be sure) - should do it :-)

Share this post


Link to post
Share on other sites

Well yes respawn works but I've placed custom ammo boxes so I deleted them two, or should I put "ammo" and "ammo_1" into init of the ammo box?

Share this post


Link to post
Share on other sites

Need to be markers with this name, can be empty so they are not shown

Share this post


Link to post
Share on other sites

Well if they need to be markers, how will I be able to for example put ACE CDF Weapon Box, Launcher box, medical box if the marker ammo is ACE Radio box?

Edited by Sakowski

Share this post


Link to post
Share on other sites
Well if they need to be markers, how will I be able to for example put ACE CDF Weapon Box, Launcher box, medical box if the marker ammo is ACE Radio box?

https://dev-heaven.net/projects/mso/documents

sorry, my previous post was a bit unhelpful.

[this, 60] execVM "support\scripts\resupply.sqf"; <---put in crate, etc. init

[this, 43200, 9999999] execVM "support\scripts\vehicle.sqf"; <---put in vehicle init 43200(respawn time), 99999999 (time to respawn after people get out)

Edited by FelixK44

Share this post


Link to post
Share on other sites

Simply place the boxes regulary in editor and place additional empty markers with that name

The location discovery checks for those markers and wont spawn inside the selected safezone-radius

Share this post


Link to post
Share on other sites
I will check it out and see, anyways beside editing in editor what else needs to be edited to make it work perfectly?

EDIT: Seems like the missions in here work however still getting "Check your fire" randomly when not even firing upon anyone.

As well where can I find codes for the vehicles so they respawn, ammo resupply etc what I mean is the code that goes to init section.

EDIT 2: Uhh any way to make sure AI does not spawn next to the opfor spawn? every time I want to test out the base I get enemies or tanks spawned next to my face or close and get killed...

Start with a blank map then merge in one of the de-pbo'd MSO missions, that will give you the correct markers etc

---------- Post added at 07:14 PM ---------- Previous post was at 07:10 PM ----------

These changes sound good Highhead. Particularly the East/West spawning tidy up - I enjoy playing Russia v Insurgents and this will make it much more straightforward.

I am thinking of changing the CQBclientloop to run server side and check for Blufor units rather than local player - I am the only player on the server so it is a better use of the available resources for me. I want CQB to be triggered by friendly AI units as well as the player unit.

What do you think of:

                   if ((({(local _x) && ((faction _x) in MSO_FACTIONS)} count allunits) < CQBaicap) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1000]) >1) then {

                       if (((_activenow <= 8) && _regular) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1000]) >1) then {
                       	if ((isnil "_suspend") && (isnil "_clear")) then {
                               _activenow = _activenow + 1;
                   			[(_pos),(_x select 0),900] call MSO_fnc_CQBspawnRandomgroup;
                   		};
                       };                        

                       if (((_activenow <= 8) && _strategic) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1500]) >1) then {
                       	if ((isnil "_suspend") && (isnil "_clear")) then {
                               _activenow = _activenow + 1;
                   			[(_pos),(_x select 0),1400] call MSO_fnc_CQBspawnRandomgroup;
                   		};
                       };

                   };
			} foreach CQBpositionsLocal;

Does that look to you like it will work? Basically changed to check for West units within 1000 of reg positions and 1500 of strat positions. Untested at the moment.

ok I can confirm that this works nicely, I will post up the sqf later for anyone interested. Basically what it does is change the triggers for CQB from player presence within x distance to West presence within x distance. So eg if you play with friendly AI and High Command extensions you can send AI groups into towns to clear them. There is also a small change you can make so that the CQB AI is spawned on the server and not on the clients, you may like to do this if like me you play on your own on a dedi server. When I get time later I will post details.

Share this post


Link to post
Share on other sites
https://dev-heaven.net/projects/mso/documents

sorry, my previous post was a bit unhelpful.

[this, 60] execVM "support\scripts\resupply.sqf"; <---put in crate, etc. init

[this, 43200, 9999999] execVM "support\scripts\vehicle.sqf"; <---put in vehicle init 43200(respawn time), 99999999 (time to respawn after people get out)

Thank you thats what I needed.

Oh yea and whats up with the HUMIT reports? I remember in older version they used to appear now nothing happens O.o

Edited by Sakowski

Share this post


Link to post
Share on other sites

Ok, so the modified MSO_fnc_CQBclientloop.sqf as per my earlier posts is:

private ["_debug","_idx","_loopcounter","_localEnemyCount","_pU"];

_debug = _this select 0;

if (persistentDBHeader == 1) then {

waitUntil{!isNil "MISSIONDATA_LOADED"};

if (pdb_locations_enabled) then {

waituntil {!(isnil "PDB_CQB_positionsloaded")};

sleep 5;

};

};

waituntil {!(isnil "CQBpositionsReg") && !(isnil "CQBpositionsStrat")};

CQBpositionsRegLocal = CQBpositionsReg;

CQBpositionsStratLocal = CQBpositionsStrat;

CQBpositionsLocal = CQBpositionsRegLocal + CQBpositionsStratLocal;

{(_x select 0) setVariable ["reg", true, false]} foreach CQBpositionsRegLocal;

{(_x select 0) setVariable ["strat", true, false]} foreach CQBpositionsStratLocal;

CQBgroupsLocal = [];

if (_debug) then {

diag_log format["MSO-%1 CQB Population: Total positions found %2", time, count CQBpositionsLocal];

_i = 0;

for "_i" from 0 to ((count CQBpositionsRegLocal) - 1) do {

_t = format["rp%1",_i];

_m = [_t, position ((CQBpositionsRegLocal select _i) select 0), "Icon", [1,1], "TYPE:", "Dot", "COLOR:", "ColorYellow"] call CBA_fnc_createMarker;

};

_i = 0;

for "_i" from 0 to ((count CQBpositionsStratLocal) - 1) do {

_t = format["sp%1",_i];

_m = [_t, position ((CQBpositionsStratLocal select _i) select 0), "Icon", [1,1], "TYPE:", "Dot", "COLOR:", "ColorGreen"] call CBA_fnc_createMarker;

};

};

waituntil {

sleep 2;

_activecount = 0;

_suspendedcount = 0;

_clearcount = 0;

{

_strategic = (_x select 0) getVariable "strat";

_regular = (_x select 0) getVariable "reg";

_clear = (_x select 0) getVariable "c";

_suspend = (_x select 0) getVariable "s";

_pos = position (_x select 0);

_activenow = 0;

if (CQB_AUTO) then {

_pU = {_pos distance _x < 20000} count ([] call BIS_fnc_listPlayers);

if (_pU < 1) then {_pU = 1};

_CQBlocCnt = 0;

_CQBglobCnt = 0;

{

_CQBgr = nil; _CQBgr = (leader _x) getvariable "PM";

if !(isnil "_cqbgr") then {

_CQBglobCnt = _CQBglobCnt + 1;

if (local leader _x) then {_CQBlocCnt = _CQBlocCnt + 1};

};

} foreach allgroups;

_CQBavgGr = _CQBglobCnt / _pU;

if ((_CQBlocCnt <= _CQBavgGr) && (_CQBglobCnt <= CQBmaxgrps)) then {

CQBaicap = (count allunits / _pU);

} else {

CQBaicap = 0;

};

};

if ((isnil "_suspend") && (isnil "_clear")) then {_activecount = _activecount + 1};

if (!(isnil "_suspend")) then {_suspendedcount = _suspendedcount + 1};

if (!(isnil "_clear")) then {_clearcount = _clearcount + 1};

if ((({(local _x) && ((faction _x) in MSO_FACTIONS)} count allunits) < CQBaicap) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1500]) >0) then {

if (((_activenow <= 8) && _regular) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1000]) >0) then {

if ((isnil "_suspend") && (isnil "_clear")) then {

_activenow = _activenow + 1;

[(_pos),(_x select 0),1100] call MSO_fnc_CQBspawnRandomgroup;

};

};

if (((_activenow <= 8) && _strategic) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1500]) >0) then {

if ((isnil "_suspend") && (isnil "_clear")) then {

_activenow = _activenow + 1;

[(_pos),(_x select 0),1600] call MSO_fnc_CQBspawnRandomgroup;

};

};

};

} foreach CQBpositionsLocal;

{

if (count (units _x) == 0) then {

if (_debug) then {diag_log format["MSO-%1 CQB Population: Garbage collecter deleting Group %2...", time, _x]};

CQBgroupsLocal = CQBgroupsLocal - [_x];

deletegroup _x;

};

} foreach CQBgroupsLocal;

if (_debug) then {

diag_log format["MSO-%1 CQB Population: %2 total | %3 suspended |%4 cleared positions...", time, _activecount, _suspendedcount, _clearcount];

diag_log format["MSO-%1 CQB Population: Count %2 local AI in %4 CQB-groups (%3 total AI overall)...", time, {local _x} count allUnits, count allUnits, count CQBgroupsLocal];

};

false;

};

If you want it to spawn CQB serverside on dedi server then

in ..\enemy\modules\cqb_pop\main.sqf change last line to

if (isDedicated) then {[_debug] spawn MSO_fnc_CQBclientloop;

Happy to remove these posts if the MSO guys object

Edited by jiltedjock

Share this post


Link to post
Share on other sites
Ok, so the modified MSO_fnc_CQBclientloop.sqf as per my earlier posts is:

private ["_debug","_idx","_loopcounter","_localEnemyCount","_pU"];

_debug = _this select 0;

if (persistentDBHeader == 1) then {

waitUntil{!isNil "MISSIONDATA_LOADED"};

if (pdb_locations_enabled) then {

waituntil {!(isnil "PDB_CQB_positionsloaded")};

sleep 5;

};

};

waituntil {!(isnil "CQBpositionsReg") && !(isnil "CQBpositionsStrat")};

CQBpositionsRegLocal = CQBpositionsReg;

CQBpositionsStratLocal = CQBpositionsStrat;

CQBpositionsLocal = CQBpositionsRegLocal + CQBpositionsStratLocal;

{(_x select 0) setVariable ["reg", true, false]} foreach CQBpositionsRegLocal;

{(_x select 0) setVariable ["strat", true, false]} foreach CQBpositionsStratLocal;

CQBgroupsLocal = [];

if (_debug) then {

diag_log format["MSO-%1 CQB Population: Total positions found %2", time, count CQBpositionsLocal];

_i = 0;

for "_i" from 0 to ((count CQBpositionsRegLocal) - 1) do {

_t = format["rp%1",_i];

_m = [_t, position ((CQBpositionsRegLocal select _i) select 0), "Icon", [1,1], "TYPE:", "Dot", "COLOR:", "ColorYellow"] call CBA_fnc_createMarker;

};

_i = 0;

for "_i" from 0 to ((count CQBpositionsStratLocal) - 1) do {

_t = format["sp%1",_i];

_m = [_t, position ((CQBpositionsStratLocal select _i) select 0), "Icon", [1,1], "TYPE:", "Dot", "COLOR:", "ColorGreen"] call CBA_fnc_createMarker;

};

};

waituntil {

sleep 2;

_activecount = 0;

_suspendedcount = 0;

_clearcount = 0;

{

_strategic = (_x select 0) getVariable "strat";

_regular = (_x select 0) getVariable "reg";

_clear = (_x select 0) getVariable "c";

_suspend = (_x select 0) getVariable "s";

_pos = position (_x select 0);

_activenow = 0;

if (CQB_AUTO) then {

_pU = {_pos distance _x < 20000} count ([] call BIS_fnc_listPlayers);

if (_pU < 1) then {_pU = 1};

_CQBlocCnt = 0;

_CQBglobCnt = 0;

{

_CQBgr = nil; _CQBgr = (leader _x) getvariable "PM";

if !(isnil "_cqbgr") then {

_CQBglobCnt = _CQBglobCnt + 1;

if (local leader _x) then {_CQBlocCnt = _CQBlocCnt + 1};

};

} foreach allgroups;

_CQBavgGr = _CQBglobCnt / _pU;

if ((_CQBlocCnt <= _CQBavgGr) && (_CQBglobCnt <= CQBmaxgrps)) then {

CQBaicap = (count allunits / _pU);

} else {

CQBaicap = 0;

};

};

if ((isnil "_suspend") && (isnil "_clear")) then {_activecount = _activecount + 1};

if (!(isnil "_suspend")) then {_suspendedcount = _suspendedcount + 1};

if (!(isnil "_clear")) then {_clearcount = _clearcount + 1};

if ((({(local _x) && ((faction _x) in MSO_FACTIONS)} count allunits) < CQBaicap) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1500]) >0) then {

if (((_activenow <= 8) && _regular) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1000]) >0) then {

if ((isnil "_suspend") && (isnil "_clear")) then {

_activenow = _activenow + 1;

[(_pos),(_x select 0),1100] call MSO_fnc_CQBspawnRandomgroup;

};

};

if (((_activenow <= 8) && _strategic) && ({side _x == WEST} count nearestobjects [(_x select 0),["Man","Car","Tank"],1500]) >0) then {

if ((isnil "_suspend") && (isnil "_clear")) then {

_activenow = _activenow + 1;

[(_pos),(_x select 0),1600] call MSO_fnc_CQBspawnRandomgroup;

};

};

};

} foreach CQBpositionsLocal;

{

if (count (units _x) == 0) then {

if (_debug) then {diag_log format["MSO-%1 CQB Population: Garbage collecter deleting Group %2...", time, _x]};

CQBgroupsLocal = CQBgroupsLocal - [_x];

deletegroup _x;

};

} foreach CQBgroupsLocal;

if (_debug) then {

diag_log format["MSO-%1 CQB Population: %2 total | %3 suspended |%4 cleared positions...", time, _activecount, _suspendedcount, _clearcount];

diag_log format["MSO-%1 CQB Population: Count %2 local AI in %4 CQB-groups (%3 total AI overall)...", time, {local _x} count allUnits, count allUnits, count CQBgroupsLocal];

};

false;

};

If you want it to spawn CQB serverside on dedi server then

in ..\enemy\modules\cqb_pop\main.sqf change last line to

if (isDedicated) then {[_debug] spawn MSO_fnc_CQBclientloop;

Happy to remove these posts if the MSO guys object

So does this mean that the original CQB module thing in MSO doesn't work on a dedicated server? :confused:

Share this post


Link to post
Share on other sites
So does this mean that the original CQB module thing in MSO doesn't work on a dedicated server? :confused:

The original CQB module is designed to spawn CQB AI on clients, this reducing the load on the server. This could be important in multiplayer if there are a number of players. Think of it as distributed computing. It works very well, however I play MSO as a single player on a dedicated server, so I would prefer all the AI to be on the server, and I would like CQB AI to be triggered by Blufor AI and player units. The modified script will spawn CQB AI based on the proximity of West units - AI or player - rather than on the proximity of player units only. So you could, for example, send AI groups off to clear towns whilst you buzz around in a Blackhawk.

Share this post


Link to post
Share on other sites
The original CQB module is designed to spawn CQB AI on clients, this reducing the load on the server. This could be important in multiplayer if there are a number of players. Think of it as distributed computing. It works very well, however I play MSO as a single player on a dedicated server, so I would prefer all the AI to be on the server, and I would like CQB AI to be triggered by Blufor AI and player units. The modified script will spawn CQB AI based on the proximity of West units - AI or player - rather than on the proximity of player units only. So you could, for example, send AI groups off to clear towns whilst you buzz around in a Blackhawk.

Jilted, i have made something for you (and others)! I have a version (unofficial) with a multi-locality feature enabled! So you can choose on which locality you wanna run your enpop-modules (CQB, DEP): Client/Server/Headless-Client -exactly what you want!

PM me and i send it to you! There has much more to be done to get it working this way, so its not as easy as changing one line.

I really suggest you 2 guys (Sakowski, Jilted) join our MSO skype channel! We can give much better support in there!

enjoy

Share this post


Link to post
Share on other sites

Felix, CQB is designed to run clientside on the players machine, to save up serverside-performance and give better AI behaviour (esp. better AI reactions are needed in CQB).

Share this post


Link to post
Share on other sites

How can I disable the ace_fnc_radio requirement when using ace and just let players only need ItemRadio?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×