传奇会员专属传送石添加全套:StdItems建石QFunction双击触发MapMove会员名单地图防绕

来源: 作者: 点击:
会员专用传送石分双击使用型和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进入段,整体逻辑不变。