|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
( P5 ^" l9 h4 m3 X/ U) S: P9 v6 b' z- S
Mover.h( A/ N/ k; ]) r" d. s- P5 G
代码:
1 H$ A0 j% N& C" q9 H) ` t找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü9 e2 Z+ o+ V/ B8 o1 v
3 |* N m+ Q! ^# g
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
& h2 L# V4 @; `# R3 c8 I6 ?3 b% i
然后你去mover.cpp添加
1 b" P2 \2 x5 }+ s8 C$ c8 ~
$ Q5 {/ T. Z7 o1 q/ o代码:% f8 _7 e6 j5 X. b
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )7 L/ v1 s1 \8 N* T M, j* [! b
{7 e7 d8 ]0 V0 X( J& O
#ifdef __WORLDSERVER3 G8 r& Q- I. X( V ~5 s
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó, b* X8 Q4 X. M, I; M7 Z9 S
MoverProp* pProp = GetProp();
/ _4 `6 x5 I4 W" D0 K6 N if( pProp )
5 ?/ ]4 j8 P/ w {+ F' K1 k* u M" I! P
if( nJob > 0 && nJob < MAX_LEGEND_HERO )0 _5 Z9 y0 P8 k7 Q/ s: N1 @4 y8 c7 p
{$ n. z$ M. y" ^: `3 v
AddChangeJob( nJob );* W8 h$ G) F: [9 F' d' C
}else{
* q% `( {( X+ {& Y return;% v& B& C$ W1 h; f
}9 _) @% K6 c$ o3 V" Q' l
int nPoint = 0;
$ k, A5 R! { w! S* ` if( m_nJob == JOB_MERCENARY )3 b9 p6 Y! s' z
nPoint += 40;+ j' ~' e0 t/ h* w
else if( m_nJob == JOB_ACROBAT ): x* T4 E5 M* Y" A7 e/ w. l9 N
nPoint += 50;3 z2 O( @5 X* f& I9 E
else if( m_nJob == JOB_ASSIST )
- u# R# _: h3 d nPoint += 60;
$ `: C# E' L' u7 _! p5 V, R# f else if( m_nJob == JOB_MAGICIAN )
" i9 c; m q) |1 Q nPoint += 90;" W$ `: {& E& b8 {/ C
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
! c/ K/ Z; P6 e nPoint += 120;
$ ^, g7 \, K, d* U/ t else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )6 d. J9 W' P4 n) X# N6 o; ]) Z7 x
nPoint += 150;' f( p9 k; D2 `
else if( m_nJob == JOB_RINGMASTER )0 W& E6 x; q6 n) {
nPoint += 160;
& q' ^! A- c! R0 W else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )& Z l6 p& @7 r1 }% `
nPoint += 180;
& {+ Z9 Y* Z" B J else if( m_nJob == JOB_ELEMENTOR )
$ |9 z" z% ?3 c$ s nPoint += 390;9 O9 w1 G. S+ w' m
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 [7 u* X8 ?: w1 G) i nPoint += 120;* o J% J; A2 z+ {/ n' o, z; V
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
8 ]! j0 f/ b$ Z) w" N* E$ B nPoint += 150;
7 O1 C+ y: h# d9 ~9 R else if( nJob == JOB_FLORIST_HERO )% C: T1 h6 m- E+ |/ D. q7 e- q3 h
nPoint += 160;
1 @6 N* i( s0 Z8 N* I else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )3 h L1 Y% b5 | H% u5 r+ K
nPoint += 180;
$ \; C& M5 D' f% r' L else if( nJob == JOB_ELEMENTORLORD_HERO )
1 g# U6 {" o3 A6 N nPoint += 390;" Q) \! J# Z. x3 z
% A& u; V% L: n
AddSkillPoint( nPoint );
& n2 K2 J3 h, s! v m_nLevel = nLevel;
2 Q5 a; z$ u+ Q, A0 c# r
8 Q) }3 Y, G3 U SetJobLevel( nLevel, nJob );
, G2 R6 M/ i/ G m_nDeathLevel = nLevel;
! c1 n9 ^- E& }: b* w#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ Y$ \& k* {, g) V7 m if(IsMaster())# f( ]% J3 Q' O" c" d" d, S# Y
{( [! \' Q3 e' y7 k( ^ {7 F! U
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 n2 s' j( O3 K% f* c' ?
if( nLevel > 59 && nLevel < 72 )
9 _& m# r5 u" \( U5 ~2 K dwTmpSkLevel = 1;
+ T' ?- r4 N8 E1 R6 S else if( nLevel > 71 && nLevel < 84 )0 L6 K/ C8 c0 _1 S2 R5 ]" ?3 O3 {
dwTmpSkLevel = 2;
# w$ W x$ s. V5 g7 c$ ^' V else if( nLevel > 83 && nLevel < 96 )
: A: [( I" J9 S" x dwTmpSkLevel = 3;" m I8 U, |. A0 p8 @5 Z
else if( nLevel > 95 && nLevel < 108 )
! W3 r+ q3 x7 u2 N5 x dwTmpSkLevel = 4;4 O! \0 f: b7 E7 x
else if( nLevel > 107 && nLevel < 120 )
9 Y; K% U5 ]3 r% L/ B. I dwTmpSkLevel = 5;
) M, u( ~7 F$ o for( int i = 0; i < MAX_SKILL_JOB; i++ ) " c! W2 D& e/ }& P( U" ^
{ 9 J! ?0 S$ \/ t1 k2 N+ j& I
LPSKILL lpSkill = &(m_aJobSkill);; L, K- @! _4 H; B
if( lpSkill && lpSkill->dwSkill != NULL_ID )
; i" Z' P/ C5 N% l: c {+ [: K& Q; D/ Y ^" u# r6 a* l! ~
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& R/ \4 ?9 V/ ?) M) Y0 x: z if( pSkillProp == NULL )5 c: N5 x2 b- F
continue;6 |, \1 H& q# [, ` }4 i6 h
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 h; Q/ d+ r! V$ D/ U continue;
. q! K, w* B3 n+ c2 c; S1 N lpSkill->dwLevel = dwTmpSkLevel;3 X) N% n7 |5 ?. j
}. E: D& P. J, c& I ]
}
) e: ?" B" W9 s) [8 h }
* W' K0 b! I- O5 R2 c else if(IsHero())
" Y" ^+ e$ [7 V! F+ h" s2 u r {
; @$ k9 L0 ?2 `. W3 b for( int i = 0; i < MAX_SKILL_JOB; i++ ) " W1 m; V6 ]( `* t( I9 d& C
{
' t! E& I8 m6 D* B, ?+ K LPSKILL lpSkill = &(m_aJobSkill);
: @/ H N: L/ Z4 o% A if( lpSkill && lpSkill->dwSkill != NULL_ID )
- R5 A! `" {0 q, H. I( ]( o5 L: ` {7 @# M; K4 v! y$ j/ I
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 m% \2 ^. i; A. N if( pSkillProp == NULL )
/ y- R; n& @' O6 h! L( \% A5 W& d continue;
: p# _" p9 v" t' A: a6 s2 n7 Z; v if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! |, Y4 ?2 t- `4 l, z: B continue;
8 A" g+ \0 N$ c7 V lpSkill->dwLevel = 5;9 j. c+ R* A. g- g6 T
}
% O. N8 X- ]/ [5 r }4 H7 p) L# c: A0 D# L) x* n0 V
}6 C$ ?! w( Z! n
else if(IsLegendHero())
! A( g; W/ g- }/ g3 ^" w4 _$ B1 F {
. f4 Y* `+ _0 z4 W for( int i = 0; i < MAX_SKILL_JOB; i++ )
: \5 Y! w; `8 p k* K4 [ {
5 N8 ? f. M+ ?4 S: x: B LPSKILL lpSkill = &(m_aJobSkill);
. P& V( h- ^2 j" V8 D# J if( lpSkill && lpSkill->dwSkill != NULL_ID )' Q9 H, I, a4 O! K+ z
{, c+ K: k& M a+ J+ W, P" Q
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 y$ A0 S( d# ] if( pSkillProp == NULL )) a# b; b1 W- z, J! g6 ] A k8 L
continue;9 ?0 P% W5 [' ?% w6 e8 r2 y, X# b
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; \7 T4 g! f' K6 F6 C. O continue;/ A6 d+ q& u' \2 R7 j6 i
lpSkill->dwLevel = 5;
8 f4 ]3 T( U; y6 R9 r q }
8 W$ o: Y# \3 ?% T }# G! F; }! i3 B+ e, S
}
" P$ z8 l( Q+ N/ D' [% I' K#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 E% Z, f9 p, n- n) q0 E9 L if( bGamma )( Z! s) c+ S: p+ m; A' F5 M4 n
{0 p9 `! h! t4 [( I0 U
m_nExp1 = 0;
( ~& ], y; m5 [: W }
7 n, j, }: X; i: e% S6 z# t t9 i7 b, o Z# M/ p% {1 b
( (CUser*)this )->AddSetChangeJob( nJob );4 x0 H, \: X3 C, G; R
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
( ]" Y! n& j7 M/ C5 T7 f+ ]4 W* m9 d: v6 p! e& K1 U
# z% N }7 `$ R$ T5 N, Q: v# [#if __VER >= 11 // __SYS_PLAYER_DATA, G5 V. }" N* H5 X
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
# Y6 B+ Z) }; i, e7 c5 x( z( Z#else // __SYS_PLAYER_DATA
( c& f$ O& e( Y k4 g5 ~ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );6 g0 B( Y- y# {" \1 |
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
9 P* b! w5 L7 |5 n. \8 S( h if( m_idGuild != 0 )! d9 z: u& I: g
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
4 f4 N8 @; t! s5 Y#endif // __SYS_PLAYER_DATA4 I& \! ?2 ~% _& {( @5 ]# z' n
SetHitPoint( GetMaxHitPoint() );- ?9 G* ~6 k/ w0 E$ Y% ~: {
SetManaPoint( GetMaxManaPoint() );
) n% p4 @. F2 n/ l( g: m SetFatiguePoint( GetMaxFatiguePoint() );; b+ ]( r$ X- H/ n# K+ z' o
if( nJob >= 1 && nJob <= 4 )* ~& x$ d( r1 f' N K7 H0 ]
{$ L9 o4 z/ c o) |
m_nStr = m_nSta = m_nDex = m_nInt = 15;7 Z+ T# q2 U* [' w7 h# m8 [( S! V
m_nRemainGP = 28;
2 p3 s2 z1 J: i0 M# O; T$ m }5 I1 i, P9 F2 d
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
( s. V$ P P8 n6 ] z6 r {! ?% y* R: E/ J
m_nRemainGP = 118;7 ~. N. w2 Q) D2 `
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 e% F& | N8 A' w$ O) u
m_nStr = m_nSta = m_nDex = m_nInt = 15;
. w* t- y% ]3 i }
8 _1 W9 P% c" ~* z( l) K C, M if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
5 }7 @6 j7 C2 ]' _9 U {% m2 j6 `. l1 {7 N. B' V* h
CItemElem itemelem;& U0 ?+ b+ f k) d# q7 C6 H
itemelem.m_nItemNum = 1;
) i4 _- q; d! W" d+ P: b1 ~ itemelem.m_bCharged = TRUE;
5 H" k" l! A2 M- r6 D BYTE nID;2 C& Z' L3 z! n' b7 l
3 P, L$ |- p- I R
if( nJob == JOB_MENTALIST_HERO )
' T! \ B) {4 p7 O' {; X" `" s itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
& q' Z, n# D& N+ i3 G( Y4 x* g) B if( nJob == JOB_FORCEMASTER_HERO )/ b b5 P" n2 k4 j# Y* u
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;* @) b& x# P, e/ H
7 |! @# R+ q- p) w* K# t- D ( ( CUser*)this)->CreateItem( &itemelem, &nID );
% \ F Z! j* o0 y. x }1 Q+ U) e& H, U" f! k# ~
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );, k" Y a& j7 }0 H; P& G
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* v z" l" ?1 ~7 K i- t' e" j) V ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
# k! M+ l V6 W \! G' w /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );, g0 R* }$ ^! R( h& y' C6 o5 {, C
( (CUser*)this )->AddTaskBar();*/
4 r$ d& |# \; P6 D9 R% e ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );7 B6 \8 ~: D. c9 P/ ~
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà? X4 r7 T3 `2 i
((CUser*)this)->CheckHonorStat();/ J: q& i) t7 P. S
((CUser*)this)->AddHonorListAck();
$ E" t( E3 ~/ x5 `1 I2 w* F9 I: w& r% R g_UserMng.AddHonorTitleChange( this, m_nHonor);
5 R; R! w' I8 G* ^# M( \; _#endif // __HONORABLE_TITLE // ′Tà?
7 R" c d: j w' C" \! v" _ }& ?+ `% l7 O0 s. ^
#endif // __WORLDSERVER( t: j! J, |6 }5 `% k/ x
}
- U5 ^$ A" |& L9 C$ @* f- Z3 q9 }5 v9 J+ W8 c/ d2 \. j
然后你进入functextcmd.cpp并添加以下
6 y6 A+ \3 d9 G, N7 q/ B5 i7 X5 l6 J/ Y; L9 q; k1 U* Z
代码:+ |9 ^2 L3 M0 f( S0 o
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) g" ?. F8 t' E; i% d, V% N下面插入$ x: ^) I! w5 n4 D, E& X. ~
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 2 }. I' M! B U
! n W5 s' S' A$ M
然后你去 C# p, P/ g V- p4 |
! Z, `* z3 m6 d% E代码:/ }& m! X' \ S U9 F Z
代码
- g8 }" d; E# m( ]BOOL TextCmd_ClearPropose( CScanner & s )) O' K7 P: i/ B6 h( ]7 P$ Y7 }2 ]
{
% x* g5 t3 l. c4 K( R& Z+ `#ifdef __WORLDSERVER! u& S! e |- c4 y9 p- t
CUser* pUser = (CUser*)s.dwValue;! ` G9 y5 a. N7 n) D1 h
g_dpDBClient.SendClearPropose();
l; B; A4 @* }" R% o#endif // __WORLDSERVER
" i* n/ V6 V% d9 e! f4 `) b* M return TRUE;
; q" r: A0 m" n- O6 H9 B" ^- o8 _}( B# g z% c0 \
下面插入
. d- K( L, G! z N5 m& S9 P6 eBOOL TextCmd_rebirth( CScanner& scanner )
9 [! J, L* e& M: ?3 o4 K{
( c- y+ t# f* ]1 D; D#ifdef __WORLDSERVER
. K, s6 ~ ~9 Z& c6 K% c [! eCUser *pUser;+ d% x0 ~3 I4 V* v9 |! F G* M" x
pUser = (CUser*)scanner.dwValue; [6 H' f. q' Q% m4 H
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())" Q/ U1 O. _4 W$ K/ c# N! `* p
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
* J2 A, k1 \$ g" M/ k( Aelse
# O' K; [4 E# @. q4 ApUser->AddText("你还未达到重生条件!");7 H4 p- f: s- A' d
#endif v( Q/ Z' D4 {# ]/ s5 a
return TRUE;) v( R; Y! p) e* a. X
}
0 B& P* G0 N* S
% k4 w( { K# Y9 Y: C; O o3 G* @
1 h6 {! T3 K2 `4 ]1 k% l9 T Z$ z; d0 Y/ x
- _6 y5 W! x0 Y- E' ?: e5 q |
|