本帖最后由 zczczcle 于 2016-2-1 12:51 编辑 ! h& R2 E5 W3 ~7 S( {" o. f
3 ^! `: r1 f. V首先,这并不能预测下一个boss具体刷在哪,不过你能通过我的解读知道,boss是怎么个刷法。8 G( C- l, Z, q _
其次,如果你有挂(付费的每天更新的那种),或者自己会解封包的话,你就能知道附近是否出现小boss了,在附近的话你还能知道他的位置。
- n( ]# N' e2 O% \5 E' E& v9 `. akuqitt 这位大哥提到打开MonsterList文件第一个数字是0是乱刷,但是后来又不确定很疑惑,原因就在于那个0,1,2,3,4和乱刷与否并无关系,或许是凑巧。1 f# p$ t( H# B6 [ y1 \* D9 C* C
& {( H; w/ n3 y: R4 p
部分选取代码,稍后解读:
5 h" C3 T: v- A9 B' @/ i7 A6 k9 u WORD wNowTeamId = 0;
" ~; f9 T5 ~8 S+ {3 T* B7 h. ?4 g8 Z. O
_snprintf( szFileName, 256-1, "%s//Monster//MonsterList",g_pBase->GetObjectFilePath() );# W0 |+ K3 O; m/ v
szFileName[256-1] = '\0';1 c0 @" z, q. w% N& p8 ~4 j: V5 B
_snprintf( szMapLog, MAX_MEMO_MSG_LEN-1, "_%d.txt", (int)m_pBase->GetMapId() );
; M. M, O$ k7 b szMapLog[MAX_MEMO_MSG_LEN-1] = '\0';
" R7 @5 f! w, Q# S9 O- D strcat( szFileName, szMapLog );
% W v; ]! _( u* x) Q& I% Q9 H! T$ b CInStream MonsterInfo( szFileName ); Y6 p! E0 q, }- k" {
if ( MonsterInfo.fail() || MonsterInfo.GetFileSize() == 0 )
* T( |% |) F1 N2 a& `3 m! O& f7 z* C {7 x% n; ]& q" y& \% ~4 S
_snprintf( szMapLog, MAX_MEMO_MSG_LEN-1, "***** The Map(%d) Have No Monsters ! *****", GetMapId() );
+ ?+ g; n9 t. k% u# q3 `7 M8 F szMapLog[MAX_MEMO_MSG_LEN-1] = '\0';
0 E$ w1 G7 V% b6 i1 i AddMemoMsg(szMapLog);
+ |% K5 d; N2 I: w5 Q! j; F+ o6 I return true;3 z5 y# x/ `- _- X% s4 I, m2 H) c
* P# `; V2 u! n3 f- x
2 h! F6 o; p* P- e1 d! R
7 i2 H/ ~5 ~: s" lfor( i = 0; i < iColNum; i++ )
1 J/ a2 F1 B, o) F' e! Q" V {
- y4 M- Q4 K+ ^ f+ X MonsterInfo >> dwTeamId 5 e& Y/ [& a* G- f
>> dwMonsterId $ s* s* Q. p5 R' b: q
>> dwX
8 h) a/ F b; r >> dwY
/ [( A' y# D! h/ p# J( a >> dwCount;
6 Y2 a/ J. U9 Q$ d4 \ if( wNowTeamId < dwTeamId )" E; G1 Z% b& H& I n, y* F2 ]" z
{7 X4 H( S4 ~1 r* i
wNowTeamId = dwTeamId;2 ]7 A+ q) Y6 B# Q% D s% a4 }* ~, ^
}+ V; W2 _6 s6 E- g
" ?& f3 N+ K5 \" E q
8 q" j# q7 t% l2 M* s
$ Q: s3 [# X6 l, G. W9 g* S/ x for( j = 0; j < dwCount; j++ )
# Z( D- _! ^7 O- ? {
; ]9 S# P$ O8 w; V. ] if( pBaseMonster->GetSpeed() )
8 O7 N! O1 S: o% E$ s {& j9 Y% r3 b5 z5 L/ v
for( int z = 0; z < 10; z++ )
3 V% @ C2 f; C4 v( d% i) n {0 g% Y$ Z: e- m
dwRandX = gf_GetRandom( 14 ) - gf_GetRandom( 14 );2 {7 h( F! s; S' O
dwRandY = gf_GetRandom( 14 ) - gf_GetRandom( 14 );
5 V1 x' g+ p5 r, `3 M7 l2 Z if( !( GetTileFlag( dwX + dwRandX, dwY + dwRandY ) & TILE_ALLOCCULDE ) ) break;. C# a- [) E9 ^ h
else if( z == 9 )2 L# g9 L+ s5 q& f" m& w, |; Q; S
{: Q( v- _- V7 J8 K, ]
dwRandX = -1 + gf_GetRandom( 2 );
. e: i/ H! C) T dwRandY = -1 + gf_GetRandom( 2 );% k, r& h2 w; `) n
}* ^; n. B( V" m' u
}
6 ^3 [! N7 K V r }& @: R- Q' g# F( ~! x ?0 Q6 \6 \
else& H7 q, U5 H9 G- [! G/ F4 k
{' A! K* ~" [4 v) x; }
dwRandX = dwRandY = 0;
9 k1 W/ S; {2 [! r% z }
5 ?& |& X2 }1 k% F
) A4 i, C1 ^( z3 J) I- i( s4 ~: J, ]0 E I3 w: \
- }7 H( ~; ]6 J1 I0 @所以我的初步结论是:
5 ~4 B1 J+ _/ {
1 {2 `" ]0 z' k& T1 V9 x |