Borrar IA cuando está lejos de los jugadores

Sección para misiones y edición ArmA III

Moderador: C. Misiones & Noticias

Avatar de Usuario
<A2>Dark Darius
Soldado A2
Soldado A2
Mensajes: 366
Registrado: 10 Jun 2014, 23:06

Borrar IA cuando está lejos de los jugadores

Mensaje por <A2>Dark Darius »

Hola gente, aquí les planteo un script que elimina a las IAs que están a cierta distancia de los jugadores (muy lejos por ejemplo). Lo podéis modificar como quieran, la idea es evitar IAs dando vueltas por el mapa y que si ningún jugador esté cerca para matarlas, pues la misión necesita menos cpu y los fps del servidor y los jugadores será más optimizados.

"deleteAI.sqf"


https://mega.nz/#!ZplATKDA!skcYiQXq1v5V ... hzZRIGVUqA

Código: Seleccionar todo

/*

**** --- null = [this] execVM "deleteAI.sqf"; by Dark Darius

*///***************************************** deleteAI.sqf ********************************************************

private["_ia"]; //- la variable "_ia" es local para evitar problemas con otros scripts que puedan usar la misma variable

_ia = _this select 0; 	//- la ia es seleccionada

while {alive _ia} do { 	//--bucle while será true hasta que la ia seleccionada muera

	{
		if (isPlayer _x && alive _x) then { //-si en la lista de jugadores hay un jugador y está vivo, se ejecuta el siguiente código
		
			if ((_x distance _ia) > 5000) then { //- si la distancia de la ia y el jugador de la lista es mayor a 5000 metros entonces será borrada

				deleteVehicle _ia; //- borra la ia
            };
        };
		
    } forEach playableUnits; //- comando que ejecuta en cada jugador de la lista de jugadores el código, se ejecuta en orden del primero al último de la lista

	sleep 60; 	//- desfase de cada vuelta del bucle while para evitar saturar la memoria del servidor y los clientes

};

*** inconvenientes del script ***

Estoy usando la lista array de playableUnits, esto significa que el ejecutador irá chequeando del jugador en la lista numero uno hasta el último si este jugador está a la distancia indicada de la IA. Si el jugador de la lista número uno está a más de la distancia y el último jugador de la lista del playableUnits está a menos distancia indicada, pues a ese jugador se le va a desaparecer en los morros. XD

No se me ocurre otra idea para evitar eso, pero bueno, las posibilidades de que ocurra son bastante bajas, estoy abierto a sugerencias.

Saludos a todos y que les sirva de provecho.

:rifles:
Imagen

Responder