Jump to content

Recommended Posts

26 minutes ago, Janez said:

 

Isn't that controlled by server settings?

It is.

Share this post


Link to post
Share on other sites
3 hours ago, Jezuro said:

Have you actually experienced AI spawning near you? I'm surprised beacause the town garrison spawns during objective init after location selection and then only reinforcements are being spawned, all of them very far from the AO.

Jezuro to be fair I have not actually seen visually an ai magically appear behind me. I should have been more accurate and said I got the feeling like they are just appearing from everywhere. Perhaps they are spawning off distance like you said but then approach in one  cluster.  

 

Now this could be just the parameters that were set. Or chaotic nature playing with random people online. alot new to arma so between trying to show them how to do stuff and then people shouting they're shot enemy everywhere. and then enemy got on top of us constantly .

 

That's why I told froggy to try himself.

 

Like  I said it's ok to hop into quick action. I personally don't feel like it's a tactics type mission. it does feel more like a turkey shoot. Which alot of people like.

 

Some constructive criticism. would be make the exfil slightly bigger.or give  an option in parameters to have a countdown timer when at the exfil. Could be a laptop that appears in exfil and you activate it from this. Why? 

 

Alot of issues people just running off to shoot more ai after objective complete.  They don't respond to coms.  Then you have a handful of people sitting at exfil complaining some disconnected, but others more annoyingly because they'd been waiting a bit started shooting at people who were genuinely confused and just on their way to exfil. 

 

The hvt mission suggestion - I have no doubt with an organised team on a private server or a couple of experience players in a random session could easily do this. But 3 times I played this. 3 different settings 3 different sets of random people.  Never even seen the hvt. Most times somebody running ahead seen an enemy  from distance and shot him alerting ai. Hvt runs mission failed. 

 

Maybe have hvt in one location. If alerted.  Hvt is then escorted from his location to another with an awaiting vehicle but heavier defended and more difficult than your first opportunity to kill him. 

 

This would give you 3 chances to kill him. 1st and best at the planned opportunistic moment.  

 

2nd when he on the move but enemy on alert now and moving to you.  

 

Then 3rd harder in a base hvt awaiting extraction via vehicle. But well defended. 

 

You could even have exfil option after first failed attempt. So it is still in line with original. 

 

 

Share this post


Link to post
Share on other sites
3 hours ago, Janez said:

 

Isn't that controlled by server settings?

 

the server settings are very blunt tool, i find anything above recruit has too high accuracy :) users who want normal other difficulties must resign themselves to AI who hit their 1st and 2nd shots from significant distance quite often. ..

 

maybe in the mission you could check the current difficulty and put some custom skill variable in there, mainly for 'aimingaccuracy'

 

https://community.bistudio.com/wiki/missionDifficulty

https://community.bistudio.com/wiki/difficultyOption

 

im thinking about the official servers here, not variants or user modifications to Combat Patrol

Share this post


Link to post
Share on other sites

I'll try and not let my ignorance of SQF,SQM,INIT and all that other stuff sway my thoughts here =)

 

I know some of these things I am about to cry about have been discussed in prev pages here. One of My problems is I don't even know where I'd go with my trusty notepad++ to begin screwing up the parameters. And yes I am sure I could go find all that out to in somewhat short order, but that isn't my point

 

With that being said I think it would be better -subjective- if the Hosting player and/or the mission maker had a bit more granularity with a few options.

I want to insert/start the mission at a time I pick.  Crazy I know but this game has a 24hr clock and a play the way you want approach written all over it - yet a module would hard code you at 9am no matter what you pick... grinds me =)

I am fine shooting at CSAT, I can mix it up considerably by adding Ravage ambient ai module and/or zombies if I feel the urge BUT it would be slick to be able to select the OPFOR faction via the module

The insertion teleporting is not fun at all haha I'll leave it at that.

 

The missions are pretty fun, I love the amount of OPFOR I get to shoot at and over all a good time, they kick my ass up and down the map so far haha.  You guys should be able to provide us with some basic variables from within the modules. I'll cross my fingers =)

  • Like 1

Share this post


Link to post
Share on other sites
On 2017-06-25 at 1:35 PM, haleks said:

Looks like there's no setting to prevent the insertion/teleportation at the AO? Anyone to confirm this?

 

Anyway if this is the case here's a quick script to cancel it (players have to start on foot) :


0 = (getPosATL player) spawn { 
 waitUntil {!isNil {BIS_finalInsertionPosArr}}; 
 BIS_finalInsertionPosArr = _this; sleep 5; player setPosATL _this;
};

Now you can do your custom insertions. ;)

How would I go about to get this working on a dedicated server? When I try this on local host it works, we spawn in at AO for a second and then we pop up at base at my respawn_west marker. But on dedicated nothing of that happens, we just spawn in at AO like normal. Using this:

0 = (getMarkerPos "respawn_west") spawn {waitUntil {!isNil {BIS_finalInsertionPosArr}}; BIS_finalInsertionPosArr = _this; sleep 10; player setPos (getMarkerPos "respawn_west");
};

Share this post


Link to post
Share on other sites

Some improvements for Combat Patrol in Takistan.

 

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

 

2 groups of 8 players,
reinforcements added (friends, enemies)

many parameters like time multiplier, arsenal crates, start at base, helos and vehicles, respawn for AIs, respawn on fellows positions

HALO jump solo or in AI group,

civilian life + kamikaze (optional in parameters)

fatigue and stamina and other parameters...

 

Not solved:

- bug sometime on already completed task for destroy comms mission...

- restart to launch another mission instead of sweeping adjacent areas.

  • Like 1

Share this post


Link to post
Share on other sites
16 hours ago, Predatorium said:

How would I go about to get this working on a dedicated server? When I try this on local host it works, we spawn in at AO for a second and then we pop up at base at my respawn_west marker. But on dedicated nothing of that happens, we just spawn in at AO like normal. Using this:

0 = (getMarkerPos "respawn_west") spawn {waitUntil {!isNil {BIS_finalInsertionPosArr}}; BIS_finalInsertionPosArr = _this; sleep 10; player setPos (getMarkerPos "respawn_west");
};

 

There is imho a better way to do this by editing the BIS_CP_init function.


 

//New Parameter

_defaults = [
    "BIS_CP_startingDaytime",     1,
    "BIS_CP_weather",             1,
    "BIS_CP_garrison",             0,
    "BIS_CP_reinforcements",     0,
    "BIS_CP_showInsertion",     0,
    "BIS_CP_tickets",             20,
    "BIS_CP_enemyFaction",         0,
    "BIS_CP_locationSelection", 0,
    "BIS_CP_objective",         -1,
    "Revo_CP_camouflage",        0,
    "BIS_CP_votingTimer",        0,
    "Revo_CP_manualInsertion",    0
];

Params (description.ext)

    class Revo_CP_manualInsertion
    {
        title = "Manual Insertion";
        values[] = {0,1};
        texts[] = {"No","Yes"};
        default = 0;
    };

//cp init

    if ([true,false] select Revo_CP_manualInsertion) then//Teleport players depending on the mission parameter
    {
        BIS_finalInsertionPosArr = [];
        BIS_copyGrp setFormDir (BIS_CP_insertionPos getDir BIS_CP_targetLocationPos);
        {
            _pos = if (leader _x == _x) then {BIS_CP_insertionPos} else {formationPosition _x};
            _pos set [2, 0];
            _x setPos (_pos vectorAdd [0,0,100]);
            _zDiff = ((getPosATL _x) select 2) - ((position _x) select 2);
            _pos set [2, abs _zDiff];
            BIS_finalInsertionPosArr pushBack _pos;
        } forEach units BIS_copyGrp;
        {
            deleteVehicle _x;
        } forEach units BIS_copyGrp;
        deleteGroup BIS_copyGrp;

        // --- move the squad to the insertion

        {
            _x allowDamage FALSE;
            _pos = BIS_finalInsertionPosArr select _forEachIndex;
            _null = [_x, _pos] spawn {
                _unit = _this select 0;
                _pos = _this select 1;
                _unit setPosATL _pos;
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                _unit allowDamage TRUE;
            };
        } forEach units BIS_CP_grpMain;
    };

 

Share this post


Link to post
Share on other sites

Ahh which reminds me ..

 

On a Malden CP mission (offiicial servers), a few of us spawned underneath rocks at mission start and had to suicide to get out.

 

