传奇捐献并列第一脚本编写方法 含完整实操步骤

来源: 作者: 点击:
传奇捐献并列第一脚本的核心,是通过变量存储、排序判断和多条件触发,实现多名玩家捐献金额相同时,均能获得第一称号、属性及对应奖励,无需区分先后顺序,适配多数主流传奇引擎。
首先明确脚本核心逻辑,捐献并列第一的关键的是放弃单一“唯一第一”的判断模式,改用“金额达标+排序匹配”的双重逻辑,先设定捐献封顶金额(可自定义),再通过排序命令筛选出所有达到封顶金额的玩家,统一判定为并列第一,同步触发对应奖励和标识。
脚本编写前需确定两个核心设置,一是捐献存储变量,二是封顶金额。个人捐献金额建议使用个人变量(如U变量)存储,全区捐献排名及封顶金额使用全局变量(如G变量、A变量)存储,避免重启服务器后数据丢失,其中全局变量需搭配保存命令,确保数据持久化。
个人捐献金额存储脚本,需放在QManage.txt文件中(路径为D:\mirserver\Mir200\Envir\MapQuest_Def),用于记录玩家每次捐献的金额,累计计入个人捐献总额,脚本如下:
(@捐献元宝)
#if
CHECKGAMEGOLD >= 1000
#act
GAMEGOLD - 1000
CALCVAR U10 + 1000 ;U10为个人捐献总额变量,可自行替换无冲突变量
CALCVAR G100 + 1000 ;G100为全区捐献总额变量,可自行替换
SAVEVAR U10 ..\QuestDiary\捐献数据\个人捐献.txt ;保存个人捐献数据
SAVEVAR G100 ..\QuestDiary\捐献数据\全区捐献.txt ;保存全区捐献数据
SENDMSG 6 您成功捐献1000元宝,当前累计捐献:{<$USER(U10)>}元宝
SENDMSG 0 全服公告:玩家{<$USERNAME>}捐献1000元宝,全区累计捐献:{<$GLOBAL(G100)>}元宝
上述脚本中,U10变量用于存储单个玩家的累计捐献金额,每次捐献1000元宝(可修改金额)后自动累加,G100变量记录全区总捐献金额,同时通过SAVEVAR命令将数据保存到指定文本文件,避免服务器重启后数据清零,这是实现并列第一的基础,确保所有捐献数据可追溯、可排序。
接下来是并列第一的核心判断脚本,重点使用SORTVARSTR排序命令,筛选出所有达到封顶金额的玩家,实现并列判定。首先设定捐献封顶金额,假设封顶金额为100000元宝,使用全局变量G101存储,脚本放在QFunction-0.txt文件中,用于定时更新排名和判定并列第一:
(@OnTimer60) ;每分钟更新一次排名,60代表60秒,可修改
#if
#act
LOADVAR LIST ..\QuestDiary\捐献数据\个人捐献.txt ;加载所有玩家捐献数据
SORTVARSTR U10 10 1 1 ;排序U10变量,取前10名,1为降序,1为后捐献者优先
SET G101 100000 ;设定捐献封顶金额为100000元宝,可自定义修改
;筛选达到封顶金额的玩家,判定为并列第一
FOR 1 10 ;循环查询前10名玩家
CALCVAR N1 = <$GETSORTSTRVALUE(U10,{$STR(N0)})> ;获取当前排名玩家的捐献金额
#if
EQUAL N1 <$GLOBAL(G101)> ;判断玩家捐献金额是否达到封顶金额
#act
SET S1 <$GETSTRKEY(U10,{$STR(N0)})> ;记录并列第一玩家名字
ADDSTRVALUE A11 <$GETSTRKEY(U10,{$STR(N0)})> <$STR(N1)>#<$UTCNOW8> ;存储并列第一玩家信息
SENDMSG 6 捐献并列第一玩家:{<$STR(S1)>},捐献金额:{<$STR(N1)>}元宝
#else
BREAK ;未达到封顶金额,停止循环
#ENDIF
#ENDFOR
上述脚本的核心是排序和筛选,通过SORTVARSTR命令对所有玩家的个人捐献变量U10进行降序排序,取前10名玩家逐一判断,只要捐献金额等于设定的封顶金额G101,就判定为并列第一,同时将玩家名字和捐献金额存储到A11变量中,用于后续称号、属性奖励的触发,以及排行榜显示。
需要注意,SORTVARSTR命令的参数需严格规范,第一个参数为排序的变量名称(此处为U10),第二个参数为排序数量(此处为10,可根据需求修改),第三个参数为排序方式(1为降序,0为升序),第四个参数为同等金额排序优先级(1为后捐献者优先,0为先捐献者优先),参数错误会导致排序失效,无法正确筛选并列第一玩家。
并列第一的称号和属性奖励脚本,需绑定上述排序筛选结果,只要玩家被判定为并列第一,即可自动获得对应奖励,脚本同样放在QFunction-0.txt文件中,可与排名更新脚本关联,实现实时触发:
(@捐献并列第一奖励)
#if
STRFIND <$STR(A11)> <$USERNAME> ;判断当前玩家是否在并列第一列表中
#act
;发放并列第一称号,可自定义称号名称和颜色
ADDTITLE 捐献并列第一 250 ;250为称号颜色代码,可修改
;发放属性奖励,攻魔道、血量等可自定义
INC N$攻击属性 50
INC N$防御属性 50
INC N$魔法属性 50
INC N$总体血量 500
;发放实物奖励,可替换为元宝、道具等
GAMEGOLD + 5000
GIVE 高级转生丹 1
SENDMSG 7 恭喜您成为捐献并列第一,获得称号、属性及实物奖励,奖励已发放至背包
#else
#act
REMOVETITLE 捐献并列第一 ;未在并列第一列表中,移除称号
#ENDIF
该脚本通过STRFIND命令,查询当前玩家名字是否在存储并列第一信息的A11变量中,若存在则发放称号、属性和实物奖励,若不存在则移除称号,确保奖励发放精准,避免未达到条件的玩家获得奖励,同时属性奖励可根据自身服务器版本,修改攻魔道、血量等数值,实物奖励可替换为对应道具或元宝。
排行榜显示脚本,用于在NPC对话框中展示所有并列第一玩家信息,方便全区玩家查看,脚本放在Market_Def目录下的NPC脚本中,结合文本显示命令,将A11变量中存储的并列第一玩家信息展示出来,示例如下:
(@main)
#IF
#ACT
#SAY
<捐献排行榜/SCOLOR=254>
<--------------------------------------------------------------/SCOLOR=7>
<捐献封顶金额:{<$GLOBAL(G101)>}元宝/SCOLOR=250>
<并列第一玩家:/SCOLOR=254>
<$STR(A11)> ;显示所有并列第一玩家名字及捐献金额
<--------------------------------------------------------------/SCOLOR=7>
<我要捐献/@捐献元宝> <查看个人捐献/@查看个人捐献>
<查看全区捐献/@查看全区捐献>
排行榜显示中,可通过SCOLOR参数设置文本颜色,增强视觉效果,同时添加“我要捐献”“查看个人捐献”“查看全区捐献”等触发点,方便玩家操作,其中查看个人捐献和全区捐献的脚本,可通过调用U10和G100变量实现,示例如下:
(@查看个人捐献)
#if
#act
MESSAGEBOX 您当前累计捐献:{<$USER(U10)>}元宝\
距离封顶金额还差:{<$CALC(<$GLOBAL(G101)>-<$USER(U10)>)>}元宝
(@查看全区捐献)
#if
#act
MESSAGEBOX 全区累计捐献:{<$GLOBAL(G100)>}元宝\
当前并列第一玩家:{<$STR(A11)>}
脚本编写完成后,需进行基础调试,避免出现数据错乱、奖励发放异常等问题。首先检查变量是否冲突,确保U10、G100、G101、A11等变量未被其他脚本占用,若有冲突可替换为其他无冲突变量;其次测试捐献功能,捐献对应金额后,查看个人和全区捐献数据是否正常累加,文本文件是否成功保存数据。
然后测试并列第一判定功能,让多名玩家捐献达到设定的封顶金额,查看排序脚本是否能正确筛选出所有达标玩家,A11变量是否能准确存储玩家信息;最后测试奖励发放功能,达标玩家是否能自动获得称号、属性和实物奖励,未达标玩家是否能正常移除称号,确保整个流程无异常。
补充说明,不同传奇引擎(如GOM、GEE、BLUE)对命令的支持略有差异,部分引擎可能需要配合插件使用,比如GOM引擎需搭配ESP、WXF等主流插件,才能正常使用SORTVARSTR排序命令和ADDSTRVALUE存储命令,若脚本无法正常运行,可检查引擎是否支持相关命令,或替换为对应引擎兼容的同类命令。
另外,封顶金额可根据服务器需求灵活修改,只需修改G101变量的数值即可,同时可添加封榜功能,设定固定时间内停止捐献,封榜后不再更新并列第一列表,封榜脚本可通过定时命令实现,示例如下:
(@封榜)
#if
HOUR 23
MIN 59
#act
SET G102 1 ;G102为封榜标识,1为封榜,0为未封榜
SENDMSG 0 全服公告:捐献活动已封榜,当前并列第一玩家名单已固定,不再更新
(@捐献元宝)
#if
EQUAL G102 1
#act
SENDMSG 7 捐献活动已封榜,无法继续捐献
break
封榜功能可避免活动结束后仍有玩家捐献,导致并列第一名单频繁变动,封榜后玩家无法继续捐献,并列第一奖励可在封榜后统一发放,也可实时发放,根据服务器活动规则调整即可。
总结来说,传奇捐献并列第一脚本的编写,核心是“变量存储+排序筛选+奖励触发”,只要正确设置个人和全局变量,使用排序命令筛选达标玩家,绑定对应奖励脚本,就能实现多名玩家捐献金额相同时的并列第一判定,适配多数传奇服务器,操作简单,可根据自身需求灵活修改参数和奖励。