|
铭文系统传奇脚本改进与读写配置项的应用-传奇素材网
传奇素材网相信大家写铭文系统都会碰到两大问题,
第一:获取铭文印记对应图片序号
第二:抽取概率
今天传奇素材网先来说说铭文抽取问题,也是应用到了读写配置项
读写配置项是个很实用的功能,因为它不占用保留变量,并且格式多样化,原理是把变量写入文本当中,
这里用到3个命令:
读配置项 ReadConfigFileItem 索引 变量名 变量
写配置项 WriteConfigFileItem 索引 变量名 参数
删除配置项 DelConfigFileItem 索引 变量名
打个比方:“礼包领取限制每台电脑只能领取两个账号”。
机器码一般来说,如果没有硬件更换是不会变的,所以用它来判断是否同一台电脑。
换成编程思维,问题转化成,如何判断机器码的领奖次数?
- ;首先检测领奖次数,读取文本中,机器码的领奖次数赋值到变量,然后判断
- #if
- #act
- ReadConfigFileItem ..\QuestDiary\领奖记录.txt <$MACHINEID> 领取次数 <$STR(N$领取次数)>
- ;判断领奖次数,如果为0可以领奖,可以领取,把 {机器码 领取次数 1} 写入配置项。
- #if
- EQUAL <$STR(N$领取次数)> 0
- #ACT
- WriteConfigFileItem ..\QuestDiary\领奖记录.txt <$MACHINEID> 领取次数 1
- sendmsg 7 初次领奖!写入领奖成功,目前领奖次数为:1
- break
- ;判断领奖次数,如果为1还可以领取一次.代码含义为删除原有的配置项重新写入,为了改变领奖次数
- #if
- EQUAL <$STR(N$领取次数)> 1
- #ACT
- DelConfigFileItem ..\QuestDiary\领奖记录.txt <$MACHINEID> 领取次数
- WriteConfigFileItem ..\QuestDiary\领奖记录.txt <$MACHINEID> 领取次数 2
- sendmsg 7 第二次领奖!写入领奖成功,目前领奖次数为:2
- break
- #if
- EQUAL <$STR(N$领取次数)> 2
- #ACT
- sendmsg 7 这台电脑已经领取过2次,每台电脑只可以领取两个账号!
- break
- #elseact
- sendmsg 7 参数错误!
复制代码 领奖记录里的内容是这样的:
- [F896AE54F3D3922189D31FFAB8BB751C]
- 领取次数=2
- [H896AE54F3D392342189D31FFAB8B51F]
- 领取次数=2
- [9896AE2345445D3922189D31FFAB751H]
- 领取次数=1
- [7896AE54F3D3922189D31FFAB8BB751J]
- 领取次数=2
- [6696AE54F3D392342189D31FFAB8B51L]
- 领取次数=2
- [F296AE2345445D3922189D31FFAB7513]
- 领取次数=1
复制代码 传奇素材网扩展:
ReadConfigFileItem,WriteConfigFileItem 这两个命令是实时写入文本的,可以查看和修改
另外还有带Cache命令是写入内存缓存中,不能查看和修改,关闭引擎以后才会写入文件,优点是运行速度快很多!
ReadCacheConfigFileItem
WriteCacheConfigFileItem
DelCacheConfigFileItem
DelCacheConfigFileSection
传统获取铭文序号有两种方法:
1.铭文直接以图片代码存储,类似这样:
- <img:170:54:0:0>
- <img:104:54:0:0>
- <img:171:54:0:0>
- <img:172:54:0:0>
复制代码 缺点是从序号上看来你不知道他是哪个印记。
2.铭文以中文存储,或许到以后用GetStringPos 代码从一张总表里获取行数,这个行数就是图片的代码
- 铭文表:
- 基本剑术[旋风印]
- 基本剑术[主宰印]
- 基本剑术[幽速印]
- 获取行数:
- GetStringPos 铭文总表 N$铭文代码
复制代码 这样的方法提升了可读性,但是每个铭文的行数必须和资源文件里的序号对应,这个就把位置限制死了,一但有些改动将不好维护
3.接下来传奇素材网说一下优化的写法,
我们把铭文名称和图片序号代码对应的关系
写进一个文本文件里,暂且叫做铭文代码表
内容是这样
- [铭文代码]
- 基本剑术[旋风印] = 1
- 施毒术[凌云印] = 41
- 召唤骷髅[迦兰印] = 49
- 诱惑之光[军势印] = 66
复制代码 这种方式就很自由了,可以随意顺序写铭文的对应,并且对应的图片序号随时可改
下面是写抽取代码验证:
- [@main]
- <抽取印记/@chouqu> \
- 您抽取到的第一个印记名字为:{<$STR(S$抽取铭文_1)>/fcolor=151}代码是:{<$STR(N$印记代码1)>/fcolor=215}\
- 您抽取到的第二个印记名字为:{<$STR(S$抽取铭文_2)>/fcolor=151}代码是:{<$STR(N$印记代码2)>/fcolor=215}
- [@chouqu]
- #if
- #act
- GetRandomText ..\QuestDiary\铭文系统\抽取\战士铭文.txt S$抽取铭文_1
- ReadConfigFileItem ..\QuestDiary\铭文系统\抽取\铭文代码表.txt 铭文代码 <$STR(S$抽取铭文_1)> <$STR(N$印记代码1)>
- GetRandomText ..\QuestDiary\铭文系统\抽取\战士铭文.txt S$抽取铭文_2
- ReadConfigFileItem ..\QuestDiary\铭文系统\抽取\铭文代码表.txt 铭文代码 <$STR(S$抽取铭文_2)> <$STR(N$印记代码2)>
- #if
- equal N$印记代码1 <$STR(N$印记代码2)>
- #act
- sendmsg 7 印记相同,重新抽取!
- goto @chouqu
- break
- #if
- not equal N$印记代码1 <$STR(N$印记代码2)>
- #act
- goto @main
复制代码 测试成功!如图:
|
|