Script para matar de menos tiros a la IA

Foro dedicado a los Scripts en Arma III

Autor del hilo
Mayor
Nuevo usuario
Nuevo usuario
Mensajes: 43
Registrado: 16 Oct 2013 18:34
Clan: CGH

#13483

02 May 2014 18:46

Bueno puesto que el calibre 5.56 de nuestro amado g36 no le hace nada la IA, hemos estado barajando opciones y mirando por ahi como hacerle mas daño a la IA. Pues bien resulta que el Patrol OPs 3, tiene una opcion para ello buscando en su codigo encontre lo que prometia ser la solucion.

Código: Seleccionar todo

//Añadida por mi
PO3_param_ai_easyKill=true;

//Codigo Bruto
private["_unit"];

if !(PO3_param_ai_easyKill) exitWith {};

_units = _this;
if(typeName _units != typeName []) then { _units = [_units] };

{
    _x removeAllEventHandlers "HandleDamage";
    _x addEventHandler ["HandleDamage",{
	   _unit	    = _this select 0;
	   _damage = (_this select 2)*2.25;
	   _unit setSkill 0.3;
	   _damage
    }];
}forEach _units;
Creo que lo que hace es multiplicar el daño por 2.25, puesto esto en un init, la verdad que no hace nada, a ver si alguno puede ayudarnos o decirnos como hacer esto de otra forma.

Un saludo



Avatar de Usuario

Vulcan
Desarrollador FFAA MOD
Desarrollador FFAA MOD
Mensajes: 426
Registrado: 01 Ene 1970 01:00
Clan: www.arma3.es

#13487

02 May 2014 19:04

gracias por el post Mayor,



Avatar de Usuario

joak
Miembro
Miembro
Mensajes: 99
Registrado: 05 Jun 2012 15:11
Clan: Grupo Rhino Arma

#13488

02 May 2014 21:35

No entiendo mucho de script, pero lo que te puedo decir es que el EOS te deja tocar el daño para la IA en el archivo "OpenMe.sqf"

VictoryColor="colorGreen"; // Colour of marker after completion
hostileColor="colorRed"; // Default colour when enemies active
bastionColor="colorOrange"; // Colour for bastion marker
EOS_DAMAGE_MULTIPLIER=1.3; // 1 is default
EOS_KILLCOUNTER=false; // Counts killed units


Ese parámetro esta enlazado con el archivo "setSkill.sqf".

No sé si se podrá sacar sin mas y adaptarlo a lo que tu quieres.


Imagen

Avatar de Usuario

PrienU24
Nuevo usuario
Nuevo usuario
Mensajes: 27
Registrado: 05 Ene 2012 19:09

#13493

02 May 2014 23:40

Sí, yo he usado el EOS y se nota bastante cuando la IA lucha contra nuestras FFAA.




Autor del hilo
Mayor
Nuevo usuario
Nuevo usuario
Mensajes: 43
Registrado: 16 Oct 2013 18:34
Clan: CGH

#13536

05 May 2014 11:13

Gracias a los dos, de moemnto creo tiraremos con el EOS, cuando tenga mas tiempo a ver si reciclo algo de esos scripts para usarlo en cualquier msiion



Avatar de Usuario

Ivnat
Nuevo usuario
Nuevo usuario
Mensajes: 7
Registrado: 05 May 2014 00:52
Clan: 8ª BC

#13542

05 May 2014 14:59

Por si sirviera de documentación, probablemente en el config.cpp de este addon haya alguna pista. Nosotros lo usamos para el NATO/Spetsnaz weapons y podemos tumbar de dos disparos a tropas de la OTAN con chaleco (el platecarrier sigue necesitando unos 4 disparos). Quizá pueda ayudar para adaptarlo a los G36.

Además, aunque no lo hemos probado, en el propio enlace viene una explicación sobre la configuración. Parece ser posible añadir los classnames de la munición y ajustar los valores.



http://www.armaholic.com/page.php?id=24204



Avatar de Usuario

vkcrudo
Miembro
Miembro
Mensajes: 110
Registrado: 05 Abr 2012 15:13
Clan: VIKINGOS

#13552

05 May 2014 20:37

