|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel7 N+ o0 b, H- v/ _; v) [
9 K2 P* Y% j1 X/ k
Mover.h
2 ]' g" C( B- j* {$ M$ e代码:2 F8 p% [0 R% |8 p' Q% s* X
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü8 q/ d0 B( D0 e5 C: V; X* x- ?
4 X! O+ K$ i5 v7 O$ F S9 ^( S, P下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
" M% k4 |7 c- S, U& I- e
* [7 f0 Z% Z( O L8 q- P然后你去mover.cpp添加0 o3 E# Z6 \& v. N" I6 L- X
% {" v# {0 [; C0 D( A代码:; [" y& r4 L) U0 m. Z
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
w p9 \+ k+ } j B* q3 L2 p{
& r7 W6 y8 V0 X, A( Y: u+ k1 f* P#ifdef __WORLDSERVER
" S, M; n& W$ X# T7 K // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
! m9 Q5 v4 G9 c MoverProp* pProp = GetProp();- n& {: _1 }# Q
if( pProp )8 I- k s8 i0 U) r, g) t) \
{
' n( J3 j* l; Y. i6 ~5 W7 ~5 K if( nJob > 0 && nJob < MAX_LEGEND_HERO )4 H1 j" \; D5 H( v; [
{
: o8 R: Q6 W# [ A AddChangeJob( nJob );" G2 v+ ?- H2 n2 |/ S6 Z* g
}else{$ s) A& ]: J- j, G1 O5 I
return;
3 I0 b, V( ^& D) v& o% c! g& s6 A6 _ }; l" W3 B7 I; }) [- g
int nPoint = 0;
- F- L H; S$ l9 E. w if( m_nJob == JOB_MERCENARY )
: A9 K- l3 U5 T2 _8 X- g" M nPoint += 40;7 f% O1 j2 f; @. o9 b! ]+ \, S
else if( m_nJob == JOB_ACROBAT ): B9 Y, M5 t) o/ D# f6 N
nPoint += 50;4 H3 H( P% q( B! Z3 X
else if( m_nJob == JOB_ASSIST )! g/ C/ v& }. K2 v+ h" V* _
nPoint += 60;. O$ U" F* r6 M) ^
else if( m_nJob == JOB_MAGICIAN )3 h9 L% T, H" Z
nPoint += 90;' \! Q* {) Y ]3 s6 g
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
; z% @! a( ?$ f9 i nPoint += 120;+ ]. x) g: c: A' B+ ?5 f5 z5 x( V
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
( }# T l6 i* C9 d4 \5 {! \ nPoint += 150;
, G) w- U# U# k" V2 @ else if( m_nJob == JOB_RINGMASTER )
* C- g( `% p2 e% w+ `% l# n nPoint += 160;
: [) p) k, D) q3 E else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
9 c: j3 a1 ]' \& y& w nPoint += 180;) I7 K$ I# _# f9 t
else if( m_nJob == JOB_ELEMENTOR )3 _* ~7 `. X% b8 V
nPoint += 390;
1 J" o _" |: _ S else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
( d2 b1 I% j2 R7 n9 k nPoint += 120;# F# Y' }- [8 k T0 C, ]
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )3 Y, p2 Z$ i4 l, u; f* r% Q9 X
nPoint += 150;. h2 o @9 G! s
else if( nJob == JOB_FLORIST_HERO )
1 W+ c" x3 N6 \" U1 E nPoint += 160;
- Q5 O% z8 R- ?# ` else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
1 z1 K5 F6 K/ G0 t4 z- Q: h0 j nPoint += 180;3 M' x% F3 ?$ g- f% @1 O* {
else if( nJob == JOB_ELEMENTORLORD_HERO )
4 ]& D9 F8 J/ o nPoint += 390;9 w9 Q. A% h; w/ A+ b6 P) C
/ W9 ?% X6 d ?. Y AddSkillPoint( nPoint );
' H' b6 X4 C4 W$ s; |5 a# `% g m_nLevel = nLevel;- d: a' k6 a1 ~) e
4 X6 ?. g/ R. H
SetJobLevel( nLevel, nJob );% Z' L" W4 K% I9 V
m_nDeathLevel = nLevel;
) q) m! L. i8 H! E#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
N+ \% `7 s- p' Z+ D- Z if(IsMaster())
+ X/ P( V' |: P" W {7 @. |7 H% b/ R- w3 v
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108: U! A4 U* `& ^/ C/ C
if( nLevel > 59 && nLevel < 72 ): p+ i4 M3 s7 s$ t, w/ W
dwTmpSkLevel = 1;
% g: R8 T6 q4 @* X! Q else if( nLevel > 71 && nLevel < 84 )1 W* q& ?3 n/ x5 }) }$ o
dwTmpSkLevel = 2;
6 f0 }% V! s, O* L1 U- ^ else if( nLevel > 83 && nLevel < 96 )
. @1 V/ s2 I4 Z, k% M4 F2 @ dwTmpSkLevel = 3;
/ g5 V! R& i e+ C/ {2 T else if( nLevel > 95 && nLevel < 108 )
9 `. v+ B2 L. G% w7 X0 k+ \ dwTmpSkLevel = 4;
$ m2 {! L: P) j& S. U* S+ z else if( nLevel > 107 && nLevel < 120 )
6 i8 Q# h% ^6 q0 Z* B& P0 z dwTmpSkLevel = 5;
; n$ J& O4 f5 u6 C for( int i = 0; i < MAX_SKILL_JOB; i++ ) + X0 S8 E# p T5 R2 E
{
m! O! z+ W+ @" a" O7 k [ LPSKILL lpSkill = &(m_aJobSkill);
- ^( M% y: Y, \1 Q if( lpSkill && lpSkill->dwSkill != NULL_ID )
* E; [# m$ f# u2 m$ ?& a {% L, B3 K' `$ C( \8 S* A+ H7 p I2 }0 w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 t1 p! b7 k# J$ f5 i( p
if( pSkillProp == NULL )9 B! f( O! ]9 [- n1 {2 P
continue;3 L4 L# e4 |) U# C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 i J& `2 [+ g
continue;
) E& V3 Y! [9 [ lpSkill->dwLevel = dwTmpSkLevel;
% }0 V% V1 E+ A% { }' ^% l! `( f: O! h+ z# Q0 f
}1 D7 q" F& p; {
}& {$ F) R% Y/ ~) S, ]
else if(IsHero())
. F: K" V. D/ p. Y {
* t9 }; `6 I5 T( k6 O for( int i = 0; i < MAX_SKILL_JOB; i++ ) e) c1 h; l5 \: x$ q- l
{
4 F& a7 H& \' s& }/ R. u7 X LPSKILL lpSkill = &(m_aJobSkill);" _ g% T6 T5 U2 m! b3 @: ^ I8 f2 T8 |, _$ s
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 T- D% U7 [# J# K$ N+ T' V1 R {1 z6 v/ l# f! k+ u0 T
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, X2 U1 H3 O) M: p, c- C if( pSkillProp == NULL )2 I4 {0 O' t1 \
continue;) i4 R& R9 W7 H9 B% l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& n+ a( q" z" }, L% j: A4 a& ?
continue;
; t3 l g9 i0 {; ~! F( a$ w! C lpSkill->dwLevel = 5;
: M* X, p& _) J9 v; L1 p4 N; ? }! w6 ~" m; V J6 x9 }1 A0 r! k# x( i
}: [# z0 {/ L- `1 j; \* _
}
$ m, ?, a' O8 h* i6 K else if(IsLegendHero())
9 K" a& ^/ t. B& V# |- X. H8 c8 ~# O) L {
' k. C. W/ U3 s for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 [5 v& K/ B" _7 g { . O+ F. S6 U9 W; N. ~
LPSKILL lpSkill = &(m_aJobSkill);
' C9 x; ^2 R2 n m if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ A3 ?0 Y! H! ~" u& ~. [ {
7 V8 I/ M y5 X! |& q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
5 i$ i# I; z( r6 Y% S4 O if( pSkillProp == NULL )$ L' C% e- \1 ~1 t
continue;- X0 N( ?8 r8 V( L* V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 }: h! H5 B4 [0 O: _% q continue;) F6 D6 [/ m$ [8 t( _% v
lpSkill->dwLevel = 5;
5 {. @# S4 Y. [* T1 N }
% X+ d! U- `# {: L }6 O' j9 W, J1 V; k- k
}
' L8 x: S+ A Q2 n; q#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 k! i* y% B; J/ \
if( bGamma )
E9 l$ F+ c$ C( p. U3 p {- q, V" x( E( R2 b; k7 `
m_nExp1 = 0;, p n0 u6 D" F* j& R
}
! `( {, N3 C4 m9 C$ k" h. }8 x1 E, ]& |
( (CUser*)this )->AddSetChangeJob( nJob );
2 a2 C4 H' H& M+ E9 c4 Y g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );, W' v9 F. P, V2 K5 O. ]
3 ]( r7 g3 _, r3 e: l4 B. G
) z5 C, h! U$ x, K#if __VER >= 11 // __SYS_PLAYER_DATA) i: x# a! \& @7 {3 ~6 Q. P8 h8 {: [0 _* Q
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
. b; |# C" d' o, Z$ q3 y1 D#else // __SYS_PLAYER_DATA
3 b0 _0 ]) I8 F' H1 o g_DPCoreClient.SendPartyMemberJob( (CUser*)this );# m8 |6 e6 t, V4 F
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );, V! o9 J5 x N4 Z
if( m_idGuild != 0 )% ^7 }$ i, }6 Z7 J% G
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );$ J5 C( D7 v1 b: Z
#endif // __SYS_PLAYER_DATA6 G2 i8 h9 e; ^9 w5 V. D; D
SetHitPoint( GetMaxHitPoint() );. o. z6 w. K% k. d0 z$ q
SetManaPoint( GetMaxManaPoint() );
2 Y: l4 u+ y; a* P0 I2 A SetFatiguePoint( GetMaxFatiguePoint() );
' M8 s/ n; v$ |& @ if( nJob >= 1 && nJob <= 4 )
' Z6 U4 W3 O0 K$ ]* W {& v2 a- d$ Y5 k- e' y, L* j
m_nStr = m_nSta = m_nDex = m_nInt = 15;
' ~! [& Q4 J4 I) n m_nRemainGP = 28;
9 z# `3 |7 I. V1 W* v }) f* j7 p6 E" P6 R
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )% f2 }3 F4 [8 m2 y* k" E
{% U. i4 P4 B& ]3 Y9 L
m_nRemainGP = 118;
8 A& h7 s% {/ z% b; j //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
3 `# {* C4 D. t' p l m_nStr = m_nSta = m_nDex = m_nInt = 15;
9 U% o2 ]! I0 W1 i6 s% l; X/ H' A: y' @ }
4 k. P+ s4 i8 e( c5 T if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )+ V6 B# G! c$ {9 H a
{" G8 T0 M% g) U4 i5 o
CItemElem itemelem;
! Y6 u: o& R9 t5 G3 |& s itemelem.m_nItemNum = 1;8 |6 d8 G' S0 N7 M& y. ~
itemelem.m_bCharged = TRUE; o$ h* o9 S$ R+ x+ ?
BYTE nID;
9 o1 U% d. T$ }+ \2 h d7 J, j# o7 c& M& ~! F0 Z) u
if( nJob == JOB_MENTALIST_HERO )/ _2 o2 X) N' M; r, k3 Z7 ~) W
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
0 h7 o0 g9 p! J/ G3 E if( nJob == JOB_FORCEMASTER_HERO )
5 g! c R3 q8 J9 s6 a @ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
* M- {' ]- C. v V- J, B3 w/ A/ T$ T4 s( e2 d3 \2 Z" C
( ( CUser*)this)->CreateItem( &itemelem, &nID );" R, g$ w- w" E& Z+ f& |
}6 {' m( t; W/ j P% g ?
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
6 o7 N& k! L! M y ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
- F1 r! z4 c7 f, v$ W ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
7 f1 h& B3 f" X. Q! [( K /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL ); S2 G$ @1 @# O* y; [
( (CUser*)this )->AddTaskBar();*/9 Q0 [% e6 P: ^9 B# B* I8 R, j
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );0 f7 F( |1 k. z! L( E9 _/ V
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
7 g" X" N3 N/ o ((CUser*)this)->CheckHonorStat();& j3 o2 R7 p5 u4 r3 T0 T
((CUser*)this)->AddHonorListAck();% x4 f. B+ N; }$ A
g_UserMng.AddHonorTitleChange( this, m_nHonor);% m: P. O `8 h* ~9 E) m7 m8 ?
#endif // __HONORABLE_TITLE // ′Tà?& @% u. V7 M) l, B) K* W
}
* ~' c. l4 V2 N0 O& Z: i7 V) V#endif // __WORLDSERVER# J! j8 M5 E8 N$ F2 C3 y
}
) u6 w* r% d+ u& U) @- h# d0 B6 T+ J; P( g, [" F6 w* ?# N
然后你进入functextcmd.cpp并添加以下
2 ?# m, n' A* {- m
9 Z6 v$ ~4 p8 _5 b代码:$ g3 m, ~' z; n' T
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
9 l+ A. i- r& U' p' b% `下面插入( |! ~* p$ @5 r/ s6 l" o
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ' w) K& d G0 y3 w
; X2 J" |- d0 f3 g, _
然后你去7 p7 o( B1 b5 M, D4 x7 M
. }, k8 u1 R+ p; o: v代码:
( T3 z4 j9 k' g) w/ E代码) w& \5 B8 a+ ]" N: \
BOOL TextCmd_ClearPropose( CScanner & s )
/ ^4 m; b8 f! q{* i$ a4 i7 v4 Y7 ~
#ifdef __WORLDSERVER# c8 Q% K L2 v
CUser* pUser = (CUser*)s.dwValue;# B7 `! C* [9 O( i
g_dpDBClient.SendClearPropose();2 Z# b# H4 c% e5 L7 x
#endif // __WORLDSERVER+ c) _$ ^ i: L: f @# A
return TRUE;
" @) d6 o4 J0 `" S! x. J8 C}
% q I. \% A& @下面插入- y$ ?8 A% E3 ?& ]# ]
BOOL TextCmd_rebirth( CScanner& scanner )+ p- H. F4 K" ? x' z# [: T7 L& U
{
* `9 z, s i8 X* R4 h9 a9 K#ifdef __WORLDSERVER
; ^8 [0 x& l/ t- R- k4 PCUser *pUser;
' F6 B$ k9 V& Y) k0 gpUser = (CUser*)scanner.dwValue;/ a& h! d6 U! B/ e: n% z' Y
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
: U) v9 R9 Q( ipUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
3 p" c& {* l. k3 j/ A- ?/ C( ~8 qelse
+ {6 M! P# j. M3 X* l5 F9 v3 u7 g* NpUser->AddText("你还未达到重生条件!");
- H1 Y- R- O: q0 h, C#endif
+ d' a9 \% |' L- J3 Y# }) lreturn TRUE;4 L9 [! l% x& [- T" p g
} & V: q8 b2 ?& I. ?, @
# a" }7 M" X: ?
+ A" ?% M+ S* m
; u. t3 z3 B! v: E! B- n6 G. b# f: m5 h& b$ |% I5 k. \
|
|