psv仙境传说ro和ace不能带ai同伴吗

现在还有没有玩仙境传说ro的朋友,求带【psv吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:705,099贴子:
现在还有没有玩仙境传说ro的朋友,求带
最近才买的psv,入的第一个游戏是ro,不知道现在还有没有人玩,我的id是gloria_23333,求大神带
二楼————————楼主你好,我这个人不太会说话,如果有什么冒犯的地方,你特么有种出来打我啊╭(╯ε╰)╮
表示第一章用弓箭手过不去,快来人啊
有,不过基本吃灰,等那天闲的蛋疼再掏出来玩
剑士吧,我都过了,不过现在玩ace
godkiller-sg我在第三章了
贴吧热议榜
使用签名档&&
保存至快速回贴仙境传说RO手游4月6日更新公告 猫猫佣兵团辅助功能登场仙境传说RO手游4月6日更新公告 猫猫佣兵团辅助功能登场嗨客手机站百家号仙境传说RO手游4月6日更新了什么?仙境传说RO手游4月6日更新了什么新内容?仙境传说RO手游4月6日更新了什么新玩法?仙境传说RO手游4月6日更新了维护咯,现在就跟着网侠小卷子一起来看看吧! 亲爱的冒险者,我们将于4月6日5点-9点进行一次停服维护。此次维护将更新更新部分游戏内容并修复一些问题,维护期间无法进入游戏,敬请谅解。维护结束后,我们将向全体玩家发放2个「神秘箱子」、1个「暖心料理」和1个「锁链雷锭」作为维护福利。此次更新详细内容如下:========内容更新========1.新增辅助功能【猫猫佣兵团】* 冒险者角色BaseLv.15级后可前往普隆德拉寻找“卢比思”(邮箱“凯撒”的右侧)了解佣兵团详情。* 佣兵猫可帮助冒险者战斗,雇佣需花费Zeny。* 佣兵猫如同队友,当组队时也会占用一名队友的位置,玩家可自行选择其离队或入队。* 每个角色最多可让两位佣兵猫同时上场战斗,第2位需要学习新的冒险技能(此版本暂未开放)。* 在后续版本中我们会陆续开放不同职业倾向的佣兵猫来帮助冒险者。2.【冒险手册】新增功能* 头饰和卡片收集页签新增存储机制,可将卡片和头饰 存入冒险手册激活相应的属性。(存入的卡片、头饰可取出,取出后激活的属性将消失。目前版本中部分卡片、头饰存入的激活属性暂未实装,会在后续版本中陆续投放。卡片、头饰存入属性是额外属性与拾取、制作解锁的属性不同。)* 探索页签新增发型和玩具的探索攻略。* 探索页签内装备信息里新增【显示升级配方】。3.上调部分稀有卡片的系统定价,并相应的调整了它们的交易所市场价。调整后,这些卡片在交易所的成交价格会变为新的价格(包括如果维护前有已经上架交易所的)。4.调整【冒险手册】“探索”页签中“开始冒险吧”★魔物引导的地点。5.新增部分★魔物的玩法引导任务,引导NPC所在地图为【海底神殿】,【普隆德拉】(带星盗虫玩法引导),【迷藏森林】,【蚂蚁密穴】。6.新增地图【蚂蚁地狱】(蚂蚁密穴的扩展地图)。7.新增野外获得掉落卡片提示效果。8.冒险技能【优雅坐下】新增可用地图:【吉芬】、【依斯鲁得岛】。9.取消野外MVP魔物的存活保护时间,大幅度增加它们的血量。10.调整【友情之证】和【莫拉硬币】为“不可存放公共仓库”,之前已放入公共仓库的可以取出。11.调整头饰【魔术无边帽】可上架交易所。12.提高【龙鳞纹图纸】的掉率,修正其图标。13.使用【遗忘之水】重置冒险技能时,将会返还学习冒险技能消耗的Zeny。(只返还当前学习的消耗的Zeny)14.【打赏】页面新增“B格猫”动画。15.角色在世界频道发言条件调整为Base等级≥10级。========体验优化========1.优化角色删除保护机制,维护后同账号下角色删除CD进行调整如下:* 1-25级删除CD:6小时* 26-55级删除CD:24小时* 56-80级删除CD:48小时2. MINI和MVP魔物AI优化:* 对正在战斗的冒险者释放增益技能或者治疗技能后,概率会引起该魔物的攻击。* 对正在参与战斗的魔物释放攻击技能或者减益技能,概率会引起该魔物的攻击。* 取消MINI和MVP魔物对BaseLv.75以上的角色进行主动攻击。3.优化了查看其它玩家详情时页面布局。4.交易所功能优化:* 交易所点击页码将可直接输入想要跳转的页数。* 精炼排序和价格排序将会优先于公示期。5.优化黑屏省电模式的视觉效果。6.优化邀请其他玩家牵手时的弹出框文字显示。7.优化了获得部分物品时的展示画面。8.优化★魔物AI,维护后不再主动攻击低等级冒险者。========问题修复========1.修复世界聊天频道下拉聊天内容偶尔不会停止消息滚动的问题。2.修复进行“修复时空裂隙”任务时,队长把裂隙中死亡的队友踢出队伍后无法完成修复裂隙任务的问题。3.修复在【兽人村落】左上角的楼梯上打【兽人弓箭手】无法造成伤害的问题。4.修复组队状态下完成某地区“修复时空裂隙”时再接取其他地区的“修复时空裂隙”任务追踪框会显示2个地区裂隙任务问题。5.修复通过临时包包出售装备时界面显示异常的问题。6.修复仓库格子的显示数量与实际数量不符的问题。7.修复背包已满时无法领取只含有Zeny邮件的问题。8.修复【水母卡片】可以改变MINI和MVP魔物属性的问题。9.修复【古城郊外】的“抗击魔潮”任务追踪框提示任务地点为“普隆德拉”的问题。10.修复当玩家A和B在相同线时进入不同线公会领地后无法从好友界面组队问题。11.修复部分哥布灵类魔物面具显示错误的问题。12.修复技能栏没有【复活术】时,点击尸体上的蓝色石头图标无法施放【复活术】的问题。13.修复交易所成交价格大于2.8亿时税率不正确问题。14.修复4月限定特典道具描述消失的问题。15.修复【波利之王头像】和【迪塔勒泰晤勒头像】显示异常的问题。16.修复【喷射哥布灵背包】制作解锁奖励描述缺失的问题,制作喷射哥布灵背包“包包格子+2(暂未实装)”。好啦,以上就是网侠小卷子带来的《仙境传说RO手游》4月6日更新内容,有关仙境传说RO手游内容可以百度一下“网侠仙境传说RO手游”本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。嗨客手机站百家号最近更新:简介:欢迎小伙伴们加入手游玩家们的集中营~作者最新文章相关文章[AI]让生命体AI趋向完美 - RO 1.5交流区(原RO交流区) -
浆糊论坛-RO小站
- Powered by Discuz!
UID280967&帖子344&精华0&威望0 &阅读权限100&注册时间&
[AI]让生命体AI趋向完美
等斑竹或是某人帮我把4个AI文件传上来
注意下载后,放到自己的RO目录的AI目录的USER_AI目录,注意备份。
打开config.lua.只要能打开文本文件的程序都能打开,根据自己的喜好去改。
你想有M4陪你练级吗,你想生命体自动爆炸杀BOSS吗,你想避过一死吗,这个脚本将实现你的愿望。
PS:因为我没传文件的权限,我把4个文件的文件内容贴出来,自行生成文件
config.lua
--------------------------------------------------------------------------------
-- 生命体本质 ( 0 = 辅助型 ; 1 = 助攻型 ; 2 = 被动型 ; 3 = 主动型 ; 4 = PK型 )
--------------------------------------------------------------------------------
HOMUN_KIND & & & & & & & & = 4
辅助型 : 绝对不会打敌人
助攻型 : 帮主人打敌人
被动型 : 包含助攻型,被敌人打就反击
主动型 : 包含被动型,主动打怪
杀神型 : 包含主动型,连玩家都打
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 生命体视距
--------------------------------------------------------------------------------
HOMUN_SIGHT& & & & & & & & = 15
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 和主人距离
--------------------------------------------------------------------------------
DIST_OWNER_MIN& & & & = 2& & & & & & & & & & & & -- 大于会跟随
DIST_OWNER_MAX& & & & = 6& & & & & & & & & & & & -- 大于会回归
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 生命体HP百分比
--------------------------------------------------------------------------------
HOMUN_HP_LOW& & & & = 60& & & & -- 小于会逃跑
HOMUN_HP_HIGH& & & & = 75& & & & -- 小于不出击
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 逃跑方式 ( 0 = 乱跑 ; 1 = 八卦 )
--------------------------------------------------------------------------------
ESCAPE_WAY& & & & & & & & = 1
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能使用机率 ( 0 = 不使用 ; 100 = 永远使用 ; 1 ~ 99 = 自订机率 )
--------------------------------------------------------------------------------
LIF_HEAL_PROB& & & & & & & & & & & & = 0& & & & & & & & -- 治愈之手& & & & & & & & (实装)
LIF_AVOID_PROB& & & & & & & & & & & & = 0& & & & & & & & -- 轻捷移动
-- 进化丽芙
LIF_CHANGE_PROB& & & & & & & & & & & & = 0& & & & & & & & -- 智力变换
-- 艾咪斯可鲁
AMI_CASTLE_PROB& & & & & & & & & & & & = 0& & & & & & & & -- 位置互换
AMI_DEFENSE_PROB& & & & & & & & = 0& & & & & & & & -- 防御力
-- 进化艾咪斯可鲁
AMI_BLOODLUST_PROB& & & & & & & & = 0& & & & & & & & -- 血的贪求
FLI_MOON_PROB& & & & & & & & & & & & = 0& & & & & & & & -- 月光& & & & & & & & & & & & (实装)
FLI_FLEET_PROB& & & & & & & & & & & & = 0& & & & & & & & -- 横越速度& & & & & & & & (实装)
FLI_SPEED_PROB& & & & & & & & & & & & = 0& & & & & & & & -- 紧急回避
-- 进化飞里乐
FLI_SBR44_PROB& & & & & & & & & & & & = 0& & & & & & & & -- S.B.R.44
-- 巴尼米乐斯
VAN_CAPRICE_PROB& & & & & & & & = 0& & & & & & & & -- 善变& & & & & & & & & & & & (实装)
VAN_PRAY_OWNER_PROB& & & & & & & & = 0& & & & & & & & -- 混乱的祈福 ( 主人 )
VAN_PRAY_HOMUN_PROB& & & & & & & & = 0& & & & & & & & -- 混乱的祈福 ( 生命体 )
-- 进化巴尼米乐斯
VAN_EXPLOSION_PROB& & & & & & & & = 0& & & & & & & & -- 生物爆炸
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能使用等级 ( 0 = 不使用 ; 1 ~ 5 = 自订等级 )
--------------------------------------------------------------------------------
LIF_HEAL_LEVEL& & & & & & & & & & & & = 0& & & & & & & & -- 治愈之手
LIF_AVOID_LEVEL& & & & & & & & & & & & = 0& & & & & & & & -- 轻捷移动
-- 进化丽芙
LIF_CHANGE_LEVEL& & & & & & & & = 0& & & & & & & & -- 智力变换
-- 艾咪斯可鲁
AMI_CASTLE_LEVEL& & & & & & & & = 0& & & & & & & & -- 位置互换
AMI_DEFENSE_LEVEL& & & & & & & & = 0& & & & & & & & -- 防御力
-- 进化艾咪斯可鲁
AMI_BLOODLUST_LEVEL& & & & & & & & = 0& & & & & & & & -- 血的贪求
FLI_MOON_LEVEL& & & & & & & & & & & & = 0& & & & & & & & -- 月光
FLI_FLEET_LEVEL& & & & & & & & & & & & = 0& & & & & & & & -- 横越速度
FLI_SPEED_LEVEL& & & & & & & & & & & & = 0& & & & & & & & -- 紧急回避
-- 进化飞里乐
FLI_SBR44_LEVEL& & & & & & & & & & & & = 0& & & & & & & & -- S.B.R.44
-- 巴尼米乐斯
VAN_CAPRICE_LEVEL& & & & & & & & = 0& & & & & & & & -- 善变
VAN_PRAY_OWNER_LEVEL& & & & = 0& & & & & & & & -- 混乱的祈福 ( 主人 )
VAN_PRAY_HOMUN_LEVEL& & & & = 0& & & & & & & & -- 混乱的祈福 ( 生命体 )
-- 进化巴尼米乐斯
VAN_EXPLOSION_LEVEL& & & & & & & & = 0& & & & & & & & -- 生物爆炸
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能使用最少SP值 ( 注意 : 并非百分比 )
--------------------------------------------------------------------------------
LIF_HEAL_SP& & & & & & & & & & & & & & & & = 0& & & & & & & & -- 治愈之手
LIF_AVOID_SP& & & & & & & & & & & & = 0& & & & & & & & -- 轻捷移动
-- 进化丽芙
LIF_CHANGE_SP& & & & & & & & & & & & = 0& & & & & & & & -- 智力变换
-- 艾咪斯可鲁
AMI_CASTLE_SP& & & & & & & & & & & & = 0& & & & & & & & -- 位置互换
AMI_DEFENSE_SP& & & & & & & & & & & & = 0& & & & & & & & -- 防御力
-- 进化艾咪斯可鲁
AMI_BLOODLUST_SP& & & & & & & & = 0& & & & & & & & -- 血的贪求
FLI_MOON_SP& & & & & & & & & & & & & & & & = 0& & & & & & & & -- 月光
FLI_FLEET_SP& & & & & & & & & & & & = 0& & & & & & & & -- 横越速度
FLI_SPEED_SP& & & & & & & & & & & & = 0& & & & & & & & -- 紧急回避
-- 进化飞里乐
FLI_SBR44_SP& & & & & & & & & & & & = 0& & & & & & & & -- S.B.R.44
-- 巴尼米乐斯
VAN_CAPRICE_SP& & & & & & & & & & & & = 0& & & & & & & & -- 善变
VAN_PRAY_OWNER_SP& & & & & & & & = 0& & & & & & & & -- 混乱的祈福 ( 主人 )
VAN_PRAY_HOMUN_SP& & & & & & & & = 0& & & & & & & & -- 混乱的祈福 ( 生命体 )
-- 进化巴尼米乐斯
VAN_EXPLOSION_SP& & & & & & & & = 0& & & & & & & & -- 生物爆炸
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能使用间隔 ( 0 = 无限制 ; 1 ~ = 自订秒数 )
--------------------------------------------------------------------------------
LIF_HEAL_DELAY& & & & & & & & & & & & = 0& & & & & & & & -- 治愈之手
LIF_AVOID_DELAY& & & & & & & & & & & & = 0& & & & & & & & -- 轻捷移动
-- 进化丽芙
LIF_CHANGE_DELAY& & & & & & & & = 0& & & & & & & & -- 智力变换
-- 艾咪斯可鲁
AMI_CASTLE_DELAY& & & & & & & & = 0& & & & & & & & -- 位置互换
AMI_DEFENSE_DELAY& & & & & & & & = 0& & & & & & & & -- 防御力
-- 进化艾咪斯可鲁
AMI_BLOODLUST_DELAY& & & & & & & & = 0& & & & & & & & -- 血的贪求
FLI_MOON_DELAY& & & & & & & & & & & & = 0& & & & & & & & -- 月光
FLI_FLEET_DELAY& & & & & & & & & & & & = 0& & & & & & & & -- 横越速度
FLI_SPEED_DELAY& & & & & & & & & & & & = 0& & & & & & & & -- 紧急回避
-- 进化飞里乐
FLI_SBR44_DELAY& & & & & & & & & & & & = 0& & & & & & & & -- S.B.R.44
-- 巴尼米乐斯
VAN_CAPRICE_DELAY& & & & & & & & = 0& & & & & & & & -- 善变
VAN_PRAY_OWNER_DELAY& & & & = 0& & & & & & & & -- 混乱的祈福 ( 主人 )
VAN_PRAY_HOMUN_DELAY& & & & = 0& & & & & & & & -- 混乱的祈福 ( 生命体 )
-- 进化巴尼米乐斯
VAN_EXPLOSION_DELAY& & & & & & & & = 0& & & & & & & & -- 生物爆炸
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能启动限制
--------------------------------------------------------------------------------
LIMIT_OWNER_HP_LOW& & & & & & & & = 60& & & & -- 小于主人HP百分比 ( 治愈之手 , 位置互换 , 混乱的祈福 )
LIMIT_HOMUN_HP_LOW& & & & & & & & = 60& & & & -- 小于生命体HP百分比 ( 混乱的祈福 )
LIMIT_HOMUN_HP_HIGH& & & & & & & & = 75& & & & -- 大于生命体HP百分比 ( 位置互换 )
--------------------------------------------------------------------------------
require &./AI/USER_AI/Const.lua&
require &./AI/USER_AI/Config.lua&
require &./AI/USER_AI/Util.lua&
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
IDLE_ST& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & -- 休息
FOLLOW_ST& & & & & & & & & & & & & & & & = 1& & & & & & & & -- 跟随
CHASE_ST& & & & & & & & & & & & & & & & = 2& & & & & & & & -- 追击
ATTACK_ST& & & & & & & & & & & & & & & & = 3& & & & & & & & -- 攻击
ATTACK_SKILL_ST& & & & & & & & & & & & = 4& & & & & & & & -- 技能攻击
RETURN_ST& & & & & & & & & & & & & & & & = 5& & & & & & & & -- 回归
ESCAPE_ST& & & & & & & & & & & & & & & & = 6& & & & & & & & -- 逃跑
MOVE_CMD_ST& & & & & & & & & & & & & & & & = 10& & & & -- 移动指令
STOP_CMD_ST& & & & & & & & & & & & & & & & = 11& & & & -- 停止指令
ATTACK_OBJECT_CMD_ST& & & & = 12& & & & -- 攻击指令
ATTACK_AREA_CMD_ST& & & & & & & & = 13& & & & -- 区域攻击指令
PATROL_CMD_ST& & & & & & & & & & & & = 14& & & & -- 巡逻指令
HOLD_CMD_ST& & & & & & & & & & & & & & & & = 15& & & & -- 死守指令
SKILL_OBJECT_CMD_ST& & & & & & & & = 16& & & & -- 技能指令
SKILL_AREA_CMD_ST& & & & & & & & = 17& & & & -- 区域技能指令
FOLLOW_CMD_ST& & & & & & & & & & & & = 18& & & & -- 跟随指令
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 整体变数
--------------------------------------------------------------------------------
MyKind& & & & & & & & & & & & & & & & & & & & = HOMUN_KIND& & & & -- 本质
MyState& & & & & & & & & & & & & & & & & & & & = FOLLOW_ST& & & & & & & & -- 状态
HomunType& & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 生命体种类
OwnerID& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 主人ID
MyID& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 生命体ID
MyEnemy& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 敌人ID
AllActors& & & & & & & & & & & & & & & & = {}& & & & & & & & & & & & -- 所有ID集合
DestX& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 目的座标x
DestY& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 目的座标y
PatrolX& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 巡逻座标x
PatrolY& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 巡逻座标y
ResCmdList& & & & & & & & & & & & & & & & = List.new()& & & & -- 指令清单
MySkill& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 生命体技能
MySkillLevel& & & & & & & & & & & & = 0& & & & & & & & & & & & & & & & -- 生命体技能等级
EscapeAngle& & & & & & & & & & & & & & & & = 22.5& & & & & & & & & & & & -- 逃跑角度
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能使用间隔计数器
--------------------------------------------------------------------------------
LIF_HEAL_TIMER& & & & & & & & & & & & = 0& & & & & & & & & & & & -- 治愈之手
LIF_AVOID_TIMER& & & & & & & & & & & & = 0& & & & & & & & & & & & -- 轻捷移动
-- 进化丽芙
LIF_CHANGE_TIMER& & & & & & & & = 0& & & & & & & & & & & & -- 智力变换
-- 艾咪斯可鲁
AMI_CASTLE_TIMER& & & & & & & & = 0& & & & & & & & & & & & -- 位置互换
AMI_DEFENSE_TIMER& & & & & & & & = 0& & & & & & & & & & & & -- 防御力
-- 进化艾咪斯可鲁
AMI_BLOODLUST_TIMER& & & & & & & & = 0& & & & & & & & & & & & -- 血的贪求
FLI_MOON_TIMER& & & & & & & & & & & & = 0& & & & & & & & & & & & -- 月光
FLI_FLEET_TIMER& & & & & & & & & & & & = 0& & & & & & & & & & & & -- 横越速度
FLI_SPEED_TIMER& & & & & & & & & & & & = 0& & & & & & & & & & & & -- 紧急回避
-- 进化飞里乐
FLI_SBR44_TIMER& & & & & & & & & & & & = 0& & & & & & & & & & & & -- S.B.R.44
-- 巴尼米乐斯
VAN_CAPRICE_TIMER& & & & & & & & = 0& & & & & & & & & & & & -- 善变
VAN_PRAY_OWNER_TIMER& & & & = 0& & & & & & & & & & & & -- 混乱的祈福 ( 主人 )
VAN_PRAY_HOMUN_TIMER& & & & = 0& & & & & & & & & & & & -- 混乱的祈福 ( 生命体 )
-- 进化巴尼米乐斯
VAN_EXPLOSION_TIMER& & & & & & & & = 0& & & & & & & & & & & & -- 生物爆炸
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function AI(myid)
& & & & local msg
& & & & local rmsg
& & & & local hp_percent
& & & & local actors
& & & & local x,y
& & & & local x1,y1
& & & & local result
& & & & MyID = myid& & & & & & & & & & & & & & & & & & & & -- 生命体ID
& & & & HomunType = GetV (V_HOMUNTYPE,MyID)& & & & & & & & -- 生命体种类
& & & & OwnerID = GetV (V_OWNER,MyID)& & & & & & & & & & & & -- 主人ID
& & & & AllActors = GetActors()& & & & & & & & -- 所有ID集合
& & & & msg = GetMsg (MyID)& & & & & & & & & & & & -- 指令
& & & & rmsg = GetResMsg (MyID)& & & & & & & & -- 预订指令
& & & & if msg[1] == NONE_CMD then
& & & & & & & & if rmsg[1] ~= NONE_CMD then
& & & & & & & & & & & & if List.size(ResCmdList) & 10 then
& & & & & & & & & & & & & & & & List.pushright (ResCmdList,rmsg) & & & & -- 储存预订指令
& & & & & & & & & & & & end
& & & & & & & & end
& & & & else
& & & & & & & & List.clear (ResCmdList)& & & & & & & & -- 清除预订指令&&
& & & & & & & & ProcessCommand (msg)& & & & & & & & -- 处理指令
& & & & end
& & & & hp_percent = Get_HP_Percent(MyID)
& & & & if (hp_percent & HOMUN_HP_LOW) then
& & & & & & & & actors = GetActors ()
& & & & & & & & result = 0
& & & & & & & & for i,v in ipairs(actors) do
& & & & & & & & & & & & if (v ~= OwnerID and v ~= MyID) then
& & & & & & & & & & & & & & & & if (GetV(V_TARGET,v) == MyID) then
& & & & & & & & & & & & & & & & & & & & result = 1
& & & & & & & & & & & & & & & & & & & & break
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & if (result == 1) then
& & & & & & & & & & & & if (MyState ~= ESCAPE_ST) then
& & & & & & & & & & & & & & & & MyState = ESCAPE_ST
& & & & & & & & & & & & & & & & x,y = GetV(V_POSITION,OwnerID)
& & & & & & & & & & & & & & & & if (ESCAPE_WAY == 0) then
& & & & & & & & & & & & & & & & & & & & math.randomseed(GetTick())
& & & & & & & & & & & & & & & & & & & & repeat
& & & & & & & & & & & & & & & & & & & & & & & & x1 = x + math.random(-DIST_OWNER_MAX,DIST_OWNER_MAX)
& & & & & & & & & & & & & & & & & & & & & & & & y1 = y + math.random(-DIST_OWNER_MAX,DIST_OWNER_MAX)
& & & & & & & & & & & & & & & & & & & & until Get_Distance_IDxy(OwnerID,x1,y1) &= DIST_OWNER_MAX
& & & & & & & & & & & & & & & & & & & & DestX,DestY = x1,y1
& & & & & & & & & & & & & & & & elseif (ESCAPE_WAY == 1) then
& & & & & & & & & & & & & & & & & & & & x1 = math.floor(math.cos(math.rad(EscapeAngle)) * DIST_OWNER_MAX + 0.5)
& & & & & & & & & & & & & & & & & & & & y1 = math.floor(math.sin(math.rad(EscapeAngle)) * DIST_OWNER_MAX + 0.5)
& & & & & & & & & & & & & & & & & & & & DestX = x + x1
& & & & & & & & & & & & & & & & & & & & DestY = y + y1
& & & & & & & & & & & & & & & & & & & & EscapeAngle = EscapeAngle + 45
& & & & & & & & & & & & & & & & & & & & if (EscapeAngle &= 360) then
& & & & & & & & & & & & & & & & & & & & & & & & EscapeAngle = EscapeAngle - 360
& & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & Move(MyID,DestX,DestY)
& & & & & & & & & & & & & & & & TraceAI (string.format(&-& 逃跑 : HP百分比为%3.2f&,hp_percent))
& & & & & & & & & & & & end
& & & & & & & & elseif (MyState == ESCAPE_ST) then
& & & & & & & & & & & & MyState = FOLLOW_ST
& & & & & & & & & & & & TraceAI (&逃跑 -& 跟随 : 敌人已消失&)
& & & & & & & & end
& & & & end
& & & & -- 状态切换
& & & & if (MyState == IDLE_ST) then
& & & & & & & & OnIDLE_ST ()
& & & & elseif (MyState == FOLLOW_ST) then
& & & & & & & & OnFOLLOW_ST ()
& & & & elseif (MyState == CHASE_ST) then& & & & & & & & & & & & & & & & & & & &
& & & & & & & & OnCHASE_ST ()
& & & & elseif (MyState == ATTACK_ST) then
& & & & & & & & OnATTACK_ST ()
& & & & elseif (MyState == ATTACK_SKILL_ST) then
& & & & & & & & OnATTACK_SKILL_ST ()
& & & & elseif (MyState == RETURN_ST) then
& & & & & & & & OnRETURN_ST ()
& & & & elseif (MyState == ESCAPE_ST) then
& & & & & & & & OnESCAPE_ST ()
& & & & elseif (MyState == MOVE_CMD_ST) then
& & & & & & & & OnMOVE_CMD_ST ()
& & & & elseif (MyState == STOP_CMD_ST) then
& & & & & & & & OnSTOP_CMD_ST ()
& & & & elseif (MyState == ATTACK_OBJECT_CMD_ST) then
& & & & & & & & OnATTACK_OBJECT_CMD_ST ()
& & & & elseif (MyState == ATTACK_AREA_CMD_ST) then
& & & & & & & & OnATTACK_AREA_CMD_ST ()
& & & & elseif (MyState == PATROL_CMD_ST) then
& & & & & & & & OnPATROL_CMD_ST ()
& & & & elseif (MyState == HOLD_CMD_ST) then
& & & & & & & & OnHOLD_CMD_ST ()
& & & & elseif (MyState == SKILL_OBJECT_CMD_ST) then
& & & & & & & & OnSKILL_OBJECT_CMD_ST ()
& & & & elseif (MyState == SKILL_AREA_CMD_ST) then
& & & & & & & & OnSKILL_AREA_CMD_ST ()
& & & & elseif (MyState == FOLLOW_CMD_ST) then
& & & & & & & & OnFOLLOW_CMD_ST ()
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 指令处理
--------------------------------------------------------------------------------
function ProcessCommand (msg)
& & & & if (msg[1] == MOVE_CMD) then
& & & & & & & & OnMOVE_CMD (msg[2],msg[3])
& & & & elseif (msg[1] == STOP_CMD) then
& & & & & & & & OnSTOP_CMD ()
& & & & elseif (msg[1] == ATTACK_OBJECT_CMD) then
& & & & & & & & OnATTACK_OBJECT_CMD (msg[2])
& & & & elseif (msg[1] == ATTACK_AREA_CMD) then
& & & & & & & & OnATTACK_AREA_CMD (msg[2],msg[3])
& & & & elseif (msg[1] == PATROL_CMD) then
& & & & & & & & OnPATROL_CMD (msg[2],msg[3])
& & & & elseif (msg[1] == HOLD_CMD) then
& & & & & & & & OnHOLD_CMD ()
& & & & elseif (msg[1] == SKILL_OBJECT_CMD) then
& & & & & & & & OnSKILL_OBJECT_CMD (msg[2],msg[3],msg[4],msg[5])
& & & & elseif (msg[1] == SKILL_AREA_CMD) then
& & & & & & & & OnSKILL_AREA_CMD (msg[2],msg[3],msg[4],msg[5])
& & & & elseif (msg[1] == FOLLOW_CMD) then
& & & & & & & & OnFOLLOW_CMD ()
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 移动指令处理
--------------------------------------------------------------------------------
function OnMOVE_CMD (x,y)
& & & & TraceAI (&移动指令&)
& & & & Move (MyID,x,y)& & & &
& & & & MyState = MOVE_CMD_ST
& & & & DestX = x
& & & & DestY = y
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 停止指令处理
--------------------------------------------------------------------------------
function OnSTOP_CMD ()
& & & & TraceAI (&停止指令&)
& & & & if (GetV(V_MOTION,MyID) ~= MOTION_STAND) then
& & & & & & & & Move (MyID,GetV(V_POSITION,MyID))
& & & & end
& & & & MyState = IDLE_ST
& & & & DestX = 0
& & & & DestY = 0
& & & & MyEnemy = 0
& & & & MySkill = 0
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 攻击指令处理
--------------------------------------------------------------------------------
function OnATTACK_OBJECT_CMD (id)
& & & & TraceAI (&攻击指令&)
& & & & MyEnemy = id
& & & & MyState = CHASE_ST
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 区域攻击指令处理
--------------------------------------------------------------------------------
function OnATTACK_AREA_CMD (x,y)
& & & & TraceAI (&区域攻击指令&)
& & & & if (x ~= DestX or y ~= DestY or MOTION_MOVE ~= GetV(V_MOTION,MyID)) then
& & & & & & & & Move (MyID,x,y)& & & &
& & & & end
& & & & DestX = x
& & & & DestY = y
& & & & MyEnemy = 0
& & & & MyState = ATTACK_AREA_CMD_ST
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 巡逻指令处理
--------------------------------------------------------------------------------
function OnPATROL_CMD (x,y)
& & & & TraceAI (&巡逻指令&)
& & & & PatrolX , PatrolY = GetV (V_POSITION,MyID)
& & & & DestX = x
& & & & DestY = y
& & & & Move (MyID,x,y)
& & & & MyState = PATROL_CMD_ST
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 死守指令处理
--------------------------------------------------------------------------------
function OnHOLD_CMD ()
& & & & TraceAI (&死守指令&)
& & & & DestX = 0
& & & & DestY = 0
& & & & MyEnemy = 0
& & & & MyState = HOLD_CMD_ST
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能指令处理
--------------------------------------------------------------------------------
function OnSKILL_OBJECT_CMD (level,skill,id)
& & & & TraceAI (&技能指令&)
& & & & MySkillLevel = level
& & & & MySkill = skill
& & & & MyEnemy = id
& & & & MyState = CHASE_ST
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 区域技能指令处理
--------------------------------------------------------------------------------
function OnSKILL_AREA_CMD (level,skill,x,y)
& & & & TraceAI (&区域技能指令&)
& & & & Move (MyID,x,y)
& & & & DestX = x
& & & & DestY = y
& & & & MySkillLevel = level
& & & & MySkill = skill
& & & & MyState = SKILL_AREA_CMD_ST
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 跟随指令处理
--------------------------------------------------------------------------------
function OnFOLLOW_CMD ()
& & & & TraceAI (&跟随指令 : 变更生命体本质&)
& & & & if (MyKind == 0) then
& & & & & & & & MyKind = HOMUN_KIND
& & & & else
& & & & & & & & MyKind = 0
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 状态处理
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function OnIDLE_ST ()& & & &
& & & & TraceAI (&休息状态中&)
& & & & local cmd = List.popleft(ResCmdList)
& & & & local timer
& & & & if (cmd ~= nil) then& & & & & & & &
& & & & & & & & ProcessCommand (cmd)& & & & -- 处理预订指令
& & & & & & & & return
& & & & end
& & & & if (HomunType == LIF or HomunType == LIF_H) then
& & & & & & & & if (LIF_HEAL_LEVEL & 0) then
& & & & & & & & & & & & if (Get_HP_Percent(OwnerID) & LIMIT_OWNER_HP_LOW) then
& & & & & & & & & & & & & & & & timer = GetTick() / 1000
& & & & & & & & & & & & & & & & if ((timer - LIF_HEAL_TIMER) & LIF_HEAL_DELAY) then
& & & & & & & & & & & & & & & & & & & & math.randomseed(GetTick())& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & if (math.random(0,99) & LIF_HEAL_PROB) then
& & & & & & & & & & & & & & & & & & & & & & & & sp = GetV(V_SP,MyID)
& & & & & & & & & & & & & & & & & & & & & & & & if (sp &= LIF_HEAL_COST[LIF_HEAL_LEVEL]) then
& & & & & & & & & & & & & & & & & & & & & & & & & & & & if (sp &= LIF_HEAL_SP) then
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & SkillObject(MyID,LIF_HEAL_LEVEL,LIF_HEAL,OwnerID)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & LIF_HEAL_TIMER = timer
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & TraceAI (&使用技能 : 治愈之手&)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & Seek_Enemy ()
& & & & if (MyEnemy ~= 0) then
& & & & & & & & MyState = CHASE_ST
& & & & & & & & TraceAI (&休息 -& 追击&)
& & & & & & & & return
& & & & end
& & & & if (Get_Distance_ID(MyID,OwnerID) & DIST_OWNER_MIN) then
& & & & & & & & MyState = FOLLOW_ST
& & & & & & & & TraceAI (&休息 -& 跟随&)
& & & & & & & & return
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function OnFOLLOW_ST ()
& & & & TraceAI (&跟随状态中&)
& & & & local x,y
& & & & x,y = GetV (V_POSITION,OwnerID)
& & & & if (Get_Distance_IDxy(MyID,x,y) &= DIST_OWNER_MIN) then
& & & & & & & & MyState = IDLE_ST
& & & & & & & & TraceAI (&跟随 -& 休息&)
& & & & & & & & return
& & & & end
& & & & if (x ~= DestX or y ~= DestY) then
& & & & & & & & Move(MyID,x,y)
& & & & & & & & DestX,DestY = x,y
& & & & & & & & TraceAI (&跟随 -& 跟随 : 主人座标改变&)
& & & & & & & & return
& & & & end& & & &
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function OnCHASE_ST ()
& & & & TraceAI (&追击中&)
& & & & local dis
& & & & local timer
& & & & local sp
& & & & local x,y
& & & & if (Get_Distance_ID(MyID,OwnerID) & DIST_OWNER_MAX) then
& & & & & & & & MyState = RETURN_ST
& & & & & & & & MyEnemy = 0
& & & & & & & & TraceAI (&追击 -& 回归 : 离主人太远&)
& & & & & & & & return
& & & & end
& & & & dis = Get_Distance_ID(MyID,MyEnemy)
& & & & if (dis == -1) then
& & & & & & & & MyState = RETURN_ST
& & & & & & & & MyEnemy = 0
& & & & & & & & TraceAI (&追击 -& 回归 : 敌人已死&)
& & & & & & & & return
& & & & end
& & & & & & & &
& & & & if (dis & HOMUN_SIGHT) then
& & & & & & & & MyState = RETURN_ST
& & & & & & & & MyEnemy = 0
& & & & & & & & TraceAI (&追击 -& 回归 : 敌人超出视距&)
& & & & & & & & return
& & & & end
& & & & x, y = GetV (V_POSITION,MyEnemy)
& & & & if (Get_Distance_IDxy(OwnerID,x,y) & DIST_OWNER_MAX) then
& & & & & & & & MyState = RETURN_ST
& & & & & & & & MyEnemy = 0
& & & & & & & & TraceAI (&追击 -& 回归 : 敌人离主人太远&)
& & & & & & & & return
& & & & end
& & & & if (DestX ~= x or DestY ~= y) then
& & & & & & & & DestX, DestY = x,y
& & & & & & & & Move (MyID,DestX,DestY)
& & & & & & & & TraceAI (&追击 -& 追击 : 敌人座标改变&)
& & & & & & & & return
& & & & end
& & & & if (HomunType == FILIR or HomunType == FILIR_H) then
& & & & & & & & if (FLI_FLEET_LEVEL & 0) then
& & & & & & & & & & & & timer = GetTick() / 1000
& & & & & & & & & & & & if ((timer - FLI_FLEET_TIMER) & FLI_FLEET_DELAY) then
& & & & & & & & & & & & & & & & math.randomseed(GetTick())& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & if (math.random(0,99) & FLI_FLEET_PROB) then
& & & & & & & & & & & & & & & & & & & & sp = GetV(V_SP,MyID)
& & & & & & & & & & & & & & & & & & & & if (sp &= FLI_FLEET_COST[FLI_FLEET_LEVEL]) then
& & & & & & & & & & & & & & & & & & & & & & & & if (sp &= FLI_FLEET_SP) then
& & & & & & & & & & & & & & & & & & & & & & & & & & & & SkillObject(MyID,FLI_FLEET_LEVEL,FLI_FLEET,MyID)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & FLI_FLEET_TIMER = timer
& & & & & & & & & & & & & & & & & & & & & & & & & & & & TraceAI (&使用技能 : 横越速度&)
& & & & & & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & if (FLI_MOON_LEVEL & 0) then
& & & & & & & & & & & & if (dis &= GetV (V_SKILLATTACKRANGE,MyID,FLI_MOON)) then
& & & & & & & & & & & & & & & & timer = GetTick() / 1000
& & & & & & & & & & & & & & & & if ((timer - FLI_MOON_TIMER) & FLI_MOON_DELAY) then
& & & & & & & & & & & & & & & & & & & & math.randomseed(GetTick())& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & if (math.random(0,99) & FLI_MOON_PROB) then
& & & & & & & & & & & & & & & & & & & & & & & & sp = GetV(V_SP,MyID)
& & & & & & & & & & & & & & & & & & & & & & & & if (sp &= FLI_MOON_COST[FLI_MOON_LEVEL]) then
& & & & & & & & & & & & & & & & & & & & & & & & & & & & if (sp &= FLI_MOON_SP) then
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & MyState = ATTACK_SKILL_ST
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & MySkill = FLI_MOON
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & MySkillLevel = FLI_MOON_LEVEL
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & FLI_MOON_TIMER = timer
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & TraceAI (&追击 -& 技能攻击 : 月光&)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & return
& & & & & & & & & & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & if (HomunType == VANILMIRTH or HomunType == VANILMIRTH_H) then
& & & & & & & & if (VAN_CAPRICE_LEVEL & 0) then
& & & & & & & & & & & & if (dis &= GetV (V_SKILLATTACKRANGE,MyID,VAN_CAPRICE)) then
& & & & & & & & & & & & & & & & timer = GetTick() / 1000
& & & & & & & & & & & & & & & & if ((timer - VAN_CAPRICE_TIMER) & VAN_CAPRICE_DELAY) then
& & & & & & & & & & & & & & & & & & & & math.randomseed(GetTick())& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & if (math.random(0,99) & VAN_CAPRICE_PROB) then
& & & & & & & & & & & & & & & & & & & & & & & & sp = GetV(V_SP,MyID)
& & & & & & & & & & & & & & & & & & & & & & & & if (sp &= VAN_CAPRICE_COST[VAN_CAPRICE_LEVEL]) then
& & & & & & & & & & & & & & & & & & & & & & & & & & & & if (sp &= VAN_CAPRICE_SP) then
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & MyState = ATTACK_SKILL_ST
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & MySkill = VAN_CAPRICE
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & MySkillLevel = VAN_CAPRICE_LEVEL
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & VAN_CAPRICE_TIMER = timer
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & TraceAI (&追击 -& 技能攻击 : 善变&)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & return
& & & & & & & & & & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & & & & & end
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & if (dis &= GetV (V_ATTACKRANGE,MyID)) then
& & & & & & & & MyState = ATTACK_ST
& & & & & & & & TraceAI (&追击 -& 攻击&)
& & & & & & & & return
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function OnATTACK_ST ()
& & & & TraceAI (&攻击状态中&)& & & &
& & & & Attack (MyID,MyEnemy)
& & & & MyState = CHASE_ST
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能攻击
--------------------------------------------------------------------------------
function OnATTACK_SKILL_ST ()
& & & & TraceAI (&技能攻击状态中&)
& & & & SkillObject(MyID,MySkillLevel,MySkill,MyEnemy)
& & & & MyState = CHASE_ST
& & & & MySkill = 0
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function OnRETURN_ST ()
& & & & TraceAI (&回归状态中&)
& & & & local x,y
& & & & Seek_Enemy ()
& & & & if (MyEnemy ~= 0) then
& & & & & & & & MyState = CHASE_ST
& & & & & & & & TraceAI (&回归 -& 追击&)
& & & & & & & & return
& & & & end
& & & & x,y = GetV(V_POSITION,OwnerID)
& & & & if (Get_Distance_IDxy(MyID,x,y) &= DIST_OWNER_MIN) then
& & & & & & & & MyState = IDLE_ST
& & & & & & & & TraceAI (&回归 -& 休息&)
& & & & & & & & return
& & & & end
& & & & if (x ~= DestX or y ~= DestY) then
& & & & & & & & Move(MyID,x,y)
& & & & & & & & DestX,DestY = x,y
& & & & & & & & TraceAI (&回归 -& 回归 : 主人座标改变&)
& & & & & & & & return
& & & & end& & & &
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function OnESCAPE_ST ()
& & & & TraceAI (&逃跑状态中&)
& & & & local hp_percent = Get_HP_Percent(MyID)
& & & & local x,y
& & & & local x1,y1
& & & & if (hp_percent &= HOMUN_HP_LOW) then
& & & & & & & & MyState = FOLLOW_ST
& & & & & & & & TraceAI (&逃跑 -& 回归&)
& & & & & & & & return
& & & & end
& & & & x,y = GetV(V_POSITION,MyID)
& & & & if (x == DestX and y == DestY) then
& & & & & & & & x,y = GetV(V_POSITION,OwnerID)
& & & & & & & & if (ESCAPE_WAY == 0) then
& & & & & & & & & & & & math.randomseed(GetTick())
& & & & & & & & & & & & repeat
& & & & & & & & & & & & & & & & x1 = x + math.random(-DIST_OWNER_MAX,DIST_OWNER_MAX)
& & & & & & & & & & & & & & & & y1 = y + math.random(-DIST_OWNER_MAX,DIST_OWNER_MAX)
& & & & & & & & & & & & until Get_Distance_IDxy(OwnerID,x1,y1) &= DIST_OWNER_MAX
& & & & & & & & & & & & DestX,DestY = x1,y1
& & & & & & & & elseif (ESCAPE_WAY == 1) then
& & & & & & & & & & & & x1 = math.floor(math.cos(math.rad(EscapeAngle)) * DIST_OWNER_MAX + 0.5)
& & & & & & & & & & & & y1 = math.floor(math.sin(math.rad(EscapeAngle)) * DIST_OWNER_MAX + 0.5)
& & & & & & & & & & & & DestX = x + x1
& & & & & & & & & & & & DestY = y + y1
& & & & & & & & & & & & EscapeAngle = EscapeAngle + 45
& & & & & & & & & & & & if (EscapeAngle &= 360) then
& & & & & & & & & & & & & & & & EscapeAngle = EscapeAngle - 360
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & Move(MyID,DestX,DestY)
& & & & & & & & TraceAI (string.format(&逃跑 -& 逃跑 : HP百分比为%3.2f : 到定点&,hp_percent))
& & & & & & & & return
& & & & end
& & & & if (GetV(V_MOTION,MyID) == MOTION_STAND) then
& & & & & & & & x,y = GetV(V_POSITION,OwnerID)
& & & & & & & & if (ESCAPE_WAY == 0) then
& & & & & & & & & & & & math.randomseed(GetTick())
& & & & & & & & & & & & repeat
& & & & & & & & & & & & & & & & x1 = x + math.random(-DIST_OWNER_MAX,DIST_OWNER_MAX)
& & & & & & & & & & & & & & & & y1 = y + math.random(-DIST_OWNER_MAX,DIST_OWNER_MAX)
& & & & & & & & & & & & until Get_Distance_IDxy(OwnerID,x1,y1) &= DIST_OWNER_MAX
& & & & & & & & & & & & DestX,DestY = x1,y1
& & & & & & & & elseif (ESCAPE_WAY == 1) then
& & & & & & & & & & & & x1 = math.floor(math.cos(math.rad(EscapeAngle)) * DIST_OWNER_MAX + 0.5)
& & & & & & & & & & & & y1 = math.floor(math.sin(math.rad(EscapeAngle)) * DIST_OWNER_MAX + 0.5)
& & & & & & & & & & & & DestX = x + x1
& & & & & & & & & & & & DestY = y + y1
& & & & & & & & & & & & EscapeAngle = EscapeAngle + 45
& & & & & & & & & & & & if (EscapeAngle &= 360) then
& & & & & & & & & & & & & & & & EscapeAngle = EscapeAngle - 360
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & Move(MyID,DestX,DestY)
& & & & & & & & TraceAI (string.format(&逃跑 -& 逃跑 : HP百分比为%3.2f : 站立&,hp_percent))
& & & & & & & & return
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 移动指令
--------------------------------------------------------------------------------
function OnMOVE_CMD_ST ()
& & & & TraceAI (&移动指令状态中&)
& & & & local x, y = GetV (V_POSITION,MyID)
& & & & if (x == DestX and y == DestY) then
& & & & & & & & MyState = RETURN_ST
& & & & & & & & TraceAI (&移动指令 -& 回归&)
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 停止指令
--------------------------------------------------------------------------------
function OnSTOP_CMD_ST ()
& & & & TraceAI (&停止指令状态中&)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 攻击指令
--------------------------------------------------------------------------------
function OnATTACK_OBJECT_CMD_ST ()
& & & & TraceAI (&攻击指令状态中&)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 区域攻击指令
--------------------------------------------------------------------------------
function OnATTACK_AREA_CMD_ST ()
& & & & TraceAI (&区域攻击指令状态中&)
& & & & local& & & & object = GetOwnerEnemy (MyID)
& & & & if (object == 0) then& & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & object = GetMyEnemy (MyID)
& & & & end
& & & & if (object ~= 0) then
& & & & & & & & MyState = CHASE_ST
& & & & & & & & MyEnemy = object
& & & & & & & & return
& & & & end
& & & & local x , y = GetV (V_POSITION,MyID)
& & & & if (x == DestX and y == DestY) then
& & & & & & & & MyState = IDLE_ST
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 巡逻指令
--------------------------------------------------------------------------------
function OnPATROL_CMD_ST ()
& & & & TraceAI (&巡逻指令状态中&)
& & & & local& & & & object = GetOwnerEnemy (MyID)
& & & & if (object == 0) then& & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & object = GetMyEnemy (MyID)
& & & & end
& & & & if (object ~= 0) then
& & & & & & & & MyState = CHASE_ST
& & & & & & & & MyEnemy = object
& & & & & & & & TraceAI (&PATROL_CMD_ST -& CHASE_ST : ATTACKED_IN&)
& & & & & & & & return
& & & & end
& & & & local x , y = GetV (V_POSITION,MyID)
& & & & if (x == DestX and y == DestY) then
& & & & & & & & DestX = PatrolX
& & & & & & & & DestY = PatrolY
& & & & & & & & PatrolX = x
& & & & & & & & PatrolY = y
& & & & & & & & Move (MyID,DestX,DestY)
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 死守指令
--------------------------------------------------------------------------------
function OnHOLD_CMD_ST ()
& & & & TraceAI (&死守指令状态中&)
& & & & if (MyEnemy ~= 0) then
& & & & & & & & local d = Get_Distance_ID(MyID,MyEnemy)
& & & & & & & & if (d ~= -1 and d &= GetV(V_ATTACKRANGE,MyID)) then
& & & & & & & & & & & & Attack (MyID,MyEnemy)
& & & & & & & & else
& & & & & & & & & & & & MyEnemy = 0
& & & & & & & & end
& & & & & & & & return
& & & & end
& & & & local& & & & object = GetOwnerEnemy (MyID)
& & & & if (object == 0) then& & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & object = GetMyEnemy (MyID)
& & & & & & & & if (object == 0) then& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & return
& & & & & & & & end
& & & & end
& & & & MyEnemy = object
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能指令
--------------------------------------------------------------------------------
function OnSKILL_OBJECT_CMD_ST ()
& & & & TraceAI (&技能指令状态中&)& & & &
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 区域技能指令
--------------------------------------------------------------------------------
function OnSKILL_AREA_CMD_ST ()
& & & & TraceAI (&区域技能指令状态中&)
& & & & local x , y = GetV (V_POSITION,MyID)
& & & & if (Get_Distance_xy(x,y,DestX,DestY) &= GetV(V_SKILLATTACKRANGE,MyID,MySkill)) then
& & & & & & & & SkillGround (MyID,MySkillLevel,MySkill,DestX,DestY)
& & & & & & & & MyState = IDLE_ST
& & & & & & & & MySkill = 0
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 跟随指令
--------------------------------------------------------------------------------
function OnFOLLOW_CMD_ST ()
& & & & TraceAI (&跟随指令状态中&)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 搜寻敌人
--------------------------------------------------------------------------------
function Seek_Enemy ()
& & & & local result = 0
& & local actors = GetActors ()
& & local enemys_1 = {}
& & & & local enemys_2 = {}
& & & & local enemys_3 = {}
& & & & local enemys_4 = {}
& & & & local index = {1,1,1,1}
& & & & local target
& & & & local motion
& & & & local dis
& & & & local min_dis
& & & & for i,v in ipairs(actors) do
& & & & & & & & if (v ~= OwnerID and v ~= MyID) then
& & & & & & & & & & & & target = GetV (V_TARGET,OwnerID)
& & & & & & & & & & & & if (target == v) then
& & & & & & & & & & & & & & & & if (Get_Distance_ID(OwnerID,v) &= DIST_OWNER_MAX) then
& & & & & & & & & & & & & & & & & & & & enemys_1[index[1]] = v
& & & & & & & & & & & & & & & & & & & & index[1] = index[1] + 1
& & & & & & & & & & & & & & & & end& & & &
& & & & & & & & & & & & end
& & & & & & & & & & & & target = GetV (V_TARGET,v)
& & & & & & & & & & & & if (target == OwnerID or target == MyID) then
& & & & & & & & & & & & & & & & if (Get_Distance_ID(OwnerID,v) &= DIST_OWNER_MAX) then
& & & & & & & & & & & & & & & & & & & & enemys_2[index[2]] = v
& & & & & & & & & & & & & & & & & & & & index[2] = index[2] + 1
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & end
& & & & & & & & & & & & if (IsMonster(v) == 1) then
& & & & & & & & & & & & & & & & if (Get_Distance_ID(OwnerID,v) &= DIST_OWNER_MAX) then
& & & & & & & & & & & & & & & & & & & & enemys_3[index[3]] = v
& & & & & & & & & & & & & & & & & & & & index[3] = index[3] + 1
& & & & & & & & & & & & & & & & end
& & & & & & & & & & & & end
& & & & & & & & & & & & if (Get_Distance_ID(OwnerID,v) &= DIST_OWNER_MAX) then
& & & & & & & & & & & & & & & & enemys_4[index[4]] = v
& & & & & & & & & & & & & & & & index[4] = index[4] + 1
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & if (MyKind & 0) then
& & & & & & & & min_dis = HOMUN_SIGHT + 1
& & & & & & & & for i,v in ipairs(enemys_1) do
& & & & & & & & & & & & dis = Get_Distance_ID(MyID,v)
& & & & & & & & & & & & if (dis & min_dis) then
& & & & & & & & & & & & & & & & result = v
& & & & & & & & & & & & & & & & min_dis = dis
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & if (result ~= 0) then
& & & & & & & & & & & & if (Get_HP_Percent(MyID) &= HOMUN_HP_HIGH) then
& & & & & & & & & & & & & & & & MyEnemy = result
& & & & & & & & & & & & & & & & return
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & if (MyKind & 1) then
& & & & & & & & min_dis = HOMUN_SIGHT + 1
& & & & & & & & for i,v in ipairs(enemys_2) do
& & & & & & & & & & & & dis = Get_Distance_ID(MyID,v)
& & & & & & & & & & & & if (dis & min_dis) then
& & & & & & & & & & & & & & & & result = v
& & & & & & & & & & & & & & & & min_dis = dis
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & if (result ~= 0) then
& & & & & & & & & & & & if (Get_HP_Percent(MyID) &= HOMUN_HP_HIGH) then
& & & & & & & & & & & & & & & & MyEnemy = result
& & & & & & & & & & & & & & & & return
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & if (MyKind & 2) then
& & & & & & & & min_dis = HOMUN_SIGHT + 1
& & & & & & & & for i,v in ipairs(enemys_3) do
& & & & & & & & & & & & dis = Get_Distance_ID(MyID,v)
& & & & & & & & & & & & if (dis & min_dis) then
& & & & & & & & & & & & & & & & result = v
& & & & & & & & & & & & & & & & min_dis = dis
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & if (result ~= 0) then
& & & & & & & & & & & & if (Get_HP_Percent(MyID) &= HOMUN_HP_HIGH) then
& & & & & & & & & & & & & & & & MyEnemy = result
& & & & & & & & & & & & & & & & return
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & if (MyKind & 3) then
& & & & & & & & min_dis = HOMUN_SIGHT + 1
& & & & & & & & for i,v in ipairs(enemys_4) do
& & & & & & & & & & & & dis = Get_Distance_ID(MyID,v)
& & & & & & & & & & & & if (dis & min_dis) then
& & & & & & & & & & & & & & & & result = v
& & & & & & & & & & & & & & & & min_dis = dis
& & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & if (result ~= 0) then
& & & & & & & & & & & & if (Get_HP_Percent(MyID) &= HOMUN_HP_HIGH) then
& & & & & & & & & & & & & & & & MyEnemy = result
& & & & & & & & & & & & & & & & return
& & & & & & & & & & & & end
& & & & & & & & end
& & & & end
& & & & MyEnemy = 0
--------------------------------------------------------------------------------
--&&c function
function TraceAI (string) end
function MoveToOwner (id) end
function Move (id,x,y) end
function Attack (id,id) end
function GetV (V_,id) end
function GetActors () end
function GetTick () end
function GetMsg (id) end
function GetResMsg (id) end
function SkillObject (id,level,skill,target) end
function SkillGround (id,level,skill,x,y) end
function IsMonster (id) end
--------------------------------------------------------------------------------
-- GetV 使用常数值
--------------------------------------------------------------------------------
V_OWNER& & & & & & & & & & & & & & & & & & & & = 0& & & & & & & & -- 主人ID
V_POSITION& & & & & & & & & & & & & & & & = 1& & & & & & & & -- 现在位置x,y
V_TYPE& & & & & & & & & & & & & & & & & & & & = 2& & & & & & & & -- 个体类型
V_MOTION& & & & & & & & & & & & & & & & = 3& & & & & & & & -- 动作
V_ATTACKRANGE& & & & & & & & & & & & = 4& & & & & & & & -- 攻击范围
V_TARGET& & & & & & & & & & & & & & & & = 5& & & & & & & & -- 目标
V_SKILLATTACKRANGE& & & & & & & & = 6& & & & & & & & -- 技能攻击范围
V_HOMUNTYPE& & & & & & & & & & & & & & & & = 7& & & & & & & & -- 生命体种类
V_HP& & & & & & & & & & & & & & & & & & & & = 8& & & & & & & & -- HP
V_SP& & & & & & & & & & & & & & & & & & & & = 9& & & & & & & & -- SP
V_MAXHP& & & & & & & & & & & & & & & & & & & & = 10& & & & -- 最大HP
V_MAXSP& & & & & & & & & & & & & & & & & & & & = 11& & & & -- 最大SP
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 生命体种类
--------------------------------------------------------------------------------
LIF& & & & & & & & & & & & & & & & & & & & = 1& & & & & & & & -- 丽芙
AMISTR& & & & & & & & & & & & & & & & = 2& & & & & & & & -- 艾咪斯可鲁
FILIR& & & & & & & & & & & & & & & & = 3& & & & & & & & -- 飞里乐
VANILMIRTH& & & & & & & & & & & & = 4& & & & & & & & -- 巴尼米乐斯
LIF_H& & & & & & & & & & & & & & & & = 5& & & & & & & & -- 进化丽芙
AMISTR_H& & & & & & & & & & & & = 6& & & & & & & & -- 进化艾咪斯可鲁
FILIR_H& & & & & & & & & & & & & & & & = 7& & & & & & & & -- 进化飞里乐
VANILMIRTH_H& & & & & & & & = 8& & & & & & & & -- 进化巴尼米乐斯
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
MOTION_STAND& & & & & & & & = 0& & & & & & & & -- 站立
MOTION_MOVE& & & & & & & & & & & & = 1& & & & & & & & -- 移动
MOTION_ATTACK& & & & & & & & = 2& & & & & & & & -- 攻击中
MOTION_DEAD& &&&& & & & = 3& & & & & & & & -- 死亡
MOTION_SUFFER& & & & & & & & = 4& & & & & & & & -- 挨打
MOTION_SIT& && && & = 6& &&&-- 坐下
MOTION_ATTACK2& & & & & & & & = 9& & & & & & & & -- 攻击时
MOTION_SKILL& && &&&= 12& & -- 主人投掷药水给生命体时主人状态
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
LIF_HEAL& & & & & & & & & & & & = 8001& & & & & & & & -- 治愈之手
LIF_AVOID& & & & & & & & & & & & = 8002& & & & & & & & -- 轻捷移动
LIF_BRAIN& & & & & & & & & & & & = 8003& & & & & & & & -- 脑手术
-- 进化丽芙
LIF_CHANGE& & & & & & & & & & & & = 8004& & & & & & & & -- 智力变换
-- 艾咪斯可鲁
AMI_CASTLE& & & & & & & & & & & & = 8005& & & & & & & & -- 位置互换
AMI_DEFENSE& & & & & & & & & & & & = 8006& & & & & & & & -- 防御力
AMI_SKIN& & & & & & & & & & & & = 8007& & & & & & & & -- 活命之肤
-- 进化艾咪斯可鲁
AMI_BLOODLUST& & & & & & & & = 8008& & & & & & & & -- 血的贪求
FLI_MOON& & & & & & & & & & & & = 8009& & & & & & & & -- 月光
FLI_FLEET& & & & & & & & & & & & = 8010& & & & & & & & -- 横越速度
FLI_SPEED& & & & & & & & & & & & = 8011& & & & & & & & -- 紧急回避
-- 进化飞里乐
FLI_SBR44& & & & & & & & & & & & = 8012& & & & & & & & -- S.B.R.44
-- 巴尼米乐斯
VAN_CAPRICE& & & & & & & & & & & & = 8013& & & & & & & & -- 善变
VAN_CHAOTIC& & & & & & & & & & & & = 8014& & & & & & & & -- 混乱的祈福
VAN_INSTRUCT& & & & & & & & = 8015& & & & & & & & -- 变更指示
-- 进化巴尼米乐斯
VAN_EXPLOSION& & & & & & & & = 8016& & & & & & & & -- 生物爆炸
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 技能消耗
--------------------------------------------------------------------------------
LIF_HEAL_COST& & & & & & & & & & & & = {13,16,19,22,25}& & & & & & & & -- 治愈之手
LIF_AVOID_COST& & & & & & & & & & & & = {20,25,30,35,40}& & & & & & & & -- 轻捷移动
-- 进化丽芙
LIF_CHANGE_COST& & & & & & & & & & & & = {0,0,0,0,0}& & & & & & & & & & & & -- 智力变换
-- 艾咪斯可鲁
AMI_CASTLE_COST& & & & & & & & & & & & = {10,10,10,10,10}& & & & & & & & -- 位置互换
AMI_DEFENSE_COST& & & & & & & & = {20,25,30,35,40}& & & & & & & & -- 防御力
-- 进化艾咪斯可鲁
AMI_BLOODLUST_COST& & & & & & & & = {0,0,0,0,0}& & & & & & & & & & & & -- 血的贪求
FLI_MOON_COST& & & & & & & & & & & & = {4,8,12,16,20}& & & & & & & & -- 月光
FLI_FLEET_COST& & & & & & & & & & & & = {30,40,50,60,70}& & & & & & & & -- 横越速度
FLI_SPEED_COST& & & & & & & & & & & & = {30,40,50,60,70}& & & & & & & & -- 紧急回避
-- 进化飞里乐
FLI_SBR44_COST& & & & & & & & & & & & = {0,0,0,0,0}& & & & & & & & & & & & -- S.B.R.44
-- 巴尼米乐斯
VAN_CAPRICE_COST& & & & & & & & = {22,24,26,28,30}& & & & & & & & -- 善变
VAN_CHAOTIC_COST& & & & & & & & = {40,40,40,40,40}& & & & & & & & & & & & -- 混乱的祈福
-- 进化巴尼米乐斯
VAN_EXPLOSION_COST& & & & & & & & = {0,0,0,0,0}& & & & & & & & & & & & -- 生物爆炸
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
NONE_CMD& & & & & & & & & & & & = 0& & & & & & & & -- 无指令
MOVE_CMD& & & & & & & & & & & & = 1& & & & & & & & -- 移动
STOP_CMD& & & & & & & & & & & & = 2& & & & & & & & -- 停止
ATTACK_OBJECT_CMD& & & & = 3& & & & & & & & -- 攻击
ATTACK_AREA_CMD& & & & & & & & = 4& & & & & & & & -- 区域攻击
PATROL_CMD& & & & & & & & & & & & = 5& & & & & & & & -- 巡逻
HOLD_CMD& & & & & & & & & & & & = 6& & & & & & & & -- 死守
SKILL_OBJECT_CMD& & & & = 7& & & & & & & & -- 技能
SKILL_AREA_CMD& & & & & & & & = 8& & & & & & & & -- 区域技能
FOLLOW_CMD& & & & & & & & & & & & = 9& & & & & & & & -- 跟随
--------------------------------------------------------------------------------
--[[ 指令参数
& & & & {命令编号,X座标,Y座标}
& & & && &
& & & & {命令编号}
ATTACK_OBJECT_CMD
& & & & {命令编号,目标ID}
ATTACK_AREA_CMD& & & &
& & & & {命令编号,X座标,Y座标}
PATROL_CMD& & & &
& & & & {命令编号,X座标,Y座标}
& & & & {命令编号}
SKILL_OBJECT_CMD
& & & & {命令编号,技能等级,技能种类,目标ID}
SKILL_AREA_CMD
& & & & {命令编号,技能等级,技能种类,X座标,Y座标}
FOLLOW_CMD
& & & & {命令编号}
require &./AI/USER_AI/Const.lua&
--------------------------------------------------------------------------------
-- List清单处理函式
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function List.new ()
& & & & return { first = 0, last = -1}
--------------------------------------------------------------------------------
function List.pushleft (list, value)
& & & & local first = list.first-1
& & & & list.first&&= first
& & & & list[first] =
--------------------------------------------------------------------------------
function List.pushright (list, value)
& & & & local last = list.last + 1
& & & & list.last = last
& & & & list[last] = value
--------------------------------------------------------------------------------
function List.popleft (list)
& & & & local first = list.first
& & & & if first & list.last then
& & & & & & & & return nil
& & & & end
& & & & local value = list[first]
& & & & list[first] = nil& && && &-- to allow garbage collection
& & & & list.first = first+1
& & & & return value
--------------------------------------------------------------------------------
function List.popright (list)
& & & & local last = list.last
& & & & if list.first & last then
& & & & & & & & return nil
& & & & end
& & & & local value = list[last]
& & & & list[last] = nil
& & & & list.last = last-1
& & & & return value
--------------------------------------------------------------------------------
function List.clear (list)
& & & & for i,v in ipairs(list) do
& & & & & & & & list = nil
& & & & end
& & & & if List.size(list) == 0 then
& & & & & & & & return
& & & & end
& & & & local first = list.first
& & & & local last&&= list.last
& & & & for i=first, last do
& & & & & & & & list = nil
& & & & end
& & & & list.first = 0
& & & & list.last = -1
--------------------------------------------------------------------------------
function List.size (list)
& & & & local size = list.last - list.first + 1
& & & & return size
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 计算座标间距离
--------------------------------------------------------------------------------
function Get_Distance_xy (x1,y1,x2,y2)
& & & & return math.floor(math.sqrt((x1-x2)^2+(y1-y2)^2) + 0.5)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 计算两者距离
--------------------------------------------------------------------------------
function Get_Distance_ID (id1,id2)
& & & & local x1, y1 = GetV (V_POSITION,id1)
& & & & local x2, y2 = GetV (V_POSITION,id2)
& & & & if (x1 == -1 or x2 == -1) then
& & & & & & & & return -1
& & & & end
& & & & return Get_Distance_xy (x1,y1,x2,y2)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 计算与座标距离
--------------------------------------------------------------------------------
function Get_Distance_IDxy (id,x,y)
& & & & local x1, y1 = GetV (V_POSITION,id)
& & & & if (x1 == -1 or x2 == -1) then
& & & & & & & & return -1
& & & & end
& & & & return Get_Distance_xy (x,y,x1,y1)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 是否在攻击范围
--------------------------------------------------------------------------------
function IsInAttackSight (id1,id2)
& & & & local d& & & & = Get_Distance_ID (id1,id2)
& & & & if (d == -1) then
& & & & & & & & return false
& & & & end
& & & & local a = 0
& & & & if (MySkill == 0) then
& & & & & & & & a& &&&= GetV (V_ATTACKRANGE,id1)
& & & & else
& & & & & & & & a& &&&= GetV (V_SKILLATTACKRANGE,id1,MySkill)
& & & & end
& & & & if a &= d then
& & & & & & & &
& & & & else
& & & & & & & &
& & & & end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 计算HP百分比
--------------------------------------------------------------------------------
function Get_HP_Percent (id)
& & & & return (GetV (V_HP,id)/GetV (V_MAXHP,id))*100
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 计算SP百分比
--------------------------------------------------------------------------------
function Get_SP_Percent (id)
& & & & return (GetV (V_SP,id)/GetV (V_MAXSP,id))*100
--------------------------------------------------------------------------------
[ 本帖最后由 Detry 于
21:46 编辑 ]
偶一辈子糊涂.
UID232845&帖子7052&精华0&威望0 &阅读权限100&性别男&来自bbs.17173&注册时间&
这个脚本对飞里乐有什么特别的?
再盛大的宴席,也终有他落幕的一刻。
UID280967&帖子344&精华0&威望0 &阅读权限100&注册时间&
原帖由 就素那浮云 于
20:38 发表
这个脚本对飞里乐有什么特别的?
根据自己需求改config设置,自动攻击改为辅助都行,自动用技能,多少逃跑几乎你能想到的都能办到,而且支持10.3
偶一辈子糊涂.
UID306262&帖子3093&精华0&威望0 &阅读权限100&来自kunlun&注册时间&
config设置??
UID280967&帖子344&精华0&威望0 &阅读权限100&注册时间&
原帖由 MiRacle·Ky☆ 于
20:48 发表
config设置??
是用记事本打开config.lua文件自己设置改就是了,旁边都有中文解说
偶一辈子糊涂.
UID298899&帖子430&精华0&威望0 &阅读权限100&注册时间&
强就一个字
UID19275&帖子5392&精华0&威望1 &阅读权限100&性别女&来自最后的伊甸园&注册时间&
LZ研究了多长时间?
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
UID291927&帖子16789&精华26&威望200 &阅读权限101&性别男&来自Polymer&注册时间&
function List.clear (list)
之后的代码也许被论坛吃了
楼主检查一下
把签名改回来~
UID280967&帖子344&精华0&威望0 &阅读权限100&注册时间&
原帖由 AIR 于
20:57 发表
LZ研究了多长时间?
我也忘了,喜欢就改点,不过应该还有BUG,有些功能没开别把10.3的技能放到10.2用啊,特别是技能发动几率,别设置10.3的技能非0啊,那样因为是10.2所以就会N多错误的,也希望TEST服的老兄帮我测试下10.3的部分。
偶一辈子糊涂.
UID280967&帖子344&精华0&威望0 &阅读权限100&注册时间&
原帖由 らёгαρん 于
20:58 发表
function List.clear (list)
之后的代码也许被论坛吃了
楼主检查一下
偶找斑竹帮忙传文件上去,害死人的,要我全贴出来
偶一辈子糊涂.
UID328693&帖子347&精华0&威望0 &阅读权限100&性别女&注册时间&
ms只看见 ai.lua&&const.lua&&util.lua...
等人完善中...
590) {this.resized= this.width=590; this.alt='点击查看全图\n按住CTRL滚动鼠标滚轮可进行缩放';}" onmouseover="if(this.width>590) {this.resized= this.width=590; this.style.cursor='hand'; this.alt='点击查看全图\n按住CTRL滚动鼠标滚轮可进行缩放';}" onclick="if(!this.resized) {} else {window.open('http://222.73.12.188/Public/WebUsers/ArticlePIC//khoqpldndg.gif');}" onmousewheel="return imgzoom(this);">
UID94720&帖子4646&精华0&威望23 &阅读权限100&注册时间&
巴哈那的?
UID329130&帖子2066&精华0&威望0 &阅读权限100&注册时间&
太长……保存下来慢慢研究
感谢楼主发帖
UID280967&帖子344&精华0&威望0 &阅读权限100&注册时间&
原帖由 geeseno1 于
21:03 发表
巴哈那的?
一部分是,但改进了很多细小地方,我也再改,,网络就是共享,我再想能不能把脚本治愈那}

我要回帖

更多关于 psv仙境传说ro和ace 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信