Comandos del Arma 3 más usados

Comandos del Arma 3 más usados en esta lección:

GrpAlpha=group this;

Si se pone esta línea en el campo init del líder de un grupo se definirá su grupo como GrpAlpha.

deletevehicle NombreObjeto:

Se elimina el vehículo llamado NombreObjeto.

NombreDelGrupo move position destino;

El grupo llamado NombreDelGrupo va a la posición destino.

grpmalo8 reveal _enemigosoldier;

El grupo llamado grpmalo8, un grupo revela que existe el enemigo _enemigosoldier;

grpmalo8 setSpeedMode “FULL”;

El grupo llamado grpmalo8 se mueve a la velocidad máxima posible.

NombreAI addItemToVest “HandGrenade”;

A la IA con nombre NombreAI se le añade una granada de fragmentación en su antibalas.

NombreAI addItemToUniform “SmokeShell”;

A la IA con nombre NombreAI se le añade una granada de humo en su
uniforme de guerra.

_x linkItem "ItemMap";
_x linkItem "ItemCompass";
_x linkItem "ItemWatch";
_x linkItem "ItemRadio";

Se añaden varios utensilios a la IA _x.

_x addWeapon "arifle_MXM_F";
Añade a la IA un arma llamada
arifle_MXM_F
NombreObjeto
setpos _posicion;
El objeto cuyo nombre es NombreObjeto se teletransporta a la posición
_posicion.
sleep 100;
Hay una parada de 100 segundos hasta la siguiente instrucción.

this disableAI “MOVE”;

La ia está inhabilitada para moverse. No se moverá si se pone esa línea en su campo init.

 

this setCaptive true;

La ia está no será reconocida como enemiga por los demás.

[this] join grpnull;

La IA correspondiente a la variable this saldrá de su grup actual.



[_x] join leader general;

Hacer sonar un sonido ya definido en description.ext

playSound "sound1";

 

La IA correspondiente a la variable _x se hará miembro del grupo de la IA llamada general que será el líder.

this allowDamage false;

 

 

 

Si se añade en el init del slot player del editor, el enemigo no puede matarte y sirve también para testea las misiones.

 

Hint “ Aquí el capitán, tenemos tropas enemigas acercándonos a nuestra posición por el flanco izquierdo. Tomen posiciones defensivas. Cambio. “

 

Sirve para escribir un texto en la parte superior derecha que se mantendrá unos segundos hasta desaparecer.

 

Hintc “ Acuérdate de ponerte los tapones “

 

 

Sirve para crear una ventana con ese mensaje que el jugador debe cerrar interaccionando.

 

_nombre=player;

hint format [“Bienvenido a la misión jugador : %1″,_nombre];

 

Sirve para crear mensajes con un formato adecuado abierto al uso de variables locales o públicas.

 

 

_soldier switchmove “AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDl”;

 

Sirve para hacer una animación para cualquier IA.

 

 

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

 

Sirve para forzar el disparo al soldado con su arma actual y su modo de disparo actual designado por la variable local _soldier.

 

 

_soldier dotarget _enemigosoldier;

 

 

Sirve para hacer que el objeto designado por la variable local _soldier apunte con su arma al objeto designado por la variable _enemigosoldier

 

_soldier dowatch _enemigosoldier;

 

 

Sirve para hacer que la IA designada por la variable local _soldier apunte mire hacia la posición de la IA _enemigosoldier

 

_c attachto [camara1,[-2,-5,5]];

Sirve para pegar un objeto a otro. Por ejemplo la cámara _c creada en una presentación se pega a la lógica cámara1 y la seguirá si ésta se mueve.

Condiciones necesarias para introducir en los triggers

1.Condición para el trigger saber si el jugador llamado h1 ha llegado y vivo a una posición abarcada por un trigger. Hay que añadir en el mismo trigger esta condición

alive h1 && h1 in thisList

Condición para controlar la velocidad del vehículo llamado coche1

speed coche1 > 55

3. Condición para el trigger saber si el jugador man1 ha llegado y vivo el una posición abarcada por un trigger

isplayer Bob;

3. Para comprobar el nivel de daño de una unidad llamada jugador1.

getdammage jugador1 > 0.7;

Para comprobar que un cierto número de unidades están dentro de un vehículo se usa la siguiente condición en el trigger.

 

Comprueba que el vehículo llamado coche1 que hay 10 tripulantes

 

count crew coche1== 10;

 

Comprueba que hay 10 tripulantes en el vehículo llamado coche1

 

count crew coche1 > 2;

Para comprobar la distancia entre dos objetos o dos unidades o dos jugadores, se usa la condición siguiente:

Bob distance Nick < 10;

Condición si son las 15 horas o 3 p.m del día o más:

daytime >=15;

Comprobar si un grupo está dentro de un vehículo:

{_x in NombreVehículo} count units NombreGrupo == count units  NombreGrupo

Comprobar si un grupo está fuera de un vehículo:

{_x in  NombreVehículo} count units NombreGrupo == 0

Comprobar si una IA o jugador está dentro de un vehículo:

NombreDelJugador in NombreDelVehiculo;

Comprobar si un objeto del escenario se destruye :

Crear una lógica llamada torre pegada al objeto

Algunos trucos/códigos sencillos que pueden ayudar y que se pueden usar en activadores o en otros scripts

 

1.Para introducir un grupo dentro de un vehículo

{_x moveInCargo NombreDelVehiculo} forEach units group NombreDelGrupo;

2. Muchas veces necesitamos manipular grupos de IAS o de jugadores por sus nombres. Para identificar el grupo en el editor, en el campo init del líder se introduce la siguiente línea:

groupName = group this;


3. Queremos borrar un vehículo para optimizar una misión , recordar que la misión cuanto menos IA mejor así que inserciones de helicópteros , u otros vehículos, limpieza de adornos de la misión....

{deleteVehicle _x} forEach crew NombreDelVehiculo ; deletevehicle NombreDelVehiculo;


4. Cómo hacer que una IA dispare con un antitanque a un objetivo llamado NombreObjetivo


NombreEnemigo doTarget NombreObjetivo;
NombreEnemigo selectWeapon secondaryWeapon NombreObjetivo;
NombreEnemigo doFire NombreObjetivo;

 

5.Cómo hacer que un helicóptero llamado h1 tenga las luces encendidas

 


null=[] spawn { while {true} do { driver h1 action [“lightOn”, h1]; sleep 0.01};};

6. Fuel infinit para un objeto, en su campo init añadir este código:

 

nul = this spawn { waitUntil { if !(alive _this) exitWith {}; if (fuel _this < 0.25) then { _this setFuel 1 }; false } };

7. Queremos que un vehículo explosione en el paso de una zona concreta por los jugadores:

 

Se crea un trigger por presencia de jugadores y en el lado del servidor se añade la línea en la casilla de activación

 

NombreVehiculo setdammage 1;

8. Poner texturas en las banderas y en los carteles usando archivos .jpg en nuestras misiones

Si llamamos al objeto bandera flag2 y queremos poner una bandera talibán

flag2 setFlagTexture “Img\taliban.jpg”;

Si llamamos al objeto cartel flag2 usamos el comando y queremos poner una bandera talibán

flag2 setObjectTextureGlobal [0,”Img\taliban.jpg”];

importante hacerlo en el lado del servidor por lo que se puede poner en archivo init.sqf de la misión lo siguiente

if (isserver ) then

{

flag2 setFlagTexture “Img\taliban.jpg”;

flag2 setObjectTextureGlobal [0,”Img\taliban.jpg”];

};

  1. Queremos que una IA tire una granada de humo :

// hanle=[] execvm “tirarGranadaHumo.sqf”

if (!isServer) exitWith {};

private [“_tirargranadahumo”,”_meterseenedificios”,”_soldier”,”_enemigo”,”_ponercargasenvehiculos”,”_enemigosoldier”,”_nbuilding”,”_grp”,”_man”,”_dist1″,”_x”,”_man3″,”_number36″,”_number37″, “_number32″,”_cubierta”,”_cual”,”_s”,”_man4″];

_soldier = _this select 0;

_enemigosoldier= _soldier findNearestEnemy (position _soldier);

if (alive _soldier) then

{

_soldier addmagazine “SmokeShell”;

_soldier dotarget _enemigosoldier;

_npc = _soldier;

_target = _enemigosoldier;

_height = 1;

//If (count _this > 2) then {_height = _this select 2};

If (typename _target == “ARRAY”) then

{

_target = [(_this select 1) select 0,(_this select 1) select 1,_height];

}

else

{

_target = getposATL _target;

_target set [2,_height];

};

_npc doWatch _target;

_dir = [getposATL _npc,_target] call BIS_fnc_DirTo;

_npc setDir _dir;

sleep 0.01;

_soldier selectWeapon “throw”;

_soldier Fire [“SmokeShellMuzzle”, “SmokeShellMuzzle”, “SmokeShell”];

};

  1. Queremos que una IA tire una granada de fragmentación:

 

// hanle=[] execvm “tirarGranadaFragmentacion.sqf”

if (!isServer) exitWith {};

private [“_tirargranadahumo”,”_meterseenedificios”,”_soldier”,”_enemigo”,”_ponercargasenvehiculos”,”_enemigosoldier”,”_nbuilding”,”_grp”,”_man”,”_dist1″,”_x”,”_man3″,”_number36″,”_number37″, “_number32″,”_cubierta”,”_cual”,”_s”,”_man4″];

_soldier = _this select 0;

_enemigosoldier= _soldier findNearestEnemy (position _soldier);

_cansee = [_soldier, “VIEW”] checkVisibility [eyePos _soldier, eyePos _enemigosoldier];

if (_cansee > 0.5) then

{

if (alive _soldier) then

{

_soldier addmagazine “handgrenade”;

_soldier dotarget _enemigosoldier;

_npc = _soldier;

_target = _enemigosoldier;

_height = 1;

If (count _this > 2) then {_height = _this select 2};

If (typename _target == “ARRAY”) then

{

_target = [(_this select 1) select 0,(_this select 1) select 1,_height];

}

else

{

_target = getposATL _target;

_target set [2,_height];

};

_npc doWatch _target;

_dir = [getposATL _npc,_target] call BIS_fnc_DirTo;

_npc setDir _dir;

sleep 0.01;

SLEEP 0.1;

_soldier selectWeapon “throw”;

_soldier Fire [“handgrenadeMuzzle”, “handgrenadeMuzzle”, “handgrenade”];

};

};

9. Hacer que una IA haga volteretas laterales mientras dispara:

_cansee = [_soldier, “VIEW”] checkVisibility [eyePos _soldier, eyePos _enemigosoldier];

if (_cansee > 0.5) then

{

//hint “animacion”;

_npc = _soldier;

_target = _enemigosoldier;

_height = 1;

//If (count _this > 2) then {_height = _this select 2};

If (typename _target == “ARRAY”) then

{

_target = [(_this select 1) select 0,(_this select 1) select 1,_height];

}

else

{

_target = getposATL _target;

_target set [2,_height];

};

_npc doWatch _target;

_dir = [getposATL _npc,_target] call BIS_fnc_DirTo;

_npc setDir _dir;

if ((random 1)<=.50) then {

_soldier dotarget _enemigosoldier;

_soldier dowatch _enemigosoldier;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier switchmove “AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDl”; //croqueta

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

} else {

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier switchmove “AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDr”; //croqueta

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

sleep 0.1;

_soldier fire [currentWeapon _soldier, currentWeaponMode _soldier];

};

};

 

90,759 total views, 66 views today

91032total visits,78visits today