|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel6 q) s! O6 F0 \' O
: m2 ~5 H1 I+ J8 Q7 m" e ~+ }Mover.h6 R. F/ @- e, {* c
代码:
( X: V, j0 h! ~3 S找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
; G% H9 u% Q3 ^4 `' ^2 j/ u9 ^! r; ^$ u2 P5 }
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
* j1 x6 P( a( p5 ^2 s/ q, E& v5 k6 ]) U3 {# F1 u
然后你去mover.cpp添加- K$ v( k- S! }5 u, ]5 L
4 W- r9 `/ L! h1 O- T/ C代码:1 P( C0 p# ?/ {/ Y4 d8 P! d9 `- ^
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )- y& c$ J. Y8 k: \8 z9 _% X
{
% u z1 V6 z# H& z#ifdef __WORLDSERVER+ ]7 W; l1 O1 y$ F k* ^3 p( B$ z6 ?
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó8 x! l& t/ n. i: W6 O+ l5 a
MoverProp* pProp = GetProp();$ d8 y* T3 `/ {5 H/ u- u4 q
if( pProp ) M* W$ E5 i3 q+ M8 Q2 `
{0 E6 z4 \/ A! }8 \: _
if( nJob > 0 && nJob < MAX_LEGEND_HERO )/ D4 T, l3 T, g
{
* }0 N9 P9 E2 }" }0 c AddChangeJob( nJob );
9 a$ j& T% _- X* t" |1 ] }else{+ \, c X0 w% w; \7 W. k& m
return;
; _3 T) \- W7 F$ s }$ I8 W* j( y2 G* u, c* ]
int nPoint = 0;
' s _ M) u$ f! ?. z if( m_nJob == JOB_MERCENARY )
' b/ s2 J) F1 j nPoint += 40;6 ~: e* o. J( @! O) }' b
else if( m_nJob == JOB_ACROBAT )
! ~( j/ r3 T2 U/ s nPoint += 50;9 u [; n1 q: ^6 v9 ?3 u3 x
else if( m_nJob == JOB_ASSIST ): v* K6 } f( w- |& _
nPoint += 60;
, D- |# j+ I; Y: h, {( S2 H else if( m_nJob == JOB_MAGICIAN )
; L$ X$ h4 O; Y; l: p7 c1 k* X3 _ nPoint += 90;0 l) P% ]- J, ~+ R( F) P; }, K" `" a( r
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 U: x: s# z6 J& s2 j" m. C4 E
nPoint += 120;; T( R8 Q: |7 ^, h$ }
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
. X I$ n: J9 R! A4 j; z3 Z nPoint += 150;5 g* T8 y7 i: g, i; v: s, b! g0 r
else if( m_nJob == JOB_RINGMASTER )2 M" x. W* Z) w$ p, M6 i4 z
nPoint += 160;
, \% t( ?$ m( C. N' \) r8 A else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
! ~& t! a8 P) I' r nPoint += 180;! m- k5 R" t" N, n
else if( m_nJob == JOB_ELEMENTOR )9 S: J# ^+ B( l) k0 x: I( i
nPoint += 390;% ?* ~' }$ T3 u; F* W( f: Q
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) E9 r/ {+ M* r% f C+ @4 |+ w
nPoint += 120;
* X! D* Q- h' _, `+ H2 k8 y else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
S, g. W2 r P) o: d+ R2 d4 M* o2 L nPoint += 150;
6 }6 B# c3 J9 I1 P8 d8 L8 Y* _ else if( nJob == JOB_FLORIST_HERO )1 V" p' ~8 ^: j* J) }4 F9 d, X2 S6 D
nPoint += 160;
/ u2 S6 X! q' U4 {% ?/ s# y r else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )5 X+ `& L5 @; O( Q9 w" e
nPoint += 180;
3 o/ C$ `; W9 C8 d+ Y9 P0 N else if( nJob == JOB_ELEMENTORLORD_HERO )
3 w5 O" Q. m$ q2 m, |" \* U4 d) a nPoint += 390;) J' E* ]4 W0 \/ s* M) q5 \4 H
7 u, R$ h5 q3 m$ U/ w# p" _2 Q# f
AddSkillPoint( nPoint );
' R/ \# A5 B) `+ N( O/ G# c$ d; I m_nLevel = nLevel;
. K2 \ |9 W) V* d( ]
+ ^) D! a- T2 b6 u. C SetJobLevel( nLevel, nJob );5 b! z9 H4 V' B: m; \
m_nDeathLevel = nLevel;3 r5 Z1 L" l6 R) h- E. t# d- @
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 f& ?8 R1 n1 V* ?) M7 ~- J
if(IsMaster())& y& V; E, `1 b. T. E
{
0 }& W* v) s! A( e int dwTmpSkLevel = 1;//60, 72, 84, 96, 1087 m, a: {$ h$ P+ a
if( nLevel > 59 && nLevel < 72 )
$ B. |& f; v! j1 ^ dwTmpSkLevel = 1;
" z$ ~' U0 b3 ^- j else if( nLevel > 71 && nLevel < 84 )5 h! H O# R; h
dwTmpSkLevel = 2;4 J4 S7 b6 D3 x Y' w% l* u4 `& `0 w6 l
else if( nLevel > 83 && nLevel < 96 )
% f1 L3 P3 q Q* R4 c) q, a; a# ` dwTmpSkLevel = 3;$ I; ]4 j; i" b/ c B
else if( nLevel > 95 && nLevel < 108 )$ Z8 z- \% G M5 t& F7 |
dwTmpSkLevel = 4;
1 x5 T( I" G2 N3 f& u else if( nLevel > 107 && nLevel < 120 ); H# |( K8 r* w: T6 V
dwTmpSkLevel = 5;5 L) c; G0 R- [& L
for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ ?8 Q( Z$ o+ _( p3 o { 4 @. s$ Q. R R; W
LPSKILL lpSkill = &(m_aJobSkill);
! M4 b, G7 i' H6 D# @' i if( lpSkill && lpSkill->dwSkill != NULL_ID )% n& G2 O$ w! k$ n# L: m- V
{* G" u6 G3 l5 q8 g9 { W8 R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 s8 M3 `0 q0 Z0 ^) `" l8 Z
if( pSkillProp == NULL )
2 |2 G6 }) s6 b4 { continue;
7 v/ \* R6 E L& q" s s if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& d7 K7 F% c/ t6 `3 n
continue;
+ t. z0 Q# U/ J. R. F7 ^ lpSkill->dwLevel = dwTmpSkLevel;5 W! p& n1 B& d
}
E, P2 n1 I% e$ o z5 d5 s$ i" b: P }) _3 `. G$ {* G. j7 H+ e# H
}2 D5 ?9 q, G5 r8 a
else if(IsHero())
9 a/ ?, {" [$ i6 y {
7 w0 ^2 r5 ?6 @4 J m: V8 U for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! I3 D) d* P2 R- A# o( X$ O4 l
{
& V& Y0 k- Q$ U$ u LPSKILL lpSkill = &(m_aJobSkill);
6 z7 g. Q2 E9 k; s' Y+ A if( lpSkill && lpSkill->dwSkill != NULL_ID )
& ~# F! y- R( o1 \' `0 _ {
% s# m6 P2 `2 S0 ~5 P ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 W2 F. x& I; f! L- s* s } if( pSkillProp == NULL )
8 G1 y- p4 o' [6 w( v continue;* f/ L- ]+ K( ~& `+ W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ ?, U( e1 \2 ~" a0 \5 K2 \* p continue;, v7 a: _% _- f8 s
lpSkill->dwLevel = 5;! O0 X! m' Q0 d
}2 v7 j' K ? U5 w0 x( a8 N
}
0 v6 r( V7 J/ O4 Y% t6 X+ W) S }( Z& R3 l U- Y' r% `/ v
else if(IsLegendHero())& C5 y% e( K/ l/ O! s
{9 y; T# \' T2 X5 s; e9 J
for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 y7 f9 W: R" f { 8 o% I: [* w8 G8 y9 A
LPSKILL lpSkill = &(m_aJobSkill);% {% I+ s$ }( i
if( lpSkill && lpSkill->dwSkill != NULL_ID )
! r4 h7 W# |* N0 t4 Y {
; ]6 q6 P4 M: d8 \- q7 m ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; J) e$ H$ ?; K7 i1 z
if( pSkillProp == NULL )
7 I7 t- b7 D& h continue;
+ \9 p* V2 }" S: d& i if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) ]3 q8 P: S( P9 N& D! j+ e: q; x continue;
/ c) h4 O9 v* O# Q% ?4 F lpSkill->dwLevel = 5;
3 H% Q: C+ t2 A' c$ u5 K }4 c+ M5 v2 P u/ V: l
}4 L" a8 I* \# R7 u8 k
}3 ^3 @0 \( A+ S+ Q
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
2 q. ?: f1 a( q: y if( bGamma )1 L4 f" P5 H7 {& f) W
{
. |9 {( e, p$ ?) C. s( s m_nExp1 = 0;# V. v. Z6 @) a3 d4 k
}
. C# w% Y% x9 x3 s7 n6 G3 B( Z! `0 X+ y0 x
( (CUser*)this )->AddSetChangeJob( nJob );
% b3 _! m7 } g! O1 _ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );% B2 A" s' d/ P2 d. z; h0 a( A
3 t/ [- D' v( y' B7 n3 F. W" |1 C% W% q; h$ j
#if __VER >= 11 // __SYS_PLAYER_DATA0 K# Q* A% R+ B7 l) y2 ]( r
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );( v$ R6 I% E/ c2 p2 I6 u
#else // __SYS_PLAYER_DATA8 U+ H% ~. i& Q- [% G
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );7 r/ ?" P8 @' {6 T6 D; j
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
" K$ C5 W& l( p4 r1 e J- t( z if( m_idGuild != 0 ). Y' A/ t% X9 I8 X1 P6 S
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );7 V- ]* w; ~3 E% y% M# }
#endif // __SYS_PLAYER_DATA
5 F# [2 y) b+ ~( C6 R) s& W SetHitPoint( GetMaxHitPoint() );6 L2 a$ n, @. M3 N" y
SetManaPoint( GetMaxManaPoint() );
7 |. Q8 P! q, o+ G) ^ SetFatiguePoint( GetMaxFatiguePoint() );
" F4 d0 z# i# N7 y' G, c) H. T5 N if( nJob >= 1 && nJob <= 4 )
# R; U+ _* ~& p. W4 w4 n: ` {0 ]8 ~! D* l6 y$ P* F
m_nStr = m_nSta = m_nDex = m_nInt = 15;
1 A" J$ x D: A$ i& \/ ~ m_nRemainGP = 28;
* \4 _! O J1 z2 y }7 \4 _! S/ ?+ K$ p9 w
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ); ]9 G( I5 t8 M) p. [
{
. R7 h3 _- P1 n& n/ k' v, k m_nRemainGP = 118;* S4 D" A* c7 Q. ?: k7 [
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;; t' D7 @$ j: u1 l" Y
m_nStr = m_nSta = m_nDex = m_nInt = 15;3 q1 C k7 ?4 Q1 n ]' e8 S2 K7 p
}
( Q2 B$ Q$ y+ k" H; \" Y; K% f if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )6 A1 G: Y- o8 x, R% G
{+ a( V. O$ C9 F' ]
CItemElem itemelem;
5 z! ]; K. m0 n" V$ D itemelem.m_nItemNum = 1;2 h7 Q+ b7 h1 A) X) X! u2 I6 \$ S4 D
itemelem.m_bCharged = TRUE;
# T$ }1 D+ `- G* T BYTE nID;
1 r8 K9 u: ]0 A$ ?) g( G
% i1 W5 u. \4 Z if( nJob == JOB_MENTALIST_HERO )
* _5 z. H T" Z- Z8 v) C. b# L7 ^3 N" @ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
" C& {4 `( b/ _, H7 K' u if( nJob == JOB_FORCEMASTER_HERO )
3 t, R B* J5 G. g* x( I itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
( p+ `5 ]+ m/ L7 g+ D
: o( I0 B8 V7 r7 T0 T. g; m7 I; b9 a ( ( CUser*)this)->CreateItem( &itemelem, &nID );; K+ X& [# n# S, p# G: ~6 [
}
6 F/ I7 c0 `- N9 t g_UserMng.AddSetLevel( this, (WORD)m_nLevel );1 B9 W3 W6 e: u$ T- N
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );# W* V% p5 s0 J. r) j
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );% @8 e) j- ~, X
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );+ ~: d0 m2 a1 a( ~' x- P, N q
( (CUser*)this )->AddTaskBar();*/1 U W% a+ l9 a. ]9 G
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );2 C/ W+ r( Y# H& ^& \% r1 @
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
9 @' i0 R! D+ m9 ~. H: x: _ ((CUser*)this)->CheckHonorStat();
& C J3 l5 m! K, f1 G ((CUser*)this)->AddHonorListAck();
$ V" o* S& q1 K$ F3 \9 K g_UserMng.AddHonorTitleChange( this, m_nHonor);
$ C3 N" A! T; j! g9 v ~#endif // __HONORABLE_TITLE // ′Tà?/ Q/ b6 ]: j0 J0 p w
}2 [, ?# A' a) c- N
#endif // __WORLDSERVER9 q2 V5 ~& h" ~+ Z) \
}
) U, |, L& m6 X" ^3 }$ U2 e& Y* g a, J
然后你进入functextcmd.cpp并添加以下7 v2 a1 j% i# Q0 u- ?. P
9 X8 J. l3 M7 X9 g4 {% o( |! F) K代码:6 ]+ O& k+ S9 o0 R0 @$ e
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ). ?& V( l: P5 s+ o$ Z
下面插入( f ]) B8 o `
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
5 }0 J$ N s+ Q C3 ?: |' A* o* H& [" P+ f* n! F
然后你去
D. d4 C* y! A# N" F0 I
/ U! s. y, p, h T( k代码:$ [, Z3 l- N/ ]$ p4 s
代码0 e+ @. A% |6 {6 V. i
BOOL TextCmd_ClearPropose( CScanner & s ) j O9 h3 e8 } X/ \4 o& }
{
* G2 t/ W$ `/ e! V B3 a#ifdef __WORLDSERVER
& l, ?; Z E. Y CUser* pUser = (CUser*)s.dwValue;
0 _+ l/ |; K; F5 l0 Z* A; F g_dpDBClient.SendClearPropose();- N; e( ^5 ~* \; g3 C4 q
#endif // __WORLDSERVER+ w {! C% V8 N
return TRUE;
& V+ P! N: M! M9 ]) n/ h- l; M}2 V& t( z( t" b. A7 D2 p! a
下面插入
0 x+ N# c# d$ b: U/ U6 ]$ pBOOL TextCmd_rebirth( CScanner& scanner )
4 Z* k u; h9 P& `, I( ~3 W{
. S- e8 v t, A/ x# _( k#ifdef __WORLDSERVER
( t" U8 _3 Y- I* l, [4 l. A3 @CUser *pUser;
# w& o4 |$ u! L3 d: t4 a6 [pUser = (CUser*)scanner.dwValue; W0 k. S; v$ h3 k& X( y
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
1 ?7 a: }1 F& l6 \! p& s. h1 [pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);% ~+ F$ ^. ~4 J1 ]- E
else
1 [2 N8 w3 Y3 T5 PpUser->AddText("你还未达到重生条件!");7 Q# @. D9 g7 b
#endif
8 }2 V" Q/ H3 v2 ]return TRUE;# k6 u- O& c! H B
}
" e: t, n, V ~3 {( W# k" K |
7 t7 y+ z& I' n$ h3 B9 O7 ~7 T5 w
' P% q9 K+ w: m4 F
8 ^7 @/ O8 K4 G0 k( b' O) i; f; \ |
|