当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇土城药店收取保护费NPC全套脚本金币元宝按范围按时效防白嫖重置教程

热度:
土城药店保护费功能按收费方式分四种做法:站范围交费拿泡点保护、进药店交费拿买药权限、按日交费拿全天保护、按次交费拿临时保护。四种可单独用,也可合并成同一个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药店Y4
ACT

GOTO@pay_range_do
ELSEACT

MESSAGEBOX请先站到土城药店附近保护范围再交费
BREAK

[@pay_range_do]
IF

CheckGameGold>87
CheckInMapRange土城地图号药店X药店Y4
ACT

GAMEGOLD-88
SET[88]1
SENDMSG6已交保护费88元宝,药店周围4格泡点受保护,离开再回需重交
CLOSE
BREAK
ELSEACT

MESSAGEBOX88元宝都不够,无法开通范围保护
BREAK

CheckInMapRange地图号XY半径,半径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
SENDMSG6已交全天保护费200元宝,本日土城药店买药、泡点、范围保护全开
CLOSE
BREAK
ELSEACT

MESSAGEBOX全天保护需200元宝,余额不足
BREAK

变量名用[土药日保护]比[88]好维护。买药菜单、泡点菜单都先查CHECK[土药日保护]1,满足就免二次收费;不满足走单次收费或拒绝。HUMAN变量按本服写CHECK[变量]或CHECKVARHUMAN变量,老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
SENDMSG6已交买药保护费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药店Y4
ACT

GAMEGOLD-30
SET[土药临时保护]1
TimeRecall60
SENDMSG6已交30元宝,药店范围保护60分钟,到期自动取消
CLOSE
BREAK
ELSEACT

MESSAGEBOX需站到药店范围且至少有30元宝
BREAK

[@OnTimer_TuYao]
IF

CHECK[土药临时保护]1
ACT

SET[土药临时保护]0
SENDMSG6土药临时保护已到期,如需继续请重新交费

TimeRecall60按本服单位写,部分引擎60秒、部分按分钟配置;不稳定就用机器人定时扫在线人物,按交费时间戳清。临时保护用独立变量,不和日保护、范围单次保护互相覆盖。

六、泡点经验联动

QuestDiary建TuYaoSafe.txt,按范围+已交费发经验:

[@OnTimer_PaoDian]
IF

CheckInMapRange土城地图号药店X药店Y4
CHECK[88]1
OR

CHECK[土药日保护]1
OR

CHECK[土药临时保护]1
ACT

GAMEDIEXPERIENCE经验值按等级或固定值
ELSEACT

IF

CheckInMapRange土城地图号药店X药店Y4
ACT

SENDMSG6未交土药保护费,不享受泡点经验
BREAK

未交费站范围内只给基础地图经验或不给额外经验;交费后走保护变量发额外经验。多变量用#OR合并,避免日保护、临时保护、单次范围保护各自判断漏人。ChangeModeEx类无敌模式按本服命令可选加,不想给无敌只发经验就去掉模式命令。

七、机器人零点重置

按日保护用HUMAN日变量,零点清最省事。AutoRunRobot.txt:

AutoRunNPCRUNONDAY00:00@TuYaoDayReset

RobotManage.txt:

[@TuYaoDayReset]
IF

ACT

SET[土药日保护]0
SET[土药买药权]0
SENDMSG0土城药店每日保护已清零,新一天请重新交费

若用全局G变量做全服统计、全服包场,零点只清自有编号,不清G0-G499,避免碰沙城、泡点、排行榜关联值。示例:

[@TuYaoDayReset]
IF

ACT

MOVG5000
MOVG5010
SENDMSG0土药包场统计已重置

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药店Y4
ACT

GOTO@pay_range_do
ELSEACT

MESSAGEBOX请站到土城药店周围再交费
BREAK

[@pay_range_do]
IF

CheckGameGold>87
CheckInMapRange土城地图号药店X药店Y4
ACT

GAMEGOLD-88
SET[88]1
SENDMSG6范围保护已开,药店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
SENDMSG6全天保护已开,买药与泡点均免二次收费
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药店Y4
ACT

GOTO@pay_hour_do
ELSEACT

MESSAGEBOX临时保护请站药店范围
BREAK

[@pay_hour_do]
IF

CheckGameGold>29
CheckInMapRange土城地图号药店X药店Y4
ACT

GAMEGOLD-30
SET[土药临时保护]1
TimeRecall60
SENDMSG6临时保护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没调用,或变量名和NPCSET不一致;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半径对齐,土城药店保护费就不会出现不扣费给权限、站错位置也能交、一天重复刷日包干的问题。
[顶部]