传奇服沙城主奖励脚本实现方法 攻城后自动触发教程

来源: 作者: 点击:
该脚本核心需实现三大功能:攻城结束判定、5分钟延迟触发、双沙城主对话框弹出、领取后全服彩色提示。需结合引擎自带攻城变量、定时器及对话框命令,分步骤配置脚本文件,以下为完整实操方案。

一、脚本核心依赖与文件路径

脚本基于传奇通用引擎(GEE、HERO等均适配),依赖攻城结束变量、定时器命令、对话框命令及全服广播命令。核心文件及路径:1. 主脚本文件:D:\Mirserver\Mir200\Envir\MapQuest_def\QManage.txt(控制触发逻辑、延迟及奖励);2. 对话框配置文件:D:\Mirserver\Mir200\Envir\Dialog.txt(定义奖励领取对话框样式及按钮);3. 沙巴克配置文件:D:\Mirserver\Mir200\Envir\Castle\Castle.txt(确认攻城结束变量名称)。编写工具用记事本或Notepad,保存为ANSI编码,避免乱码。

关键变量说明:多数引擎默认用“CASTLEWAROVER”作为攻城结束变量,1代表结束,0代表进行中;沙城主身份变量为“SCMASTER”,存储当前沙巴克城主角色名,双城主场景需用“SCMASTER2”备用变量(部分引擎需手动开启双城主支持,在Castle.txt中设置“DoubleMaster=1”)。

二、分步脚本编写(从触发到奖励全流程)

(一)第一步:攻城结束检测与5分钟延迟触发脚本

在QManage.txt末尾添加脚本,实现“攻城结束后自动启动5分钟定时器”,核心逻辑为检测攻城结束变量,触发延迟后执行城主对话框调用。

脚本示例:

[@攻城结束触发]
#IF
CheckVar CASTLEWAROVER 1 (检测攻城是否结束,1为结束)
CheckVar REWARD_TIMER 0 (避免重复触发定时器,0为未触发)
#ACT
SetVar REWARD_TIMER 1 (标记定时器已启动,防止重复执行)
SetScTimer 1 300 (设置300秒=5分钟延迟,定时器ID为1)
SENDMSG 5 攻城已结束,5分钟后沙城主可领取专属奖励!
#ELSEACT
return (变量不满足时退出,不执行后续逻辑)

[@OnTimer1] (5分钟延迟到后触发此段)
#IF
CheckVar CASTLEWAROVER 1 (再次确认攻城已结束,防止中途重启)
CheckVar REWARD_TIMER 1
#ACT
SetVar REWARD_TIMER 0 (重置定时器标记,为下次攻城做准备)
goto @调用城主对话框 (执行弹出对话框逻辑)
#ELSEACT
KillScTimer 1 (变量异常时关闭定时器,避免资源占用)
SetVar REWARD_TIMER 0

(二)第二步:双沙城主对话框调用脚本

在QManage.txt中添加[@调用城主对话框]段落,实现精准定位双城主角色,分别弹出奖励领取对话框。需用身份变量判断,确保仅沙城主能触发对话框,其他玩家无响应。

脚本示例:

[@调用城主对话框]
#IF
CheckUserName $SCMASTER (判断当前玩家是否为第一沙城主)
#ACT
Dialog 1 (调用ID为1的奖励对话框,对应Dialog.txt配置)
SENDMSG 1 您可领取沙城主专属奖励,请注意查收对话框! 250 1 (给城主发送提示,250为红色)
#ELSEIF
CheckUserName $SCMASTER2 (判断当前玩家是否为第二沙城主)
#ACT
Dialog 1 (双城主共用同一对话框,也可单独配置Dialog 2区分奖励)
SENDMSG 1 您可领取沙城主专属奖励,请注意查收对话框! 250 1
#ELSEACT
return (非城主玩家不执行任何操作)

(三)第三步:对话框配置(Dialog.txt文件编写)

在Dialog.txt中添加ID为1的对话框配置,定义对话框标题、内容、领取按钮及触发命令。对话框支持自定义文字、按钮位置,点击“领取奖励”后触发奖励发放及全服提示。

配置示例(Dialog.txt中添加):

[Dialog 1] (与脚本中Dialog 1对应,ID需一致)
Title=沙城主专属奖励 (对话框标题)
Content=恭喜您成为沙巴克城主,可领取以下奖励:\ (对话框内容,\为换行符)
1. 元宝10000个\
2. 城主专属称号【沙城主宰】\
3. 极品装备一件\
是否立即领取? (结尾提示语)
Button1=领取奖励, @领取沙城奖励 (按钮1名称及触发脚本)
Button2=稍后领取, @关闭对话框 (按钮2名称及关闭命令)
Size=300 200 (对话框尺寸,宽300高200,可调整)
Pos=400 300 (对话框在屏幕中的位置,横400纵300)
Color=255 255 255 (文字颜色,RGB白色,可自定义)

(四)第四步:奖励发放与全服彩色提示脚本

在QManage.txt中添加[@领取沙城奖励]和[@关闭对话框]段落,实现领取奖励、全服彩色提示、关闭对话框功能。全服提示用SENDMSG命令搭配颜色参数,实现彩色字体效果。

脚本示例:

[@领取沙城奖励]
#IF
CheckUserName $SCMASTER (再次校验身份,防止冒充领取)
#ACT
Give 元宝 10000 (发放10000元宝,物品名称需与Item.DB一致)
ChangeTitle 沙城主宰 (发放专属称号,称号需提前在引擎中配置)
Give 裁决之杖 1 (发放极品装备,可替换为其他道具)
CloseDialog (领取后自动关闭对话框)
SENDMSG 0 【沙城喜讯】恭喜玩家%s成功领取沙城主专属奖励! 255 0 255 (全服紫色提示,0为全服频道,255 0 255为紫RGB)
#ELSEIF
CheckUserName $SCMASTER2
#ACT
Give 元宝 10000
ChangeTitle 沙城主宰
Give 骨玉权杖 1 (第二城主可换不同装备,也可与第一城主一致)
CloseDialog
SENDMSG 0 【沙城喜讯】恭喜玩家%s成功领取沙城主专属奖励! 255 0 255
#ELSEACT
SENDMSG 5 您无权限领取该奖励!
CloseDialog

[@关闭对话框]
#ACT
CloseDialog (关闭当前对话框)
SENDMSG 5 您已取消领取沙城主奖励,奖励将保留至下次攻城前。

(五)第五步:攻城结束自动触发脚本配置

需将[@攻城结束触发]脚本与引擎攻城结束事件绑定,确保攻城结束后自动执行。两种绑定方式:1. 引擎自带绑定:打开引擎配置器,找到“攻城设置”→“结束后执行脚本”,填入“@攻城结束触发”;2. 脚本自动循环检测:在QManage.txt添加循环检测脚本,每10秒检测一次攻城结束变量。

循环检测脚本示例(QManage.txt添加):

[@攻城状态检测]
#IF
CheckVar CASTLEWAROVER 1
CheckVar REWARD_TIMER 0
#ACT
goto @攻城结束触发
#ELSEACT
SetScTimer 2 10 (每10秒检测一次,定时器ID为2)
goto @OnTimer2

[@OnTimer2]
#ACT
goto @攻城状态检测

三、引擎适配与关键配置调整

(一)双城主功能开启

部分引擎默认仅支持单城主,需手动开启双城主。打开Castle.txt文件,添加“DoubleMaster=1”(无该字段则新增),同时设置“MasterCount=2”,保存后重启引擎生效。若引擎无SCMASTER2变量,可自定义变量存储第二城主,在攻城结束后添加赋值脚本:SetVar SCMASTER2 角色名(需结合引擎攻城日志获取第二城主信息)。

(二)颜色参数与全服提示优化

SENDMSG命令彩色字体格式:SENDMSG 频道 内容 颜色1 颜色2 颜色3(部分引擎为SENDMSG 频道 颜色代码 内容)。常用彩色代码:红色(250)、绿色(30)、蓝色(20)、紫色(255 0 255)、金色(255 215 0)。示例:SENDMSG 0 恭喜%s领取奖励! 255 215 0(全服金色提示)。

(三)定时器与变量冲突规避

脚本中使用的定时器ID(1、2)需确保不与QManage.txt中其他脚本重复,可查看现有脚本的SetScTimer命令,更换未使用的ID。变量REWARD_TIMER需在攻城开始前重置为0,可在Castle.txt中添加“WarStart=SetVar REWARD_TIMER 0”,确保每次攻城开始后变量状态正确。

四、调试与避坑要点

1. 变量校验:重启服务端后,用GM命令“CHECKVAR CASTLEWAROVER”查看攻城结束变量是否正常,攻城结束后变量应变为1;输入“CHECKVAR SCMASTER”确认城主名称是否正确存储。

2. 对话框测试:用GM命令“Dialog 1”手动触发对话框,检查按钮是否正常响应,领取奖励后是否自动关闭,避免Dialog.txt格式错误(如缺少逗号、括号不闭合)。

3. 引擎命令适配:不同引擎命令有差异,HERO引擎全服提示可用“BROADCAST”命令替代SENDMSG,格式为“BROADCAST 彩色代码 内容”;GEE引擎关闭对话框命令为“CloseDialog”,部分老引擎为“ExitDialog”。

4. 奖励发放校验:测试时创建两个测试账号,占领沙巴克成为双城主,等待攻城结束5分钟后,查看对话框是否弹出,领取后道具、称号是否到账,全服提示是否正常显示。

综上,该脚本核心在于攻城结束变量检测、精准延迟控制及身份校验,按上述步骤配置后,即可实现攻城结束5分钟后双城主自动弹窗领奖,领取后全服彩色提示的功能。可根据需求调整奖励内容、对话框样式及彩色字体参数,适配不同传奇版本玩法。