会员专用传送石分双击使用型和NPC点击型。双击型在StdItems建物品,用Stdmode触发QFunction脚本,脚本里先判会员再MapMove到会员图;NPC型不做物品也可,做石头只是方便玩家背包一键用。下面按Hero、GOM/GEE、Blue/Legend常见写法都覆盖,命令名按所用核心微调。
一、StdItems建会员传送石
1.可重复使用的双击石(推荐)
参考随机传送石、各类回城石的Stdmode做法,传送卷常用Stdmode=2,Anicount作为触发ID,DuraMax按“持久/1000”算使用次数。新增一行示例思路:
名称:会员传送石
Stdmode:2
Shape:按版本,纯触发可写0或参照回城石Shape;若引擎要求双击卷走Anicount脚本,Shape不决定地图,只决定图标/子类
Anicount:101(自定义触发ID,后面QFunction写@StdmodeFunc101)
Source:0
Reserved:0
Looks:用客户端已有卷轴图标编号,例如参照比奇传送石Looks999仅作占位,实际按Item.wil资源改
DuraMax:想用50次写50000,100次写100000;无限使用可改Stdmode=31、Shape=51类扩展物品,但不同核心命令差异大,先按Stdmode=2测
Weight:10到20
Need:0
NeedLevel:0
Price:0或测试价
Bind:0不绑、1拾取绑、2穿戴绑;会员石建议1或2防倒卖
分号示意(仅按常见2类卷轴列常用字段,实际列数按StdItems.DB补):
会员传送石;2;0;101;0;0;999;50000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;
若你的库用Stdmode=31做“用一次触发脚本”、Anicount=触发ID,则一次消耗型写Shape=50,永久触发型写Shape=51,QFunction同样接@StdmodeFunc101。但部分旧核心对31类扩展支持不完整,会员石先用2类最稳。
2.单次消耗石
DuraMax写1000等于1次,用完自动消失;活动发石用这个,避免玩家囤石无限进会员图。若希望使用后不消失但计次,DuraMax按次数×1000设。
3.多等级会员石
做三把:黄金会员传送石Anicount=101、钻石会员传送石Anicount=102、至尊会员传送石Anicount=103。QFunction里分别判不同会员变量;物品名和Anicount一一对应,别混用。
二、会员身份先定型
传送石脚本前必须确定“怎么算会员”,否则石头点了都传或都不传。
方案A:名单文件判定
Envir\QuestDiary下建“会员\会员名单.txt”,每行一个角色名。脚本用:
CHECKNAMELIST..\QuestDiary\会员\会员名单.txt
或带有效期:
CHECKNAMEDATETIMELIST..\QuestDiary\会员\会员名单.txt1S1N1N2N3
1表示过期自动删记录,S1/N1等取剩余时间变量。非会员提示未授权。优点是不动数据库,GM手动加名字就能发会员;缺点是不自动到期时要机器人或登录脚本清理。
方案B:Hero会员等级变量
Hero可用:
EQUALHumInfo.CheckItemValue(-100)1
-100表示查会员等级,1是青铜、2白银、3黄金,具体等级数值按你!Setup.txt或会员系统定义。不同级别走不同地图:
EQUALHumInfo.CheckItemValue(-100)1→传黄金会员图
EQUALHumInfo.CheckItemValue(-100)2→传钻石会员图
方案C:M2原生会员命令
部分核心支持CHECKMEMBERTYPE、CHECKMEMBERLEVEL:
CHECKMEMBERTYPE1
CHECKMEMBERLEVEL>=1
CHECKMEMBERTYPE1表示普通会员类型,CHECKMEMBERLEVEL>=1表示会员等级达标。优先用原生命令,比自己维护名单省事。
方案D:G变量/个人变量标记
开通会员时写:
MOVG8001
石头脚本检测:
CHECK[800]1
G800仅作示例,0-799和个人变量、800-999全局变量划分按核心文档;用人物绑定变量要避免小退丢失,用G变量要注意同号多角色共享问题。适合自制会员系统,不和M2原生会员冲突时别混用两套,免得状态不同步。
三、QFunction双击触发传送
QFunction-0.txt加对应段。Anicount=101示例:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
CHECKMEMBERTYPE1
act
TAKE会员传送石0
MAPMOVE会员图号出生X出生Y
SENDMSG6会员传送石已使用,正在进入会员专属地图。
elsesay
仅会员可使用此石,非会员无法传送。
TAKE写0表示不消耗次数仅做触发测试;正式服按使用次数扣持久就不要TAKE物品,让DuraMax自然减,或者TAKE1做单次消耗石。若核心不支持CHECKMEMBERTYPE,替换成:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
CHECKNAMELIST..\QuestDiary\会员\会员名单.txt
act
MAPMOVE会员图号出生X出生Y
SENDMSG6会员地图传送成功。
elsesay
非会员或无会员传送石权限。
Hero替换会员判断:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)1
act
MAPMOVE会员图号出生X出生Y
SENDMSG6青铜及以上会员已传送。
elsesay
会员等级不足,无法使用传送石。
多图分级:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)3
act
MAPMOVE至尊会员图100100
elsesay
[@StdmodeFunc101_2]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)2
act
MAPMOVE钻石会员图100100
elsesay
[@StdmodeFunc101_3]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)1
act
MAPMOVE黄金会员图100100
elsesay
会员等级不足。
Stdmode=2物品双击后是否进QFunction,取决于核心“特殊物品/StdmodeFunc”开关;部分GOM/GEE要在M2特殊物品或功能脚本里启用Stdmode触发,Blue/Legend按Anicount进QFunction,Hero按StdmodeFunc段名。改完M2重载QFunction,不要用浏览器打开脚本改编码,文本保存ANSI,避免中文段名乱码不触发。
四、NPC版会员传送石(不依赖双击物品)
Market_Def建“会员传送员-0.txt”,脚本体:
[@main]
使用会员传送石说明/stonerule
黄金会员进图/gotojin
钻石会员进图/gotodiamond
至尊会员进图/gotozin
[@stonerule]
say
背包持有会员传送石仅作标识,点击对应会员等级进入专属图;非会员不传送。
[@gotojin]
if
CHECKMEMBERTYPE1
CHECKITEM会员传送石1
act
MAPMOVE黄金会员图100100
SENDMSG6已传送到黄金会员专属图。
elsesay
需要会员传送石且为对应会员。
[@gotodiamond]
if
CHECKMEMBERLEVEL>=2
CHECKITEM会员传送石1
act
MAPMOVE钻石会员图100100
SENDMSG6已传送到钻石会员专属图。
elsesay
钻石会员等级不足或未持石。
[@gotozin]
if
CHECKMEMBERLEVEL>=3
CHECKITEM会员传送石1
act
MAPMOVE至尊会员图100100
SENDMSG6已传送到至尊会员专属图。
elsesay
至尊会员等级不足或未持石。
名单版把CHECKMEMBERTYPE/CHECKMEMBERLEVEL换成CHECKNAMELIST对应文件。NPC好处是排错简单,玩家点选项就能看提示;坏处不是“背包双击石头”的体验。想兼得就NPC和QFunction都用同一套会员判断。
五、会员地图与入口防绕
只做石头不锁地图,玩家可用普通回城石、其他NPC、机器人命令绕进去,会员石就没意义。
1.MapInfo加参数
会员图行按核心加进入限制参数,例如部分核心支持CHECKQUEST、NEEDSET、会员参数;没有原生会员参数的用“进入触发脚本”代替。示例MapInfo只写普通图:
[会员图号会员专属]FIGHT
SAFE出生X出生Y范围
进入限制放QFunction或MapEvent。
2.MapEvent坐标触发
部分核心Envir下MapEvent.txt绑定入口,格式近似“地图号XY范围触发标识冷却机率事件类型”,脚本段做会员判断。示例思路:
会员图号出生X出生Y3@MemberEnterCheck00ENTER
QFunction或对应事件文件:
[@MemberEnterCheck]
if
CHECKMEMBERTYPE1
act
SENDMSG6会员验证通过,欢迎进入。
elsesay
MAPMOVE回城图330330
SENDMSG6非会员禁止停留会员专属图,已送回主城。
非会员用普通传送进来立即被踢回。机器人和GM可用白名单IP或GM权限绕过,脚本里加CHECKGAMEMASTER判断。
3.会员图刷怪与掉物
MonGen.txt按会员图号写独立刷点,只给会员BOSS、会员材料;掉率用MonItems独立文件。非会员进不来,石头+入口双控后掉物不会被白嫖。
4.回城限制
会员图若不希望被普通回城石直接回主城再正常回会员图,可设回城返回点;若允许会员随时回,可在会员图NPC放“回主城/回会员图”双向石,非会员不显示选项。
六、开通会员与发石联动
会员NPC开通后自动发石。Market_Def“会员管理员-0.txt”:
[@main]
开通会员/openvip
领取会员传送石/getstone
续费会员/renewvip
[@openvip]
if
CHECKGAMEGOLD10
act
GAMEGOLD-10
ADDNAMEDATETIMELIST..\QuestDiary\会员\会员名单.txt30
MOVG8001
GIVE会员传送石1
SENDMSG6已开通30天会员并发放会员传送石。
elsesay
元宝不足或发石失败。
ADDNAMEDATETIMELIST参数按核心文档;有的写天数,有的写到期时间戳,有的用NPC命令直接开会员类型。Hero可用会员等级赋值代替名单:
[@openvip]
if
CHECKGAMEGOLD10
act
GAMEGOLD-10
SETHumInfo.CheckItemValue(-100)=1
GIVE会员传送石1
SENDMSG6已设为青铜会员并发石。
具体SET语法按Hero版本;不支持直接用变量赋值就走M2会员管理命令或名单文件。
续费用ADDNAMEDATETIMELIST叠加天数,用G变量就MOVG8001并保持原到期变量;不要名单和G变量两套都写却只校验其中一套。
七、机器人定时回收非会员
防止有人卡BUG进会员图,Robot_def定时跑:
AutoRunRobot.txt:
AutoRunNPCRUNONMINUTE5@KickNonMemberVIP
RobotManage.txt:
[@KickNonMemberVIP]
if
CHECKMEMBERTYPE1
act
SENDMSG6会员图检测正常。
elsesay
if
act
MAPMOVE回城图330330
SENDMSG6非会员在会员图已被传送回主城。
这段逻辑按核心调整:机器人脚本对全图遍历非会员需要用区域命令或M2“地图在线名单”接口;纯QFunction做不到全图扫描时,用MapEvent进入触发更稳,机器人只做兜底。
八、测试顺序
1.StdItems加会员传送石,DuraMax先设1000单次,避免反复扣持久干扰。
2.M2重载物品数据库,GM用制造命令造“会员传送石”1个,确认背包图标、双击有反应。
3.不配会员,双击应走#elsesay提示非会员;配错会员变量也应拒传。
4.用名单/CHECKMEMBERTYPE/Hero变量任一种把测试角色设为会员,再双击应MAPMOVE到会员图。
5.会员图MapEvent加非会员踢回,用非会员角色普通回城NPC强传进去验证被踢。
6.单次石DuraMax改1000,用完消失;计次石改50000,用50次后看持久归零;无限石改Stdmode=31Shape=51单独测,不和其他2类石混。
7.NPC版单独点选项,确认会员等级分段正确,黄金进黄金、钻石进钻石、至尊进至尊,低等级点高级图被拒。
九、常见不触发排错
双击石头没反应:Stdmode不是核心支持的触发类,或Anicount段名错。Stdmode=2要在QFunction写@StdmodeFunc+Anicount;Stdmode=31要写扩展特殊物品并启用,Shape=50单次、51常驻。段名写成@StdModeFunc101、@Stdmode_Func101都会不触发,严格按核心示例大小写。
点了扣物品但不传送:MAPMOVE图号不存在或坐标不可走。先用GM命令行MAPMOVE会员图号XY,能进再写脚本;图号在MapInfo确认,坐标用地图编辑器看可走点。
非会员也能传:脚本会员判断写错。CHECKMEMBERTYPE和CHECKNAMELIST不同核心命令名可能变;Hero用HumInfo.CheckItemValue(-100),GOM可能用CHECKMEMBERLEVEL,Blue用名单或自定义变量。先单独在NPC写“查会员状态”选项输出变量值,确认1/2/3再写石头。
传过去又被秒踢:MapEvent进入触发和石头传送互相冲突。石头MAPMOVE到出生点,MapEvent又在出生点范围1到3格检测非会员,非会员会被踢;会员若因变量未重载也会误踢。解决办法是石头落地坐标放在MapEvent检测范围外的安全验证点,或MapEvent只检测“非会员且非通过会员石进入”的白名单变量。
名单改了不生效:QFunction/QuestDiary缓存未重载。改完在GM命令行重载脚本、重载列表,退出重登再测。部分核心名单路径大小写、相对路径“..\QuestDiary\会员\会员名单.txt”必须和脚本一致。
使用次数不对:Stdmode=2的DuraMax按“持久/1000”使用次数计算,写50000是50次、1000是1次;若核心把DuraMax当持久点而非次数,需要改Stdmode或改脚本TAKE消耗。不要同时靠DuraMax扣次又TAKE物品,会双重消耗。
会员等级判断失效:Hero的-100只是常见示例,具体状态值编号按所用Hero文档;自搭系统用G800就要确保开通、登录、续费三处都MOV同一个变量,登录脚本QFunction[@Login]补一次校验,避免小退后变量丢失。
NPC不显示选项:Market_Def文件不是ANSI、Merchant.txt未注册、文件名“会员传送员-0”地图号0但NPC实际放其他图。先放比奇0图测试,确认主菜单能开再挪位置。
十、完整最小可跑示例
StdItems新增:
会员传送石;2;0;101;0;0;999;50000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;
QFunction-0.txt:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
CHECKMEMBERTYPE1
act
MAPMOVE50015050
SENDMSG6会员专属图已到达。
elsesay
非会员无法使用会员传送石。
MapInfo:
[5001会员专属]FIGHT
SAFE50505
MapEvent(核心支持时):
500150503@VIPMapGuard00ENTER
QFunction或MapEvent脚本文件:
[@VIPMapGuard]
if
CHECKMEMBERTYPE1
act
SENDMSG6会员地图驻留正常。
elsesay
MAPMOVE0330330
SENDMSG6非会员禁止进入会员专属图。
会员NPC:
[@getstone]
if
CHECKMEMBERTYPE1
act
GIVE会员传送石1
SENDMSG6已领取会员传送石。
elsesay
非会员不能领取。
按上面建物品、定会员、接QFunction、锁地图、做NPC四层做,双击石头和NPC点鸭能只让会员进;非会员即使用普通手段强传,也会被进入触发踢回。不同核心把CHECKMEMBERTYPE换成CHECKNAMELIST或HumInfo.CheckItemValue,把Stdmode=2换成31扩展物,把MapEvent换成QuestDiary进入段,整体逻辑不变。
一、StdItems建会员传送石
1.可重复使用的双击石(推荐)
参考随机传送石、各类回城石的Stdmode做法,传送卷常用Stdmode=2,Anicount作为触发ID,DuraMax按“持久/1000”算使用次数。新增一行示例思路:
名称:会员传送石
Stdmode:2
Shape:按版本,纯触发可写0或参照回城石Shape;若引擎要求双击卷走Anicount脚本,Shape不决定地图,只决定图标/子类
Anicount:101(自定义触发ID,后面QFunction写@StdmodeFunc101)
Source:0
Reserved:0
Looks:用客户端已有卷轴图标编号,例如参照比奇传送石Looks999仅作占位,实际按Item.wil资源改
DuraMax:想用50次写50000,100次写100000;无限使用可改Stdmode=31、Shape=51类扩展物品,但不同核心命令差异大,先按Stdmode=2测
Weight:10到20
Need:0
NeedLevel:0
Price:0或测试价
Bind:0不绑、1拾取绑、2穿戴绑;会员石建议1或2防倒卖
分号示意(仅按常见2类卷轴列常用字段,实际列数按StdItems.DB补):
会员传送石;2;0;101;0;0;999;50000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;
若你的库用Stdmode=31做“用一次触发脚本”、Anicount=触发ID,则一次消耗型写Shape=50,永久触发型写Shape=51,QFunction同样接@StdmodeFunc101。但部分旧核心对31类扩展支持不完整,会员石先用2类最稳。
2.单次消耗石
DuraMax写1000等于1次,用完自动消失;活动发石用这个,避免玩家囤石无限进会员图。若希望使用后不消失但计次,DuraMax按次数×1000设。
3.多等级会员石
做三把:黄金会员传送石Anicount=101、钻石会员传送石Anicount=102、至尊会员传送石Anicount=103。QFunction里分别判不同会员变量;物品名和Anicount一一对应,别混用。
二、会员身份先定型
传送石脚本前必须确定“怎么算会员”,否则石头点了都传或都不传。
方案A:名单文件判定
Envir\QuestDiary下建“会员\会员名单.txt”,每行一个角色名。脚本用:
CHECKNAMELIST..\QuestDiary\会员\会员名单.txt
或带有效期:
CHECKNAMEDATETIMELIST..\QuestDiary\会员\会员名单.txt1S1N1N2N3
1表示过期自动删记录,S1/N1等取剩余时间变量。非会员提示未授权。优点是不动数据库,GM手动加名字就能发会员;缺点是不自动到期时要机器人或登录脚本清理。
方案B:Hero会员等级变量
Hero可用:
EQUALHumInfo.CheckItemValue(-100)1
-100表示查会员等级,1是青铜、2白银、3黄金,具体等级数值按你!Setup.txt或会员系统定义。不同级别走不同地图:
EQUALHumInfo.CheckItemValue(-100)1→传黄金会员图
EQUALHumInfo.CheckItemValue(-100)2→传钻石会员图
方案C:M2原生会员命令
部分核心支持CHECKMEMBERTYPE、CHECKMEMBERLEVEL:
CHECKMEMBERTYPE1
CHECKMEMBERLEVEL>=1
CHECKMEMBERTYPE1表示普通会员类型,CHECKMEMBERLEVEL>=1表示会员等级达标。优先用原生命令,比自己维护名单省事。
方案D:G变量/个人变量标记
开通会员时写:
MOVG8001
石头脚本检测:
CHECK[800]1
G800仅作示例,0-799和个人变量、800-999全局变量划分按核心文档;用人物绑定变量要避免小退丢失,用G变量要注意同号多角色共享问题。适合自制会员系统,不和M2原生会员冲突时别混用两套,免得状态不同步。
三、QFunction双击触发传送
QFunction-0.txt加对应段。Anicount=101示例:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
CHECKMEMBERTYPE1
act
TAKE会员传送石0
MAPMOVE会员图号出生X出生Y
SENDMSG6会员传送石已使用,正在进入会员专属地图。
elsesay
仅会员可使用此石,非会员无法传送。
TAKE写0表示不消耗次数仅做触发测试;正式服按使用次数扣持久就不要TAKE物品,让DuraMax自然减,或者TAKE1做单次消耗石。若核心不支持CHECKMEMBERTYPE,替换成:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
CHECKNAMELIST..\QuestDiary\会员\会员名单.txt
act
MAPMOVE会员图号出生X出生Y
SENDMSG6会员地图传送成功。
elsesay
非会员或无会员传送石权限。
Hero替换会员判断:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)1
act
MAPMOVE会员图号出生X出生Y
SENDMSG6青铜及以上会员已传送。
elsesay
会员等级不足,无法使用传送石。
多图分级:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)3
act
MAPMOVE至尊会员图100100
elsesay
[@StdmodeFunc101_2]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)2
act
MAPMOVE钻石会员图100100
elsesay
[@StdmodeFunc101_3]
if
CHECKITEM会员传送石1
EQUALHumInfo.CheckItemValue(-100)1
act
MAPMOVE黄金会员图100100
elsesay
会员等级不足。
Stdmode=2物品双击后是否进QFunction,取决于核心“特殊物品/StdmodeFunc”开关;部分GOM/GEE要在M2特殊物品或功能脚本里启用Stdmode触发,Blue/Legend按Anicount进QFunction,Hero按StdmodeFunc段名。改完M2重载QFunction,不要用浏览器打开脚本改编码,文本保存ANSI,避免中文段名乱码不触发。
四、NPC版会员传送石(不依赖双击物品)
Market_Def建“会员传送员-0.txt”,脚本体:
[@main]
使用会员传送石说明/stonerule
黄金会员进图/gotojin
钻石会员进图/gotodiamond
至尊会员进图/gotozin
[@stonerule]
say
背包持有会员传送石仅作标识,点击对应会员等级进入专属图;非会员不传送。
[@gotojin]
if
CHECKMEMBERTYPE1
CHECKITEM会员传送石1
act
MAPMOVE黄金会员图100100
SENDMSG6已传送到黄金会员专属图。
elsesay
需要会员传送石且为对应会员。
[@gotodiamond]
if
CHECKMEMBERLEVEL>=2
CHECKITEM会员传送石1
act
MAPMOVE钻石会员图100100
SENDMSG6已传送到钻石会员专属图。
elsesay
钻石会员等级不足或未持石。
[@gotozin]
if
CHECKMEMBERLEVEL>=3
CHECKITEM会员传送石1
act
MAPMOVE至尊会员图100100
SENDMSG6已传送到至尊会员专属图。
elsesay
至尊会员等级不足或未持石。
名单版把CHECKMEMBERTYPE/CHECKMEMBERLEVEL换成CHECKNAMELIST对应文件。NPC好处是排错简单,玩家点选项就能看提示;坏处不是“背包双击石头”的体验。想兼得就NPC和QFunction都用同一套会员判断。
五、会员地图与入口防绕
只做石头不锁地图,玩家可用普通回城石、其他NPC、机器人命令绕进去,会员石就没意义。
1.MapInfo加参数
会员图行按核心加进入限制参数,例如部分核心支持CHECKQUEST、NEEDSET、会员参数;没有原生会员参数的用“进入触发脚本”代替。示例MapInfo只写普通图:
[会员图号会员专属]FIGHT
SAFE出生X出生Y范围
进入限制放QFunction或MapEvent。
2.MapEvent坐标触发
部分核心Envir下MapEvent.txt绑定入口,格式近似“地图号XY范围触发标识冷却机率事件类型”,脚本段做会员判断。示例思路:
会员图号出生X出生Y3@MemberEnterCheck00ENTER
QFunction或对应事件文件:
[@MemberEnterCheck]
if
CHECKMEMBERTYPE1
act
SENDMSG6会员验证通过,欢迎进入。
elsesay
MAPMOVE回城图330330
SENDMSG6非会员禁止停留会员专属图,已送回主城。
非会员用普通传送进来立即被踢回。机器人和GM可用白名单IP或GM权限绕过,脚本里加CHECKGAMEMASTER判断。
3.会员图刷怪与掉物
MonGen.txt按会员图号写独立刷点,只给会员BOSS、会员材料;掉率用MonItems独立文件。非会员进不来,石头+入口双控后掉物不会被白嫖。
4.回城限制
会员图若不希望被普通回城石直接回主城再正常回会员图,可设回城返回点;若允许会员随时回,可在会员图NPC放“回主城/回会员图”双向石,非会员不显示选项。
六、开通会员与发石联动
会员NPC开通后自动发石。Market_Def“会员管理员-0.txt”:
[@main]
开通会员/openvip
领取会员传送石/getstone
续费会员/renewvip
[@openvip]
if
CHECKGAMEGOLD10
act
GAMEGOLD-10
ADDNAMEDATETIMELIST..\QuestDiary\会员\会员名单.txt30
MOVG8001
GIVE会员传送石1
SENDMSG6已开通30天会员并发放会员传送石。
elsesay
元宝不足或发石失败。
ADDNAMEDATETIMELIST参数按核心文档;有的写天数,有的写到期时间戳,有的用NPC命令直接开会员类型。Hero可用会员等级赋值代替名单:
[@openvip]
if
CHECKGAMEGOLD10
act
GAMEGOLD-10
SETHumInfo.CheckItemValue(-100)=1
GIVE会员传送石1
SENDMSG6已设为青铜会员并发石。
具体SET语法按Hero版本;不支持直接用变量赋值就走M2会员管理命令或名单文件。
续费用ADDNAMEDATETIMELIST叠加天数,用G变量就MOVG8001并保持原到期变量;不要名单和G变量两套都写却只校验其中一套。
七、机器人定时回收非会员
防止有人卡BUG进会员图,Robot_def定时跑:
AutoRunRobot.txt:
AutoRunNPCRUNONMINUTE5@KickNonMemberVIP
RobotManage.txt:
[@KickNonMemberVIP]
if
CHECKMEMBERTYPE1
act
SENDMSG6会员图检测正常。
elsesay
if
act
MAPMOVE回城图330330
SENDMSG6非会员在会员图已被传送回主城。
这段逻辑按核心调整:机器人脚本对全图遍历非会员需要用区域命令或M2“地图在线名单”接口;纯QFunction做不到全图扫描时,用MapEvent进入触发更稳,机器人只做兜底。
八、测试顺序
1.StdItems加会员传送石,DuraMax先设1000单次,避免反复扣持久干扰。
2.M2重载物品数据库,GM用制造命令造“会员传送石”1个,确认背包图标、双击有反应。
3.不配会员,双击应走#elsesay提示非会员;配错会员变量也应拒传。
4.用名单/CHECKMEMBERTYPE/Hero变量任一种把测试角色设为会员,再双击应MAPMOVE到会员图。
5.会员图MapEvent加非会员踢回,用非会员角色普通回城NPC强传进去验证被踢。
6.单次石DuraMax改1000,用完消失;计次石改50000,用50次后看持久归零;无限石改Stdmode=31Shape=51单独测,不和其他2类石混。
7.NPC版单独点选项,确认会员等级分段正确,黄金进黄金、钻石进钻石、至尊进至尊,低等级点高级图被拒。
九、常见不触发排错
双击石头没反应:Stdmode不是核心支持的触发类,或Anicount段名错。Stdmode=2要在QFunction写@StdmodeFunc+Anicount;Stdmode=31要写扩展特殊物品并启用,Shape=50单次、51常驻。段名写成@StdModeFunc101、@Stdmode_Func101都会不触发,严格按核心示例大小写。
点了扣物品但不传送:MAPMOVE图号不存在或坐标不可走。先用GM命令行MAPMOVE会员图号XY,能进再写脚本;图号在MapInfo确认,坐标用地图编辑器看可走点。
非会员也能传:脚本会员判断写错。CHECKMEMBERTYPE和CHECKNAMELIST不同核心命令名可能变;Hero用HumInfo.CheckItemValue(-100),GOM可能用CHECKMEMBERLEVEL,Blue用名单或自定义变量。先单独在NPC写“查会员状态”选项输出变量值,确认1/2/3再写石头。
传过去又被秒踢:MapEvent进入触发和石头传送互相冲突。石头MAPMOVE到出生点,MapEvent又在出生点范围1到3格检测非会员,非会员会被踢;会员若因变量未重载也会误踢。解决办法是石头落地坐标放在MapEvent检测范围外的安全验证点,或MapEvent只检测“非会员且非通过会员石进入”的白名单变量。
名单改了不生效:QFunction/QuestDiary缓存未重载。改完在GM命令行重载脚本、重载列表,退出重登再测。部分核心名单路径大小写、相对路径“..\QuestDiary\会员\会员名单.txt”必须和脚本一致。
使用次数不对:Stdmode=2的DuraMax按“持久/1000”使用次数计算,写50000是50次、1000是1次;若核心把DuraMax当持久点而非次数,需要改Stdmode或改脚本TAKE消耗。不要同时靠DuraMax扣次又TAKE物品,会双重消耗。
会员等级判断失效:Hero的-100只是常见示例,具体状态值编号按所用Hero文档;自搭系统用G800就要确保开通、登录、续费三处都MOV同一个变量,登录脚本QFunction[@Login]补一次校验,避免小退后变量丢失。
NPC不显示选项:Market_Def文件不是ANSI、Merchant.txt未注册、文件名“会员传送员-0”地图号0但NPC实际放其他图。先放比奇0图测试,确认主菜单能开再挪位置。
十、完整最小可跑示例
StdItems新增:
会员传送石;2;0;101;0;0;999;50000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;
QFunction-0.txt:
[@StdmodeFunc101]
if
CHECKITEM会员传送石1
CHECKMEMBERTYPE1
act
MAPMOVE50015050
SENDMSG6会员专属图已到达。
elsesay
非会员无法使用会员传送石。
MapInfo:
[5001会员专属]FIGHT
SAFE50505
MapEvent(核心支持时):
500150503@VIPMapGuard00ENTER
QFunction或MapEvent脚本文件:
[@VIPMapGuard]
if
CHECKMEMBERTYPE1
act
SENDMSG6会员地图驻留正常。
elsesay
MAPMOVE0330330
SENDMSG6非会员禁止进入会员专属图。
会员NPC:
[@getstone]
if
CHECKMEMBERTYPE1
act
GIVE会员传送石1
SENDMSG6已领取会员传送石。
elsesay
非会员不能领取。
按上面建物品、定会员、接QFunction、锁地图、做NPC四层做,双击石头和NPC点鸭能只让会员进;非会员即使用普通手段强传,也会被进入触发踢回。不同核心把CHECKMEMBERTYPE换成CHECKNAMELIST或HumInfo.CheckItemValue,把Stdmode=2换成31扩展物,把MapEvent换成QuestDiary进入段,整体逻辑不变。

