进图自动扣钱分三种做法。第一种在MapInfo给地图加自动减货币参数,玩家一进图就按间隔扣,不需要NPC脚本。第二种在传送NPC点进入时先扣一次,适合买票进图。第三种进图后用定时器按秒、按分钟循环扣,钱不够自动传回安全区。游戏币和元宝只是变量命令不同,逻辑完全一样。
一、MapInfo地图参数直接扣
打开Mir200\Envir\MapInfo.txt,找到目标地图行。普通格式类似:
(地图名|编号参数1参数2)
在行尾加自动减钱参数。部分引擎支持DECMONEY,格式:
DECMONEY(货币名或ID/间隔秒/每次数量/@QF标签)
例子:
(经验房|D515安全区DECMONEY(游戏币/1/10/@扣币))
意思为进入D515后每1秒扣10个游戏币,触发QFunction-0.txt里的[@扣币]。若扣元宝,把货币名换成版本里元宝对应名称,例如部分端写元宝,部分端GAMEGOLD体系直接写元宝;不确定就在M2用GM命令发元宝看变量名。
对应QF写接收标签:
[@扣币]
IF
CHECKGAMEGOLD>10
ACT
GAMEGOLD-10
ELSEACT
MAPMOVE3330330
SENDMSG6元宝不足已被送出地图
如果只用MapInfo自动扣、不写QF标签,有些引擎可只填数量和间隔;需要自定义提示、回城、扣不同货币时再把QF标签补齐。GOM类演示里进图自动减元宝可直接在地图行加对应参数,进图后按间隔每秒减,元宝为0会按地图NORECONNECT或脚本强传。
只扣一次不要循环,不在MapInfo写间隔参数,改走NPC进入前扣,见第二节。
二、NPC传送前扣游戏币或元宝
最常用,玩家点NPC才扣,不点不扣。Market_Def里新建或编辑传送NPC,脚本结构:
[@main]
进入高级图需要1000游戏币\
[@进图]
IF
CHECKGAMEGOLD>999
ACT
GAMEGOLD-1000
MAPMOVED5151010
GIVE回城卷1
SENDMSG0玩家进入高级图
ELSEACT
MESSAGEBOX游戏币不足,无法进入
CLOSE
扣元宝把CHECKGAMEGOLD和GAMEGOLD换成版本元宝检测命令;部分Hero、Blue用CHECKGAMEGOLD、GAMEGOLD体系,GOM部分端元宝也走GAMEGOLD,具体看M2货币设置。扣普通游戏币若服务端用CHECKGAOLD/TAKE,可写:
IF
CHECKGOLD>999
ACT
TAKE金币1000
MAPMOVED5151010
NPC买卖型杂货不适用这个逻辑,传送员用普通对话NPC即可。进入前还可叠等级、转生、会员判断,例如:
IF
CHECKLEVELEX>44
CHECKGAMEGOLD>1499
ACT
GAMEGOLD-1500
MAPMOVEXA11424
GIVE回城卷1
ELSEACT
MESSAGEBOX需要45级且1500元宝
这类写法适合挑战图、BOSS图、会员图,玩家每次点进入扣一次,不会在图里持续扣。
三、进图后按秒循环扣,钱不够回城
适合泡点、闭关、经验房、元宝挂机图。分两处:传送NPC开定时器,QManage写定时扣费。
传送NPC:
[@进闭关]
IF
ACT
MAPMOVESG0081010
GIVE回城卷1
SETONTIMER11
SENDMSG0进入闭关,每秒扣元宝
ELSEACT
MESSAGEBOX进入失败
SETONTIMER11表示开1号定时器,每1秒执行一次。若想每5秒扣一次,写SETONTIMER15;每60秒扣一次写SETONTIMER160。
QManage.txt加:
[@OnTimer1]
IF
ISONMAPSG008
CHECKGAMEGOLD>9
ACT
GAMEGOLD-10
CHANGEEXP+100000
ELSEACT
GOTO@闭关回城
[@闭关回城]
IF
ISONMAPSG008
ACT
SETOFFTIMER1
MESSAGEBOX元宝不足,已传出
MAPMOVE3330333
ELSEACT
SETOFFTIMER1
上面逻辑为:在SG008且元宝大于9,每秒扣10元宝并给经验;不满足就关定时器、弹窗、传回3号地图330333。若只扣游戏币不扣元宝,把CHECKGAMEGOLD、GAMEGOLD换成CHECKGOLD、TAKE或对应游戏币命令。
Hero按秒扣金币可简写循环:
IF
ISONMAP地图号
ACT
GAMEGOLD-数量
DELAY1000
GOTO@本标签
不足处理单独写:
IF
ISONMAP地图号
CHECKGAMEGOLD<数量
ACT
SENDMSG6金币不足即将回城
MAPMOVE3330330
DELAY1000为1秒,改DELAY5000为5秒。这种写法适合Hero自定义NPC定时标签,不和QManage定时器混用也行。
四、按分钟或按次数扣费
不想每秒扣,改间隔即可。定时器法把SETONTIMER11改成160,就是每60秒触发一次;MapInfo法把DECMONEY间隔改60。NPC买票法不改,本身只进图扣一次。
按分钟扣元宝示例:
[@OnTimer2]
IF
ISONMAPVIP001
CHECKGAMEGOLD>99
ACT
GAMEGOLD-100
SENDMSG6已扣除本分钟元宝100
ELSEACT
SETOFFTIMER2
MAPMOVE3330330
SENDMSG6元宝不足请续费
进图NPC写:
MAPMOVEVIP00155
SETONTIMER260
这样玩家在VIP001每60秒扣100元宝,断了自动回城。
五、游戏币和元宝命令对照
不同引擎变量名差异很大,配错会扣不到或扣错货币。
GOM/GEE常用:元宝检测CHECKGAMEGOLD,扣元宝GAMEGOLD-数量;游戏币检测CHECKGOLD,扣游戏币TAKE金币数量或直接用GAMEGOLD体系若版本把游戏币映射过去。部分端绑定元宝用GAMEGOLD_BIND。
Hero常用:元宝CHECKGAMEGOLD、GAMEGOLD-;游戏币CHECKGOLD、TAKE金币;也有用CHECKGAMEPOINT扣点券的情况,按M2货币类型换。
Blue/老版:元宝多走GAMEGOLD,游戏币走CHECKGOLD、TAKE;部分版本元宝名实际是“元宝”道具,需要用CHECKGAMEGOLD检测账户元宝,而不是背包道具。
不确定变量,用GM账号发1次元宝、1次游戏币,看角色面板哪个数字变,再反推脚本命令。QF、QM、NPC三处用同一套变量,别QM用GAMEGOLD、NPC用TAKE元宝。
六、进图即扣一次+在图里持续扣组合
买票+按时扣一起做,防止白嫖。NPC先扣门票,进图再开定时器:
[@进付费图]
IF
CHECKGAMEGOLD>199
ACT
GAMEGOLD-200
MAPMOVEPAY0011010
GIVE回城卷1
SETONTIMER35
SENDMSG0已扣200元宝门票,每5秒再扣50
ELSEACT
MESSAGEBOX元宝不足,需200门票
QManage:
[@OnTimer3]
IF
ISONMAPPAY001
CHECKGAMEGOLD>49
ACT
GAMEGOLD-50
ELSEACT
SETOFFTIMER3
MAPMOVE3330333
SENDMSG6持续费用不足已回城
门票扣一次,定时器每5秒扣50。若玩家中途用回城卷离开,QM定时器仍可能触发,需要在地图退出脚本或OnTimer里再判断ISONMAP,不在图就SETOFFTIMER,避免回城后继续扣。
七、地图退出自动关定时器
在QFunction-0.txt或MapQuest对应退出触发写:
[@MapExit_地图号]
ACT
SETOFFTIMER1
SETOFFTIMER2
SETOFFTIMER3
不同引擎地图退出标签名不同,部分用[@LeaveMap_编号]、部分用QF地图事件。只要玩家从付费图走到别的图、回城、随机出去,都执行SETOFFTIMER对应编号。不写这个,玩家回城后定时器还在跑会继续扣元宝。
用MapInfoDECMONEY参数则不用管定时器退出,引擎按是否在该地图判定;但自定义回城、不足处理最好仍写QF,提示更友好。
八、机器人轮询扣费替代定时器
不想用SetOnTimer,可用Robot_def自动跑。AutoRunRobot.txt:
AutoRunNPCSEC5@地图扣费
RobotManage.txt:
[@地图扣费]
IF
ISONMAPPAY001
CHECKGAMEGOLD>49
ACT
GAMEGOLD-50
ELSEACT
IF
ISONMAPPAY001
ACT
MAPMOVE3330333
SENDMSG6元宝不足已被传出
SEC5表示每5秒全服轮询一次。人多的服机器人太频繁会占资源,按秒扣改用SetOnTimer更准;按分钟扣用机器人更简单。多张付费图分别写ISONMAP判断,或每个图一个机器人标签。
九、常见不扣钱排查
进图不扣:MapInfo参数先看地图行是否真加载,参数名拼错、半角括号错、地图行被注释都不会生效。DECMONEY若带QF标签,QF标签名要和MapInfo一致,QFunction-0.txt重新加载后再进图。
NPC点了不扣:检查CHECKGAMEGOLD或CHECKGOLD变量名,元宝和游戏币用错命令会直接跳过扣费进图。可临时把扣费命令注释,只留MAPMOVE,确认能进图后再加扣费;能进但不扣就是命令变量问题。
定时器不触发:QManage.txt是否加载,SetOnTimer编号和OnTimer编号是否一致。搜全部脚本@OnTimer1看有没有重复占用,1号被泡点用了就换2、3、4号。GOM/QM改完重载登录脚本或重启M2。
扣了钱不还传:不足分支必须SETOFFTIMER再MAPMOVE,先关定时器再传,否则下一秒又扣一次再传。Hero循环DELAY写法没有SETOFF会一直弹扣费,需要在不足判断里BREAK或跳回城标签。
扣游戏币变成扣元宝:M2货币设置里GAMEGOLD可能绑定元宝也可能绑定游戏币,看版本。NPC用TAKE金币最不容易扣错元宝;用GAMEGOLD前先小号测试扣1看哪个面板变。
回城坐标错误:MAPMOVE后面地图号和XY按自己MapInfo来,别照抄3330330。部分版本土城不是3,盟重不是0,先查MapInfo再写回城。
十、运营参数建议
按秒扣适合小数值体验图,例如每秒1到10游戏币、1到2元宝;按分钟扣适合长期挂机,例如每分钟50到200元宝。门票加持续费分开设,门票挡白嫖,持续费控停留时长。免费新手图不要开DECMONEY,避免玩家进图瞬间没钱被强传。付费打宝图可用NPC门票+MapInfo按秒扣,减少脚本维护;闭关经验图用NPC开定时器,方便同时发经验、内功、成就。所有扣费地图给进入前弹MESSAGEBOX告知单价和回城规则,避免玩家进图后投诉不明扣款。改完用新号带少量钱进图测一次不足回城,再用满钱号进图测持续扣费、回城关定时器、重新进图重新计费三遍再对玩家开放。
一、MapInfo地图参数直接扣
打开Mir200\Envir\MapInfo.txt,找到目标地图行。普通格式类似:
(地图名|编号参数1参数2)
在行尾加自动减钱参数。部分引擎支持DECMONEY,格式:
DECMONEY(货币名或ID/间隔秒/每次数量/@QF标签)
例子:
(经验房|D515安全区DECMONEY(游戏币/1/10/@扣币))
意思为进入D515后每1秒扣10个游戏币,触发QFunction-0.txt里的[@扣币]。若扣元宝,把货币名换成版本里元宝对应名称,例如部分端写元宝,部分端GAMEGOLD体系直接写元宝;不确定就在M2用GM命令发元宝看变量名。
对应QF写接收标签:
[@扣币]
IF
CHECKGAMEGOLD>10
ACT
GAMEGOLD-10
ELSEACT
MAPMOVE3330330
SENDMSG6元宝不足已被送出地图
如果只用MapInfo自动扣、不写QF标签,有些引擎可只填数量和间隔;需要自定义提示、回城、扣不同货币时再把QF标签补齐。GOM类演示里进图自动减元宝可直接在地图行加对应参数,进图后按间隔每秒减,元宝为0会按地图NORECONNECT或脚本强传。
只扣一次不要循环,不在MapInfo写间隔参数,改走NPC进入前扣,见第二节。
二、NPC传送前扣游戏币或元宝
最常用,玩家点NPC才扣,不点不扣。Market_Def里新建或编辑传送NPC,脚本结构:
[@main]
进入高级图需要1000游戏币\
[@进图]
IF
CHECKGAMEGOLD>999
ACT
GAMEGOLD-1000
MAPMOVED5151010
GIVE回城卷1
SENDMSG0玩家进入高级图
ELSEACT
MESSAGEBOX游戏币不足,无法进入
CLOSE
扣元宝把CHECKGAMEGOLD和GAMEGOLD换成版本元宝检测命令;部分Hero、Blue用CHECKGAMEGOLD、GAMEGOLD体系,GOM部分端元宝也走GAMEGOLD,具体看M2货币设置。扣普通游戏币若服务端用CHECKGAOLD/TAKE,可写:
IF
CHECKGOLD>999
ACT
TAKE金币1000
MAPMOVED5151010
NPC买卖型杂货不适用这个逻辑,传送员用普通对话NPC即可。进入前还可叠等级、转生、会员判断,例如:
IF
CHECKLEVELEX>44
CHECKGAMEGOLD>1499
ACT
GAMEGOLD-1500
MAPMOVEXA11424
GIVE回城卷1
ELSEACT
MESSAGEBOX需要45级且1500元宝
这类写法适合挑战图、BOSS图、会员图,玩家每次点进入扣一次,不会在图里持续扣。
三、进图后按秒循环扣,钱不够回城
适合泡点、闭关、经验房、元宝挂机图。分两处:传送NPC开定时器,QManage写定时扣费。
传送NPC:
[@进闭关]
IF
ACT
MAPMOVESG0081010
GIVE回城卷1
SETONTIMER11
SENDMSG0进入闭关,每秒扣元宝
ELSEACT
MESSAGEBOX进入失败
SETONTIMER11表示开1号定时器,每1秒执行一次。若想每5秒扣一次,写SETONTIMER15;每60秒扣一次写SETONTIMER160。
QManage.txt加:
[@OnTimer1]
IF
ISONMAPSG008
CHECKGAMEGOLD>9
ACT
GAMEGOLD-10
CHANGEEXP+100000
ELSEACT
GOTO@闭关回城
[@闭关回城]
IF
ISONMAPSG008
ACT
SETOFFTIMER1
MESSAGEBOX元宝不足,已传出
MAPMOVE3330333
ELSEACT
SETOFFTIMER1
上面逻辑为:在SG008且元宝大于9,每秒扣10元宝并给经验;不满足就关定时器、弹窗、传回3号地图330333。若只扣游戏币不扣元宝,把CHECKGAMEGOLD、GAMEGOLD换成CHECKGOLD、TAKE或对应游戏币命令。
Hero按秒扣金币可简写循环:
IF
ISONMAP地图号
ACT
GAMEGOLD-数量
DELAY1000
GOTO@本标签
不足处理单独写:
IF
ISONMAP地图号
CHECKGAMEGOLD<数量
ACT
SENDMSG6金币不足即将回城
MAPMOVE3330330
DELAY1000为1秒,改DELAY5000为5秒。这种写法适合Hero自定义NPC定时标签,不和QManage定时器混用也行。
四、按分钟或按次数扣费
不想每秒扣,改间隔即可。定时器法把SETONTIMER11改成160,就是每60秒触发一次;MapInfo法把DECMONEY间隔改60。NPC买票法不改,本身只进图扣一次。
按分钟扣元宝示例:
[@OnTimer2]
IF
ISONMAPVIP001
CHECKGAMEGOLD>99
ACT
GAMEGOLD-100
SENDMSG6已扣除本分钟元宝100
ELSEACT
SETOFFTIMER2
MAPMOVE3330330
SENDMSG6元宝不足请续费
进图NPC写:
MAPMOVEVIP00155
SETONTIMER260
这样玩家在VIP001每60秒扣100元宝,断了自动回城。
五、游戏币和元宝命令对照
不同引擎变量名差异很大,配错会扣不到或扣错货币。
GOM/GEE常用:元宝检测CHECKGAMEGOLD,扣元宝GAMEGOLD-数量;游戏币检测CHECKGOLD,扣游戏币TAKE金币数量或直接用GAMEGOLD体系若版本把游戏币映射过去。部分端绑定元宝用GAMEGOLD_BIND。
Hero常用:元宝CHECKGAMEGOLD、GAMEGOLD-;游戏币CHECKGOLD、TAKE金币;也有用CHECKGAMEPOINT扣点券的情况,按M2货币类型换。
Blue/老版:元宝多走GAMEGOLD,游戏币走CHECKGOLD、TAKE;部分版本元宝名实际是“元宝”道具,需要用CHECKGAMEGOLD检测账户元宝,而不是背包道具。
不确定变量,用GM账号发1次元宝、1次游戏币,看角色面板哪个数字变,再反推脚本命令。QF、QM、NPC三处用同一套变量,别QM用GAMEGOLD、NPC用TAKE元宝。
六、进图即扣一次+在图里持续扣组合
买票+按时扣一起做,防止白嫖。NPC先扣门票,进图再开定时器:
[@进付费图]
IF
CHECKGAMEGOLD>199
ACT
GAMEGOLD-200
MAPMOVEPAY0011010
GIVE回城卷1
SETONTIMER35
SENDMSG0已扣200元宝门票,每5秒再扣50
ELSEACT
MESSAGEBOX元宝不足,需200门票
QManage:
[@OnTimer3]
IF
ISONMAPPAY001
CHECKGAMEGOLD>49
ACT
GAMEGOLD-50
ELSEACT
SETOFFTIMER3
MAPMOVE3330333
SENDMSG6持续费用不足已回城
门票扣一次,定时器每5秒扣50。若玩家中途用回城卷离开,QM定时器仍可能触发,需要在地图退出脚本或OnTimer里再判断ISONMAP,不在图就SETOFFTIMER,避免回城后继续扣。
七、地图退出自动关定时器
在QFunction-0.txt或MapQuest对应退出触发写:
[@MapExit_地图号]
ACT
SETOFFTIMER1
SETOFFTIMER2
SETOFFTIMER3
不同引擎地图退出标签名不同,部分用[@LeaveMap_编号]、部分用QF地图事件。只要玩家从付费图走到别的图、回城、随机出去,都执行SETOFFTIMER对应编号。不写这个,玩家回城后定时器还在跑会继续扣元宝。
用MapInfoDECMONEY参数则不用管定时器退出,引擎按是否在该地图判定;但自定义回城、不足处理最好仍写QF,提示更友好。
八、机器人轮询扣费替代定时器
不想用SetOnTimer,可用Robot_def自动跑。AutoRunRobot.txt:
AutoRunNPCSEC5@地图扣费
RobotManage.txt:
[@地图扣费]
IF
ISONMAPPAY001
CHECKGAMEGOLD>49
ACT
GAMEGOLD-50
ELSEACT
IF
ISONMAPPAY001
ACT
MAPMOVE3330333
SENDMSG6元宝不足已被传出
SEC5表示每5秒全服轮询一次。人多的服机器人太频繁会占资源,按秒扣改用SetOnTimer更准;按分钟扣用机器人更简单。多张付费图分别写ISONMAP判断,或每个图一个机器人标签。
九、常见不扣钱排查
进图不扣:MapInfo参数先看地图行是否真加载,参数名拼错、半角括号错、地图行被注释都不会生效。DECMONEY若带QF标签,QF标签名要和MapInfo一致,QFunction-0.txt重新加载后再进图。
NPC点了不扣:检查CHECKGAMEGOLD或CHECKGOLD变量名,元宝和游戏币用错命令会直接跳过扣费进图。可临时把扣费命令注释,只留MAPMOVE,确认能进图后再加扣费;能进但不扣就是命令变量问题。
定时器不触发:QManage.txt是否加载,SetOnTimer编号和OnTimer编号是否一致。搜全部脚本@OnTimer1看有没有重复占用,1号被泡点用了就换2、3、4号。GOM/QM改完重载登录脚本或重启M2。
扣了钱不还传:不足分支必须SETOFFTIMER再MAPMOVE,先关定时器再传,否则下一秒又扣一次再传。Hero循环DELAY写法没有SETOFF会一直弹扣费,需要在不足判断里BREAK或跳回城标签。
扣游戏币变成扣元宝:M2货币设置里GAMEGOLD可能绑定元宝也可能绑定游戏币,看版本。NPC用TAKE金币最不容易扣错元宝;用GAMEGOLD前先小号测试扣1看哪个面板变。
回城坐标错误:MAPMOVE后面地图号和XY按自己MapInfo来,别照抄3330330。部分版本土城不是3,盟重不是0,先查MapInfo再写回城。
十、运营参数建议
按秒扣适合小数值体验图,例如每秒1到10游戏币、1到2元宝;按分钟扣适合长期挂机,例如每分钟50到200元宝。门票加持续费分开设,门票挡白嫖,持续费控停留时长。免费新手图不要开DECMONEY,避免玩家进图瞬间没钱被强传。付费打宝图可用NPC门票+MapInfo按秒扣,减少脚本维护;闭关经验图用NPC开定时器,方便同时发经验、内功、成就。所有扣费地图给进入前弹MESSAGEBOX告知单价和回城规则,避免玩家进图后投诉不明扣款。改完用新号带少量钱进图测一次不足回城,再用满钱号进图测持续扣费、回城关定时器、重新进图重新计费三遍再对玩家开放。

