📄 ai.lua
字号:
return 1
end
return 0 --返回1表示目标不变
end
------------------------------------------------------------------------------------------------
--------------------------------------- 逻辑循环 -------------------------------------------
------------------------------------------------------------------------------------------------
---------------------------------
--AI个体循环函数, 所有角色依次执行
---------------------------------
function ai_loop(c)
local ai_type = GetChaAIType(c)
if ai_type==AI_NONE then return end
local t = GetChaTarget(c) --取出当前角色的目标
if t~=nil then
ai_target(c, t) --有目标
else
ai_no_target(c) --无目标
end
ai_tick(c, t) --每次都执行
end
---------------------------
-- 每次ai_loop都要调用的过程
---------------------------
function ai_tick(c, t)
--如果是反隐身怪, 则解除视野内角色的隐身状态
local type_id = GetChaTypeID(c)
if ai_flag_nohide[type_id]==1 then
local vision = GetChaVision(c)
ClearHideChaByRange(c, 0, 0, vision, 0)
end
--处理障碍
ai_block(c, t)
end
---------------------------
-- Boss(特殊)AI处理过程
---------------------------
function special_ai(c, t,ai_type)
if ai_type == MWHH then --冥王幻皇如果不在圣眼区域,不在潜行,且目标不在眩晕状态则潜行,如果目标已经眩晕,普通攻击;如果不在圣眼区域已经潜行,目标不在眩晕状态则鬼舞,目标眩晕,普通攻击;如果在圣眼区域,普通攻击。
local StateLv = GetChaStateLv ( c , STATE_SYZY )
if StateLv == 0 then
local StateLv = GetChaStateLv ( c , STATE_YS )
if StateLv == 0 then
local StateLv = GetChaStateLv ( t , STATE_XY )
if StateLv == 0 then
ChaUseSkill(c, c, 123)
ChaUseSkill(c, t, 86)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
else
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
else
local StateLv = GetChaStateLv ( t , STATE_XY )
if StateLv == 0 then
ChaUseSkill(c, t, 86)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
else
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
end
else
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWYH then --妖火首先腿狙,然后手狙,再开始普通攻击
local StateLv = GetChaStateLv ( t , SK_TJ )
if StateLv ~= 0 then
local StateLv = GetChaStateLv ( t , SK_SJ )
if StateLv == 0 then
ChaUseSkill(c, t, 95)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
else
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
else
ChaUseSkill(c, t, 94)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWXS then
if is_near(c, t, 750)~=1 then --目标已经靠近
ChaUseSkill(c, t, 325)
end
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWBK then
if is_near(c, t, 750)~=1 then --目标已经靠近
ChaUseSkill(c, t, 325)
end
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWFH then
local StateLv = GetChaStateLv ( c , STATE_FNQ )
if StateLv ~= 0 then
local StateLv = GetChaStateLv ( t , STATE_BDJ )
if StateLv == 0 then
ChaUseSkill(c, t, 93)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
else
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
else
ChaUseSkill(c, c, 223)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWJW then
local StateLv = GetChaStateLv ( c , STATE_MFD )
if StateLv == 0 then
local sp = GetChaAttr( c , ATTR_SP )
local mxsp = GetChaAttr( c , ATTR_MXSP )
local percent = sp/mxsp
if percent>=0.1 then
ChaUseSkill( c, c, 106 )
else
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
return
end
local StateLv = GetChaStateLv ( c , STATE_TSHD )
if StateLv == 0 then
ChaUseSkill(c, c, 103 )
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
local StateLv = GetChaStateLv ( c , STATE_FZLZ )
if StateLv == 0 then
ChaUseSkill(c, c, 101)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWLH then
local StateLv = GetChaStateLv ( t , STATE_JNJZ )
if StateLv == 0 then
ChaUseSkill( c, t, 104 )
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
local StateLv = GetChaStateLv ( t , STATE_GJJZ )
if StateLv == 0 then
ChaUseSkill(c, t, 105 )
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
local StateLv = GetChaStateLv ( t , STATE_SYNZ )
if StateLv == 0 then
ChaUseSkill(c, t, 121)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
end
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWHS then
local job = GetChaAttr( t , ATTR_JOB )
if job == 8 then
ChaUseSkill(c, t, 213)
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
return
else
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
end
---------------------------------------------------------------------------------------------------------
if ai_type == MWHDS then
local StateLv = GetChaStateLv ( c , STATE_XY )
if StateLv~=0 then
State_Xy_Rem ( c , StateLv )
end
local StateLv = GetChaStateLv ( c , STATE_SJ )
if StateLv~=0 then
State_Sj_Rem ( c , StateLv )
end
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
---------------------------------------------------------------------------------------------------------
if ai_type == MHKL then
local StateLv = GetChaStateLv ( c , STATE_XY )
if StateLv~=0 then
State_Xy_Rem ( c , StateLv )
end
local StateLv = GetChaStateLv ( c , STATE_SJ )
if StateLv~=0 then
State_Sj_Rem ( c , StateLv )
end
local skill_id = select_skill(c) --怪物按照比率选择自己的技能
ChaUseSkill(c, t, skill_id) --向目标移动并使用技能
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -