|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
; L9 o: r) N9 q k! @( L2 C
9 N% |& m4 X$ p! o, \Mover.h5 x6 q' R7 I$ c1 f, U
代码:
& i8 r+ [: {' [% B, f0 a找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü: i, x( ?0 R5 d& `; p
% |2 k/ n% d7 Y4 @
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
, S( U0 z# f/ ?: L( |6 V- a N; \! t! Y5 \4 `, V+ k
然后你去mover.cpp添加
7 o0 [4 v( ~# A
J; D3 k* o% a) Z. \代码:+ R w; }. a* y! n! q3 J
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); S. }& h/ V1 Y0 W% |- {3 D. N2 @
{
( k, ?3 M, a- e9 X4 n" B% R#ifdef __WORLDSERVER, _+ Y! f D9 Y' I
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó7 ?4 Z% V# a: T1 t% Q
MoverProp* pProp = GetProp();
8 Z& g- y& e2 M if( pProp )% ~, _0 i2 \! _/ P' ? M
{
* H0 c3 s1 B# v0 m% f if( nJob > 0 && nJob < MAX_LEGEND_HERO )
1 i6 G9 `$ T8 o' ] {
$ e1 H1 Z# O: r; C; k. { AddChangeJob( nJob );8 Q- v, |! G! G0 B: R5 h
}else{$ i& c" W6 x2 ?! i0 r
return;
9 d0 ]1 b& ~* ^* ^ }
2 H! G- |, r( x; I& B int nPoint = 0;
6 h3 N8 h8 g3 | if( m_nJob == JOB_MERCENARY )
' T8 ^5 i/ C' m$ j: t nPoint += 40;! r' f K" [% H8 c
else if( m_nJob == JOB_ACROBAT )# `& }' v6 E% X5 j' g# ]- w$ b# B
nPoint += 50;) Z8 ?. ~) ]. |4 L- _
else if( m_nJob == JOB_ASSIST )
1 Z# A$ b, g1 C9 m* T( z. J nPoint += 60;9 W/ v4 Z8 ]. N6 ~2 S4 u+ ?
else if( m_nJob == JOB_MAGICIAN )
1 F: D1 K. F6 M2 Q- n: s9 @ nPoint += 90;
; P& X b! Z% t, a9 P else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
) L8 P- I/ d' a) l5 T: I. ?) {. Q nPoint += 120;
5 j& c, \0 o( F6 D7 p6 s else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )+ r. X0 {$ l l5 N; R
nPoint += 150;+ D# }2 ]/ V, e. J, _ h4 c. I
else if( m_nJob == JOB_RINGMASTER )( ^) E! s' E Q% t$ G7 @6 q9 \6 P
nPoint += 160;
0 u7 T2 a4 Y R4 }6 B) B+ D else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )3 t/ I, k5 K6 g
nPoint += 180;
6 o- K" u1 K- _9 V) G8 o( T else if( m_nJob == JOB_ELEMENTOR )
) \% _3 G p; A4 s nPoint += 390;
! J1 T+ \2 B% Z9 K else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
* b; ~6 s4 M- E7 ^) A nPoint += 120;1 g; ^. a+ G! l7 L1 l1 Q9 t
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )1 y& ^9 Y$ T( Q
nPoint += 150;4 h6 w# R$ {& Y9 g) E# C
else if( nJob == JOB_FLORIST_HERO )
. O* \( i; F( a! i c( S" z nPoint += 160;
" k5 G8 d2 _* ^* `( ~, ? else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 d) ~0 a4 D+ g- p* } nPoint += 180;) i3 I" Y+ j5 ?5 a X' O6 n/ M4 o
else if( nJob == JOB_ELEMENTORLORD_HERO )
H+ |. k; ^! r! n( Y* x' S: J& L# ~ nPoint += 390;
3 I Q& w2 x) j' u- I/ h0 T- N I3 ^) P" `1 f
AddSkillPoint( nPoint );/ e' ^5 t, I0 e3 q; n3 B3 ^8 Y
m_nLevel = nLevel;
* |1 [: [: L/ F! e3 c+ n
: K A* {1 i& C; V% F7 y1 X* V SetJobLevel( nLevel, nJob );
) e+ m& u: p R* o" J% a" z. w m_nDeathLevel = nLevel;! o6 D) \- a1 x7 z) J
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
) J$ W7 P) ?, \8 A: L* I if(IsMaster())
$ R) {, R2 H0 s0 I) H. w9 M {; _0 r8 y' q2 c7 m
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
& X" [. O/ g7 [( P8 Y! k if( nLevel > 59 && nLevel < 72 )
2 t4 H6 c; p- R% t- w& {3 z dwTmpSkLevel = 1;
& M, ?; B4 \2 R+ Y7 n else if( nLevel > 71 && nLevel < 84 )
7 ^/ x0 i' }+ C' n! R2 f dwTmpSkLevel = 2;
" z% @! k7 z3 W; e; p Z+ R2 \ else if( nLevel > 83 && nLevel < 96 )
% M9 E) b0 c$ S9 ? dwTmpSkLevel = 3;
; a/ C/ X# V7 B4 X% i, T else if( nLevel > 95 && nLevel < 108 )
/ ~5 @# N# }5 @. W/ v dwTmpSkLevel = 4;
# \1 g5 E, H5 h- n. u else if( nLevel > 107 && nLevel < 120 )# e! ~6 @: @3 L6 n! b4 s* z
dwTmpSkLevel = 5;( y6 A9 H4 T1 t' P0 G5 E0 F
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 M- P. n4 d" _% V; u
{
! ~: I: |0 H& ?9 Y1 {) S LPSKILL lpSkill = &(m_aJobSkill);. ?/ E# S' O& S* j$ m4 g1 D) d0 ?
if( lpSkill && lpSkill->dwSkill != NULL_ID ) w' l3 T9 J" Q X7 n# u1 e A
{
& ]9 i- k! @8 Y) Q, }7 c2 Y3 W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 c+ q7 c' ? Z# O; f" S
if( pSkillProp == NULL )
" c; Y3 M5 i! K continue;& a3 ]# O1 D& S6 I: @( u; w6 A
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ @# h6 y8 \# ^7 S2 c% V: V. a. ^: [
continue;
0 k+ M8 O5 e+ `9 O" P$ F3 X7 n lpSkill->dwLevel = dwTmpSkLevel;% R5 f( f: q1 v4 c2 E: _+ a" k
}
2 D& l# a3 |& U/ ?0 W }- f5 J7 C7 m' T1 H/ W
}) E K$ j ]# E, J
else if(IsHero())
6 }% L4 u l( F* V- s5 B# H {2 ~* w2 h) m! L. d. E4 P
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 R" h, }* d3 l/ P ]
{
5 R0 G A. v8 n& s LPSKILL lpSkill = &(m_aJobSkill);
* R+ {/ G' [/ X$ a8 }! C if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 z: D6 @ ~ R2 Y \) z' P6 F {
$ _* T: m, G. M4 d* E ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 W/ W5 `$ r- d
if( pSkillProp == NULL )
- p$ _% @9 J% R7 Y5 ~; G continue;
3 v/ [% u: p7 q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! m3 Y% k1 l5 W
continue;6 E$ s) [0 K _5 H
lpSkill->dwLevel = 5;) f' j, i8 l: A6 e+ k6 P
}& T/ [# ?( V5 _7 V9 ]+ K$ `
}2 ?/ R, p$ Q1 f
}) j# V4 c7 y* z5 h* V
else if(IsLegendHero())
, S: [' p r, m9 R9 c) Q( l {
0 W$ R' v3 P/ l' y! H for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 X1 S8 O: ?5 Z: \% d. O1 h6 }
{
* Q2 c% c7 f8 S1 W; I( S LPSKILL lpSkill = &(m_aJobSkill);
7 e& A: n7 |/ \ if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 p: |# }# J8 y$ P5 Q {
0 k6 u0 Q& E+ e: s ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 i t, [* {" b. \# l8 A- z
if( pSkillProp == NULL )+ q9 M. b' k$ _ T; J/ w# o
continue;9 Z. V! w9 h, K; D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- X4 \, F$ k& [8 s0 G# E0 v
continue;
* \6 J, J7 Q# x4 | lpSkill->dwLevel = 5;- I7 f- r* G8 G' z0 r
}& G! f( B/ f8 q' U! n7 ] U5 x
}2 `* J0 @7 T) C
}
8 t8 K! K4 s* P% B#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 B# ?" ~4 L7 G' p5 L$ D) N/ W if( bGamma )
+ X% u) {6 Y E: I8 H+ m {: J. L5 { S) [* U7 L6 G- |
m_nExp1 = 0;* K: |# \" w. L/ }1 A
}
. B# r- g9 r9 D" G, ? K; D; `& `6 Q
( (CUser*)this )->AddSetChangeJob( nJob );# W6 k# e* O# y4 Y# i/ h. V
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );. V3 n8 n; r9 P- a
4 c/ a8 m$ u/ b3 ~3 y/ Q
* N0 H7 U; O1 \ L; Q0 c( W9 h#if __VER >= 11 // __SYS_PLAYER_DATA: Y' d% Y/ [/ e
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
; T( ?& y5 |/ V& V#else // __SYS_PLAYER_DATA
/ X, Y9 k1 z8 k! r1 N g_DPCoreClient.SendPartyMemberJob( (CUser*)this );/ d7 m( m$ m5 o, {3 L; V
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );" w, V5 G! ~* t5 Z w' ^; P
if( m_idGuild != 0 )
: M1 }, a- f( ? g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );: U* ^2 I) |% j
#endif // __SYS_PLAYER_DATA" l+ q( h/ @4 x
SetHitPoint( GetMaxHitPoint() );
9 T+ O! f6 u- A- \6 Z SetManaPoint( GetMaxManaPoint() );
; v5 ~ F& c: L SetFatiguePoint( GetMaxFatiguePoint() );& Z% f7 ?) I9 d6 p
if( nJob >= 1 && nJob <= 4 )! s8 F( g* \+ P
{
% d2 @6 ? S8 m w6 W' B9 ]9 k1 j m_nStr = m_nSta = m_nDex = m_nInt = 15;
; t6 Y( }% Y ]1 G/ C% w m_nRemainGP = 28;
; f& d( ^% u) |/ X% }9 ] }
; t' f* R* [! @ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )* ^1 w K4 M4 }& y
{" q* X8 O, D; N9 x
m_nRemainGP = 118;
& L p- k2 \( F) _* \. q( }6 x //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;4 a, i" s, J( `' z
m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 _; J5 I- \6 |: c% k5 b0 F! S }
6 I! ]" w7 ~ F4 Z b if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )1 r8 r/ X% p" c- [% M* X1 @
{8 Z. v, M2 R# s% t* h: n
CItemElem itemelem;4 n; ^" u/ @6 L. ]+ V
itemelem.m_nItemNum = 1;8 F: J$ C7 h, }, f
itemelem.m_bCharged = TRUE;& j8 c) y+ S* D3 C, F
BYTE nID;
! |" ]2 ?! B0 Z! W. p7 n" f( I2 Z5 j, Z# [5 Y( D
if( nJob == JOB_MENTALIST_HERO )
8 ?- i- W- G+ X9 y itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;6 E. ~/ V0 [+ x `
if( nJob == JOB_FORCEMASTER_HERO )
9 h+ c+ z& i" ] itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
9 \8 C: E4 b7 c* A% @5 M3 x
7 Y/ _7 W3 Z( k& Q E ( ( CUser*)this)->CreateItem( &itemelem, &nID );
- F$ D3 H; t8 n# o1 j }
, @- E r* ]9 ], e* z9 d g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
1 F+ e4 ^7 g7 N) m ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
5 s6 h7 }" K/ ]9 h ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );4 R, e) q- S: y2 `# C9 ?/ S+ f
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL ); p7 j( R' F ], A* C
( (CUser*)this )->AddTaskBar();*/" l' \& G# C; o: u1 P
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
4 J) D( v$ s7 @! k& m1 T& X5 B#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, v; u9 Q2 R9 _$ ]& V
((CUser*)this)->CheckHonorStat();+ D, a0 d9 x. _
((CUser*)this)->AddHonorListAck();" M* z% b- h* F; L" o9 G. A f
g_UserMng.AddHonorTitleChange( this, m_nHonor);8 }( r/ I) F3 b1 |% d; ]% o0 \
#endif // __HONORABLE_TITLE // ′Tà?
! T: ?0 N0 A8 M- k/ w8 q }2 [% r$ _7 ?, z( S$ z1 p
#endif // __WORLDSERVER7 Z ^, g$ S# j, W/ ~
} 2 m! f6 v/ n1 v6 T! G7 F# `( h8 a
* P. c1 j# }7 O0 F# T; a9 W0 M然后你进入functextcmd.cpp并添加以下
0 C, X: |) p9 h' x, i! f" k: @1 H: {+ [% U+ d- U3 x/ T. N
代码:
! L. F y6 ^- k7 T4 u0 EON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
- s7 `1 Y0 }# K7 F5 Y7 Q: A: K下面插入3 H& R8 L$ o4 G" Z4 u% x. d8 L
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
) x5 X* r8 M0 n& |
. i, m3 N1 w$ Z% _" D0 o然后你去' Q0 V4 A" R( J9 D' u
r2 ^7 k9 W! S E代码:$ \0 a5 P4 Y7 I& B( ]% G
代码& \% Z2 J7 c! e; b% e
BOOL TextCmd_ClearPropose( CScanner & s )) I2 e4 X; `4 X7 N$ @
{
- m/ Z1 |' w/ u/ n#ifdef __WORLDSERVER( R5 R' H% k9 f6 C7 v K8 ]
CUser* pUser = (CUser*)s.dwValue;9 _! m/ |9 y, o0 g
g_dpDBClient.SendClearPropose();
5 P1 O4 n/ v& @" R2 Z6 s- B o#endif // __WORLDSERVER
* V) i9 p# D% |* ] return TRUE;! N$ ~/ N& Y! }. e7 d
}& P) M! [5 ^, ]7 J5 H$ Q
下面插入8 U( S9 v9 e7 g; _9 ~
BOOL TextCmd_rebirth( CScanner& scanner )& J3 }8 V# ?8 V# |2 |, O z
{) H* G5 c3 W/ [1 P8 g: Q( ?
#ifdef __WORLDSERVER# m- M9 g( c4 K G4 w
CUser *pUser;
! E, v* I6 e2 [4 y, IpUser = (CUser*)scanner.dwValue;- @5 Q) c6 ^, y$ }, [' Z+ x6 X
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
' S0 U9 }0 E! ^( @7 qpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
5 C3 L; J$ |$ ]4 j( b& U- belse8 y9 y# d+ S/ J: j5 e% u
pUser->AddText("你还未达到重生条件!");
& j& N4 w' d+ [% Y#endif
( E( D2 H! O5 [+ n# xreturn TRUE;& X; f. @, A2 g4 m# V9 O7 [! H
}
9 V% x& L, z8 d1 z0 u( g& y% n/ `2 m" E3 n
! Q; [ `+ x6 x# m2 q
; f; |8 S4 p l+ I
( j: R, i$ j0 w: l* C% U |
|