一、前置条件
GM账号已加入M2→列表信息→管理员列表(或Mir200\Envir\AdminList.txt/GMList.txt),权限等级设到最高(一般10),重登录生效。
物品名必须与Mir200\Envir\StdItems.txt里的Name字段完全一致,“屠龙刀”和“屠龙”不是同一个东西,写错不刷。
脚本文件一律ANSI编码,放Mir200\Envir\Market_Def\或QuestDiary\下,改完@ReloadNpc或M2重载管理脚本。
二、NPC脚本里给“当前对话玩家”发装备/收装备(最常用)
Market_Def\GM发放员-3.txt(盟重土城地图号3):
[@main]
SAY
GM专用面板:\
<给自身屠龙/@giveme>\
<收回自身屠龙/@takeme>\
<给战士套装/@warsuit>\
<脱下身上屠龙/@takewear>\
<关闭/@exit>
[@giveme]
if
act
GIVE屠龙1
SENDMSG6已发放:屠龙x1
CLOSE
[@takeme]
if
CHECKITEM屠龙1
act
TAKE屠龙1
SENDMSG6已收回背包内:屠龙x1
elsesay
背包里没有屠龙。
[@warsuit]
if
CHECKJOBWarrior
act
GIVE屠龙1
GIVE战神盔甲(男)1
GIVE力量戒指1
GIVE骑士手镯1
GIVE绿色项链1
SENDMSG6战士套装已发放
elsesay
非战士职业,无法领取。
[@takewear]
if
act
TAKEW屠龙1
SENDMSG6已脱下并收回身上穿戴的屠龙
CLOSE
[@exit]
say
慢走。
命令区分:
•GIVE物品数量→进背包
-TAKE物品数量→只扣背包内,不扣身上穿的
•TAKEW物品数量→只卸身上穿戴栏的装备
•CHECKITEM→判背包;CHECKUSEITEM位置号→判身上某槽位是否穿着
三、游戏内直接敲的GM在线命令(针对自己或指定玩家)
通用Mir/GOM/Hero/LegendM2体系:
@Give角色名物品名数量
例:@Give张三屠龙1→给在线玩家“张三”发屠龙
@GiveItem物品名数量角色名
例:@GiveItem圣战头盔1张三
@Make角色名物品ID数量
例:@Make张三10011(1001为StdItems.txt里物品ID)
@TakeUserItem角色名物品名数量→没收指定玩家背包物品
对自己用把角色名换成自己/SELF或不填角色名。
Command.ini里这些命令前缀可被服务端改写,以你版本实际为准。
四、GMNPC输入“玩家名+物品名+数量”跨人在线发放(高级)
适合GM地图专属NPC,流程:弹框输物品名→输数量→输目标角色名→校验在线→跨人发/收。
1)MerChant.txt加GM地图NPC(假设GM地图号9999):
GM操作台99992020GM操作台015000
2)Market_Def\GM操作台-9999.txt:
[@main]
SAY
在线给/拿玩家装备:\
<给指定玩家物品/@senditem>\
<拿指定玩家物品/@takeitem>\
<关闭/@exit>
[@senditem]
@@InPutString1
@@InPutInteger2
@@InPutString3
;Hero端回调段名CallInPutString/CallInPutInteger,3K端去掉Call,下面按Hero写
[@CallInPutString1]
SAY
物品名已记录:S1\
<继续输数量/@nextnum>
[@nextnum]
@@InPutInteger2
[@CallInPutInteger2]
SAY
数量已记录:N2\
<输目标玩家名/@nextname>
[@nextname]
@@InPutString3
[@CallInPutString3]
if
CHECKONLINE$STR(S3)
act
CALCVARGLOBALZ12=$STR(S1)
CALCVARGLOBALZ13=$STR(N2)
SAVEVARGLOBALZ12..\QuestDiary\数据文件\ZSave.txt
SAVEVARGLOBALZ13..\QuestDiary\数据文件\ZSave.txt
HCALL$STR(S3)@给与物品
SENDMSG7已向玩家<$STR(S3)>发送S1xN2
GOTO@main
elsesay
目标玩家不在线。
[@takeitem]
@@InPutString4
@@InPutString5
[@CallInPutString4]
SAY
要收回的物品名:S4\
<输目标玩家名/@takename>
[@takename]
@@InPutString5
[@CallInPutString5]
if
CHECKONLINE$STR(S5)
act
CALCVARGLOBALZ11=$STR(S4)
SAVEVARGLOBALZ11..\QuestDiary\数据文件\ZSave.txt
HCALL$STR(S5)@拿走物品
SENDMSG7已向玩家<$STR(S5)>收回S4
GOTO@main
elsesay
目标玩家不在线。
[@exit]
say
结束。
3)QManage.txt里写实际执行段(被HCALL调起时在目标玩家上下文执行):
[@给与物品]
ACT
GIVEGLOBAL(Z12)GLOBAL(Z13)
MESSAGEBOX收到来自[GM]发送的物品:S12数量:S13
SENDMSG7收到GM发放物品
BREAK
[@拿走物品]
ACT
TAKE$GLOBAL(Z11)1
TAKEW$GLOBAL(Z11)1
MESSAGEBOX你的物品:S11已被[GM]强制收取
SENDMSG7物品被GM收回
BREAK
要点:HCALL目标角色名@标签→后续GIVE/TAKE在对方身上执行;Z11/Z12/Z13用QuestDiary\数据文件\ZSave.txt做全局变量中转;HCALL不支持的引擎改用GIVEITEM/TAKEITEM配合角色ID写法:
GIVEITEM角色名物品名数量
TAKEITEM角色名物品名数量
例:GIVEITEM张三屠龙1/TAKEITEM张三屠龙1
五、批量套装发放片段
[@givefullset]
if
act
GIVE屠龙1
GIVE战神盔甲(男)1
GIVE力量戒指2
GIVE骑士手镯2
GIVE绿色项链1
GIVE战神头盔1
GIVE战神靴1
GIVE烈火剑法1
SENDMSG6全套战士装备已发放
CLOSE
六、强制清包/清身(罚没场景)
[@clearall]
if
act
TAKE屠龙1
TAKE裁决之杖1
TAKEW屠龙1
TAKEW裁决之杖1
;要清更多逐行加TAKE/TAKEW
SENDMSG7违规物品已回收
CLOSE
七、常见不生效原因
•物品名和StdItems.txt不一致→GIVE无反应、GM命令提示物品不存在
•TAKE收不到身上穿的→忘了用TAKEW,TAKE只认背包
•HCALL不触发→目标不在线、角色名拼错、QManage.txt没加载、变量文件目录不存在
•脚本UTF-8→中文全乱码,改ANSI
•GM敲命令没反应→权限不够、Command.ini改了前缀、没重载管理员列表
•跨人发完对方看不到→没走HCALL/GIVEITEM,只在GM自己上下文GIVE了
GM在线发装备核心就三组:NPC里GIVE/TAKE/TAKEW管当前玩家;聊天框@Give/@Make/@TakeUserItem管指定角色;跨人在线发收用HCALL+QManage回调段或GIVEITEM/TAKEITEM,物品名对齐StdItems.txt就不会偏。
GM账号已加入M2→列表信息→管理员列表(或Mir200\Envir\AdminList.txt/GMList.txt),权限等级设到最高(一般10),重登录生效。
物品名必须与Mir200\Envir\StdItems.txt里的Name字段完全一致,“屠龙刀”和“屠龙”不是同一个东西,写错不刷。
脚本文件一律ANSI编码,放Mir200\Envir\Market_Def\或QuestDiary\下,改完@ReloadNpc或M2重载管理脚本。
二、NPC脚本里给“当前对话玩家”发装备/收装备(最常用)
Market_Def\GM发放员-3.txt(盟重土城地图号3):
[@main]
SAY
GM专用面板:\
<给自身屠龙/@giveme>\
<收回自身屠龙/@takeme>\
<给战士套装/@warsuit>\
<脱下身上屠龙/@takewear>\
<关闭/@exit>
[@giveme]
if
act
GIVE屠龙1
SENDMSG6已发放:屠龙x1
CLOSE
[@takeme]
if
CHECKITEM屠龙1
act
TAKE屠龙1
SENDMSG6已收回背包内:屠龙x1
elsesay
背包里没有屠龙。
[@warsuit]
if
CHECKJOBWarrior
act
GIVE屠龙1
GIVE战神盔甲(男)1
GIVE力量戒指1
GIVE骑士手镯1
GIVE绿色项链1
SENDMSG6战士套装已发放
elsesay
非战士职业,无法领取。
[@takewear]
if
act
TAKEW屠龙1
SENDMSG6已脱下并收回身上穿戴的屠龙
CLOSE
[@exit]
say
慢走。
命令区分:
•GIVE物品数量→进背包
-TAKE物品数量→只扣背包内,不扣身上穿的
•TAKEW物品数量→只卸身上穿戴栏的装备
•CHECKITEM→判背包;CHECKUSEITEM位置号→判身上某槽位是否穿着
三、游戏内直接敲的GM在线命令(针对自己或指定玩家)
通用Mir/GOM/Hero/LegendM2体系:
@Give角色名物品名数量
例:@Give张三屠龙1→给在线玩家“张三”发屠龙
@GiveItem物品名数量角色名
例:@GiveItem圣战头盔1张三
@Make角色名物品ID数量
例:@Make张三10011(1001为StdItems.txt里物品ID)
@TakeUserItem角色名物品名数量→没收指定玩家背包物品
对自己用把角色名换成自己/SELF或不填角色名。
Command.ini里这些命令前缀可被服务端改写,以你版本实际为准。
四、GMNPC输入“玩家名+物品名+数量”跨人在线发放(高级)
适合GM地图专属NPC,流程:弹框输物品名→输数量→输目标角色名→校验在线→跨人发/收。
1)MerChant.txt加GM地图NPC(假设GM地图号9999):
GM操作台99992020GM操作台015000
2)Market_Def\GM操作台-9999.txt:
[@main]
SAY
在线给/拿玩家装备:\
<给指定玩家物品/@senditem>\
<拿指定玩家物品/@takeitem>\
<关闭/@exit>
[@senditem]
@@InPutString1
@@InPutInteger2
@@InPutString3
;Hero端回调段名CallInPutString/CallInPutInteger,3K端去掉Call,下面按Hero写
[@CallInPutString1]
SAY
物品名已记录:S1\
<继续输数量/@nextnum>
[@nextnum]
@@InPutInteger2
[@CallInPutInteger2]
SAY
数量已记录:N2\
<输目标玩家名/@nextname>
[@nextname]
@@InPutString3
[@CallInPutString3]
if
CHECKONLINE$STR(S3)
act
CALCVARGLOBALZ12=$STR(S1)
CALCVARGLOBALZ13=$STR(N2)
SAVEVARGLOBALZ12..\QuestDiary\数据文件\ZSave.txt
SAVEVARGLOBALZ13..\QuestDiary\数据文件\ZSave.txt
HCALL$STR(S3)@给与物品
SENDMSG7已向玩家<$STR(S3)>发送S1xN2
GOTO@main
elsesay
目标玩家不在线。
[@takeitem]
@@InPutString4
@@InPutString5
[@CallInPutString4]
SAY
要收回的物品名:S4\
<输目标玩家名/@takename>
[@takename]
@@InPutString5
[@CallInPutString5]
if
CHECKONLINE$STR(S5)
act
CALCVARGLOBALZ11=$STR(S4)
SAVEVARGLOBALZ11..\QuestDiary\数据文件\ZSave.txt
HCALL$STR(S5)@拿走物品
SENDMSG7已向玩家<$STR(S5)>收回S4
GOTO@main
elsesay
目标玩家不在线。
[@exit]
say
结束。
3)QManage.txt里写实际执行段(被HCALL调起时在目标玩家上下文执行):
[@给与物品]
ACT
GIVEGLOBAL(Z12)GLOBAL(Z13)
MESSAGEBOX收到来自[GM]发送的物品:S12数量:S13
SENDMSG7收到GM发放物品
BREAK
[@拿走物品]
ACT
TAKE$GLOBAL(Z11)1
TAKEW$GLOBAL(Z11)1
MESSAGEBOX你的物品:S11已被[GM]强制收取
SENDMSG7物品被GM收回
BREAK
要点:HCALL目标角色名@标签→后续GIVE/TAKE在对方身上执行;Z11/Z12/Z13用QuestDiary\数据文件\ZSave.txt做全局变量中转;HCALL不支持的引擎改用GIVEITEM/TAKEITEM配合角色ID写法:
GIVEITEM角色名物品名数量
TAKEITEM角色名物品名数量
例:GIVEITEM张三屠龙1/TAKEITEM张三屠龙1
五、批量套装发放片段
[@givefullset]
if
act
GIVE屠龙1
GIVE战神盔甲(男)1
GIVE力量戒指2
GIVE骑士手镯2
GIVE绿色项链1
GIVE战神头盔1
GIVE战神靴1
GIVE烈火剑法1
SENDMSG6全套战士装备已发放
CLOSE
六、强制清包/清身(罚没场景)
[@clearall]
if
act
TAKE屠龙1
TAKE裁决之杖1
TAKEW屠龙1
TAKEW裁决之杖1
;要清更多逐行加TAKE/TAKEW
SENDMSG7违规物品已回收
CLOSE
七、常见不生效原因
•物品名和StdItems.txt不一致→GIVE无反应、GM命令提示物品不存在
•TAKE收不到身上穿的→忘了用TAKEW,TAKE只认背包
•HCALL不触发→目标不在线、角色名拼错、QManage.txt没加载、变量文件目录不存在
•脚本UTF-8→中文全乱码,改ANSI
•GM敲命令没反应→权限不够、Command.ini改了前缀、没重载管理员列表
•跨人发完对方看不到→没走HCALL/GIVEITEM,只在GM自己上下文GIVE了
GM在线发装备核心就三组:NPC里GIVE/TAKE/TAKEW管当前玩家;聊天框@Give/@Make/@TakeUserItem管指定角色;跨人在线发收用HCALL+QManage回调段或GIVEITEM/TAKEITEM,物品名对齐StdItems.txt就不会偏。

