在传奇服务端脚本中,判断玩家是否为沙巴克城主行会成员,需使用特定条件指令。标准引擎支持通过CHECKCASTLESTATE和CHECKGUILD指令组合实现精准识别。
一、基础判断指令
在QFunction.txt或自定义标签中使用以下结构:
IF
CHECKCASTLESTATE11
ACT
;当前玩家属于沙巴克占领行会
SENDMSG7您是沙巴克成员!
ELSEACT
SENDMSG7您不是沙巴克成员。
CHECKCASTLESTATE11中第一个“1”代表沙巴克城堡(CastleIndex=1),第二个“1”表示“已占领状态”。
该指令直接检测玩家所在行会是否为当前沙巴克城主行会,无需手动比对行会名称。
二、结合行会名称二次验证(可选)
若需同时确认行会名称(如防止异常状态误判),可补充:
IF
CHECKCASTLESTATE11
STRCMPGUILDNAME
ACT
;确保行会名一致
SENDMSG7身份验证通过。
其中为系统变量,代表当前沙巴克城主行会名称。
三、用于NPC权限控制示例
在沙巴克专属NPC脚本中限制访问:
[@Main]
IF
CHECKCASTLESTATE11
ACT
GOTO@CastleMemberMenu
ELSEACT
SENDMSG7此功能仅限沙巴克成员使用。
CLOSE
[@CastleMemberMenu]
四、注意事项
该判断仅对已加入行会的玩家有效,无行会者自动视为非成员。
城堡索引“1”为沙巴克默认值,若服务端修改过MapInfo或Castle定义,需对应调整索引号。
行会战期间若未正式占领(即未完成攻城倒计时),即使击败守方,CHECKCASTLESTATE11仍返回失败。
五、常见错误写法
避免使用CHECKITEM或CHECKMAP等间接方式判断,例如:
;错误:仅凭持有令牌判断
IF
CHECKITEM4000011
因令牌可交易或掉落,无法真实反映成员身份。正确方式必须依赖CHECKCASTLESTATE指令。
以上脚本可直接嵌入任务、传送、奖励等场景,确保功能仅对合法沙巴克成员开放。
一、基础判断指令
在QFunction.txt或自定义标签中使用以下结构:
IF
CHECKCASTLESTATE11
ACT
;当前玩家属于沙巴克占领行会
SENDMSG7您是沙巴克成员!
ELSEACT
SENDMSG7您不是沙巴克成员。
CHECKCASTLESTATE11中第一个“1”代表沙巴克城堡(CastleIndex=1),第二个“1”表示“已占领状态”。
该指令直接检测玩家所在行会是否为当前沙巴克城主行会,无需手动比对行会名称。
二、结合行会名称二次验证(可选)
若需同时确认行会名称(如防止异常状态误判),可补充:
IF
CHECKCASTLESTATE11
STRCMPGUILDNAME
ACT
;确保行会名一致
SENDMSG7身份验证通过。
其中为系统变量,代表当前沙巴克城主行会名称。
三、用于NPC权限控制示例
在沙巴克专属NPC脚本中限制访问:
[@Main]
IF
CHECKCASTLESTATE11
ACT
GOTO@CastleMemberMenu
ELSEACT
SENDMSG7此功能仅限沙巴克成员使用。
CLOSE
[@CastleMemberMenu]
四、注意事项
该判断仅对已加入行会的玩家有效,无行会者自动视为非成员。
城堡索引“1”为沙巴克默认值,若服务端修改过MapInfo或Castle定义,需对应调整索引号。
行会战期间若未正式占领(即未完成攻城倒计时),即使击败守方,CHECKCASTLESTATE11仍返回失败。
五、常见错误写法
避免使用CHECKITEM或CHECKMAP等间接方式判断,例如:
;错误:仅凭持有令牌判断
IF
CHECKITEM4000011
因令牌可交易或掉落,无法真实反映成员身份。正确方式必须依赖CHECKCASTLESTATE指令。
以上脚本可直接嵌入任务、传送、奖励等场景,确保功能仅对合法沙巴克成员开放。

