传奇Legendm2引擎活动奖励NPC每日签到限时全服发奖机器人开关防重复经验元宝道具脚本

来源: 作者: 点击:
活动奖励按防重复方式分两种。个人每日限制用HUMAN变量存日期,全服活动开关用GLOBAL变量控制机器人开启关闭,手动补领用NPC判断开关和个人日期双条件。经验命令先在本机M2命令列表确认是CHANGEEXP、Changeexp还是其他写法,元宝命令确认是GAMEGOLD还是独立点券变量,下文统一用CHANGEEXP和GAMEGOLD,实际按本服替换。

一、个人每日签到奖励NPC

Envir\QuestDiary\活动变量\每日签到.txt建空文件。Market_Def建活动使者.txt,内容如下。

[@main]
每日活动签到\\
领取今日签到奖励/@signin\\
查看签到状态/@signcheck\\

[@signin]
IF

VARStringHUMAN签到日期
LOADVARHUMAN签到日期..\QuestDiary\活动变量\每日签到.txt
CHECKVARHUMAN签到日期=<$DATE>
ACT

SENDMSG6今天已经签到并领取过活动奖励,明天再来。
ELSEACT

VARStringHUMAN签到日期
LOADVARHUMAN签到日期..\QuestDiary\活动变量\每日签到.txt
CHANGEEXP+2000000
GAMEGOLD+20
GIVE强效太阳水5
GIVE活动礼包1
MOVS0<$DATE>
CALCVARHUMAN签到日期=S0
SAVEVARHUMAN签到日期..\QuestDiary\活动变量\每日签到.txt
SENDMSG6签到成功,发放经验200万、元宝20、太阳水5、活动礼包1,日期已记<S0>。

<$DATE>按本机日期宏替换,若用数字日期或其他系统变量改对应宏。CHECKVAR等于当天日期就拒领,不等于就发奖并写回当天日期,跨天自动可再领。路径用相对QuestDiary,Market_Def里写..\QuestDiary\活动变量\每日签到.txt,保存后M2重载NPC脚本。

二、按等级发不同档活动奖

新手少发、满级多发,避免低级拿满级资源。NPC段:

[@signinlv]
IF

VARStringHUMAN签到日期
LOADVARHUMAN签到日期..\QuestDiary\活动变量\每日签到.txt
CHECKVARHUMAN签到日期=<$DATE>
ACT

SENDMSG6今天活动奖励已领取。
ELSEACT

IF

CHECKLEVELEX<50
ACT

CHANGEEXP+500000
GAMEGOLD+5
GIVE金创药10
MOVS0<$DATE>
CALCVARHUMAN签到日期=S0
SAVEVARHUMAN签到日期..\QuestDiary\活动变量\每日签到.txt
SENDMSG650级以下签到:经验50万、元宝5、金创药10,日期<S0>。
IF

CHECKLEVELEX>49
CHECKLEVELEX<100
ACT

CHANGEEXP+2000000
GAMEGOLD+20
GIVE强效太阳水5
GIVE活动礼包1
MOVS0<$DATE>
CALCVARHUMAN签到日期=S0
SAVEVARHUMAN签到日期..\QuestDiary\活动变量\每日签到.txt
SENDMSG650到99级签到:经验200万、元宝20、太阳水5、礼包1,日期<S0>。
IF

CHECKLEVELEX>99
ACT

CHANGEEXP+8000000
GAMEGOLD+50
GIVE强效太阳水10
GIVE高级活动宝箱1
MOVS0<$DATE>
CALCVARHUMAN签到日期=S0
SAVEVARHUMAN签到日期..\QuestDiary\活动变量\每日签到.txt
SENDMSG6100级以上签到:经验800万、元宝50、太阳水10、高级宝箱1,日期<S0>。

CHECKLEVELEX命令名按Legendm2小版本核对,老版本可用CHECKLEVEL或LEVEL区间替换。多档用独立#IF分段,不要在一个#IF里同时写三个等级区间。

三、名单法防重复简化版

不想用变量就用namelist。Envir\QuestDiary\活动变量\签到名单.txt建空文件。NPC:

[@signinname]
IF

checknamelist..\QuestDiary\活动变量\签到名单.txt
ACT

SENDMSG6你今天已通过名单签到领奖。
ELSEACT

addnamelist..\QuestDiary\活动变量\签到名单.txt
CHANGEEXP+2000000
GAMEGOLD+20
GIVE活动礼包1
SENDMSG6名单签到成功,发放经验200万、元宝20、活动礼包1。

名单法跨天不会自动清,需用机器人零点清名单:

Envir\Robot_def\RobotManage.txt加:

[@ClearSignName]
IF

ACT

DelNameList..\QuestDiary\活动变量\签到名单.txt
SENDMSG5每日签到名单已清空。

Robot开启段用AutoRunRobot或本服机器人配置:

AutoRunNPCRUNONDAY00:00@ClearSignName

若本机无DelNameList用ClearNameList或写空文件批处理替代,先在测试服验证。

四、全服限时活动开关机器人

活动只在规定时间段开放,NPC发奖前先判断全局开关。Envir\QuestDiary\活动变量\全局活动.txt建空文件。QManage登录加载:

[@Login]
IF

ACT

VARIntegerGLOBAL限时活动开关
LOADVARGLOBAL限时活动开关..\QuestDiary\活动变量\全局活动.txt

机器人开活动:

[@OpenAct]
IF

ACT

VARIntegerGLOBAL限时活动开关
CALCVARGLOBAL限时活动开关=1
SAVEVARGLOBAL限时活动开关..\QuestDiary\活动变量\全局活动.txt
SENDMSG0限时活动已开启,前往活动使者领取双倍奖励。

机器人关活动:

[@CloseAct]
IF

ACT

VARIntegerGLOBAL限时活动开关
CALCVARGLOBAL限时活动开关=0
SAVEVARGLOBAL限时活动开关..\QuestDiary\活动变量\全局活动.txt
SENDMSG0限时活动已结束,未领取奖励请在结束前尽快领取。

机器人定时配置示例:

AutoRunNPCRUNONDAY20:00@OpenAct

AutoRunNPCRUNONDAY21:00@CloseAct

RUNONDAY按每天固定时间触发,MIN按分钟循环,HOUR按小时循环,具体写法以本机Robot规则为准。

NPC按开关发奖:

[@limitreward]
IF

VARIntegerGLOBAL限时活动开关
LOADVARGLOBAL限时活动开关..\QuestDiary\活动变量\全局活动.txt
CHECKVARGLOBAL限时活动开关=0
ACT

SENDMSG6当前不在限时活动时间段,正常签到请点其他菜单。
ELSEACT

VARStringHUMAN限时领取日期
LOADVARHUMAN限时领取日期..\QuestDiary\活动变量\每日限时.txt
CHECKVARHUMAN限时领取日期=<$DATE>
ACT

SENDMSG6今天限时活动奖励已领取。
ELSEACT

CHANGEEXP+5000000
GAMEGOLD+50
GIVE限时活动宝箱2
MOVS0<$DATE>
CALCVARHUMAN限时领取日期=S0
SAVEVARHUMAN限时领取日期..\QuestDiary\活动变量\每日限时.txt
SENDMSG6限时活动发奖:经验500万、元宝50、限时宝箱2,日期<S0>。

全局开关控制时间段,个人日期控制每天只领一次,两个变量分开存文件,互不影响。

五、职业和行会条件活动

战士、法师、道士发不同活动装,行会活动按行会名或沙巴克成员判断。NPC示例:

[@jobact]
IF

CHECKJOBWARRIOR
ACT

GIVE活动战士武器1
CHANGEEXP+1000000
SENDMSG6战士活动奖:专属武器1、经验100万。
IF

CHECKJOBWIZARD
ACT

GIVE活动法师武器1
CHANGEEXP+1000000
SENDMSG6法师活动奖:专属武器1、经验100万。
IF

CHECKJOBTAOIST
ACT

GIVE活动道士武器1
CHANGEEXP+1000000
SENDMSG6道士活动奖:专属武器1、经验100万。

行会全员活动用CHECKCASTLEWARLIST或行会名检测,示例沙巴克成员额外发:

[@guildact]
IF

ISCASTLEGUILD
ACT

CHANGEEXP+3000000
GAMEGOLD+30
GIVE行会活动宝箱1
SENDMSG6沙巴克成员活动奖:经验300万、元宝30、宝箱1。
ELSEACT

SENDMSG6你不是沙巴克成员,无法领取行会活动奖。

ISCASTLEGUILD、CHECKCASTLEWARLIST等命令以本机M2为准,普通行会可按CHECKITYGUILD或行会名称变量改写。

六、累计在线或累计击杀活动

用数字变量记录次数,达到阈值发奖。QManage或QF击杀段累加,NPC领任判断。示例用HUMAN数字变量:

Envir\QuestDiary\活动变量\击杀计数.txt建空文件。击杀触发QFunction:

[@KillMonsterAct]
IF

ACT

VARIntegerHUMAN活动击杀数
LOADVARHUMAN活动击杀数..\QuestDiary\活动变量\击杀计数.txt
CALCVARHUMAN活动击杀数+1
SAVEVARHUMAN活动击杀数..\QuestDiary\活动变量\击杀计数.txt

NPC领奖:

[@killreward]
IF

VARIntegerHUMAN活动击杀数
LOADVARHUMAN活动击杀数..\QuestDiary\活动变量\击杀计数.txt
CHECKVARHUMAN活动击杀数>99
ACT

CHANGEEXP+10000000
GAMEGOLD+100
GIVE击杀活动大奖1
CALCVARHUMAN活动击杀数=0
SAVEVARHUMAN活动击杀数..\QuestDiary\活动变量\击杀计数.txt
SENDMSG6累计击杀达100,发放经验1000万、元宝100、大奖1,计数已重置。
ELSEACT

SENDMSG6累计击杀不足100,当前计数未达领取标准。

若只用临时变量不用存盘,可改SET[变量号]和CHECK[变量号],但小退或重启会丢,长期活动用VAR/LOADVAR/SAVEVAR更稳。

七、登录自动补发活动

玩家上线若当天未签到大奖,自动发基础奖。QManage:

[@Login]
IF

ACT

VARStringHUMAN登录签到日期
LOADVARHUMAN登录签到日期..\QuestDiary\活动变量\登录签到.txt
IF

CHECKVARHUMAN登录签到日期=<$DATE>
ACT

SENDMSG6今日登录活动奖励已自动发放过。
ELSEACT

CHANGEEXP+1000000
GAMEGOLD+10
GIVE登录活动包1
MOVS0<$DATE>
CALCVARHUMAN登录签到日期=S0
SAVEVARHUMAN登录签到日期..\QuestDiary\活动变量\登录签到.txt
SENDMSG6上线自动发登录活动:经验100万、元宝10、活动包1,日期<S0>。

登录段若不支持VAR/LOADVAR,改放NPC手动领,不要把变量写在引擎不支持的登录标签里。QM改完在M2重载QManage。

八、活动概率抽奖扩展

活动NPC做概率抽道具,用RANDOM或本机随机命令。示例:

[@lottery]
IF

CHECKGAMEGOLD>10
ACT

GAMEGOLD-10
IF

RANDOM100
ACT

GIVE一等奖宝箱1
SENDMSG6消耗10元宝抽奖,获得一等奖宝箱1。
ELSEACT

IF

RANDOM300
ACT

GIVE二等奖宝箱1
SENDMSG6消耗10元宝抽奖,获得二等奖宝箱1。
ELSEACT

GIVE安慰奖道具2
SENDMSG6消耗10元宝抽奖,获得安慰奖道具2。
ELSEACT

SENDMSG6元宝不足10,无法参加活动抽奖。

RANDOM总权重按本机命令规则写,若支持1到N区间就改成LARGERANDOM写法;概率段从上到下匹配,高奖放前面,低奖放后面。

九、活动文件与重载

QuestDiary\活动变量目录手动建,每日签到.txt、全局活动.txt、每日限时.txt、击杀计数.txt、登录签到.txt先建空文件,文本编码按本机M2要求用ANSI或UTF。Market_Def的NPC文件名要和Merchant/Npc注册一致。改NPC后在M2重载NPC脚本,改QM重载QManage,改Robot重载Robot;变量文件改完可用重载变量或重载NPC再次加载。

十、常见不生效

点NPC无反应:Market_Def文件名、NPC注册路径、@main菜单不一致;先写最简#SAY菜单验证再加热点功能。

经验不发:CHANGEEXP命令名不对,部分版本用Changeexp、GiveExp、ChangeExp,M2命令列表搜经验发放确认。

元宝不减不加:GAMEGOLD不是本机元宝变量,绑金、绑元、点券可能用不同命令;发奖前用CHECKGAMEGOLD判断、GAMEGOLD-扣、GAMEGOLD+发,替换为本机元宝变量名。

当天重复领:变量路径写错,LOADVAR没加载到已存日期;领前LOADVAR、领后SAVEVAR,CHECKVAR用完整日期字符串比较。名单法则是checknamelist路径错导致永远不命中。

机器人不开活动:AutoRun段标签名和RobotManage段名不一致,或Robot未重载;先用SENDMSG空段跑通定时再加发奖。

全局开关失灵:GLOBAL变量没在QM登录加载,机器人写值后NPC没LOADVAR;开关文件和NPC路径保持一致,开服前用GM手动改CALCVAR测试。

击杀计数不涨:QF击杀标签未挂载,或KillMonster事件名按引擎不同;先单句SENDMSG确认击杀段触发,再加VAR累加。

职业发错:CHECKJOB值写错,Warrior/Wizard/Taoist按本机英文或中文职业名改;三职业分三段不要用同一个#IF全写。

按每日签到、限时全局开关、等级职业行会分档、击杀累计、登录自动补、抽奖六种组合,Legendm2活动奖励可覆盖手动领、定时开停、防重复、经验元宝道具全场景。所有命令名、日期宏、元宝变量、Robot时间格式以本机M2命令列表和机器人规则为准再上线。
[顶部]