传奇里回城石的制作方法主要分为两类:一类是通过物品数据库设置StdMode和AniCount,让玩家双击物品后触发回城脚本;另一类是通过NPC合成、任务奖励或脚本Give生成回城石。不同引擎对StdMode字段定义不完全一致,常见GOM/GEE类引擎中,回城类物品多使用StdMode31或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
MAPMOVE3330330
这里3代表盟重地图编号,330330是落点坐标。MAPMOVE后面如果带坐标,就是定点传送;如果只写地图编号,部分引擎会随机落在该地图。
如果要限制等级使用,可以加检测:
[@StdModeFunc100]
IF
CHECKLEVELEX>59
ACT
MAPMOVE3330330
ELSEACT
SENDMSG6等级不足,无法使用回城石
如果希望回城石不消耗,就不写TAKE;如果希望每次使用扣除一个,就加TAKE回城石名称1。永久回城石通常不写TAKE,一次性回城石则写TAKE。
三、永久回城石制作
永久回城石的核心是不扣除物品本身。物品数据库中StdMode设为31,AniCount设为固定编号,例如100。QF脚本中只执行传送,不执行TAKE。
示例:
[@StdModeFunc100]
IF
ACT
MAPMOVE33303305
末尾的5表示以330330为中心,半径5范围内随机落点。不同引擎参数顺序可能不同,正式使用前需要确认当前引擎MAPMOVE写法。
永久随机石做法类似,只是不传回固定地图,而是留在当前地图随机传送:
[@StdModeFunc110]
IF
ACT
MAP
MAP命令会让玩家在当前地图随机传送。如果当前地图禁止随机,则需要改用指定地图传送。
四、延迟回城石制作
延迟回城石适合做读条回城,玩家点击后需要等待几秒,期间移动或受击会中断。GOM类引擎可使用自定义采集命令实现进度条。
示例:
[@StdModeFunc101]
IF
ACT
CUSTOMGATHER301@回城完成@回城中断
这里3表示3秒读条,0表示采集类型,1表示中断后触发中断标签。玩家完成读条后进入@回城完成,被中断则进入@回城中断。
[@回城完成]
IF
ACT
MAPMOVE3330330
SENDMSG6回城成功
[@回城中断]
IF
ACT
SENDMSG6回城被打断
延迟回城石需要配合战斗状态、移动状态判断,避免玩家在安全区外无成本回城。部分引擎支持检测玩家是否处于战斗状态,可根据版本增加相应条件。
五、多地图回城石制作
如果版本有多个主城,可以给不同回城石设置不同AniCount。
示例:
[@StdModeFunc100]
IF
ACT
MAPMOVE3330330
[@StdModeFunc101]
IF
ACT
MAPMOVE0330330
[@StdModeFunc102]
IF
ACT
MAPMOVE1100100
每个AniCount对应一个地图编号,这样可以制作盟重回城石、比奇回城石、沙城回城石等。地图编号必须和当前服务端MapInfo配置一致。
六、NPC合成回城石
回城石也可以通过NPC合成获得。玩家携带材料后,NPC检测材料并生成回城石。
示例:
[@合成回城石]
IF
CHECKITEM回城石碎片10
CHECKGOLD50000
ACT
TAKE回城石碎片10
TAKEGOLD50000
GIVE盟重回城石1
SENDMSG6合成成功
如果希望合成永久回城石,只需把产物改为永久回城石名称即可。合成类回城石仍需要物品数据库和QF触发脚本配合,否则双击不会生效。
七、任务或活动发放回城石
回城石也可以通过任务、活动、充值奖励发放。脚本中使用GIVE即可:
GIVE盟重回城石1
如果是永久回城石,发放后玩家可无限双击。如果是一次性回城石,QF脚本中需要加TAKE扣除物品。
示例:
[@StdModeFunc100]
IF
CHECKITEM盟重回城石1
ACT
TAKE盟重回城石1
MAPMOVE3330330
ELSEACT
SENDMSG6回城石已失效
八、常见问题处理
回城石双击无反应,多数是AniCount与QF标签不匹配。例如数据库写AniCount100,脚本里却写成[@StdModeFunc10],就不会触发。
回城石不消耗,检查脚本中是否有TAKE命令。永久回城石不应写TAKE,一次性回城石必须写TAKE。
回城后坐标不对,检查MAPMOVE后面的地图编号和坐标是否正确。部分引擎地图编号如果使用字母数字混合,需要确认不会与变量冲突。
延迟回城不中断,检查自定义采集命令是否填写了中断标签,以及客户端是否支持进度条显示。
修改完物品数据库后,需要重新加载物品数据;修改QFunction-0.txt后,需要重新加载功能脚本或重启服务端,否则新回城石不会生效。
一、物品数据库字段设置
制作回城石的第一步是在物品数据库中添加新物品。打开数据库编辑器后,新建一条物品记录,重点填写以下字段:
名称:例如盟重回城石、永久回城石、延迟回城石。
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
MAPMOVE3330330
这里3代表盟重地图编号,330330是落点坐标。MAPMOVE后面如果带坐标,就是定点传送;如果只写地图编号,部分引擎会随机落在该地图。
如果要限制等级使用,可以加检测:
[@StdModeFunc100]
IF
CHECKLEVELEX>59
ACT
MAPMOVE3330330
ELSEACT
SENDMSG6等级不足,无法使用回城石
如果希望回城石不消耗,就不写TAKE;如果希望每次使用扣除一个,就加TAKE回城石名称1。永久回城石通常不写TAKE,一次性回城石则写TAKE。
三、永久回城石制作
永久回城石的核心是不扣除物品本身。物品数据库中StdMode设为31,AniCount设为固定编号,例如100。QF脚本中只执行传送,不执行TAKE。
示例:
[@StdModeFunc100]
IF
ACT
MAPMOVE33303305
末尾的5表示以330330为中心,半径5范围内随机落点。不同引擎参数顺序可能不同,正式使用前需要确认当前引擎MAPMOVE写法。
永久随机石做法类似,只是不传回固定地图,而是留在当前地图随机传送:
[@StdModeFunc110]
IF
ACT
MAP
MAP命令会让玩家在当前地图随机传送。如果当前地图禁止随机,则需要改用指定地图传送。
四、延迟回城石制作
延迟回城石适合做读条回城,玩家点击后需要等待几秒,期间移动或受击会中断。GOM类引擎可使用自定义采集命令实现进度条。
示例:
[@StdModeFunc101]
IF
ACT
CUSTOMGATHER301@回城完成@回城中断
这里3表示3秒读条,0表示采集类型,1表示中断后触发中断标签。玩家完成读条后进入@回城完成,被中断则进入@回城中断。
[@回城完成]
IF
ACT
MAPMOVE3330330
SENDMSG6回城成功
[@回城中断]
IF
ACT
SENDMSG6回城被打断
延迟回城石需要配合战斗状态、移动状态判断,避免玩家在安全区外无成本回城。部分引擎支持检测玩家是否处于战斗状态,可根据版本增加相应条件。
五、多地图回城石制作
如果版本有多个主城,可以给不同回城石设置不同AniCount。
示例:
[@StdModeFunc100]
IF
ACT
MAPMOVE3330330
[@StdModeFunc101]
IF
ACT
MAPMOVE0330330
[@StdModeFunc102]
IF
ACT
MAPMOVE1100100
每个AniCount对应一个地图编号,这样可以制作盟重回城石、比奇回城石、沙城回城石等。地图编号必须和当前服务端MapInfo配置一致。
六、NPC合成回城石
回城石也可以通过NPC合成获得。玩家携带材料后,NPC检测材料并生成回城石。
示例:
[@合成回城石]
IF
CHECKITEM回城石碎片10
CHECKGOLD50000
ACT
TAKE回城石碎片10
TAKEGOLD50000
GIVE盟重回城石1
SENDMSG6合成成功
如果希望合成永久回城石,只需把产物改为永久回城石名称即可。合成类回城石仍需要物品数据库和QF触发脚本配合,否则双击不会生效。
七、任务或活动发放回城石
回城石也可以通过任务、活动、充值奖励发放。脚本中使用GIVE即可:
GIVE盟重回城石1
如果是永久回城石,发放后玩家可无限双击。如果是一次性回城石,QF脚本中需要加TAKE扣除物品。
示例:
[@StdModeFunc100]
IF
CHECKITEM盟重回城石1
ACT
TAKE盟重回城石1
MAPMOVE3330330
ELSEACT
SENDMSG6回城石已失效
八、常见问题处理
回城石双击无反应,多数是AniCount与QF标签不匹配。例如数据库写AniCount100,脚本里却写成[@StdModeFunc10],就不会触发。
回城石不消耗,检查脚本中是否有TAKE命令。永久回城石不应写TAKE,一次性回城石必须写TAKE。
回城后坐标不对,检查MAPMOVE后面的地图编号和坐标是否正确。部分引擎地图编号如果使用字母数字混合,需要确认不会与变量冲突。
延迟回城不中断,检查自定义采集命令是否填写了中断标签,以及客户端是否支持进度条显示。
修改完物品数据库后,需要重新加载物品数据;修改QFunction-0.txt后,需要重新加载功能脚本或重启服务端,否则新回城石不会生效。

