传奇沙城攻城申请脚本完整配置方法

来源: 作者: 点击:
沙巴克攻城申请功能依赖QManage.txt与自定义NPC脚本联动实现。核心逻辑包含资格校验、押金扣除、名单登记三部分,需在服务端EnvirQuestDiary目录下配置对应文件。

首先创建攻城申请NPC,在Mir200EnvirMerChant.txt添加NPC坐标与名称,例如“沙城老兵 330 330”。在MapQuest_def目录新建同名文件夹“沙城老兵”,内部创建主脚本文件“MAIN.txt”。该文件内容如下:

[@main]
IF
EQUAL G100 1
SAY
当前已有行会提交攻城申请,请等待下次开放。

ELSE
你的行会是否要申请本周沙巴克攻城战?
需要缴纳100万金币作为押金。



[@ApplySiege]
IF
CHECKLEADER
ACT
GOTO @CheckGold
ELSESAY
只有行会会长才能申请攻城!


[@CheckGold]
IF
CHECKGOLD > 1000000
ACT
TAKE gold 1000000
SET G100 1
SET S100
SAVEVAR S100 ..GuildSaveSiegeGuild.txt
SENDMSG 0 行会已成功申请攻城!
CLOSE
ELSESAY
行会资金不足100万,无法申请攻城。


关键变量说明:G100为全局标志位,值为1表示已有行会申请;S100存储申请行会名称。SAVEVAR指令将行会名写入GuildSave目录下的SiegeGuild.txt,供攻城战脚本读取。

攻城战开启时需读取申请记录。在QFunction.txt的[@Timer30](每30秒检测)中加入:

IF
EQUAL G100 1
CHECKTIME 19 21
CHECKMAP 7
ACT
LOADVAR S100 ..GuildSaveSiegeGuild.txt
MAPMOVE S100 333 333
SENDMSG 5 攻城行会S100已进入沙巴克!

战斗结束后的处理在[@MapTimer_7](沙巴克地图计时器)中完成。当倒计时归零时:

IF
CHECKMAP 7
ACT
CLEARMAP 7
SET G100 0
DELFILE ..GuildSaveSiegeGuild.txt
SENDMSG 0 本周沙巴克攻城战已结束!

脚本生效前需确认三点:行会系统已启用(M2设置中勾选行会功能)、沙巴克地图编号为7、GuildSave目录存在且有写入权限。测试时先用小号创建行会,通过NPC对话触发申请流程,检查金币扣除与文件生成是否正常。