幻境限制每人每天三次,核心用个人变量记次数,再配一个日期变量判断跨天。玩家点NPC进幻境前先查次数,小于3就传图并把次数加1,等于3就拒传并提示。每天0点通过机器人脚本把次数变量清0,或者用日期变量对比实现自动跨天重置。下面按通用写法、GOM/GEE、Hero分别给可直接改的示例。
一、变量规划与文件位置
个人次数变量用普通[N]变量即可,例如[100]存幻境当日次数,[101]存上次进入日期。NPC脚本放在Mir200\Envir\QuestDiary\幻境限制\进入.txt,机器人重置脚本放在Mir200\Envir\RobotDef\RobotManage.txt,登录初始化可放QManage.txt的[@Login]。若用列表记录已进玩家,文本放Mir200\Envir\QuestDiary\幻境限制\幻境名单.txt。
二、通用NPC每日三次写法
QuestDiary\幻境限制\进入.txt内容:
[@Main]
IF
ACT
OPENMERCHANTBIGDLG18031400014208
SAY
幻境打宝每天可进入3次,当前剩余次数查看后进入\\
<查看剩余次数/@QueryCount><进入幻境/@EnterHJ><关闭/@close>
[@QueryCount]
IF
Check[101]当天日期
ACT
SAY
今日已进入:<[100]>次,剩余:<STR(3-[[100]])>次
<进入幻境/@EnterHJ><返回/@Main>
[@EnterHJ]
IF
Check[101]当天日期
Check[100]<3
ACT
INC[100]1
MAPMOVEHJMAP100100
SENDMSG7进入幻境成功,今日第<$STR([100])>次
ELSEACT
IF
Check[101]当天日期
ACT
SENDMSG6今日幻境3次已用完,明天再來
ELSEACT
SET[101]当天日期
SET[100]1
MAPMOVEHJMAP100100
SENDMSG7进入幻境成功,今日第1次
上面“当天日期”按引擎替换成获取日期命令。部分引擎可用系统日期变量直接比,不支持就用机器人0点强制清[100]。进入后只计主入口一次,幻境内部换层不要再次INC,否则三层来回就把3次耗光。
三、GOM/GEE用CALCVAR落盘写法
新建QuestDiary\幻境限制\次数.txt,NPC用人类计算变量:
[@Main]
IF
ACT
SAY
<进入幻境/@GoHJ><关闭/@close>
[@GoHJ]
IF
CALCVARHUMAN幻境日期=当天日期
CALCVARHUMAN幻境次数>=3
ACT
SENDMSG6今日幻境已进3次,无法再进
break
IF
CALCVARHUMAN幻境日期=当天日期
ACT
CALCVARHUMAN幻境次数=+1
MAPMOVEHJMAP100100
SENDMSG7进入幻境,今日第<$STR(幻境次数)>次
break
IF
ACT
CALCVARHUMAN幻境日期=当天日期
CALCVARHUMAN幻境次数=1
SAVEVARHUMAN幻境次数..\QuestDiary\幻境限制\次数.txt
SAVEVARHUMAN幻境日期..\QuestDiary\幻境限制\次数.txt
MAPMOVEHJMAP100100
SENDMSG7进入幻境,今日第1次
登录触发QManage.txt可初始化:
[@Login]
IF
CHECKVARHUMAN幻境日期=当天日期
ACT
ELSEACT
CALCVARHUMAN幻境次数=0
CALCVARHUMAN幻境日期=当天日期
SAVEVARHUMAN幻境次数..\QuestDiary\幻境限制\次数.txt
SAVEVARHUMAN幻境日期..\QuestDiary\幻境限制\次数.txt
机器人0点再保险重置,RobotManage.txt:
[@DailyReset]
IF
ACT
CLEARVARCALCULATE..\QuestDiary\幻境限制\次数.txt
SENDMSG0幻境每日次数已重置
CLEARVARCALCULATE路径按实际QuestDiary目录调整。
四、HeroM2个人变量加0点机器人写法
NPC脚本:
[@Main]
IF
ACT
SAY
<进入幻境/@HJIn><关闭/@close>
[@HJIn]
IF
Check[200]当天日期
Check[201]<3
ACT
INC[201]1
MAPMOVEHJMAP100100
SENDMSG7幻境进入成功,今日第<$STR([201])>次
break
IF
Check[200]当天日期
ACT
SENDMSG6今日已进3次幻境
break
IF
ACT
SET[200]当天日期
SET[201]1
MAPMOVEHJMAP100100
SENDMSG7幻境进入成功,今日第1次
RobotManage.txt加0点:
[@RobotRun]
IF
HOUR0
ACT
SETALLHUMANVAR2010
若Hero子版本不支持SETALLHUMANVAR,就用逐人登录判断日期;玩家上线时[200]不等于当天日期就把[201]设0。登录触发写QManage.txt[@Login]:
[@Login]
IF
Check[200]当天日期
ACT
ELSEACT
SET[200]当天日期
SET[201]0
五、用文本名单限制进入
不想用变量,可用AddTextListEx记录账号或角色ID,进入前CheckTextList判断。NPC示例:
[@Main]
IF
ACT
SAY
<进入幻境/@HJList><关闭/@close>
[@HJList]
IF
CheckTextList..\QuestDiary\幻境限制\幻境名单.txt
ACT
SENDMSG6今日已通过名单进入3次或已记录,无法再进
break
IF
ACT
AddTextListEx..\QuestDiary\幻境限制\幻境名单.txt角色ID3
MAPMOVEHJMAP100100
SENDMSG7进入幻境成功
文本名单适合只记“今天进过”但不方便按次数累加的场景;要严格三次,名单行要带计数,或者用变量更直观。机器人0点清空名单文件内容即可。
六、防重复计数与多层幻境处理
幻境若分一层二层三层,只在土城或主城总入口NPC计数。层间传送NPC只写MAPMOVE,不写INC、不加次数。若玩家可从地图内直接回城再进,回城后再次点主入口会再计数,这是正常限制;如允许“一次购票全天各层自由”,就把计数改成“进入总会话1次”,用进入标记[202]=1表示当天已开幻境,进图不按次数只按标记,出图不清除,0点清标记。
七、配合MapInfo做人数和停留
幻境地图在MapInfo.txt可附加人数、时间参数,和次数限制互补。例如限制某层最多50人、停留30分钟回城,写:
HJMAP幻境一层00000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
一、变量规划与文件位置
个人次数变量用普通[N]变量即可,例如[100]存幻境当日次数,[101]存上次进入日期。NPC脚本放在Mir200\Envir\QuestDiary\幻境限制\进入.txt,机器人重置脚本放在Mir200\Envir\RobotDef\RobotManage.txt,登录初始化可放QManage.txt的[@Login]。若用列表记录已进玩家,文本放Mir200\Envir\QuestDiary\幻境限制\幻境名单.txt。
二、通用NPC每日三次写法
QuestDiary\幻境限制\进入.txt内容:
[@Main]
IF
ACT
OPENMERCHANTBIGDLG18031400014208
SAY
幻境打宝每天可进入3次,当前剩余次数查看后进入\\
<查看剩余次数/@QueryCount><进入幻境/@EnterHJ><关闭/@close>
[@QueryCount]
IF
Check[101]当天日期
ACT
SAY
今日已进入:<[100]>次,剩余:<STR(3-[[100]])>次
<进入幻境/@EnterHJ><返回/@Main>
[@EnterHJ]
IF
Check[101]当天日期
Check[100]<3
ACT
INC[100]1
MAPMOVEHJMAP100100
SENDMSG7进入幻境成功,今日第<$STR([100])>次
ELSEACT
IF
Check[101]当天日期
ACT
SENDMSG6今日幻境3次已用完,明天再來
ELSEACT
SET[101]当天日期
SET[100]1
MAPMOVEHJMAP100100
SENDMSG7进入幻境成功,今日第1次
上面“当天日期”按引擎替换成获取日期命令。部分引擎可用系统日期变量直接比,不支持就用机器人0点强制清[100]。进入后只计主入口一次,幻境内部换层不要再次INC,否则三层来回就把3次耗光。
三、GOM/GEE用CALCVAR落盘写法
新建QuestDiary\幻境限制\次数.txt,NPC用人类计算变量:
[@Main]
IF
ACT
SAY
<进入幻境/@GoHJ><关闭/@close>
[@GoHJ]
IF
CALCVARHUMAN幻境日期=当天日期
CALCVARHUMAN幻境次数>=3
ACT
SENDMSG6今日幻境已进3次,无法再进
break
IF
CALCVARHUMAN幻境日期=当天日期
ACT
CALCVARHUMAN幻境次数=+1
MAPMOVEHJMAP100100
SENDMSG7进入幻境,今日第<$STR(幻境次数)>次
break
IF
ACT
CALCVARHUMAN幻境日期=当天日期
CALCVARHUMAN幻境次数=1
SAVEVARHUMAN幻境次数..\QuestDiary\幻境限制\次数.txt
SAVEVARHUMAN幻境日期..\QuestDiary\幻境限制\次数.txt
MAPMOVEHJMAP100100
SENDMSG7进入幻境,今日第1次
登录触发QManage.txt可初始化:
[@Login]
IF
CHECKVARHUMAN幻境日期=当天日期
ACT
ELSEACT
CALCVARHUMAN幻境次数=0
CALCVARHUMAN幻境日期=当天日期
SAVEVARHUMAN幻境次数..\QuestDiary\幻境限制\次数.txt
SAVEVARHUMAN幻境日期..\QuestDiary\幻境限制\次数.txt
机器人0点再保险重置,RobotManage.txt:
[@DailyReset]
IF
ACT
CLEARVARCALCULATE..\QuestDiary\幻境限制\次数.txt
SENDMSG0幻境每日次数已重置
CLEARVARCALCULATE路径按实际QuestDiary目录调整。
四、HeroM2个人变量加0点机器人写法
NPC脚本:
[@Main]
IF
ACT
SAY
<进入幻境/@HJIn><关闭/@close>
[@HJIn]
IF
Check[200]当天日期
Check[201]<3
ACT
INC[201]1
MAPMOVEHJMAP100100
SENDMSG7幻境进入成功,今日第<$STR([201])>次
break
IF
Check[200]当天日期
ACT
SENDMSG6今日已进3次幻境
break
IF
ACT
SET[200]当天日期
SET[201]1
MAPMOVEHJMAP100100
SENDMSG7幻境进入成功,今日第1次
RobotManage.txt加0点:
[@RobotRun]
IF
HOUR0
ACT
SETALLHUMANVAR2010
若Hero子版本不支持SETALLHUMANVAR,就用逐人登录判断日期;玩家上线时[200]不等于当天日期就把[201]设0。登录触发写QManage.txt[@Login]:
[@Login]
IF
Check[200]当天日期
ACT
ELSEACT
SET[200]当天日期
SET[201]0
五、用文本名单限制进入
不想用变量,可用AddTextListEx记录账号或角色ID,进入前CheckTextList判断。NPC示例:
[@Main]
IF
ACT
SAY
<进入幻境/@HJList><关闭/@close>
[@HJList]
IF
CheckTextList..\QuestDiary\幻境限制\幻境名单.txt
ACT
SENDMSG6今日已通过名单进入3次或已记录,无法再进
break
IF
ACT
AddTextListEx..\QuestDiary\幻境限制\幻境名单.txt角色ID3
MAPMOVEHJMAP100100
SENDMSG7进入幻境成功
文本名单适合只记“今天进过”但不方便按次数累加的场景;要严格三次,名单行要带计数,或者用变量更直观。机器人0点清空名单文件内容即可。
六、防重复计数与多层幻境处理
幻境若分一层二层三层,只在土城或主城总入口NPC计数。层间传送NPC只写MAPMOVE,不写INC、不加次数。若玩家可从地图内直接回城再进,回城后再次点主入口会再计数,这是正常限制;如允许“一次购票全天各层自由”,就把计数改成“进入总会话1次”,用进入标记[202]=1表示当天已开幻境,进图不按次数只按标记,出图不清除,0点清标记。
七、配合MapInfo做人数和停留
幻境地图在MapInfo.txt可附加人数、时间参数,和次数限制互补。例如限制某层最多50人、停留30分钟回城,写:
HJMAP幻境一层00000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

