|
相信大家写铭文系统都会碰到两大问题, 8 }' _# Q3 I+ d& O! R2 L! ]
第一:获取铭文印记对应图片序号
6 g% K; E/ i3 r( R$ K: U第二:抽取概率
* d6 X6 e9 p2 u; A$ y今天咱们先来说说铭文抽取问题,也是应用到了读写配置项,
- }5 H2 O3 {* t
$ d- Q$ ~2 m7 f8 M& b传统获取铭文序号有两种方法:
# @, s/ U9 a( Q2 k$ A7 E/ r( @1.铭文直接以图片代码存储,类似这样:- <img:170:54:0:0>
- <img:104:54:0:0>
- <img:171:54:0:0>
- <img:172:54:0:0>
) l* b: B' a% A3 e! h8 _1 o
3 M& S# d$ a* Z4 Y[color=rgb(51, 102, 153) !important]复制代码
0 M; C) H: h, ]2 U# D7 d
! E: Z& Y* Y8 M( _' h缺点是从序号上看来你不知道他是哪个印记。. c6 u2 M( o m+ @6 r1 W4 N
2.铭文以中文存储,或许到以后用GetStringPos 代码从一张总表里获取行数,这个行数就是图片的代码
. k8 M7 t; R: R9 S4 J- 铭文表:
- 基本剑术[旋风印]
- 基本剑术[主宰印]
- 基本剑术[幽速印]
- 获取行数:
- GetStringPos 铭文总表 N$铭文代码
- ' O4 X3 b* ^3 c0 d5 [1 ^8 [% q* C
4 C! e, H: {" j' Z% N3 m' ]- ]2 F
[color=rgb(51, 102, 153) !important]复制代码
1 m' t6 j! v' V: O$ }
4 s& A8 W; x2 u) C1 z5 g6 q复制代码 / ~0 n( O3 g- i1 |: U1 P
这样的方法提升了可读性,但是每个铭文的行数必须和资源文件里的序号对应,这个就把位置限制死了,一但有些改动将不好维护
% Z" A3 k; k! j& y3 g k
9 Y) o% q4 Q/ A" x. m1 k. ?9 ]: R3.接下来说一下优化的写法, t/ y# \3 e2 V: A+ z7 i# t2 A
我们把铭文名称和图片序号代码对应的关系; d( c" Q. W& q7 r# C$ x! b' o: j- J
写进一个文本文件里,暂且叫做铭文代码表
# Y! H. E" B2 c) z, X0 l1 ] \9 o内容是这样
/ e1 L3 p/ r3 J1 P* o- [铭文代码]
- 基本剑术[旋风印] = 1
- 施毒术[凌云印] = 41
- 召唤骷髅[迦兰印] = 49
- 诱惑之光[军势印] = 66
- ( Q! y# E% ^9 U1 p1 a6 Z. O9 A
0 ]1 z+ A( H" p" y& _! Z, i6 F
[color=rgb(51, 102, 153) !important]复制代码
6 p( ]( ]# N" q3 Y2 R2 c' u/ W
. b5 e2 I2 J3 {( n- b* ^/ j7 p复制代码
. n3 c, U0 S' J" @这种方式就很自由了,可以随意顺序写铭文的对应,并且对应的图片序号随时可改: ]& @4 j: j: G, p T) f X7 A9 f
下面是写抽取代码验证:; O# @- ~( U t8 F* l& ^; l* B) d" R
- [@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
9 e, I b, z) _- \& C9 }6 A' Y
% N$ g, [% e! D( [7 D& S# y4 a& a
6 R& Y" z" r$ e! l/ m- m0 S
|
|