一、 不可保存变量与重置规则
在传奇脚本开发中,变量根据其生命周期和重置条件分为多个类型。以下是各类不可保存变量的详细说明:
• P0-P9 (私人变量,数字型):仅在当前NPC对话过程中有效。当玩家关闭与当前NPC的对话框时,这些变量的值将自动重置为0。通常用于临时计算或对话中的状态标记。
• M0-M99 (私人变量,数字型):下线不保存,且当玩家切换地图时,这些变量的值会被清空重置为0。适用于需要跨地图传递但不需要永久存储的临时数据。
• I0-I99 (全局变量,数字型):全局可见,但不可保存。当服务器重启或小退(返回角色选择界面)时,这些变量的值将重置为0。通常用于服务器级的临时计数。
• D0-D9 (私人变量,数字型):下线不保存,但仅对当前角色有效。当角色小退或完全退出游戏时,变量值重置为0。
• N0-N99 (私人变量,数字型):下线不保存,小退(返回角色选择界面)时归0。适用于单次登录会话中的临时数据存储。
• S0-S99 (私人变量,字符型):通常由自定义输入(@@InPutString)产生,下线不保存,小退归0。用于存储临时的字符串信息。
二、 保存名字到文本与读取显示
针对国王名字无法直接显示的问题,可以通过将名字写入文本文件,再读取显示的方式解决。以下是具体实现方法:
1. 保存名字到文本
使用 SetListString 命令将角色名称写入指定文本文件。例如,将当前玩家名字保存到测试.txt文件的第一行(行号从0开始):
#ACT
SetListString .\QuestDiary\测试.txt 0 <$USERNAME>
2. 读取文本内容并显示
使用 GetListString 命令读取文本文件指定行的内容,并将其赋值给变量(如S1),然后在对话框中使用 <$STR(S1)> 显示:
#ACT
GetListString .\QuestDiary\测试.txt 0 S1
#SAY
现任国王【<$STR(S1)>】
三、 完整脚本示例
以下是一个结合条件判断、变量操作和文本读写的完整脚本示例,用于实现国王申请和信息查看功能:
[@main]
<申请国王/@国王> <国王信息/@信息>
[@国王]
#if
CheckLeader ; 检测是否为帮主
CHECKLEVELEX > 49 ; 检测等级是否达到50级
#act
SetListString .\QuestDiary\测试.txt 0 <$USERNAME> ; 保存名字
SENDMSG 6 恭喜你成为国王,名字已保存!
[@信息]
#ACT
GetListString .\QuestDiary\测试.txt 0 S1 ; 读取名字
#SAY
现任国王【<$STR(S1)>】
四、 关键命令解析
• #IF:条件判断开始,后面跟随检测命令。
• #ACT:条件成立时执行的动作。
• CheckGameGold > 99:检测元宝数量是否大于99个。该命令通常用于判断玩家是否满足消耗元宝的条件。
• CheckLeader:检测玩家是否为当前行会的帮主。
• CHECKLEVELEX > 49:检测玩家等级是否大于49级(即达到50级)。
通过以上脚本逻辑,可以实现在满足条件时将玩家名字保存至文本,并在查看信息时从文本中读取并显示,有效解决国王名字显示问题。

