传奇如何添加技能书


采用 dbc2000 的经典传奇服务端时,添加一本能够正常双击学习的技能书,必须同时配置 magic.db 和 stditems.db:前者负责技能编号、名称、职业、等级与修炼条件,后者负责书籍物品、职业限制、外观和价格。只修改其中一张表,常见结果是背包能看到技能书却无法学习、双击无反应,或学到其他技能。操作前先关闭 m2、网关及数据库相关进程,完整复制 db 文件夹作为备份,再确认 dbc2000 的数据库别名路径确实指向服务端的 db 目录,而不是上级文件夹。

新增技能定义时,应先在 magic.db 中复制一个效果类型相近且已经能正常使用的技能记录,再修改名称和限制条件。真正创建全新技能时,magid 要使用未占用的编号;如果只是让另一个职业学习已有技能,则部分老引擎允许沿用原技能编号,并复制一条对应职业记录,不能直接套用所有引擎的规则。magname 必须与技能书名称完全一致,job 通常为 0 战士、1 法师、2 道士,needl1、needl2、needl3 分别代表一至三级技能的等级门槛,l1train、l2train、l3train代表修炼所需技能点。effecttype、effect、spell、power、defpower 和 delay 建议从同类原技能复制,先保证动作、特效、耗蓝和冷却正常,再单独调整伤害数值。三阶技能可用 40、44、48 级和 100、300、600 技能点作为测试模板,正式配置仍需结合职业强度调整。

制作技能书物品时,应在 stditems.db 末尾复制一本同职业、同类型的现成技能书,保留原表字段顺序,只修改必要数据。idx 必须使用数据库中未重复的序号,name 要与 magic.db 的 magname 逐字一致,stdmode 通常使用技能书对应的 4 或 7,但应以当前服务端已有技能书的写法为准;shape 一般为 0 战士、1 法师、2 道士。若采用等级限制,need 填 0,needlevel 填具体等级;攻击、魔法、道术限制通常分别对应 1、2、3,再把限制数值写入 needlevel。不同引擎可能通过名称、looks、anicount 或其他字段建立技能书与技能的关联,因此不能把某个版本的字段位置直接套到另一套引擎上,最稳妥的方式是复制同类书籍并只替换名称、序号、职业和门槛。

保存数据库后,应先执行引擎提供的重新加载技能数据库和重新加载物品数据库,没有热加载功能时再完整重启 m2。若技能书使用了新图标或新外观,还要把对应素材放入客户端补丁,否则可能出现书籍名称正确但图标空白、地面显示异常或背包无法刷新。测试顺序应固定为:gm角色领取技能书,分别用低于门槛、刚好达到门槛和超过门槛的角色双击;再检查技能是否进入技能栏、一级效果是否正常、升级到二级和三级时技能点是否扣除、重新登录后等级是否保存。测试角色可暂时设置为 1 级、10 级和目标等级三档,确认限制条件确实由数据库生效。

实际投放时,应先确定技能书的来源,再设置价格、掉落或 npc 兑换条件。单机调试阶段可将价格设为 1 金币、学习等级设为 1 级,确认技能链路无误后恢复正式门槛;普通技能可放入书店或低级怪物掉落,高级技能则适合设置为 40 级以上、固定首领掉落或材料兑换。添加跨职业技能时,重点检查 magic.db 中的职业字段、stditems.db 中的 shape 和书籍关联字段是否一致;添加全新技能时,则必须同步确认 magid、技能名称、技能特效、客户端素材和获得途径,只有这些数据全部对应,玩家双击技能书后才能稳定完成学习。

往期精选