当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

避免传奇特殊物品和怪物防止出现BUG的设置完整方法与实战排查

热度:
一、特殊物品常见问题类型

特殊物品出问题通常集中在几类。第一类是复制,比如交易、存仓、摆摊、死亡掉落、小退时物品数量异常增加。第二类是属性溢出,比如攻击、魔法、道术超过引擎上限,导致显示负数或秒杀。第三类是状态无限,比如麻痹、冰冻、隐身、复活、护身没有冷却,触发后一直生效。第四类是传送异常,比如传送到禁止地图、卡墙、穿人、卡NPC。第五类是触发死循环,使用物品后触发脚本又给回物品,或者死亡触发不断刷怪。第六类是数据异常,比如持久为0、叠加数量超限、金币溢出、元宝变负、负重超上限。

二、物品数据库基础字段设置

StdItems.DB是物品数据库。关键字段包括ID、Name、StdMode、Shape、Weight、DuraMax、HP、MP、AC、AC2、MAC、MAC2、DC、DC2、MC、MC2、SC、SC2、Need、NeedLevel、Price、Stack、Source、Reserved。设置时ID不能重复,Name不能与怪物名、NPC名重复,不能有空格和特殊符号。Weight不能为负,DuraMax不能为0,Price不能为负。Stack叠加数量不能超过引擎上限,常见上限是65535或更小。属性上下限不能写反,下限必须小于等于上限。攻击、魔法、道术、防御、魔御不能超过引擎支持的最大值。Need和NeedLevel要合理,不能出现需要等级为负或过高导致无法装备。

特殊物品的StdMode和Shape决定使用逻辑。传送类物品要设置目标地图限制、冷却、战斗状态限制。麻痹类要设置触发几率、持续时间、怪物抗性。复活类要设置冷却、恢复比例、触发条件。护身类要设置伤害转移比例、魔法消耗、MP不足处理。隐身类要设置攻击破隐、使用技能破隐、怪物反隐。探测类要设置范围、冷却、禁止地图。记忆类要设置记录人数、冷却、禁止地图。祈祷类要设置宝宝属性、死亡消失、不能叠加。超负载要设置负重上限、不能丢弃。技巧类要设置技能点上限。药品要设置恢复量、冷却、不能超过HP和MP上限。祝福油要设置成功率、上限、诅咒处理。修复油要设置持久恢复、不能超过最大持久。鉴定卷要设置属性范围、不能超过极品上限。淬炼要设置等级上限、材料消耗、失败处理。元素石要设置元素上限、抗性上限。套装要设置件数触发、不能重复叠加。称号要设置属性唯一、时间限制。时装要设置外观、不能影响战斗属性。坐骑要设置速度上限、不能战斗。宠物要设置召唤数量、属性上限、不能PK。

三、物品触发脚本防护

使用触发写在QFunction或对应脚本中。每次使用物品前要判断物品是否存在、数量是否足够、背包是否有空格、等级是否达到、职业是否匹配、性别是否匹配、地图是否允许、是否在安全区、是否在战斗状态、冷却是否结束、元宝和金币是否足够、负重是否足够、状态是否免疫、行会是否匹配、权限是否足够。判断通过后再执行Take扣除物品,扣除成功再给效果。不能先给效果再扣物品,否则扣除失败会导致复制。冷却用变量记录,例如设置U变量或P变量,使用后赋值当前时间加冷却秒数。传送类要记录原地图和坐标,禁止传送到活动地图、攻城地图、监狱地图、GM地图。麻痹类几率不要超过30%,时间不要超过5秒,BOSS要有抗性。复活类冷却至少60秒,恢复比例不要超过100%。护身类伤害转移不要超过50%,MP不足时按正常受伤处理。隐身类攻击或施法必须破隐,怪物要有反隐。探测类范围不要超过20格,冷却要设置。记忆类记录人数不要超过5人,冷却要设置,禁止地图要列出。祈祷类宝宝死亡必须消失,不能叠加召唤。超负载负重上限要合理,不能无限负重。技巧类技能点不能超过上限。药品恢复不能超过HP和MP上限。祝福油成功率不能超过100,诅咒要处理。修复油不能超过最大持久。鉴定属性不能超过极品上限。淬炼等级要有上限,失败要降级或破碎。元素属性要有上限,抗性要有上限。套装件数触发只能一次,不能重复叠加。称号属性要唯一,时间到期移除。时装不能加战斗属性。坐骑速度不能超过引擎上限。宠物召唤数量要限制,属性要限制。

四、怪物数据库基础字段设置

Monster.DB是怪物数据库。关键字段包括Name、Race、RaceImg、Appr、Lv、HP、MP、AC、MAC、DC、MC、SC、Speed、WalkSpd、AttackSpd、View、攻击类型、技能、死亡触发、掉落、刷新。Name必须唯一,不能与物品名、NPC名重复,不能有空格,不能太长。Race值要正确,不同引擎Race含义不同,设置前查引擎说明。Appr外观编号必须存在,不能超出客户端素材范围。HP必须大于0,不能超过引擎上限。MP不能为负。AC和MAC不能为负。DC、MC、SC上下限不能写反。Speed移动速度不能为0,不能过大导致穿墙。WalkSpd不能过大。AttackSpd不能过大导致无限攻击。View视野不能过大导致全图攻击。攻击范围不能过大。技能不能带无限麻痹、无限冰冻、无限毒、无限击退。死亡触发不能刷自己,否则怪物死了又刷,刷了又死,形成死循环。召唤技能不能召唤自己,不能无限召唤。分身不能继承元宝、物品、装备。掉落爆率文件必须存在,爆率文件中的物品名必须存在。概率分母不能为0,数量不能过大,金币不能超过上限。刷新地图编号必须正确,坐标必须在有效范围,刷新时间不能为0,刷新数量不能过大,刷新范围不能过大。不能刷新在安全区、NPC身上、障碍物里。人形怪要配置MonUseItems目录,装备栏物品必须存在,属性不能超,挖取列表要正确,掉落不能复制。

五、怪物刷新与地图设置

刷新文件通常是MonGen.txt。格式为地图、坐标X、坐标Y、怪物名、范围、数量、刷新时间、集中刷新。地图编号必须与MapInfo.txt一致。坐标必须在有效范围内。范围不要超过地图边界。数量不要超过引擎上限。刷新时间不要小于1秒。集中刷新时间要合理。避免同一坐标刷新多个BOSS,避免BOSS刷新在安全区,避免怪物重叠卡位。活动怪要单独文件,活动时间要控制,避免重复刷新。任务怪要单独设置,不能与普通怪冲突,任务物品爆率要单独设置。攻城怪要设置攻击目标,不能攻击安全区,不能破坏NPC,不能堵门。巡逻怪要设置路线,不能穿墙,不能卡位。怪物刷新后要检查是否卡在障碍物里,是否卡在NPC里,是否卡在传送点。

六、脚本与触发防死循环

QFunction、Robot、MapEvent、MonGen都要注意。死亡触发不能调用刷怪命令刷自己,否则死循环。召唤触发不能无限召唤,要设置召唤数量上限和冷却。攻击触发不能无限触发,要设置几率。魔法触发不能无限触发,要设置MP消耗和冷却。物品触发不能无限给物品,要设置数量检测。NPC触发不能无限给奖励,要设置次数限制。使用变量记录次数,使用冷却变量,使用全局变量限制。避免脚本递归调用。避免Goto死循环。避免While无退出条件。避免GIVE给不存在的物品。避免TAKE扣除不存在的物品。避免MAPMOVE传送到不存在地图。避免MONSTER召唤不存在怪物。避免RECALLMOB召唤不存在宝宝。避免CHANGEMODE设置不存在状态。避免SET设置不存在的变量。避免变量溢出。避免字符串过长。避免中文符号。避免编码错误。

七、测试与排查流程

修改前备份数据库和脚本。关闭服务端。修改后启动服务端。重载物品数据库、怪物数据库、爆率文件、脚本。召唤特殊物品。使用特殊物品。召唤特殊怪物。击杀特殊怪物。查看掉落。查看属性。查看状态。查看冷却。查看刷新。查看地图。查看NPC。查看交易。查看存仓库。查看摆摊。查看小退。查看重启。查看日志。常见报错包括物品不存在、怪物不存在、地图不存在、爆率文件不存在、脚本错误、变量未定义、除零错误、数组越界、内存溢出。修复方法是补物品、补怪物、补地图、补爆率、改脚本、定义变量、加判断、加限制、加日志。

八、引擎差异与设置建议

GOM、GEE、HERO、LEG、BLUE等引擎字段名不同,最大值不同,命令不同。设置前查看引擎说明。特殊物品和怪物设置以实际引擎为准。不要混用数据库。不要直接复制其他引擎配置。修改前备份。修改后测试。限制属性上限,限制几率,限制时间,限制数量,限制范围,限制冷却,限制地图。保持数据库完整。保持爆率文件完整。保持脚本简洁。保持日志开启。监控异常物品和怪物。发现异常立即回滚。
[顶部]