会员专用传送石分双击使用型和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:用客户端已有卷轴图标编号,例如参照比奇传送石Looks 999仅作占位,实际按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\会员\会员名单.txt 1 S1 N1 N2 N3
1表示过期自动删记录,S1/N1等取剩余时间变量 。非会员提示未授权。优点是不动数据库,GM手动加名字就能发会员;缺点是不自动到期时要机器人或登录脚本清理。
方案B:Hero会员等级变量
Hero可用:
EQUAL HumInfo.CheckItemValue(-100) 1
-100表示查会员等级,1是青铜、2白银、3黄金,具体等级数值按你!Setup.txt或会员系统定义 。不同级别走不同地图:
EQUAL HumInfo.CheckItemValue(-100) 1 → 传黄金会员图
EQUAL HumInfo.CheckItemValue(-100) 2 → 传钻石会员图
方案C:M2原生会员命令
部分核心支持CHECKMEMBERTYPE、CHECKMEMBERLEVEL:
CHECKMEMBERTYPE 1
CHECKMEMBERLEVEL >= 1
CHECKMEMBERTYPE 1表示普通会员类型,CHECKMEMBERLEVEL >=1表示会员等级达标 。优先用原生命令,比自己维护名单省事。
方案D:G变量/个人变量标记
开通会员时写:
MOV G800 1
石头脚本检测:
CHECK [800] 1
G800仅作示例,0-799和个人变量、800-999全局变量划分按核心文档;用人物绑定变量要避免小退丢失,用G变量要注意同号多角色共享问题 。适合自制会员系统,不和M2原生会员冲突时别混用两套,免得状态不同步。
三、QFunction双击触发传送
QFunction-0.txt加对应段。Anicount=101示例:
[@StdmodeFunc101]
if
CHECKITEM 会员传送石 1
CHECKMEMBERTYPE 1
act
TAKE 会员传送石 0
MAPMOVE 会员图号 出生X 出生Y
SENDMSG 6 会员传送石已使用,正在进入会员专属地图。
elsesay
仅会员可使用此石,非会员无法传送。
TAKE写0表示不消耗次数仅做触发测试;正式服按使用次数扣持久就不要TAKE物品,让DuraMax自然减,或者TAKE 1做单次消耗石。若核心不支持CHECKMEMBERTYPE,替换成:
[@StdmodeFunc101]
if
CHECKITEM 会员传送石 1
CHECKNAMELIST ..\QuestDiary\会员\会员名单.txt
act
MAPMOVE 会员图号 出生X 出生Y
SENDMSG 6 会员地图传送成功。
elsesay
非会员或无会员传送石权限。
Hero替换会员判断:
[@StdmodeFunc101]
if
CHECKITEM 会员传送石 1
EQUAL HumInfo.CheckItemValue(-100) 1
act
MAPMOVE 会员图号 出生X 出生Y
SENDMSG 6 青铜及以上会员已传送。
elsesay
会员等级不足,无法使用传送石。
多图分级:
[@StdmodeFunc101]
if
CHECKITEM 会员传送石 1
EQUAL HumInfo.CheckItemValue(-100) 3
act
MAPMOVE 至尊会员图 100 100
elsesay
[@StdmodeFunc101_2]
if
CHECKITEM 会员传送石 1
EQUAL HumInfo.CheckItemValue(-100) 2
act
MAPMOVE 钻石会员图 100 100
elsesay
[@StdmodeFunc101_3]
if
CHECKITEM 会员传送石 1
EQUAL HumInfo.CheckItemValue(-100) 1
act
MAPMOVE 黄金会员图 100 100
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
CHECKMEMBERTYPE 1
CHECKITEM 会员传送石 1
act
MAPMOVE 黄金会员图 100 100
SENDMSG 6 已传送到黄金会员专属图。
elsesay
需要会员传送石且为对应会员。
[@gotodiamond]
if
CHECKMEMBERLEVEL >= 2
CHECKITEM 会员传送石 1
act
MAPMOVE 钻石会员图 100 100
SENDMSG 6 已传送到钻石会员专属图。
elsesay
钻石会员等级不足或未持石。
[@gotozin]
if
CHECKMEMBERLEVEL >= 3
CHECKITEM 会员传送石 1
act
MAPMOVE 至尊会员图 100 100
SENDMSG 6 已传送到至尊会员专属图。
elsesay
至尊会员等级不足或未持石。
名单版把CHECKMEMBERTYPE/CHECKMEMBERLEVEL换成CHECKNAMELIST对应文件。NPC好处是排错简单,玩家点选项就能看提示;坏处不是“背包双击石头”的体验。想兼得就NPC和QFunction都用同一套会员判断。
五、会员地图与入口防绕
只做石头不锁地图,玩家可用普通回城石、其他NPC、机器人命令绕进去,会员石就没意义。
1. MapInfo加参数
会员图行按核心加进入限制参数,例如部分核心支持CHECKQUEST、NEEDSET、会员参数;没有原生会员参数的用“进入触发脚本”代替。示例MapInfo只写普通图:
[会员图号 会员专属] FIGHT
SAFE 出生X 出生Y 范围
进入限制放QFunction或MapEvent。
2. MapEvent坐标触发
部分核心Envir下MapEvent.txt绑定入口,格式近似“地图号 X Y 范围 触发标识 冷却 机率 事件类型”,脚本段做会员判断 。示例思路:
会员图号 出生X 出生Y 3 @MemberEnterCheck 0 0 ENTER
QFunction或对应事件文件:
[@MemberEnterCheck]
if
CHECKMEMBERTYPE 1
act
SENDMSG 6 会员验证通过,欢迎进入。
elsesay
MAPMOVE 回城图 330 330
SENDMSG 6 非会员禁止停留会员专属图,已送回主城。
非会员用普通传送进来立即被踢回。机器人和GM可用白名单IP或GM权限绕过,脚本里加CHECKGAMEMASTER判断。
3. 会员图刷怪与掉物
MonGen.txt按会员图号写独立刷点,只给会员BOSS、会员材料;掉率用MonItems独立文件。非会员进不来,石头+入口双控后掉物不会被白嫖。
4. 回城限制
会员图若不希望被普通回城石直接回主城再正常回会员图,可设回城返回点;若允许会员随时回,可在会员图NPC放“回主城/回会员图”双向石,非会员不显示选项。
六、开通会员与发石联动
会员NPC开通后自动发石。Market_Def“会员管理员-0.txt”:
[@main]
开通会员/openvip
领取会员传送石/getstone
续费会员/renewvip
[@openvip]
if
CHECKGAMEGOLD 10
act
GAMEGOLD - 10
ADDNAMEDATETIMELIST ..\QuestDiary\会员\会员名单.txt 30
MOV G800 1
GIVE 会员传送石 1
SENDMSG 6 已开通30天会员并发放会员传送石。
elsesay
元宝不足或发石失败。
ADDNAMEDATETIMELIST参数按核心文档;有的写天数,有的写到期时间戳,有的用NPC命令直接开会员类型。Hero可用会员等级赋值代替名单:
[@openvip]
if
CHECKGAMEGOLD 10
act
GAMEGOLD - 10
SET HumInfo.CheckItemValue(-100)=1
GIVE 会员传送石 1
SENDMSG 6 已设为青铜会员并发石。
具体SET语法按Hero版本;不支持直接用变量赋值就走M2会员管理命令或名单文件。
续费用ADDNAMEDATETIMELIST叠加天数,用G变量就MOV G800 1并保持原到期变量;不要名单和G变量两套都写却只校验其中一套。
七、机器人定时回收非会员
防止有人卡BUG进会员图,Robot_def定时跑:
AutoRunRobot.txt:
AutoRun NPC RUNONMINUTE 5 @KickNonMemberVIP
RobotManage.txt:
[@KickNonMemberVIP]
if
CHECKMEMBERTYPE 1
act
SENDMSG 6 会员图检测正常。
elsesay
if
act
MAPMOVE 回城图 330 330
SENDMSG 6 非会员在会员图已被传送回主城。
这段逻辑按核心调整:机器人脚本对全图遍历非会员需要用区域命令或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=31 Shape=51单独测,不和其他2类石混。
7. NPC版单独点选项,确认会员等级分段正确,黄金进黄金、钻石进钻石、至尊进至尊,低等级点高级图被拒。
九、常见不触发排错
双击石头没反应:Stdmode不是核心支持的触发类,或Anicount段名错。Stdmode=2要在QFunction写@StdmodeFunc+Anicount;Stdmode=31要写扩展特殊物品并启用,Shape=50单次、51常驻 。段名写成@StdModeFunc101、@Stdmode_Func101都会不触发,严格按核心示例大小写。
点了扣物品但不传送:MAPMOVE图号不存在或坐标不可走。先用GM命令行MAPMOVE会员图号 X Y,能进再写脚本;图号在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
CHECKMEMBERTYPE 1
act
MAPMOVE 5001 50 50
SENDMSG 6 会员专属图已到达。
elsesay
非会员无法使用会员传送石。
MapInfo:
[5001 会员专属] FIGHT
SAFE 50 50 5
MapEvent(核心支持时):
5001 50 50 3 @VIPMapGuard 0 0 ENTER
QFunction或MapEvent脚本文件:
[@VIPMapGuard]
if
CHECKMEMBERTYPE 1
act
SENDMSG 6 会员地图驻留正常。
elsesay
MAPMOVE 0 330 330
SENDMSG 6 非会员禁止进入会员专属图。
会员NPC:
[@getstone]
if
CHECKMEMBERTYPE 1
act
GIVE 会员传送石 1
SENDMSG 6 已领取会员传送石。
elsesay
非会员不能领取。
按上面建物品、定会员、接QFunction、锁地图、做NPC四层做,双击石头和NPC点选都能只让会员进;非会员即使用普通手段强传,也会被进入触发踢回。不同核心把CHECKMEMBERTYPE换成CHECKNAMELIST或HumInfo.CheckItemValue,把Stdmode=2换成31扩展物,把MapEvent换成QuestDiary进入段,整体逻辑不变。
传奇会员专属传送石添加全套:StdItems建石QFunction双击触发MapMove会员名单地图防绕
来源:
作者:
点击:

