templo perdido 3c ai cómo usarlo

Lo transferí de esta publicación en http://bbs.wow8.org/thread-152120-1-1.html que es muy detallada, puedes echarle un vistazo.

★ 1★programa principal

Shingo Jass Highlighter 0.41

la función principal no toma nada y no devuelve nada

set ai_player=Player(GetAiPlayer())

establecer start_loc=GetStartLocationLoc(GetPlayerStartLocation(Player(GetAiPlayer()-10)))

si GetPlayerController(Player(GetAiPlayer()-10))==MAP_CONTROL_COMPUTER entonces

set ally =true

endif

call SetMeleeAI() //Comienza la batalla contra la IA

call SetDefendPlayer(true) //Establece la defensa de la unidad al atacar

call SetHeroesBuyItems(true) //Configurar héroes para que compren artículos automáticamente

call SetHeroesFlee(true) //Configurar héroes para que huyan automáticamente cuando su salud sea baja

call SetHeroesTakeItems(true) //Configurar que los héroes recojan objetos automáticamente

call SetIgnoreInjured(true) //Configurar unidades para que ignoren el daño (la sangre roja no correrá automáticamente durante el combate)

call SetPeonsRepair(true) //Configurar a los agricultores para que reparen automáticamente

call SetRandomPaths(true) //Establecer una ruta aleatoria (se estima que es una ruta aleatoria para atacar y escapar)

call SetSmartArtillery(true) //Establece un ataque de artillería inteligente. (Si estás demasiado cerca, ¿te alejarás para atacar?)

call SetTargetHeroes(true) //Establece el objetivo del héroe.

(¿Es el objetivo principal?)

call SetUnitsFlee(true) //Configura la unidad para escapar

call SetWatchMegaTargets(true) //Comienza a luchar contra la IA

call SetCaptainChanges (true) // Establece la unidad de monitoreo (primaria).

call CreateCaptains() // Crea un capitán (como un héroe liderando soldados)

call StartThread(función attack_loop) // Inicia el hilo y ejecuta (función attack_loop)

llamar a StartThread(función check_hp) // Iniciar hilo, ejecutar (función check_hp)

endfunction

★2★Variables globales

Shingo Jass Highlighter 0.41

globals

matriz de unidades aihero //Establece la unidad de héroe

entero hero_num=0 //Se utiliza para calcular el número de héroes

group udg_g= CreateGroup() //Se utiliza para registrar todas las unidades de jugadores de IA

boolean Flee=false //Establece si huir

boolean FinishMF=false //Establece si to MF

boolean attack_enemy=false //Establece si atacar al enemigo

boolean ally=false //Establece si ataca al aliado

real ratio= 1 //radio es un número entero utilizado para determinar el índice de salud

integer count=0 //Registra los segundos cuando comienza el juego

ubicación start_loc //El lugar donde comienza el jugador

endglobals

★3 ★Programa de funciones

Shingo Jass Highlighter 0.41

la función setup_force no toma nada y no devuelve nada //Los jugadores de IA comienzan a buscar para héroes con salud superior a 15 que puedan atacar para ingresar al grupo de ataque

unidad local u=null

entero local i=1

llame a RemoveInjuries()

llamar a InitAssault() //Inicializar el equipo de ataque

if (GetPlayerState(ai_player, PLAYER_STATE_RESOURCE_FOOD_CAP)-80)!=hero_num luego

llamar a GroupEnumUnitsOfPlayer(udg_g , ai_player, null) //Selecciona todas las unidades del reproductor AI

bucle

p>

exitwhen igt_num

>

llamar a GroupRemoveUnit(udg_g, aiherolt; igt;)

establecer i=i 1

endloop

bucle

establecer u=FirstOfGroup(udg_g)

salir cuando u==null

si IsUnitType(u, UNIT_TYPE_HERO)==true entonces

establecer hero_num=hero_num 1 p>

set aihero[hero_num]=u //Establecer aihero[1~n]=u

endif

call GroupRemoveUnit(udg_g,u) //Eliminar unit u

endloop

call GroupClear(udg_g) //Borrar el grupo de unidades

endif

set i=1

bucle

salir cuando igt; hero_num

if GetUnitState(aiherolt; igt;, UNIT_STATE_LIFE)/GetUnitState(aiherolt; igt;, UNIT_STATE_MAX_LIFE)gt; vida del héroe El porcentaje es mayor que 15 (la radio es un número entero que se usa para determinar el índice de salud)

call AddAssault(1, GetUnitTypeId(aiherolt;igt;)) //El héroe se une al grupo de ataque

endif

set i=i 1

endloop

endfunction

función start_attack toma el objetivo de la unidad y no devuelve nada //Iniciar ataque

local entero index=0

bucle

salir cuando CapitánRetreating() y huir //(Si el capitán está escapando y huir es verdadero) salir

salir cuando ratio==0

salir cuando no UnitAlive(objetivo) //(si el objetivo no está vivo) salir

salir cuando UnitInvis(objetivo) y no IsUnitDetected(objetivo) , ai_player) // (Si la unidad es invisible y única

(detección) y salir

llamar AttackMoveKill(objetivo) // Movimiento de ataque hasta que el objetivo muera

llamar a Sleep(3) //Detener durante 3 segundos

if indexgt;=5 entonces

establece index=0

llama a setup_force() //Ordena al jugador de IA que comience a buscar héroes con más de 15 vidas que puedan atacar ingresa al grupo de ataque

endif

set index=index 1

endloop //En realidad, la función de este bucle es seleccionar un héroe para atacar cada 3 segundos, y detente si escapas

set index=0

loop

exitwhen not CaptainInCombat(true) //Salir cuando el capitán no esté peleando

llamar a Sleep(2) //Detener 3 segundos

si indexgt;=8 entonces

establecer index=0

llamar a setup_force() //Ordena al jugador de IA que comience a buscar héroes con más de 15 vidas que puedan atacar Ingresa al grupo de ataque

endif

set index=index 1

endloop // De hecho, la función de este bucle es que el capitán selecciona un héroe para ingresar cada 2 segundos durante la batalla. Grupo de ataque

endfunction

función attack_sequence no recibe retornos. nada // Secuencia de combate (esta función en realidad es encontrar al enemigo, primero busque la subbase del enemigo, si no, vaya a la base principal, si no la encuentra, simplemente vaya a MF)

unidad local target=null

unidad local u=null

if ally entonces //Si ally es verdadero, realiza las siguientes acciones

set target=GetAllianceTarget() / /Establece el objetivo como base principal de la alianza

if target!=null entonces //Si la base principal de la alianza existe, realiza las siguientes acciones

p>

set attack_enemy=true //Establece el ataque del enemigo para comenzar

call setup_force() //Comando

Deje que el jugador de IA comience a buscar héroes con una salud superior a 15 que puedan atacar para ingresar al grupo de ataque

llame a start_attack(target) //Llame a la función para comenzar a atacar al objetivo

call SetAllianceTarget(null) //

set attack_enemy=false //Desactiva el ataque enemigo

return //Omite las siguientes acciones

endif

endif

if countgt; 100 and GetRandomInt(0, 200 count)gt; 300 then //Si el recuento es mayor que 100 y el número entero aleatorio 0 o 200 es mayor que 300, hazlo las siguientes acciones

set u=CreateUnitAtLoc( ai_player, 'h000', start_loc, 270) //Establece u como la nueva unidad en el punto de partida

set target=GetEnemyExpansion( ) //Establece el objetivo para que sea la subbase del enemigo

si el objetivo!=null entonces //*Si el objetivo existe, realiza las siguientes acciones

llama a KillUnit(u) // Matarte

llamar a SetAllianceTarget(target) //

