|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
" c5 |( F, g/ _1 B1 n. g: Z
) B' y9 s! e; X/ \5 `6 EMover.h$ @3 Q! Y N# l7 U9 W
代码:
: b# c2 ]5 D+ Z( Q! b3 ?找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü2 \3 Y9 b ~- @! I* y6 }8 p" t
@/ m; c: y5 o$ h- B- g5 j下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; " R3 y& w6 B U. s4 Y/ \, h
$ p: b, M( x) |然后你去mover.cpp添加% W1 H# f4 q! ]" c
3 b; Z T2 y3 @4 V8 R, f
代码:
, B p( u; Z6 _, o& U0 evoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )* i# N. R# M! B$ K; x
{, Y1 a0 T" P% X+ `: m
#ifdef __WORLDSERVER
2 B S" R7 J1 Q' { // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 d! \# C; v+ V MoverProp* pProp = GetProp();
5 D5 W8 u# O1 K( K/ M! `0 B if( pProp )
- [! [. W' o8 f {3 t' ?2 W X7 V: E
if( nJob > 0 && nJob < MAX_LEGEND_HERO )' w1 h/ Q0 @! x/ C( A! u" F
{+ @- j7 }% }5 V% q5 _
AddChangeJob( nJob );
! b2 M+ }* ?2 i1 H }else{
/ P/ p6 V8 [% P4 t: Y) j return;, O- ?% W J4 O# T9 A' |" \2 }
}3 ?0 j% k8 q/ g8 e0 u
int nPoint = 0;
6 t9 ] y; z6 X if( m_nJob == JOB_MERCENARY )
* b6 ]$ z, S3 s' u8 |, I/ E; ^- Z5 L nPoint += 40;
" K: ?# q( J. `* a& H6 p else if( m_nJob == JOB_ACROBAT )
* f P& v" J. L% @- \! _) a nPoint += 50;
: k2 l% o3 H, y( V* A$ F else if( m_nJob == JOB_ASSIST ). U# @% z p, p. n7 c1 Q: I- J
nPoint += 60;+ e: b3 L5 \7 _" c
else if( m_nJob == JOB_MAGICIAN )! C! f& E: |' a
nPoint += 90;4 F& j0 ]( N( f% l. U9 k
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ). N; F- O9 c" L$ l& j) z/ J& C
nPoint += 120;
2 a6 F4 Z0 q/ A3 b" [ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
$ O# N2 E! o8 f4 B/ H nPoint += 150;% S) Z k, a" |" Y9 @
else if( m_nJob == JOB_RINGMASTER )( z" B! k7 Z2 B1 y
nPoint += 160;5 `& P) G/ i5 R$ h0 }2 ~
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )7 K1 t5 K& O# d' E2 s
nPoint += 180;
* g/ I, c$ S* S& t8 I, S else if( m_nJob == JOB_ELEMENTOR )! b$ l2 h! [. ^. N# I
nPoint += 390;: O# l& r2 K& V
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
4 G+ J8 r8 D7 O8 a8 c* [: X% s nPoint += 120;. u$ h7 i6 a1 C7 t+ x
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )5 R, e% x6 h- \" ^
nPoint += 150;
+ |8 V e) Q5 T* l& j; e6 q else if( nJob == JOB_FLORIST_HERO )0 q& b6 }+ C: i$ a1 F* k, `
nPoint += 160;% l* n5 e, U2 |* N8 W
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 R, [! f6 x: W( I3 K2 t
nPoint += 180;; j4 L/ q2 h+ s2 J
else if( nJob == JOB_ELEMENTORLORD_HERO )
% B/ K; K9 p: C( C' s" k nPoint += 390;" s* }4 f7 i1 Q0 X
& {" w/ J# m& O" ^% p! h3 n
AddSkillPoint( nPoint );
* J4 Z6 x0 V4 ? m_nLevel = nLevel;/ Y4 e% Z y1 b' b; R
# |0 T9 k& V, ?' |
SetJobLevel( nLevel, nJob );
4 J! c0 W0 S% m8 O( m, B m_nDeathLevel = nLevel;1 p' x& G2 V8 d. U5 x6 D
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
' N4 O% b3 r+ d9 X/ l. T if(IsMaster())& _2 j3 W$ V$ f& \4 h; C8 \
{& R& i4 \0 n$ L7 Z V7 Y$ Z! c
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108( \2 O8 c" g$ ^- J( j* y
if( nLevel > 59 && nLevel < 72 )+ U+ R+ _) x0 q+ U8 V; y I
dwTmpSkLevel = 1;
9 I/ F. m) ^: I5 ~( w else if( nLevel > 71 && nLevel < 84 ), {$ }# R8 v& L7 _
dwTmpSkLevel = 2;
1 G2 e5 ]; n$ u+ ?7 H% N else if( nLevel > 83 && nLevel < 96 )
/ w8 x3 N6 A* [* [2 U. o& e( h3 [" P6 B dwTmpSkLevel = 3;
7 ?, w# f( }. m! o R else if( nLevel > 95 && nLevel < 108 )
: U( K4 \; v2 T' W B" t dwTmpSkLevel = 4;5 ^% G N7 x9 i. I7 z
else if( nLevel > 107 && nLevel < 120 )
, |9 Y8 A. K# ]% d8 ^. K dwTmpSkLevel = 5;* G4 }! o" i/ A6 ~, C* @
for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ O" \+ h& M; q8 ?- b {! | {
0 z! _1 [$ ]5 T3 `# a# C0 [; N4 _ LPSKILL lpSkill = &(m_aJobSkill);4 N1 w9 M( Z, r5 u' Y) }* O
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 H# B: E& {; A, |9 q$ L" Y, { {4 ?; i3 R8 i" E- X" T4 z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, r6 O1 x3 t: v0 e4 E; o if( pSkillProp == NULL )
6 X2 \, q5 `' Z. P continue;+ M% d) h- P0 G+ e$ N, x
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* }" r! @/ f; V& H, G" ]$ a; S continue;2 J* L' X5 k) ]. ?9 B
lpSkill->dwLevel = dwTmpSkLevel;
) E2 _. O( [2 G1 O }4 N" Q0 f% M: |2 f8 ^/ J$ R
}9 r" b( X# g( u! t- q" q4 }* n
}
- ]& ~1 b6 _. y/ Y1 l. |1 G. ` else if(IsHero())5 y: v7 C) Y. p& B& [! j0 E
{
8 X+ j+ J8 c% n- f* d3 q0 u/ x for( int i = 0; i < MAX_SKILL_JOB; i++ )
f* @5 A+ J. P" O {
1 q5 i; [* F, P( z9 D& ~" f LPSKILL lpSkill = &(m_aJobSkill);0 c p1 ^: S- }5 B
if( lpSkill && lpSkill->dwSkill != NULL_ID )
, l1 O% r( l3 x$ U+ i6 w {. y+ E7 i9 D$ ^: O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" t( a6 I, [9 j, p4 J- e if( pSkillProp == NULL )
8 m2 u. |8 }6 Z2 J continue;% s5 b* {" Z, ?: O, v$ m
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ ]0 _3 y$ |; v4 X: b. q5 m continue;- q5 {/ \' q; |0 }1 `: V+ ~- b3 b5 G& r: V
lpSkill->dwLevel = 5;/ B3 @+ _" u+ e/ M* Y- u
}6 f9 E2 F/ P2 F' d# M/ V
}3 c( c- W# x' x/ C
}
0 u8 Z8 x3 A! q* c! ]7 ~8 G else if(IsLegendHero())
, C6 d8 w) r3 M1 h! n {
$ K* J! f: g& K& x. U( u2 B9 K6 i for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! V! {2 B' n# } R* t
{
6 |! ?, T* M; }" ~3 _ LPSKILL lpSkill = &(m_aJobSkill);
3 Q/ k7 q4 f, S Y if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ p# z7 E# v1 }* B' L* } {
7 C' g$ o8 h1 ]! x ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
5 z* P3 f- l$ P9 }3 @ if( pSkillProp == NULL )$ O. i# I* P" N0 u) o
continue;2 W6 y' h. E; \3 F$ z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ y( l* D4 Z- M8 J" M: p6 ^: z+ ]
continue;
4 A3 c+ a) p( z& M0 \: F3 q: q9 w lpSkill->dwLevel = 5;/ M5 T1 g1 e+ f K8 l: A* V
}$ f6 o Q, G: ^
}: |6 w3 |. I+ y" [- I8 h; ^- O
}
& T# r# R! p! H1 [- {9 y$ X6 h7 _#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! Q% _' U* Z1 c' R
if( bGamma )0 Y8 ^0 G0 I; D4 x! B0 b
{
" P. d/ y3 C, b$ b1 M% Q m_nExp1 = 0;- T- y7 H$ ^! W% s0 @6 Z- |
}
0 O3 Z) l$ R( K% m& e# w( F" Q/ f& j$ K9 k' r" `
( (CUser*)this )->AddSetChangeJob( nJob );* C' _# p. D/ L( m+ W8 V& B/ O: i
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
7 W* `! J& W8 }, m8 a5 E ]
; [0 k3 v" @! `' u9 |4 R# v$ p' e: K H1 w
#if __VER >= 11 // __SYS_PLAYER_DATA D$ S( ]" W+ w( [# x2 V# Z0 ^& O$ Q
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );' Y3 L. N% }& r) ~
#else // __SYS_PLAYER_DATA
3 S: S* s/ q7 f g_DPCoreClient.SendPartyMemberJob( (CUser*)this );' `2 H! ^. o" j
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );+ J! X& I+ A8 O6 L) ]9 v- U
if( m_idGuild != 0 )7 f+ n) c0 N5 ^3 s: G' l
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );9 U) W3 c% R: i' E
#endif // __SYS_PLAYER_DATA+ I& r5 B5 p& p2 Q8 H$ }( Q( j% z
SetHitPoint( GetMaxHitPoint() );
; Y- m" C( @" N$ h7 V2 q7 W: ` SetManaPoint( GetMaxManaPoint() );
. [2 h2 h" m8 f# E1 Z: d SetFatiguePoint( GetMaxFatiguePoint() );3 h& I) ^# l7 D& P3 N
if( nJob >= 1 && nJob <= 4 )
1 A, X) E8 t- j- ?1 H/ g {# ~3 h( F; P* O- K7 c" f5 p% t
m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ l q5 d0 q6 L$ I( B) I m_nRemainGP = 28;% i4 U% e& z: u5 |9 v% R3 @4 ]
}
" Y; e0 m, w3 `+ ^2 } if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )/ f# u5 ?, J5 b9 n0 t! I- N
{ x2 f6 L* n, j9 K% \) I* K
m_nRemainGP = 118;3 {5 e; }. a3 Z0 s
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;5 v3 n V i* a1 G: I4 x( y
m_nStr = m_nSta = m_nDex = m_nInt = 15;4 a9 S% K! {1 J3 a/ \4 X8 k/ l$ s
}
1 R4 X/ D6 p5 `" _3 `! l if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
+ @6 P* R4 {0 d: _+ x) o. b! T$ \ i {( |6 Y3 Z+ T% J/ v
CItemElem itemelem;) M- [+ u5 B3 V0 S/ M6 u# K
itemelem.m_nItemNum = 1;
1 I3 k& I: n4 Q1 n8 T/ L5 [0 y- n itemelem.m_bCharged = TRUE;; D; C1 P- g; v9 ~! s
BYTE nID;* t( D1 K5 q2 u/ s L9 f
) j( p( f, J- ]- j if( nJob == JOB_MENTALIST_HERO )) `* Q( } |3 G r6 T; F
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;; r# n* ]7 Y0 G
if( nJob == JOB_FORCEMASTER_HERO )! R, J4 U }1 @$ G. F1 W; E: l
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;4 M: g2 X7 ]; F
& j0 x5 E$ P. _) t2 N& R) x. ?1 q ( ( CUser*)this)->CreateItem( &itemelem, &nID );
, R/ C1 ^! k9 K- d; S. ]$ M; W }/ p5 ]. h( S+ m6 K/ Q2 }8 U
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
4 V# x$ e/ f6 w0 V. X ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
2 Z5 @ u$ y0 T/ j2 S4 l8 _ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );" O" K- M0 ?4 o
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
" R r8 \$ r) U- e+ {! U% ^5 U ( (CUser*)this )->AddTaskBar();*/3 B2 t: S% Q* q2 ?2 D# \
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );8 `6 z/ b# O) L' [5 L6 `* X! @+ C* P
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
9 U+ c! S. ?4 V, { ((CUser*)this)->CheckHonorStat();, F; n2 N7 r b8 H5 a$ S
((CUser*)this)->AddHonorListAck();
8 T+ D! T# @" b0 M9 ?9 }1 o# w g_UserMng.AddHonorTitleChange( this, m_nHonor);
! R0 C; A* ?8 s#endif // __HONORABLE_TITLE // ′Tà?7 n) ?, M9 Z) ^' ~* D
}
- p( s4 y! S8 v% k2 D* z5 w* X#endif // __WORLDSERVER
2 Z3 m6 e Y b8 l: O/ e# n} * s" @! Q8 L2 g( b; a1 l
9 ^( P ^$ ?* M; _) G
然后你进入functextcmd.cpp并添加以下
! S) I" S( Y( l1 ^+ |
! b& j, l f# ^代码:9 M* O1 q7 m- G! P b- s$ b, G
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )1 M3 Y1 U6 V; @1 C# x: P- q- Z% m
下面插入
4 Q6 z% ^2 t. ^ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 5 M2 U3 a* i$ K- B. U4 W
7 F* d; Q$ u8 c. ?6 y/ e
然后你去
: ?, k+ c, _) m0 _% E: I
# `: k9 B0 x8 b `" [代码:/ W: ` f9 T! g+ d6 U/ o, F/ [" e
代码6 e9 ^1 J& v" i4 V
BOOL TextCmd_ClearPropose( CScanner & s ). o0 e. b k. k* O1 {8 Q: z
{, z/ i! O: a4 @, u
#ifdef __WORLDSERVER
9 m( U0 [' i0 u2 D7 G+ g; n& P CUser* pUser = (CUser*)s.dwValue;9 R5 \% E T6 x2 ^1 V& n
g_dpDBClient.SendClearPropose();/ s: Y% ~) W/ ^5 k) Y+ O
#endif // __WORLDSERVER
$ b3 H) i# i' q! B5 `3 q return TRUE;* v) k8 _5 X7 \1 ?+ {" C
}
4 |# y( H, s" f$ \下面插入! c; V6 N2 ?" E
BOOL TextCmd_rebirth( CScanner& scanner )
3 _6 N5 |; m4 d' l/ L{
! }/ x. t2 P, p6 ]) g8 o& A#ifdef __WORLDSERVER
. Q: u) U. o; J0 H7 M* Y" _CUser *pUser;0 k6 q0 j g( R& I- a) `- y) s% z
pUser = (CUser*)scanner.dwValue;. `5 J1 g# U- o& c. V n5 b
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())! [* a% J; |. [) V5 a
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);+ M* J" L/ h B& K: y# d0 o
else m; X q3 s2 |4 q1 A' z# G
pUser->AddText("你还未达到重生条件!");
& I, i6 ?$ N+ _7 d#endif# @: M e+ ?- a$ D7 M/ o
return TRUE;
" W8 {( r9 S4 I; w5 a% I& T} 4 Z& I$ J/ }. D) Y! _3 B/ I
& h5 y' G& \, A2 J
+ Z1 [4 j" i& U4 h* `/ U0 T6 d7 H1 D4 e! Y" A j5 U
: A: W1 z8 E7 K( V4 A$ E |
|