| 
 | 
 
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel 
* i" M5 m: O8 x7 |7 Q% t; X- |/ }* b: C; c5 y8 E 
Mover.h9 N8 a# Z8 t3 B/ C' H 
代码:, x1 |& ^) C+ v  m+ R2 [ 
找到: void            InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE );            // °′???| nLevel·? 1ù2?áü 
/ B0 U4 Y5 Y; D, [& A9 ~: Z+ q" t& t$ I$ G$ V% c4 \ 
下面插入: void            InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;  . p7 E6 y+ ]/ R. g 
 
1 Q" g' h4 ]" H0 Q+ ~然后你去mover.cpp添加 
+ G/ v& c4 g+ @- f1 p  b* q/ T# ~: f$ |. h6 s0 O% B: U& T4 N 
代码:# m  C  A& C/ Q 
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )+ ]: ^- E( K7 m; q4 Q1 ^) _# H 
{ 
! y# h" P0 A- A* z1 W, K; c#ifdef __WORLDSERVER 
  f' E8 v8 k: T8 S; D( l) z    // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó 
  c3 f- X7 U' ^) ~% M/ g    MoverProp* pProp = GetProp();! X8 ~8 r7 d. P; w  h/ k 
    if( pProp ). D2 X, p$ k) E" s# Q5 R 
    {6 U$ v% S! P+ l$ E& n: ] 
        if( nJob > 0 && nJob < MAX_LEGEND_HERO )( ?8 n3 v- J+ U; C$ Y$ s, ] 
        { 
+ G! G6 F9 s$ {- t# H            AddChangeJob( nJob );" W. R) X; c5 U  w6 P 
        }else{) Z- e. e# l9 a  W( J 
            return; 
$ f; c8 O8 ^( u9 R9 [; a" p, a7 e        } 
" N+ @( L* g% S        int nPoint = 0;8 Q. i: c7 |; Q7 {$ O 
        if( m_nJob == JOB_MERCENARY ) 
! L6 c2 A& ^6 ~, t/ T            nPoint += 40;: {- v8 P7 A- O' Z 
        else if( m_nJob == JOB_ACROBAT )' h! u- n2 F* `, j  S 
            nPoint += 50;, `+ ]1 k6 w& e3 s" B 
        else if( m_nJob == JOB_ASSIST ) 
, S  x4 L7 E; t/ a$ x8 }1 s            nPoint += 60; 
$ ]! R2 _* ?7 Z( m. \# G        else if( m_nJob == JOB_MAGICIAN ) 
. a  N$ x  \$ O4 |            nPoint += 90; 
9 U# A) k9 \3 ?: M        else if( m_nJob ==  JOB_KNIGHT || m_nJob ==  JOB_BLADE ) 
( C" X. M6 D( ^1 G            nPoint += 120; 
/ L4 K# n4 d. e        else if( m_nJob ==  JOB_JESTER || m_nJob ==  JOB_RANGER ) 
6 _8 G( H: m* P" N% b' o            nPoint += 150;7 G. o! n! H/ j  M8 f 
        else if( m_nJob ==  JOB_RINGMASTER ) 
$ t5 R# r- e+ M( q! b9 R8 [* v& z            nPoint += 160; 
# }. q' E. {+ _        else if( m_nJob ==  JOB_BILLPOSTER || m_nJob ==  JOB_PSYCHIKEEPER ) 
! n2 q& J' |  |0 U            nPoint += 180; 
/ s, x2 b. s0 R        else if( m_nJob ==  JOB_ELEMENTOR ). N3 w9 ]2 y3 E' o& t* [" i 
            nPoint += 390;' ~) z+ D' i( n' t 
        else if( nJob ==  JOB_LORDTEMPLER_HERO || nJob ==  JOB_STORMBLADE_HERO )2 T& \$ Z/ r4 z4 Y) C3 ?& s 
            nPoint += 120; 
8 p+ D2 w+ B, O3 A9 p) T        else if( nJob ==  JOB_WINDLURKER_HERO || nJob ==  JOB_CRACKSHOOTER_HERO ) 
# \$ {, ^/ h4 C/ W8 X+ m: r            nPoint += 150;. D' @0 E7 w/ y0 W8 p5 T 
        else if( nJob ==  JOB_FLORIST_HERO ) 
! J" s* s, I% L+ ?: k1 u$ P            nPoint += 160;$ n, |+ {9 E/ k6 Z  n' r2 F0 t 
        else if( nJob ==  JOB_FORCEMASTER_HERO || nJob ==  JOB_MENTALIST_HERO ) 
5 c6 i; f, t7 o            nPoint += 180;) ^9 p$ g7 ]- S* h 
        else if( nJob ==  JOB_ELEMENTORLORD_HERO )! [& X$ B( @) s4 ~ 
            nPoint += 390; 
% O& u) H& q1 a. O( v5 Y6 G6 K! o( o 
        AddSkillPoint( nPoint ); 
9 O+ \; z/ p; t) N9 o+ D* r        m_nLevel = nLevel; 
! o1 ]/ i7 z. P 
% G  G" m' I/ |/ n' N1 M4 ?2 v        SetJobLevel( nLevel, nJob );+ f+ w1 O3 y. W" Z3 | 
        m_nDeathLevel = nLevel; 
$ X6 r- K5 L# {6 Y* i! b#if __VER >= 10 // __LEGEND    //    10?÷ àü?????o??    Neuz, World, Trans) _" Z, W/ x' u9 K; O, Y) A 
        if(IsMaster()) 
# s  c( r" _! X/ k: G/ ^        {" k+ `# l% ~) |: [ 
            int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 
+ v7 }' p8 y+ u6 D            if( nLevel > 59 && nLevel < 72 ) 
0 T" g7 [. R; j1 l/ H: y0 L. d                dwTmpSkLevel = 1;& ^: F4 w: x0 U: I1 N* ?  _ 
            else if( nLevel > 71 && nLevel < 84 ) 
+ _( B7 ], f+ M: T5 q( [                dwTmpSkLevel = 2;2 i" o9 S* l* E$ M' d) i# {7 K; p 
            else if( nLevel > 83 && nLevel < 96 )+ ~. c- V8 {  S, B$ u 
                dwTmpSkLevel = 3;" p0 `0 i5 y9 x' O) Q; z- f0 g 
            else if( nLevel > 95 && nLevel < 108 )# J$ ^" A1 ]3 p) h 
                dwTmpSkLevel = 4;- b8 _4 ^, u5 \5 b" ~5 W, h8 E 
            else if( nLevel > 107 && nLevel < 120 )5 L7 R* ]# }2 y; a4 Y6 r 
                dwTmpSkLevel = 5;% M4 F0 v% z& j. s. @6 w+ i 
            for( int i = 0; i < MAX_SKILL_JOB; i++ )  
1 k4 @2 z. A' `6 w( ^            {                - q. v  m$ g6 H0 n4 U% q 
                LPSKILL lpSkill = &(m_aJobSkill); 
4 d  J( W1 X5 z3 f" p                if( lpSkill && lpSkill->dwSkill != NULL_ID ), A( X# e3 ]3 f- S( ]' E  p 
                { 
" p6 x6 _1 @+ c                    ItemProp* pSkillProp    = prj.GetSkillProp( lpSkill->dwSkill );            ) ~4 N( M- d9 ~4 ^4 [6 C% C) A 
                    if( pSkillProp == NULL ) 
9 o$ T) H9 V9 d& X7 o                        continue; 
2 v+ E8 O3 p3 F& M; J8 E4 Z7 F                    if( pSkillProp->dwItemKind1 != JTYPE_MASTER) 
9 {" n" H7 F# S8 H" f+ u  l; Z. Q                        continue; 
( Z) ]' d( F3 p  C5 }' f                    lpSkill->dwLevel = dwTmpSkLevel; 
8 {: E2 ]8 q. l# f" [& b3 N  b/ T                }4 ?  _: O) k9 T 
            } 
3 W0 N% |/ }( V" V        }' s" |: d- ]0 E9 K* o1 `, k1 d 
        else if(IsHero())7 m1 ~5 H+ @+ X$ v 
        { 
) c" ?4 @, J+ |" ~/ g, m            for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 L1 B3 d3 y: I2 @ 
            {                 
/ @* ]! ]! ?9 f1 s                LPSKILL lpSkill = &(m_aJobSkill); 
0 L/ B8 b. G) n( f2 a                if( lpSkill && lpSkill->dwSkill != NULL_ID ) 
( o+ R9 l/ m% T3 @7 @6 t! q# m                { 
* @9 u: G: c$ w* [                    ItemProp* pSkillProp    = prj.GetSkillProp( lpSkill->dwSkill );            4 X. v9 l* B9 G% C8 a 
                    if( pSkillProp == NULL ) 
% y, a% B0 \. a* L5 F/ ]' `                        continue; 
+ ^7 w6 R6 N: D                    if( pSkillProp->dwItemKind1 != JTYPE_MASTER) 
! X$ v& j2 p2 V/ f# }( a                        continue;) g+ M3 x/ [3 a+ Y 
                    lpSkill->dwLevel = 5; 
( b$ x1 Y8 c; x) {                } 
( ~# ^6 k: E3 C& R$ W* B! E, `            }2 n) K" _& q) `8 @! q- J 
        }- A0 C8 a  a! N- n 
        else if(IsLegendHero())2 R. P3 {& |+ T- v 
        {7 x0 F/ a6 p  C. S8 B 
            for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' r7 j5 i# x# i& ~ 
            {                 
8 i2 b3 ~& s3 ?& m0 ]                LPSKILL lpSkill = &(m_aJobSkill); 
5 ?+ e+ E& e) o0 s' y                if( lpSkill && lpSkill->dwSkill != NULL_ID ), l# ?& v+ v( ?- w& q2 {% K 
                { 
/ k7 Y: i% `7 N0 `# [/ O; n                    ItemProp* pSkillProp    = prj.GetSkillProp( lpSkill->dwSkill );            , Q7 D: T5 F" t# k8 I8 r+ ^0 B 
                    if( pSkillProp == NULL ) 
# W% y" w4 s& ?                        continue; 
; P; f6 q0 n; G$ |% L2 h1 e                    if( pSkillProp->dwItemKind1 != JTYPE_MASTER) 
  h4 S0 O9 H3 U9 G% s                        continue;/ s( C2 F- M0 l  A5 E 
                    lpSkill->dwLevel = 5;1 I' P+ i, ~% ~2 w6 b% X# t 
                } 
- J- k" G3 V, s# [            } 
% n$ o7 `* M# ^4 x$ l9 ]: N        }8 v7 j: G( R5 r7 [ 
#endif    //     __LEGEND    //    10?÷ àü?????o??    Neuz, World, Trans; I8 [- g! G5 x 
        if( bGamma )0 Q/ i: |- R$ Y4 D' e$ \; B 
        { 
9 c! T6 g7 j) l8 o            m_nExp1 = 0; 
7 k5 a. o% w  m# R        }" ~; O  u+ t# o- E 
3 i5 j  O. O) G; D/ c8 l 
        ( (CUser*)this )->AddSetChangeJob( nJob ); 
  A& g2 c0 `$ v  V0 k+ G/ H        g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );1 s$ I: L* t8 E' j 
2 P- {" n6 s- E- L- G 
 
4 ?8 A' u' q* |) X#if __VER >= 11 // __SYS_PLAYER_DATA 
  b9 B' w" A$ P  c, l        g_dpDBClient.SendUpdatePlayerData( (CUser*)this );/ w* _- y4 J9 M6 r* B 
#else    // __SYS_PLAYER_DATA" d, I; m: ^  U$ V' [( g 
        g_DPCoreClient.SendPartyMemberJob( (CUser*)this ); 
0 f( m/ w  o: `8 H( W  ^        g_DPCoreClient.SendFriendChangeJob( (CUser*)this ); 
8 ^3 H7 V' o3 `( w0 l( P        if( m_idGuild != 0 )3 a! q/ j9 B4 ?3 _) `! v/ E 
            g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this ); 
" ?; X: u8 z# F! i" z  e6 o#endif    // __SYS_PLAYER_DATA, K' N9 W+ e* P! P) u) r 
        SetHitPoint( GetMaxHitPoint() ); 
0 _* W/ M" ]. J+ n        SetManaPoint( GetMaxManaPoint() );; m6 [3 h6 Z* _4 x' Z$ W2 z 
        SetFatiguePoint( GetMaxFatiguePoint() );7 y; S- n; M$ r( Z, E( r/ q 
        if( nJob >= 1 && nJob <= 4 ) 
. g. c% D% m; ]        {& P7 \$ q# C9 |# u! u8 O3 U 
            m_nStr = m_nSta = m_nDex = m_nInt = 15; 
/ M- X$ P+ f' R& u3 I" r            m_nRemainGP = 28;$ p- H8 ~( A" M& _ 
        } 
+ Y8 w6 L# r0 q! w        if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- ?/ @8 r7 v! \ 
        { 
, V! E* v+ a+ @  O- Y; _; i' w            m_nRemainGP = 118; 
! a% \) k4 P9 D' }            //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;6 @' r+ A9 @4 P% ^  E8 t; c 
            m_nStr = m_nSta = m_nDex = m_nInt = 15; 
6 V! c- e% t) Y) w$ H        } 
/ n, I9 u& i0 t; |, x" s7 c        if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ) 
* H! I$ `" J/ L        { 
" ]+ D. T5 B# n" z0 H+ j2 D            CItemElem itemelem;" o! l0 @) t+ H) T5 W# z. g) v 
            itemelem.m_nItemNum = 1;1 ^/ K$ @: I" Y  w/ b8 w 
            itemelem.m_bCharged = TRUE;) Q; {; O! O- D& ?/ o% V9 ^ 
            BYTE nID; 
, X+ S. h) f# @' l$ W 
0 Q  g; K8 X5 m% L/ B5 {5 Z, L6 m            if( nJob == JOB_MENTALIST_HERO ): m, B5 r% A7 P$ T3 O! ^5 g 
                itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN; 
' Y/ S2 j' h! o$ v2 \1 g4 e8 k            if( nJob == JOB_FORCEMASTER_HERO )2 _2 L% \0 n3 N" I8 r7 U( u 
                itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; 
$ b2 v5 X# C- F( ~/ E, h, d7 }$ a& H7 C$ h* N! @5 n 
            ( ( CUser*)this)->CreateItem( &itemelem, &nID );) J/ D& O: i0 t  W& g: v# Q1 ^ 
        }0 N' H$ H5 G+ f0 l& A& y6 q 
        g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); 
! v/ E+ n. ^& _( T! E8 i: \& p- e        ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );# `# i+ l, p# L- N 
        ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );' J/ `+ a) U$ p; n2 S 
        /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL ); 
: ]/ W* q# q' g0 d        ( (CUser*)this )->AddTaskBar();*/ 
& Q- z1 B3 p/ e9 I        ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );/ G# }5 p" z- I2 q! D/ W: m: i 
#if __VER >= 13 // __HONORABLE_TITLE            // ′Tà? 
  T) ^- u. f5 I7 r8 y        ((CUser*)this)->CheckHonorStat();. z2 \3 u* w) C: z9 l6 ]& { 
        ((CUser*)this)->AddHonorListAck(); 
$ Q. s- M/ b7 I8 X        g_UserMng.AddHonorTitleChange( this, m_nHonor); 
. B' x, c9 c/ F#endif    // __HONORABLE_TITLE            // ′Tà? 
" ?% U- H9 g# W& ^    }# `( R1 l8 y4 w0 Y% a- n 
#endif // __WORLDSERVER% K5 I0 t6 _2 d 
}  " y9 ?3 o' [3 u  x) _0 c 
( o, F7 X$ e9 L" Z) l. z3 h* }) E 
然后你进入functextcmd.cpp并添加以下6 A" w, L8 w9 Q& l8 p' K6 c9 e 
1 f5 \2 s( t9 s, }# V 
代码:. ]" D6 }4 d( F  O 
ON_TEXTCMDFUNC( TextCmd_say,                   "say",               "say",            "??",             "??",      TCM_SERVER, AUTH_GENERAL      , "?ó?èàó [/?í·é ??àìμe 3???]" )* C9 {* |  J: X# q& y9 q 
下面插入0 O- Q% p, c) W. c/ K0 X& ~ 
ON_TEXTCMDFUNC( TextCmd_rebirth,              "rebirth",          "rebirth",             "?ú·1?÷??",       "?ú·1",    TCM_SERVER, AUTH_GENERAL   , "?ú·1?÷??" )   
# [6 [% Q8 p9 F) n( F; ?3 P. \5 j- A- |* a. I3 ~8 ^$ C 
然后你去 
* H0 H) @% ~8 h6 N: ~1 }" d+ k- n2 t0 J2 u: n) { 
代码:; w" Q. ^/ D- I: N 
代码 
+ B+ J' b1 H/ Z" O3 t4 ]8 `1 xBOOL TextCmd_ClearPropose( CScanner & s ) 
  j9 c, I$ i7 [! N- ~{ 
5 f' N8 n9 H! M, L. p#ifdef __WORLDSERVER 
5 p6 |! k2 |- _+ s, a    CUser* pUser    = (CUser*)s.dwValue; 
- v! g! U9 c5 S! h9 ]1 Y    g_dpDBClient.SendClearPropose();  \# w* R) Q- M1 `. P) E 
#endif    // __WORLDSERVER4 N5 P( M9 d, K' `, F; s9 r 
    return TRUE; 
0 K- l+ A1 I3 _; b  p1 k} 
5 u: P6 o" Q  A* y' \& Z下面插入) d$ D) K. z" z 
BOOL TextCmd_rebirth( CScanner& scanner ) 
& L# H/ ~, {2 ~) M{ 
4 R* n" ~7 W6 y) {9 v1 r) \7 k1 p#ifdef __WORLDSERVER 
/ Q2 z9 k$ B$ e3 @: kCUser *pUser;0 t, l8 n; B9 @' L5 f' x( e 
pUser = (CUser*)scanner.dwValue;. w* a$ N) J- h 
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())8 Q! \/ H% m5 e) e. O$ v 
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);9 M2 l( A% S- {- ^7 `; h 
else0 y$ y. @7 w4 x, O4 _& w8 ~2 E' V6 E 
pUser->AddText("你还未达到重生条件!");% H3 D0 r0 H# V9 M. A$ J) r" o 
#endif/ v& h/ t8 S; P7 B8 |0 r 
return TRUE;3 f! m9 n# `4 p8 h 
}  , z  z" G7 l0 P1 [+ g% x9 s 
' E+ j, U0 d+ ^: b; `5 d, v 
 
5 _& [2 ~4 x4 X1 e2 o 
$ N; Z, I5 L2 B! g$ B; e7 I( `, N" C( c3 s( m; B0 v3 O" p 
 |   
 
 
 
 |