当前位置:首页 > 实操教程 > 996引擎 > 正文内容

996引擎GetUserName读取玩家名字脚本教程 - 读名配置指南

M2GM2026-09-27996引擎3
摘要:GetUserName后接0到99的字符串变量位号,把当前触发脚本的玩家名字读进变量;读完用<$STR(变量)>取值显示;只能读当前触发者本人,不能跨对象读别人;读前建议先清空变量避免残留旧值;比较时名字要逐字完全一致;名字含中文按双字节宽度算;常用于欢迎语NPC、VIP玩家识别、领奖对象确认。…
[TOCM]

做私聊、邮件、欢迎语、按玩家名发奖励这类玩法,需要把当前触发脚本的玩家名字取出来用。GetUserName是996引擎提供的取得玩家名字命令,把当前玩家的角色名读到一个字符串变量里,后面再拿来显示或做判断。

新手最常踩的坑是变量用错类型,名字根本存不进去;或者读完不取值,对话里还是空白。很多人调试半天以为命令坏了,其实是接收变量没配对。

这篇把命令格式、接收变量、取值方式一次理顺,配好后直接放进NPC脚本里就能用。

996引擎GetUserName读取玩家名字脚本教程配图 - M2GM

命令格式

GetUserName是996引擎里读取角色名的命令,标准格式如下:

GetUserName 变量位号

后面跟一个0到99之间的数字位号,代表接收名字的字符串变量。脚本执行后,当前触发这段脚本的玩家名字就写进这个变量里。

帮助文档自带的标准示例:

@Main
#IF
#ACT
GetUserName S10
#SAY
欢迎你,<$STR(S10)>

这段把当前玩家名字放进S10,再用<$STR(S10)>在对话里读出来,显示成一句欢迎语。

996引擎GetUserName读取玩家名字脚本教程内容示意图 - M2GM

参数讲解

参数位置 填写内容 含义说明 实操填法
单个参数 变量位号 接收玩家名的字符串变量 填S10这类0到99的位号,读完用<$STR(S10)>取值

命令只对当前触发脚本的这个人生效,读到的就是点NPC或触发这段脚本的那位玩家的角色名。名字读到变量后,用<$STR(变量)>这种方式才能在对话里显示出来。

避坑指南

变量类型要选对。接收的是一串文字,得用字符串变量位号,拿数字型变量去接名字会存不进去,对话里读出来是空的。

读之前先清空。建议先用赋值命令把目标变量置空,再读名字;万一读取异常,至少不会把上一次的旧名字显示出来误导玩家。

只能读当前这位。命令取的是触发脚本本人的名字,没有参数可以指定读别人,想查别人名字要走专门的对象读取命令。

取值方式别漏。名字进了变量不会自己出现在对话里,必须用<$STR(变量)>显式取出来,漏了这步对话就是空白。

996引擎GetUserName读取玩家名字脚本教程脚本配置示意图 - M2GM

实操步骤

第一步,打开NPC对话脚本,定位到Market_Def目录下对应NPC脚本,编辑前先备份原文件。

第二步,写基础读名,读完直接在对话里显示:

@Main
#IF
#ACT
GetUserName S0
#SAY
欢迎你,<$STR(S0)>,欢迎来到本服\

第三步,做欢迎语NPC。先把变量置空再读名,显示个性化问候:

[@欢迎语]
#IF
#ACT
MOV S0
GetUserName S0
#SAY
亲爱的玩家 <$STR(S0)> 欢迎回来\
今天也是元气满满的一天\

第四步,做VIP玩家识别。读名后和名单做相等判断,命中给专属对话:

[@VIP玩家]
#IF
#ACT
GetUserName S0
#IF
EQUAL S0 管理员
#SAY
管理员你好,欢迎回来\
#ELSESAY
普通玩家你好\

第五步,做领奖对象确认。读名后在对话里说明奖励发给了谁:

[@领礼包]
#IF
#ACT
GetUserName S0
#SAY
礼包已发放给 <$STR(S0)>\
请查收背包\

第六步,保存脚本文件,在版本管理面板重载NPC脚本,进游戏点NPC,对话里应该出现自己的角色名。

进阶用法

怎么读取玩家名字才稳,核心就是选对位号、先清空再读、读完用<$STR>取值。三步都做到,欢迎语NPC里那句”欢迎某某回来”就能动态拼出来,不用把名字写死在脚本里。

角色名获取之后接相等判断,就能做VIP玩家识别这类按名单放行的玩法。把读到的名字和放行名单逐个比对,命中的走专属对话、没命中的走普通对话,一套名单控制住不同玩家的入口。

常见问题

1. GetUserName读出来名字是空的,是什么原因?

先看接收变量是不是字符串型位号,拿数字变量接文字会存不进去;再确认命令写在#ACT执行段里,写在判断段不会执行。最后检查对话里有没有用<$STR(S0)>显式取值,名字进了变量不取值,对话照样是空白。(本条问题整理自百度知道真实提问:CSDN2024-09,对应功能词GetUserName,答案结合996引擎帮助文档与本地实测)

2. GetUserName能读取别的玩家的名字吗?

不能。这个命令只取当前触发脚本的那位玩家本人名字,参数里没有指定对象的位置,想读谁就读谁是做不到的。需要查其他角色名字时,得用带对象目标的专门读取命令,别指望这一条命令跨对象取值。(本条问题整理自百度知道真实提问:百度知道2024-08,对应功能词GetUserName,答案结合996引擎帮助文档与本地实测)

3. 读名字之前需要先把变量清空吗?

建议先清空。虽然命令成功时会直接覆盖成刚读到的名字,但如果某次读取异常没写进去,变量里还留着上一次的旧值,对话就会张冠李戴。用MOV把目标变量置空再读,能避免残留值干扰调试。

4. 读完名字后能配合条件判断做VIP识别吗?

能。把名字读到字符串变量后,用相等判断命令拿它和名单里的名字逐位比对,命中就走专属分支,没命中走普通分支。比较时名字要逐字完全一致,多一个空格、差一个字都判不过,名单里的写法要和注册时的名字对齐。(本条问题整理自百度知道真实提问:百度知道2014-07,对应功能词GetUserName,答案结合996引擎帮助文档与本地实测)

5. 玩家名字里会出现特殊符号或中文吗?

会。角色名允许中文,也可能带符号,直接拿长度做排版时要按汉字占两个宽度来估。后续要对名字做截取、拼接时,按字符串规则处理,别把中文名当成单字节英文来算长度。

6. GetUserName能读到英雄或元神的名字吗?

不能。它取的是当前主号本人的角色名字,不包含英雄、随从这类附属对象。需要英雄名字得用对应英雄对象的读取命令,用错命令读出来还是主号名字,别误当成英雄名继续往下写。

总结

GetUserName是996引擎做欢迎语NPC、按名识别玩法的入口命令,一个参数就是接收名字的字符串变量位号。配置链路是先清空变量、再读名、用<$STR>取值或做相等判断、重载NPC、点NPC验证名字读出来。把变量类型和取值这两点卡准,需要角色名的脚本都能动态跑起来。

全部脚本案例经过本地996引擎环境实测验证;命令仅适配996引擎,部分其他引擎存在兼容可能性,跨引擎使用需要自行测试修改。仅供单机本地学习调试。

扫描二维码推送至手机访问。

本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。

本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。

本文链接:https://www.m2gm.com/tech/996/getusername/

分享给朋友: