Jump to content

Recommended Posts

This List has reached 50 :

 

On 4/5/2018 at 3:46 PM, GEORGE FLOROS GR said:
  On 8/30/2018 at 11:00 PM, GEORGE FLOROS GR said:

This is the list so far:

 

1. GF Custom Deathscreen Script

2. GF Headshot + Killfeed Script

3. GF Earthquake Script

4. GF Crashsites Script

5. GF Cargo Airdrops Script

6. GF Ravage Status Bar script

7. GF Drop Loot Script

8. GF Holster script

9. GF Earplugs Script

10.GF Custom Loot Position Spawn Script

11.GF Cleanup Script

12.GF Vehicles Configurable Loot Script

13.GF Status Bar Script

14.GF Blood Stains and SFX Script

15.GF Use Every Uniform

16.GF Vehicle Radio chatter script

17.GF Blood Stains and SFX LITE Script

18.GF Ravage Static Traders Script

19.GF Skinning Script

20.GF Missions Script

21.GF Police and Siren Script

22.GF Set AISkill Script

23.GF Ravage Heros Money Reward Script  

24.GF Heros Status Bar Script

25.GF Set Custom Loadout Script

26.GF Units Map Markers and Symbols Script

27.GF Ambient Environment Sounds Script

28.GF Kill info Script

29.GF ColorCorrections Script

30.GF Weather Script

31.GF Fog Script

32.GF Breath Script

33.GF Ambient Environment Winter Script

34.GF Gunlights Script

35.GF Auto Loot Script

36.GF Auto Loot Crashsites Script - Mod

37.GF Auto Random Loadout Script

38.GF Auto Loot Airdrops Script - Mod

39.GF Auto Loot Vehicles Script - Mod

40.GF Visors Script - Mod

41.GF Exported Loadouts Script - Mod

42.GF Temperature Script - Mod

43.GF Auto Loot Road Crash Script - Mod

44.GF Building Replacement Script - Mod

45.GF Vegetation Replacement Script - Mod

46.GF Auto Population Script - Mod

47.GF Auto Population Zombie Script - Mod

48.GF ALIAS Anomaly Spawner Script

49.GF Explosive Objects Script - Mod

50.GF Set Custom Loadout with userconfig Mod

51.GF Auto Loot with userconfig Mod

 

Thanks !

  • Like 4

Share this post


Link to post
Share on other sites
12 hours ago, GEORGE FLOROS GR said:

 

 

 

Oh, I could see this being alot of fun and dangerous

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, Rockapes said:

Oh, I could see this being alot of fun and dangerous

 

A LOT , by far !

 

Especially if you enable also the big explosions !

Share this post


Link to post
Share on other sites

Here is the next :

 

WIP GF Object Spawner Script - Mod

a simple object spawner.

 

with 3 presets included :

vehicles , wrecks and structures.

 

There is also as an option ,  for the vehicles an autodetection mods script , for the classnames , instead of lists.

Some pics :

IpXh37w.pngmjrNIHc.pngOPCY7Kr.pngB0PLhA8.png0gUN5f6.jpg7JOaFWU.pngG9z5PJq.pngTdHKYuI.pnggUdNgl2.png

 

available soon !

thanks !

  • Like 2

Share this post


Link to post
Share on other sites

This new script - mod , has added to the compilation list :

 

 

OGVNPEL.png

news_download_a3_3.png

GF Object Spawner Script - Mod

 

Thanks !

  • Like 1

Share this post


Link to post
Share on other sites

Hello there to Everyone !

 

Since messing with the AI path for building topic ,

i have almost finished my urban patrol script :

 

WIP GF Building Clearing

some pics here :

Qni0YXL.pngJtO6Wj8.pngWcOeRqc.pngNOSdjWT.png5Pu21wE.pngOXJYpWz.pngBR1Is8N.pngmP5UzfZ.pngMuvkcxE.png

 

Thanks !

  • Like 4
  • Thanks 1

Share this post


Link to post
Share on other sites
On 4/15/2019 at 12:02 AM, GEORGE FLOROS GR said:

i have almost finished my urban patrol script :

 

WIP GF Building Clearing

 

is this for adding in waypoints to any building of that class? i've been trying to get AI's to behave in those military cargo towers but i think something like this would be what i need!

 

been away from arma for a bit and you've put out some cool stuff in that time, the auto population script is very interesting as well, good work as always, remember to sleep 😉

  • Like 1

Share this post


Link to post
Share on other sites

Hello there lordfrith !

 

This script will work on random building selection in the given area and the patrol will be updating according to the current position of the patrol , so this way it may be more random.

So far testing , the ai's are not following all the building positions on 100% , so in case of stack , i have adjust this to select again a new route.

The default is every 10 sec to check , if the patrol is not moving.

I don't think that it's much of a problem if they don't enter a building or a certain room , because so else the patrol will procced to the the next point and when it will come up again this may change as well.

 

I think that BIS should have implement a function for urban patrols.

 

It will be soon available !

  • Like 3

Share this post


Link to post
Share on other sites
On 4/23/2019 at 10:49 PM, lordfrith said:

in those military cargo towers

XMuCarQ.jpgSrDJSKI.pngwuxe1aU.png

  • Like 3

Share this post


Link to post
Share on other sites

What i haven't found though , is how to make the group members to follow through!

Sometimes they just get in , but generally they don't follow the certain path of the leader !

 

Spoiler

# KORN : Follow the leader

d4t6ikq-103ea9de-3769-4b8f-bf0a-87d4e00f

 

Share this post


Link to post
Share on other sites
10 hours ago, GEORGE FLOROS GR said:

 

Sometimes they just get in , but generally they don't follow the certain path of the leader !

 

yeah they just love to hang out at the bottom of the stairs don't they, i just checked my function and i got round that by running the patrol script on each group member, which worked fine for me as i just wanted a few units patrolling the one building, but is maybe not a good fix for your needs i think, for a group patrolling many buildings. I feel like the more stairs there are in a building the less the AI wants to behave, perhaps arma AI is scared of heights 😉

 

 

 

 

  • Like 1

Share this post


Link to post
Share on other sites

WIP GF Suppression Script - Mod

 

The whole stuff started here by LSValmont :

18 minutes ago, GEORGE FLOROS GR said:

 

Here is the code so far , for anyone who wants to test :

  Reveal hidden contents




//________________	Author : GEORGE FLOROS [GR]	___________	04.05.19	___________


/*
________________	GF Suppression Script - Mod	________________

Not yet

Please keep the Credits or add them to your Diary

https://community.bistudio.com/wiki/SQF_syntax
Don't try to open this with the simple notepad.
For everything that is with comment  //  in front  or between /*
means that it is disabled , so there is no need to delete the extra lines.

You can open this ex:
with notepad++
https://notepad-plus-plus.org/

ArmA 3 | Notepad ++ SQF tutorial
https://www.youtube.com/watch?v=aI5P7gp3x90

and also use the extra pluggins
(this way will be better , it will give also some certain colors to be able to detect ex. problems )
http://www.armaholic.com/page.php?id=8680

or use any other program for editing .

For the Compilation List of my GF Scripts , you can search in:
https://forums.bohemia.net/forums/topic/215850-compilation-list-of-my-gf-scripts/

BI Forum Ravage Club Owner :
https://forums.bohemia.net/clubs/73-bi-forum-ravage-club/
*/

	
//________________ Settings ________________
//________________ Set true or false  ________________

GF_Suppression_Systemchat_info					= true;		
GF_Suppression_diag_log_info					= true;




if (GF_Suppression_Systemchat_info) then {
systemchat "GF Suppression Script initializing";			
};	

if (GF_Suppression_diag_log_info) then {
diag_log "//________________ GF Suppression Script initializing ________________";
};


GF_Suppression_Effects = {
	
	_Blur = {
		"dynamicBlur" ppEffectEnable true;
		"dynamicBlur" ppEffectAdjust [2];
		"dynamicBlur" ppEffectCommit 0;
		"dynamicBlur" ppEffectAdjust [0];
		"dynamicBlur" ppEffectCommit 0.2;
	};

	_RadialBlur = {
		_pp = ppEffectCreate ["RadialBlur", 1000];
		_pp ppEffectEnable true;
		_pp ppEffectForceInNVG true;
		_pp ppEffectAdjust [0.01, 0.01, 0.06, 0.06];
		_pp ppEffectCommit 0.1;
		uisleep 0.2;
		ppeffectdestroy _pp;
	};
	
	_ChromAberration = {
		_pp = ppEffectCreate ["ChromAberration",200];
		_pp ppEffectEnable true;
		_pp ppEffectForceInNVG true;
		_pp ppEffectAdjust [0.03, 0.03, true];
		_pp ppEffectCommit 0.1;
		uisleep 0.2;
		ppeffectdestroy _pp;
	};
	
	_Grain = {
		_pp = ppEffectCreate ["filmGrain", 2012];
		_pp ppEffectEnable true;
		_pp ppEffectForceInNVG true;
		_pp ppEffectAdjust [random 0.2, 1, 1, 0, 1];
		_pp ppEffectCommit 0.1;
		uisleep 0.2;
		ppeffectdestroy _pp;
	};
	
	_setaperture = {
		setaperture 150;
		uisleep 0.01;
		setaperture 0;
	};
	
	_blink = {
		_pp = ppEffectCreate ["ColorCorrections", 1001];
		_pp ppEffectEnable true;
		_pp ppEffectForceInNVG true;
		_pp ppEffectAdjust [0.26, 1, 0, [0,0,0,0], [0,0,0,0], [0,0,0,0]];
		_pp ppEffectCommit 0.2;
		uisleep 0.15;
		_pp ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1],[0.5, 0.5, 0.5, 0.5]];
		_pp ppEffectCommit 0.15;
		uisleep 0.15;
		_pp ppEffectEnable false;
		ppEffectDestroy _pp;
	};


	if(random 3 > 2)then{_this spawn _Blur};
	if(random 3 > 2)then{_this spawn _RadialBlur};	//	RadialBlur will not do anything if RADIAL BLUR is disabled in Video Options
	if(random 3 > 2)then{_this spawn _ChromAberration};
	if(random 3 > 2)then{_this spawn _Grain};
	if(random 3 > 2)then{_this spawn _setaperture};
	if(random 3 > 2)then{_this spawn _blink};	
};


GF_Suppression = {
	
	_this addEventHandler ["Fired", {
		params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle"];
	   
		_Target = assignedTarget _unit;
		//	systemchat format["%1",_Target];
		if ((_Target distance _unit) > 1000) exitWith {};			
		if !(isplayer _Target) exitWith {};			
		if !(isNull objectParent _Target) exitWith {};	

		_distance = _unit distance _Target;
		_distance = round _distance;

		_random = 0;
		switch true do {
			case(_distance > 600) : {_random = random 10 > 9;};
			case((_distance >= 400) && (_distance < 600)) : {_random = random 10 > 7;};
			case((_distance >= 200) && (_distance < 400)) : {_random = random 10 > 6;};
			case((_distance >= 100) && (_distance < 200)) : {_random = random 10 > 4;};
			case((_distance >= 50) && (_distance < 100)) : {_random = random 10 > 2;};
			case((_distance > 0) && (_distance < 50)) : {_random = random 2 > 1;};
		};

		if(_random)then{
			_pos = getpos _Target;
			_list = _pos nearEntities ["MAN",2];	
			{	
				if(isplayer _x)then{
					//[_x]call GF_Suppression_Effects;
					_null = [_x] remoteExecCall ["GF_Suppression_Effects",_x];
				};
			}forEach _list;
			//	systemchat format["%1",_distance];
		};
		//	systemchat "fire";
	}];
};	


[] spawn{
	while {true} do{
		waituntil{uisleep 1;			
			{		
				if(
					(alive _x)
					&& (!(isplayer _x))
					&& (!(_x getVariable ["Var_GF_Suppression",false]))
				)then{	
					_x spawn GF_Suppression;
				};
					_x setVariable ["Var_GF_Suppression",true];
			}forEach allUnits + vehicles;
		};
	};
};


if (GF_Suppression_Systemchat_info) then {
systemchat "GF Suppression Script initialized";			
};	

if (GF_Suppression_diag_log_info) then {
diag_log "//________________ GF Suppression Script initialized ________________";
};

 

 

+ some pics :

UYEI09x.pngcmqGvVP.png2bhfdzx.png

  • Like 2

Share this post


Link to post
Share on other sites

Hello there to everyone !

 

 

On 6/16/2019 at 7:12 AM, Weapon-Fetish said:

I always play MP alone because no respawn in SP , missing everytime my Bed 😄

 

So after this post i decided to create a [WIP] Single Player Respawn Script - Mod.

 

For anyone who wants to check about it :

 

Download [ Script - Mod ] :

+GF_Respawn_SP.VR.zip

 

code only :

Spoiler




//________________	Author : GEORGE FLOROS [GR]	___________	19.06.19	_____________ 


/*
________________ GF Respawn SP Script - Mod	________________

//	Not yet

Please keep the Credits or add them to your Diary

https://community.bistudio.com/wiki/SQF_syntax
Don't try to open this with the simple notepad.
For everything that is with comment  //  in front  or between /*
means that it is disabled , so there is no need to delete the extra lines.

You can open this ex:
with notepad++
https://notepad-plus-plus.org/

ArmA 3 | Notepad ++ SQF tutorial
https://www.youtube.com/watch?v=aI5P7gp3x90

and also use the extra pluggins
(this way will be better , it will give also some certain colors to be able to detect ex. problems )
http://www.armaholic.com/page.php?id=8680

or use any other program for editing .

For the Compilation List of my GF Scripts , you can search in:
https://forums.bohemia.net/forums/topic/215850-compilation-list-of-my-gf-scripts/

BI Forum Ravage Club Owner :
https://forums.bohemia.net/clubs/73-bi-forum-ravage-club/
*/


//________________ Settings ________________
//________________ Set true or false  ________________

GF_Respawn_SP_Systemchat_info			= true;		
GF_Respawn_SP_diag_log_info				= true;

GF_Respawn_SP_time						= 5;
GF_Respawn_SP_Position_Select			= 3;		//	1 = random position , 2 = position on Marker , 3 = position on random Markers
GF_Respawn_SP_Loadout_Select 			= 2;		//	1 = No change , 2 = Random , 3 = Custom (paste from arsenal)




if(GF_Respawn_SP_Systemchat_info)then{
	systemchat "GF_Respawn_SP Script initializing";			
};	

if(GF_Respawn_SP_diag_log_info)then{
	diag_log "//________________ GF_Respawn_SP Script initializing ________________";
};




GF_Respawn_SP_Loadout = {


	switch (GF_Respawn_SP_Loadout_Select) do{

		case 1 : {
			//	No change
		};
		
		
		case 2 : {

			removeallweapons _this;
			removeAllItems _this;
			removeAllAssignedItems _this;
			removeUniform _this;
			removeVest _this;
			removeBackpack _this;
			removeHeadgear _this;
			removeGoggles _this;


			//________________	_Uniform_array	________________
			_Uniform_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 801 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			//________________	_handgunWeapon_array	________________
			_handgunWeapon_array = ("getNumber (_x >> 'type') isEqualTo 2 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			_primaryWeapon_array = ("getNumber (_x >> 'type') isEqualTo 1 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_secondaryWeapon_array = ("getNumber (_x >> 'type') isEqualTo 4 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Magazines_array = ("getNumber (_x >> 'scope') isEqualTo 2 && getNumber (_x >> 'type') in [256,16,2*256,3*256,6*256]"configClasses (configFile >> "CfgMagazines"))apply{configName _x};

			_Vests_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 701 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Headgear_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 605 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Backpacks_array = ("getNumber (_x >> 'isbackpack') isEqualTo 1 && getNumber (_x>> 'scope') >1 && getNumber (_x>> 'maximumLoad') != 0" configClasses (configfile >> "CfgVehicles"))apply{configName _x};
			_Goggles_array = ("getNumber (_x >> 'scope') > 1" configClasses (configfile >> "CfgGlasses"))apply{configName _x};

			_Items_array = ("getNumber (_x >> 'type') isEqualTo 4096 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Attachments_array = ("getNumber (_x >> 'type') isEqualTo 131072 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			_Binocular_and_Nvg_array = (
				"(!(getText( _x >> 'DLC' ) == 'mcc_sandbox_a3'))
				&& getNumber ( _x >> 'scope' ) isEqualTo 2	
				&& getNumber ( _x >> 'type' ) in [ 131072, 4096 ]
				&& getNumber ( _x >> 'ItemInfo' >> 'type' ) in [ 0 , 616 ] 
				"configClasses (configfile >> "CfgWeapons")
				)apply {configName _x};



			_Uniform = selectRandom _Uniform_array;
			_Headgear = selectRandom _Headgear_array; 
			_Goggles = selectRandom _Goggles_array; 
			_Vests = selectRandom _Vests_array; 
			_Backpacks = selectRandom _Backpacks_array;
			_primaryWeapon = selectRandom _primaryWeapon_array;
			_secondaryWeapon = selectRandom _secondaryWeapon_array;
			_handgunWeapon = selectRandom _handgunWeapon_array;


			//________________ _Items	________________

			_Items = selectRandom _Items_array;
			_Attachments = selectRandom _Attachments_array;
			_Magazines = selectRandom _Magazines_array;

			
			//________________	add Gear	________________
			
			_this forceAddUniform _Uniform;
			_this addVest _Vests;
			_this addHeadgear _Headgear;
			_this addGoggles _Goggles;
			_this addWeapon _primaryWeapon;
			_this addWeaponGlobal _handgunWeapon;

			if(random 10 < 3) then{_this addBackpack _Backpacks;};
			if(!(backpack _this isEqualTo ""))then{
				if(random 10 < 3) then{_this addWeapon _secondaryWeapon};
			};
			
			//________________	addItemToUniform	________________
			
			for "_i" from 1 to 1 do{_this addItemToUniform "FirstAidKit";};


			//________________	addItemToVest	________________
			
			for "_i" from 1 to 1 do{_this addItemToVest "FirstAidKit";};
			for "_i" from 1 to 1 do{_this addItemToVest "HandGrenade";};
			for "_i" from 1 to 1 do{_this addItemToVest "MiniGrenade";};
			for "_i" from 1 to 1 do{_this addItemToVest "SmokeShell";};

			if(random 10 < 3) then{_this addItemToVest _Items;};
			if(random 10 < 3) then{_this addItemToVest _Attachments;};
			if(random 10 < 3) then{_this addItemToVest _Magazines;};
			
			
			for "_i" from 1 to random 6 do{
				_assignableItems = selectRandom _Binocular_and_Nvg_array;
				if(random 10 < 3) then{_this linkItem _assignableItems;};	
			};
			
			//________________	add _primaryWeapon's compatible attachments	________________

			_primaryWeapon_MuzzleSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
			if(count _primaryWeapon_MuzzleSlot >= 1)then{_primaryWeapon_Muzzle = selectRandom _primaryWeapon_MuzzleSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Muzzle;};}; 

			_primaryWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _primaryWeapon_CowsSlot >= 1)then{_primaryWeapon_Optic = selectRandom _primaryWeapon_CowsSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Optic;};}; 

			_primaryWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _primaryWeapon_PointerSlot >= 1)then{_primaryWeapon_Pointer = selectRandom _primaryWeapon_PointerSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Pointer;};}; 

			_primaryWeapon_UnderBarrelSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
			if(count _primaryWeapon_UnderBarrelSlot >= 1)then{_primaryWeapon_UnderBarrel = selectRandom _primaryWeapon_UnderBarrelSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_UnderBarrel;};}; 

			
			//________________	add _secondaryWeapon 's compatible attachments	________________

			_secondaryWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _secondaryWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _secondaryWeapon_CowsSlot >= 1)then{_secondaryWeapon_Optic = selectRandom _secondaryWeapon_CowsSlot;
			if(random 10 < 3) then{_this addSecondaryWeaponItem _secondaryWeapon_Optic;};}; 

			_secondaryWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _secondaryWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _secondaryWeapon_PointerSlot >= 1)then{_secondaryWeapon_Pointer = selectRandom _secondaryWeapon_PointerSlot;
			if(random 10 < 3) then{_this addSecondaryWeaponItem _secondaryWeapon_Pointer;};}; 

			
			//________________	add _handgunWeapon's compatible attachments	________________

			_handgunWeapon_MuzzleSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
			if(count _handgunWeapon_MuzzleSlot >= 1)then{_handgunWeapon_Muzzle = selectRandom _handgunWeapon_MuzzleSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Muzzle;};}; 

			_handgunWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _handgunWeapon_CowsSlot >= 1)then{_handgunWeapon_Optic = selectRandom _handgunWeapon_CowsSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Optic;};}; 

			_handgunWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _handgunWeapon_PointerSlot >= 1)then{_handgunWeapon_Pointer = selectRandom _handgunWeapon_PointerSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Pointer;};}; 

			
			//________________	add _primaryWeapon's mags	________________

			_primaryWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _primaryWeapon / "magazines");
			if(count _primaryWeapon_Magazines_array > 0)then{
				private _primaryWeapon_magazines = selectRandom _primaryWeapon_Magazines_array;
				
				for "_i" from 1 to 2 do{_this addItemToUniform _primaryWeapon_magazines;};
				for "_i" from 1 to 5 do{_this addItemToVest _primaryWeapon_magazines;};
			};

			//________________	add _secondaryWeapon's mags	________________

			_secondaryWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _secondaryWeapon / "magazines");
			if(count _secondaryWeapon_Magazines_array > 0)then{
				private _secondaryWeapon_Magazines = selectRandom _secondaryWeapon_Magazines_array;
				
				if(!(backpack _this isEqualTo ""))then{
					for "_i" from 1 to 5 do{_this addItemTobackpack _secondaryWeapon_Magazines;};
				};
			};

			//________________	add _handgunWeapon's mags	________________

			_handgunWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _handgunWeapon / "magazines");
			if(count _handgunWeapon_Magazines_array > 0)then{
				private _handgunWeapon_Magazines = selectRandom _handgunWeapon_Magazines_array;
				
				for "_i" from 1 to 2 do{_this addItemToUniform _handgunWeapon_Magazines;};
			};

		};
	
	
		case 3 : {
		
			comment "You must change , this to _this";
			
			
			comment "Exported from Arsenal by [GR]GEORGE F";

			comment "[!] UNIT MUST BE LOCAL [!]";
			if (!local _this) exitWith {};

			comment "Remove existing items";
			removeAllWeapons _this;
			removeAllItems _this;
			removeAllAssignedItems _this;
			removeUniform _this;
			removeVest _this;
			removeBackpack _this;
			removeHeadgear _this;
			removeGoggles _this;

			comment "Add containers";
			_this forceAddUniform "U_B_HeliPilotCoveralls";
			_this addItemToUniform "FirstAidKit";
			_this addItemToUniform "HandGrenade";
			_this addItemToUniform "Chemlight_green";
			_this addItemToUniform "30Rnd_65x39_caseless_green";
			_this addVest "V_TacVestIR_blk";
			_this addItemToVest "Chemlight_green";
			for "_i" from 1 to 2 do {_this addItemToVest "30Rnd_65x39_caseless_green";};
			for "_i" from 1 to 3 do {_this addItemToVest "11Rnd_45ACP_Mag";};
			_this addHeadgear "H_Cap_blk";

			comment "Add weapons";
			_this addWeapon "arifle_Katiba_C_F";
			_this addWeapon "hgun_Pistol_heavy_01_F";
			_this addHandgunItem "optic_MRD";
			_this addWeapon "Rangefinder";

			comment "Add items";
			_this linkItem "ItemMap";
			_this linkItem "ItemCompass";
			_this linkItem "ItemWatch";
			_this linkItem "ItemRadio";

			comment "Set identity";
			[_this,"WhiteHead_09","male05eng"] call BIS_fnc_setIdentity;
		};
	};
};


GF_Respawn_SP_Position = {


	switch (GF_Respawn_SP_Position_Select) do{

		case 1 : {
			//	for random position
			_pos = [] call BIS_fnc_randomPos;
			_this setposASL _pos;
		};
	
		case 2 : {
			//	Create a Marker if you want a certain position 
			_pos = getmarkerPos "respawn";
			_this setposASL _pos;
		};
		
		case 3 : {
			//	select a random marker , copy this inside the mission that you want to suffle the markers 
			_array = selectRandom[    
				"respawn_1",       
				"respawn_2",
				"respawn_3"
            ];		
			
			_pos = getmarkerPos _array;
			_this setposASL _pos;
		};
	};
};


GF_Respawn_SP_Effects = {

	if(isPlayer _this && {local _this}) then{
		
		_this allowDamage false;
		private ["_soundvolume","_musicvolume"];
		_musicvolume = musicvolume;
		_soundvolume = soundvolume;
		1 fadeSound 0.3;
		
		_this spawn{		
			"dynamicBlur" ppEffectEnable true;
			"dynamicBlur" ppEffectAdjust [20];
			"dynamicBlur" ppEffectCommit 0;
			"dynamicBlur" ppEffectAdjust [0.0];
			"dynamicBlur" ppEffectCommit 4;
		};	


		cutText ["", "BLACK OUT", 0.001];
		[1000] call BIS_fnc_bloodEffect;
		cutText ["<t size='2' font= 'EtelkaMonospaceProBold' >You are dead</t>", "BLACK OUT", -1, true, true];

		uisleep 1;
		_this setdamage 0;
		_this spawn GF_Respawn_SP_Loadout;
		_this spawn GF_Respawn_SP_Position;
		uisleep GF_Respawn_SP_time;
		
		2 fadesound _soundvolume;
		2 fademusic _musicvolume;
		cutText ["", "BLACK IN", 3];
		uisleep 3;
		_this allowDamage true;
		_this setCaptive false;
	};
};


GF_Respawn_SP_Loop = {
	
	params ["_unit"];

	if(vehicle _unit != _unit) then{_unit action ["eject", vehicle _unit]};
		_unit spawn GF_Respawn_SP;
			if(damage _unit == 0)then{
				_unit setCaptive true;
				systemchat format ["Respawn :%1  /  Damage :%2",name _unit, damage _unit];
				_unit spawn GF_Respawn_SP_Effects;
			};
};


GF_Respawn_SP = {

params ["_unit"];
	
_unit addEventHandler ["HandleDamage", {
	params ["_unit", "_selection", "_damage", "_source", "_projectile", "_hitIndex", "_instigator", "_hitPoint"];
	
	_selection = _this select 2;
	if(damage _unit + _selection < 1)then{
		_unit allowDamage true; 
	};
	
	if(damage _unit + _selection >= 1)then{
		_damage = 0;
		_unit allowDamage false;
		systemchat format ["HandleDamage %1 / Damage :%2",typeOf _unit,damage _unit];
		_unit removeEventHandler ["HandleDamage",_thisEventHandler];
		_unit spawn GF_Respawn_SP_Loop;
		_damage;
	};	
}];	
};


player spawn GF_Respawn_SP;



if(GF_Respawn_SP_Systemchat_info)then{
	systemchat "GF_Respawn_SP Script initialized";			
};	

if(GF_Respawn_SP_diag_log_info)then{
	diag_log "//________________ GF_Respawn_SP Script initialized ________________";
};

 

 

P6wO7PB.png

UQh4Ih6.png

 

There are so far , settings for :

GF_Respawn_SP_time						= 5;
GF_Respawn_SP_Position_Select			= 3;		//	1 = random position , 2 = position on Marker , 3 = position on random Markers
GF_Respawn_SP_Loadout_Select 			= 2;		//	1 = No change , 2 = Random , 3 = Custom (paste from arsenal)

 

Thanks and have Fun !

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites
 
 
 
 
3
55 minutes ago, GEORGE FLOROS GR said:

Hello there to everyone !

 

 

 

So after this post i decided to create a [WIP] Single Player Respawn Script - Mod.

 

For anyone who wants to check about it :

 

Download [ Script - Mod ] :

+GF_Respawn_SP.VR.zip

 

code only :

  Reveal hidden contents





//________________	Author : GEORGE FLOROS [GR]	___________	19.06.19	_____________ 


/*
________________ GF Respawn SP Script - Mod	________________

//	Not yet

Please keep the Credits or add them to your Diary

https://community.bistudio.com/wiki/SQF_syntax
Don't try to open this with the simple notepad.
For everything that is with comment  //  in front  or between /*
means that it is disabled , so there is no need to delete the extra lines.

You can open this ex:
with notepad++
https://notepad-plus-plus.org/

ArmA 3 | Notepad ++ SQF tutorial
https://www.youtube.com/watch?v=aI5P7gp3x90

and also use the extra pluggins
(this way will be better , it will give also some certain colors to be able to detect ex. problems )
http://www.armaholic.com/page.php?id=8680

or use any other program for editing .

For the Compilation List of my GF Scripts , you can search in:
https://forums.bohemia.net/forums/topic/215850-compilation-list-of-my-gf-scripts/

BI Forum Ravage Club Owner :
https://forums.bohemia.net/clubs/73-bi-forum-ravage-club/
*/


//________________ Settings ________________
//________________ Set true or false  ________________

GF_Respawn_SP_Systemchat_info			= true;		
GF_Respawn_SP_diag_log_info				= true;

GF_Respawn_SP_time						= 5;
GF_Respawn_SP_Position_Select			= 3;		//	1 = random position , 2 = position on Marker , 3 = position on random Markers
GF_Respawn_SP_Loadout_Select 			= 2;		//	1 = No change , 2 = Random , 3 = Custom (paste from arsenal)




if(GF_Respawn_SP_Systemchat_info)then{
	systemchat "GF_Respawn_SP Script initializing";			
};	

if(GF_Respawn_SP_diag_log_info)then{
	diag_log "//________________ GF_Respawn_SP Script initializing ________________";
};




GF_Respawn_SP_Loadout = {


	switch (GF_Respawn_SP_Loadout_Select) do{

		case 1 : {
			//	No change
		};
		
		
		case 2 : {

			removeallweapons _this;
			removeAllItems _this;
			removeAllAssignedItems _this;
			removeUniform _this;
			removeVest _this;
			removeBackpack _this;
			removeHeadgear _this;
			removeGoggles _this;


			//________________	_Uniform_array	________________
			_Uniform_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 801 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			//________________	_handgunWeapon_array	________________
			_handgunWeapon_array = ("getNumber (_x >> 'type') isEqualTo 2 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			_primaryWeapon_array = ("getNumber (_x >> 'type') isEqualTo 1 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_secondaryWeapon_array = ("getNumber (_x >> 'type') isEqualTo 4 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Magazines_array = ("getNumber (_x >> 'scope') isEqualTo 2 && getNumber (_x >> 'type') in [256,16,2*256,3*256,6*256]"configClasses (configFile >> "CfgMagazines"))apply{configName _x};

			_Vests_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 701 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Headgear_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 605 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Backpacks_array = ("getNumber (_x >> 'isbackpack') isEqualTo 1 && getNumber (_x>> 'scope') >1 && getNumber (_x>> 'maximumLoad') != 0" configClasses (configfile >> "CfgVehicles"))apply{configName _x};
			_Goggles_array = ("getNumber (_x >> 'scope') > 1" configClasses (configfile >> "CfgGlasses"))apply{configName _x};

			_Items_array = ("getNumber (_x >> 'type') isEqualTo 4096 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Attachments_array = ("getNumber (_x >> 'type') isEqualTo 131072 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			_Binocular_and_Nvg_array = (
				"(!(getText( _x >> 'DLC' ) == 'mcc_sandbox_a3'))
				&& getNumber ( _x >> 'scope' ) isEqualTo 2	
				&& getNumber ( _x >> 'type' ) in [ 131072, 4096 ]
				&& getNumber ( _x >> 'ItemInfo' >> 'type' ) in [ 0 , 616 ] 
				"configClasses (configfile >> "CfgWeapons")
				)apply {configName _x};



			_Uniform = selectRandom _Uniform_array;
			_Headgear = selectRandom _Headgear_array; 
			_Goggles = selectRandom _Goggles_array; 
			_Vests = selectRandom _Vests_array; 
			_Backpacks = selectRandom _Backpacks_array;
			_primaryWeapon = selectRandom _primaryWeapon_array;
			_secondaryWeapon = selectRandom _secondaryWeapon_array;
			_handgunWeapon = selectRandom _handgunWeapon_array;


			//________________ _Items	________________

			_Items = selectRandom _Items_array;
			_Attachments = selectRandom _Attachments_array;
			_Magazines = selectRandom _Magazines_array;

			
			//________________	add Gear	________________
			
			_this forceAddUniform _Uniform;
			_this addVest _Vests;
			_this addHeadgear _Headgear;
			_this addGoggles _Goggles;
			_this addWeapon _primaryWeapon;
			_this addWeaponGlobal _handgunWeapon;

			if(random 10 < 3) then{_this addBackpack _Backpacks;};
			if(!(backpack _this isEqualTo ""))then{
				if(random 10 < 3) then{_this addWeapon _secondaryWeapon};
			};
			
			//________________	addItemToUniform	________________
			
			for "_i" from 1 to 1 do{_this addItemToUniform "FirstAidKit";};


			//________________	addItemToVest	________________
			
			for "_i" from 1 to 1 do{_this addItemToVest "FirstAidKit";};
			for "_i" from 1 to 1 do{_this addItemToVest "HandGrenade";};
			for "_i" from 1 to 1 do{_this addItemToVest "MiniGrenade";};
			for "_i" from 1 to 1 do{_this addItemToVest "SmokeShell";};

			if(random 10 < 3) then{_this addItemToVest _Items;};
			if(random 10 < 3) then{_this addItemToVest _Attachments;};
			if(random 10 < 3) then{_this addItemToVest _Magazines;};
			
			
			for "_i" from 1 to random 6 do{
				_assignableItems = selectRandom _Binocular_and_Nvg_array;
				if(random 10 < 3) then{_this linkItem _assignableItems;};	
			};
			
			//________________	add _primaryWeapon's compatible attachments	________________

			_primaryWeapon_MuzzleSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
			if(count _primaryWeapon_MuzzleSlot >= 1)then{_primaryWeapon_Muzzle = selectRandom _primaryWeapon_MuzzleSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Muzzle;};}; 

			_primaryWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _primaryWeapon_CowsSlot >= 1)then{_primaryWeapon_Optic = selectRandom _primaryWeapon_CowsSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Optic;};}; 

			_primaryWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _primaryWeapon_PointerSlot >= 1)then{_primaryWeapon_Pointer = selectRandom _primaryWeapon_PointerSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Pointer;};}; 

			_primaryWeapon_UnderBarrelSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
			if(count _primaryWeapon_UnderBarrelSlot >= 1)then{_primaryWeapon_UnderBarrel = selectRandom _primaryWeapon_UnderBarrelSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_UnderBarrel;};}; 

			
			//________________	add _secondaryWeapon 's compatible attachments	________________

			_secondaryWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _secondaryWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _secondaryWeapon_CowsSlot >= 1)then{_secondaryWeapon_Optic = selectRandom _secondaryWeapon_CowsSlot;
			if(random 10 < 3) then{_this addSecondaryWeaponItem _secondaryWeapon_Optic;};}; 

			_secondaryWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _secondaryWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _secondaryWeapon_PointerSlot >= 1)then{_secondaryWeapon_Pointer = selectRandom _secondaryWeapon_PointerSlot;
			if(random 10 < 3) then{_this addSecondaryWeaponItem _secondaryWeapon_Pointer;};}; 

			
			//________________	add _handgunWeapon's compatible attachments	________________

			_handgunWeapon_MuzzleSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
			if(count _handgunWeapon_MuzzleSlot >= 1)then{_handgunWeapon_Muzzle = selectRandom _handgunWeapon_MuzzleSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Muzzle;};}; 

			_handgunWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _handgunWeapon_CowsSlot >= 1)then{_handgunWeapon_Optic = selectRandom _handgunWeapon_CowsSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Optic;};}; 

			_handgunWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _handgunWeapon_PointerSlot >= 1)then{_handgunWeapon_Pointer = selectRandom _handgunWeapon_PointerSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Pointer;};}; 

			
			//________________	add _primaryWeapon's mags	________________

			_primaryWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _primaryWeapon / "magazines");
			if(count _primaryWeapon_Magazines_array > 0)then{
				private _primaryWeapon_magazines = selectRandom _primaryWeapon_Magazines_array;
				
				for "_i" from 1 to 2 do{_this addItemToUniform _primaryWeapon_magazines;};
				for "_i" from 1 to 5 do{_this addItemToVest _primaryWeapon_magazines;};
			};

			//________________	add _secondaryWeapon's mags	________________

			_secondaryWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _secondaryWeapon / "magazines");
			if(count _secondaryWeapon_Magazines_array > 0)then{
				private _secondaryWeapon_Magazines = selectRandom _secondaryWeapon_Magazines_array;
				
				if(!(backpack _this isEqualTo ""))then{
					for "_i" from 1 to 5 do{_this addItemTobackpack _secondaryWeapon_Magazines;};
				};
			};

			//________________	add _handgunWeapon's mags	________________

			_handgunWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _handgunWeapon / "magazines");
			if(count _handgunWeapon_Magazines_array > 0)then{
				private _handgunWeapon_Magazines = selectRandom _handgunWeapon_Magazines_array;
				
				for "_i" from 1 to 2 do{_this addItemToUniform _handgunWeapon_Magazines;};
			};

		};
	
	
		case 3 : {
		
			comment "You must change , this to _this";
			
			
			comment "Exported from Arsenal by [GR]GEORGE F";

			comment "[!] UNIT MUST BE LOCAL [!]";
			if (!local _this) exitWith {};

			comment "Remove existing items";
			removeAllWeapons _this;
			removeAllItems _this;
			removeAllAssignedItems _this;
			removeUniform _this;
			removeVest _this;
			removeBackpack _this;
			removeHeadgear _this;
			removeGoggles _this;

			comment "Add containers";
			_this forceAddUniform "U_B_HeliPilotCoveralls";
			_this addItemToUniform "FirstAidKit";
			_this addItemToUniform "HandGrenade";
			_this addItemToUniform "Chemlight_green";
			_this addItemToUniform "30Rnd_65x39_caseless_green";
			_this addVest "V_TacVestIR_blk";
			_this addItemToVest "Chemlight_green";
			for "_i" from 1 to 2 do {_this addItemToVest "30Rnd_65x39_caseless_green";};
			for "_i" from 1 to 3 do {_this addItemToVest "11Rnd_45ACP_Mag";};
			_this addHeadgear "H_Cap_blk";

			comment "Add weapons";
			_this addWeapon "arifle_Katiba_C_F";
			_this addWeapon "hgun_Pistol_heavy_01_F";
			_this addHandgunItem "optic_MRD";
			_this addWeapon "Rangefinder";

			comment "Add items";
			_this linkItem "ItemMap";
			_this linkItem "ItemCompass";
			_this linkItem "ItemWatch";
			_this linkItem "ItemRadio";

			comment "Set identity";
			[_this,"WhiteHead_09","male05eng"] call BIS_fnc_setIdentity;
		};
	};
};


GF_Respawn_SP_Position = {


	switch (GF_Respawn_SP_Position_Select) do{

		case 1 : {
			//	for random position
			_pos = [] call BIS_fnc_randomPos;
			_this setposASL _pos;
		};
	
		case 2 : {
			//	Create a Marker if you want a certain position 
			_pos = getmarkerPos "respawn";
			_this setposASL _pos;
		};
		
		case 3 : {
			//	select a random marker , copy this inside the mission that you want to suffle the markers 
			_array = selectRandom[    
				"respawn_1",       
				"respawn_2",
				"respawn_3"
            ];		
			
			_pos = getmarkerPos _array;
			_this setposASL _pos;
		};
	};
};


GF_Respawn_SP_Effects = {

	if(isPlayer _this && {local _this}) then{
		
		_this allowDamage false;
		private ["_soundvolume","_musicvolume"];
		_musicvolume = musicvolume;
		_soundvolume = soundvolume;
		1 fadeSound 0.3;
		
		_this spawn{		
			"dynamicBlur" ppEffectEnable true;
			"dynamicBlur" ppEffectAdjust [20];
			"dynamicBlur" ppEffectCommit 0;
			"dynamicBlur" ppEffectAdjust [0.0];
			"dynamicBlur" ppEffectCommit 4;
		};	


		cutText ["", "BLACK OUT", 0.001];
		[1000] call BIS_fnc_bloodEffect;
		cutText ["<t size='2' font= 'EtelkaMonospaceProBold' >You are dead</t>", "BLACK OUT", -1, true, true];

		uisleep 1;
		_this setdamage 0;
		_this spawn GF_Respawn_SP_Loadout;
		_this spawn GF_Respawn_SP_Position;
		uisleep GF_Respawn_SP_time;
		
		2 fadesound _soundvolume;
		2 fademusic _musicvolume;
		cutText ["", "BLACK IN", 3];
		uisleep 3;
		_this allowDamage true;
		_this setCaptive false;
	};
};


GF_Respawn_SP_Loop = {
	
	params ["_unit"];

	if(vehicle _unit != _unit) then{_unit action ["eject", vehicle _unit]};
		_unit spawn GF_Respawn_SP;
			if(damage _unit == 0)then{
				_unit setCaptive true;
				systemchat format ["Respawn :%1  /  Damage :%2",name _unit, damage _unit];
				_unit spawn GF_Respawn_SP_Effects;
			};
};


GF_Respawn_SP = {

params ["_unit"];
	
_unit addEventHandler ["HandleDamage", {
	params ["_unit", "_selection", "_damage", "_source", "_projectile", "_hitIndex", "_instigator", "_hitPoint"];
	
	_selection = _this select 2;
	if(damage _unit + _selection < 1)then{
		_unit allowDamage true; 
	};
	
	if(damage _unit + _selection >= 1)then{
		_damage = 0;
		_unit allowDamage false;
		systemchat format ["HandleDamage %1 / Damage :%2",typeOf _unit,damage _unit];
		_unit removeEventHandler ["HandleDamage",_thisEventHandler];
		_unit spawn GF_Respawn_SP_Loop;
		_damage;
	};	
}];	
};


player spawn GF_Respawn_SP;



if(GF_Respawn_SP_Systemchat_info)then{
	systemchat "GF_Respawn_SP Script initialized";			
};	

if(GF_Respawn_SP_diag_log_info)then{
	diag_log "//________________ GF_Respawn_SP Script initialized ________________";
};

 

 

 

:icon_dj:

  • Thanks 1

Share this post


Link to post
Share on other sites
4 hours ago, GEORGE FLOROS GR said:

Hello there to everyone !

 

 

 

So after this post i decided to create a [WIP] Single Player Respawn Script - Mod.

 

For anyone who wants to check about it :

 

Download [ Script - Mod ] :

+GF_Respawn_SP.VR.zip

 

code only :

  Reveal hidden contents





//________________	Author : GEORGE FLOROS [GR]	___________	19.06.19	_____________ 


/*
________________ GF Respawn SP Script - Mod	________________

//	Not yet

Please keep the Credits or add them to your Diary

https://community.bistudio.com/wiki/SQF_syntax
Don't try to open this with the simple notepad.
For everything that is with comment  //  in front  or between /*
means that it is disabled , so there is no need to delete the extra lines.

You can open this ex:
with notepad++
https://notepad-plus-plus.org/

ArmA 3 | Notepad ++ SQF tutorial
https://www.youtube.com/watch?v=aI5P7gp3x90

and also use the extra pluggins
(this way will be better , it will give also some certain colors to be able to detect ex. problems )
http://www.armaholic.com/page.php?id=8680

or use any other program for editing .

For the Compilation List of my GF Scripts , you can search in:
https://forums.bohemia.net/forums/topic/215850-compilation-list-of-my-gf-scripts/

BI Forum Ravage Club Owner :
https://forums.bohemia.net/clubs/73-bi-forum-ravage-club/
*/


//________________ Settings ________________
//________________ Set true or false  ________________

GF_Respawn_SP_Systemchat_info			= true;		
GF_Respawn_SP_diag_log_info				= true;

GF_Respawn_SP_time						= 5;
GF_Respawn_SP_Position_Select			= 3;		//	1 = random position , 2 = position on Marker , 3 = position on random Markers
GF_Respawn_SP_Loadout_Select 			= 2;		//	1 = No change , 2 = Random , 3 = Custom (paste from arsenal)




if(GF_Respawn_SP_Systemchat_info)then{
	systemchat "GF_Respawn_SP Script initializing";			
};	

if(GF_Respawn_SP_diag_log_info)then{
	diag_log "//________________ GF_Respawn_SP Script initializing ________________";
};




GF_Respawn_SP_Loadout = {


	switch (GF_Respawn_SP_Loadout_Select) do{

		case 1 : {
			//	No change
		};
		
		
		case 2 : {

			removeallweapons _this;
			removeAllItems _this;
			removeAllAssignedItems _this;
			removeUniform _this;
			removeVest _this;
			removeBackpack _this;
			removeHeadgear _this;
			removeGoggles _this;


			//________________	_Uniform_array	________________
			_Uniform_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 801 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			//________________	_handgunWeapon_array	________________
			_handgunWeapon_array = ("getNumber (_x >> 'type') isEqualTo 2 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			_primaryWeapon_array = ("getNumber (_x >> 'type') isEqualTo 1 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_secondaryWeapon_array = ("getNumber (_x >> 'type') isEqualTo 4 && getNumber (_x>> 'scope') isEqualTo 2" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Magazines_array = ("getNumber (_x >> 'scope') isEqualTo 2 && getNumber (_x >> 'type') in [256,16,2*256,3*256,6*256]"configClasses (configFile >> "CfgMagazines"))apply{configName _x};

			_Vests_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 701 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Headgear_array = ("getNumber (_x >> 'itemInfo' >> 'type') isEqualTo 605 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Backpacks_array = ("getNumber (_x >> 'isbackpack') isEqualTo 1 && getNumber (_x>> 'scope') >1 && getNumber (_x>> 'maximumLoad') != 0" configClasses (configfile >> "CfgVehicles"))apply{configName _x};
			_Goggles_array = ("getNumber (_x >> 'scope') > 1" configClasses (configfile >> "CfgGlasses"))apply{configName _x};

			_Items_array = ("getNumber (_x >> 'type') isEqualTo 4096 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};
			_Attachments_array = ("getNumber (_x >> 'type') isEqualTo 131072 && getNumber (_x>> 'scope') >1" configClasses (configfile >> "CfgWeapons"))apply{configName _x};

			_Binocular_and_Nvg_array = (
				"(!(getText( _x >> 'DLC' ) == 'mcc_sandbox_a3'))
				&& getNumber ( _x >> 'scope' ) isEqualTo 2	
				&& getNumber ( _x >> 'type' ) in [ 131072, 4096 ]
				&& getNumber ( _x >> 'ItemInfo' >> 'type' ) in [ 0 , 616 ] 
				"configClasses (configfile >> "CfgWeapons")
				)apply {configName _x};



			_Uniform = selectRandom _Uniform_array;
			_Headgear = selectRandom _Headgear_array; 
			_Goggles = selectRandom _Goggles_array; 
			_Vests = selectRandom _Vests_array; 
			_Backpacks = selectRandom _Backpacks_array;
			_primaryWeapon = selectRandom _primaryWeapon_array;
			_secondaryWeapon = selectRandom _secondaryWeapon_array;
			_handgunWeapon = selectRandom _handgunWeapon_array;


			//________________ _Items	________________

			_Items = selectRandom _Items_array;
			_Attachments = selectRandom _Attachments_array;
			_Magazines = selectRandom _Magazines_array;

			
			//________________	add Gear	________________
			
			_this forceAddUniform _Uniform;
			_this addVest _Vests;
			_this addHeadgear _Headgear;
			_this addGoggles _Goggles;
			_this addWeapon _primaryWeapon;
			_this addWeaponGlobal _handgunWeapon;

			if(random 10 < 3) then{_this addBackpack _Backpacks;};
			if(!(backpack _this isEqualTo ""))then{
				if(random 10 < 3) then{_this addWeapon _secondaryWeapon};
			};
			
			//________________	addItemToUniform	________________
			
			for "_i" from 1 to 1 do{_this addItemToUniform "FirstAidKit";};


			//________________	addItemToVest	________________
			
			for "_i" from 1 to 1 do{_this addItemToVest "FirstAidKit";};
			for "_i" from 1 to 1 do{_this addItemToVest "HandGrenade";};
			for "_i" from 1 to 1 do{_this addItemToVest "MiniGrenade";};
			for "_i" from 1 to 1 do{_this addItemToVest "SmokeShell";};

			if(random 10 < 3) then{_this addItemToVest _Items;};
			if(random 10 < 3) then{_this addItemToVest _Attachments;};
			if(random 10 < 3) then{_this addItemToVest _Magazines;};
			
			
			for "_i" from 1 to random 6 do{
				_assignableItems = selectRandom _Binocular_and_Nvg_array;
				if(random 10 < 3) then{_this linkItem _assignableItems;};	
			};
			
			//________________	add _primaryWeapon's compatible attachments	________________

			_primaryWeapon_MuzzleSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
			if(count _primaryWeapon_MuzzleSlot >= 1)then{_primaryWeapon_Muzzle = selectRandom _primaryWeapon_MuzzleSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Muzzle;};}; 

			_primaryWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _primaryWeapon_CowsSlot >= 1)then{_primaryWeapon_Optic = selectRandom _primaryWeapon_CowsSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Optic;};}; 

			_primaryWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _primaryWeapon_PointerSlot >= 1)then{_primaryWeapon_Pointer = selectRandom _primaryWeapon_PointerSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_Pointer;};}; 

			_primaryWeapon_UnderBarrelSlot = getArray (configFile / "CfgWeapons" >> _primaryWeapon >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
			if(count _primaryWeapon_UnderBarrelSlot >= 1)then{_primaryWeapon_UnderBarrel = selectRandom _primaryWeapon_UnderBarrelSlot;
			if(random 10 < 3) then{_this addPrimaryWeaponItem _primaryWeapon_UnderBarrel;};}; 

			
			//________________	add _secondaryWeapon 's compatible attachments	________________

			_secondaryWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _secondaryWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _secondaryWeapon_CowsSlot >= 1)then{_secondaryWeapon_Optic = selectRandom _secondaryWeapon_CowsSlot;
			if(random 10 < 3) then{_this addSecondaryWeaponItem _secondaryWeapon_Optic;};}; 

			_secondaryWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _secondaryWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _secondaryWeapon_PointerSlot >= 1)then{_secondaryWeapon_Pointer = selectRandom _secondaryWeapon_PointerSlot;
			if(random 10 < 3) then{_this addSecondaryWeaponItem _secondaryWeapon_Pointer;};}; 

			
			//________________	add _handgunWeapon's compatible attachments	________________

			_handgunWeapon_MuzzleSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
			if(count _handgunWeapon_MuzzleSlot >= 1)then{_handgunWeapon_Muzzle = selectRandom _handgunWeapon_MuzzleSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Muzzle;};}; 

			_handgunWeapon_CowsSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
			if(count _handgunWeapon_CowsSlot >= 1)then{_handgunWeapon_Optic = selectRandom _handgunWeapon_CowsSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Optic;};}; 

			_handgunWeapon_PointerSlot = getArray (configFile / "CfgWeapons" >> _handgunWeapon >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
			if(count _handgunWeapon_PointerSlot >= 1)then{_handgunWeapon_Pointer = selectRandom _handgunWeapon_PointerSlot;
			if(random 10 < 3) then{_this addHandgunItem _handgunWeapon_Pointer;};}; 

			
			//________________	add _primaryWeapon's mags	________________

			_primaryWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _primaryWeapon / "magazines");
			if(count _primaryWeapon_Magazines_array > 0)then{
				private _primaryWeapon_magazines = selectRandom _primaryWeapon_Magazines_array;
				
				for "_i" from 1 to 2 do{_this addItemToUniform _primaryWeapon_magazines;};
				for "_i" from 1 to 5 do{_this addItemToVest _primaryWeapon_magazines;};
			};

			//________________	add _secondaryWeapon's mags	________________

			_secondaryWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _secondaryWeapon / "magazines");
			if(count _secondaryWeapon_Magazines_array > 0)then{
				private _secondaryWeapon_Magazines = selectRandom _secondaryWeapon_Magazines_array;
				
				if(!(backpack _this isEqualTo ""))then{
					for "_i" from 1 to 5 do{_this addItemTobackpack _secondaryWeapon_Magazines;};
				};
			};

			//________________	add _handgunWeapon's mags	________________

			_handgunWeapon_Magazines_array = getArray (configFile / "CfgWeapons" / _handgunWeapon / "magazines");
			if(count _handgunWeapon_Magazines_array > 0)then{
				private _handgunWeapon_Magazines = selectRandom _handgunWeapon_Magazines_array;
				
				for "_i" from 1 to 2 do{_this addItemToUniform _handgunWeapon_Magazines;};
			};

		};
	
	
		case 3 : {
		
			comment "You must change , this to _this";
			
			
			comment "Exported from Arsenal by [GR]GEORGE F";

			comment "[!] UNIT MUST BE LOCAL [!]";
			if (!local _this) exitWith {};

			comment "Remove existing items";
			removeAllWeapons _this;
			removeAllItems _this;
			removeAllAssignedItems _this;
			removeUniform _this;
			removeVest _this;
			removeBackpack _this;
			removeHeadgear _this;
			removeGoggles _this;

			comment "Add containers";
			_this forceAddUniform "U_B_HeliPilotCoveralls";
			_this addItemToUniform "FirstAidKit";
			_this addItemToUniform "HandGrenade";
			_this addItemToUniform "Chemlight_green";
			_this addItemToUniform "30Rnd_65x39_caseless_green";
			_this addVest "V_TacVestIR_blk";
			_this addItemToVest "Chemlight_green";
			for "_i" from 1 to 2 do {_this addItemToVest "30Rnd_65x39_caseless_green";};
			for "_i" from 1 to 3 do {_this addItemToVest "11Rnd_45ACP_Mag";};
			_this addHeadgear "H_Cap_blk";

			comment "Add weapons";
			_this addWeapon "arifle_Katiba_C_F";
			_this addWeapon "hgun_Pistol_heavy_01_F";
			_this addHandgunItem "optic_MRD";
			_this addWeapon "Rangefinder";

			comment "Add items";
			_this linkItem "ItemMap";
			_this linkItem "ItemCompass";
			_this linkItem "ItemWatch";
			_this linkItem "ItemRadio";

			comment "Set identity";
			[_this,"WhiteHead_09","male05eng"] call BIS_fnc_setIdentity;
		};
	};
};


GF_Respawn_SP_Position = {


	switch (GF_Respawn_SP_Position_Select) do{

		case 1 : {
			//	for random position
			_pos = [] call BIS_fnc_randomPos;
			_this setposASL _pos;
		};
	
		case 2 : {
			//	Create a Marker if you want a certain position 
			_pos = getmarkerPos "respawn";
			_this setposASL _pos;
		};
		
		case 3 : {
			//	select a random marker , copy this inside the mission that you want to suffle the markers 
			_array = selectRandom[    
				"respawn_1",       
				"respawn_2",
				"respawn_3"
            ];		
			
			_pos = getmarkerPos _array;
			_this setposASL _pos;
		};
	};
};


GF_Respawn_SP_Effects = {

	if(isPlayer _this && {local _this}) then{
		
		_this allowDamage false;
		private ["_soundvolume","_musicvolume"];
		_musicvolume = musicvolume;
		_soundvolume = soundvolume;
		1 fadeSound 0.3;
		
		_this spawn{		
			"dynamicBlur" ppEffectEnable true;
			"dynamicBlur" ppEffectAdjust [20];
			"dynamicBlur" ppEffectCommit 0;
			"dynamicBlur" ppEffectAdjust [0.0];
			"dynamicBlur" ppEffectCommit 4;
		};	


		cutText ["", "BLACK OUT", 0.001];
		[1000] call BIS_fnc_bloodEffect;
		cutText ["<t size='2' font= 'EtelkaMonospaceProBold' >You are dead</t>", "BLACK OUT", -1, true, true];

		uisleep 1;
		_this setdamage 0;
		_this spawn GF_Respawn_SP_Loadout;
		_this spawn GF_Respawn_SP_Position;
		uisleep GF_Respawn_SP_time;
		
		2 fadesound _soundvolume;
		2 fademusic _musicvolume;
		cutText ["", "BLACK IN", 3];
		uisleep 3;
		_this allowDamage true;
		_this setCaptive false;
	};
};


GF_Respawn_SP_Loop = {
	
	params ["_unit"];

	if(vehicle _unit != _unit) then{_unit action ["eject", vehicle _unit]};
		_unit spawn GF_Respawn_SP;
			if(damage _unit == 0)then{
				_unit setCaptive true;
				systemchat format ["Respawn :%1  /  Damage :%2",name _unit, damage _unit];
				_unit spawn GF_Respawn_SP_Effects;
			};
};


GF_Respawn_SP = {

params ["_unit"];
	
_unit addEventHandler ["HandleDamage", {
	params ["_unit", "_selection", "_damage", "_source", "_projectile", "_hitIndex", "_instigator", "_hitPoint"];
	
	_selection = _this select 2;
	if(damage _unit + _selection < 1)then{
		_unit allowDamage true; 
	};
	
	if(damage _unit + _selection >= 1)then{
		_damage = 0;
		_unit allowDamage false;
		systemchat format ["HandleDamage %1 / Damage :%2",typeOf _unit,damage _unit];
		_unit removeEventHandler ["HandleDamage",_thisEventHandler];
		_unit spawn GF_Respawn_SP_Loop;
		_damage;
	};	
}];	
};


player spawn GF_Respawn_SP;



if(GF_Respawn_SP_Systemchat_info)then{
	systemchat "GF_Respawn_SP Script initialized";			
};	

if(GF_Respawn_SP_diag_log_info)then{
	diag_log "//________________ GF_Respawn_SP Script initialized ________________";
};

 

 

P6wO7PB.png

UQh4Ih6.png

 

There are so far , settings for :


GF_Respawn_SP_time						= 5;
GF_Respawn_SP_Position_Select			= 3;		//	1 = random position , 2 = position on Marker , 3 = position on random Markers
GF_Respawn_SP_Loadout_Select 			= 2;		//	1 = No change , 2 = Random , 3 = Custom (paste from arsenal)

 

Thanks and have Fun !

HAHA Absolut Amazing ! Thanks GR ! 

  • Thanks 1

Share this post


Link to post
Share on other sites
3 hours ago, Weapon-Fetish said:

HAHA Absolut Amazing ! Thanks GR ! 

 

Thank you very much Weapon-Fetish !

Share this post


Link to post
Share on other sites

Hello there to everyone !

 

I was writing the above revive script but paused it , because i had and still have personal issues to care about !

In the meantime , here is a WIP Vehicle Spawner Script , that is using the BIS Virtual Garage :

 

7 minutes ago, GEORGE FLOROS GR said:

Some big improvement :

  Reveal hidden contents





//________________	Author : GEORGE FLOROS [GR]	___________	20.06.19	_____________ 


/*
________________ GF VSpawner Script - Mod	________________



Please keep the Credits or add them to your Diary

https://community.bistudio.com/wiki/SQF_syntax
Don't try to open this with the simple notepad.
For everything that is with comment  //  in front  or between /*
means that it is disabled , so there is no need to delete the extra lines.

You can open this ex:
with notepad++
https://notepad-plus-plus.org/

and also use the extra pluggins
(this way will be better , it will give also some certain colors to be able to detect ex. problems )
http://www.armaholic.com/page.php?id=8680

or use any other program for editing .

For the Compilation List of my GF Scripts , you can search in:
https://forums.bohemia.net/forums/topic/215850-compilation-list-of-my-gf-scripts/
*/


/*
To use the script add this code to the init field of an object :
	nul = this spawn {waitUntil {!isNil "GF_VSpawner"}; call GF_VSpawner;};
*/


//________________ Settings ________________
//________________ Set true or false  ________________

GF_VSpawner_Systemchat_info				= true;		
GF_VSpawner_Hintsilent_info				= true;
GF_VSpawner_diag_log_info				= true;
GF_VSpawner_Max_distance				= 100;



if(GF_VSpawner_Systemchat_info)then{
	systemchat "GF VSpawner Script initializing";			
};	

if(GF_VSpawner_diag_log_info)then{
	diag_log "//________________ GF VSpawner Script initializing ________________";
};




GF_VSpawner_Closed = {

	_nearestObjects = BIS_fnc_garage_center nearEntities [["Car","Tank","Ship","Air"], 1];
	if(!isNil "_nearestObjects")then{
		_Object = selectrandom _nearestObjects;
		_veh = typeOf _Object;
		_textures = getObjectTextures _Object;
		_animationNames = animationNames _Object;
		{deletevehicle _x}forEach _nearestObjects;
		_position = GF_VSpawner_pos findEmptyPosition [10,GF_VSpawner_Max_distance,_veh];
		_createVehicle = createVehicle [_veh, _position, [], 0, "None"];
	
		if(count _textures > 0)then{
			_count = 0;
			{
				_createVehicle setObjectTextureglobal[_count,_x];
				_count = _count + 1;
			}forEach _textures;
		};
		
		if(count _animationNames > 0)then{
			_animationPhase = [];
			for '_i' from 0 to count _animationNames -1 do{
				_animationPhase pushBack[_animationNames select _i,_Object animationPhase(_animationNames select _i)];
				{_createVehicle animate _x}forEach _animationPhase;
			};
		};
	};
};


[missionNamespace, "garageClosed",{
	[]call GF_VSpawner_Closed;
}]call BIS_fnc_addScriptedEventHandler;


GF_VSpawner	= {

	[_this,[
		"<t size=""1.2"" font=""RobotoCondensedBold"" color=""#FF9933"">" + "Open Spawner",
		{ 
			params ["_target", "_caller", "_actionId", "_arguments"];
	  GF_VSpawner_pos = [getPos _target, 1, GF_VSpawner_Max_distance, 3, 0, 20, 0] call BIS_fnc_findSafePos;
	  BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", GF_VSpawner_pos, [], 0, "CAN_COLLIDE"];
	  ["Open",true] call BIS_fnc_garage;
		},[], 1.5,true,true,"","true",8,false,"",""
	]]remoteExec["addAction"];
};


if(GF_VSpawner_Systemchat_info)then{
	systemchat "GF VSpawner Script initialized";			
};	

if(GF_VSpawner_diag_log_info)then{
	diag_log "//________________ GF VSpawner Script initialized ________________";
};

+ test mission :

+GF_VSpawner_Script.Stratis.zip

Expires in: 29 days 20:55:08   |   Size: 7.5 KB   | 21.06.19

Thanks and Have Fun !

  • Like 2

Share this post


Link to post
Share on other sites

Hello there to Everyone !

 

This is the WIP GF_Zone_Spawner , just add the zones in the editor and the enemies will spawn and despawn in a certain distance.

The spawner and script are 100% ready and on right now just for the example of this , it will spawn only a helicopter type with full crew and infantry to all cargo seats , patroling.

 

+GF_Zone_Spawner.Stratis.zip

Expires in: 29 days 20:59:36   |   Size: 16.5 KB   | 24.07.19

 

Once i will have some real time i 'll check about changing complete the population spawner scripts.

Thanks !

 

  • Like 2
  • Thanks 2

Share this post


Link to post
Share on other sites

I just remember that i need to add a distance from the players,  so that it won't spawn again ( if the player is close ) so i'm going to add this as soon as possible !

Share this post


Link to post
Share on other sites

Thanks for all the scripts it has become one of my default script pack for messing in editor.

  • Thanks 1

Share this post


Link to post
Share on other sites
5 hours ago, _Unnamed_ said:

Thanks

 

Thank you very much _Unnamed_ and welcome also to Bis Forums !

 

I'm here if i can help for anything you might need !

Have fun !  :thumbs-up:

  • Thanks 1

Share this post


Link to post
Share on other sites
49 minutes ago, GEORGE FLOROS GR said:

 

Thank you very much _Unnamed_ and welcome also to Bis Forums !

 

I'm here if i can help for anything you might need !

Have fun !  :thumbs-up:

 

Thanks again, I'll do !

  • Like 1

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

×