活动奖励按防重复方式分两种。个人每日限制用HUMAN变量存日期,全服活动开关用GLOBAL变量控制机器人开启关闭,手动补领用NPC判断开关和个人日期双条件。经验命令先在本机M2命令列表确认是CHANGEEXP、Changeexp还是其他写法,元宝命令确认是GAMEGOLD还是独立点券变量,下文统一用CHANGEEXP和GAMEGOLD,实际按本服替换。
一、个人每日签到奖励NPC
Envir\QuestDiary\活动变量\每日签到.txt 建空文件。Market_Def建活动使者.txt,内容如下。
[@main]
每日活动签到\ \
领取今日签到奖励/@signin\ \
查看签到状态/@signcheck\ \
[@signin]
IF
VAR String HUMAN 签到日期
LOADVAR HUMAN 签到日期 ..\QuestDiary\活动变量\每日签到.txt
CHECKVAR HUMAN 签到日期 = <$DATE>
ACT
SENDMSG 6 今天已经签到并领取过活动奖励,明天再来。
ELSEACT
VAR String HUMAN 签到日期
LOADVAR HUMAN 签到日期 ..\QuestDiary\活动变量\每日签到.txt
CHANGEEXP + 2000000
GAMEGOLD + 20
GIVE 强效太阳水 5
GIVE 活动礼包 1
MOV S0 <$DATE>
CALCVAR HUMAN 签到日期 = S0
SAVEVAR HUMAN 签到日期 ..\QuestDiary\活动变量\每日签到.txt
SENDMSG 6 签到成功,发放经验200万、元宝20、太阳水5、活动礼包1,日期已记<S0>。
<$DATE>按本机日期宏替换,若用数字日期或其他系统变量改对应宏。CHECKVAR等于当天日期就拒领,不等于就发奖并写回当天日期,跨天自动可再领。路径用相对QuestDiary,Market_Def里写..\QuestDiary\活动变量\每日签到.txt,保存后M2重载NPC脚本。
二、按等级发不同档活动奖
新手少发、满级多发,避免低级拿满级资源。NPC段:
[@signinlv]
IF
VAR String HUMAN 签到日期
LOADVAR HUMAN 签到日期 ..\QuestDiary\活动变量\每日签到.txt
CHECKVAR HUMAN 签到日期 = <$DATE>
ACT
SENDMSG 6 今天活动奖励已领取。
ELSEACT
IF
CHECKLEVELEX < 50
ACT
CHANGEEXP + 500000
GAMEGOLD + 5
GIVE 金创药 10
MOV S0 <$DATE>
CALCVAR HUMAN 签到日期 = S0
SAVEVAR HUMAN 签到日期 ..\QuestDiary\活动变量\每日签到.txt
SENDMSG 6 50级以下签到:经验50万、元宝5、金创药10,日期<S0>。
IF
CHECKLEVELEX > 49
CHECKLEVELEX < 100
ACT
CHANGEEXP + 2000000
GAMEGOLD + 20
GIVE 强效太阳水 5
GIVE 活动礼包 1
MOV S0 <$DATE>
CALCVAR HUMAN 签到日期 = S0
SAVEVAR HUMAN 签到日期 ..\QuestDiary\活动变量\每日签到.txt
SENDMSG 6 50到99级签到:经验200万、元宝20、太阳水5、礼包1,日期<S0>。
IF
CHECKLEVELEX > 99
ACT
CHANGEEXP + 8000000
GAMEGOLD + 50
GIVE 强效太阳水 10
GIVE 高级活动宝箱 1
MOV S0 <$DATE>
CALCVAR HUMAN 签到日期 = S0
SAVEVAR HUMAN 签到日期 ..\QuestDiary\活动变量\每日签到.txt
SENDMSG 6 100级以上签到:经验800万、元宝50、太阳水10、高级宝箱1,日期<S0>。
CHECKLEVELEX命令名按Legendm2小版本核对,老版本可用CHECKLEVEL或LEVEL区间替换。多档用独立#IF分段,不要在一个#IF里同时写三个等级区间。
三、名单法防重复简化版
不想用变量就用namelist。Envir\QuestDiary\活动变量\签到名单.txt建空文件。NPC:
[@signinname]
IF
checknamelist ..\QuestDiary\活动变量\签到名单.txt
ACT
SENDMSG 6 你今天已通过名单签到领奖。
ELSEACT
addnamelist ..\QuestDiary\活动变量\签到名单.txt
CHANGEEXP + 2000000
GAMEGOLD + 20
GIVE 活动礼包 1
SENDMSG 6 名单签到成功,发放经验200万、元宝20、活动礼包1。
名单法跨天不会自动清,需用机器人零点清名单:
Envir\Robot_def\RobotManage.txt加:
[@ClearSignName]
IF
ACT
DelNameList ..\QuestDiary\活动变量\签到名单.txt
SENDMSG 5 每日签到名单已清空。
Robot开启段用AutoRunRobot或本服机器人配置:
AutoRun NPC RUNONDAY 00:00 @ClearSignName
若本机无DelNameList用ClearNameList或写空文件批处理替代,先在测试服验证。
四、全服限时活动开关机器人
活动只在规定时间段开放,NPC发奖前先判断全局开关。Envir\QuestDiary\活动变量\全局活动.txt建空文件。QManage登录加载:
[@Login]
IF
ACT
VAR Integer GLOBAL 限时活动开关
LOADVAR GLOBAL 限时活动开关 ..\QuestDiary\活动变量\全局活动.txt
机器人开活动:
[@OpenAct]
IF
ACT
VAR Integer GLOBAL 限时活动开关
CALCVAR GLOBAL 限时活动开关 = 1
SAVEVAR GLOBAL 限时活动开关 ..\QuestDiary\活动变量\全局活动.txt
SENDMSG 0 限时活动已开启,前往活动使者领取双倍奖励。
机器人关活动:
[@CloseAct]
IF
ACT
VAR Integer GLOBAL 限时活动开关
CALCVAR GLOBAL 限时活动开关 = 0
SAVEVAR GLOBAL 限时活动开关 ..\QuestDiary\活动变量\全局活动.txt
SENDMSG 0 限时活动已结束,未领取奖励请在结束前尽快领取。
机器人定时配置示例:
AutoRun NPC RUNONDAY 20:00 @OpenAct
AutoRun NPC RUNONDAY 21:00 @CloseAct
RUNONDAY按每天固定时间触发,MIN按分钟循环,HOUR按小时循环,具体写法以本机Robot规则为准。
NPC按开关发奖:
[@limitreward]
IF
VAR Integer GLOBAL 限时活动开关
LOADVAR GLOBAL 限时活动开关 ..\QuestDiary\活动变量\全局活动.txt
CHECKVAR GLOBAL 限时活动开关 = 0
ACT
SENDMSG 6 当前不在限时活动时间段,正常签到请点其他菜单。
ELSEACT
VAR String HUMAN 限时领取日期
LOADVAR HUMAN 限时领取日期 ..\QuestDiary\活动变量\每日限时.txt
CHECKVAR HUMAN 限时领取日期 = <$DATE>
ACT
SENDMSG 6 今天限时活动奖励已领取。
ELSEACT
CHANGEEXP + 5000000
GAMEGOLD + 50
GIVE 限时活动宝箱 2
MOV S0 <$DATE>
CALCVAR HUMAN 限时领取日期 = S0
SAVEVAR HUMAN 限时领取日期 ..\QuestDiary\活动变量\每日限时.txt
SENDMSG 6 限时活动发奖:经验500万、元宝50、限时宝箱2,日期<S0>。
全局开关控制时间段,个人日期控制每天只领一次,两个变量分开存文件,互不影响。
五、职业和行会条件活动
战士、法师、道士发不同活动装,行会活动按行会名或沙巴克成员判断。NPC示例:
[@jobact]
IF
CHECKJOB WARRIOR
ACT
GIVE 活动战士武器 1
CHANGEEXP + 1000000
SENDMSG 6 战士活动奖:专属武器1、经验100万。
IF
CHECKJOB WIZARD
ACT
GIVE 活动法师武器 1
CHANGEEXP + 1000000
SENDMSG 6 法师活动奖:专属武器1、经验100万。
IF
CHECKJOB TAOIST
ACT
GIVE 活动道士武器 1
CHANGEEXP + 1000000
SENDMSG 6 道士活动奖:专属武器1、经验100万。
行会全员活动用CHECKCASTLEWARLIST或行会名检测,示例沙巴克成员额外发:
[@guildact]
IF
ISCASTLEGUILD
ACT
CHANGEEXP + 3000000
GAMEGOLD + 30
GIVE 行会活动宝箱 1
SENDMSG 6 沙巴克成员活动奖:经验300万、元宝30、宝箱1。
ELSEACT
SENDMSG 6 你不是沙巴克成员,无法领取行会活动奖。
ISCASTLEGUILD、CHECKCASTLEWARLIST等命令以本机M2为准,普通行会可按CHECKITYGUILD或行会名称变量改写。
六、累计在线或累计击杀活动
用数字变量记录次数,达到阈值发奖。QManage或QF击杀段累加,NPC领取段判断。示例用HUMAN数字变量:
Envir\QuestDiary\活动变量\击杀计数.txt建空文件。击杀触发QFunction:
[@KillMonsterAct]
IF
ACT
VAR Integer HUMAN 活动击杀数
LOADVAR HUMAN 活动击杀数 ..\QuestDiary\活动变量\击杀计数.txt
CALCVAR HUMAN 活动击杀数 + 1
SAVEVAR HUMAN 活动击杀数 ..\QuestDiary\活动变量\击杀计数.txt
NPC领奖:
[@killreward]
IF
VAR Integer HUMAN 活动击杀数
LOADVAR HUMAN 活动击杀数 ..\QuestDiary\活动变量\击杀计数.txt
CHECKVAR HUMAN 活动击杀数 > 99
ACT
CHANGEEXP + 10000000
GAMEGOLD + 100
GIVE 击杀活动大奖 1
CALCVAR HUMAN 活动击杀数 = 0
SAVEVAR HUMAN 活动击杀数 ..\QuestDiary\活动变量\击杀计数.txt
SENDMSG 6 累计击杀达100,发放经验1000万、元宝100、大奖1,计数已重置。
ELSEACT
SENDMSG 6 累计击杀不足100,当前计数未达领取标准。
若只用临时变量不用存盘,可改SET [变量号]和CHECK [变量号],但小退或重启会丢,长期活动用VAR/LOADVAR/SAVEVAR更稳。
七、登录自动补发活动
玩家上线若当天未签到大奖,自动发基础奖。QManage:
[@Login]
IF
ACT
VAR String HUMAN 登录签到日期
LOADVAR HUMAN 登录签到日期 ..\QuestDiary\活动变量\登录签到.txt
IF
CHECKVAR HUMAN 登录签到日期 = <$DATE>
ACT
SENDMSG 6 今日登录活动奖励已自动发放过。
ELSEACT
CHANGEEXP + 1000000
GAMEGOLD + 10
GIVE 登录活动包 1
MOV S0 <$DATE>
CALCVAR HUMAN 登录签到日期 = S0
SAVEVAR HUMAN 登录签到日期 ..\QuestDiary\活动变量\登录签到.txt
SENDMSG 6 上线自动发登录活动:经验100万、元宝10、活动包1,日期<S0>。
登录段若不支持VAR/LOADVAR,改放NPC手动领,不要把变量写在引擎不支持的登录标签里。QM改完在M2重载QManage。
八、活动概率抽奖扩展
活动NPC做概率抽道具,用RANDOM或本机随机命令。示例:
[@lottery]
IF
CHECKGAMEGOLD > 10
ACT
GAMEGOLD - 10
IF
RANDOM 100
ACT
GIVE 一等奖宝箱 1
SENDMSG 6 消耗10元宝抽奖,获得一等奖宝箱1。
ELSEACT
IF
RANDOM 300
ACT
GIVE 二等奖宝箱 1
SENDMSG 6 消耗10元宝抽奖,获得二等奖宝箱1。
ELSEACT
GIVE 安慰奖道具 2
SENDMSG 6 消耗10元宝抽奖,获得安慰奖道具2。
ELSEACT
SENDMSG 6 元宝不足10,无法参加活动抽奖。
RANDOM总权重按本机命令规则写,若支持1到N区间就改成LARGE RANDOM写法;概率段从上到下匹配,高奖放前面,低奖放后面。
九、活动文件与重载
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命令列表和机器人规则为准再上线。
传奇Legendm2引擎活动奖励NPC每日签到限时全服发奖机器人开关防重复经验元宝道具脚本
来源:
作者:
点击:

