在SKY引擎或同类传奇引擎中,人物名字上方显示的封号通常不是靠自定义变量直接显示,而是通过称号系统、名称显示格式和脚本指令来控制。常见做法是使用 SETRANKLEVELNAME 指令,配合 string.ini 中的显示格式,实现玩家名字上方动态显示封号。
一、封号显示的基本原理
传奇中的封号显示一般由两部分组成:
string.ini 中的名称显示格式
脚本中通过 SETRANKLEVELNAME 设置具体封号内容
string.ini 决定名字、封号、行会、称号等内容如何组合显示。
脚本决定当前玩家应该显示哪一个封号。
所以“非自定义变量”的意思是:封号显示不依赖 P、D、S、G、H、A 这类自定义变量,而是使用引擎自带的称号或名称显示系统。
二、先开启称号显示系统
打开服务端配置文件:
MirServerMir200!setup.txt
找到称号相关设置:
ShowRankLevelName=1
如果值为 0,称号系统可能不会生效。
需要改成:
ShowRankLevelName=1
保存后重启服务端或重新加载配置,具体看引擎是否支持热加载。
三、配置 string.ini 显示格式
打开:
MirServerMir200Envirstring.ini
找到名称显示相关项,例如:
HumanShowName=%chrname%guildname%dearname%mastername
其中:
%chrname 表示人物名称
%guildname 表示行会名称
%dearname 表示配偶称呼
%mastername 表示师徒称呼
通常用于换行或分层显示
如果希望人物名字上方显示封号,可以保留或加入封号显示位置,例如:
HumanShowName=%chrname%guildname%dearname%mastername
具体格式以当前引擎和版本为准。如果版本中已经有封号显示项,不要随意删除。
四、设置默认封号
在 string.ini 中可以设置一个默认封号,当玩家没有满足任何特殊条件时,就显示这个默认称号。
例如:
RankLevelName=%s平民
这里的 %s 代表玩家名字。
后面的“平民”就是显示在名字上方或旁边的封号内容。
也可以改成其他文字:
RankLevelName=%s新手勇士
如果不想显示默认封号,可以设置成空内容,但不同引擎支持情况不同,建议保留一个基础称号。
五、使用 SETRANKLEVELNAME 动态设置封号
动态封号主要通过脚本指令实现:
SETRANKLEVELNAME %s封号内容]
例如:
SETRANKLEVELNAME %s沙城霸主]
这条指令的作用是:把当前玩家的封号设置为“沙城霸主”。
常见写法:
SETRANKLEVELNAME %s传奇新手]
SETRANKLEVELNAME %s沙城城主]
SETRANKLEVELNAME %s行会精英]
SETRANKLEVELNAME %sVIP会员]
注意:
%s 通常代表当前玩家名字
后面写封号文字
封号内容可以用中括号、符号、汉字等组合
不要写成自定义变量格式,例如不要写成 <P1>、<S1> 这种形式
六、按等级动态显示封号脚本示例
可以在登录触发或管理脚本中写条件判断,根据玩家等级显示不同封号。
示例:
[@main]
IF
CHECKLEVELEX > 99
ACT
SETRANKLEVELNAME %s传奇战神]
Break
IF
CHECKLEVELEX > 79
ACT
SETRANKLEVELNAME %s沙城将军]
Break
IF
CHECKLEVELEX > 59
ACT
SETRANKLEVELNAME %s精英勇士]
Break
IF
CHECKLEVELEX > 39
ACT
SETRANKLEVELNAME %s江湖高手]
Break
IF
CHECKLEVELEX > 19
ACT
SETRANKLEVELNAME %s初入江湖]
Break
IF
CHECKLEVELEX > 0
ACT
SETRANKLEVELNAME %s新手玩家]
Break
这段脚本的逻辑是:
等级大于99级,显示“传奇战神”
等级大于79级,显示“沙城将军”
等级大于59级,显示“精英勇士”
等级大于39级,显示“江湖高手”
等级大于19级,显示“初入江湖”
其他情况显示“新手玩家”
条件顺序要从高到低写,避免低等级条件先被触发。
七、按身份动态显示封号示例
除了等级,也可以按身份判断封号。
示例:
[@main0]
IF
ISCASTLEMASTER
ACT
SETRANKLEVELNAME %s沙城城主]
Break
IF
ISGUILDMASTER
ACT
SETRANKLEVELNAME %s行会会长]
Break
这样沙城城主和行会会长可以显示不同封号。
如果版本支持更多身份判断,也可以继续扩展,例如:
是否加入行会
是否是沙城成员
是否达到指定转生等级
是否拥有指定物品
是否完成指定任务
八、登录时自动刷新封号
如果希望玩家一上线就显示正确封号,可以在登录触发脚本中调用封号判断。
常见路径:
MirServerMir200EnvirMapQuest_defQManage.txt
在登录相关段落中加入调用:
[@Login]
IF
CHECKLEVELEX > 0
ACT
CALL [登陆封号.txt] @称号
然后在对应脚本文件中写封号判断:
[@称号]
{
if
CHECKLEVELEX > 99
act
SETRANKLEVELNAME %s传奇战神]
break
if
CHECKLEVELEX > 59
act
SETRANKLEVELNAME %s精英勇士]
break
if
CHECKLEVELEX > 0
act
SETRANKLEVELNAME %s新手玩家]
break
}
具体触发标签名称以引擎为准,有些版本使用 [@Login],有些使用 [@main],有些需要放在 QFunction 或登录脚本中。
九、不显示封号的常见原因
如果设置后封号没有显示,可以按下面顺序检查。
ShowRankLevelName 没有开启
检查 !setup.txt:
ShowRankLevelName=1
如果是 0,封号系统可能不会生效。
string.ini 显示格式没有包含封号位置
检查 string.ini 中的名称显示格式,确认封号显示项没有被删除或覆盖。
脚本没有触发
检查脚本是否放在正确的触发位置。
如果写在 QManage.txt 中,需要确认登录触发标签是否正确。
条件判断顺序错误
例如:
if
CHECKLEVELEX > 0
act
SETRANKLEVELNAME %s新手玩家]
break
if
CHECKLEVELEX > 99
act
SETRANKLEVELNAME %s传奇战神]
break
这种写法会导致高等级玩家也被“大于0级”的条件先截断,最终只显示“新手玩家”。
正确做法是从高到低判断:
if
CHECKLEVELEX > 99
act
SETRANKLEVELNAME %s传奇战神]
break
if
CHECKLEVELEX > 0
act
SETRANKLEVELNAME %s新手玩家]
break
封号内容格式错误
正确写法示例:
SETRANKLEVELNAME %s封号内容]
不要写成:
SETRANKLEVELNAME <P1>
也不要写成:
SETRANKLEVELNAME <STR(S1)>
这类写法属于自定义变量显示,不是封号系统标准用法。
修改后没有重新加载
修改脚本或配置后,需要重新加载脚本或重启服务端。
部分引擎支持在M2或控制台重新加载脚本,不需要完全重启。
十、完整设置流程
完整流程可以按这个顺序操作:
打开 !setup.txt,设置 ShowRankLevelName=1
打开 string.ini,确认名称显示格式中包含封号显示项
设置默认封号,例如 RankLevelName=%s平民
编写封号脚本,使用 SETRANKLEVELNAME %s封号内容]
在登录触发或管理脚本中调用封号判断
保存文件后重新加载脚本或重启服务端
进入游戏查看人物名字上方是否正常显示封号
十一、注意事项
封号内容不要过长,过长可能影响游戏界面显示
特殊符号不要太多,部分符号可能导致显示异常
不同引擎对 、%s、SETRANKLEVELNAME 的支持可能有差异
如果当前版本不支持 SETRANKLEVELNAME,需要确认引擎是否开启称号系统
不要混淆封号显示和自定义变量显示
修改前建议备份 !setup.txt、string.ini 和相关脚本文件
按照这种方式设置后,传奇人物封号就可以通过等级、身份、登录触发等条件动态显示,而不需要依赖自定义变量。
SKY传奇动态显示封号非自定义变量设置与脚本调用方法
来源:
作者:
点击:

