如何移除德鲁伊撕碎与盗贼背刺的「必须在目标身后」限制?
取消撕碎(Shred)与背刺(Backstab)身后释放限制的解决建议
以下是针对问题的具体排查和修改步骤:
直接修改
spell表的原生属性
部分技能的身后释放要求是写入spell表的AttributesEx字段的,131072对应SPELL_ATTR_EX_REQ_TARGET_BACK标志。仅删除spell_custom_attr的条目可能无效,因为原spell表的属性仍在生效。执行以下SQL语句清除该标志:-- 处理德鲁伊撕碎(Shred) UPDATE spell SET AttributesEx = AttributesEx & ~131072 WHERE Id IN ( SELECT Id FROM spell WHERE Name LIKE 'Shred' OR Name LIKE '撕碎' ); -- 处理盗贼背刺(Backstab) UPDATE spell SET AttributesEx = AttributesEx & ~131072 WHERE Id IN ( SELECT Id FROM spell WHERE Name LIKE 'Backstab' OR Name LIKE '背刺' );检查技能脚本控制
部分技能的释放条件会通过服务器脚本(Lua/C++)额外校验,比如背刺可能绑定了脚本检查目标朝向:- 查询
spell_script_names表,找到对应技能的脚本关联:SELECT * FROM spell_script_names WHERE spell_id IN ( SELECT Id FROM spell WHERE Name LIKE 'Shred' OR Name LIKE 'Backstab' OR Name LIKE '撕碎' OR Name LIKE '背刺' ); - 如果查到对应脚本名,找到服务器脚本目录(如
scripts/spells/)中的对应文件,删除或注释掉检查目标朝向的代码段,例如类似if not UnitInBack(attacker, target) then return false end的判断逻辑。
- 查询
排查目标要求标志表
检查spell_required_target_flags表,确认是否存在强制要求目标为身后的设置:SELECT * FROM spell_required_target_flags WHERE spell_id IN ( SELECT Id FROM spell WHERE Name LIKE 'Shred' OR Name LIKE 'Backstab' OR Name LIKE '撕碎' OR Name LIKE '背刺' );如果存在
target_flags包含16(对应TARGET_FLAG_BACK)的条目,执行以下语句删除:DELETE FROM spell_required_target_flags WHERE spell_id IN ( SELECT Id FROM spell WHERE Name LIKE 'Shred' OR Name LIKE 'Backstab' OR Name LIKE '撕碎' OR Name LIKE '背刺' ) AND target_flags & 16 = 16;确保修改生效
完成数据库修改后,必须重启服务器,或在游戏内使用GM命令.reload spells重载技能配置,否则修改不会生效。
内容的提问来源于stack exchange,提问作者Dkap
相关产品推荐
相关产品推荐

