传奇3K引擎每日固定领取经验奖励NPC与登录自动发经验带提示信息防重复脚本教程

来源: 作者: 点击:
3K每日经验用两种防重复最稳。名单法适合小服,按角色名写文本,当天已领直接拒;日期变量法适合多奖励扩展,用HUMAN自定义变量存“最近领取日期”,登录或点NPC比对系统日期,不同就发经验并写回当天日期。经验命令3K常用Changeexp,部分小版本用ChangeExp或GiveExp,按M2命令列表替换即可。

一、名单法NPC最简单

Mir200\Envir下建QuestDiary\数据文件\经验奖励.txt,空文件即可。Market_Def建经验使者.txt,内容:

[@main]
经验使者每日发奖\ \
领取今日固定经验/@lingqu\ \

[@lingqu]
IF

checknamelist ..\QuestDiary\数据文件\经验奖励.txt
ACT

SAY

今天你已经领过了,不能再领了,明天再来吧。\
ELSEACT

addnamelist ..\QuestDiary\数据文件\经验奖励.txt
Changeexp + 1000000
SENDMSG 0 你在经验使者处领取到今天的100万经验奖励。

checknamelist检测当前角色名是否在名单文本;在就拒领并提示。addnamelist首次领取写名;Changeexp发100万,按等级和版本改数值。SENDMSG 0为全服广播样式,只想本人提示用SENDMSG 6或按3K颜色号改。

名单法缺点跨天不会自动清。每天0点用Robot执行清名单,或在NPC领之前先按日期重建。简单清名单Robot段:

Robot.txt配0点执行,Robot_def写:

[@ClearExpName]
IF

ACT

DelNameList ..\QuestDiary\数据文件\经验奖励.txt
SENDMSG 5 每日经验名单已清空,可重新领取。

若3K小版本无DelNameList,用ClearList或写批处理空文件替代;测试时别把其他功能名单放同路径。

二、日期变量法个人存盘

适合同时发经验、元宝、道具,且按角色长期记录。QuestDiary\数据文件\每日经验日期.txt建空文本。QManage或QM登录加载,NPC领取判断。

声明与加载放登录段,QManage.txt:

[@Login]
IF

ACT

VAR String HUMAN 每日经验日期
LOADVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt

LOADVAR路径按实际QuestDiary子目录改。新号文本无记录,变量为空,后面判断空也允许领。

NPC主段,Market_Def\经验使者.txt:

[@main]
每日经验发放\ \
领取今日经验/@getexp\ \
查询领取状态/@checkexp\ \

[@getexp]
IF

VAR String HUMAN 每日经验日期
LOADVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
CHECKVAR HUMAN 每日经验日期 = <$DATE>
ACT

SENDMSG 6 今天已经领取过每日经验,明天再来。
ELSEACT

VAR String HUMAN 每日经验日期
LOADVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
Changeexp + 1000000
MOV S0 <$DATE>
CALCVAR HUMAN 每日经验日期 = S0
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 领取成功,发放今日固定100万经验,日期已记录为<S0>。

<$DATE>按3K系统日期宏替换,若本服用GetDate/YearMonthDay等其他宏,改对应日期变量。CHECKVAR等于当天日期就拒领;否则发经验、把当前日期写回HUMAN变量并SAVEVAR存盘。重载NPC和QM后新号登录自动建记录,小退不丢、合区按文本合并需手工处理,库内变量另配。

查询段:

[@checkexp]
IF

VAR String HUMAN 每日经验日期
LOADVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
CHECKVAR HUMAN 每日经验日期 = <$DATE>
ACT

SENDMSG 6 今日每日经验已领取。
ELSEACT

SENDMSG 6 今日每日经验尚未领取,可点领取。

三、登录自动发不点NPC

把发放写进QManage[@Login],玩家上线自动给,已领过不重复。示例:

[@Login]
IF

ACT

VAR String HUMAN 每日经验日期
LOADVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
IF

CHECKVAR HUMAN 每日经验日期 = <$DATE>
ACT

SENDMSG 6 今日每日经验已自动发放,无需重复领取。
ELSEACT

CHECKVAR HUMAN 每日经验日期 < 0
ACT

VAR String HUMAN 每日经验日期
CALCVAR HUMAN 每日经验日期 = 19700101
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 初始化每日经验日期完成。
ELSEACT

VAR String HUMAN 每日经验日期
LOADVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
Changeexp + 1000000
MOV S0 <$DATE>
CALCVAR HUMAN 每日经验日期 = S0
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 上线自动领取今日固定100万经验,明日可再领。

上面用小于0初始化只适配数字日期;若用字符串存“2026-10-10”这类格式,去掉小于0分支,直接判断等于<$DATE>与否。3K若登录段不支持VAR/LOADVAR,改在QM独立功能段或NPC手动领,别硬写登录自动。

四、按等级发不同经验

新手少发、满级多发,NPC段加CheckLevelEx:

[@getexp]
IF

CHECKVAR HUMAN 每日经验日期 = <$DATE>
ACT

SENDMSG 6 今天已经领取过每日经验。
ELSEACT

IF

CHECKLEVELEX < 50
ACT

Changeexp + 300000
MOV S0 <$DATE>
CALCVAR HUMAN 每日经验日期 = S0
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 50级以下领取30万每日经验,日期已记录<S0>。
IF

CHECKLEVELEX > 49
CHECKLEVELEX < 100
ACT

Changeexp + 1000000
MOV S0 <$DATE>
CALCVAR HUMAN 每日经验日期 = S0
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 50到99级领取100万每日经验,日期已记录<S0>。
IF

CHECKLEVELEX > 99
ACT

Changeexp + 3000000
MOV S0 <$DATE>
CALCVAR HUMAN 每日经验日期 = S0
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 100级以上领取300万每日经验,日期已记录<S0>。

CHECKLEVELEX命令名按3K版本核对,老版本可能用CheckLevel或LEVEL高低判断。多条件分段写,避免一个#IF同时套三个等级区间导致只走第一段。

五、带元宝道具一并发

每日经验常配元宝、太阳水、经验卷。变量防重复只判日期,发奖一次给多个:

[@getexpall]
IF

CHECKVAR HUMAN 每日经验日期 = <$DATE>
ACT

SENDMSG 6 今天已经领取过每日综合奖励。
ELSEACT

Changeexp + 1000000
GAMEGOLD + 100
GIVE 强效太阳水 5
GIVE 每日经验卷 1
MOV S0 <$DATE>
CALCVAR HUMAN 每日经验日期 = S0
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 领取每日经验100万、元宝100、太阳水5、经验卷1,日期<S0>。

GAMEGOLD按3K元宝命令替换,若元宝是GameGold用GAMEGOLD -反向扣、+正向发要看变量类型;绑金、绑元分别用所属命令。每日经验卷若再DoubleExp,避免和经验命令叠加刷级。

六、Robot零点强制重置变量法

日期变量法本身跨天自动可领,不必清盘。若用“每日已领标记=1/0”而不是日期,需要Robot零点置0。示例Robot_def:

[@ZeroResetExp]
IF

ACT

VAR Integer HUMAN 每日经验标记
CALCVAR HUMAN 每日经验标记 = 0
SAVEVAR HUMAN 每日经验标记 ..\QuestDiary\数据文件\每日经验标记.txt
SENDMSG 5 每日经验标记已重置,可领取今日经验。

NPC判断:

[@getexpflag]
IF

VAR Integer HUMAN 每日经验标记
LOADVAR HUMAN 每日经验标记 ..\QuestDiary\数据文件\每日经验标记.txt
CHECKVAR HUMAN 每日经验标记 > 0
ACT

SENDMSG 6 今日每日经验已领取,零点后重置。
ELSEACT

VAR Integer HUMAN 每日经验标记
LOADVAR HUMAN 每日经验标记 ..\QuestDiary\数据文件\每日经验标记.txt
Changeexp + 1000000
CALCVAR HUMAN 每日经验标记 = 1
SAVEVAR HUMAN 每日经验标记 ..\QuestDiary\数据文件\每日经验标记.txt
SENDMSG 6 领取今日100万经验,标记已置1。

日期变量法优先,不用Robot清标记;标记法在合服、断线、Robot不触发时更容易出现“没重置”投诉。

七、名单法按日期自动滚动

不想用变量,用名单但每天换文件名或每天重写带日期。NPC:

[@lingqu2]
IF

checknamelist ..\QuestDiary\数据文件\exp_<$DATE>.txt
ACT

SAY

今天已领取每日经验。\
ELSEACT

addnamelist ..\QuestDiary\数据文件\exp_<$DATE>.txt
Changeexp + 1000000
SENDMSG 0 领取今日100万经验,记录写入exp_<$DATE>名单。

<$DATE>生成本日文件,如exp_2026-10-10.txt,M2不支持在名单路径嵌入日期宏就改Robot每天建空文件,NPC只check固定当日路径。此方法名单会按天堆积,定期手动清旧文件。

八、QF点击活动按钮自动领

若客户端有活动按钮或功能面版调用QF,QFunction-0写:

[@DailyExpBtn]
IF

VAR String HUMAN 每日经验日期
LOADVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
CHECKVAR HUMAN 每日经验日期 = <$DATE>
ACT

SENDMSG 6 今日每日经验已通过按钮领取。
ELSEACT

Changeexp + 1000000
MOV S0 <$DATE>
CALCVAR HUMAN 每日经验日期 = S0
SAVEVAR HUMAN 每日经验日期 ..\QuestDiary\数据文件\每日经验日期.txt
SENDMSG 6 点击活动按钮领取今日100万经验,日期<S0>。

按钮事件名按3K自定义UI、HGE任务闪、Hero功能按钮不同对接;纯3K无按钮就用NPC和登录两段。

九、文件权限与重载

QuestDiary\数据文件目录手动建,经验奖励.txt、每日经验日期.txt、每日经验标记.txt先建空文件,ANSI编码。Market_Def和QManage改完在M2重新加载NPC脚本、重新加载QM、重新加载Robot;变量法改QuestDiary后重载脚本管理。登录段改动用小号重登验证,不重启整个服也能重载就别重启。

十、常见不生效

点NPC没反应:Market_Def文件名和Merchant/Npc注册路径不一致,或@main没#SAY菜单;先写最简#SAY测试再加热点。

经验不发:Changeexp命令名不对,3K部分用ChangeExp,部分用GiveExp,部分用GIVEEXP 角色 数值;M2命令列表搜“经验”确认。数值带加号有些版本要写+1000000,有些写1000000,按样例改。

当天重复领:名单路径写错,checknamelist永远读不到;变量法LOADVAR路径错,CHECKVAR比较空字符串永远不等。统一用绝对相对路径..\QuestDiary\数据文件\xxx.txt,领前LOADVAR、领后SAVEVAR。

跨天仍拒领:用标记法但Robot没跑、零点命令没重载;改日期变量法,比对<$DATE>最省事。

合区数据丢:文本变量不自动合,需手工按角色名合并每日经验日期.txt;用库内HUMAN变量按引擎合区规则迁移更稳。

SENDMSG不提示:颜色号错或脚本在#ELSEACT里写#SAY后没SENDMSG;NPC拒领用#ACT SENDMSG,菜单用#SAY,发奖用#ELSEACT SENDMSG,分层别混。

登录自动发重复:QManage登录段和NPC都发,且都没先加载变量。登录段最前面LOADVAR,再CHECKVAR比日期,再发再SAVEVAR;NPC同理,不共享内存就每次都LOADVAR。

按名单法做最简、按日期变量法做可扩展、按登录段做自动发,3K每日固定经验就能覆盖手动领、上线领、按钮领、防重复、带元宝道具全套。经验数值、等级区间、SENDMSG颜色按实际版本调,路径和命令名以本机M2命令列表为准再上线。