|
globals
unit aihero //记录玩家的英雄
unit store
player aipag //记录AI玩家
boolean aitaopao=false //设置是否逃跑,一开始false表示不在,如果ture表示在
boolean aiattack=false //设置攻击状态,一开始false表示不在攻击,如果ture表示在攻击
boolean aigouwu=false //设置是否在购买物品,一开始false表示不在,如果ture表示在
boolean aisfjn=false //设置是否在使用技能,一开始false表示不在,如果ture表示在
boolean aibuxue=false //判断英雄是否在补血
real ratio=1 //ratio是用于判断生命比的整数
integer count=0 //记录游戏开始秒数
group bug=CreateGroup() //用于记录AI玩家所有单位
timer t=CreateTimer()
endglobals
function xqyingx takes nothing returns nothing //选取英雄
local unit u=null
call GroupEnumUnitsOfPlayer(bug,aipag,null) //选取AI玩家的所有单位
loop
set u=FirstOfGroup(bug) //设置u是单位组的第一个单位
exitwhen u==null //当u为没有单位时
if IsUnitType(u,UNIT_TYPE_HERO)==true then //如果单位u是英雄
set aihero=u //设置aihero就是英雄了
endif
call GroupRemoveUnit(bug,u) //移除单位u后,单位组内就没有u这个单位了
endloop
endfunction
function attackrpg takes nothing returns nothing
local integer cmd
call Sleep(1)
set cmd = WaitForSignal() // 得到命令被承认,让AI起作用
if cmd == 0 then
call xqyingx()
endif
loop //开始进入循环
call IssuePointOrderById(aihero, 851983, -1671,-986)
call Sleep (1)
endloop
endfunction
function main takes nothing returns nothing
set aipag=Player(GetAiPlayer()) //用变量记录当前的AI玩家为 ai_player
call SetMeleeAI() //开始对战AI
call SetHeroesBuyItems(false) //设置英雄自动买物品
call SetHeroesFlee(false) //设置英雄生命值少时自动逃跑
call SetHeroesTakeItems(true) //设置英雄自动捡物品
call SetIgnoreInjured(true) //在集结部队进攻时,忽略生命值低于50%的单位
call SetRandomPaths(true) //增加AI的选择目的地的随机性
call SetTargetHeroes(false)
call CreateCaptains() //创建攻击组
call StartThread(function attackrpg) // 开始线程,运行(function attack_loop)
call TimerStart(t,99999.,false,null) //逆推技能CD 判断
endfunction
攻击移动目标点 只要改下坐标点就行了 ,至于修改 说下T转J 红色BJ不能 移植到AI里 ,单位组的 F开头的选取也不能
附带两个AI里能用的JASS 单位组 call GroupEnumUnitsInRangeOfLoc(g,Loc,Radius,null) 点选取 call GroupEnumUnitsInRange(g,X,Y,Radius,null) 坐标选取 其实就是JASS的说.
|
|