⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ai.lua

📁 top web admin panel (tales of pirates)
💻 LUA
📖 第 1 页 / 共 2 页
字号:
        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 + -