|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ }. s" @6 a/ I6 p( z F* z: M2 W
% s, d. _7 j# d* ~+ T1 L0 @. lMover.h
8 Y9 n: I7 H- q. z代码:( O; D0 i, i b9 w
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü+ D1 @0 n; |5 D$ X s
5 d# N7 m" l- u
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
; @6 x- Y* ^5 l" @! _2 w2 B) c: n6 O* |
然后你去mover.cpp添加
& ^0 J" ]* _$ A3 t* k
4 H8 `2 n7 V" V1 ~代码:
' k9 [* O5 z1 t* G& Q: x7 Qvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )9 Z7 S* U- p: G& I
{" [! q i' A g" _3 @, f) ?" s
#ifdef __WORLDSERVER
' N @# p }5 z; z: R // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
% h# F' M+ ~) T, u MoverProp* pProp = GetProp();
5 X+ a: e6 Y' t: P% p1 L# d if( pProp ) U L" k( g0 _" C4 O% Q
{
; R+ X7 @, d8 W, f/ } Z7 { if( nJob > 0 && nJob < MAX_LEGEND_HERO ). J# c" |, l- q4 t2 P9 t1 j# z, H8 r' ^
{
+ i. I1 P2 g& i8 u AddChangeJob( nJob );$ o: }/ P+ ` X- l9 [- S+ }3 w! d
}else{
$ w! C$ z3 l6 q0 ~' a return;1 J& W5 B, Q. W/ h: S" ]- U: k/ J
}1 S5 P! `5 Z* T# t- b+ J) ]
int nPoint = 0;
/ T* c) ~7 p5 j7 c$ b% l& f if( m_nJob == JOB_MERCENARY )
% u' T2 Q& K- k: \ nPoint += 40;! m! Y+ Y' y* s& ]
else if( m_nJob == JOB_ACROBAT )
) \7 v6 i$ D; | nPoint += 50;
/ t0 K4 [. q3 ^, u$ L3 V else if( m_nJob == JOB_ASSIST )% f2 Q' J; y! Z7 W: x: N
nPoint += 60;: }4 Z5 t1 u& V5 p* s
else if( m_nJob == JOB_MAGICIAN )
- g% f* g( n' m) p4 T nPoint += 90;
% x5 _& z# r( j2 c2 ? else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
) _/ H: T! C: J+ B" V, j6 H" o nPoint += 120;
/ J/ g' P6 `/ s; M- V6 q else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
/ P; u5 m& A; r, P2 C nPoint += 150;' L$ u( z3 j, U# P
else if( m_nJob == JOB_RINGMASTER )
/ x$ I8 Q$ b; _! F- P/ t) _ nPoint += 160;( i4 c1 b" Q( i+ j6 t
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
/ D% y8 j. d. { nPoint += 180;5 w- U$ Z( l8 C! Y- M& m( `& X/ Z
else if( m_nJob == JOB_ELEMENTOR ); S7 r, l J6 k" t4 }& r
nPoint += 390;
% [9 e1 G% A. w- d7 a7 f else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
( a3 r- R) l: u+ t nPoint += 120;0 w' ^8 o' l1 h* _/ k8 ~6 k
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
$ t/ X; N2 t5 l5 ^- h) p nPoint += 150;
9 s: q, h b1 }$ w" d else if( nJob == JOB_FLORIST_HERO )) w7 Q" v. z, J1 K, u9 C* v% C
nPoint += 160;% H$ S# r, E# g }7 l
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
, t* G! Q* t& p4 h" t- q7 X nPoint += 180;
8 v0 z( H) @2 e+ W; a' g else if( nJob == JOB_ELEMENTORLORD_HERO )) N6 d# x: d4 h/ _, s. Z
nPoint += 390;
5 G# b1 f$ x) Q
, [1 h* T! n2 N; w9 N e& d7 ` AddSkillPoint( nPoint );
+ d. R1 U2 A) V$ ^ m_nLevel = nLevel;
! d$ c% o \5 N$ S3 ]8 S% y8 a( z. h4 [; @- a9 }( ]- P
SetJobLevel( nLevel, nJob );, }$ X9 ~, b) K# x
m_nDeathLevel = nLevel;* k" H" t% `, I! V$ w' x
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans. B- {9 C( P/ {! u q5 V
if(IsMaster())
, ?# D# ~6 k; R8 s( J { i5 l3 y7 ~# [ z: }+ ~$ a- _7 t' l3 w
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
1 O$ ?/ r2 \+ p. c( v5 [9 _ if( nLevel > 59 && nLevel < 72 )7 `. i# W4 k: W+ @1 S% l& k
dwTmpSkLevel = 1; G! y2 `: \8 R4 F" ?' Y$ O0 G
else if( nLevel > 71 && nLevel < 84 )* `: i1 N `, Q9 G$ P, V# ^
dwTmpSkLevel = 2;
$ {% \- u2 e0 |& T else if( nLevel > 83 && nLevel < 96 )
) b V2 G4 D: q& m" Q dwTmpSkLevel = 3;
9 @* v/ L9 { w' r% O# z else if( nLevel > 95 && nLevel < 108 )
- }& H6 ]% O, A dwTmpSkLevel = 4;( @0 l8 T; {3 {( n# N7 P
else if( nLevel > 107 && nLevel < 120 )
- A* c- F9 d8 l dwTmpSkLevel = 5;
3 Q/ l7 _* ?3 J& G, U* H8 X for( int i = 0; i < MAX_SKILL_JOB; i++ ) / F2 q( V9 }+ y- x3 A5 K
{ , U& n [# n7 r+ c
LPSKILL lpSkill = &(m_aJobSkill);' [0 ^. j1 a7 f6 Z% W1 E
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 j" t; I7 O* _. b {
$ ~0 b+ h' j& U. t" A2 R. ?. _/ o5 F ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 z* m7 c0 L; L" V if( pSkillProp == NULL ) X. {9 V8 z( y
continue;: g5 t+ ~: E% Y. c% U7 ^, D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; {' P# V, U# O' m) ?9 \, V* M continue;
4 ^/ u3 n, u }7 e/ `' ? lpSkill->dwLevel = dwTmpSkLevel;( A9 i$ I5 m/ t6 w9 w) F
}$ J8 w; G8 e& V) [2 S: j5 n
}0 } i3 d7 ~ U/ U' L. V! |0 h
}7 K0 x$ F* W3 i1 `( n% d
else if(IsHero())
3 v L( X& N( u: s6 i6 H {
. v; h8 @6 x2 M y for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 w) ~4 M$ R1 d$ \- s- }+ F# W6 ` { , l Q- e) I$ K6 k9 U
LPSKILL lpSkill = &(m_aJobSkill);
0 N; K) Z/ y+ S if( lpSkill && lpSkill->dwSkill != NULL_ID )2 A0 m8 x. n) P G; ~& @9 o9 {
{ j; D2 U7 E, m
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- z8 s. I6 B0 w: L# F9 \8 z! P if( pSkillProp == NULL )
; w9 \: Q& p6 v3 B s' Y3 H: z continue;
( z( [: q9 B+ x' Y* u if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 i' a0 f9 G) z8 U; C; x
continue;, c* C8 }' W# z2 E
lpSkill->dwLevel = 5;' U( x0 X. J% h- ?7 c: k
}
! O- ?8 m. u, n }: j$ f. U$ g4 f. f6 O6 H
}6 @! Z/ f( S2 d, Y; V1 h
else if(IsLegendHero())9 v) N8 ` M6 }% @
{
0 D. g( b- W) U9 U2 C8 T for( int i = 0; i < MAX_SKILL_JOB; i++ )
. d) Z8 N1 l2 T+ @- w) K { 7 O8 X& f. M4 V, z
LPSKILL lpSkill = &(m_aJobSkill);
5 q+ N! r) I; Y2 s if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ ~5 P- u. O3 S! J ?0 z {0 F- m& D+ R6 }3 l2 a
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" f) {2 S1 \3 r3 E if( pSkillProp == NULL )
8 U" q$ I$ l" C! ~& V8 n$ G continue;2 h3 N9 p% W' i. L* V& W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 D8 u! `- E/ [; K
continue;
7 W1 ?# n7 T- H- [ lpSkill->dwLevel = 5;
( C; @% ?. a8 ^. b( T" g }1 j+ v& `! Z# c0 E2 P- p
}
3 ]( i b `2 c }: H; |- y; u; } N" V1 m
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# Z6 \* _ K6 P4 U7 G7 ~7 z if( bGamma )
/ k4 Y1 l9 b4 V. A3 g+ K+ p {# k. A$ h% h3 b
m_nExp1 = 0;. i2 p7 f k. D$ |! c1 s6 V4 [, }
}1 b( m# |' d' G$ k! Q2 q |! e Z
& P1 N8 z( _; h3 H5 e
( (CUser*)this )->AddSetChangeJob( nJob );
* l4 m7 `. n Z8 Q: M7 ^ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
i: q5 ?' A }8 ]1 {) c
8 z# V% b$ w! g' {" }/ f% A* e* n9 R o4 H1 z' l; S) v
#if __VER >= 11 // __SYS_PLAYER_DATA: {/ ^! y$ H% @' V# v d# a
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );! G6 e7 P+ k0 u& e2 t
#else // __SYS_PLAYER_DATA2 V; P, q3 K2 E9 C+ m" G% ?/ u
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
! s; ]# g8 D6 R; c- m6 |4 M g_DPCoreClient.SendFriendChangeJob( (CUser*)this );2 D+ J# } \7 y% \( }$ a/ o$ B
if( m_idGuild != 0 )
- T2 d( k0 ^' q0 F! j7 S g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
& @/ N3 g- m* E3 }6 b; O#endif // __SYS_PLAYER_DATA
2 [" v5 e+ v: h: r SetHitPoint( GetMaxHitPoint() );& p, i, ?& {% S$ V( k. |2 F% l
SetManaPoint( GetMaxManaPoint() );
9 Q% I1 \& `/ G$ H7 D5 r) `; F SetFatiguePoint( GetMaxFatiguePoint() );2 ]" ~& D- v2 d6 b( k5 W% L
if( nJob >= 1 && nJob <= 4 )7 u: ~* I: z3 s- i
{
0 @0 I0 m/ Q5 Y. s' G& k m_nStr = m_nSta = m_nDex = m_nInt = 15;
( L7 `( t# |8 ?+ [ m_nRemainGP = 28;
0 J1 Q. f+ p; r( T" q% j- z }
! m. O4 J, x& M7 V2 E- |; y, R7 h if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
3 k! K' q7 D" @& W. k% N {
6 {: v0 N0 Y4 G' y1 o! X. O m_nRemainGP = 118;" P" ]. u0 I* `# c" {0 a$ K
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
y3 V' R. W$ M m_nStr = m_nSta = m_nDex = m_nInt = 15;
5 j# b, m. [! { `# \# N" Y }
" u9 E _" ?) z, J5 V if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
5 b( l0 N+ e- ^( O" G' b {
7 e" y; o5 k2 U4 f# e% G9 j CItemElem itemelem;6 `0 c) b; @+ a9 [, i8 O8 Z
itemelem.m_nItemNum = 1;& p0 F" m" m7 F. y. @# |
itemelem.m_bCharged = TRUE;
# K9 s$ Q" _' }1 n5 \6 d( j BYTE nID;
2 b" m0 _+ s' }7 D, O; A* D) y1 r' \. u
if( nJob == JOB_MENTALIST_HERO )
: L$ b7 V5 [" g itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
- g' m& H! d. d9 e$ h0 r if( nJob == JOB_FORCEMASTER_HERO )
8 R6 T6 v5 r5 Q* { itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;! V3 b0 }! j8 R2 d7 p# s" G+ {4 f, l
! N5 {' O! N* d
( ( CUser*)this)->CreateItem( &itemelem, &nID );
- }. d5 j- }- C9 | }
, i* S' u4 ~5 {1 T g_UserMng.AddSetLevel( this, (WORD)m_nLevel );( {# \0 n- q: o3 D0 ^1 u6 O
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( h2 b# r( p Q+ s% f/ n6 t8 b ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );/ G; X! d) m/ k& z% f% ?7 c) ~6 a
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 ^2 V& X5 ?; @6 d/ E$ b% S0 h
( (CUser*)this )->AddTaskBar();*/( S0 V3 S5 x3 m' Q+ z
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );2 C3 I) o; |3 \+ u
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?) ~' U& \. u* _' x# i# D
((CUser*)this)->CheckHonorStat();& a# Q ]7 _1 k7 b1 {# G
((CUser*)this)->AddHonorListAck();
( U9 G9 s8 J& k: ~ g_UserMng.AddHonorTitleChange( this, m_nHonor);8 I: c% K& q1 _1 H& P
#endif // __HONORABLE_TITLE // ′Tà?
m9 ` C! V8 V; o }3 ^! ^# `! K" v& q4 S2 i
#endif // __WORLDSERVER% P! e2 N! f( v* S# F
}
( U1 ^; Z! K% @2 b* K @" I# s8 J3 L2 c: q# P X. F; ^4 g# `, g
然后你进入functextcmd.cpp并添加以下
0 C5 ^5 @0 N9 k! M8 U8 {: I9 W' ]/ B8 ~" o
代码:
% L+ k3 s3 \( {0 JON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )( R0 F. N5 K! r [4 D
下面插入( v3 O9 W9 \4 D
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 2 a2 |$ Q; b6 J. y+ G+ i! t
8 }# l3 N0 x! n( Y H然后你去9 Y# C8 o$ N! S5 X
( r. }, B5 |0 v4 Q, C代码:
, @* H0 m# c$ V& i1 b代码+ z) C+ e5 j) _1 ?; V4 w# k5 H
BOOL TextCmd_ClearPropose( CScanner & s )# Z( u5 Z, j) w0 E1 x# E
{
/ ^. F v1 ]: ]3 g8 P1 `, K#ifdef __WORLDSERVER
, F- r" G* ?3 a7 d$ x; G0 \ CUser* pUser = (CUser*)s.dwValue;7 o# k7 [8 L! v( O Y( }2 c
g_dpDBClient.SendClearPropose();; ^% U" F& l- m d) l" U5 _
#endif // __WORLDSERVER( |: O& h) L7 C7 n
return TRUE;
6 \1 m3 y$ k [1 b}. o$ @ r6 o: E8 b
下面插入- ]% }$ l3 c* ?3 J' g7 ~2 D' K# A
BOOL TextCmd_rebirth( CScanner& scanner )7 c/ o9 k: e4 C7 |" K/ R# K
{0 j' h2 Z, ]% M* V* e
#ifdef __WORLDSERVER
+ ^0 Q+ d! R8 X. L" u: U xCUser *pUser;& X9 {- X2 J. ?0 a+ p, K
pUser = (CUser*)scanner.dwValue;3 m J+ K: y2 j/ w; O
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
) a' @8 J. [5 R/ ]pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);' Q0 G a2 B7 x7 W9 B
else+ n: T. t4 V6 h1 |( D: u4 |& G5 t
pUser->AddText("你还未达到重生条件!");
H$ B% A, o6 y, E- b7 x#endif% y( o6 j0 I1 A: N+ J# ?; B5 X
return TRUE;
0 z* |9 |/ b8 a- u' i* R& D} 5 G4 d2 ~7 W7 ~! G
+ `4 `5 T; Q2 Y! x# U8 }) s+ N
0 Z' {9 X6 z8 e) V7 X
: c- F8 X' p( l9 J, v& @
& G7 J) A3 V6 i1 o |
|