Jump to content

Recommended Posts

(VERSION EN ESPAÑOL)

 

Hola chicos! Mi nombre es Omar y soy de Argentina.  Este es mi primer posteo, así que desde ya pido disculpas por mi sintaxis y sobre todo por mi inglés que es pobre.

1) Quiero crear un código que se pueda usar en cualquier mapa; no importa si es Stratis, Takistan, Altis, Chernarus, o cualquier otro mapa, oficial y no oficial.

2) Que sea SOLO CODIGO. No quiero que haya ningún elemento u objetos en el mapa en el momento de la edición, a excepción de nuestro personaje.

3) Este código que estará en un archivo SQF debe poder leer todo el mapa y encontrar solo las locaciones "NameVillage", "NameCity" y "Name City Capital", guardando en un Vector todas estas locaciones.

4) Con cada locación que vaya encontrando, deberá agregar en ella, un Gatillo y un Marcador (ambos dos en el mismo lugar, en la zona cero de esa locación).

5) Que ese Gatillo, se active cuando cualquier jugador entre en la zona del gatillo.

6) Que al activarse ese Gatillo, llame a otro archivo SQF. Aquí les muestro lo que llegué a hacer, pero quedo trabado en la parte de activación del gatillo:

 

Hasta aquí llegué.  Creo que hice todo bien, pero se me escapa algo, dado que, cuando ejecuto el mapa y entro a un pueblo no se activa ningún gatillo y eso me frustra un poco.  Desde ya agradezco mucho por la posible ayuda que pueda recibir de ustedes. Gracias.

 

 

(MY POOR ENGLISH VERSION)

 

Hello guys! My name is Omar and I am from Argentina. This is my first post, so from now on I apologize for my syntax and especially for my poor English.

1) I want to create a code that can be used on any map; it doesn't matter if it's Stratis, Takistan, Altis, Chernarus, or any other map, official and unofficial.

2) Make it ONLY CODE. I don't want any items or objects to be on the map at the time of editing, except for our character.

3) This code that will be in an SQF file must be able to read the entire map and find only the locations "NameVillage", "NameCity" and "Name City Capital", saving all these locations in a Vector.

4) With each location you find, you must add a Trigger and a Marker to it (both in the same place, at ground zero of that location).

5) That Trigger is activated when any player enters the trigger zone.

6) That when that Trigger is activated, call another SQF file. Here I show you what I got to do, but I get stuck in the trigger activation part:

 

I am done. I think I did everything right, but something escapes me, since when I run the map and enter a town no trigger is activated and that frustrates me a bit. I already thank you very much for the possible help I can receive from you. Thank you.

 

	_All_Locations = nearestLocations [getPos player, ["NameVillage","NameCity","NameCityCapital"], 30000];
	
	_Locations_Count = (count _All_Locations);
	
	_Counter = -1;	// An Array start with cero.
	
		for "_i" from 1 to (_Locations_Count) do {
			_Counter = (_Counter + 1);
			_Location = _All_Locations select _Counter;

			// Triggers creation
			_trigger = createTrigger ["EmptyDetector", getpos _Location];
			_trigger setTriggerArea [300, 300, 0, false];
			_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];
			
			// Markers creation
			_createdMarker = [str(_Location), _trigger] call BIS_fnc_markerToTrigger;
			_createdMarker setMarkerShape "ELLIPSE";
			_createdMarker setMarkerSize [300,300];
			_createdMarker setMarkerColor "ColorOrange";
			_createdMarker setMarkerBrush "SolidFull";
			_createdMarker setMarkerAlpha 0.5;	

			if (triggerActivated _trigger) then {

				hintc "TRIGGER ACTIVATED";
				
				null = [] execVM "Mi_Loot_Init.sqf";
			};
	};

 

 

 

 

 

 

 

 

 

Share this post


Link to post
Share on other sites
_trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'Trigger Activated'; null = [] execVM 'Mi_Loot_Init.sqf';", ""];

Untested...

When you're are using :

1 hour ago, orb1975 said:

if (triggerActivated _trigger) then {

...your script is just running through the code and _trigger is not activated yet making that part useless. Use setTriggerStatements as above.

Share this post


Link to post
Share on other sites
7 minutes ago, RCA3 said:

_trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'Trigger Activated'; null = [] execVM 'Mi_Loot_Init.sqf';", ""];

Untested...

When you're are using :

...your script is just running through the code and _trigger is not activated yet making that part useless. Use setTriggerStatements as above.

 

Thanks dude... this is the new code with your modification, and when i enter in the zone, nothign happend.... no hint, no call, no nothing.  Can u test this in your arma?  Im in Malden map in Le Port Town.  Thanks.

 


	_All_Locations = nearestLocations [getPos player, ["NameVillage","NameCity","NameCityCapital"], 30000];
	
	_Locations_Count = (count _All_Locations);
	
	_Counter = -1;	// An Array start with cero.
	
		for "_i" from 1 to (_Locations_Count) do {
			_Counter = (_Counter + 1);
			_Location = _All_Locations select _Counter;

			// Triggers creation
			_trigger = createTrigger ["EmptyDetector", getpos _Location];
			_trigger setTriggerArea [300, 300, 0, false];
			_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];
			
			if (triggerActivated _trigger) then {

				_trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'Trigger Activated'; null = [] execVM 'Mi_Loot_Init.sqf';", ""]

				hint "TRIGGER ACTIVATED";
			};

			// Markers creation
			_createdMarker = [str(_Location), _trigger] call BIS_fnc_markerToTrigger;
			_createdMarker setMarkerShape "ELLIPSE";
			_createdMarker setMarkerSize [300,300];
			_createdMarker setMarkerColor "ColorOrange";
			_createdMarker setMarkerBrush "SolidFull";
			_createdMarker setMarkerAlpha 0.5;	
	};

 

Edited by orb1975
ortography

Share this post


Link to post
Share on other sites

You misunderstood me:

			// Triggers creation
			_trigger = createTrigger ["EmptyDetector", getpos _Location];
			_trigger setTriggerArea [300, 300, 0, false];
			_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];
			_trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'Trigger Activated'; null = [] execVM 'Mi_Loot_Init.sqf';", ""]

 

58 minutes ago, orb1975 said:

if (triggerActivated _trigger) then {

This will never fire. Only at script initialization, never on trigger activation. Delete that.

Share this post


Link to post
Share on other sites

Sorry about that.  U are the Man!!!! its working dude! THANKS!!!!

  • Like 1

Share this post


Link to post
Share on other sites

There are a couple of handy BI functions that make trigger/marker based on marker/trigger. eg.

// Triggers creation
_trigger = createTrigger ["EmptyDetector", getpos _Location];
_trigger setTriggerArea [300, 300, 0, false];
_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];
_trigger setTriggerStatements[ "this", "", "" ]; //Replace activation to script call


// Markers creation
//Create marker based on trigger size and shape
_createdMarker = [ str _location, _trigger ] call BIS_fnc_markerToTrigger;
_createdMarker setMarkerColor "ColorOrange";
_createdMarker setMarkerBrush "SolidFull";
_createdMarker setMarkerAlpha 0.5;

And the opposite BIS_fnc_triggerToMarker

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

This is my code now.  Can U show me, your example with this code? Thanks

// Creamos los Triggers
  _trigger = createTrigger ["EmptyDetector", getpos _Location];
  _trigger setTriggerArea [300, 300, 0, false];
  _trigger setTriggerActivation ["ANYPLAYER", "PRESENT", false];
  _trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'ESTAS ENTRANDO EN ZONA DE LOOTEO'; null = [] execVM 'Mi_Loot_Init.sqf';", ""];

// Creamos los Marcadores
  _createdMarker = [str(_Location), _trigger] call BIS_fnc_markerToTrigger;
  _createdMarker setMarkerShape "ELLIPSE";
  _createdMarker setMarkerSize [300,300];
  _createdMarker setMarkerColor "ColorOrange";
  _createdMarker setMarkerBrush "SolidFull";
  _createdMarker setMarkerAlpha 0.5;

Thanks dude...

Edited by orb1975
mistake in the write

Share this post


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

_createdMarker setMarkerShape "ELLIPSE";

_createdMarker setMarkerSize [300,300];

Just remove these two lines. The function handles size and shape for you by making the marker the same as the trigger.

Share this post


Link to post
Share on other sites
1 minute ago, Larrow said:

Just remove these two lines. The function handles size and shape for you by making the marker the same as the trigger.

Thanks abaut that!

 

1).. in your last post you put this

_trigger setTriggerStatements[ "this", "", "" ]; //Replace activation to script call

i dont know how can i do it.

 

2) Can u teach me, how can i put a desactivation scritp (example: when the player leave the trigger area).  Thanks

Share this post


Link to post
Share on other sites

The Biki is your friend!

setTriggerStatements
 

Quote

_trigger setTriggerStatements[ "this", " <ACTIVATION CODE GOES HERE> ", " <DEACTIVATION CODE GOES HERE> " ];

 

  • Thanks 1

Share this post


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

The Biki is your friend!

setTriggerStatements
 

 

Thats the way? Isnt work for me.  What is wrong whit this? I cant make it happend with the desactivation part...

 

_trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'ESTAS ENTRANDO EN ZONA DE LOOTEO'; null = [] execVM 'Mi_Loot_Init.sqf'", "hint 'ESTAS SALIENDO'"];

 

 

Share this post


Link to post
Share on other sites

Your trigger must be repeatable, I think.

_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];

If you don't want it to repeat, you can tack this on the end of the deactivation code:

 thisTrigger enableSimulation false;

 

  • Thanks 1

Share this post


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

Thanks for your help, i will prove this... I'll tell you later.

 

Share this post


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

Your trigger must be repeatable, I think.


_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];

If you don't want it to repeat, you can tack this on the end of the deactivation code:


 thisTrigger enableSimulation false;

 

Dude..this is my code (dont work)... i need to configurate this line:

 

_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];

_trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'you are in'; null = [] execVM 'Mi_Loot_Init.sqf'", "hint 'you are out'"];

 

Isnt working (the desactivation red part ), and i dont know why...

Share this post


Link to post
Share on other sites

Working fine here. Share your full code.

Share this post


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

This is the code:


_trigger = createTrigger ["EmptyDetector", getpos _Locacion];
_trigger setTriggerArea [300, 300, 0, false];
_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];
_trigger setTriggerStatements ["this", "[west, 'HQ'] sideChat 'you are in'; null = [] execVM 'Mi_Loot_Init.sqf'", "hint 'you are out'; {deletevehicle _x} foreach units _Patrulla;"];

 

 

the ({deletevehicle _x} foreach units _Patrulla;)  part is not working for me dude.... i dont know what happend.

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

×