llamar a setup_force() //Ordena al jugador de IA que comience a buscar héroes con una salud superior a 15 que puedan atacar para entrar el grupo de ataque

llama a start_attack(target) //Llama a la función para comenzar a atacar al objetivo

return //Omite las siguientes acciones

else //* Si el objetivo no existe, realiza las siguientes acciones

llamar a StartGetEnemyBase() //Empezar a buscar la base enemiga

bucle

salir cuando no WaitGetEnemyBase() //Salir del bucle cuando no estés buscando enemigos

call Sleep(1)

endloop // En realidad, determina si se encuentra el héroe cada segundo

set target=GetEnemyBase() //Establecer. El objetivo es la base principal del enemigo

call KillUnit(u) //Kill u

endif

set u=null

if target != null entonces //Si el objetivo no es igual a ninguno, realiza las siguientes acciones

set attack_enemy=true //Configurado para comenzar a atacar al enemigo

call SetAllianceTarget(target) //

llamar a setup_force() // Ordena al jugador de IA que comience a buscar héroes con una salud superior a 15 que puedan atacar para ingresar al grupo de ataque

llamar a start_attack(target ) //Llama a la función para comenzar a atacar al objetivo

set attack_enemy=false //Desactiva el ataque del enemigo

return //Omite las siguientes acciones

endif

endif

set target=GetCreepCamp(0, R2I(5*hero_num*ratio), false) //Establece que el objetivo sea el campamento de la unidad enemiga neutral (el mínimo El nivel de la unidad neutral es 0, el máximo es 5*número total de héroes*proporción, no hay unidades voladoras)

if target!=null entonces //Si el objetivo existe, realiza las siguientes acciones

llamar a SetAllianceTarget(objetivo) //

llamar a setup_force() / /Ordena al jugador de IA que comience a buscar héroes con una salud superior a 15 que puedan atacar para atacar

Grupo

call start_attack(target) //Llama a la función para comenzar a atacar al objetivo

set finishMF=true //Establece MF en verdadero (MF se refiere a matar monstruos neutrales para mejorar) < / p>

return //Omita las siguientes acciones

endif

if GetRandomInt(1, 2)==1 then //Si el entero aleatorio 1 o 2 es igual a 1, haz la siguiente acción

set target=GetCreepCamp(0, R2I(8*hero_num*ratio), false) //Establece que el objetivo sea el campamento de la unidad hostil neutral

if target!=null entonces / /Si el objetivo existe, realice las siguientes acciones

llame a SetAllianceTarget(target) //

llame a setup_force() //Comanda la IA ​​el jugador comienza a buscar héroes con más de 15 vidas que puedan atacar y atacar al grupo

call start_attack(target) //Llama a la función para comenzar a atacar al objetivo

set finishMF= true //Establece MF en verdadero (MF se refiere a matar monstruos neutrales para mejorar)

endif

endif

call Sleep(10) //Detente por 10 segundos

función final

función attack_loop no toma nada y no devuelve nada

índice entero local=0

llamada a SetCaptainHome(0, GetLocationX(start_loc) , GetLocationY(start_loc)) //Establece el punto de inicio del grupo lt; group, coordenada x, coordenada y gt;

call SetCaptainHome(1, GetLocationX(start_loc), GetLocationY(start_loc)) //Establece el punto de inicio del grupo lt; grupo, coordenada x, coordenada y gt; parámetros del grupo: ATTACK_CAPTAIN = 1; grupo de ataque DEFENSE_CAPTAIN;

= 2; Grupo de defensa BOTH_CAPTAINS = 3 Grupo de ataque y defensa;

bucle

llamada Sleep(3) //Detente durante 3 segundos (en realidad ingresa al bucle y realiza las siguientes acciones cada vez). 3 segundos una vez)

exitwhen GetPlayerState(ai_player, PLAYER_STATE_RESOURCE_FOOD_CAP)gt; 80 //Salir del bucle cuando el jugador AI tenga más de 80 alimentos

