|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel/ ^0 ]% Z* v3 b2 k/ M4 K
- ^$ Z& @, O; n# L, KMover.h& w. _4 V' w& d U
代码:& j( A/ _8 f7 Q
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
0 T) O; h# |. i4 T |' _. | x! N# v
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; . T0 [* p0 `: u. h/ k
. F/ a4 V$ w m8 F9 n+ X2 V U
然后你去mover.cpp添加) s) m6 W# z- m- ^+ k2 `3 w" X
: `2 x; o7 N0 d/ o9 m0 A# ?
代码:4 o9 @& n }3 P9 W% K
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
1 \, Q0 [/ U2 H; z{
0 ]. Q/ z8 Z0 V+ F- o' \#ifdef __WORLDSERVER8 n" `6 N- L% d! l& |3 E8 l: X
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó& R& \ ]4 C0 {2 z& u5 U6 L( ?
MoverProp* pProp = GetProp();
j3 N7 W+ ~( v& N9 V9 | if( pProp )
6 q/ J9 N, L. o$ T5 M9 z3 ? {. [# y# w1 y @% b$ P/ X' r: c8 [
if( nJob > 0 && nJob < MAX_LEGEND_HERO ) H6 i( s+ l' C
{4 v( N( I+ i& H6 z) W" c. o- l7 M. B$ R
AddChangeJob( nJob );
; D0 B' r0 @6 N( r6 ^+ { }else{3 E6 }- B5 Q, O5 }
return;
! p0 Q5 a& |0 I" o7 c0 S4 ^ }
$ m3 q d2 r# [( |" y# D# W0 } int nPoint = 0;
- g- f) d2 R# s& s! \ if( m_nJob == JOB_MERCENARY )- r0 d& p, Q6 B8 G' \* C. [
nPoint += 40;
8 Z8 u8 R5 ^4 m( \+ i, B3 ?! D! ^ else if( m_nJob == JOB_ACROBAT )
& w9 {- {4 P3 Y) c, E/ I* W% H nPoint += 50;! `0 Z* k, M/ H O+ k- {
else if( m_nJob == JOB_ASSIST )
# ~( `" a4 b9 w4 y+ f: K; Y nPoint += 60;
5 d8 L/ L; I6 m8 N# O else if( m_nJob == JOB_MAGICIAN )7 k9 @; v, J; P3 m! T+ L* ~% Z: D
nPoint += 90;+ y/ e0 u0 [: I" C' i: }( Z+ k
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )& E0 ^" t" b+ G
nPoint += 120; T$ N/ m" @5 r
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
" m8 _( A7 G1 b0 s! M5 g% ~ nPoint += 150;: C) ?$ L9 `1 W$ [) i, T
else if( m_nJob == JOB_RINGMASTER )
; ~# E6 G. _+ q, f& O$ {! R- h9 T nPoint += 160; Z7 M5 m3 m y1 ?" q7 t3 Y0 I
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )5 ?- a7 L; S. W7 {8 c* H- a
nPoint += 180;6 r7 l% Y- O1 t( u# E
else if( m_nJob == JOB_ELEMENTOR )
" Z# N1 }* M K& G nPoint += 390;& y6 X( m5 g$ n7 j8 ^
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
) [5 M( D6 [. J7 A: K+ J nPoint += 120;
# B( f; T& S! [. c/ O) A else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
1 u' m* t$ _3 N$ d2 L/ b( Y nPoint += 150;
8 H& n( `# M- F2 Y else if( nJob == JOB_FLORIST_HERO )
9 h& U. W- p" r; O0 e+ q9 x nPoint += 160;- R' n8 j/ ~0 O5 }9 n$ t
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 o7 x4 N! k T8 P! P1 h
nPoint += 180;3 l* q* }& J }. a. z
else if( nJob == JOB_ELEMENTORLORD_HERO )
1 x2 P5 T* h# F: M7 [ nPoint += 390;
! ]5 N5 X) n% z% {5 j+ e. N# ]7 d9 K9 S4 F3 v
AddSkillPoint( nPoint );9 |+ _" X6 { U0 x" }5 H- ^
m_nLevel = nLevel;
% a! L- i* K/ e' l2 B% q
* r6 t& Q$ ^: m1 R' K0 v* x SetJobLevel( nLevel, nJob );$ f& n( D+ O0 Y u, j! O
m_nDeathLevel = nLevel;( _# Z. T" o# ^% ^. D8 }3 U" f
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 S7 K% p% w6 z5 H6 |! u0 d0 V
if(IsMaster()). [. J6 q9 j& Y
{
* C* W8 m8 G4 D1 I. ?$ U5 V int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
- d- n# ]3 M- F7 @4 W9 } if( nLevel > 59 && nLevel < 72 )
% ?* x6 T- I% M" v4 Y dwTmpSkLevel = 1;
2 k9 {7 d& [7 F& C else if( nLevel > 71 && nLevel < 84 )0 K7 L8 G: `% e8 m6 {) i8 H" O
dwTmpSkLevel = 2;. e& v: n5 |" m
else if( nLevel > 83 && nLevel < 96 ), p5 w# d b, J# p1 q) e v1 S8 B- d
dwTmpSkLevel = 3;
( m. w/ v! }# c9 O4 ]% f* p6 ` else if( nLevel > 95 && nLevel < 108 )
' \" Q& _7 ]1 E) A1 i dwTmpSkLevel = 4;! T7 ]1 u+ m! h3 a
else if( nLevel > 107 && nLevel < 120 )
u+ X, Z2 w! h" I" X& I8 A dwTmpSkLevel = 5;5 \# ^+ L- O& P( d( i" @
for( int i = 0; i < MAX_SKILL_JOB; i++ )
, G8 M; X4 I8 F6 s1 Z" J { 1 k7 l+ g& J, O. T9 n- p
LPSKILL lpSkill = &(m_aJobSkill);
; P5 d5 s; [4 l; B8 v if( lpSkill && lpSkill->dwSkill != NULL_ID )
l, w/ Y3 Z* _5 V& L1 e {
" [& Q* `2 G, p$ } ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ [8 O/ s9 v& L5 J1 [9 `5 P2 p6 G- S
if( pSkillProp == NULL ): h, o5 X1 v Q6 q3 ^* y
continue;% W& V2 }1 a# R" h
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 \* s- u+ b2 @, l& W9 F continue;
; D3 F$ m8 B+ w/ x' w2 m lpSkill->dwLevel = dwTmpSkLevel; \/ t! ]1 V. d1 J5 g+ U
} o2 }+ Y9 a* s; K8 l
}
, M7 T* ?; e' b }
* O/ U7 [# g3 q else if(IsHero())0 e% ?' f* G5 [; m. D3 x% m5 r9 q
{6 H: M; k) U+ `4 W$ i! Z& T
for( int i = 0; i < MAX_SKILL_JOB; i++ )
* O+ h2 _5 V1 ]% f3 S( n4 m+ S( V {
; M9 |3 O) }. r2 t$ D2 U' y5 n LPSKILL lpSkill = &(m_aJobSkill);+ _- }4 J' \$ t' ~
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 Y6 T# ?/ Q% M, C8 W6 x
{: s! v& M0 E8 B3 f- E' I4 K6 M4 }, E% L( ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " M4 S9 U5 `. C, [" X5 \
if( pSkillProp == NULL )
( _) A( I/ s/ ], S. L' U continue;
3 s+ u5 t0 {& Y if( pSkillProp->dwItemKind1 != JTYPE_MASTER). G! z/ x4 z* Z0 C" s0 x- J
continue;8 A) {: G( w% H' O: p
lpSkill->dwLevel = 5;8 p9 E, Q( X0 D3 w
} s# b) c; n3 [$ Q
}
0 d+ b5 h1 Q2 j( P( ^) q }
0 ^& n( N5 S$ z% l" t/ | B7 i9 q: o else if(IsLegendHero())2 l, K5 m$ J, K z; P
{
/ @* F% U$ C; x% [) ^7 i for( int i = 0; i < MAX_SKILL_JOB; i++ )
& {! l& Q0 ]' A. I7 l* a0 V9 ]) t { 3 X% I: f& h6 m$ O
LPSKILL lpSkill = &(m_aJobSkill);
; O/ L) d2 S- c% F: ] T2 S4 c% i if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 l4 {$ S! d) A$ R {
5 y& K# I; B2 L" \, z: v ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
: v2 p% |/ P, \ if( pSkillProp == NULL )
" [2 D& G( S9 f( P8 r( U continue;
) r9 ]7 Y3 A2 ~/ v" ?' v if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! G& U" l; h! O2 j( c- S; Z
continue;) c8 `6 U+ a: k# H
lpSkill->dwLevel = 5;
& }. J* e2 K( p0 c; [; s! v) F }
* z$ S+ L& J5 E l6 `, V' r }
2 g/ Z* M3 I& q. ~- F) o0 r }
; z, i# Y6 f7 w$ Q* f6 T#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans- v F3 O& F. ]) Z
if( bGamma )
3 U, D" h* D7 J7 M8 } {6 [% |2 N% F K" Y1 B, a1 p4 K
m_nExp1 = 0;
, b) B( r z5 Y; Q! I( @. a }. X$ z; J1 q# e0 j
* p& u' C& S" `1 E3 N- v
( (CUser*)this )->AddSetChangeJob( nJob );/ I' J1 I, M# [9 ]5 e
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
8 l6 \. V. ? Q+ P/ h7 j. o% t
3 G5 }6 r7 Q0 t; T: P- I& m* D! j6 i$ S- H
#if __VER >= 11 // __SYS_PLAYER_DATA
M- I' }# |0 O8 ~; z( q2 b g_dpDBClient.SendUpdatePlayerData( (CUser*)this );8 a. G$ d5 p9 |% N$ U. @* f1 T/ g. a
#else // __SYS_PLAYER_DATA9 }: Q4 r# h1 K3 n- @3 t3 K5 F$ O
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
( m# Z t' p' n g_DPCoreClient.SendFriendChangeJob( (CUser*)this );8 Q6 d$ V; U7 n
if( m_idGuild != 0 )* {' [1 J1 u! E& z
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );6 q5 c" f) j4 G- Y( {6 v3 {' `
#endif // __SYS_PLAYER_DATA
: f' a- t7 j1 z, G SetHitPoint( GetMaxHitPoint() );& J6 e* W5 \! g; ?8 O. R
SetManaPoint( GetMaxManaPoint() );
) U! }" g1 h3 ?6 z* A: L SetFatiguePoint( GetMaxFatiguePoint() );; X* c: M! R; h8 u3 M
if( nJob >= 1 && nJob <= 4 )* ] r* S, p2 |: J9 M9 h3 _+ _
{8 S0 F. R1 m1 |2 O, I
m_nStr = m_nSta = m_nDex = m_nInt = 15;
9 W) W |. m, V6 J5 n# M; B& a m_nRemainGP = 28;
; `. m4 p; K. u8 P) x& K }
9 b0 C( m& b8 P( e: w if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )/ k+ ?% K! a3 r
{9 s+ w3 G% [/ X R9 R. {# P8 r
m_nRemainGP = 118;
: Z4 k* m1 F( n) u2 d. S //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
! P0 f9 G) e4 T- t! p m_nStr = m_nSta = m_nDex = m_nInt = 15;6 R) ^# r# E/ E2 u2 @' X" W
}! g+ ~1 Q/ x. v- q X) T: J1 j6 a
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )0 y4 |. L8 X* ~' w: k' p
{% B+ `" p; A: m. m) L1 Z
CItemElem itemelem;0 a* D2 A7 R( s: H. b* g* x) P
itemelem.m_nItemNum = 1;0 R9 a# o! B# j3 ~( b! d+ ?
itemelem.m_bCharged = TRUE;9 V3 e) z1 W* |. L7 v. i
BYTE nID;
* w/ T5 h3 a" {) J) Z6 Y- B' x
) z; Z5 z& G' y$ S. L( ^ if( nJob == JOB_MENTALIST_HERO )- M% I6 i% k$ g( o W# D( z
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;5 X* K6 V- b" ~: b1 n ?2 ?
if( nJob == JOB_FORCEMASTER_HERO )) q3 z0 T/ O8 N
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% e8 C, F/ e J' \1 \+ u+ ~
. |. n% z1 H% S0 O6 g ( ( CUser*)this)->CreateItem( &itemelem, &nID );; V' I. `) P( C& G: `& d
}: T* u3 B" S2 r1 |1 [0 a
g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); r' h8 _1 q+ C! r( ?
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 Y* t6 s( _0 u
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& f( B: M0 @7 R; \$ r /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );6 X0 D5 ^0 r& V+ O3 Q
( (CUser*)this )->AddTaskBar();*/
+ @3 Q# L, V/ [0 W ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );3 o4 `: t2 B9 u/ L, [. c
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?1 O- j# u1 ~* d. L3 E
((CUser*)this)->CheckHonorStat();" k% V$ a9 N! n# Z- b
((CUser*)this)->AddHonorListAck();
# u. S6 K( L6 F* u; H g_UserMng.AddHonorTitleChange( this, m_nHonor);
! D4 R& w! s" J" I# M% e6 M: n#endif // __HONORABLE_TITLE // ′Tà?
; K8 Q. u' ? o( v' i }' {7 }- j! G0 `7 |# h1 z0 ]$ t! j
#endif // __WORLDSERVER H( Z) O. {3 L. h
}
9 t+ s, `. @# G, ~7 b. b% [3 \8 w5 @& a
然后你进入functextcmd.cpp并添加以下
/ E6 E8 B6 E5 y5 \$ k
6 L# D$ f1 h5 H/ K9 p1 B代码:, l8 G' `' D' F7 ^- c" f7 t
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )+ N: `# E; ]6 m1 G, k# M8 l" n
下面插入
4 E, w1 U. I+ ]6 WON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
1 X2 C' Z5 k5 m6 K$ j6 b! g9 s: _2 R( E% H7 b* g1 [
然后你去, t# l: O" N+ E) y
/ M% C! k4 T! P% I2 f6 J代码:
8 b% {. z0 _$ Y$ S: B+ f: p8 @代码
; \1 A* Q+ b, e1 y T9 L" dBOOL TextCmd_ClearPropose( CScanner & s )
+ {( x+ z: H* I( V) n" X{7 T; f0 j- `1 u6 ?; u
#ifdef __WORLDSERVER
8 Y9 X8 ]' }+ c* z8 n CUser* pUser = (CUser*)s.dwValue;
' _$ ~' m) R+ o8 e0 {. |5 U g_dpDBClient.SendClearPropose();
. n1 L& f1 P# o% F/ U) |8 c! D* J#endif // __WORLDSERVER4 z. m3 [2 l7 W0 F
return TRUE;
$ x6 ^( U- D( c K" f) g}
+ Y8 b4 B2 Y3 c' J8 K1 S6 d下面插入# ^: Q* I7 Z6 d
BOOL TextCmd_rebirth( CScanner& scanner )
& U* f; M' C% e( y+ ]% i& c{
' T5 h- P. k4 l( a#ifdef __WORLDSERVER# v4 d0 d2 ^- u: e3 I) T
CUser *pUser;9 t6 q. z2 n) Z$ e! V
pUser = (CUser*)scanner.dwValue;
: M* l* a' U# b; l6 z, \- ^/ Z& hif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())0 r8 [6 p @2 K+ B K
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
$ z u5 h* ?' Gelse
0 Y' H/ Z8 t) u+ w! y/ ]pUser->AddText("你还未达到重生条件!");" U+ x* Y8 k% X5 {+ D1 R8 a% _
#endif
3 d& i/ P8 x9 t0 W7 W. \/ j9 P2 k/ {return TRUE;$ G$ _! ^2 t# ], P
}
3 b; l: Q- ^2 H
% v" c! G4 j" j* {
+ L3 E- W6 m* K- p) M
: S& S* C0 W( |7 D
7 x& X1 z) W1 A; g5 B |
|