mod-playerbots icon indicating copy to clipboard operation
mod-playerbots copied to clipboard

请尽快引入指挥机制

Open shuheq578 opened this issue 1 year ago • 12 comments

PlayerBot 需要一个指挥官。 即使聪明如人脑,下团本也要人指挥,踢足球还要教练呢。 有了指挥统领全局,机器人只需要无脑技能循环。 指挥观察场上的一切,做出判断,必要时对机器人发出指令。 何时需要打断,何时需要躲避技能,就像某些插件一样,提醒队员。 世事如棋局局新,每次战斗,情况都不尽相同,而指挥会根据情况,做出合理判断,规范队员行为。 而现在是玩家在充当临时指挥的角色,但玩家又要参与战斗, 况且给玩家的权限也不多。 机器人是个团体,需要队友间的互相配合。 而怎样配合,应该交给指挥官,而不是一个个聪明的个体。 通常来说,傻瓜比聪明人更听话,机器人不需要那么聪明,笨一点更好。 就说到这吧,剩下的留给各位讨论。

shuheq578 avatar Sep 08 '23 18:09 shuheq578

PlayerBot 需要一个指挥官。 即使聪明如人脑,下团本也要人指挥,踢足球还要教练呢。 有了指挥统领全局,机器人只需要无脑技能循环。 指挥观察场上的一切,做出判断,必要时对机器人发出指令。 何时需要打断,何时需要躲避技能,就像某些插件一样,提醒队员。 世事如棋局局新,每次战斗,情况都不尽相同,而指挥会根据情况,做出合理判断,规范队员行为。 而现在是玩家在充当临时指挥的角色,但玩家又要参与战斗, 况且给玩家的权限也不多。 机器人是个团体,需要队友间的互相配合。 而怎样配合,应该交给指挥官,而不是一个个聪明的个体。 通常来说,傻瓜比聪明人更听话,机器人不需要那么聪明,笨一点更好。 就说到这吧,剩下的留给各位讨论。

不是有指令插件了吗?

garfieldz90 avatar Sep 09 '23 01:09 garfieldz90

PlayerBot 需要一个指挥官。 即使聪明如人脑,下团本也要人指挥,踢足球还要教练呢。 有了指挥统领全局,机器人只需要无脑技能循环。 指挥观察场上的一切,做出判断,必要时对机器人发出指令。 何时需要打断,何时需要躲避技能,就像某些插件一样,提醒队员。 世事如棋局局新,每次战斗,情况都不尽相同,而指挥会根据情况,做出合理判断,规范队员行为。 而现在是玩家在充当临时指挥的角色,但玩家又要参与战斗, 况且给玩家的权限也不多。 机器人是个团体,需要队友间的互相配合。 而怎样配合,应该交给指挥官,而不是一个个聪明的个体。 通常来说,傻瓜比聪明人更听话,机器人不需要那么聪明,笨一点更好。 就说到这吧,剩下的留给各位讨论。

不是有指令插件了吗?

人脑无法判断哪个技能能够打断,躲避技能时需要队友左移几步。 这是机器人指挥官做的事,看来你还是没明白我的意思。 机器人需要一个大脑,指挥他们协同作战。 这是一个配合问题,单一机器人无法做到。 比如队伍里有两个盗贼,指挥命令其中之一使用打断即可,另一个继续输出。 单纯强化单个机器人AI,A盗贼动,B盗贼也会动。 况且也有其他职业会打断的也会动。 而事先指令某个职业负责打断,该职业阵亡怎么办,这会让事情变得更加复杂。

shuheq578 avatar Sep 09 '23 05:09 shuheq578

另外多说一句,国内有个天蓝端机器人,能打团本,但也是事先指定了各种站位策略,以及机器人技能输出优先级等。 和临场指挥还是不一样。 下面贴出天蓝端的策略表仅供参考。

shuheq578 avatar Sep 09 '23 05:09 shuheq578

AI策略表的说明: mapId 地图id 必填 groupId 策略组。大家可以设计几套不同的策略,那么随机抽取一组执行,战斗的多样化。目前先填写0 boss的生物id ###indexId 优先级,从小到大排列。依次触发一条条的记录。 actionType 行为。 actionParam1 参数1 actionParam2 参数2 actionParam3 参数3 actionParam4 参数4 actionParam5 参数5 actionParam6 参数6

当actionType=1时,躲避aoe,自由跑位 BotRandomSmartMovement 这个写在aoe的东西,写到groupBot.cpp里面 actionParam1的值表示物体aoe的id,或者生物aoe的id。暴风雪之类的aoe则不用填写。写上0就好。 actionParam2 aoe的半径大小,参考范围5-20码

当actionType=2时,中了debuff,跑开人群 BotFarAwayGroup actionParam1的值表示debuff技能的id actionParam2 跑出去的距离

当actionType=3时 BotAllotCreatureTarget actionParam1的值表示集火的怪物id,注意配合roleNum使用。比如roleType=7,roleNum=3,表示派3个近战去集火这个怪 actionParam2 数量,表示派几个dps去集火这个怪 actionParam3 角色,0:全部人 1:全部,除了MT坦克,2:远程dps 3:近战dps,4:物理dps 5魔法dps 6:MT坦克,7:全部,除了ft

当actionType=4时,让机器人跑位到这个位置 SettingBotPositionSimple, 边跑边打,有延迟. 跟19功能类似 actionParam1 1:远程 2:近战 3:物理dps 4:魔法dps 5:奶妈 6:副坦1 7:副坦2 8:副坦3 9:MT actionParam2 x坐标 actionParam3 y坐标 actionParam4 z坐标 actionParam5 时间,毫秒。表示在该坐标,会一直停留n秒。该项必须要有值,默认填写1000 actionParam6 职业,可以为0. 职业1zs 2qs 3lr 4dz 5ms 6dk 7sm 8fs 9ss 11xd

当actionType=5时,远离某个生物或者物体 BotFarAwayCreatureByRole actionParam1 生物id或者物体的id actionParam2 远离的范围 actionParam3 角色0:全部, 1:远程 2:近战 3:坦克。

当actionType=6,让机器人执行驱散行为。BotAllFullDispel actionParam几个参数不用设置。

当actionType=7,BotSwitchPullTarget 给坦克使用,换嘲讽。 意思就是抗怪坦克debuff大于等于actionParam2的层数,那么其他坦克就会释放嘲讽。 actionParam1 当前坦克身上的debuff技能ID actionParam2 debuff的层数

当actionType=8,给坦克使用。尝试把怪拉到指定的位置 PickTankBotPullTargetToPosition actionParam1的值表示怪物的id actionParam2 x坐标 actionParam3 y坐标 actionParam4 z坐标 actionParam5 角色,1:mt 2:ft1 3:ft2 4:ft3 5:fst。 如果值为5,fst会不断的释放灼烧,拉boss的仇恨。

当actionType=9 给坦克使用,给坦克添加目标. AddTankTargetByRole actionParam1的值表示怪物的id actionParam2 角色 1.mt 2:第一个ft 3:第二个ft,4:第三个ft

当actionType=10 全体机器人,停止攻击n秒时间。 BotDpsStopCombat actionParam1的值表示时间,单位是毫秒 actionParam2 角色role 1:远程 2:近战dps 3:物理dps 4:魔法dps

当actionType=11 给治疗机器人使用的 HealBotFollowTank actionParam1的值 角色 1:mt 2:ft1 3:ft2 4:ft3 5:fst actionParam2的值 数量 如果actionParam1=1,actionParam2=2,表示有2个治疗,会跟着主坦并专心治疗他。

当actionType=12 表示让机器人在n秒内,不要释放AOE的技能。 BotForceSingleDps actionParam1的值 毫秒。

当actionType=13 表示dps机器人会检测仇恨,如果dps和副坦仇恨快要超过坦克,那么dps和副坦会默认停手1秒 BotStopCombatWithThreat actionParam的几个参数不用设置值

当actionType=14 让身上带有debuff的机器人,跑到指定的位置 BotMoveToPosition actionParam1 debuff技能的Id actionParam2 x坐标 actionParam3 y坐标 actionParam4 z坐标 actionParam5 角色,0 全部,1近战(不包含坦克) 2远程 3坦克

当actionType=15,远程散开。围绕着boss半个圈,或者一个圈。 BotRangeFirstDisperse actionParam1 1:四分之一圈 2:半圈 3:四分之三圈 4:一个圈 actionParam2 最小距离 actionParam3 最大距离 远程会分散在这两个距离内

当actionType=16,远程,或者近战,跑位到boss的背后位置。 actionParam1 role=1 除了mt,其他近战dps和ft . role=2,近战dps,ft不跑。3:远程进行跑位

当actionType=18,全团分散 actionParam1 队伍分散的距离。不要超过20码,超了效果不好。 actionParam2 怪物id,为该怪物为中心,分散。 actionParam3 毫秒,该位置上停留的时间.

当actionType=19时,让机器人跑位到这个位置 SettingBotPositionSimple. 立刻跑过去,跟4功能类似 actionParam1 1:远程 2:近战 3:物理dps 4:魔法dps 5:奶妈 6:副坦1 7:副坦2 8:副坦3 9:MT actionParam2 x坐标 actionParam3 y坐标 actionParam4 z坐标 actionParam5 时间,毫秒。表示在该坐标,会一直停留n秒。该项必须要有值,默认填写1000 actionParam6 职业,可以为0. 职业1zs 2qs 3lr 4dz 5ms 6dk 7sm 8fs 9ss 11xd

当actionType=20时,让坦克背对人群

当actionType=21时,让机器人跑向玩家的坐标.用于集合 actionParam1 1:远程 2:近战 3:物理dps 4:魔法dps 5:奶妈 6:副坦1 7:副坦2 8:副坦3 9:MT actionParam2 时间,毫秒。表示在该坐标,会一直停留n秒。该项必须要有值,默认填写1000 actionParam3 职业,可以为0. 职业1zs 2qs 3lr 4dz 5ms 6dk 7sm 8fs 9ss 11xd

当actionType=24时,指定的角色,向某个生物/物体,或者中了debuff的队友移动. (注意,actionParam2,actionParam3,actionParam4. 只会有一项生效) actionParam1 0:全部 1:远程 2:近战 3:物理dps 4:魔法dps 5:奶妈 6:副坦1 7:副坦2 8:副坦3 9:MT actionParam2 生物的id actionParam3 debuff技能的id actionParam4 debuff技能的层数,默认为1层,达到层数才进行跑位 actionParam5 无 actionParam6 需要排除的buff的ID, 比如队友中了这个buff,那么就不要跑位

当actionType=25时,指定的角色,向某个生物/物体,或者跟中了debuff的队友,保持距离. actionParam1 0:全部 1:远程 2:近战 3:物理dps 4:魔法dps 5:奶妈 6:副坦1 7:副坦2 8:副坦3 9:MT actionParam2 生物的id actionParam3 debuff技能的id actionParam4 debuff技能的层数,默认为1层,达到层数才进行跑位 actionParam5 需要远离的距离. actionParam6 需要排除的buff的ID, 比如队友中了这个buff,那么就不要跑位

eventType, 事件类型。 eventParam1 eventParam2 eventParam3 eventParam4 eventParam5

当eventType=0,表示进入战斗状态,默认值。

当eventType=1 由于阶段的触发是在代码中,那么这里就用boss血量判断的方式,在表示对应的阶段。 eventParam1 就是怪物hp的百分比最大值。 eventParam2 就是怪物hp的百分比最小值。当怪物的hp>=eventParam2同时hp<=eventParam1,则进行对应的行为操作。

当eventType=2,由于阶段的触发是在代码中,那么这里就用时间轴的方式,在表示对应的阶段。 eventParam1 就是进入战斗的时间最大值。毫秒为单位。1000表示1秒 eventParam2 就是进入战斗的时间最小值。当进入战斗的时间>=eventParam2同时进入战斗的时间<=eventParam1,则进行对应的行为操作。这两者值最好差距3秒以上

当eventType=3,检测boss在释放的技能. 注意:瞬发的技能无法识别 eventParam1 正在释放的技能ID,如果匹配到了,那么就进行actionType的行为。

###取消该项 当定义eventType=4, 自定义喊话控制action。 注意,要选中boss为目标才行。 eventParam1 数字. 比如填写了2,那么队伍说话"执行战术 2",那么就执行配置的action行为

当定义eventType=5,获取boss的阶段,具体需要脚本中对应起来. 看最后面的备注. eventParam1 数字. 对应了第几阶段.

reLoadBotSmartScript 注意,用reLoadBotSmartScript,重新加载这个表的数据,不用重启

shuheq578 avatar Sep 09 '23 05:09 shuheq578

机器人输出配置表: bot_custom_spell表名, 删除对应的技能,则使用代码中默认的技能。 表里不需要配置刷buff的技能行为,萨满的图腾,萨满闪电盾水盾,骑士的祝福和圣印,猎人的射击守护等某些行为,已经代码写好,不需要在表里配置。

字段解释: //id // myclass:职业1zs 2qs 3lr 4dz 5ms 6dk 7sm 8fs 9ss 11xd, 数字匹配正确的职业 // talentType 天赋 // pose 姿态 预留,暂时无效 // spell 技能id // auraSpell 光环技能id,有的话就使用spell的技能 // indexNum 优先级 //conditionType 条件类型, 0:普通, 无条件就释放 1 : 敌人的hp > xx 2:敌人的hp<xx 3 : 我的hp>xx 4 : 我的hp < xx 5 : 我的能量>xx 6 : 我的能量 < xx // 7 : 敌人在施法 8 : 随机百分比(概率) // 9 : 检测到了n码以内, 有多少敌人目标看着我.(dps OT了,或者坦克拉怪) 10 : 附近多少(range)码内的,有多少敌人。如果人数>=conditionValue,就释放某技能 // 11:附近多少码(range)内,没有aura的值是conditionValue的敌人。>=2数量,就开始使用spell的技能 // 12: 目标敌人/自己,是否有值为auraSpell的aura,如果目标没有aura,那么就对目标使用spell。如果我没有aura,就对自己使用spell // 13: 目标敌人/自己,是否有值为auraSpell的aura,如果目标有aura,那么就使用spell。如果我有aura,就会自己使用spell // 14: 自己是否有值为auraSpell的aura,如果自己有aura,那么就对目标使用spell。跟27同一组。另外,如果设置conditionType2为28,则一直会重复该技能,不会跳到下一个技能。 // 15:给坦克释放群嘲的。附近10码内,如果有2个以上的怪没有看向坦克,那么坦克就释放群体嘲讽 // 16: 如果怪物的debuff层数,debuff的技能id是auraSpell,小于等于conditionValue,那么就对怪物使用spell技能。 // 17: 如果怪物的debuff层数,debuff的技能id是auraSpell,大于等于conditionValue,那么就对怪物使用spell技能。 // 18: 如果我的buff层数,buff的技能id是auraSpell,小于等于conditionValue,那么就对怪物使用spell技能。 // 19: 如果我的buff层数,buff的技能id是auraSpell,大于等于conditionValue,那么就对怪物使用spell技能。(类似增强萨满的5层漩涡,瞬发闪电箭) // 20: 如果我选择的目标,他也选中了我。这时候就释放spell技能 // 21: 监控目标的debuff的持续时间,如果小于等于conditionValue,那么就使用spell技能 // 22: 盗贼使用,我的连击点数>=xx,则使用spell技能 // 23: 盗贼使用,我的连击点数<=xx,则使用spell技能 // 24: dk使用,判断目标是否受到了感染,如果是的话,就使用spell技能 // 25: dk使用,判断目标是否受到了感染,如果没有的话,就使用spell技能 // 26: dk使用,判断目标没有受到感染的数量,如果数量大于等于2个,就使用spell技能(用于传染疾病) // 27: 自己是否有值为auraSpell的aura,如果自己没有aura,那么就对目标使用spell。跟14同一组 // 28:本次技能如果释放不成功,那么就重复尝试该技能,直到成功为止。 // 29:敌人目标附近多少(range)码内,有>=conditionValue数量的怪,就释放spell技能。 // 30:敌人目标是否<=(range)码, 在这个射程内就释放spell技能。 // 31: conditionValue为技能ID,如果玩家有这个技能,就释放spell // 32: conditionValue为技能ID,如果玩家没有这个技能,就释放spell // 33: 检测敌人数量是否<=2,是的话, 就取消auraSpell光环. 比如取消猎人的乱射 // 34: 检测范围内(rangeVal码)的敌人,如果带有auraSpell的debuff的数量, 是小于等于conditionValue,那么就对敌人释放spell技能. 比如术士,战斗时候保持3个敌人身上的腐蚀术.注意,该项在conditionValue,rangeVal有效,不要写到conditionValue2,conditionValue3的字段里. // 35: 对非当前目标的一个敌人,释放spell技能(dot技能). 比如术士在攻击目标A,同时会给目标B一个浩劫buff.注意,该项在auraSpell,conditionValue,rangeVal有效,不要写到conditionValue2,conditionValue3的字段里. // 36: 如果有buff的队友数量大于等于conditionValue,那么释放spell攻击目标.
// 37: 如果有buff的队友数量小于等于conditionValue,那么释放spell治疗队友.
// 38: 如果技能ID是conditionValue的技能处于CD中,那么就释放spell. 比如A技能CD了,就用B技能过渡.

