HERO引擎里做积分使者,不能只写一个兑换NPC。要带动全服消费,必须把积分获取、积分消耗、积分兑换、全服公告、每日限额和防刷判断串起来。积分来源通常分三类:充值获得、消费返利、活动赠送。积分用途通常分三类:兑换装备、兑换材料、兑换特殊功能。下面按HERO引擎常用写法给出可直接参考的脚本示例。
NPC主界面
[@main]
IF
SAY
\
充值、消费均可获得积分。\
积分可兑换装备、材料、功能。\
\
\
\
\
\
\
<关闭/@exit>
查看积分
[@viewpoint]
IF
ACT
SENDMSG6您当前积分为:<CREDITPOINT>
SENDMSG6今日已获取积分:<STR(D0)>
SENDMSG6今日消费返利积分:<STR(D1)>
GOTO@main
这里CREDITPOINT为HERO引擎常用积分变量,用于记录玩家当前可用积分。D0、D1用于记录当日积分获取情况,防止每日无限刷分。
积分充值
[@recharge]
IF
SAY
\
100元宝兑换100积分。\
每日最多兑换10次。\
\
\
\
<返回/@main>
[@buy100]
IF
LARGED09
GAMEGOLD>99
ACT
GAMEGOLD-100
CREDITPOINT+100
INCD01
SENDMSG6充值成功,获得100积分。
GOTO@main
ELSESAY
[@buy500]
IF
LARGED09
GAMEGOLD>499
ACT
GAMEGOLD-500
CREDITPOINT+500
INCD01
SENDMSG6充值成功,获得500积分。
SENDMSG20玩家%s充值获得500积分,当前积分<CREDITPOINT>。
GOTO@main
ELSESAY
这里D0记录当日充值兑换次数,限制为10次。充值后使用SENDMSG20发送全服公告,可刺激其他玩家消费。
消费返利
[@rebate]
IF
SAY
\
每消费100元宝可获得10积分。\
每日最多返利50次。\
\
\
<返回/@main>
[@getrebate]
IF
LARGED149
LARGED299
ACT
GAMEGOLD-100
CREDITPOINT+10
INCD11
INCD2100
SENDMSG6消费返利成功,获得10积分。
GOTO@main
ELSESAY
这里D1记录今日返利次数,D2记录今日消费累计金额。实际版本中如果希望自动返利,可把消费判断放在QFunction-0.txt中,每次元宝消费时触发积分增加。
积分商城
[@shop]
IF
SAY
\
\
\
\
\
\
<返回/@main>
[@buytl]
IF
LARGECREDITPOINT999
CHECKBAGSPACE1
ACT
CREDITPOINT-1000
GIVE屠龙1
SENDMSG6兑换成功,获得屠龙一把。
SENDMSG20玩家%s使用1000积分兑换屠龙。
GOTO@main
ELSESAY
[@buyml]
IF
LARGECREDITPOINT499
CHECKBAGSPACE1
ACT
CREDITPOINT-500
GIVE麻痹戒指1
SENDMSG6兑换成功,获得麻痹戒指。
GOTO@main
ELSESAY
[@buyzfy]
IF
LARGECREDITPOINT199
CHECKBAGSPACE1
ACT
CREDITPOINT-200
GIVE祝福油10
SENDMSG6兑换成功,获得祝福油10个。
GOTO@main
ELSESAY
[@buyexp]
IF
LARGECREDITPOINT99
CHECKBAGSPACE1
ACT
CREDITPOINT-100
GIVE经验丹1
SENDMSG6兑换成功,获得经验丹。
GOTO@main
ELSESAY
积分商城要重点判断积分余额和背包空间。发放奖励前先检测,再扣积分,最后发物品。不能先发物品再扣积分,否则背包满时会出现积分误扣。
今日记录查询
[@today]
IF
SAY
\
今日充值兑换次数:>\
今日消费返利次数:>\
今日消费累计元宝:>\
\
每日0点自动重置。\
<返回/@main>
每日重置
在Robot_defAutoRunRobot.txt中配置每日0点重置。
00***@ResetPoint
[@ResetPoint]
IF
ACT
RESETD03
SENDMSG20每日积分记录已重置,今日充值、消费返利重新计算。
这里RESETD03表示将D0、D1、D2三个变量重置为0。HERO引擎中D变量为角色当日变量,部分版本会在每日0点自动重置,具体要看当前引擎版本对D变量的处理方式。如果D变量不会自动重置,必须通过机器人脚本手动重置。
全服消费带动
积分使者要带动全服消费,不能只让玩家自己兑换。需要加入全服公告、限时加成和排行榜提示。
充值公告
[@buy500]
IF
LARGED09
GAMEGOLD>499
ACT
GAMEGOLD-500
CREDITPOINT+500
INCD01
SENDMSG6充值成功,获得500积分。
SENDMSG20玩家%s充值500元宝获得500积分,积分商城好礼等你来换!
GOTO@main
ELSESAY
兑换公告
[@buytl]
IF
LARGECREDITPOINT999
CHECKBAGSPACE1
ACT
CREDITPOINT-1000
GIVE屠龙1
SENDMSG6兑换成功。
SENDMSG20恭喜玩家%s用积分兑换屠龙,积分越多,神装越近!
GOTO@main
ELSESAY
限时加成
[@doublepoint]
IF
EQUALG11
SAY
\
当前充值可获得双倍积分。\
\
\
<返回/@main>
ELSESAY
[@doublebuy]
IF
EQUALG11
LARGED09
GAMEGOLD>99
ACT
GAMEGOLD-100
CREDITPOINT+200
INCD01
SENDMSG6双倍积分充值成功,获得200积分。
SENDMSG20玩家%s在双倍活动期间充值获得200积分。
GOTO@main
ELSESAY
G1为服务器全局变量,用于控制全服双倍积分活动是否开启。GM可通过机器人脚本或GM命令设置G1=1开启,G1=0关闭。
防刷判断
积分系统最容易被刷,必须加入多层限制。
第一层:每日次数限制。用D0、D1限制每日充值兑换和消费返利次数。
第二层:背包检测。所有物品兑换前必须使用CHECKBAGSPACE检测背包空间。
第三层:积分余额检测。兑换前必须判断CREDITPOINT是否足够,且先检测后扣减。
第四层:变量状态检测。如果某些奖励只能领取一次,可用逻辑变量[N]记录。
[@onceget]
IF
LARGECREDITPOINT1999
EQUAL[100]0
CHECKBAGSPACE1
ACT
CREDITPOINT-2000
SET[100]1
GIVE复活戒指1
SENDMSG6一次性奖励领取成功。
ELSESAY
逻辑变量[N]用于记录玩家是否已领取一次性奖励,初始值为0,领取后设为1,不可重复领取。
变量规划
CREDITPOINT:玩家当前积分,HERO引擎常用积分变量。
D0:今日充值兑换次数。
D1:今日消费返利次数。
D2:今日消费累计元宝。
G1:全服双倍积分活动开关。
[100]:一次性奖励领取标记。
HERO引擎中GAMEGOLD为元宝变量,CREDITPOINT为积分变量,G变量为服务器全局变量,D变量为角色当日变量,[N]为逻辑变量。不同版本对变量保存方式可能略有差异,正式使用前应先确认当前引擎是否支持CREDITPOINT和D变量自动重置。
常见问题排查
积分不增加,先确认CREDITPOINT命令是否被当前HERO版本支持,部分版本可能使用其他积分变量名。每日限制失效,检查D变量是否真的按日重置,必要时改用机器人脚本手动重置。兑换后物品未获得,检查背包空间是否足够,以及物品名称是否与数据库一致。全服公告不显示,确认SENDMSG20是否被当前版本支持。双倍活动开启后未生效,检查G1是否正确设置,以及脚本中是否同时判断了G1=1。重复领取奖励,检查是否使用逻辑变量[N]或S变量记录领取状态。
积分使者脚本的关键是让玩家有持续获取积分的渠道,同时通过全服公告和限时活动刺激消费。充值获得积分、消费返利积分、积分兑换装备三者形成循环,再配合每日限额和防刷判断,就能让新区玩家有持续消费动力。
NPC主界面
[@main]
IF
SAY
\
充值、消费均可获得积分。\
积分可兑换装备、材料、功能。\
\
\
\
\
\
\
<关闭/@exit>
查看积分
[@viewpoint]
IF
ACT
SENDMSG6您当前积分为:<CREDITPOINT>
SENDMSG6今日已获取积分:<STR(D0)>
SENDMSG6今日消费返利积分:<STR(D1)>
GOTO@main
这里CREDITPOINT为HERO引擎常用积分变量,用于记录玩家当前可用积分。D0、D1用于记录当日积分获取情况,防止每日无限刷分。
积分充值
[@recharge]
IF
SAY
\
100元宝兑换100积分。\
每日最多兑换10次。\
\
\
\
<返回/@main>
[@buy100]
IF
LARGED09
GAMEGOLD>99
ACT
GAMEGOLD-100
CREDITPOINT+100
INCD01
SENDMSG6充值成功,获得100积分。
GOTO@main
ELSESAY
[@buy500]
IF
LARGED09
GAMEGOLD>499
ACT
GAMEGOLD-500
CREDITPOINT+500
INCD01
SENDMSG6充值成功,获得500积分。
SENDMSG20玩家%s充值获得500积分,当前积分<CREDITPOINT>。
GOTO@main
ELSESAY
这里D0记录当日充值兑换次数,限制为10次。充值后使用SENDMSG20发送全服公告,可刺激其他玩家消费。
消费返利
[@rebate]
IF
SAY
\
每消费100元宝可获得10积分。\
每日最多返利50次。\
\
\
<返回/@main>
[@getrebate]
IF
LARGED149
LARGED299
ACT
GAMEGOLD-100
CREDITPOINT+10
INCD11
INCD2100
SENDMSG6消费返利成功,获得10积分。
GOTO@main
ELSESAY
这里D1记录今日返利次数,D2记录今日消费累计金额。实际版本中如果希望自动返利,可把消费判断放在QFunction-0.txt中,每次元宝消费时触发积分增加。
积分商城
[@shop]
IF
SAY
\
\
\
\
\
\
<返回/@main>
[@buytl]
IF
LARGECREDITPOINT999
CHECKBAGSPACE1
ACT
CREDITPOINT-1000
GIVE屠龙1
SENDMSG6兑换成功,获得屠龙一把。
SENDMSG20玩家%s使用1000积分兑换屠龙。
GOTO@main
ELSESAY
[@buyml]
IF
LARGECREDITPOINT499
CHECKBAGSPACE1
ACT
CREDITPOINT-500
GIVE麻痹戒指1
SENDMSG6兑换成功,获得麻痹戒指。
GOTO@main
ELSESAY
[@buyzfy]
IF
LARGECREDITPOINT199
CHECKBAGSPACE1
ACT
CREDITPOINT-200
GIVE祝福油10
SENDMSG6兑换成功,获得祝福油10个。
GOTO@main
ELSESAY
[@buyexp]
IF
LARGECREDITPOINT99
CHECKBAGSPACE1
ACT
CREDITPOINT-100
GIVE经验丹1
SENDMSG6兑换成功,获得经验丹。
GOTO@main
ELSESAY
积分商城要重点判断积分余额和背包空间。发放奖励前先检测,再扣积分,最后发物品。不能先发物品再扣积分,否则背包满时会出现积分误扣。
今日记录查询
[@today]
IF
SAY
\
今日充值兑换次数:>\
今日消费返利次数:>\
今日消费累计元宝:>\
\
每日0点自动重置。\
<返回/@main>
每日重置
在Robot_defAutoRunRobot.txt中配置每日0点重置。
00***@ResetPoint
[@ResetPoint]
IF
ACT
RESETD03
SENDMSG20每日积分记录已重置,今日充值、消费返利重新计算。
这里RESETD03表示将D0、D1、D2三个变量重置为0。HERO引擎中D变量为角色当日变量,部分版本会在每日0点自动重置,具体要看当前引擎版本对D变量的处理方式。如果D变量不会自动重置,必须通过机器人脚本手动重置。
全服消费带动
积分使者要带动全服消费,不能只让玩家自己兑换。需要加入全服公告、限时加成和排行榜提示。
充值公告
[@buy500]
IF
LARGED09
GAMEGOLD>499
ACT
GAMEGOLD-500
CREDITPOINT+500
INCD01
SENDMSG6充值成功,获得500积分。
SENDMSG20玩家%s充值500元宝获得500积分,积分商城好礼等你来换!
GOTO@main
ELSESAY
兑换公告
[@buytl]
IF
LARGECREDITPOINT999
CHECKBAGSPACE1
ACT
CREDITPOINT-1000
GIVE屠龙1
SENDMSG6兑换成功。
SENDMSG20恭喜玩家%s用积分兑换屠龙,积分越多,神装越近!
GOTO@main
ELSESAY
限时加成
[@doublepoint]
IF
EQUALG11
SAY
\
当前充值可获得双倍积分。\
\
\
<返回/@main>
ELSESAY
[@doublebuy]
IF
EQUALG11
LARGED09
GAMEGOLD>99
ACT
GAMEGOLD-100
CREDITPOINT+200
INCD01
SENDMSG6双倍积分充值成功,获得200积分。
SENDMSG20玩家%s在双倍活动期间充值获得200积分。
GOTO@main
ELSESAY
G1为服务器全局变量,用于控制全服双倍积分活动是否开启。GM可通过机器人脚本或GM命令设置G1=1开启,G1=0关闭。
防刷判断
积分系统最容易被刷,必须加入多层限制。
第一层:每日次数限制。用D0、D1限制每日充值兑换和消费返利次数。
第二层:背包检测。所有物品兑换前必须使用CHECKBAGSPACE检测背包空间。
第三层:积分余额检测。兑换前必须判断CREDITPOINT是否足够,且先检测后扣减。
第四层:变量状态检测。如果某些奖励只能领取一次,可用逻辑变量[N]记录。
[@onceget]
IF
LARGECREDITPOINT1999
EQUAL[100]0
CHECKBAGSPACE1
ACT
CREDITPOINT-2000
SET[100]1
GIVE复活戒指1
SENDMSG6一次性奖励领取成功。
ELSESAY
逻辑变量[N]用于记录玩家是否已领取一次性奖励,初始值为0,领取后设为1,不可重复领取。
变量规划
CREDITPOINT:玩家当前积分,HERO引擎常用积分变量。
D0:今日充值兑换次数。
D1:今日消费返利次数。
D2:今日消费累计元宝。
G1:全服双倍积分活动开关。
[100]:一次性奖励领取标记。
HERO引擎中GAMEGOLD为元宝变量,CREDITPOINT为积分变量,G变量为服务器全局变量,D变量为角色当日变量,[N]为逻辑变量。不同版本对变量保存方式可能略有差异,正式使用前应先确认当前引擎是否支持CREDITPOINT和D变量自动重置。
常见问题排查
积分不增加,先确认CREDITPOINT命令是否被当前HERO版本支持,部分版本可能使用其他积分变量名。每日限制失效,检查D变量是否真的按日重置,必要时改用机器人脚本手动重置。兑换后物品未获得,检查背包空间是否足够,以及物品名称是否与数据库一致。全服公告不显示,确认SENDMSG20是否被当前版本支持。双倍活动开启后未生效,检查G1是否正确设置,以及脚本中是否同时判断了G1=1。重复领取奖励,检查是否使用逻辑变量[N]或S变量记录领取状态。
积分使者脚本的关键是让玩家有持续获取积分的渠道,同时通过全服公告和限时活动刺激消费。充值获得积分、消费返利积分、积分兑换装备三者形成循环,再配合每日限额和防刷判断,就能让新区玩家有持续消费动力。

