|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
3 o! g. j- t! K5 [6 }9 ]+ o9 Z/ V/ L
Mover.h
/ }7 _* R! G3 e1 U代码:, q; Y0 B$ Q5 o. I
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
' f& b) g+ p+ ?2 S7 x1 c. e1 [+ K. H( h$ h; ^
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; % ~" M( {, Q+ @; F4 n" Z1 ^3 A
: V+ N8 a; [% T2 }+ Z$ y
然后你去mover.cpp添加7 Q! q8 a/ ^: @% O- |' q0 Z7 |7 x
5 q+ L# a% [0 E8 Z7 z% W代码:
5 h5 p( v$ D7 P5 a; D9 Rvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )' O1 E% x c: ~0 j; E' t: n
{
7 z4 Z! g# l" x* d1 j5 X4 T/ o#ifdef __WORLDSERVER% r& W7 ]) ]5 W6 o9 K6 s
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó1 f6 n% X+ K& i6 f: q6 v2 I
MoverProp* pProp = GetProp();& X. j: r# c8 G+ J/ w" @" y
if( pProp ); ?9 Y+ w; p5 }% J |. I9 ?
{
1 j% G6 a' P/ x; W( Q& ]' G if( nJob > 0 && nJob < MAX_LEGEND_HERO )
9 J% d2 J: c, D/ \ {
1 \ v0 U8 {! v: ?* l4 W( k AddChangeJob( nJob );0 a* N; A: R e
}else{
0 a! P7 j) g! c, i8 }1 I( ~3 A# V4 e return;; E+ h" ?' E1 J( C1 e3 U! ], x
}
% k9 G+ y; ~6 V4 g* c& w# N0 J$ O int nPoint = 0;
$ m8 c* o7 F- _0 _6 \ if( m_nJob == JOB_MERCENARY )
3 e& r0 }" b! M6 c nPoint += 40;5 o9 C9 h7 h, A1 }( e
else if( m_nJob == JOB_ACROBAT )
7 P; F8 y1 L! t nPoint += 50;
' l% x" _7 s3 |0 e+ p- m else if( m_nJob == JOB_ASSIST )6 N" G! H$ d5 ?9 ]2 X* x
nPoint += 60;
6 X: \4 ?: a4 ] else if( m_nJob == JOB_MAGICIAN )5 X2 b5 p1 [0 q) Z% p" r7 `
nPoint += 90;2 r' ?" O# O" x8 ^: x0 g, f
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )& ?" Z4 i; G2 T& ` f: s
nPoint += 120;
# v1 U# @1 |& M$ c, y& N0 f else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
8 I" Z L1 ?. J5 r3 X nPoint += 150;
. L6 u" ~ H1 X2 M else if( m_nJob == JOB_RINGMASTER )
6 O/ ^9 D( A+ b; r2 Q nPoint += 160;
1 |) D1 D7 ?# q, S7 L' ]0 F2 Y8 r else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), q7 h( R" ^6 @9 O$ W9 h- `
nPoint += 180;
. g' L8 |$ e6 {4 w else if( m_nJob == JOB_ELEMENTOR )
D) ]0 K& q3 C; K2 Z nPoint += 390;# U N: Z" l# U/ n4 M) @, L2 _) b
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
. r5 {" e$ K7 D; l7 G. ~ nPoint += 120;( w8 ]4 `) R. S R. u4 _; s
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
0 |; S4 o2 {, W' @ r( O& d nPoint += 150;
; P/ S* g& k T3 W else if( nJob == JOB_FLORIST_HERO )
1 H1 E/ d! J8 Z0 h1 E! n nPoint += 160;' C- U- z/ T4 A' F
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )) T7 A0 g4 R2 z5 |1 D0 ^
nPoint += 180;
n: G/ W% p$ W* Q4 S% ~ else if( nJob == JOB_ELEMENTORLORD_HERO )+ r4 c" r6 M. N; `' v
nPoint += 390;
) N6 D" R+ K6 X0 a6 k, j8 o
' p% _% I' Z' c8 U# f" k AddSkillPoint( nPoint );% K+ }3 j2 U6 ]; P m7 K7 z
m_nLevel = nLevel;
; R. ^1 w* o9 V% L9 N5 `' [4 Z# _& W2 L1 D1 `
SetJobLevel( nLevel, nJob );
/ C- @" t( n# P* r3 t m_nDeathLevel = nLevel;+ ~4 m! l/ G7 K+ L4 N2 e3 [: M
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! B" ]; W. O/ `, M
if(IsMaster())
7 C# F+ Z( q9 e+ w! L" U* I {
J& {! t6 h& K B0 m, d int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
1 O' d) m& a, Q2 B8 f7 r" B& @9 i if( nLevel > 59 && nLevel < 72 ); j! w" J" p1 l7 _6 N4 f
dwTmpSkLevel = 1;
7 l; I M# l; u: m' H# P else if( nLevel > 71 && nLevel < 84 )
9 ~1 T$ E3 H; Q, O% A. P dwTmpSkLevel = 2;# L7 p4 B; j+ t
else if( nLevel > 83 && nLevel < 96 )
' J0 N4 p8 k5 V. `& M0 t1 @ dwTmpSkLevel = 3;
$ g; R! Z1 c& E+ a' @" X, a4 L$ ? N else if( nLevel > 95 && nLevel < 108 )
. l" V: h& G! k- L* m& Z dwTmpSkLevel = 4;
$ ]7 c# Z, k6 y' ]7 \ else if( nLevel > 107 && nLevel < 120 )
' I' j% I7 z1 z. E6 P$ o( l- s dwTmpSkLevel = 5;, l- F4 N1 u1 w& L
for( int i = 0; i < MAX_SKILL_JOB; i++ )
/ y. [& q" y' I { - t# S Z( G7 f/ B) K' j
LPSKILL lpSkill = &(m_aJobSkill);0 r% r8 \" s% A7 z
if( lpSkill && lpSkill->dwSkill != NULL_ID )) O T0 K9 l5 C1 ^3 w" p8 l; ]; @+ S4 Z
{- c2 r( p" y( n# y0 c* Y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ x+ ?3 u- _' j* b* d- y% e if( pSkillProp == NULL )7 K0 [% H4 e' y# B* {( y. c) g
continue;0 ]/ `/ a' l; Q% ?1 \+ q2 S
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: P) Z( d3 l5 k: z' T continue;
, t* v7 V3 K1 B( A# J! r; z lpSkill->dwLevel = dwTmpSkLevel;
2 d' G: @% O' \* m }5 @6 R e4 u9 V2 u
}
+ V# l/ b* g8 D* `2 ^) s( E! F5 l }
6 |! Q- J2 K6 [4 F else if(IsHero())
/ @- i7 N! |& E: { X' u) ` {3 ~9 @, M" V0 Y
for( int i = 0; i < MAX_SKILL_JOB; i++ )
. N1 ]+ h0 g, }6 X, E {
* G W4 W; m) e7 j/ X; J LPSKILL lpSkill = &(m_aJobSkill);
4 Z0 G6 g$ ~, Y; x0 W) }1 J if( lpSkill && lpSkill->dwSkill != NULL_ID )" D4 o8 S m, x6 ^- F4 @
{7 y. H! Y3 _8 R" W! Y% \! N
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ G1 o. b0 N) A( Y
if( pSkillProp == NULL )
/ c) ]5 X* Y. S9 Z6 ^; R continue;
4 y7 M S V" n" j4 G( a if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 Y/ l' _( C8 g# h continue;8 U& q! f/ p: K8 T- e) K
lpSkill->dwLevel = 5;
n0 J" X" B) u! d0 `! U) Z. Q0 ]* \* U }
' H$ U2 M/ F& j# S" j }
8 D3 m+ J# V1 X1 F* M2 } }
: j5 A' a+ Y9 I& Y8 {" [1 y else if(IsLegendHero())* D: b- f! h- Z) ], @4 }# `5 p
{
* U8 J4 }* `. p9 U/ ^3 E for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! O: @2 D" v, k% Y
{
- D: i% o: r6 g j% ?. P4 t LPSKILL lpSkill = &(m_aJobSkill);
6 d) m3 e6 a" _- ~; [ if( lpSkill && lpSkill->dwSkill != NULL_ID )
- Y1 p. J: B2 b% _2 b7 F {
2 o% k( I& V& C7 K0 v1 ? ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ g( B) h" u# }2 l1 y. G3 ] if( pSkillProp == NULL )) z4 W' G; v( X7 Z: A/ y9 U: \3 d
continue;8 q& Q, B/ X& Y4 C! X' b
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 ^4 y, O; _, Y, M7 h9 S Y continue;# {& r1 p& f" L6 Z/ a7 a6 G
lpSkill->dwLevel = 5;
9 F2 M% ^9 S& B/ d( ? }" l$ V: N6 O: p' r F9 i
}
2 U/ }$ j4 n; a1 }- u) s J }+ F% O1 j# v# ~( `
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# M: X0 S2 a! j; m) H" A
if( bGamma )
, n! W" h+ ^7 Y$ I {
?5 m6 B, U4 Y4 e9 ^ m_nExp1 = 0;4 _# t$ K7 n. V: W2 c. @! ?
}% _; D. I5 ]% B! A, B2 e( k
( d. H. J X/ i' r0 w1 G3 p8 D
( (CUser*)this )->AddSetChangeJob( nJob );
; \( ?. w# H5 k" Q. o3 g g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] ); |: H: j+ Z; r$ F8 U# r2 k R
, c. ^5 D" { r& I' K1 b$ K& J
* |& w+ K! ?; h1 B9 x#if __VER >= 11 // __SYS_PLAYER_DATA @( Y# _9 y4 g. f, s) t& W
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
$ S, \# L3 c( z9 d9 o$ q#else // __SYS_PLAYER_DATA
3 F( c, q$ e0 d" ?3 M, J9 l, L g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
+ W5 `0 n* v- v2 o+ z/ E g_DPCoreClient.SendFriendChangeJob( (CUser*)this );7 X3 z# ~( Y4 u3 ?; [! Z
if( m_idGuild != 0 )
8 Z6 ]0 l: u- S g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );3 r6 R5 U7 o" V8 i, E- z% J1 v/ G
#endif // __SYS_PLAYER_DATA2 f5 Z6 j2 T7 p- {
SetHitPoint( GetMaxHitPoint() );
- s# v1 S" A. {6 m2 O SetManaPoint( GetMaxManaPoint() );
b6 c+ h3 Z# w @) i& `5 s% E SetFatiguePoint( GetMaxFatiguePoint() );) A Y) _1 Z- u
if( nJob >= 1 && nJob <= 4 ), s1 b6 W8 M9 ?4 R5 D3 L5 ]
{8 `- c3 S* Q y) s+ V
m_nStr = m_nSta = m_nDex = m_nInt = 15;* E3 v/ V y4 ]
m_nRemainGP = 28;; L6 V: O P; X: u# J
}+ [4 w) |) n6 N$ T- d3 D! q
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )! G! A) D1 _% X Z- x: |( z
{
5 Z) Z0 H" \9 E9 b ]0 o7 H8 p m_nRemainGP = 118;2 X! f1 ]0 o# B$ ~0 ?/ N* s
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP; E" F) b0 Y0 r$ R0 X
m_nStr = m_nSta = m_nDex = m_nInt = 15;- Z+ n: n' p+ @! ^: {; N% W; i( Y8 c# N
}% R' ~4 p# P! x- u1 `* P
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
9 n4 h' [4 B8 n0 M# p {/ |4 s$ p+ z8 o j
CItemElem itemelem;6 e+ z7 m) e# z ~) e" Z1 t
itemelem.m_nItemNum = 1;: s9 W9 U) j& Q+ h; G
itemelem.m_bCharged = TRUE;5 T! ^% H- o# x' N3 \. e1 ]
BYTE nID;
5 p1 \' \% v/ z$ r/ K v) @" D5 U3 B3 J9 K
if( nJob == JOB_MENTALIST_HERO )
' L/ k& s, M/ v. _ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
, c2 q) L1 f: F1 N9 V# J* H if( nJob == JOB_FORCEMASTER_HERO )
: y2 e* T& ?, D, c itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;2 H4 J4 L( j1 |9 Z
0 |% p, P' }6 C
( ( CUser*)this)->CreateItem( &itemelem, &nID );) C" Q; g- F6 v, W7 ?2 m
}
1 s9 l& z7 p$ Z7 r4 _ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
4 ~6 U, v, D' k7 D7 Y: h# Z ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 k: l, X6 C+ D* W
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );1 [' p! O3 h+ U. C
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
O3 P0 j7 k, ]; Q9 {+ C8 W ( (CUser*)this )->AddTaskBar();*/
, c0 i5 s; Q+ L7 t ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );/ z" l" R7 X" L- b) p3 ?8 C2 k7 i
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?! e/ i0 ]1 h+ V6 Y7 T) D3 Z, J
((CUser*)this)->CheckHonorStat();
% J6 P! `1 g; G5 k# Z; A ((CUser*)this)->AddHonorListAck();
+ y+ p; F% ?5 x1 I g_UserMng.AddHonorTitleChange( this, m_nHonor);
9 ~$ t& Z- w- ]2 i#endif // __HONORABLE_TITLE // ′Tà?
0 M6 s o' }3 `6 i% i' M/ h" x5 v }
* v p8 c; l4 D#endif // __WORLDSERVER
: t' F4 U- |$ {8 F) y}
4 n/ v6 ?1 K9 W" V8 A x0 B( c* r. ]8 m; t3 i* @5 f1 X2 \
然后你进入functextcmd.cpp并添加以下
7 I5 a3 U) g, J$ T4 U2 e
9 u9 v/ p- k; x* F: J代码:
' f) U& b0 L5 e; M. [" LON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )) E6 r/ O6 _1 g0 {) T$ J. s
下面插入. ~, k2 _' J7 A( i
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) % q, `8 e+ e2 j$ f4 |& H
6 P' ?0 o3 [5 N+ q: |9 s然后你去
& f8 ]7 s* g2 ^) m: _9 L) W
/ O% E5 s! x1 U9 J1 S- F4 b代码:$ ] I+ ?; d7 x- g+ j" P" ^
代码
7 q6 M9 T# C) h; R* S' HBOOL TextCmd_ClearPropose( CScanner & s )
- T; ^! v6 x/ ?8 Y{8 q' ~( E% B1 m
#ifdef __WORLDSERVER
+ i8 `( U$ X, n" t% |9 H: o CUser* pUser = (CUser*)s.dwValue;
( d* C5 s3 m- H9 V6 Q% d g_dpDBClient.SendClearPropose();
* A( Z1 Y2 Z d+ }#endif // __WORLDSERVER
) D1 U* A% b+ n! }- M. m% _/ m return TRUE;
! |+ C7 r. m& b6 o, k}9 h" ^) b: n9 T7 B! z& h) U
下面插入3 w: I/ C+ ?/ Y" I4 \0 ^% g
BOOL TextCmd_rebirth( CScanner& scanner ); E8 Q& ^0 Q8 H( T
{3 Q. Y7 I* X8 l' H8 c& U
#ifdef __WORLDSERVER
: r; G( Z' N8 {9 C" tCUser *pUser;
5 n( y! P0 i& W; k; mpUser = (CUser*)scanner.dwValue;
& k" ?' E( `& @4 e5 u' n% iif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()), o# D9 d) K1 a; R& O( ^% V: ?5 b& L
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);" G5 o b5 ^6 D! I3 ^$ s% n, c
else
, ]1 G) [% Z) ~8 r5 mpUser->AddText("你还未达到重生条件!");5 `2 ~/ U9 Q4 f$ |! k
#endif6 R, U1 F5 w* M7 e" M
return TRUE;
$ X, {/ d+ C5 V4 U4 k5 p}
! Q6 K: P/ ]) h9 M/ H7 e& ~
: F. c6 B9 ?9 l" Y8 D1 N* X
! k8 `$ S, t" o V: Q2 t
3 N. l3 T3 x; ]6 t! i& u- h0 @: \5 |8 h- [: x
|
|