endloop

llamar a Sleep(2) //Parar durante 2 segundos

llamar a setup_force() //Ordenar al jugador de IA que comience a buscar héroes con vidas superiores a 15 que puedan atacar y entrar en el grupo de ataque

bucle

set index=1

bucle

call Sleep(1) //Detener durante 1 segundo

salir cuando finalice MF y no huya //Cuando MF esté en progreso y no huya Salga del ciclo cuando sea verdadero

llame a Sleep(1) //Deténgase durante 1 segundo

salga cuando not CaptainRetreating() and ratiogt 0 //Cuando el capitán no escapa y la proporción es mayor que Salir del ciclo cuando 0

exitwhen indexgt;=10

set index=index 1

endloop

if finishMF then //Si eres MF, realiza las siguientes acciones

set FinishMF=false //Establece FinishMF=false

endif

if huye entonces //Si estás huyendo, haz la siguiente acción

call Sleep(25-ratio*20) //Detente durante 25-ratio* 20 segundos (la radio es un número entero que se utiliza para determinar la proporción de vida)

endif

call attack_sequence() // Llamar a la función de ataque

endloop

función final

función check_hp t

no hace nada y no devuelve nada //Detecta Hp

local entero i=0

local real x=0

local real y=0

local real z=0

local real r1=0

local real r2=0

unidad local u=null

bucle

call Sleep(3) //Detente durante 3 segundos (en realidad ingresa al bucle y realiza las siguientes acciones cada 3 segundos)

set u=GetCreepCamp(0, 0, false) //Establecerte como objetivo neutral y hostil

establecer i=1

establecer x=0

establecer y=0

set z =0

loop

exitwhen igt; hero_num //Salir del ciclo cuando i sea mayor que el número total de héroes

set r1=GetUnitState( aiherolt; igt;, UNIT_STATE_LIFE) //Establece r1 como el valor de salud actual del héroe i (i=1, 2.3,...)

set r2=GetUnitState(aiherolt;igt;, UNIT_STATE_MAX_LIFE) //Establecer r2 es el valor de salud máximo del héroe i (i=1, 2.3,...)

set x=x r1 //Establecer x igual a x r1, que es la salud total de todos los héroes después del ciclo Valor de salud

set y=y r2 //Establece y igual a x r2, que es el valor de salud máximo total de todos los héroes después del ciclo

if r1gt ; 0 entonces // Si la vida del héroe es mayor que 0, realiza las siguientes acciones

set z=z r2 //Establece z igual a z r2, que es el valor de salud máximo total de todos los héroes vivos después del ciclo

endif

p>

set i=i 1

endloop

if zgt entonces // Si Z es mayor que 0, realice las siguientes acciones

set ratio=x /y //Establezca la relación igual a x/y, es decir, la relación entre el valor de salud actual y el valor de salud máximo de todos los héroes

i

f x/zlt; 0.5 then //Si la proporción entre la salud actual y la salud máxima de todos los héroes es inferior a 0,5, realiza las siguientes acciones

call SetGroupsFlee(true) //Prepara el equipo para escapar

p>

set gone=true //Configura el equipo para que pueda huir

else

call SetGroupsFlee(false) //Si no, configura el equipo para que no pueda huir huir

set seek=false //Configura el equipo para que no huya ahora

endif

else //Si Z es menor que 0, haz lo siguiente acciones

set ratio=0 //Establecer radio en 0

call SetGroupsFlee(true) //Configurar el equipo para huir

set seek=true / /Configura el equipo para que huya ahora

endif //Actual El valor de salud se determina cada tres segundos

si attack_enemy entonces

llama a SetGroupsFlee(true) / /Si ataca al enemigo

set seek=true //Set El equipo puede escapar

endif

si cuenta 200 entonces

establece count=count 1

endif //en realidad cada tres segundos Solo configura el count 1

endloop

endfunction

Recopila y comparte 11 0 Yumei Moyu

v>