进图自动扣钱分三种做法。第一种在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
MAPMOVE 3 330 330
SENDMSG 6 元宝不足已被送出地图
如果只用MapInfo自动扣、不写QF标签,有些引擎可只填数量和间隔;需要自定义提示、回城、扣不同货币时再把QF标签补齐。GOM类演示里进图自动减元宝可直接在地图行加对应参数,进图后按间隔每秒减,元宝为0会按地图NORECONNECT或脚本强传。
只扣一次不要循环,不在MapInfo写间隔参数,改走NPC进入前扣,见第二节。
二、NPC传送前扣游戏币或元宝
最常用,玩家点NPC才扣,不点不扣。Market_Def里新建或编辑传送NPC,脚本结构:
[@main]
进入高级图需要1000游戏币\
[@进图]
IF
CHECKGAMEGOLD >999
ACT
GAMEGOLD - 1000
MAPMOVE D515 10 10
GIVE 回城卷 1
SENDMSG 0 玩家进入高级图
ELSEACT
MESSAGEBOX 游戏币不足,无法进入
CLOSE
扣元宝把CHECKGAMEGOLD和GAMEGOLD换成版本元宝检测命令;部分Hero、Blue用CHECKGAMEGOLD、GAMEGOLD体系,GOM部分端元宝也走GAMEGOLD,具体看M2货币设置。扣普通游戏币若服务端用CHECKGAOLD/TAKE,可写:
IF
CHECKGOLD >999
ACT
TAKE 金币 1000
MAPMOVE D515 10 10
NPC买卖型杂货不适用这个逻辑,传送员用普通对话NPC即可。进入前还可叠等级、转生、会员判断,例如:
IF
CHECKLEVELEX >44
CHECKGAMEGOLD >1499
ACT
GAMEGOLD - 1500
MAPMOVE XA1 14 24
GIVE 回城卷 1
ELSEACT
MESSAGEBOX 需要45级且1500元宝
这类写法适合挑战图、BOSS图、会员图,玩家每次点进入扣一次,不会在图里持续扣。
三、进图后按秒循环扣,钱不够回城
适合泡点、闭关、经验房、元宝挂机图。分两处:传送NPC开定时器,QManage写定时扣费。
传送NPC:
[@进闭关]
IF
ACT
MAPMOVE SG008 10 10
GIVE 回城卷 1
SETONTIMER 1 1
SENDMSG 0 进入闭关,每秒扣元宝
ELSEACT
MESSAGEBOX 进入失败
SETONTIMER 1 1表示开1号定时器,每1秒执行一次。若想每5秒扣一次,写SETONTIMER 1 5;每60秒扣一次写SETONTIMER 1 60。
QManage.txt加:
[@OnTimer1]
IF
ISONMAP SG008
CHECKGAMEGOLD >9
ACT
GAMEGOLD - 10
CHANGEEXP + 100000
ELSEACT
GOTO @闭关回城
[@闭关回城]
IF
ISONMAP SG008
ACT
SETOFFTIMER 1
MESSAGEBOX 元宝不足,已传出
MAPMOVE 3 330 333
ELSEACT
SETOFFTIMER 1
上面逻辑为:在SG008且元宝大于9,每秒扣10元宝并给经验;不满足就关定时器、弹窗、传回3号地图330 333。若只扣游戏币不扣元宝,把CHECKGAMEGOLD、GAMEGOLD换成CHECKGOLD、TAKE或对应游戏币命令。
Hero按秒扣金币可简写循环:
IF
ISONMAP 地图号
ACT
GAMEGOLD - 数量
DELAY 1000
GOTO @本标签
不足处理单独写:
IF
ISONMAP 地图号
CHECKGAMEGOLD <数量
ACT
SENDMSG 6 金币不足即将回城
MAPMOVE 3 330 330
DELAY1000为1秒,改DELAY5000为5秒。这种写法适合Hero自定义NPC定时标签,不和QManage定时器混用也行。
四、按分钟或按次数扣费
不想每秒扣,改间隔即可。定时器法把SETONTIMER 1 1改成1 60,就是每60秒触发一次;MapInfo法把DECMONEY间隔改60。NPC买票法不改,本身只进图扣一次。
按分钟扣元宝示例:
[@OnTimer2]
IF
ISONMAP VIP001
CHECKGAMEGOLD >99
ACT
GAMEGOLD - 100
SENDMSG 6 已扣除本分钟元宝100
ELSEACT
SETOFFTIMER 2
MAPMOVE 3 330 330
SENDMSG 6 元宝不足请续费
进图NPC写:
MAPMOVE VIP001 5 5
SETONTIMER 2 60
这样玩家在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
MAPMOVE PAY001 10 10
GIVE 回城卷 1
SETONTIMER 3 5
SENDMSG 0 已扣200元宝门票,每5秒再扣50
ELSEACT
MESSAGEBOX 元宝不足,需200门票
QManage:
[@OnTimer3]
IF
ISONMAP PAY001
CHECKGAMEGOLD >49
ACT
GAMEGOLD - 50
ELSEACT
SETOFFTIMER 3
MAPMOVE 3 330 333
SENDMSG 6 持续费用不足已回城
门票扣一次,定时器每5秒扣50。若玩家中途用回城卷离开,QM定时器仍可能触发,需要在地图退出脚本或OnTimer里再判断ISONMAP,不在图就SETOFFTIMER,避免回城后继续扣。
七、地图退出自动关定时器
在QFunction-0.txt或MapQuest对应退出触发写:
[@MapExit_地图号]
ACT
SETOFFTIMER 1
SETOFFTIMER 2
SETOFFTIMER 3
不同引擎地图退出标签名不同,部分用[@LeaveMap_编号]、部分用QF地图事件。只要玩家从付费图走到别的图、回城、随机出去,都执行SETOFFTIMER对应编号。不写这个,玩家回城后定时器还在跑会继续扣元宝。
用MapInfo DECMONEY参数则不用管定时器退出,引擎按是否在该地图判定;但自定义回城、不足处理最好仍写QF,提示更友好。
八、机器人轮询扣费替代定时器
不想用SetOnTimer,可用Robot_def自动跑。AutoRunRobot.txt:
AutoRun NPC SEC 5 @地图扣费
RobotManage.txt:
[@地图扣费]
IF
ISONMAP PAY001
CHECKGAMEGOLD >49
ACT
GAMEGOLD - 50
ELSEACT
IF
ISONMAP PAY001
ACT
MAPMOVE 3 330 333
SENDMSG 6 元宝不足已被传出
SEC 5表示每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来,别照抄3 330 330。部分版本土城不是3,盟重不是0,先查MapInfo再写回城。
十、运营参数建议
按秒扣适合小数值体验图,例如每秒1到10游戏币、1到2元宝;按分钟扣适合长期挂机,例如每分钟50到200元宝。门票加持续费分开设,门票挡白嫖,持续费控停留时长。免费新手图不要开DECMONEY,避免玩家进图瞬间没钱被强传。付费打宝图可用NPC门票+MapInfo按秒扣,减少脚本维护;闭关经验图用NPC开定时器,方便同时发经验、内功、成就。所有扣费地图给进入前弹MESSAGEBOX告知单价和回城规则,避免玩家进图后投诉不明扣款。改完用新号带少量钱进图测一次不足回城,再用满钱号进图测持续扣费、回城关定时器、重新进图重新计费三遍再对玩家开放。
传奇进入地图自动扣游戏币或元宝完整配置教程含MapInfo参数NPC预扣定时器按秒扣费
来源:
作者:
点击:

