在传奇私人服务器里,用 hero 引擎设置元宝领取限制是很常见的需求 —— 比如让某个指定人物只能领一次元宝,或者同一 IP 地址不能重复领取。这两种限制都可以通过脚本里的变量和判断条件实现,关键是记录领取状态并做好验证。下面就分步骤说说具体怎么写这类脚本。
如何设置 “指定人物只能领取一次元宝” 的脚本?
这种限制的核心是给指定人物绑定一个 “领取标记”,领过之后就记录状态,下次再领时拒绝。需要用到 hero 引擎的 “变量绑定” 和 “人物名称判断” 命令。
首先,确定哪些是 “指定人物”。比如只允许 “龙城老大”“风云再起” 这两个账号领取,脚本里要先判断玩家名称是否在这个名单里。然后用变量记录他们是否领过,比如用 “U100” 作为领取标记(U 开头的变量通常绑定玩家账号)。
具体脚本可以这样写:
[@领取元宝]
#say
你是指定人物,可以领取 1000 元宝,仅限一次。
< 立即领取 /@GetYuanBao>
[@GetYuanBao]
#if
CheckName 龙城老大 // 检查玩家名称是否为 “龙城老大”
OR CheckName 风云再起 // 或者是 “风云再起”
CheckVariable U100 0 // 检查变量 U100 是否为 0(0 代表没领过)
#act
GiveYuanBao 1000 // 给 1000 元宝
SetVariable U100 1 // 把变量设为 1(标记为已领取)
SENDMSG 1 恭喜,1000 元宝已到账!
#elseact
#if
CheckVariable U100 1 // 如果变量为 1(已领过)
#act
MESSAGEBOX 你已经领过元宝了,不能重复领取哦!
#else
#act
MESSAGEBOX 你不是指定领取的人物,无法领取。
#endif
这里的 “CheckName” 是 hero 引擎判断玩家名称的命令,“CheckVariable U100 0” 是检查领取状态。变量 U100 会和玩家账号绑定,即使玩家下线再上线,这个标记也不会消失,确保只能领一次。
如果指定人物较多,可以用 “CheckNameList” 命令批量判断,把所有允许领取的名称写在 “NameList.txt” 里,脚本里写成 “CheckNameList 允许领取名单”,更方便管理。
如何设置 “限制同一 IP 领取元宝” 的脚本?
限制 IP 领取,需要记录每个 IP 的领取次数,超过次数就拒绝。hero 引擎里可以用 “IP 变量”(比如 “I200”,I 开头的变量绑定 IP 地址)记录领取次数,再用 “CheckIP” 命令验证。
比如限制同一 IP 只能领一次,脚本可以这样设计:
[@IP 领取元宝]
#say
每个 IP 仅限领取 500 元宝,先到先得!
< 领取元宝 /@GetByIP>
[@GetByIP]
#if
CheckVariable I200 0 // 检查 IP 变量 I200 是否为 0(没领过)
#act
GiveYuanBao 500 // 给 500 元宝
SetVariable I200 1 // 标记该 IP 已领取
SENDMSG 1 元宝领取成功,同一 IP 只能领一次!
#elseact
MESSAGEBOX 这个 IP 已经领过元宝了,换个网络试试吧。
如果想允许同一 IP 领多次但有限制(比如每天 3 次),可以用 “AddVariable” 命令累计次数,再用 “CheckVariable” 判断是否超过上限:
[@IP 多次领取]
#say
每个 IP 每天最多领 3 次,每次 200 元宝。
< 领取 /@GetMulti>
[@GetMulti]
#if
CheckVariable I200 < 3 // 检查次数是否小于 3
#act
GiveYuanBao 200
AddVariable I200 1 // 次数加 1
SENDMSG 1 已领取第 <\(STR(I200)>次,还能领<3-<\)STR (I200)>> 次。
#elseact
MESSAGEBOX 今天领取次数已用完,明天再来吧!
// 记得加一个每日重置变量的脚本(比如零点重置)
[@每日重置 IP 次数]
#act
SetVariable I200 0 // 每天零点把 IP 领取次数重置为 0
// 这个脚本可以在 “全局定时器” 里设置,每天自动执行
如何让两种限制同时生效(指定人物 + IP 限制)?
如果既想限制指定人物只能领一次,又不想让他们用多个账号在同一 IP 重复领取,只需把两种判断条件合并到脚本里:
[@组合限制领取]
#say
指定人物专属元宝,每个 IP 仅限领一次。
< 领取 /@GetCombine>
[@GetCombine]
#if
CheckName 龙城老大 // 是指定人物
OR CheckName 风云再起
CheckVariable U100 0 // 该人物没领过
CheckVariable I200 0 // 该 IP 没领过
#act
GiveYuanBao 1500
SetVariable U100 1 // 标记人物已领
SetVariable I200 1 // 标记 IP 已领
SENDMSG 1 领取成功,人物和 IP 均已记录!
#elseact
#if
CheckVariable U100 1
#act
MESSAGEBOX 你已经领过了!
#elseif
CheckVariable I200 1
#act
MESSAGEBOX 这个 IP 已经有指定人物领过了!
#else
#act
MESSAGEBOX 不符合领取条件哦。
#endif
这样就实现了 “指定人物且该 IP 未领过” 才能领取的双重限制,避免了刷元宝的漏洞。
如何处理脚本设置后的常见问题?
变量不生效:hero 引擎的变量需要注意绑定范围,U 开头绑定账号,I 绑定 IP,G 是全局变量,别用错类型。比如限制 IP 要用 I 变量,用了 U 变量就会绑定到账号,起不到 IP 限制作用。
人物名称判断失灵:检查名称是否完全一致,包括空格和符号(比如 “龙城老大” 和 “龙城 老大” 不一样)。可以在游戏里用 “@查询名称” 命令确认玩家的准确名称。
IP 限制对局域网无效:同一局域网内的设备可能共用一个公网 IP,这种情况下脚本会判定为同一 IP,导致多人无法领取。如果需要允许局域网内领取,可以改用 “机器码限制”(hero 引擎的 “CheckMachineCode” 命令),但设置更复杂。
需要手动重置时:如果想让某个指定人物重新领取,可以在 GM 命令里执行 “SetVariable 玩家名 U100 0”;重置 IP 限制则用 “SetVariable IP 地址 I200 0”(IP 地址要写完整,比如 “192.168.1.100”)。
其实这类限制脚本的核心就是 “记录状态 + 条件判断”:用变量记住谁领过、领了几次,下次领取时先检查这些状态,符合条件才给元宝。写的时候可以先搭好基础框架,再逐步添加判断条件,测试时多换几个账号和 IP 试试,确保限制效果符合预期。这样既能给特定玩家福利,又能防止滥用,让元宝发放更合理。
传奇(hero 引擎)如何写领取元宝限制脚本?指定人物和 IP 限制方法
来源:
作者:
点击:

