Jump to content
Rydygier

[SP] Pilgrimage

Recommended Posts

SP and MP Pilgrimage "Tanoa Edition" 

 

Updated 09/09/2016   click here to go to updated download link

 

 

Some feedback. Normal mode.

 

Random spawn selected. When me and AIbuddy spawned, AIbuddy didn't have clothes, only gun and backpack.

We were both killed by AI at spawn point.

 

Restart. On spawn, I had no clothes just gun and backpack. AIbuddy had everything including a set of flippers on his hip.

 

arma3_2016_09_10_09_03_57_837.jpg

 

arma3_2016_09_10_09_09_52_521.jpg

  • Like 1

Share this post


Link to post
Share on other sites

Hi Guys

 

thanks for the kind comments

 

thank you too for the report.

 

I paid more attention to work on the SP and copy and paste (with MP modification required) from the SP to the MP... and I didn't take time as I use to do to test it all
 

I'll try the MP later

unfortunatly I work this WE until next wenesday  when I'll be off  and don't have much time to see what's wrong

 

--- I don't remember to have touch anything about gear, only about faces and identities---

 

 

one issue I often saw on MP is if Buddy is joining the game before main player did all the starting proces, you might occure such things or issue in equipments of Buddy  player

 

most of time, I wait for the main player (server)  to spawn and the game to begin before Buddy to join the game.

can you try this please and tell me if it's OK or not ?

 

for the set of flippers, it is because I introduced some new uniforms in the "spawn uniform list"...

this is a BIS "survival suit"....it allow you to swin faster like divers... you can find maybe  some diving goggles and a rebreather somewhere.... maybe on a dead diver ;)

 

having OPFOR on a spawn point is something I experienced too, mostly on SP mission where you get killed before the end of the loading process....
maybe we can think to script something like a safe process to spawn any OPFOR more than 300m from the spawn point 

 

I plan to improve and set up the Intelcheck for this "point to military camp",

I'll try to figure out too how I can script something for a few of those camps  will be occupied by OPFOR ( sometimes it happends but not enough, too empty camps)

 

I'll try to set up the spawn position of Diver team  to be always on sea level AND in water (planing maybe to  add Boats Patrols later like SAD Helo Patrols ).....

there are lot of things to do to set up Pilgrimage specifically to Tanoa

Share this post


Link to post
Share on other sites

We weren't killed directly after spawning it was shortly there after in a fire fight. AI just happened to be close by. This was in SP.

Share this post


Link to post
Share on other sites

Hi Guys

 

one issue I often saw on MP is if Buddy is joining the game before main player did all the starting proces, you might occure such things or issue in equipments of Buddy  player

 

most of time, I wait for the main player (server)  to spawn and the game to begin before Buddy to join the game.

can you try this please and tell me if it's OK or not ?

 

 

 

Will do when have a chance.

Share this post


Link to post
Share on other sites

oh I thought it was on MP

 

weird, never had such issue in SP

 

all uniforms setted are ( should be) Arma vanillia 

 

_uniforms = 
	[
	"U_BG_Guerilla1_1",
	"U_BG_Guerilla2_1",
	"U_BG_Guerilla2_2",
	"U_BG_Guerilla2_3",
	"U_BG_Guerilla3_1",
	"U_BG_leader",
	"U_I_G_Story_Protagonist_F",
	"U_I_G_resistanceLeader_F",
	"U_B_CombatUniform_mcam_tshirt",
	"U_B_survival_uniform",
	"U_I_C_Soldier_Bandit_3_F",
	"U_B_T_Soldier_AR_F",
	"U_B_CTRG_Soldier_2_F",
	"U_B_GEN_Soldier_F",
	"U_B_CTRG_2"
	];

Share this post


Link to post
Share on other sites

@major_stiffy
 

any chance to send to me your RPT ??? I tried  the mission several time with no issue.... PM me please

@pvt.partz

 

something based on this ( I just finish the script) to add in JRInit.sqf

// patrol boats to spawn line 284 in actual Tanoa Edition JRInit.sqf

RYD_JR_EastBoats =
	[
	"O_T_Boat_Armed_01_hmg_F", //East
	"O_T_Boat_Transport_01_F", //East
	"O_G_Boat_Transport_01_F" //East
	];
	
RYD_JR_IndBoats =
	[
	"I_Boat_Armed_01_minigun_F", //IND
	"I_Boat_Transport_01_F", //IND
	"I_C_Boat_Transport_02_F" //IND
	]; 

//.....blablabla until line 1215
//_softVAm = 10 + (floor (random 10));
//_armVAm = ((3 + (floor (random 2)) - RYD_JR_Difficulty) max 0) min 3;

_eastboat = ((5 + (floor (random 5)) - RYD_JR_Difficulty) max 0) min 3;
_indboat = ((5 + (floor (random 5)) - RYD_JR_Difficulty) max 0) min 3;

//...blablabla until line 2113 at progressLoadingScreen 0.4; 

//below spawn boats patrol script

{
	for "_i" from 1 to _x do
		{
		_isGood = false;
		_posIPV = getPosATL player;
		_spawnPos = [_posIPV,0,500,10,2,0,0] call BIS_fnc_findSafePos;
		_ct = 1;
		
		while {not (_isGood)} do
			{
			_pos = [(_mapC select 0) - _rds + (random (2 * _rds)),(_mapC select 1) - _rds + (random (2 * _rds))];
			
			_ct = _ct + 1;
			if (_ct > 50) exitWith {}
			};
			
		if (_isGood) then
			{
			_vehType = "";
			
			switch (_foreachIndex) do
				{
				case (0) : {_vehType = RYD_JR_EastBoats select (floor (random (count RYD_JR_EastBoats)))};
				case (1) : {_vehType = RYD_JR_IndBoats select (floor (random (count RYD_JR_IndBoats)))};
				};
			
			_veh = createVehicle [_vehType, _spawnPos, [], 0, "NONE"];
			
			RYD_JR_AllEV pushBack _veh;
			
			_dir = random 360;
					
			_veh setDir _dir;
			
			createVehicleCrew _veh;
				
				{
                                _x setSkill (0.15 + (random 0.25));
				[_x,false] call RYD_JR_DecimateGear;
				}
			foreach (crew _veh);
			
			_grp = (group _veh);
			
			clearItemCargo _veh;
			clearWeaponCargo _veh;
			clearMagazineCargo _veh;
			if ((random 100) > 0.25) then {_veh setFuel (0.3 + (random 0.7))};
			if ((random 100) > 0.25) then {_veh setVehicleAmmo (random 1)};
			if ((random 100) > 0.25) then {_veh setDamage (random 0.6)};
			
			[_grp,_spawnPos,"SAD","SAFE","YELLOW","NORMAL","WEDGE",["true",""],true,150,600,25,2,3,true] call RYD_JR_SADPatrol; 
			
			if (RYD_JR_Debug) then
				{
				_m = "VMark_" + (str _spawnPos);
				_m = createMarker [_m,_spawnPos];
				_m setMarkerColor "colorGrey";
				_m setMarkerShape "ICON";
				_m setMarkerType "mil_triangle";
				_m setMarkerSize [0.5,0.5];
				_m setMarkerText _vehType
				}
			};
		
		}
	}
foreach [_eastboat,_indboat];

//end of spawn boat patrol script

didn't try it for now.....not sure of all settings. (especially the parameters to call RYD_JR_SADPatrol function )

  • Like 1

Share this post


Link to post
Share on other sites

Often times the versions and memory just get really murky but I swore that one of the releases has patrol boats not only patrolling, but also coming ashore and dropping off AI.

Share this post


Link to post
Share on other sites

At least three factors to consider when introducing boat patrols:

 

1. To make sure, that found patrol positions and spawn position is on the deep enough water (obvious, but if you want to base on the code made for land patrols, you need to be careful, as some parts of it are specifically there to avoid on water positions, includind findSafePos parameters and likely SAD patrol functions);

 

2. When I checked lately, there's still 144 groups per side limit on place, and mission on full population settings uses often all of this limit (including some free space left for Ambient Combat Groups: if (({(side _x) == _side} count AllGroups) > RYD_JR_GLimit) exitWith {_tooMuch = true}; ), at least for East side (so I would suggest to make these patrols exclusive for independent side, which usually anyway is slightly underpowered despite fact, hidden camps are always independent, since East exclusively is used to man strongholds/airfields);

 

3. An extra code need to be added, to avoid boats "ramming the shore", as, again, when I checked last time, AI moving across the water had no ability to avoid land blocking straight path between waypoints. We saw this in some earlier versions of TPW's (BTW you may ask him, how it looks now) ambient boats - boats hitting the land on full speed. Such extra code has to ensure, there's no land between each two waypoints - eg terrain based LOS check between each two? 

 

Also one need to take care of fuel  - renew its level at each waypoint for example. 

Share this post


Link to post
Share on other sites

Hy Ryd.

yes I based the script on roads patrol, trying to delete what seems to be coded to avoid water position.
I read the BIS findsafepos documentation and, with my poor knowledge, I try to figure out how to spawn units at sea....

I'm not sure about RYD_SADPatrol parameters to call the function

[_grp,_spawnPos,"SAD","SAFE","YELLOW","NORMAL","WEDGE",["true",""],true,150,600,25,2,3,true] call RYD_JR_SADPatrol; 

_grp : the units to spawn as defined in the script to be randomly choosen  from the East/Ind boats  (as you suggested, I was thinking to reduce the boats list to ind, I'm afraid the "O_T_Boat_Armed_01_hmg_F", //East  will have too much firepower anyway

 

_spawnpos :  = [_posIPV,0,500,10,2,0,0] call BIS_fnc_findSafePos;             as defined per BIS documentation here , "2" on fifth position of parameters means " must be in water"

 

SAD, SAFE....WEDGE : parameters to define patrol behaviour

 

 

 

what becomes "darkness" for me : ["true",""],true,150,600,25,2,3,true    <_<

 

let me guess !

based of RYD_JR_SADPatrol in JR_fnc.sqf:

 

 ["true",""] = waypoints statement ? ???  (this select 7)

 true         = cyclic mode ?? (this select 8)

 150         =  radius min (this select 9)

 600         =  radius max (this select 10 )

 25           =    :huh:  no clue.... seems to be something attached to radius min/max..... (    {_acc = _this select 11}    )

 2             =   :huh:  no clue neither....     (_minA)  (this select 12)

 3            =     <_< ...... (_maxA)  (this select 13)

 true        = delete all    (this select 14)

 

where is ( this select 15 ) ??

 

 

 

 

and in the script I gave , I'm not sure about this:

while {not (_isGood)} do
			{
			_pos = [(_mapC select 0) - _rds + (random (2 * _rds)),(_mapC select 1) - _rds + (random (2 * _rds))];
			
			_ct = _ct + 1;
			if (_ct > 50) exitWith {}
			};

I guess this should not help me to have boats on sea....

and _pos should have been then _posIPV    (IPV = Inshore Patrol Vehicles)

 

 

...

 

at the first glance, I thought to add a separate .sqf file, but most of what I would need is already in JRInit and JR_fnc

so I tried to make something in conjuction with the already existing script ( to count Patrol boats in RYD_JR_allEnemy )....

and to avoid to break the wonderfull "machine" you made 

 

a few months ago, I didn't have a clue  haw to script a single thing

I'm learning, proud to have done some working things, but I have still much to learn.

Share this post


Link to post
Share on other sites

["true",""] = waypoints statement ? ???  (this select 7) - yes
true         = cyclic mode ?? (this select 8) - yes
150         =  radius min (this select 9) - yes (around group leader initial position IIRC). You may want much bigger value here for boat patrols - it's set for foot infantry. 
600         =  radius max (this select 10 ) - ditto
25           =    :huh:  no clue.... seems to be something attached to radius min/max..... (    {_acc = _this select 11}    ) - addWaypoint command radius parameter. Kinda redundant here, but may be useful sometimes. 
2             =   :huh:  no clue neither....     (_minA)  (this select 12) - minimal amount of waypoints
3            =     <_< ...... (_maxA)  (this select 13) - additional amount of waypoints above minimum. Code will add from 0 to this value number of waypoints to the minimal amount of patrol route waypoints (+ cycle waypoint on current leader's position, if set true). So in total we get  2 to 5 waypoints (+ cycle) with these settings.
true        = delete all    (this select 14) - removing all previous waypoints attached to this group before adding new patrol route. Should be true. 

where is ( this select 15 ) ?? - not used, so not defined. If set as true - center position would be player's position, not given group leader's. It's a relic - function was pasted from other place, where was used too. 

 

Note, this function calls another function to find positions: 

RYD_JR_RandomPointsAroundB = 
	{
	private ["_sourceP","_radiusMin","_radiusMax","_min","_above","_points","_minPC","_point","_posX","_posY","_pos","_ct"];
	
	_sourceP = [];

	if ((typeName (_this select 0)) == 'OBJECT') then 
		{
		_sourceP = getPosASL (_this select 0);
		} 
	else 
		{
		_sourceP = _this select 0;
		};

	_radiusMin = _this select 1;
	_radiusMax = _this select 2;
	_min = _this select 3;
	_above = _this select 4;

	_points = [];
	_minPC = _min + (round (random _above));
	_ct = 0;
	
	//for "_j" from 1 to _minPC do
	while {((count _points) < _minPC)} do
		{
		_point = [_sourceP,_radiusMin,_radiusMax] call RYD_JR_RandomAroundMM;
		_posX = _point select 0;
		_posY = _point select 1;
		_pos = [_posX,_posY];
		
		_pos = [_pos,0,_radiusMin/3,2,0,(_radiusMin/6) max 2,0] call BIS_fnc_findSafePos;

		_points pushBack _pos;
		_ct = _ct + 1;
		if (_ct > (_minPC + 1)) exitWith {}
		};

	_points
	};

and here you can see findSafePos once more - also here it has to be set, to find on water positions. I would also additonaly set a while loop around RYD_JR_RandomAroundMM for preliminary check, if surfaceIsWater and if not - repeat RYD_JR_RandomAroundMM till it is on the water. Maybe together with ATL and ASL third coord comparison to be sure, water is deep enough. Same, as for group spawn position. Also around here I would suggest to add a terrain based LOS check to be sure, there isn't a land mass between previous position and this one. So, in total, each found random position would need to pass three checks/meet three conditions: if surface is water, if it is deep enough and if there is no land between it and previous pos (or leader pos for the first one position). If not - repeat random find. With some iterations limit just in case - eg if not found in 100 attempts - abandon/remove this patrol.  

 

and in the script I gave

 

 

You removed some crucial part of it, in this form it does nothing useful, just 50 times re-randomizes (square-based way) a position. Inside that loop position has to be tested (eg if on the water etc.) and if all conditions are met - _isGood = true; defined. That tells the loop, a good position was found and loop may be ended. 

Share this post


Link to post
Share on other sites

thank you again for sharing your knowledge ( and to confirm I was on the right way but I still have lot to do and to learn )

 

so I still have hours of work before it should work, but as Tanoa is made, it would be a shame to do nothing with boats.
 

the matter will be warterdepth is varying a lot, there are lot of  shoals and reefs and as everyone knows, AI can't drive .... that may ends patrol to ship wrecks.

 

but it is worth to test and to work on this

 

EDIT 

so I have to change  parameters in BIS_fnc_findsafePos in RYD_JR_RandomPointsAroundB  to 1 ( could be on water or land )

I'll dig into all of this later

 

time to go to work (short night = hard day at work ;)  )

 

EDIT (just before  I leave)

 

so in RYD_JR_RandomPointAroundB

 

this

_pos = [_pos,0,_radiusMin/3,2,0,(_radiusMin/6) max 2,0] call BIS_fnc_findSafePos;

is turn to this 

_pos = [_pos,0,_radiusMin/3,2,1,(_radiusMin/6) max 2,0] call BIS_fnc_findSafePos;

 1 meaning "could be on water or on land

Share this post


Link to post
Share on other sites
to 1 ( could be on water or land )

 

 

Maybe try 2 - only on water

 

Just to be clear, finding random position in given radius itch extra conditions and then using findSafePos (which in fact works similar way to my own solutions) is partially redundant, but there are reasons to keep it that way. 

 

the matter will be warterdepth is varying a lot, there are lot of  shoals and reefs and as everyone knows, AI can't drive .... that may ends patrol to ship wrecks.

 

 

If you do that terrain-wise LOS checks between waypoints, set last ASL coord (height above sea level basically) of both A and B points for example like -1 or so to exclude also down to -1 meter shallows between the points and minimize risk of stuck. 

Share this post


Link to post
Share on other sites

rsoftokz

Why do you patrol on the water?
Most of the time I spend on the island in the jungle.
He will simply consume computer resources.
add better patrolling forest paths.

There are many and they are all empty​.

 

Share this post


Link to post
Share on other sites

rsoftokz

Why do you patrol on the water?

Most of the time I spend on the island in the jungle.

He will simply consume computer resources.

add better patrolling forest paths.

There are many and they are all empty​.

 

 

I agree.

Share this post


Link to post
Share on other sites

the answer is simple

like Tanoa map is made, you have several islands, ones connected to each other, some not.

so even  there is lot to do in the Jungle and land, I think tanoa edition of Pilgrimage could be a little bit different.
Boat patrols may come in place of the paratroopers dropped by helo 

it is just a project. ( a hard one as I want to script in the already made code, to add something that don't break the Pilgrimage magical )

 

about Jungle and the amount of military camps I added, I have to say most of time paths and camps are empty...

so I also have a project to try to script something to add those camps as points of interest for the generated mobile patrols

 

it happend to me to go straight  across the jungle from a point A to a point B and cross the path of a patrol (how many chances I have to go exactly between the 4 guys  just after this big tree  in the middle of nowhere ???

each time you start a Pilgrimage mission, it is different (even some events are "always" at the same places, but this is part of BIS functions and the "findsafepos" based on the center of the map ) and dependening of the way you are playing, one can experieced something, the other something else.

I play hundreds of Pilgrimage missions (the shorter one less than an hour to find bro's body and get it into the boat ), on different maps, differents ways (alone, witrh buddy, in vehicle, on foot, using the boat to go around the islands and checking areas by aeras.)

there are many ways tio enjoy the game and to improve it on Tanoa : more patrols in the jungle, patrol boats, less vehicle patrols.....

let's give a try to each idea and see what is worth or not.

 

but "more jungle patrol" is now on the "to do" list ;)

Share this post


Link to post
Share on other sites
will it not affect patrol on Land ????

 

 

Yes. And 1 will affect too - land patrols may get on water waypoints with it as well, as on land. Since waypoints for boats need to be on the water only, it has to be 2.

 

So anyway - make a copy of every function, you want to change, also name it differently, so will not overwrite original one nor be overwritten by it and change/work with these copies only. Do not change existing functions used elsewhere in the code (unless you know exactly, what you're doing). This way all existing mechanisms will stay safe/intact and you'll have full freedom as for changes. Of course, existing functions may be used safely without copying&renaming if not changed. 

Share this post


Link to post
Share on other sites

.... (unless you know exactly, what you're doing). ...

 

if only I do..... of course there are lot of things I don't know, or I wouldn't need your advices/help/assistance/knowledge....

all original Pilgrimage scripts are saved on my computer.

each time I try something, I have a back up if it doesn't work.

I have to say this "Boat patrols" projects get me deep in the complexe Pilgrimage script...

I'm discovering the magic of your scripts and how they are sometimes heavyly linked to one each others.

it's a challenge !!!

(I'm still  getting off the latest hairs I have to figure out how to script a loop to check surfaceiswater, LOS etc........ maybe not tonight! I'm a little bit tired )

 

finally I think it is better to rewrite functions specifically for the boat patrols and to forget about RYD_SADpatrol... same for  the linked other functions , as advised.

Share this post


Link to post
Share on other sites

Writing a dedicated function/code anew for boat patrols is a good way too. Just to be clear: I'm not talking about backups, but about actual duplication of the function, you want(ed) to use for boats - within the same file, eg copied function just under original, but copied with changed name and changing/using it instead of original. Well, definitelly time to sleep here. :)

 

BTW examples, how to construct surfaceIsWater checks/loops can be found in existing spawning stuff code (eg in the part, you deleted from quoted above while-do loop), just opposite - to avoid water. Hints about LOS checks you may find in RYD_JR_LOSCheck, but I would suggest linked ASL version of the command. I could explain everything plainly in time, but it's always better to grasp things on your own - that gives better understanding. 

  • Like 1

Share this post


Link to post
Share on other sites

@rsoftokz

@Rydygier

...and others

 

   Even if everyone can't agree on what should be and what shouldn't be part of the Pilgrimage "franchise" :P ,...and even if your efforts don't always work as planned, I still think it's great that you are willing to meet the challenges. You guys get better and we get to continue having a great time!

  • Like 1

Share this post


Link to post
Share on other sites

:)  ;)

 

@RYD

 

I was thinking... those patrol Boats, it might be smarter to add then via RYD_JR_Warmonger ???? (like the part with helos and troups....we might do the same with boats  (RHIB or Zodiacs)

 

there already are  all conditions :  checks with surface, LOS etc???? just need to make specific functions to check and find positions at sea 
centered on player's position....

Share this post


Link to post
Share on other sites

Warmonger handles Ambient Combat spawns. Technically you should be able one way or another to add boat patrols as part of AC, just these groups are supposed to exist only temporarily. Or to use parts of it for some way of permanent group spawns, sure. Indeed, there are water surface checks, which need to be reversed to pass only positions on the water, and LOS checks (but full, terrain and object-wise) to ensure, spawns are conducted out of player's sight. 

 

RYD_JR_GLimit was introduced exactly to ensure enough space within default group er side limit for AC groups, so these groups are apart of it. 

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

×