传奇新版沙巴克占领奖励脚本:税箱领奖连胜加爵每日自动发放与异常处理

来源: 作者: 点击:
新版本沙城奖励脚本建议按“占领时立即公告+城主上线领奖+每日税箱发元宝+连胜加成+防御成员领福利”五层做,不用单一Give死写奖励,避免城主不上线就发不出去。脚本主体放Envir\QuestDiary,Market_Def建领奖NPC,Robot_def定时发每日奖,QFunction处理攻城结束事件。城堡索引按引擎写,M2城堡管理里可看到当前城名和索引。

一、占领瞬间发奖与公告

QuestDiary\沙巴克\攻城结束.txt:

[@CastleBattleEnd]
if

EQUAL SCASTLEOWNERNAME 攻城成功行会名
act

SENDMSG 1 <$SCASTLEOWNERNAME>行会已攻占沙巴克,全服发放攻城参与奖。

城主单独奖励在QFunction或QuestDiary城堡占领触发段:

[@CastleCapture]
if

act

SETCASTLEOWNERGOLD 沙巴克 元宝 5000
SENDMSG 1 <$SCASTLEOWNERNAME>行会会长获得城主元宝奖励5000。
SENDMSG 6 恭喜你成为新沙巴克城主,可找皇宫沙巴克管理员领取专属奖励。

部分引擎用SCASTLEOWNERNAME取占领行会名、SETCASTLEOWNERGOLD给城主特定货币;命令名不同就改成GM给予命令或写入城主变量后由领奖NPC发。占领触发不要放太多Give,避免上线玩家堆积领奖卡顿,只发关键货币,其余走税箱NPC。

二、城主税箱每日领奖

Market_Def\沙巴克税箱-0.txt,文件头按引擎Merchant格式写沙巴克皇宫坐标:

[@main]
领取今日城主税箱/taxbox
查看攻城连胜/winstreak
城主专属商店/shop

[@taxbox]
if

CHECKCASTLEOWNER 沙巴克
act

CHECK [999] 0
act

SET [999] 1
SAVEVAR HUMAN 城主税箱 ..\QuestDiary\沙巴克\税箱记录.txt
Give 元宝 2000
Give 城主令牌 5
Give 沙巴克宝箱 1
SENDMSG 6 城主每日税箱已领取,获得2000元宝、5个城主令牌、1个沙巴克宝箱。
elsesay

今日税箱已领取,明日再领。
elsesay

你不是当前沙巴克城主,无法领取税箱。

CHECKCASTLEOWNER后第一个#act是城主分支,#elsesay是非城主提示。变量[999]防重复领取,每天由机器人清零;若引擎不支持CHECKCASTLEOWNER,改用城堡名比较或角色变量。

三、机器人每日自动发沙城福利

Envir\Robot_def\AutoRunRobot.txt:

AutoRun NPC RUNONDAY 00:00:10 @沙城每日重置

AutoRun NPC RUNONDAY 12:00:00 @沙城在线发奖

AutoRun NPC RUNONWEEK 1:00:00 @沙城周一连胜结算

RobotManage.txt:

[@沙城每日重置]
if

act

DELUSERDATE ..\QuestDiary\沙巴克\税箱记录.txt
SENDMSG 1 沙巴克税箱已刷新,城主可前往皇宫领取。

[@沙城在线发奖]
if

CHECKCASTLEOWNER 沙巴克
act

Give 元宝 500
Give 沙巴克补给包 1
SENDMSG 6 城主在线福利已发放,感谢守护沙城。

[@沙城周一连胜结算]
if

act

CALCVAR [连胜周数] + 1
SAVEVAR GLOBAL [连胜周数] ..\QuestDiary\沙巴克\连胜数据.txt
SENDMSG 1 沙巴克连胜加成更新,当前连胜周数<$GLOBAL(连胜周数)>。

机器人清税箱用DELUSERDATE,参数和文件名按所用引擎确认;全局连胜用GLOBAL变量跨角色读取,个人税箱用HUMAN。若引擎机器人不能对单角色Give,就把在线发奖改成“城主上线触发+机器人公告提醒”。

四、连胜加爵与奖励递增

Market_Def\沙巴克管理员-0.txt:

[@main]
查看我的城主爵位/title
领取连胜累积奖励/streakreward

[@title]
if

CHECKVAR [连胜周数] > 5
act

SENDMSG 6 爵位:沙城之王,连胜超过5周。
elsesay

if

CHECKVAR [连胜周数] > 2
act

SENDMSG 6 爵位:沙城霸主,连胜超过2周。
elsesay

SENDMSG 6 爵位:新晋城主,继续努力守城。

[@streakreward]
if

CHECKCASTLEOWNER 沙巴克
CHECK [888] 0
act

CHECKVAR [连胜周数] = D0
CALCVAR D0 * 1000
act

Give 元宝 <$D0>
SET [888] 1
SAVEVAR HUMAN 连胜奖励 ..\QuestDiary\沙巴克\连胜领取.txt
SENDMSG 6 已按连胜周数发放累积元宝,本周<$D0>。
elsesay

连胜奖励已领取或你不是城主。

变量乘法、赋D0语法按引擎支持度调整;不支持就写分段:连胜1周1000、2周2000、3周以上3000加固定宝箱,避免复杂表达式不生效。

五、守城成员与参与奖

占领触发段给守城成员发奖:

[@CastleCapture]
if

CHECKCASTLEMEMBER 沙巴克
act

Give 守城积分 50
Give 沙巴克补给包 1
SENDMSG 6 守城成员奖励已发放。
elsesay

if

act

Give 攻城参与奖 1
SENDMSG 6 攻城参与者奖励已发放。

CHECKCASTLEMEMBER检测是否占领行会成员,攻城参与奖给所有在线参战者;参与判定若引擎不提供,用攻城地图在线名单或参战变量在攻城开始时写名单。

六、城主商店与税箱兑换

Market_Def\沙巴克商店-0.txt:

[@main]
购买城主专属装备/shop
用城主令牌兑换/exchange

[@exchange]
if

CHECKITEM 城主令牌 10
act

Take 城主令牌 10
Give 城主战甲 1
SENDMSG 6 消耗10个城主令牌兑换城主战甲。
elsesay

令牌不足,需要10个城主令牌。

商店也可用标准商品文件,城主令牌做活动货币,避免全部奖励都给不可交易绑定元宝。

七、掉线、换会长、未上线处理

攻城刚结束会长下线:占领触发段只发公告和城主基础货币,不做大量背包物品发放。城主上线后在皇宫NPC领税箱,用CHECKCASTLEOWNER实时校验,不依赖占领时的角色名。

会长在占领后换人:CHECKCASTLEOWNER以当前M2城堡数据为准,换会长后新会长进皇宫即可领;领奖脚本不要用旧变量写死会长名。

税箱重复领:HUMAN变量[999]每日机器人清零;换引擎不支持SAVEVAR就改用日期变量,例如CHECKLEAVEDATE比较今日日期,不符才发。

城主长期不上线:机器人只发在线福利,离线不发;领奖靠上线NPC,避免邮件/离线系统不支持导致奖励丢失。

八、完整城主领奖脚本

[@main]
城主税箱领取/tax
连胜奖励领取/streak
城主商店/shop
退出/exit

[@tax]
if

CHECKCASTLEOWNER 沙巴克
CHECK [999] 0
act

SET [999] 1
SAVEVAR HUMAN 城主税箱 ..\QuestDiary\沙巴克\税箱记录.txt
Give 元宝 2000
Give 城主令牌 5
Give 沙巴克宝箱 1
SENDMSG 6 城主税箱领取成功。
elsesay

今日已领取税箱,请明日再来。
elsesay

你不是当前沙巴克城主。

[@streak]
if

CHECKCASTLEOWNER 沙巴克
CHECK [888] 0
act

CHECKVAR [连胜周数] = D0
CALCVAR D0 * 1000
act

Give 元宝 <$D0>
SET [888] 1
SAVEVAR HUMAN 连胜奖励 ..\QuestDiary\沙巴克\连胜领取.txt
SENDMSG 6 连胜奖励发放完成。
elsesay

连胜奖励已领取或你不是城主。

[@exit]
act

Close

九、排错

领奖NPC点没反应:Merchant未注册、脚本非ANSI、[@main]无选项、NPC坐标不可走;先放安全坐标测试。

CHECKCASTLEOWNER无效:引擎不支持或城堡名写错;用M2城堡管理复制当前城名,或改SCASTLEOWNERNAME字符串比较。

占领不发奖:QFunction的城堡触发段未注册,或攻城结束后事件名不是@CastleCapture;先写一条公告测试触发是否进段。

变量不重置:机器人DELUSERDATE路径错或命令名不同;手动删税箱记录.txt后重新上线测一次。

重复领奖:SAVEVAR失败导致[999]没存盘;改用GLOBAL日期变量或每日机器人明确清名单。

守城成员没奖:CHECKCASTLEMEMBER命令不支持,改成占领行会名名单,守城开始时ADDNAMELIST,领奖时CHECKNAMELIST。

按占领公告、城主税箱、在线福利、连胜加成、成员商店五段做,新版沙巴克奖励既能给在线参与感,也不依赖城主必须在线;领奖变量每天机器人清零,换会长、掉线、未上线都由CHECKCASTLEOWNER实时校验。