this can be solved rather quickly, check the examples here: 

 

https://community.bistudio.com/wiki/Position#PositionAGLS

 

specifically some use of "setVehiclePosition"

Share this post


Link to post
Share on other sites
4 hours ago, R3vo said:

 

There is imho a better way to do this by editing the BIS_CP_init function.


 


//New Parameter

_defaults = [
    "BIS_CP_startingDaytime",     1,
    "BIS_CP_weather",             1,
    "BIS_CP_garrison",             0,
    "BIS_CP_reinforcements",     0,
    "BIS_CP_showInsertion",     0,
    "BIS_CP_tickets",             20,
    "BIS_CP_enemyFaction",         0,
    "BIS_CP_locationSelection", 0,
    "BIS_CP_objective",         -1,
    "Revo_CP_camouflage",        0,
    "BIS_CP_votingTimer",        0,
    "Revo_CP_manualInsertion",    0
];

Params (description.ext)

    class Revo_CP_manualInsertion
    {
        title = "Manual Insertion";
        values[] = {0,1};
        texts[] = {"No","Yes"};
        default = 0;
    };

//cp init

    if ([true,false] select Revo_CP_manualInsertion) then//Teleport players depending on the mission parameter
    {
        BIS_finalInsertionPosArr = [];
        BIS_copyGrp setFormDir (BIS_CP_insertionPos getDir BIS_CP_targetLocationPos);
        {
            _pos = if (leader _x == _x) then {BIS_CP_insertionPos} else {formationPosition _x};
            _pos set [2, 0];
            _x setPos (_pos vectorAdd [0,0,100]);
            _zDiff = ((getPosATL _x) select 2) - ((position _x) select 2);
            _pos set [2, abs _zDiff];
            BIS_finalInsertionPosArr pushBack _pos;
        } forEach units BIS_copyGrp;
        {
            deleteVehicle _x;
        } forEach units BIS_copyGrp;
        deleteGroup BIS_copyGrp;

        // --- move the squad to the insertion

        {
            _x allowDamage FALSE;
            _pos = BIS_finalInsertionPosArr select _forEachIndex;
            _null = [_x, _pos] spawn {
                _unit = _this select 0;
                _pos = _this select 1;
                _unit setPosATL _pos;
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                sleep 0.5;
                if (_unit distance _pos > 10) then {
                    _unit setPosATL _pos;
                };
                _unit allowDamage TRUE;
            };
        } forEach units BIS_CP_grpMain;
    };

 

 

 

For my mission, I replaced the init module by a simple init.sqf. Then, I copy/paste the CP_init.sqf and modified it drastically. No need for addon or some attempt for overriding this module.

Forget the module, run your code. And yes, do what you want in the description.ext for params. Then, you still have to change some results for missions, like type of trucks or HVT, but it's easy.

 

 

Share this post


Link to post
Share on other sites
1 hour ago, pierremgi said:

 

 

For my mission, I replaced the init module by a simple init.sqf. Then, I copy/paste the CP_init.sqf and modified it drastically. No need for addon or some attempt for overriding this module.

Forget the module, run your code. And yes, do what you want in the description.ext for params. Then, you still have to change some results for missions, like type of trucks or HVT, but it's easy.

 

 

Thanks but I was really looking to start simple since I don't really know much of anything about this but am very curious how to make halek's script work on a dedicated. The player variable returns null on dedicated, that's why it doesn't work right? what does one use instead of player? sorry I just like combat patrol but just want that spawn to be in base and I'm in no way able to figure this out myself.

Share this post


Link to post
Share on other sites

The code you mentioned can't work fine, anyway! BIS_finalInsertionPosArr is an array of positions, not a single position.

Also, that doesn't make sense to pass global variable (getposatl player) in such context.

Try something (not tested) instead, at the beginning of init.sqf:
 

if (!isdedicated) then {
  [] spawn {
    _pos = getposATL player;
    waitUntil {!isNil "BIS_finalInsertionPosArr"};
    sleep 10;
    player setPosATL _pos;
  };
};

 

 

 

Share this post


Link to post
Share on other sites
30 minutes ago, pierremgi said:

The code you mentioned can't work fine, anyway! BIS_finalInsertionPosArr is an array of positions, not a single position.

Also, that doesn't make sense to pass global variable (getposatl player) in such context.

Try something (not tested) instead, at the beginning of init.sqf:
 


if (!isdedicated) then {
  [] spawn {
    _pos = getposATL player;
    waitUntil {!isNil "BIS_finalInsertionPosArr"};
    sleep 10;
    player setPosATL _pos;
  };
};

Thanks, but I get the same results as before, it works on local, but not dedicated. I used this:

if (!isdedicated) then {
[] spawn {
    _pos = (getMarkerPos "respawn_west");
    waitUntil {!isNil "BIS_finalInsertionPosArr"};
    sleep 5;
    player setPosATL _pos; player setDir 260;
    };
};

Btw doesn't (!isdedicated) mean that it's not dedicated?

 

 

30 minutes ago, pierremgi said:

 

 

 

Share this post


Link to post
Share on other sites

Yes. Difficult to help you further with a piece of code. I corrected the fact you used the array of positions for the whole group and I suggested 10 seconds as sometimes 5 sec is not sufficient.
If you are running this code on server only, that can't work. I can't say more... Re-teleportation worked for me but some other aspects lead me to rewrite the init.sqf and skip the init module.

Share this post


Link to post
Share on other sites

Why would you use the player variable? Isn't the function supposed to run on the server only? At least that's what I do with remoteExcec

Share this post


Link to post
Share on other sites
6 hours ago, R3vo said:

Why would you use the player variable? Isn't the function supposed to run on the server only? At least that's what I do with remoteExcec

Well I don't know what to use instead of player, i know it returns null on server but for the life of me I can't figure out what else to use :( I really have no clue what I'm doing but it worked so fine on local host I just wanted help to get it running on a dedicated :)

Share this post


Link to post
Share on other sites

FN,

What does your code look like you are using?

Share this post


Link to post
Share on other sites

I have just DL'd Arma Tools and Samples. Where do I find the Combat Patrol .pbo to modify myself?

 

THanks

Share this post


Link to post
Share on other sites
30 minutes ago, Jnr4817 said:

FN,

What does your code look like you are using?

 

 

Try this:

 

if (isServer) then {
[] spawn {
        private _pos = getMarkerPos "respawn_west";
        waitUntil {sleep 1; !isNil "BIS_finalInsertionPosArr" && !isNil "BIS_CP_grpMain"};
        sleep 5;
        {
            _x setPosATL (_pos getPos [random [-5,0,5],random 359]);//Set player's position somewhere near the respawn position
            _x setDir 260;
        } forEach BIS_CP_grpMain;//Variable contains all player units from main group
    };
};

 

 

12 minutes ago, Jnr4817 said:

I have just DL'd Arma Tools and Samples. Where do I find the Combat Patrol .pbo to modify myself?

 

THanks

 

F:\Program Files\Steam\steamapps\common\Arma 3 Samples\Scenario_Design\Example_CombatPatrol           //Example mission

 

F:\Program Files\Steam\steamapps\common\Arma 3\Argo\Addons               //Pbo files

 

Depends where you installed it ofcourse.

  • Like 1

Share this post


Link to post
Share on other sites

At start, the units are where you placed them. Then the CP_init moves them when the BIS_finalInsertionPosArr, array of new positions, is defined.
So, two solutions:

- rewrite this script (that means don't use the module or make an addon for a new module) and do what you want. I rewrote and abandoned the second solution:

 

- or, override this teleportation waiting for the effective one then move again the units on the initial positions.

So, the challenge here is to save the initial positions, in init field of the unit for example if (isServer) then {this setVariable ["oldPos",getpos this]}; or soon in the init script (the reason why I wrote at the beginning of init.sqf. As far as only players are concerned, you have to use player but I just omit to mention you must wait the player to be player: waitUntil {!isNull player && isPlayer player}; like in former CP_init script. Then, you have to wait at least 5 seconds, 10 seconds is better to let the telportation work and you move the player again;
For the whole group, it's same but you have to apply on BIS_CP_grpMain , on server only to make things once for all.
Late JIP is managed to be placed on insertion point by the native CP_init. So, this 2nd problem must be also treated... and the "group" can't do anything for that. You need to consider the player's move. The reason why the first solution is finally far better.
 

Share this post


Link to post
Share on other sites
Quote

 

Late JIP is managed to be placed on insertion point by the native CP_init.

 

 

I thought they were only teleported to the group leader's position. Have to read the function again.

Share this post


Link to post
Share on other sites
On 6/26/2017 at 10:25 AM, Shepherd of Fire said:

Well they seem pretty vague to me..? Anyway yeah I'll dl the samples and see whats up. thanks.

Bruh, that's how the entire ArmA community rolls, vague...

  • Like 1

Share this post


Link to post
Share on other sites
On 2017-06-30 at 2:47 PM, R3vo said:

 

 

Try this:

 


if (isServer) then {
[] spawn {
        private _pos = getMarkerPos "respawn_west";
        waitUntil {sleep 1; !isNil "BIS_finalInsertionPosArr" && !isNil "BIS_CP_grpMain"};
        sleep 5;
        {
            _x setPosATL (_pos getPos [random [-5,0,5],random 359]);//Set player's position somewhere near the respawn position
            _x setDir 260;
        } forEach BIS_CP_grpMain;//Variable contains all player units from main group
    };
};

 

 

 

F:\Program Files\Steam\steamapps\common\Arma 3 Samples\Scenario_Design\Example_CombatPatrol           //Example mission

 

F:\Program Files\Steam\steamapps\common\Arma 3\Argo\Addons               //Pbo files

 

Depends where you installed it ofcourse.

Thanks for all your help guys. I solved it by placing the following code in the units' init fields, giving them different variable names like P1, P2 etc:

[] spawn {
    _pos = (getMarkerPos "respawn_west");
    waitUntil {!isNil "BIS_finalInsertionPosArr"};
    sleep 5;
    P1 setPosATL _pos; P1 setDir 260;
 };

 

Works fine on dedi.

 

Share this post


Link to post
Share on other sites

This didn't work for me, it wasn't accepted at all in the init field of a unit.

18 hours ago, Predatorium said:

[] spawn {
    _pos = (getMarkerPos "respawn_west");
    waitUntil {!isNil "BIS_finalInsertionPosArr"};
    sleep 5;
    P1 setPosATL _pos; P1 setDir 260;
 };

 

The following DID work in the init field of a unit in the editor and on a dedicated server.

NOTE: There was a little delay where you actually see the player spawn near the AO but then teleported to the desired "base" location. Maybe if there was like a fade in from black to hide that would be ideal. I didn't want to lower the "sleep 5;" line as to not mess with what was working.

 0 = (getPosATL P1) spawn {  
 waitUntil {!isNil {BIS_finalInsertionPosArr}};  
 BIS_finalInsertionPosArr = _this; sleep 5; P1 setPosATL _this; 
};

In Other News / Inquiry:

Has anyone figured out how to play more than one AO in a single session(i.e. exfiltrate  and have it regenerate a new AO)? It would be cool if we could choose the initial location at mission start, lets say a destroy comms objective (or whatever was chosen in the parameters) and then it would auto generate one of the other 2 remaining objectives in a random nearby location or even the next town over. Rinse and repeat for the last objective. So it would be something like: Destroy Comms > Kill HVT > Destroy Vehicles or Destroy Comms > Destroy Vehicles > Kill HVT. Just asking!

 

I definitely like Combat Patrol, now I want it to be more configurable (in a convenient way).

 

 

  • Like 1

Share this post


Link to post
Share on other sites

0 = this spawn {... then _this to refer at the unit/vehicle from the init field...}.
Then, as far as you place that into the init field of units, this will run on each PC then each time a player join. It's weird for teleportation, custom loadout ...if you don't wrap it with:  if (isServer) then { code };  In your case, you're passing pointless parameter with the actual position. The code will just replace your p1 at the position it was 5 seconds before.. at each JIP.
For your 2nd question, everything is possible but with a "price". Here you have to re-run the code after some variable reset. It's a choice I disregarded. I preferred adding spawn in adjacent locations, spreading custom evac sites with counter attacks...

One tip: You have to wait for BIS_CP_taskMain succeeded . It's more reliable than BIS_CP_taskExfil assigned.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×