土城药店保护费功能按收费方式分四种做法:站范围交费拿泡点保护、进药店交费拿买药权限、按日交费拿全天保护、按次交费拿临时保护。四种可单独用,也可合并成同一个NPC分菜单。核心用地图范围命令、货币检测、人物变量标记、离开范围重交、机器人零点清日标记。
一、NPC注册与文件
商人型放Mir200\Envir\Market_Def,文件名如土药保护费.txt;若只用对话不加商店,放npc_def也可。Merchant.txt按本服字段顺序加NPC名、地图号、X、Y、脚本名、功能标志、外观、范围、参数。土城地图号按本服MapInfo实际填,不要用3硬套,很多版本土城不是3。脚本文件保存ANSI,Hero用ANSI,GOM/GEE/BLUE按本服要求;改完M2重新加载所有NPC,注册坐标地图变更再重载无效就重启M2。
纯收费对话NPC不需要商店标志;若交费后还要直接买药,脚本头部加功能标志,买药用@buy、卖药用@sell、修理用@repair,具体标志按本服NPC功能码表填。
二、范围泡点保护费基础版
土药周围站人交费,离开保护范围再回要重交。示例用元宝变量,命令名按引擎替换:
[@main]
土城药店保护费\ \
站到药店附近交保护费泡点 /@pay_range\ \
按天包干全天保护 /@pay_day\ \
进店买药保护权限 /@pay_shop\ \
保护规则说明 /@rule\ \
[@pay_range]
输入要保护的元宝数无效,固定档请直接确认\ \
IF
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
GOTO @pay_range_do
ELSEACT
MESSAGEBOX 请先站到土城药店附近保护范围再交费
BREAK
[@pay_range_do]
IF
CheckGameGold >87
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
GAMEGOLD - 88
SET [88] 1
SENDMSG 6 已交保护费88元宝,药店周围4格泡点受保护,离开再回需重交
CLOSE
BREAK
ELSEACT
MESSAGEBOX 88元宝都不够,无法开通范围保护
BREAK
CheckInMapRange 地图号 X Y 半径,半径4表示以药店坐标为中心4格范围;老模板有用2格、4格,按人流量改。 GAMEGOLD - 88扣元宝,SET [88] 1做当前保护标记;若本服元宝用背包物品“元宝”,把CheckGameGold换成CHECKITEM 元宝 88、把GAMEGOLD - 88换成TAKE 元宝 88。若用金币,把CheckGameGold >87换成CHECKGOLD >87500之类、扣费换TAKE 金币 87500,比例自行定。
只做范围泡点安全,不在这里发经验;经验在QuestDiary泡点段按CheckInMapRange+已交费变量发,没交费不进经验段。
三、按天包干保护版
用HUMAN日变量防一天重复交,零点机器人清。示例:
[@pay_day]
IF
CHECK [土药日保护] 1
ACT
MESSAGEBOX 今日已交全天保护费,无需重复交
BREAK
IF
CheckGameGold >199
ACT
GAMEGOLD - 200
SET [土药日保护] 1
SENDMSG 6 已交全天保护费200元宝,本日土城药店买药、泡点、范围保护全开
CLOSE
BREAK
ELSEACT
MESSAGEBOX 全天保护需200元宝,余额不足
BREAK
变量名用[土药日保护]比[88]好维护。买药菜单、泡点菜单都先查CHECK [土药日保护] 1,满足就免二次收费;不满足走单次收费或拒绝。HUMAN变量按本服写CHECK [变量] 或CHECKVAR HUMAN 变量,老Hero用SET [名]、CHECK [名],GOM可用HUMAN变量命令,LEG按P变量或自定义变量替换。
四、进店买药收费版
未交费不让买药,交费后给限时或全天买药。商店型NPC示例:
[@main]
土城药店\ \
购买普通药水 /@open_normal\ \
购买高级药水 /@open_adv\ \
交买药保护费 /@pay_shop\ \
[@pay_shop]
IF
CHECK [土药买药权] 1
ACT
MESSAGEBOX 已有买药保护权限,直接购买
GOTO @open_normal
IF
CheckGameGold >49
ACT
GAMEGOLD - 50
SET [土药买药权] 1
SENDMSG 6 已交买药保护费50元宝,开放药店购买
GOTO @open_normal
ELSEACT
MESSAGEBOX 买药保护需50元宝
BREAK
[@open_normal]
IF
CHECK [土药买药权] 1
OR
CHECK [土药日保护] 1
ACT
CALL [\功能商店\普通药.txt] @buy_normal
ELSEACT
MESSAGEBOX 未交买药保护费,先交费再买药
BREAK
CALL调用独立商店段,或直接在脚本写@buy、@sell功能标志。若只做简单版,pay_shop扣费后不单独开商店,主菜单把@buy普通商店放出来,未交费点购买就跳pay_shop。金币版把50元宝换成比如5万金币,用CHECKGOLD+TAKE 金币。
五、按次临时保护版
适合土药泡点按小时或按次收。用TimeRecall或ONTime轮询清变量:
[@pay_hour]
IF
CheckGameGold >29
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
GAMEGOLD - 30
SET [土药临时保护] 1
TimeRecall 60
SENDMSG 6 已交30元宝,药店范围保护60分钟,到期自动取消
CLOSE
BREAK
ELSEACT
MESSAGEBOX 需站到药店范围且至少有30元宝
BREAK
[@OnTimer_TuYao]
IF
CHECK [土药临时保护] 1
ACT
SET [土药临时保护] 0
SENDMSG 6 土药临时保护已到期,如需继续请重新交费
TimeRecall 60按本服单位写,部分引擎60秒、部分按分钟配置;不稳定就用机器人定时扫在线人物,按交费时间戳清。临时保护用独立变量,不和日保护、范围单次保护互相覆盖。
六、泡点经验联动
QuestDiary建TuYaoSafe.txt,按范围+已交费发经验:
[@OnTimer_PaoDian]
IF
CheckInMapRange 土城地图号 药店X 药店Y 4
CHECK [88] 1
OR
CHECK [土药日保护] 1
OR
CHECK [土药临时保护] 1
ACT
GAMEDIEXPERIENCE 经验值按等级或固定值
ELSEACT
IF
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
SENDMSG 6 未交土药保护费,不享受泡点经验
BREAK
未交费站范围内只给基础地图经验或不给额外经验;交费后走保护变量发额外经验。多变量用#OR合并,避免日保护、临时保护、单次范围保护各自判断漏人。ChangeModeEx类无敌模式按本服命令可选加,不想给无敌只发经验就去掉模式命令。
七、机器人零点重置
按日保护用HUMAN日变量,零点清最省事。AutoRunRobot.txt:
AutoRun NPC RUNONDAY 00:00 @TuYaoDayReset
RobotManage.txt:
[@TuYaoDayReset]
IF
ACT
SET [土药日保护] 0
SET [土药买药权] 0
SENDMSG 0 土城药店每日保护已清零,新一天请重新交费
若用全局G变量做全服统计、全服包场,零点只清自有编号,不清G0-G499,避免碰沙城、泡点、排行榜关联值。 示例:
[@TuYaoDayReset]
IF
ACT
MOV G500 0
MOV G501 0
SENDMSG 0 土药包场统计已重置
Hero清GA可在M2管理文件管理清全局GA;GOM/GEE用M2查看内核数据清G/A;脚本自动清写Robot即可,不必每次手点。
临时保护不用零点清,按TimeRecall或在线计时到期清;范围单次保护不长期存变量,交一次标记一次,离开重交可把SET [88] 1改为进入泡点段再校验范围,不依赖长期变量。
八、防白嫖与边界
零值负数:输入型保护若做自由输入数量再算价,必须EQUAL 数量 0、SMALL 数量 1双重拦;固定档菜单不存在手输0问题,但仍要拦货币不足。
重复交费:日保护、买药权先CHECK变量,已1就弹已交并BREAK;不先查变量,玩家可连续点NPC多次扣费。
范围造假:先CheckInMapRange再扣费,顺序反了会出现没站范围也扣钱;扣费成功再SET变量,先SET后扣费会出现扣费失败但已给权限。
货币命令差异:元宝变量老模板用CheckGameGold、GAMEGOLD - 数值; 部分GOM用CHECKGAMEGOLD、GAMEGOLD -数值;背包元宝用CHECKITEM+TAKE;金币用CHECKGOLD+TAKE 金币。混用会导致不扣费还发权限。
小号刷保护:日保护加等级限制CHECKLEVELEX、会员限制、行会限制;免费服可只做范围单次保护,不做日包干。
离开返回重交:范围保护不写离开清除,玩家绕圈回范围仍能继续泡点;想要严格重交,在泡点OnTimer里只认当前CheckInMapRange+本次交费变量,出范围把[88]清0,再回必须重交。
商店绕过:进店买药保护若只做NPC菜单,不限制M2普通药店NPC,玩家去别的药店仍能买;要对土城这家单独收费,就把收费脚本绑定这家NPC,其它药店另设或关掉。
合区多角色:按账号维度收日保护可加namelist或账号变量,避免同号多角色各交一次;纯按人物HUMAN变量则每个角色各交。
重载失效:改Market_Def/Merchant后M2重载NPC;改QuestDiary泡点重载任务或机器人;改AutoRunRobot+RobotManage重载机器人,不重载就等重启。
九、完整合并NPC示例
[@main]
土城药店保护费中心\ \
1.范围单次保护88元宝 /@pay_range\ \
2.全天包干200元宝 /@pay_day\ \
3.买药权限50元宝 /@pay_shop\ \
4.范围临时60分钟30元宝 /@pay_hour\ \
5.规则说明 /@rule\ \
[@rule]
IF
SAY
范围保护需站药店周围4格,交费后受保护\ \
全天包干当日有效,零点自动清零\ \
买药权限仅开放本药店购买\ \
临时保护按时长生效,到期重交\ \
未交费不享受泡点额外经验\ \
[@pay_range]
IF
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
GOTO @pay_range_do
ELSEACT
MESSAGEBOX 请站到土城药店周围再交费
BREAK
[@pay_range_do]
IF
CheckGameGold >87
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
GAMEGOLD - 88
SET [88] 1
SENDMSG 6 范围保护已开,药店4格泡点安全
CLOSE
BREAK
ELSEACT
MESSAGEBOX 需88元宝且站在药店范围
BREAK
[@pay_day]
IF
CHECK [土药日保护] 1
ACT
MESSAGEBOX 今日全天保护已交
BREAK
IF
CheckGameGold >199
ACT
GAMEGOLD - 200
SET [土药日保护] 1
SET [土药买药权] 1
SENDMSG 6 全天保护已开,买药与泡点均免二次收费
CLOSE
BREAK
ELSEACT
MESSAGEBOX 全天保护200元宝不足
BREAK
[@pay_shop]
IF
CHECK [土药买药权] 1
OR
CHECK [土药日保护] 1
ACT
GOTO @shop_open
IF
CheckGameGold >49
ACT
GAMEGOLD - 50
SET [土药买药权] 1
GOTO @shop_open
ELSEACT
MESSAGEBOX 买药保护50元宝不足
BREAK
[@shop_open]
IF
ACT
CALL [\药店商店\土药商城.txt] @buy_all
CLOSE
[@pay_hour]
IF
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
GOTO @pay_hour_do
ELSEACT
MESSAGEBOX 临时保护请站药店范围
BREAK
[@pay_hour_do]
IF
CheckGameGold >29
CheckInMapRange 土城地图号 药店X 药店Y 4
ACT
GAMEGOLD - 30
SET [土药临时保护] 1
TimeRecall 60
SENDMSG 6 临时保护60分钟已开
CLOSE
BREAK
ELSEACT
MESSAGEBOX 临时保护需30元宝
BREAK
地图号、药店X、药店Y按MapInfo和实地坐标替换;半径4可按人多改6、人少改2。#CALL商店段按本服商店脚本写@buy_all,或在shop_open直接放@buy/@sell标志。元宝换金币把三档价格重设,CheckGameGold换CHECKGOLD,GAMEGOLD - 数值换TAKE 金币 数值。
十、坐标与地图排错
点NPC报不在范围:CheckInMapRange地图号错,去MapInfo查土城行首地图号;坐标错去M2地图参数或客户端站店门口用GM取坐标;半径太小把4改6再测。
交费成功不泡点:QuestDiary泡点OnTimer没调用,或变量名和NPC SET不一致;NPC用[88]、泡点查[土药日保护]就会全漏。统一变量名。
买药仍免费:收费NPC和原土城药店是两个NPC,玩家走原药店不收费;要么删原药店只留收费NPC,要么原药店改收费入口。
零点不清日保护:AutoRunRobot时间格式错、RobotManage标签名不一致、M2机器人总开关没开;手动M2清HUMAN变量验证变量机制没问题后再修Robot。
元宝扣了没权限:GAMEGOLD -后没SET、或SET变量名拼错;SENDMSG把变量值打出来调试。
Hero乱码:Market_Def用UTF-8保存会乱码,改ANSI;Merchant坐标、脚本名、NPC显示名三处一致。
GOM不扣元宝:CheckGameGold命令名在本服可能叫CHECKGAMEGOLD,GAMEGOLD -可能叫GAMEGOLD -值或TAKE 元宝;先看M2命令列表再套。
范围保护白嫖:只SET [88]不查离场,玩家出站再回仍有效;严格版在泡点定时器出范围执行SET [88] 0,再回NPC重交。
按范围单次、按天、按买药、按临时四档拆分变量,泡点经验只认已交费变量,买药菜单先查买药权或日保护,机器人零点清日标记,MapInfo坐标和CheckInMapRange半径对齐,土城药店保护费就不会出现不扣费给权限、站错位置也能交、一天重复刷日包干的问题。
传奇土城药店收取保护费NPC全套脚本金币元宝按范围按时效防白嫖重置教程
来源:
作者:
点击:

