|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 E4 S, b2 K" z
/ A6 X. z6 ^! Y+ Z. a6 G/ a5 R$ T T7 s- U
Mover.h! u, |& {# p6 E: t9 ~
代码:
, f1 ]( n! ]7 |. h; p8 L8 y$ M* z找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
( ~3 M: f& }& s, m& w- u# V/ }9 I
7 S* b7 U8 M* x, f f9 [$ k7 ^下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 2 ~% g Z! ?+ \/ d7 I# j" S9 F: ^
+ ]4 y, Z1 {; M |4 I I8 |然后你去mover.cpp添加
2 a$ R2 S/ W& y7 l: u6 C7 l
4 w' g5 c. a) r. {2 m代码:
1 V. h3 x- I. h) Svoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )( M, B# W' m& d" u' ^& u5 P$ @
{
2 b# l9 O- H, E! T$ k/ J3 n& T#ifdef __WORLDSERVER y: @0 ^$ ]! A0 ?+ |% G6 u e# H5 Y
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
* s' m! s) ?# x# h MoverProp* pProp = GetProp();
4 X; A/ V8 O9 n5 P+ E$ F# Z, ?# m if( pProp )( r$ r, L$ V; f3 j H3 x8 q4 a" N$ b
{
/ I3 c' q) x7 z0 N' p F; t! ]1 p if( nJob > 0 && nJob < MAX_LEGEND_HERO )* m$ Y8 O5 o# }! j
{" d# m& {; ~) I, i3 H( e
AddChangeJob( nJob );! t4 \: X7 Z, E) |! x! g
}else{. o3 [$ J/ y+ I
return;
: l! u. H! V( y% @3 R }, I" z0 A0 E. u, |# A) l
int nPoint = 0;9 s8 w, m; }9 O. b
if( m_nJob == JOB_MERCENARY )# g/ t1 ~, D+ z8 f' a% Q
nPoint += 40;8 J7 a4 Q, g4 M- L7 o7 r
else if( m_nJob == JOB_ACROBAT )
/ }3 \( m; D, N. Z8 `9 U nPoint += 50;2 W6 q$ g* ]5 k9 Z! h/ H6 p( D
else if( m_nJob == JOB_ASSIST )- y, W- L2 L2 c5 W$ i' R" X% q
nPoint += 60;
" `$ ?2 D$ k& w: y: D else if( m_nJob == JOB_MAGICIAN ), M) g8 p) `, m) ~+ U9 Z7 l
nPoint += 90;
4 H; l( e5 y0 Q. b7 R6 o else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
9 G7 N: U/ [2 w nPoint += 120;
4 [! H. Z0 T4 v& Z4 ]; a d0 q9 v0 k else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
5 U2 N+ s" i! W' l' T nPoint += 150;! W- Y' v* F4 U& Q
else if( m_nJob == JOB_RINGMASTER )
1 f% h- R( i: w0 K( S' k8 ~8 I nPoint += 160;/ e5 m* r6 o* R( ?0 ^- v' a, B
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 F; u3 E# O7 i# ] i6 H. U
nPoint += 180;
$ u* \/ K# ~# Z8 h7 u; { else if( m_nJob == JOB_ELEMENTOR )
9 C3 [. ^4 A, l0 |1 X" u* L nPoint += 390;+ `' ~ O4 G7 D* N+ V
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
2 e; M" q* G# \8 Z nPoint += 120;
; Z/ O- S' \8 W else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )/ C* [2 j6 C0 I: R0 X# b! c
nPoint += 150;
9 R3 K; w/ n% s. L0 L0 ^ else if( nJob == JOB_FLORIST_HERO )9 c. I/ i; z0 A( X* x2 B6 _4 W
nPoint += 160;) {2 l8 r( G0 T2 O( G
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )8 f% ] K' W) T
nPoint += 180;
( Q4 p/ Q- S% \$ \' O4 f else if( nJob == JOB_ELEMENTORLORD_HERO )
! [) x, z' R1 W# D: i7 s: } nPoint += 390;
* b6 R9 b) G4 Q# h3 q- Y& Z- C( u \/ L4 \
AddSkillPoint( nPoint );) m: B [; N5 e
m_nLevel = nLevel;
9 d! S1 @. Z0 b& s; E8 U& {0 d! ?0 Z Q/ @
SetJobLevel( nLevel, nJob );! b( M1 v3 s" } _/ F
m_nDeathLevel = nLevel;
- |( _+ a+ a- k; [, |#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% ~/ P- v. g( A' W+ T if(IsMaster())
, ]+ y4 o1 H: J& T# C. A {, ^; h S* V3 t) O
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108( b }' [, g+ [" m) U& t7 i# x2 r2 D
if( nLevel > 59 && nLevel < 72 )
( r6 X5 j3 x. p5 Y5 J dwTmpSkLevel = 1;+ t1 [' A& Q, [7 j
else if( nLevel > 71 && nLevel < 84 )
7 `' l& t1 d7 A- g/ o# @* B9 N dwTmpSkLevel = 2;
1 |0 F: i' y* h5 e4 y7 _ else if( nLevel > 83 && nLevel < 96 )
+ c. {& N1 L: Q! L' j- I0 _ dwTmpSkLevel = 3;
. K. T8 [% n: R \ else if( nLevel > 95 && nLevel < 108 )" i g3 h) z: i( F6 D( @
dwTmpSkLevel = 4;; b5 R2 a' i/ y: i3 i6 n
else if( nLevel > 107 && nLevel < 120 )0 i5 e+ R0 B( i1 _( f6 x+ a6 r
dwTmpSkLevel = 5;
; f8 l- W1 a! Q/ F: o for( int i = 0; i < MAX_SKILL_JOB; i++ )
! f0 S h, U# N9 ]) u+ p7 g/ q {
: Y) s6 X" i5 Z2 ]$ U4 z+ A LPSKILL lpSkill = &(m_aJobSkill);, h6 G# N# g/ t. t) i; L; T" O0 u
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ |8 y8 m: o M' n, P6 y5 _ {
r1 B( t2 E/ z6 \+ [& ~/ ^0 j ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! R, b( ~ U( Q# Y if( pSkillProp == NULL )
6 B0 n4 [' w, K5 {0 m2 i2 t continue;
( Y5 y: t, H: R- c/ x% {- @( S+ G if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 j0 l( |: x, F/ B+ c# p4 V9 |' @
continue;- f( o$ h5 U% x2 ]6 u% O
lpSkill->dwLevel = dwTmpSkLevel;1 e: @$ N; F+ H5 V$ r& j. E
}
2 z T7 @9 P/ Q }2 V5 ~# i6 }9 \& H
}4 t6 b8 v, F6 v" S* Y* M8 s! h
else if(IsHero())
& X+ F% ]: G, B2 Q3 U* x ^! \, A) H {5 t8 _) R* O1 f& E
for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 f' x' l# j; L, y `2 Z1 J# ]$ z { % X& n v% G; H" J- X: x8 f
LPSKILL lpSkill = &(m_aJobSkill);
0 N! \+ Q4 ?- }/ E3 [$ | if( lpSkill && lpSkill->dwSkill != NULL_ID )- H9 o5 h6 `) j$ l
{- {3 c% q. R0 W
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& c; s/ S: ?" Z& {/ j; l0 G7 n if( pSkillProp == NULL )/ H' x" f n% h2 y, ?
continue;
# f; Z. I& m( _' t3 @/ d if( pSkillProp->dwItemKind1 != JTYPE_MASTER) X. K! u' O' N/ w5 G
continue;# a; U2 c+ |; C0 g m* y2 T
lpSkill->dwLevel = 5;
9 A4 w& { J2 w; Y! \3 e }: r) D/ W' w0 j8 Q, T
}
7 ^7 J* {& K# D& T$ v; h. o }% U# x" d# n- w4 X! w- m
else if(IsLegendHero())) b" A& j+ T9 ~: R* j7 f j" l
{, ]0 i$ [: |, S! }- w3 R7 @ R/ [
for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ C; u3 S9 S- R" R* {0 Q% V% H: V { 2 ?. S$ _2 f5 Z/ u0 q% o/ A9 t
LPSKILL lpSkill = &(m_aJobSkill);2 r: u; B8 a$ J1 B
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 L# R' B9 {( u3 y/ `' d {8 Y+ [8 D2 m' W7 P; c8 q* r
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 T" v* B) j* [6 r8 Y if( pSkillProp == NULL )! m$ Q: Z3 A3 v/ v @3 }
continue;
& d# X: L0 K7 ^4 W8 P if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 j2 f0 f5 O. L7 B: Y
continue;" D0 t7 H% J3 C7 Z5 A/ O1 u* \
lpSkill->dwLevel = 5;
; n' |6 Q" v6 |" R, c l- E }
" b5 r2 J8 k' E; R6 X) ~" B$ F }
. ^$ i& ~( {7 {' K }' R" J$ D; t& T7 | ~5 f
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" C7 {. h$ H, \# V( w: T) N
if( bGamma )( f, X6 ]1 p( x8 N) x% m
{5 T9 j7 m! x$ x1 K+ t+ e g
m_nExp1 = 0;
5 m3 @! x# O4 m) V- [, j4 H }$ O; Q& J- i/ @* O* S
1 S! C' U: v0 n; F" p3 w; C! r+ J
( (CUser*)this )->AddSetChangeJob( nJob );, C Q6 L6 U- l) l: Z
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
3 w" |& u3 ~% e5 z- s% u
1 F* @0 o7 {4 ~4 M( q
( R8 D& B7 f/ D; D#if __VER >= 11 // __SYS_PLAYER_DATA
" u3 {8 \) Z O- C( e g_dpDBClient.SendUpdatePlayerData( (CUser*)this );! f7 k2 m1 C5 ^3 n& Y
#else // __SYS_PLAYER_DATA
- Z' X5 r( F% s% |" o0 k g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
1 ^0 K# W! I) }5 y) T9 @/ R g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
! U8 [% h" g- y. L# F; U- r/ Q if( m_idGuild != 0 )
6 L- h, E- V4 Q5 x1 F+ Z5 w g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
) a2 R0 U/ K2 y9 \#endif // __SYS_PLAYER_DATA
/ r5 a f2 _# I# H SetHitPoint( GetMaxHitPoint() );0 Y: m3 U' ]0 j9 x6 z
SetManaPoint( GetMaxManaPoint() );4 Z7 R% E) X6 r% h+ w
SetFatiguePoint( GetMaxFatiguePoint() );' X4 i: l( G5 B$ d3 K' c
if( nJob >= 1 && nJob <= 4 )
h! @; C! N( k( k5 S {6 s) k; x; t! I4 M1 E0 `( W* P
m_nStr = m_nSta = m_nDex = m_nInt = 15;/ X0 Q. c( v1 [4 n
m_nRemainGP = 28; ^) F8 Q/ x0 W7 E
}
" |$ P# w" L) b) N& O& F8 E% y if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) y, s9 b4 I# K {$ R3 c2 H2 F$ J( n
m_nRemainGP = 118;
% u \2 P" s, T' K( L) L/ Y; Y" i2 e //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
/ \4 f% f6 W) D7 N m_nStr = m_nSta = m_nDex = m_nInt = 15;
* H0 l# V1 y" j' n4 H$ y" a/ P- V }, v9 C% X; \8 P7 X
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )/ J# X/ J1 @ s [0 [0 r3 h( y
{7 l, m6 x0 q' b/ i( H5 o, I
CItemElem itemelem;
d$ A1 T. B `6 ^ itemelem.m_nItemNum = 1;/ e+ f( l4 _# A4 C6 @# c9 E% I% y
itemelem.m_bCharged = TRUE;$ m' c* }; A- ]( e4 }
BYTE nID;! B- r+ o/ W4 @. q9 O
8 M! v0 x$ p3 T, d Q) O
if( nJob == JOB_MENTALIST_HERO )
8 `1 C6 J$ l8 d7 w' t9 Y7 i itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
5 ~/ F5 H' f% l7 U- W if( nJob == JOB_FORCEMASTER_HERO )
& S {7 F1 U% T" O# c4 a o itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;( p% O3 g U5 N( D1 {
8 A4 c+ [. W1 d ( ( CUser*)this)->CreateItem( &itemelem, &nID );- u9 ]# S9 a1 ^# {9 |; ? z
}4 E q3 v. o5 f" [9 R
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
7 M# l) j, ?& k+ C; H" f ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );. a3 C% o: N1 s3 V! }4 G/ D: E
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );1 _5 Q6 k1 B) a* C- M& t
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );/ h8 k! P" z8 S! F
( (CUser*)this )->AddTaskBar();*/3 t+ k. m- b+ f; \$ O5 v) F# B
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
2 t+ g* F7 S6 o' `* Y6 |#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?; [! W1 c1 b; t
((CUser*)this)->CheckHonorStat();" Q0 b' P5 I& d2 w3 R( \
((CUser*)this)->AddHonorListAck();! V( h% w' @8 b- B" ] r
g_UserMng.AddHonorTitleChange( this, m_nHonor);7 ]5 C9 J2 s( |
#endif // __HONORABLE_TITLE // ′Tà?7 ?1 }* C7 e; j
}
, n$ v5 N# i7 L3 G. @8 R#endif // __WORLDSERVER
7 v$ Q5 T$ Z/ t3 K- s s/ F- _} 2 d% k& r, T7 o/ u
2 l( { l6 i. x7 ?& L1 E. ?
然后你进入functextcmd.cpp并添加以下- W3 o, j( H, J/ N9 x) E
3 q9 G( n, h/ w6 ~6 T/ b
代码:
" l8 m& f& Z6 N ^7 RON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
/ L. m4 C- G* w; D; j9 g J下面插入9 ~+ m; l1 ~$ T+ L! {
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
! S% m' b$ n: ?! }; x8 B m% `3 t8 T/ n, J
然后你去
2 g2 A/ Y6 b B, l
) n7 _2 h) g' c7 L: e代码:+ y4 ~4 L6 a1 y1 k
代码% \0 n# o$ q. V# a6 ]! C
BOOL TextCmd_ClearPropose( CScanner & s )
9 j" w& p! X" W1 H8 Y2 `{
( n1 m' _! j2 w* v#ifdef __WORLDSERVER
# c/ }2 |- v8 ^2 M/ } CUser* pUser = (CUser*)s.dwValue;
- z! N/ S* U( @) v g_dpDBClient.SendClearPropose();
4 Q5 R1 N! f8 w#endif // __WORLDSERVER
' D# o0 B6 k9 L) G* K5 ^5 [ return TRUE;; s3 n) w* F, l X, h9 f
}) l& N) U8 i0 E5 I0 F& R
下面插入
H* X) i6 F# fBOOL TextCmd_rebirth( CScanner& scanner )
* c4 U) G4 Y$ C{
* ?9 m! \# l+ Z& `8 c#ifdef __WORLDSERVER! I/ V1 ]9 \8 o) f1 l, x% {
CUser *pUser;
1 S( D+ T7 y! LpUser = (CUser*)scanner.dwValue;
" m9 S9 n% e8 p- aif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
2 N( O9 S ]& G& Z' q0 f, ~3 EpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
* V4 S4 S/ A+ O' i! ^6 C; |2 @else
1 o' R$ S1 n$ q2 A# ^pUser->AddText("你还未达到重生条件!");
; f; \( e2 ]- f) G#endif5 i" U! d' r) R& N
return TRUE;
& f- Z* q( y4 a+ h* B4 G& F+ `}
' @8 O8 }* c$ S( D
4 [' z2 ~4 x4 ~; Y! E
7 r9 C7 d. A% H6 _; f( V3 W% }
. x; S3 l* _+ x+ q$ x7 G' g% r7 g4 t K9 \0 [
|
|