|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
2 v# A5 v e; _: Z: T1 q' ]
% v5 ^' \7 b* I* Z d. nMover.h
1 e. r4 x2 p& n5 I7 E代码:+ W0 T1 O5 @* [; g, F
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü# i* m" w" q, y2 o4 g
1 s( r0 S/ k( `. d+ g下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
4 w+ ~ j+ r @
8 M* t8 n0 O: a2 A. W然后你去mover.cpp添加
& |" |; M" |8 O6 S, c) L$ E
1 H! F+ ]/ z. G6 q代码:8 p, T8 B# y* g) n! b
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )+ s$ e- ?( J# z
{
% a0 s& X& @2 D4 b V#ifdef __WORLDSERVER
7 E0 F! E# P1 u // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó6 C) O) V+ R) S* ?* F, p
MoverProp* pProp = GetProp();8 Y! `2 r" J7 k! I# ~9 a) h0 j
if( pProp )
6 J: q W7 @ g& X$ ? {
7 j" C2 ?- @6 C* g if( nJob > 0 && nJob < MAX_LEGEND_HERO ); x; P* v9 S' U8 [0 P+ a% J* Q6 d
{
% i" x# Q" L! z5 [ AddChangeJob( nJob );
/ ^0 N9 S( u" M }else{5 L' u! i: b! Y
return;
- T* z5 _1 l) V1 W' p }" Q5 p3 S1 i9 O: R: m2 k% p# `
int nPoint = 0;! E2 M, A5 q0 \" `. N9 H7 }5 G
if( m_nJob == JOB_MERCENARY )2 m$ p0 H: `3 e
nPoint += 40;
+ i; m7 W5 M% b K: ]5 M$ d+ U5 M: S else if( m_nJob == JOB_ACROBAT )
' M+ c1 t( F2 z; w! y nPoint += 50;
! X* ?# u {- G# N, ^ else if( m_nJob == JOB_ASSIST )
+ S# y) x1 r& O; D$ x nPoint += 60;1 u3 V2 s% ^0 I3 A# e
else if( m_nJob == JOB_MAGICIAN )
- G5 k0 D. i5 C3 `: t nPoint += 90;
, E, {% D( i$ q7 ` else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )( ~ x! F, q0 T6 |- L
nPoint += 120;4 i& j1 r, p2 |# n
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
! W: Y$ f3 u/ O6 p, z nPoint += 150;
: { T3 a% V) a. X7 V else if( m_nJob == JOB_RINGMASTER ) N& h1 ~/ W3 Q
nPoint += 160;& d& ]9 E' z0 \& A# q) U5 H
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
1 t! P) |3 o6 w b; E9 m" Y5 ^ Y7 ] nPoint += 180;
, K9 y0 a# W5 [, N6 \ else if( m_nJob == JOB_ELEMENTOR )
8 i1 t' z# E8 R$ s5 a. k0 o nPoint += 390;
: |% z0 F; L' w; b else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
% _ _7 P$ Q4 J+ d' |9 | nPoint += 120;$ B: {8 g7 F5 a; h; u$ R
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% T5 R( f; i0 p5 O& E+ ?: U& l6 r nPoint += 150;
% j) L( L- G) y8 a9 o3 n0 J else if( nJob == JOB_FLORIST_HERO ) N ^7 E( a+ Y$ J" [) f$ @
nPoint += 160;
]+ Q( x# B) ?' C; {/ z else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); w7 N) i* Z8 L9 f- ?3 g
nPoint += 180;
* C9 E! A0 O. M- y( a/ Y else if( nJob == JOB_ELEMENTORLORD_HERO )
1 a7 z. Y2 }9 q* l- T3 \ nPoint += 390;( B5 o; Q u3 f2 o2 G( v7 o! p$ y
* \$ w3 ?! `8 H% ?- l+ W. m$ {
AddSkillPoint( nPoint );
3 y2 i9 @8 g; N4 Y m_nLevel = nLevel;4 m& O* t( c1 g. E5 { {' f
# l! w3 [- b$ q- ?" J4 ~ SetJobLevel( nLevel, nJob );# J7 W' u6 c) K |* Z/ t1 K
m_nDeathLevel = nLevel;+ m% v. d+ z* v5 M3 Z
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( }5 [6 N) k, U6 V4 G1 c* [ if(IsMaster())
6 C' U% A3 \% S' y" h {
6 `) ]' R9 u9 z( L# ]2 Z int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 P; @9 T* ?8 a* I
if( nLevel > 59 && nLevel < 72 )
8 T( n* k/ Y1 `. ]1 [ z$ { dwTmpSkLevel = 1;) j6 l, M3 g7 X+ v$ l. A
else if( nLevel > 71 && nLevel < 84 )
% J" |+ u& n* u2 K2 [' \& o dwTmpSkLevel = 2;8 u0 }- Q& u h0 Q( L4 \7 I
else if( nLevel > 83 && nLevel < 96 )3 ?. v/ ^; p6 l& ^$ ?& `& X
dwTmpSkLevel = 3;
9 o4 t+ \! U/ }' Z C' | else if( nLevel > 95 && nLevel < 108 )
1 c9 e, p8 G9 g8 G dwTmpSkLevel = 4;& g/ q+ p" V# Q+ {7 U
else if( nLevel > 107 && nLevel < 120 )
5 J) d( Q$ P2 d0 @5 B dwTmpSkLevel = 5;8 e; v2 C/ b, Y) L' ?+ O+ f, m
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 M- F5 }" U! x1 E) ]+ G
{
- s' a2 f- n' C+ T# N7 W# H LPSKILL lpSkill = &(m_aJobSkill);
. m( I8 {- v3 J; M! c, Y' B' f1 J if( lpSkill && lpSkill->dwSkill != NULL_ID )8 o. B A7 @* f2 `6 Q( J' F
{3 \' a3 W$ Q5 w# u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
b- ?3 a5 T P: z" O8 q; v2 b if( pSkillProp == NULL )- h ~& R0 O/ U& }/ h
continue;8 |1 ?* { x8 k0 Q# J9 r
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)% ]" d1 y& t# }! o0 f7 O
continue;
$ ~2 N+ L* ]5 z: l lpSkill->dwLevel = dwTmpSkLevel;
+ Y9 S+ _( O6 p7 p }* H% z% {. b# W/ h, e1 i( A
}
2 [1 F* c3 \+ @' r, P; u6 c! A }" `- Y8 d: ]% j
else if(IsHero())/ ^- f; I6 p4 r' n; \3 \! E8 Q2 S
{
7 b4 ~+ j8 X! f Z for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! T: ?' b5 l0 \
{ 4 Z6 I2 v7 y8 o8 a0 z+ I/ {# L
LPSKILL lpSkill = &(m_aJobSkill);, P( K' h% T% K1 {
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ `: P( P, l( I! N& i {5 w8 x* K* I# [" Z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
[9 f3 E# _" r if( pSkillProp == NULL )7 ]: P4 n' D- E; h8 q' x' ]' Q, J
continue;
: ?! J% q+ w4 u" F if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" ^) |4 O2 y$ m0 v1 S# L continue;9 y3 o( l D; M9 m+ q
lpSkill->dwLevel = 5;/ Y6 \% }% Y" x) E1 Z: I* z/ n
}4 ?; V8 B1 A7 n# i, y' A1 j
}
3 P) O. |6 y4 X5 ]8 d I7 D }
% \& b: I3 f1 z; Z/ G else if(IsLegendHero())4 k6 }/ c* e6 ]( w6 s
{: q1 |% O, s0 Z- w
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( F& \: U* g1 u
{ ( p+ _- z+ g( n& u4 C
LPSKILL lpSkill = &(m_aJobSkill);
: v& u7 q |7 f" F$ j6 l4 i if( lpSkill && lpSkill->dwSkill != NULL_ID )
% E; u" J: u* b4 ~' k6 P {
1 x) M1 D2 v, h% F+ l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 ]" f( M2 J- Q. J- v- g& E5 w+ m" C if( pSkillProp == NULL )# g( N- `) K0 O9 I2 V p+ ~% d5 D
continue;' c# @4 _+ T) K2 {4 V ]1 U5 G
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ Q8 `& h4 ~( F6 q& B continue;( T' w8 y, @0 i
lpSkill->dwLevel = 5;* k3 B3 Z4 `" o$ _5 A& n1 z7 N9 I( l
}
6 z$ J. u. {) W) P0 I }6 A) B9 X, L% k* e! ^2 F5 b& B6 d
}' u o2 G5 t8 \' n# }- z# R* r) C1 I
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
7 Z" l! V+ h2 }- N if( bGamma )1 K4 Y# U# k8 a o
{5 ^ g; Y+ }; O. [: j! Z& X
m_nExp1 = 0;
6 I; K1 v8 H: D( J" p5 C' D }
* z, W; N! v3 k! Q+ m* I' E. V# ?, k8 v8 P$ g4 s) z6 j g
( (CUser*)this )->AddSetChangeJob( nJob );
' k# Y) E2 W7 ]# {0 b) X g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
" \/ ^) F [' B% U( K/ a& V+ r
3 p2 q$ d/ P! g+ d$ T
; N8 E1 j6 }5 ^( C1 b#if __VER >= 11 // __SYS_PLAYER_DATA P5 ]2 j* V4 Y. o& o; [" l
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );& a) b- Z' q0 ?
#else // __SYS_PLAYER_DATA
: A, e. U& h1 M: U' P g_DPCoreClient.SendPartyMemberJob( (CUser*)this );% T" j0 w: { ?3 E
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
8 y9 M g# h3 F9 m5 W) f3 C if( m_idGuild != 0 )
+ ]# _& f$ [: F n# w g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );5 r& v, Y, t6 C: z/ O2 m7 h
#endif // __SYS_PLAYER_DATA
! }; u9 V, I: c4 o( {( n$ a8 V SetHitPoint( GetMaxHitPoint() );
5 \7 Z( S& v" {; b0 s( r SetManaPoint( GetMaxManaPoint() );6 P0 N( q/ L0 ^5 ?5 c
SetFatiguePoint( GetMaxFatiguePoint() );& E0 O- a& O- P+ F/ I4 m& p
if( nJob >= 1 && nJob <= 4 )) F0 u g5 [2 k1 i. z+ U" r
{% D m' i, f/ ^. Z
m_nStr = m_nSta = m_nDex = m_nInt = 15;! ?5 Q+ I- R, }# N, }
m_nRemainGP = 28;
* z$ W2 u9 A" w! z5 [- O: O; X }
4 }; F( a8 W& [ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
% N1 K" g& W# _, r3 `- } {
/ o) ]: @! T. r: z4 z m_nRemainGP = 118;
% [! }4 {& G7 U' I5 J+ {( B //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;1 a( I1 _3 a; }9 q4 p: ^2 y; }6 J
m_nStr = m_nSta = m_nDex = m_nInt = 15;
- E* o3 B2 F6 ~& a7 e }6 ~$ g6 u- C4 k4 D @
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
9 x/ \9 L/ b4 A9 H7 }) ~% l9 r {) I+ T5 x I4 }" J. t% t' `
CItemElem itemelem;- H: V' r7 m o# Y; m0 i+ T @5 k
itemelem.m_nItemNum = 1;. l! v2 I+ M( r3 Q3 E6 b+ ]$ |
itemelem.m_bCharged = TRUE;
" w* C/ \3 ` f9 d BYTE nID;
) x X- t6 F3 ]# } J
' ~* v6 m1 ^4 h h- t) G6 v1 c if( nJob == JOB_MENTALIST_HERO )% j% B) J. X- n# V. T/ P: O
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;+ i* P# E7 K) N7 ]. v$ x
if( nJob == JOB_FORCEMASTER_HERO ): U- }) W F" B3 N
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
5 P3 _! \. |& h4 S& j1 l6 S/ T/ Q" O) j4 ~! I! j' F( _
( ( CUser*)this)->CreateItem( &itemelem, &nID );2 D4 l3 D4 i6 V$ |% f4 R1 u! ?
}; @5 Z/ c0 A) c4 ?* A
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
: n& V5 G3 }- O ~" M& [ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
# L f ~& o* J% a* A& p2 v; ] ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );: J( P* L6 x- g/ Y
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 z. O, C5 |3 u) k
( (CUser*)this )->AddTaskBar();*/9 G7 C; y4 X4 }5 g2 d) z3 B: E
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
0 R) `7 H2 o5 e8 R8 U8 F#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?9 ]3 b6 S( K4 I9 A3 \0 M2 c2 q7 h2 g
((CUser*)this)->CheckHonorStat();
# J3 }: B$ f0 V8 Z ((CUser*)this)->AddHonorListAck();
; I* }- X s, y' ^; ?; z! m4 @ g_UserMng.AddHonorTitleChange( this, m_nHonor);
4 m/ ` M8 W7 d# S#endif // __HONORABLE_TITLE // ′Tà?# a; W' m7 l, q6 T" R# l
}# b* y- N2 G t/ g) M
#endif // __WORLDSERVER, J0 k( o( P0 P
}
# ?0 q% c e, R# c3 r& T! X0 T2 C
6 Y6 A j2 |( m' \4 `, O: T然后你进入functextcmd.cpp并添加以下8 h. j& ^) O" M" a
7 F3 V q- Y, n4 ^0 ]# M, U6 p代码:* b @0 j& T2 W6 B& t+ o$ \4 V' a `
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ), ]6 M. e" q3 P2 B: T
下面插入
' Y3 n1 s. A& PON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) $ z( ^" q G+ z! V1 k( J
, e/ K* x2 C3 _6 j" }. L w
然后你去
: C% S3 o% s1 x# Q) Z$ H8 H* |( L
1 O1 z* O; s* R/ z* @, Y代码:
. n. i5 B0 [% f- D* `6 a, h代码
# |/ Z/ u V7 ~) J) E+ J8 n3 |BOOL TextCmd_ClearPropose( CScanner & s )
$ E; Z, @5 I! k3 g0 |6 C{" j1 Q! \; s& v; ~$ x! ?6 x
#ifdef __WORLDSERVER0 V2 J2 d+ t* B7 t$ J6 B3 U
CUser* pUser = (CUser*)s.dwValue;
2 x, B4 A0 H, N g_dpDBClient.SendClearPropose();
* X! \% X& d: M; I#endif // __WORLDSERVER$ I2 k+ @; D0 @7 H7 h( u8 y8 U
return TRUE;
6 i0 W0 k; T6 [$ e3 u; ]}
| j6 m m) r* `: R下面插入
: n J# X7 b# E( U. c7 iBOOL TextCmd_rebirth( CScanner& scanner ), A7 f$ m5 C6 u& I6 e; p
{
; s7 R6 w3 m0 R4 l l J#ifdef __WORLDSERVER
+ F6 D! Z# K6 J4 T* N; N8 nCUser *pUser;
; }2 X5 Q: \* o0 [* {8 \pUser = (CUser*)scanner.dwValue;4 W7 C3 o0 S$ O9 I
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())/ I" }1 ^2 {* Y0 T: f: o
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
$ |/ {9 W/ k" s% z3 h, Yelse/ Z0 p3 a/ N0 x1 q' o
pUser->AddText("你还未达到重生条件!");
7 X4 F6 ]. _3 m2 `( E' g2 H#endif
+ R2 e/ M7 o4 c2 creturn TRUE;0 F) H& `3 j! g* `, {4 i
} 9 ~, D0 G3 `, D9 S2 U! K
! I4 P" M9 w* D4 o$ E1 C1 E' `
1 Z% h( c n" H, H3 o' c# T7 R
/ U. ]) V5 [5 A# d+ P7 P+ Y1 [5 K5 n; r% p8 I! q9 A
|
|