脚本实现原理:自定义命令绑定
你要的“按一个键子直接收人”功能,本质是将自定义聊天框命令(如 @加入行会)与行会加入脚本绑定。玩家输入指令,触发 QFunction-0.txt 中的脚本段,执行 AddGuildMember 命令自动入会,无需会长审批。
方案一:基础一键入会脚本(GOM/GEE引擎)
此方案适合“点击按钮或输入指令直接加入固定行会”。
1. 修改游戏命令列表
首先在 M2Server 中注册自定义命令,让引擎识别 @加入行会:
- 打开 M2 → 选项 → 游戏命令 → 用户命令。
• 在列表中添加一行:
- 命令:加入行会
◦ 权限:0(普通玩家可用)
◦ 参数:0
◦ 脚本标识:加入行会(必须与QFunction-0中的标签名一致)
2. 编写触发脚本(QFunction-0.txt)
在 D:\MirServer\Mir200\Envir\MapQuest_def\QFunction-0.txt 中添加以下脚本段:
[@加入行会]
#IF
!HAVEGUILD ; 检测是否已加入行会(!表示未加入)
CheckLevel > 0 ; 检测等级大于0(防止0级小号)
#ACT
AddGuildMember 天下第一会 <$USERNAME> ; 将玩家加入“天下第一会”行会
SendMsg 6 提示:你已成功加入【天下第一会】!
Break
#ELSEACT
SendMsg 6 错误:你已加入其他行会,无法重复加入!
Break
命令说明:
• AddGuildMember:核心加会命令。天下第一会 需替换为你的目标行会名(必须与服务端行会列表完全一致)。
- <$USERNAME>:系统变量,自动替换为当前玩家的角色名。
方案二:NPC按钮式一键收人
如果你希望玩家通过点击NPC对话框按钮加入,可使用以下NPC脚本(保存为 行会招募-3.txt):
[@main]
#if
#act
OPENMERCHANTBIGDLG 1 28 1 4 20 -60 1
#say
<ImgEx:0:1823:1824:1825:340:-15/@exit>
\ \
★━━━━★ ※ 行会自助招人系统 ※ \ \
┃行 ■ 招┃ ╔┄┄┄┄┄┄┄┄┄╗\ \
┃ ■募■ ┃ ┆ <一键加入/@加入> ┆\ \
┃会 ■ 板┃ ╚┄┄┄┄┄┄┄┄┄╝\ \
★━━━━★ \ \
[@加入]
#if
!HAVEGUILD
CheckLevel > 10 ; 限制等级需大于10级
#act
AddGuildMember 测试行会 <$USERNAME>
MessageBox 恭喜你加入【测试行会】!
Close
#elseact
MessageBox 加入失败:你已加入行会或等级不足!
方案三:会长一键收人脚本(自动收目标)
若你是会长,需要将鼠标选中的目标玩家直接收入行会,需使用 ADDTOGUILD 命令配合检测:
[@一键收人]
#if
ISGUILDMASTER ; 检测是否为会长
TARGET.ISONLINE ; 检测是否有选中目标
TARGET.!HAVEGUILD ; 检测目标是否无行会
#act
ADDTOGUILD <$GUILDNAME> <$TARGETNAME> ; 将目标加入自己行会
SendMsg 6 提示:已将玩家【<$TARGETNAME>】收入行会!
#elseact
SendMsg 6 错误:目标玩家不在线、已有行会或你不是会长!
使用方式:会长选中目标玩家(鼠标点选),在聊天框输入 @一键收人 即可。
常见问题与排查
1. 提示“未知命令”:检查 M2 的“用户命令”列表是否添加了“加入行会”,且“脚本标识”与 QFunction-0.txt 中的 [@加入行会] 标签名完全一致。
2. 提示“行会不存在”:AddGuildMember 命令中的行会名称必须与服务端行会列表(GuildDB.db)中的名称完全一致(包括空格和符号)。
3. 权限不足:若使用会长收人脚本,需确保当前角色在行会职位为“会长”(GuildRank=0)。
4. 脚本不生效:修改 QFunction-0.txt 后,必须在 M2 点击“控制” → “重新加载” → “QF脚本”才能生效。
推荐使用方案一(自定义命令),配合快捷键设置(如将 F1 宏设置为输入 @加入行会),即可实现真正的“按一个键子收人”。

