传奇回城石制作方法:物品数据库、StdMode、AniCount与QF触发脚本全流程

来源: 作者: 点击:
传奇里回城石的制作方法主要分为两类:一类是通过物品数据库设置 StdMode 和 AniCount,让玩家双击物品后触发回城脚本;另一类是通过 NPC 合成、任务奖励或脚本 Give 生成回城石。不同引擎对 StdMode 字段定义不完全一致,常见 GOM/GEE 类引擎中,回城类物品多使用 StdMode 31 或 30,双击后会触发 QFunction-0.txt 中对应的 [@StdModeFuncX] 标签,X 就是 AniCount 填写的编号。

一、物品数据库字段设置

制作回城石的第一步是在物品数据库中添加新物品。打开数据库编辑器后,新建一条物品记录,重点填写以下字段:

名称:例如 盟重回城石、永久回城石、延迟回城石。
StdMode:双击触发类物品常用 31,部分版本用 30,具体以当前引擎说明为准。
AniCount:触发编号,例如 100、101、102。这个编号必须和 QFunction-0.txt 中的 [@StdModeFunc100] 对应。
Shape/Looks:外观编号,决定物品图标和模型。
Weight:重量,回城石一般设为 1。
Source:部分引擎可用该字段控制是否放入快捷栏,常见写法为 -2,具体以引擎说明为准。

示例:

名称:永久盟重回城石
StdMode:31
AniCount:100
Shape:51
Weight:1
Source:-2

二、QF功能脚本触发回城

物品数据库设置完成后,需要在 QFunction-0.txt 中编写触发脚本。双击回城石时,引擎会根据 AniCount 找到对应标签。例如 AniCount 为 100,则触发 [@StdModeFunc100]。

最基础的瞬间回城写法如下:

[@StdModeFunc100]
IF
ACT
MAPMOVE 3 330 330

这里 3 代表盟重地图编号,330 330 是落点坐标。MAPMOVE 后面如果带坐标,就是定点传送;如果只写地图编号,部分引擎会随机落在该地图。

如果要限制等级使用,可以加检测:

[@StdModeFunc100]
IF
CHECKLEVELEX > 59
ACT
MAPMOVE 3 330 330
ELSEACT
SENDMSG 6 等级不足,无法使用回城石

如果希望回城石不消耗,就不写 TAKE;如果希望每次使用扣除一个,就加 TAKE 回城石名称 1。永久回城石通常不写 TAKE,一次性回城石则写 TAKE。

三、永久回城石制作

永久回城石的核心是不扣除物品本身。物品数据库中 StdMode 设为 31,AniCount 设为固定编号,例如 100。QF 脚本中只执行传送,不执行 TAKE。

示例:

[@StdModeFunc100]
IF
ACT
MAPMOVE 3 330 330 5

末尾的 5 表示以 330 330 为中心,半径 5 范围内随机落点。不同引擎参数顺序可能不同,正式使用前需要确认当前引擎 MAPMOVE 写法。

永久随机石做法类似,只是不传回固定地图,而是留在当前地图随机传送:

[@StdModeFunc110]
IF
ACT
MAP

MAP 命令会让玩家在当前地图随机传送。如果当前地图禁止随机,则需要改用指定地图传送。

四、延迟回城石制作

延迟回城石适合做读条回城,玩家点击后需要等待几秒,期间移动或受击会中断。GOM 类引擎可使用自定义采集命令实现进度条。

示例:

[@StdModeFunc101]
IF
ACT
CUSTOMGATHER 3 0 1 @回城完成 @回城中断

这里 3 表示 3 秒读条,0 表示采集类型,1 表示中断后触发中断标签。玩家完成读条后进入 @回城完成,被中断则进入 @回城中断。

[@回城完成]
IF
ACT
MAPMOVE 3 330 330
SENDMSG 6 回城成功

[@回城中断]
IF
ACT
SENDMSG 6 回城被打断

延迟回城石需要配合战斗状态、移动状态判断,避免玩家在安全区外无成本回城。部分引擎支持检测玩家是否处于战斗状态,可根据版本增加相应条件。

五、多地图回城石制作

如果版本有多个主城,可以给不同回城石设置不同 AniCount。

示例:

[@StdModeFunc100]
IF
ACT
MAPMOVE 3 330 330

[@StdModeFunc101]
IF
ACT
MAPMOVE 0 330 330

[@StdModeFunc102]
IF
ACT
MAPMOVE 1 100 100

每个 AniCount 对应一个地图编号,这样可以制作盟重回城石、比奇回城石、沙城回城石等。地图编号必须和当前服务端 MapInfo 配置一致。

六、NPC合成回城石

回城石也可以通过 NPC 合成获得。玩家携带材料后,NPC 检测材料并生成回城石。

示例:

[@合成回城石]
IF
CHECKITEM 回城石碎片 10
CHECKGOLD 50000
ACT
TAKE 回城石碎片 10
TAKEGOLD 50000
GIVE 盟重回城石 1
SENDMSG 6 合成成功

如果希望合成永久回城石,只需把产物改为永久回城石名称即可。合成类回城石仍需要物品数据库和 QF 触发脚本配合,否则双击不会生效。

七、任务或活动发放回城石

回城石也可以通过任务、活动、充值奖励发放。脚本中使用 GIVE 即可:

GIVE 盟重回城石 1

如果是永久回城石,发放后玩家可无限双击。如果是一次性回城石,QF 脚本中需要加 TAKE 扣除物品。

示例:

[@StdModeFunc100]
IF
CHECKITEM 盟重回城石 1
ACT
TAKE 盟重回城石 1
MAPMOVE 3 330 330
ELSEACT
SENDMSG 6 回城石已失效

八、常见问题处理

回城石双击无反应,多数是 AniCount 与 QF 标签不匹配。例如数据库写 AniCount 100,脚本里却写成 [@StdModeFunc10],就不会触发。

回城石不消耗,检查脚本中是否有 TAKE 命令。永久回城石不应写 TAKE,一次性回城石必须写 TAKE。

回城后坐标不对,检查 MAPMOVE 后面的地图编号和坐标是否正确。部分引擎地图编号如果使用字母数字混合,需要确认不会与变量冲突。

延迟回城不中断,检查自定义采集命令是否填写了中断标签,以及客户端是否支持进度条显示。

修改完物品数据库后,需要重新加载物品数据;修改 QFunction-0.txt 后,需要重新加载功能脚本或重启服务端,否则新回城石不会生效。