打卡等级:暂无等级
打卡总天数:277
打卡月天数:15
打卡总奖励:233
最近打卡:2026-03-18 00:27:58
灌水成绩
等级头衔
ID : 1
管理员
积分成就
威望 : 9
点
贡献 : 9 次
下载币 : 86 枚
在线时间 : 1403 小时
注册时间 : 2013-9-5
最后登录 : 2026-3-18
相信大家写铭文系统都会碰到两大问题,
" p2 f* |& [. `0 k( N 第一:获取铭文印记对应图片序号 8 |7 n* a- ~8 K# l: Z# d
第二:抽取概率
1 o% H$ m. h4 N1 Y: b& @3 Z 今天咱们先来说说铭文抽取问题,也是应用到了读写配置项,
I+ }# \3 C( t1 h1 q! m / J5 B3 z* [/ v# L8 T
传统获取铭文序号有两种方法:
/ a& v) V% _! V 1.铭文直接以图片代码存储,类似这样: <img:170:54:0:0> <img:104:54:0:0> <img:171:54:0:0> <img:172:54:0:0>
4 y. O9 q5 H s, }7 r 6 t$ E2 x9 M& Y
[color=rgb(51, 102, 153) !important]复制代码 / G. ^# f/ b1 N) R
6 S; `4 c3 x3 \" ^8 a 缺点是从序号上看来你不知道他是哪个印记。 ! F4 H7 \5 S! {# Z3 u- e* `
2.铭文以中文存储,或许到以后用GetStringPos 代码从一张总表里获取行数,这个行数就是图片的代码
0 [9 D& L% R0 e3 V 铭文表: 基本剑术[旋风印] 基本剑术[主宰印] 基本剑术[幽速印] 获取行数: GetStringPos 铭文总表 N$铭文代码
5 N* n& [) O2 [0 l8 B6 ^5 P
$ Z' g3 n) Y( Z$ v1 |' j7 O: M [color=rgb(51, 102, 153) !important]复制代码
$ P. N0 Y+ a! P1 J, d
8 X' r6 z/ f V; o0 B4 b 复制代码
" L* u+ b; m9 ]% U* D 这样的方法提升了可读性,但是每个铭文的行数必须和资源文件里的序号对应,这个就把位置限制死了,一但有些改动将不好维护
- V+ _1 @; E# ^& q( F2 ?/ a9 j
, j! z7 B2 y+ i5 t 3.接下来说一下优化的写法,
+ U) F& p* q7 T6 T 我们把铭文名称和图片序号代码对应的关系
% b! o" ]( u9 E& ~! E4 r% z 写进一个文本文件里,暂且叫做铭文代码表 ' v1 e7 ^3 k- j1 P
内容是这样
( n: T$ @6 g2 b* r [铭文代码] 基本剑术[旋风印] = 1 施毒术[凌云印] = 41 召唤骷髅[迦兰印] = 49 诱惑之光[军势印] = 66
" p, x2 _! n' B3 y8 O $ q J- L0 c4 H: K; {# L
[color=rgb(51, 102, 153) !important]复制代码 $ k1 B0 W. n$ Z0 W" K' W
6 i+ p1 W) e6 ?4 x7 D \9 S. H5 y
复制代码
2 _1 ]. l h/ C0 O- T9 b
这种方式就很自由了,可以随意顺序写铭文的对应,并且对应的图片序号随时可改 9 A7 `' G3 u, w/ o& h
下面是写抽取代码验证: / H' [ z* d5 u
[@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
1 u+ U8 a% u: W5 q6 g
1 |" F0 P* m- [0 z. N$ `. v
$ f8 f3 J, W( y
; k% P7 g3 [8 t! U1 @7 ^