|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel b) L, `% S1 L% a9 w$ c
, Q; h6 b7 ]3 c1 ?) Z4 ]Mover.h
* w, a3 C4 X3 b0 i8 ~代码:
( ^. V6 M) ?% `6 Q D, k5 b找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
5 J+ ^8 l3 J! t8 o5 @# O. b# M* G# r1 E" I1 C0 }
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
+ n! y% b. M! h: D. {/ Q, P+ @, i8 j* ?3 A( l1 M4 ]
然后你去mover.cpp添加8 Z& u6 t% C2 I1 x( L% @3 j- P
. a- ^1 _6 ^( L, I代码:4 }# r! p6 P9 l& `+ \$ P9 r) e
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
5 y, D7 _" n# K7 v2 K/ R- t/ W# O{
3 p8 V; }" f. |5 {4 ]#ifdef __WORLDSERVER
# z% {! G% W9 r // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
' p" O4 L3 l! ?' {) u/ X1 v/ L MoverProp* pProp = GetProp();' s9 l3 @ u) r$ S5 B
if( pProp )3 F" y9 u+ R) _3 {/ N; F% [7 }/ A
{
7 h) j* }5 ^. r5 n( }3 f if( nJob > 0 && nJob < MAX_LEGEND_HERO )
: ^" S/ W5 _1 I8 G4 O0 Z, v) W3 s {
9 S4 q' a# o, j+ q$ H' [+ X AddChangeJob( nJob );/ |+ S* x' N" ]/ q! W3 d$ r( c/ {
}else{' ~+ \3 C7 p1 h0 Y7 N
return;+ J7 Y& m' R: P$ F) _: [; F
}! T& x* ~8 D* g% I: o" q
int nPoint = 0;0 e- x' U& v5 m; i2 l! T
if( m_nJob == JOB_MERCENARY )9 Y: R8 {0 k/ L7 j% U/ o
nPoint += 40;
E3 O0 c$ k. T" b6 s B6 G0 a3 q else if( m_nJob == JOB_ACROBAT )8 a" H5 k6 s' c v, a9 O, A" B' E
nPoint += 50;
. J5 N: f# _+ V, f/ q else if( m_nJob == JOB_ASSIST )
) ~; Z, ]7 K" ~# S nPoint += 60;7 D8 Q w3 P% T4 ~& G: J b. r; [4 ]
else if( m_nJob == JOB_MAGICIAN )2 ]' [' G: g7 v' i, V9 ?
nPoint += 90;
9 r" ?. k3 L6 s& d6 d/ e: U else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )$ S4 l/ _" [' m$ O0 j( r* N% P
nPoint += 120;( Z/ { N: X: ^
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
% `9 s- J: ]$ d nPoint += 150;! Q4 p7 G1 k7 K8 ]1 F
else if( m_nJob == JOB_RINGMASTER )
# n4 }% d$ E% z. D nPoint += 160;+ \6 ~" c. J. e( S
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )& S7 g8 n: D6 T+ o# A8 N
nPoint += 180;: e0 U3 F! e) F* q! }! G2 H
else if( m_nJob == JOB_ELEMENTOR )
# p' y- Q: q- o G# B/ h4 K nPoint += 390;; o. r: K" d2 T" w: T8 \
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )' {; h1 g6 u6 M
nPoint += 120;
2 u) x& E6 {* x else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
' ^" Y: |; b8 ]1 ?# d+ ~3 G nPoint += 150;1 `- L- q A" y; A3 ?
else if( nJob == JOB_FLORIST_HERO )+ `- e- q0 y% E! Y$ W' z' m
nPoint += 160;0 U I; c0 @0 }
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )2 L$ z8 ^8 N# R1 ?1 u" o
nPoint += 180;0 R4 k! t4 J! @' r6 E/ `
else if( nJob == JOB_ELEMENTORLORD_HERO ): Q8 {9 E3 l: Y
nPoint += 390;1 `! ~$ \, y8 E" N5 v" f! x0 ~
2 k, L4 \* t4 x0 |* j AddSkillPoint( nPoint );: d+ Z8 y( E) i# {2 V6 I! ~6 p/ p
m_nLevel = nLevel;3 D5 \4 I2 k1 s' F8 m
7 J! M2 p9 J( ?/ N. z# W5 M
SetJobLevel( nLevel, nJob );! d s* ~) v/ j+ a3 e9 f
m_nDeathLevel = nLevel;& ? l7 Z3 N1 A4 ?; o/ n5 `
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
2 n& c+ A$ f \% q/ x# O if(IsMaster())
# Q: N/ u* w7 J( j A* J2 u% ] {' q/ b4 D; K7 ?/ u
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
( v: Y2 H. C0 f5 C/ M& n0 ^ if( nLevel > 59 && nLevel < 72 )
$ N+ P3 K9 G/ N; E. b dwTmpSkLevel = 1;+ Z* { z9 j, A4 [
else if( nLevel > 71 && nLevel < 84 )9 N! a5 J3 O: A. @/ _' F
dwTmpSkLevel = 2;4 Y$ Z6 c. Z0 P( K
else if( nLevel > 83 && nLevel < 96 )' e% z7 @) g. y6 Y/ p; ?4 |
dwTmpSkLevel = 3;
$ s( n/ \1 k+ B else if( nLevel > 95 && nLevel < 108 )
" @8 ~! S& O$ ~/ c$ X dwTmpSkLevel = 4;4 \, f, w2 c/ l: O5 h2 o
else if( nLevel > 107 && nLevel < 120 )
) \: o- d4 z; a' h dwTmpSkLevel = 5;
% v9 }4 x- j7 E/ O/ I* N for( int i = 0; i < MAX_SKILL_JOB; i++ ) 8 x8 a( M% f2 G. x# t
{
8 h/ D4 t+ `! Y9 U/ b+ e3 A% e LPSKILL lpSkill = &(m_aJobSkill);3 j- X6 y) Y7 S& T9 I+ A1 f
if( lpSkill && lpSkill->dwSkill != NULL_ID )! r b1 i9 f% m% N6 s, u
{+ k( S% k8 q8 Y$ e6 f
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- u. s4 N' F2 o k8 C if( pSkillProp == NULL )
0 v6 M8 @3 q2 m) N: h0 X( R# j continue;+ P( K. f* {# u: `
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! r; @) c* f; \7 Z4 H+ j, e continue;$ I& _# l! @4 {6 Y* o5 C
lpSkill->dwLevel = dwTmpSkLevel;
6 v. |, V& T$ V0 e2 }0 l8 u$ `3 l }! c' I: R4 j5 ~0 [ K5 B
}
# x7 ?& @ V$ [' h }( i0 _4 ~# @# @- `7 u- n
else if(IsHero())
+ f! B$ f2 `# x% Y {
1 d2 @& u- \5 \( C Q! X P# M# O for( int i = 0; i < MAX_SKILL_JOB; i++ ) + p6 z) ^: n$ v# F! `& ]
{ $ w) O* u b9 c* m* \- R
LPSKILL lpSkill = &(m_aJobSkill);: C) l+ s9 K5 J8 b( o' M& i3 |4 |
if( lpSkill && lpSkill->dwSkill != NULL_ID )( `) W3 L% f0 p) E- i& C9 ]3 T
{
- z/ A5 k# F) [ T" S9 j5 i ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" K% |" J" `+ Z% S if( pSkillProp == NULL )
& t- @/ H1 ?. K/ U$ Y3 ^ W$ Y2 \ continue;
* u" `, | S$ _7 S: Q' ` if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" S5 A" [6 t, l: ]* H continue;) r2 i# s6 Q) l& d$ _5 l
lpSkill->dwLevel = 5;
; c% Y' X% K$ P3 M6 d) m' J8 ` }
% N0 G6 S5 O! k* B8 u }
* N4 I' t L+ F }. k% j% p) s- {9 x8 x
else if(IsLegendHero())% N6 H/ t- u8 k: v0 P0 G* Z
{3 S! F4 G; h4 R% z e; a g) e
for( int i = 0; i < MAX_SKILL_JOB; i++ ) & w: W8 F1 s+ }; x" \. @. _- ?0 B0 r
{
; o; Y. m- u/ D8 } LPSKILL lpSkill = &(m_aJobSkill);
% ~2 q- t! S! F# `+ [: D, r0 M if( lpSkill && lpSkill->dwSkill != NULL_ID )0 F3 N( n; q& P& I9 ~
{
4 u) V& J2 f$ z0 a# Y ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 A& E0 W4 c' L3 { if( pSkillProp == NULL )
7 S C: {4 e% i8 j continue;
" ]* m3 n6 H: P& u7 { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 Y5 e- i. h% ?" R; Y5 g continue;" n5 z/ o, Y+ b0 @4 M$ t- O; i& e
lpSkill->dwLevel = 5;
/ ~4 C7 l6 @1 o3 z }) k( P1 s& y; D' I
}
* x, \- x4 L/ S z& \" d! K1 O }& }" A: f: p* w/ N$ \
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
5 i5 t3 N ~ t R if( bGamma )1 H- a. S' G0 O8 ^" Z
{$ D1 M8 i' X! Z5 Z! M' y* K& {) ]) L
m_nExp1 = 0;
W$ Q/ {( t% }# C9 g9 h) ~4 } }1 b( i& R) y8 Z- h
) E3 u6 E3 W7 y: v: B
( (CUser*)this )->AddSetChangeJob( nJob );! \' V/ T7 {2 I
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
$ m8 m3 }( D/ w+ |0 y. g2 b U* O/ ?! v
" Q) j, Y0 C! p7 d
#if __VER >= 11 // __SYS_PLAYER_DATA
* M2 R$ I" d/ I* d g_dpDBClient.SendUpdatePlayerData( (CUser*)this );' O/ E+ l- x/ t. a K! [
#else // __SYS_PLAYER_DATA @0 z+ ?1 g, t' D ]& R$ m9 h
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 p- A. G9 Q/ r1 N2 W
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( d# E' u8 b1 o6 e# e% @
if( m_idGuild != 0 )
& |% [4 D( h3 U g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );- A5 ]0 V0 G$ |$ U+ u
#endif // __SYS_PLAYER_DATA
& |9 c: g+ T6 g4 K, k SetHitPoint( GetMaxHitPoint() );
8 T5 S7 [+ v, j/ s4 D2 X. `4 _7 n+ y* U SetManaPoint( GetMaxManaPoint() );8 H0 W# h6 x4 S! C
SetFatiguePoint( GetMaxFatiguePoint() );
: t1 o5 X3 ~- V, V! i if( nJob >= 1 && nJob <= 4 )
( ~3 N2 G3 a" V# q' f# N) r$ o {
; U& |& w. c. W, f' I! f/ Y m_nStr = m_nSta = m_nDex = m_nInt = 15;
T- ]& C1 Q+ [ m_nRemainGP = 28;7 D- p1 t& C1 t0 ~! k9 H
}9 i& {) k, ~" }: e7 I
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
! K5 t8 m5 P/ d; ^, N3 w7 F5 g {
8 n7 T x& s7 n; G m_nRemainGP = 118;8 {& j: A- K' r2 ^) D3 N, X
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
- r' \/ j! z- Y A; a) b5 ^! G m_nStr = m_nSta = m_nDex = m_nInt = 15;8 i" U; l4 n& k- y
}
' U& l- j3 p6 y if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )3 ~5 [ G" A% Y5 _; X
{" q, e" K- E0 K, {! L. }
CItemElem itemelem;! X. h8 T3 h+ J7 N+ u& W
itemelem.m_nItemNum = 1;
p* c+ k+ i+ n5 s M4 Z itemelem.m_bCharged = TRUE;3 z* N' T5 N6 t
BYTE nID;# K3 w8 _5 p; Y% B7 C/ d+ v
) W, G) R: S, x) U) v
if( nJob == JOB_MENTALIST_HERO )! b# R2 v* j9 r9 m* y
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 f7 i: ?3 J" ?
if( nJob == JOB_FORCEMASTER_HERO )
5 ~# E+ l- n; v2 I7 ^5 r8 n itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
5 F/ j& f& @0 g8 [0 L+ R; a# Z. m+ h E* ~( S' {1 p
( ( CUser*)this)->CreateItem( &itemelem, &nID );2 ?6 `$ Z3 L* g( A9 N. L
}
' ], L) B1 n" t3 U. X3 r9 o g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
% Y6 C$ Z0 W$ U1 L) F/ E A! H& G: S8 P ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
8 E1 v6 O! L& l5 F3 o; n ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
1 R8 R! L) I n /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 n9 X- B' q, n5 n
( (CUser*)this )->AddTaskBar();*/
( b. e2 x3 E% Z% C. K: s ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
4 ?6 h% T7 M. a; b% j4 }. g#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
* J) l# ?6 {) M9 h! ~3 J4 Z L y5 j ((CUser*)this)->CheckHonorStat();. B# Q: G: O* w! x1 I5 I; B
((CUser*)this)->AddHonorListAck();; U1 I* O0 D5 d) ~; O7 V0 C
g_UserMng.AddHonorTitleChange( this, m_nHonor);
3 @7 z; B" S* _! W' \4 O& D1 m; L; G- i#endif // __HONORABLE_TITLE // ′Tà?
% J& k" ]8 f2 ?! O2 ] }& b. p. B5 b% ^! G
#endif // __WORLDSERVER
/ [6 P/ R$ L- ]4 j3 x2 p}
& T: f; [8 a6 M* h3 `5 X2 V
/ Q X5 U# c b8 h" T" I: O( N1 K然后你进入functextcmd.cpp并添加以下% E. Q( b5 j( i" _ N
7 C3 r5 }& ~1 U* v/ O代码:
* K* \. W8 B0 x7 w8 m, z' i- o9 jON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
- q$ {9 w# x* |6 S1 \- h下面插入
; r3 Z l: E* `4 _% Y( J$ N! \, A! SON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ) }4 U; P) c( R* k/ F* T! `6 S0 Z
. y( `6 S$ B" A% A* Z
然后你去
3 l4 W7 H$ J- Q# Q( \# Q7 |2 C: ` e; y4 f* n- U7 p9 K: ^7 r
代码:
; c) c( \; e k! {代码
" ~9 ?) F/ d. a v- i1 ~BOOL TextCmd_ClearPropose( CScanner & s )) i, A' {8 [1 Z% m
{) i& }/ j0 f6 S2 A
#ifdef __WORLDSERVER. P O6 L+ u" r0 z( r& b( n! O
CUser* pUser = (CUser*)s.dwValue;
% p1 b( C& R0 M( S. O g_dpDBClient.SendClearPropose();
. M" g7 ]9 W& z2 k#endif // __WORLDSERVER1 T' B+ D9 m, L" ~( g/ E
return TRUE;# Q2 y! v" f- i5 S, H* S
}
3 F* t( L- Z& Q+ z% u4 Q' F下面插入$ `# a! D: h+ _" A! M
BOOL TextCmd_rebirth( CScanner& scanner )
5 m. r" L# D1 p; i{$ A8 N& t) ?. g* S% k' R4 a
#ifdef __WORLDSERVER. g* n6 H* h- I) p/ E" [. M! \8 T
CUser *pUser;4 u0 w! H/ Y. m) ?7 J
pUser = (CUser*)scanner.dwValue;0 f# {) a9 B5 J! E$ q8 g
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( ^) U8 l) m7 ?8 O* ~
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
- ? ?: e1 { V! u5 A6 k N6 Selse# A" D$ D) N( N2 B" J+ Z$ V% M
pUser->AddText("你还未达到重生条件!");
6 F9 ^ Y7 k7 N#endif9 l+ B v( K k3 H, ~% O
return TRUE;; K! m# t/ i0 i# `- t1 O
}
" D$ q# N0 p& s
# H$ c1 ^2 n" v5 B4 f6 E2 ^( ]4 d/ J: M/ r" I2 r
: @, q0 D7 Y* {8 _) E# _, h
4 O' Y1 a# e4 X, ~$ d) [ |
|