Mayor escribió:Bueno puesto que el calibre 5.56 de nuestro amado g36 no le hace nada la IA, hemos estado barajando opciones y mirando por ahi como hacerle mas daño a la IA. Pues bien resulta que el Patrol OPs 3, tiene una opcion para ello buscando en su codigo encontre lo que prometia ser la solucion.

Código: Seleccionar todo

//Añadida por mi
PO3_param_ai_easyKill=true;

//Codigo Bruto
private["_unit"];

if !(PO3_param_ai_easyKill) exitWith {};

_units = _this;
if(typeName _units != typeName []) then { _units = [_units] };

{
    _x removeAllEventHandlers "HandleDamage";
    _x addEventHandler ["HandleDamage",{
	   _unit	    = _this select 0;
	   _damage = (_this select 2)*2.25;
	   _unit setSkill 0.3;
	   _damage
    }];
}forEach _units;
Creo que lo que hace es multiplicar el daño por 2.25, puesto esto en un init, la verdad que no hace nada, a ver si alguno puede ayudarnos o decirnos como hacer esto de otra forma.

Un saludo
Prueba poner esto en el init del enemigo

Código: Seleccionar todo

this addEventHandler ["HandleDamage",{_damage = 1.3;_damage}];
o en el script de spawneo para la IA:

Código: Seleccionar todo

_unit addEventHandler ["HandleDamage",{_damage = 1.3;_damage}];
ó en el init de la misión:
ejemp. si el enemigo es Opfor...

Código: Seleccionar todo

{
if (side _x == east) then
	{
		_x addEventHandler ["HandleDamage",{_damage = 1.3;_damage}];
	};
} foreach (allUnits); 
si es blufor cambia east por west o guer si fuesen los independientes:


el 1.3 es que se aumenta el daño a esas unidades en un 30 %, eso ya probando porque depende de gustos y según el bando y mods.


¿que pasa cuando no hay perdón?
luchas sin compasión, ni retirada ni rendición



Avatar de Usuario

Vulcan
Desarrollador FFAA MOD
Desarrollador FFAA MOD
Mensajes: 426
Registrado: 01 Ene 1970 01:00
Clan: www.arma3.es

#13560

05 May 2014 22:43

gracias Crudo, ya lo habías publicado hace tiempo me parece recordar



Avatar de Usuario

vkcrudo
Miembro
Miembro
Mensajes: 110
Registrado: 05 Abr 2012 15:13
Clan: VIKINGOS

#13569

06 May 2014 11:33

Vulcan escribió:gracias Crudo, ya lo habías publicado hace tiempo me parece recordar
De nada!!! Si para el campeonato creo!!! Venga que os pillamos!!!!


Sent from my iPhone using Tapatalk.


¿que pasa cuando no hay perdón?
luchas sin compasión, ni retirada ni rendición




Barbolani
Miembro
Miembro
Mensajes: 77
Registrado: 01 Nov 2013 11:42

#14405

28 Jul 2014 12:05

Esto que planteáis NO debería funcionar.

Primero: tenéis que asignar a una variable local al eventhandler el daño recibido, en el caso de "HandleDamage" es _this select 2;

Por ejemplo: _damage = _this select 2; _damage = _damage * 0.5; //con eso sacamos un 50%

Y ahora tenemos que aplicarlo al actual estado de salud del soldado herido, que en este EH es _this select 0;
_unit = _this select 0;//ya tenemos el soldado
_actual = damage _unit;//tenemos el valor de daños que tiene ahora;
_actual = _actual + _damage;// lo incrementamos en el factor que hemos calculado antes
_unit setDamage _actual;//y ahora le hacemos ese daño

Segundo: poner una variable al final de algo como hacéis con el _damage del final del EH en vuestro script lo peta, eso es de funciones, un EH no es una función, no quieres recibir el valor de una función, quieres dañar más al soldado.

Entonces, esto debería funcionar más menos así:

{if (side _x == EAST) then {_x addEventHandler ["HandleDamage",{_unit = _this select 0; _damage = _this select 2;_damage = _damage * 0.5;_actual = damage _unit; _actual = _actual + _damage; _unit setDamage _actual}]} forEach allUnits;

Estoy en la ofi, con lo que no os puedo hacer un script bien bien, pero por ahí van los tiros....



Responder Tema anteriorTema siguiente
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje

Volver a “Scripting”

  • Información
  • ¿Quién está conectado?

    Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado