当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

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

热度:
该脚本核心需实现三大功能:攻城结束判定、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
CheckVarCASTLEWAROVER1(检测攻城是否结束,1为结束)
CheckVarREWARD_TIMER0(避免重复触发定时器,0为未触发)
#ACT
SetVarREWARD_TIMER1(标记定时器已启动,防止重复执行)
SetScTimer1300(设置300秒=5分钟延迟,定时器ID为1)
SENDMSG5攻城已结束,5分钟后沙城主可领取专属奖励!
#ELSEACT
return(变量不满足时退出,不执行后续逻辑)

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

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

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

脚本示例:

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

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

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

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

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

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

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

脚本示例:

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

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

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

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

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

[@攻城状态检测]
#IF
CheckVarCASTLEWAROVER1
CheckVarREWARD_TIMER0
#ACT
goto@攻城结束触发
#ELSEACT
SetScTimer210(每10秒检测一次,定时器ID为2)
goto@OnTimer2

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

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

(一)双城主功能开启

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

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

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

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

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

四、调试与避坑要点

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

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

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

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

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