当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇转生次数与人物总名变量详解及数据库字段配置全攻略

热度:
转生次数和人物总名是传奇脚本中使用频率极高的两个变量。转生次数决定了玩家能进入哪些地图、穿戴哪些装备、触发哪些技能加成,人物总名则用于全服广播、NPC对话、称号显示等场景。这两个变量的获冉式、持久化机制和数据库配置在不同引擎中存在差异,配置不当会导致转生数据丢失或总名显示异常。

##转生次数变量<$RELEVEL>的调用与显示

<$RELEVEL>是引擎内置的转生次数变量,直接在脚本中引用即可输出当前角色的转生次数,不需要额外赋值或计算。典型的NPC对话脚本写法为:[@Main]#SAY你已经转生了<$RELEVEL>次。你的完整名字是<$HUMANSHOWNAME>。这段脚本会实时读取角色的转生数据并显示在对话窗口中。

英雄的转生次数使用<$H.RELEVEL>变量。在英雄转生脚本中,通过MOVP0<$RELEVEL>将主号转生次数存入临时变量,通过MOVP2<$H.RELEVEL>将英雄转生次数存入另一个变量,再进行后续的费用计算和等级要求判定。

<$RELEVEL>在HERO、GOM、GEE、BLUE、LEG等主流引擎中均可使用,变量格式统一,不需要按引擎修改写法。

##人物总名变量<$HUMANSHOWNAME>的构成与配置

<$HUMANSHOWNAME>是人物完整显示名称,其内容由String.ini中的HumanShowName参数决定组合格式。默认配置为HumanShowName=%chrname\%guildname\%dearname\%mastername,各占位符分别对应人物名称、行会名称、配偶名称和师徒名称。

如果玩家加入了行会,<$HUMANSHOWNAME>的输出结果为“角色名\行会名”;如果同时还结婚了并拜师,输出结果会依次拼接所有称号信息。没有行会、配偶或师徒关系时,对应的占位符部分直接省略,不会显示空字符串或多余的分隔符。在String.ini中修改HumanShowName的格式可以调整总名的显示顺序和样式,例如改成HumanShowName=%guildname\%chrname则会将行会名放在角色名前面。修改后需要重启M2Server使配置生效。

<$HUMANSHOWNAME>同样有英雄版本<$H.HUMANSHOWNAME>,用于获取英雄的完整名称。

##转生次数检测命令CHECKRENEWLEVEL

在脚本的条件判断中,不能直接用<$RELEVEL>做比较,必须使用CHECKRENEWLEVEL命令。命令格式为:CHECKRENEWLEVEL控制符转生等级数,控制符支持=、>、<三种。

检测角色是否完成至少一次转生:CHECKRENEWLEVEL>0。检测角色转生次数是否达到5次:CHECKRENEWLEVEL=5。检测角色是否尚未转生:CHECKRENEWLEVEL=0。英雄的转生次数检测使用H.CHECKRENEWLEVEL,格式与主号一致。

CHECKRENEWLEVEL的转生等级数范围为1到255,超出这个范围引擎会报参数错误。在多层条件判断中,多个CHECKRENEWLEVEL命令可以用#OR或#AND连接,实现“转生次数在3到5次之间”等复合条件。

##转生次数的持久化存储机制

<$RELEVEL>本身是引擎内部变量,引擎自动负责其持久化,玩家下线重上后转生次数不会丢失。但如果版本使用自定义变量来额外存储转生数据(例如用于配合封号显示、属性加成判断),就需要手动处理变量的保存和读取。

在QManage.txt的[@Login]段中,使用VAR声明HUMAN类型的自定义变量。HUMAN类型变量是玩家个人变量,下线自动保存,适合存放转生次数等需要持久化的数据。声明格式为:VARIntegerHUMAN转生次数。声明后使用LOADVAR命令从存档文件中读取之前保存的值,格式为:LOADVARHUMAN转生次数..\QuestDiary\Data\转生数据.txt。

如果转生次数在退出重进后变回0,说明存档命令未正确执行。在修改变量值的#ACT段末尾加上SAVE命令强制保存,或者确认引擎的自动存档机制是否正常运作。LOADVAR命令后的文件路径如果填写错误,变量会读取不到之前保存的值,初始化为0。排查时可以在[@Login]最开始添加CALCVARHUMAN转生次数=0作为兜底,确保变量有初始值。

##数据库层面的转生字段配置

部分引擎将转生数据存储在数据库的角色表中,脚本通过读取字段值来获取转生次数。GEE引擎需要在HumanDB的Role表中新增Reincarnation字段(int类型,默认值0)存储转生等级,ReincarnationExp字段(bigint类型)存储转生经验。GEEM2引擎的字段命名为RebirthLevel(转生等级)和RebirthCount(转生次数),均设为INT类型默认值0。

GOM引擎通常在M2的变量管理中配置G6变量映射到数据库的转生字段,不需要手动修改数据库表结构。如果G6变量未绑定到数据库的转生字段,需要在M2控制台的变量管理界面中手动设置映射关系。DBC2000的StdItems.DB中也可以通过RENEWLEVEL字段控制装备的转生穿戴条件,Need字段设为100表示该装备需要转生等级,NeedLevel字段填写具体的转生次数要求。

##全服广播转生信息的脚本实现

在QManage.txt的[@Login]段中加入CHECKRENEWLEVEL判断,可以实现玩家上线时全服广播其转生次数。脚本结构为:[@Login]#IFCHECKRENEWLEVEL>0#ACTSENDMSG0玩家〖<$USERNAME>〗上线,当前转生〖<$RELEVEL>〗次。SENDMSG的0频道为全服公告,消息中的<$USERNAME>和<$RELEVEL>在发送时被引擎自动替换为实际值。

如果需要广播人物总名而非单纯的用户名,将<$USERNAME>替换为<$HUMANSHOWNAME>即可。需要注意,<$HUMANSHOWNAME>的输出内容可能较长(包含行会名、配偶名、师徒名等),在聊天框中的显示效果与预期可能不同,建议先在游戏内用@命令测试输出结果后再写入全服广播脚本。

##常见配置错误与排查要点

转生次数显示为0但角色实际上已经转生,首先检查数据库中的转生字段是否为空。如果使用自定义变量存储转生次数,检查LOADVAR命令的路径是否正确,路径中的目录名和文件名区分大小写,路径分隔符在不同引擎中的要求也不同。

<$HUMANSHOWNAME>显示异常,检查String.ini中HumanShowName的格式配置。如果输出结果中出现了多余的%符号或占位符名称未被替换,说明String.ini中对应的占位符拼写有误或该引擎不支持该占位符。修改String.ini后必须重启M2Server,重新加载脚本无法使String.ini的修改生效。

CHECKRENEWLEVEL命令在脚本中不生效,检查命令拼写是否正确。CHECKRENEWLEVEL和CHECKREBORNLEVEL是两个不同的命令,前者检测转生次数,后者在部分引擎中用于检测飞升或转生等级,两者不能混用。HERO引擎使用CHECKRENEWLEVEL,GEE引擎使用CHECKREBORNLEVEL或CHECKRENEWLEVEL取决于版本,配置前先确认当前引擎支持的命令名称。
[顶部]