|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
7 Y+ e# |. i: W0 Q: \' S( A
' O! K1 M6 s( W" |Mover.h
1 O( o" K; y7 \5 Y代码:8 @- E1 r& {* F: v5 V; n
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü2 c' H' d* N7 c% X: y3 \
. j1 w( B4 N9 p下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
" \8 ]0 I6 O8 O# H3 o! T8 s
u9 e3 ^# M. h/ x5 |+ ] z然后你去mover.cpp添加
2 g; P) E* s' z2 ~) X
! |0 L6 u) j* g# o* E代码:
& C0 e J" {8 G/ kvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
/ @; p. n3 k. g) ^ I% ~ o{
' x3 t, _4 v1 ?" X#ifdef __WORLDSERVER4 S! d! K. y) p# F
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó- |$ R# R& m1 @% E' l
MoverProp* pProp = GetProp();
0 B& x* o c/ g if( pProp )
4 g9 V4 r) Q& L1 p5 { {
' }4 E5 s- |3 w if( nJob > 0 && nJob < MAX_LEGEND_HERO ), b8 v, g0 S% E
{8 u0 r, y- U, q
AddChangeJob( nJob );
, D: Z; L/ V6 w& v+ { }else{
; H7 v2 b; c' l- }2 v/ z# A return;/ e% y9 f. N) J" O" @8 J
}6 d7 T) f; G6 L1 e% S& I: o/ w
int nPoint = 0;" C$ {( _5 w6 H3 ^+ u5 n# X
if( m_nJob == JOB_MERCENARY )" [3 M/ M; T% Y; U: N( \# Y
nPoint += 40;& e% R, l& k1 @! X7 t
else if( m_nJob == JOB_ACROBAT )( E' w$ C- O2 P
nPoint += 50;4 f6 M9 u9 ~) V6 R- P
else if( m_nJob == JOB_ASSIST )
- q& X; {) ?" l2 w R5 k# Q# o' X nPoint += 60;0 ]9 w8 u B# h- S8 x4 E& S
else if( m_nJob == JOB_MAGICIAN )
" i9 h/ w7 F3 b: e nPoint += 90;
# X8 G* v2 N: {8 w else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )) v9 @: d3 I% h% M p( K
nPoint += 120;
2 I1 o9 u3 a8 m+ c, a3 w6 x7 e else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )) h" i/ l2 _5 w& ^6 T
nPoint += 150;9 g+ g2 q* D! O% m
else if( m_nJob == JOB_RINGMASTER )
, G# h5 m* S9 l1 u } nPoint += 160;
+ e0 O0 P. X7 `7 U# C else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
2 ^+ y. ]! g& n nPoint += 180;7 m/ p: M1 ^$ i/ j7 L" f+ { e9 g( T
else if( m_nJob == JOB_ELEMENTOR )1 p& I( r+ ]# s- \, U: X8 B
nPoint += 390;, W" T. Y( [. _. W- d. ~
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 D, `0 x7 a7 e nPoint += 120;
1 _8 {% P% }/ ?7 j else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
) o( j) D) G& m4 V! `0 O0 n P nPoint += 150;
; S5 ]% T: W6 t( k else if( nJob == JOB_FLORIST_HERO ). a1 T/ Y& U Z |4 f+ I
nPoint += 160;
( O( s6 }! X- ]: k else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
! ?! c9 g" l; k' A7 s$ |) j& S nPoint += 180;
' i% G0 o) f, Z" a; B else if( nJob == JOB_ELEMENTORLORD_HERO )- Z3 f* t. K' r
nPoint += 390;0 _! i& C* Z: R9 f7 v. R
' ~2 O8 _, s+ @5 ~ F AddSkillPoint( nPoint );
4 \) x2 m$ B4 L4 G m_nLevel = nLevel;
6 w# |' H- Q/ L! ?
/ y5 s' f& ?$ ~* [. g, O SetJobLevel( nLevel, nJob );$ E n1 c; C3 d$ D6 h" T
m_nDeathLevel = nLevel;
0 U0 d4 E+ j; J0 T$ u( }8 E#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) m' Q' H" |: I/ \) g
if(IsMaster())/ R: m/ U+ E6 L9 H' ?3 X0 |" c$ e
{# q9 H0 |% G u2 J
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 n- N+ l' s t! L
if( nLevel > 59 && nLevel < 72 )2 F7 x9 {) F/ O* H
dwTmpSkLevel = 1;+ T, A! O' u0 Z* P2 }( X. ?
else if( nLevel > 71 && nLevel < 84 ), @+ R9 s9 ^$ U V5 a" K" P
dwTmpSkLevel = 2;+ F6 e0 _$ F% K3 L
else if( nLevel > 83 && nLevel < 96 )
/ y' b k% X5 q$ Z6 B$ D) T: U3 {/ b dwTmpSkLevel = 3;- g2 q9 \5 v" }
else if( nLevel > 95 && nLevel < 108 )
. _+ x4 o% z. ?. V; E' T dwTmpSkLevel = 4;
6 v6 p4 ?' z y+ \ else if( nLevel > 107 && nLevel < 120 )
- e6 P. e0 Z- G- n g4 N dwTmpSkLevel = 5;* b( c1 H# C$ j* `; w2 K
for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 s/ V1 ^8 G" F; B9 `) M { ( b: e, v6 t( n7 B' y& d, m
LPSKILL lpSkill = &(m_aJobSkill);% E5 p+ {" k8 f: a
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 R5 T; \9 Y. s' u. A& k; | {
: @) v x# O0 z$ @ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) U# [! w( v+ |/ Y
if( pSkillProp == NULL )3 R% {7 f/ j: w( t7 f
continue;
. K: W, K' M$ x7 H# b if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 k3 ], Z" S% g" a/ x' N continue;' B9 b9 @4 T' M- U% `# i4 V, a" `
lpSkill->dwLevel = dwTmpSkLevel;. D9 {+ B6 _! t C4 I1 [9 l% P
}
. C2 S7 w- c- y. L2 h. X5 Y- u }
) k, |0 k* Z& x }( \4 U6 { N$ J8 v! U
else if(IsHero())1 K ]; L' r6 [+ q8 }
{
- k7 a9 M9 m& h4 w- F% U for( int i = 0; i < MAX_SKILL_JOB; i++ )
& G- k M( w% ~& q {
! P# ?/ _3 |' j4 @: K0 h LPSKILL lpSkill = &(m_aJobSkill);4 Q+ B0 ~9 r* t' W, l& c7 _! q
if( lpSkill && lpSkill->dwSkill != NULL_ID )1 [+ f* n: B1 _6 @+ E+ K) ~
{; x$ n& M1 {2 p# }3 O" n
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 {$ y3 W+ i5 j
if( pSkillProp == NULL )
: g( `, Y( ` @" \9 q, p& p continue;9 [1 P1 K' m6 @ D+ H" w& R
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 y$ e0 Z2 _& \3 Q, C( W4 e
continue;/ Q) }, c4 ^) Q" s0 f, `
lpSkill->dwLevel = 5;
) x; g) ?& _- k$ [( o4 C+ i }0 o& ^" t( H3 W: {, _
}4 ?& v$ f* s: Q4 A# H
}
9 z. W9 m! w: V u else if(IsLegendHero())0 M/ T% ]- U Q* {! K3 ~, u2 O0 v
{
2 w3 }! ^8 v- T u3 b# W* z# Z for( int i = 0; i < MAX_SKILL_JOB; i++ )
H% K% [8 X2 \6 F { $ a+ `; D& O0 ~7 P, h- J; t; V
LPSKILL lpSkill = &(m_aJobSkill);6 q$ ?# F7 ? E8 S8 D
if( lpSkill && lpSkill->dwSkill != NULL_ID )5 r3 e3 k+ U8 x- b; s8 \4 t: T7 q" p
{8 n1 ?$ S Y! X2 _9 F
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 U% r4 {& G7 j; o* S
if( pSkillProp == NULL )) N! C9 D) _$ [
continue;
" {$ S. t' N, U; g) E! `% l if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 O( r1 l6 o4 `, J3 s continue;
, ?/ g! M* n4 M+ W1 D* d lpSkill->dwLevel = 5;- u! j3 q% j; |, s
}! x/ @5 ?+ D- k/ D
}9 s2 x9 A/ h+ a C- ~
}
) S4 k: ~; @9 T, k; g, \0 ^( G#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
0 l. M8 o+ X, v' q: m if( bGamma )
7 Z1 m8 q1 {+ a. d L {
4 a" s- O2 m5 J: b: Q" t m_nExp1 = 0;
* J- P( K P4 I$ X& ?. @ }
3 H& S9 X% f6 C$ [7 s% O7 k& W0 T
( (CUser*)this )->AddSetChangeJob( nJob );/ j$ V0 z6 X, V1 c8 d
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
5 j' R9 ?: s; L, ?( c" A& ?: U% r9 \& A& H4 G
. q7 Q/ U3 ?# A n, c2 J#if __VER >= 11 // __SYS_PLAYER_DATA+ ]2 w( D: l; A+ E4 b# {
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );, }" ^$ s5 U5 q) H9 r& m
#else // __SYS_PLAYER_DATA
- x; P' o0 r6 t5 u; [( C3 e$ I g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
* Q4 q, V$ A/ { g_DPCoreClient.SendFriendChangeJob( (CUser*)this );1 m" v3 C' }% G9 u% o/ ]7 u
if( m_idGuild != 0 ), Q- H* [8 a3 Q' f' K" K
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; v* {- t/ A' N/ r6 Z#endif // __SYS_PLAYER_DATA
3 R8 @9 V4 Z9 q0 @7 `% j SetHitPoint( GetMaxHitPoint() );
% K8 Q1 K+ ]! _ SetManaPoint( GetMaxManaPoint() );
& E% }) i' j8 I: w& j6 x, a SetFatiguePoint( GetMaxFatiguePoint() ); d8 h1 W' t2 E; P8 P+ [
if( nJob >= 1 && nJob <= 4 )% y$ O# J$ p' @" W! B& q- S2 @
{: V0 ~( S) Z; ~$ K) r
m_nStr = m_nSta = m_nDex = m_nInt = 15;4 g/ R) ^3 C8 A1 Q7 ]. }4 N! m# q- a
m_nRemainGP = 28;
' U! C: Y, w2 j/ n+ G$ Z }
& S8 D0 O$ `3 G4 o N3 D$ k- h" K! k if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& B( i4 b" R! K6 Y+ E0 c
{
) Q# h5 W% F6 Z# @7 h% \# z- u, a m_nRemainGP = 118;
0 J/ Y# I9 E; s //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
& m. s3 C" T0 j& J6 B m_nStr = m_nSta = m_nDex = m_nInt = 15;5 l4 k6 p! \( Q9 F5 l' s% R. u
}
# C7 A4 C8 ]2 ?7 M: i) ? if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )% b$ @! v0 @, {
{
* n9 X8 j7 l, j4 Z. f1 M CItemElem itemelem;
* H8 ?& d" {) B/ k7 d itemelem.m_nItemNum = 1;# H$ C# U2 C( ]" a
itemelem.m_bCharged = TRUE;
) O- N; `( ^! T1 R5 q: p. G2 Q BYTE nID;0 F8 L- t1 k! y
5 P" ?# [7 V3 J$ n if( nJob == JOB_MENTALIST_HERO ): [' H8 D$ R" f! b8 \# Q/ Y
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
0 R0 G x# l, R' [' ?6 J: I- a if( nJob == JOB_FORCEMASTER_HERO )3 u! y0 P0 u+ K# ? {% E4 T
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
( S; Z- Q4 i' _& {1 J
; F0 `' F a: X ( ( CUser*)this)->CreateItem( &itemelem, &nID );0 r; D3 a% @4 d9 X- i3 I
}& x! N$ S# {' c
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
- D2 k8 b2 |0 u8 d ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );' G9 j% _ s: K" G C9 U
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );# K; R; S0 Q' ^( [' f- X
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
: J m6 Y, L1 Z0 a, X: ~ ( (CUser*)this )->AddTaskBar();*/
+ ^6 ]! g5 b; r6 A5 G6 u3 U ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );9 K# Q: P/ ?/ d: p+ j
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
5 k2 f2 i) `- ^2 p: b, C ((CUser*)this)->CheckHonorStat();
: ?7 d$ a, S6 y, c& a! X# n: [0 k ((CUser*)this)->AddHonorListAck();
' u! T! K& v1 P+ S g_UserMng.AddHonorTitleChange( this, m_nHonor);! Z* d6 y9 J2 ^, ^, {3 o' |
#endif // __HONORABLE_TITLE // ′Tà?
: } i6 G" Z8 Z! p; k: \ }+ R7 e1 P4 c) z% a& E$ v
#endif // __WORLDSERVER
8 D i V, z: p, m) J4 R}
: r* A' D. s% B2 V( A; ^
7 g6 z) F, Y& s" E0 j3 n; o然后你进入functextcmd.cpp并添加以下
" Y& X/ ], D w) _/ E# A: `, w! h2 ^1 p3 {6 r
代码:
7 D; G4 k: Y! a% w6 |/ yON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' K, F5 Y9 e: V6 X( ~下面插入
/ b+ Y7 Y/ z! l( Z' X0 HON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
5 P: y, y8 x* ~, m
1 R& r3 ?- @8 F$ L& ~3 ?* J2 {- c/ u然后你去/ ^" U" A6 [5 K7 j
$ E. w0 W; T: u+ S' f. L
代码:$ M5 H. n0 p. z! c1 W- M
代码* H. G1 \& F* D
BOOL TextCmd_ClearPropose( CScanner & s ) x; ^$ x( D8 D+ ?7 v' B& D) c
{
* @+ x% i3 [3 b& e3 U0 J$ M0 C#ifdef __WORLDSERVER
# I3 j' i' m9 e# W: J5 ] CUser* pUser = (CUser*)s.dwValue;
! ]7 F' q* S3 J% t) a! d g_dpDBClient.SendClearPropose();
) l$ n0 Q. n3 d9 C#endif // __WORLDSERVER
6 C" `1 Y0 X! K5 Y0 D O return TRUE;# C/ }) Y! U5 \+ F6 D0 L
}% \- v2 J4 M1 b; A" U# L5 \
下面插入
7 g" `' E( J& @1 o4 ZBOOL TextCmd_rebirth( CScanner& scanner ) Z6 t1 V N2 r% }3 M+ [
{& `( p- W7 D5 T# A
#ifdef __WORLDSERVER B, z9 _! w" B$ O6 U
CUser *pUser; u! E2 C' y1 _, S. T
pUser = (CUser*)scanner.dwValue;3 O7 F4 @, X: z: G
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
# x" B4 E# j4 ?' PpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);" \5 T5 {" z1 p) V2 H* A7 z
else& W; L+ K) X& t% O& [/ z
pUser->AddText("你还未达到重生条件!");7 e3 g0 a! v- x) Z
#endif. K6 l% K. r2 ~, m$ O' ?3 P0 p4 X
return TRUE;
; Z V( b' B3 @5 T) z) ~- L9 \- o} 9 y+ {" w5 }; w
7 H# `4 b$ Q& q8 x) |2 A
/ c% ]. x' P, x; }8 G: D# Z/ V9 G- c9 v" ]; O) l1 H0 W$ w/ R
N; X8 z+ L. \; y) n7 h: ~
|
|