// conditionValue 条件的值 // range 检测的范围,conditionType = 9,10,11时候使用 // 如果minLevel=0,maxLevel=40,那么player的level如果在这个范围内,那么就匹配了,加载这些信息 // rangeVal 检测的范围,conditionType = 8时候使用 // isMe spell的释法是对自己还是对敌人的. 0 : 敌人 1 : 自己 // isAoe 是否是aoe技能, RangeEnemyListByTargetRange(pTarget, NEEDFLEE_CHECKRANGE).size() >= 3 // check aoe // talk 说话的文本 // auraSpellFixed 0:使用自身等级的aura spell,1:使用固定值的aura spell(比如战士的破甲) // checkCaster 检测施法者是否为我,跟auraSpell有关.0:不检测 1:检测. 比如破甲效果一个人打就行,那么checkCaster为0. 比如2个战士都想打撕裂,那么checkCaster为1. // 给conditionType=12,13使用 // unitFlag 0:通用,1:针对小怪,2:针对boss // healthFlag: 0:默认值 1:直接治疗 1:预读打断的治疗,比如目标hp>=95%,会取消治疗,小于则会继续读完治疗 // isAllHeal 0:单体治疗 1:群疗

shuheq578 avatar Sep 09 '23 05:09 shuheq578

总而言之,事先预定,和临场指挥还是有很大区别,所谓将之外君命有所不受。 不可能事事料敌机先。 这已经是人脑事先把各个副本摸熟,能做到的极致。 但还有很多情况无法考虑周全,比如何时该放风筝,变羊等。 比如天蓝端治疗职业是全程不参与输出的,虽说很多情况可以输出,这直接影响了效率。 我认为可以让机器人反复下副本,摸索出一套效率最高,灭团次数最少的策略。 具体指挥如果交给玩家,这会影响游戏的参与感。 目前多数机器人,都会有些作弊行为,包括双重附魔,穿毕业装等。

shuheq578 avatar Sep 09 '23 06:09 shuheq578

天蓝端的下载地址 如需要,可以参考 制作机器人很累的,辛苦了 https://pan.baidu.com/share/init?surl=-x0OO4AE-FSN9u05lwY0Cg#list/path=%2F 提取码 rn7e

nj @.***> 于2023年9月9日周六 09:38写道:

PlayerBot 需要一个指挥官。 即使聪明如人脑,下团本也要人指挥,踢足球还要教练呢。 有了指挥统领全局,机器人只需要无脑技能循环。 指挥观察场上的一切,做出判断,必要时对机器人发出指令。 何时需要打断,何时需要躲避技能,就像某些插件一样,提醒队员。 世事如棋局局新,每次战斗,情况都不尽相同,而指挥会根据情况,做出合理判断,规范队员行为。 而现在是玩家在充当临时指挥的角色,但玩家又要参与战斗, 况且给玩家的权限也不多。 机器人是个团体,需要队友间的互相配合。 而怎样配合,应该交给指挥官,而不是一个个聪明的个体。 通常来说,傻瓜比聪明人更听话,机器人不需要那么聪明,笨一点更好。 就说到这吧,剩下的留给各位讨论。

不是有指令插件了吗?

— Reply to this email directly, view it on GitHub https://github.com/ZhengPeiRu21/mod-playerbots/issues/206#issuecomment-1712377821, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYL7NEF5JCZHTGW5QSQJMYDXZPCARANCNFSM6AAAAAA4QYTZAI . You are receiving this because you authored the thread.Message ID: @.***>

shuheq578 avatar Sep 09 '23 07:09 shuheq578

哇塞,大哥你应该一起来加入制作呀,这也是有经验的人才能想出来这么详细的内容了

garfieldz90 avatar Sep 09 '23 15:09 garfieldz90

我又不是作者,作者有个QQ群,有一群人帮他测试,提供战术 打法 。 而作者也是参考某个收费端,泄露的源码,在加以改进的。 目前已经很成熟了,不过最近停更了,还有很多问题没有解决。 和github一样,都是沿着前人的路继续走下去。 我充其量只能提供些想法建议。 我只是认为机器人打怪,应该像战场上指挥士兵一样。 充分让每个职业各展所长,每个机器人都是一枚棋子,出现在他应该出现的地方。 以后即使引入AI学习,也是指挥的事,就像阿法狗一样。

nj @.***> 于2023年9月9日周六 23:40写道:

哇塞,大哥你应该一起来加入制作呀,这也是有经验的人才能想出来这么详细的内容了

— Reply to this email directly, view it on GitHub https://github.com/ZhengPeiRu21/mod-playerbots/issues/206#issuecomment-1712539686, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYL7NEGWB2WYZTSGLJA5Z7TXZSEYPANCNFSM6AAAAAA4QYTZAI . You are receiving this because you authored the thread.Message ID: @.***>

shuheq578 avatar Sep 09 '23 22:09 shuheq578

我又不是作者,作者有个QQ群,有一群人帮他测试,提供战术 打法 。 而作者也是参考某个收费端,泄露的源码,在加以改进的。 目前已经很成熟了,不过最近停更了,还有很多问题没有解决。 和github一样,都是沿着前人的路继续走下去。 我充其量只能提供些想法建议。 我只是认为机器人打怪,应该像战场上指挥士兵一样。 充分让每个职业各展所长,每个机器人都是一枚棋子,出现在他应该出现的地方。 以后即使引入AI学习,也是指挥的事,就像阿法狗一样。

great vision! come and CODE!

git4ai avatar Sep 12 '23 01:09 git4ai

很有创意的想法,来个大神实现吧

christan-duplicate avatar Sep 18 '23 06:09 christan-duplicate

机器人输出配置表: bot_custom_spell表名, 删除对应的技能,则使用代码中默认的技能。 表里不需要配置刷buff的技能行为,萨满的图腾,萨满闪电盾水盾,骑士的祝福和圣印,猎人的射击守护等某些行为,已经代码写好,不需要在表里配置。

字段解释: //id // myclass:职业1zs 2qs 3lr 4dz 5ms 6dk 7sm 8fs 9ss 11xd, 数字匹配正确的职业 // talentType 天赋 // pose 姿态 预留,暂时无效 // spell 技能id // auraSpell 光环技能id,有的话就使用spell的技能 // indexNum 优先级 //conditionType 条件类型, 0:普通, 无条件就释放 1 : 敌人的hp > xx 2:敌人的hp<xx 3 : 我的hp>xx 4 : 我的hp < xx 5 : 我的能量>xx 6 : 我的能量 < xx // 7 : 敌人在施法 8 : 随机百分比(概率) // 9 : 检测到了n码以内, 有多少敌人目标看着我.(dps OT了,或者坦克拉怪) 10 : 附近多少(range)码内的,有多少敌人。如果人数>=conditionValue,就释放某技能 // 11:附近多少码(range)内,没有aura的值是conditionValue的敌人。>=2数量,就开始使用spell的技能 // 12: 目标敌人/自己,是否有值为auraSpell的aura,如果目标没有aura,那么就对目标使用spell。如果我没有aura,就对自己使用spell // 13: 目标敌人/自己,是否有值为auraSpell的aura,如果目标有aura,那么就使用spell。如果我有aura,就会自己使用spell // 14: 自己是否有值为auraSpell的aura,如果自己有aura,那么就对目标使用spell。跟27同一组。另外,如果设置conditionType2为28,则一直会重复该技能,不会跳到下一个技能。 // 15:给坦克释放群嘲的。附近10码内,如果有2个以上的怪没有看向坦克,那么坦克就释放群体嘲讽 // 16: 如果怪物的debuff层数,debuff的技能id是auraSpell,小于等于conditionValue,那么就对怪物使用spell技能。 // 17: 如果怪物的debuff层数,debuff的技能id是auraSpell,大于等于conditionValue,那么就对怪物使用spell技能。 // 18: 如果我的buff层数,buff的技能id是auraSpell,小于等于conditionValue,那么就对怪物使用spell技能。 // 19: 如果我的buff层数,buff的技能id是auraSpell,大于等于conditionValue,那么就对怪物使用spell技能。(类似增强萨满的5层漩涡,瞬发闪电箭) // 20: 如果我选择的目标,他也选中了我。这时候就释放spell技能 // 21: 监控目标的debuff的持续时间,如果小于等于conditionValue,那么就使用spell技能 // 22: 盗贼使用,我的连击点数>=xx,则使用spell技能 // 23: 盗贼使用,我的连击点数<=xx,则使用spell技能 // 24: dk使用,判断目标是否受到了感染,如果是的话,就使用spell技能 // 25: dk使用,判断目标是否受到了感染,如果没有的话,就使用spell技能 // 26: dk使用,判断目标没有受到感染的数量,如果数量大于等于2个,就使用spell技能(用于传染疾病) // 27: 自己是否有值为auraSpell的aura,如果自己没有aura,那么就对目标使用spell。跟14同一组 // 28:本次技能如果释放不成功,那么就重复尝试该技能,直到成功为止。 // 29:敌人目标附近多少(range)码内,有>=conditionValue数量的怪,就释放spell技能。 // 30:敌人目标是否<=(range)码, 在这个射程内就释放spell技能。 // 31: conditionValue为技能ID,如果玩家有这个技能,就释放spell // 32: conditionValue为技能ID,如果玩家没有这个技能,就释放spell // 33: 检测敌人数量是否<=2,是的话, 就取消auraSpell光环. 比如取消猎人的乱射 // 34: 检测范围内(rangeVal码)的敌人,如果带有auraSpell的debuff的数量, 是小于等于conditionValue,那么就对敌人释放spell技能. 比如术士,战斗时候保持3个敌人身上的腐蚀术.注意,该项在conditionValue,rangeVal有效,不要写到conditionValue2,conditionValue3的字段里. // 35: 对非当前目标的一个敌人,释放spell技能(dot技能). 比如术士在攻击目标A,同时会给目标B一个浩劫buff.注意,该项在auraSpell,conditionValue,rangeVal有效,不要写到conditionValue2,conditionValue3的字段里. // 36: 如果有buff的队友数量大于等于conditionValue,那么释放spell攻击目标. // 37: 如果有buff的队友数量小于等于conditionValue,那么释放spell治疗队友. // 38: 如果技能ID是conditionValue的技能处于CD中,那么就释放spell. 比如A技能CD了,就用B技能过渡.

// conditionValue 条件的值 // range 检测的范围,conditionType = 9,10,11时候使用 // 如果minLevel=0,maxLevel=40,那么player的level如果在这个范围内,那么就匹配了,加载这些信息 // rangeVal 检测的范围,conditionType = 8时候使用 // isMe spell的释法是对自己还是对敌人的. 0 : 敌人 1 : 自己 // isAoe 是否是aoe技能, RangeEnemyListByTargetRange(pTarget, NEEDFLEE_CHECKRANGE).size() >= 3 // check aoe // talk 说话的文本 // auraSpellFixed 0:使用自身等级的aura spell,1:使用固定值的aura spell(比如战士的破甲) // checkCaster 检测施法者是否为我,跟auraSpell有关.0:不检测 1:检测. 比如破甲效果一个人打就行,那么checkCaster为0. 比如2个战士都想打撕裂,那么checkCaster为1. // 给conditionType=12,13使用 // unitFlag 0:通用,1:针对小怪,2:针对boss // healthFlag: 0:默认值 1:直接治疗 1:预读打断的治疗,比如目标hp>=95%,会取消治疗,小于则会继续读完治疗 // isAllHeal 0:单体治疗 1:群疗

我又不是作者,作者有个QQ群,有一群人帮他测试,提供战术 打法 。 而作者也是参考某个收费端,泄露的源码,在加以改进的。 目前已经很成熟了,不过最近停更了,还有很多问题没有解决。 和github一样,都是沿着前人的路继续走下去。 我充其量只能提供些想法建议。 我只是认为机器人打怪,应该像战场上指挥士兵一样。 充分让每个职业各展所长,每个机器人都是一枚棋子,出现在他应该出现的地方。 以后即使引入AI学习,也是指挥的事,就像阿法狗一样。

great vision! come and CODE! 如果知道是参考的哪个收费端泄露的代码,相对来说,在这个模块实现起来会容易很多

zzzdtz avatar Sep 25 '23 02:09 zzzdtz