|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel& m7 q* w6 o; ?) g2 D: W# x
9 u) w( @6 P6 t: O: OMover.h3 R7 @; I* Z( @" L% I9 g
代码:! ~1 u9 J1 w: h9 U8 c' E
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
1 h; Y$ o+ c* _ w P! L% u" p, n) x' V* Q
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
7 c8 A9 J/ U% K: q! z" a7 [) |& F) }$ Y0 x9 Y( o3 \- H
然后你去mover.cpp添加' S- ~' o# B" F" ]* w
C2 f# a8 N M* O$ w
代码:
5 b! o& }' w7 C+ l) Svoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
; L" k) j, @1 K- j$ g& p c/ U5 O; Y) r{
6 ~, n ` y& H0 r7 B) B- {#ifdef __WORLDSERVER
9 G1 a/ s" ^; t+ m1 f // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
2 k4 O) U. x/ u( C MoverProp* pProp = GetProp();! X+ l5 i: } |2 }/ k! r6 B8 U& v
if( pProp )) D; f6 G" V9 v- x$ K: A0 K. M" z
{
& [- A$ l I( {2 b if( nJob > 0 && nJob < MAX_LEGEND_HERO )
( N# K+ Z: ~" a { Q& Z& M* J: D0 H! U, B3 J
AddChangeJob( nJob );
9 C" m; B J2 F1 q }else{
; L. Z0 H2 n" @ z9 z8 P! \) {8 F* s return;
5 ~+ x% ^' W( A W0 v% {$ F! }1 y) O% W }
) O7 o' N& a2 I5 p3 U int nPoint = 0;/ h) j" Y& ]( q
if( m_nJob == JOB_MERCENARY ) H7 y) f% L2 a* i8 L. ^1 [
nPoint += 40;
5 f, d& d, f( m: T; C else if( m_nJob == JOB_ACROBAT ): f% G) D0 S4 J& K1 \ g. j& Y6 Z
nPoint += 50;4 R6 l1 k8 c6 \% _# W! B4 X
else if( m_nJob == JOB_ASSIST )' ~* Q) V. c8 b/ \% ~- x1 e
nPoint += 60;
0 X9 F/ k X# B# L$ f else if( m_nJob == JOB_MAGICIAN )$ q- k) L# R$ v; {! h1 K
nPoint += 90;1 h/ C& ?0 U# T2 t3 g2 y
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )4 G$ c7 M7 S% B9 Z) b O* X) Q
nPoint += 120;8 Y; o1 c2 C- C% D" ^/ r5 T$ l
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ); e( D, D" Z& f2 |& w P
nPoint += 150;
1 z: P- N d( f* A, G0 ~ else if( m_nJob == JOB_RINGMASTER )
: U, [/ |& x2 l nPoint += 160;
- W `- X. t! u else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
3 Z/ h# ?- j( Y" Y nPoint += 180;
6 }( k+ ]* i3 ^/ f1 s, N* B else if( m_nJob == JOB_ELEMENTOR )' o/ U+ C9 M" } u. b* R
nPoint += 390;% I% }) Z, C% p, k
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
/ H4 R1 |( |5 m* g nPoint += 120;
( t* s6 d! E- a# y else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
! n! x8 N, L" V/ L nPoint += 150;
$ V2 L6 i- V- V$ W6 }4 o, w else if( nJob == JOB_FLORIST_HERO )) q7 G! I- x& I' C" D+ S. \
nPoint += 160;1 U$ W0 Y5 u G7 d3 ~: q
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ), h( c) c q/ ^
nPoint += 180;
" [ S" y* j: J: K: q. m8 X/ n. K else if( nJob == JOB_ELEMENTORLORD_HERO )
4 n# c. e! v6 H9 L nPoint += 390;
4 P$ D$ ^! \ j
( ~7 v& _! V/ v2 a6 D" A# g9 T, j AddSkillPoint( nPoint );9 H- P: J# Y" z/ {/ h: j
m_nLevel = nLevel;1 O: E6 f. v& _) m3 m- u2 X
0 C9 ?9 P% d/ Y SetJobLevel( nLevel, nJob );1 D3 ]- Y$ y4 |' U3 ^! t% z5 |
m_nDeathLevel = nLevel;" W2 e- \* p# {4 I: {
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
" w$ ]$ `# `- N8 c4 J1 W if(IsMaster())
- W4 B. h( i+ v2 |/ f# p {! O# m; l K3 r* X
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1082 z* I* i, Q3 \2 _$ P. y% z4 J
if( nLevel > 59 && nLevel < 72 )- }/ g; j$ e: t& L2 c: N
dwTmpSkLevel = 1;
, X( [ b0 k. ^ else if( nLevel > 71 && nLevel < 84 )
5 Y, O4 {- z4 h8 t dwTmpSkLevel = 2;
) b) ?* C- d& P3 M, [3 m else if( nLevel > 83 && nLevel < 96 )% H" m. B$ \8 p+ W$ @3 ^1 N
dwTmpSkLevel = 3;, v; D3 W/ `8 E9 _2 j2 Y% W
else if( nLevel > 95 && nLevel < 108 )# }( D( f/ e# i/ J- Q) C# j
dwTmpSkLevel = 4;' G' k0 O7 k( j6 |
else if( nLevel > 107 && nLevel < 120 ) E5 w9 t, `/ _* J
dwTmpSkLevel = 5;
( R* Z T. j8 v/ H7 \6 h. t7 J for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 m ], i- E# s3 R" I. F# y1 y
{
7 M' I1 l4 e0 O" j, [ H LPSKILL lpSkill = &(m_aJobSkill);
: d5 }1 T# V9 j if( lpSkill && lpSkill->dwSkill != NULL_ID )+ s& J" S/ S, c9 H/ D; L/ k" i, f
{
* {+ M+ Z: g. u0 g1 y- d& ?: a ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 P. p5 [0 p. B/ ` if( pSkillProp == NULL )
5 j0 U, y8 g; W4 @ continue;6 d& L4 H) m8 _, g" A9 d. \+ O% G8 F
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ L, G* J* O- }/ k% {2 B
continue;
% p1 t- O1 x1 o$ l; }& z ` lpSkill->dwLevel = dwTmpSkLevel;+ ?/ i; m$ c8 X
}! d* \' E$ |: z1 W. J7 F
}3 h( x- f2 K, D/ z' b* y
}
4 L6 @- V2 e: V5 |" V1 z else if(IsHero())
, |6 [* {) A0 F2 j- w1 l {
' n6 H. l% b1 X" i/ _ for( int i = 0; i < MAX_SKILL_JOB; i++ )
& s1 A- R8 a* P. y3 h { ; v/ M3 O* }6 B9 k/ l; H
LPSKILL lpSkill = &(m_aJobSkill);
& n- B; n# T% C2 M2 S# H% | if( lpSkill && lpSkill->dwSkill != NULL_ID )
: r" q5 Q. h, @% M8 Y& J6 F# h" J {& v" o9 Z# `% K% t+ t, S
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) u, M: E7 y8 z+ p if( pSkillProp == NULL )
& y2 B( q. E# u1 U0 }1 @7 F continue;8 L2 Y: J! n* C: ]+ u2 U
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* ?: }1 r* T" q' ]1 J continue;& P9 G% v% o5 h6 M. Z' r
lpSkill->dwLevel = 5;
( {0 r- o5 y0 w- K' D }1 e: }* H! x) r9 b4 m
}
& j6 Z. |7 _1 t" O3 N% }- f2 S* i }
0 ]) b& ]1 ?' W; f6 P9 V8 L+ ?: l else if(IsLegendHero())! b' Y! {! y9 w: Z2 B( F, N
{, b4 }) L" E, c @
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 x2 u' ^! R& {
{ + K7 k/ F3 H% h. w7 }$ L
LPSKILL lpSkill = &(m_aJobSkill);. I* D3 h" _) V6 e0 n/ T
if( lpSkill && lpSkill->dwSkill != NULL_ID ) q3 p& c! y8 ]* K6 i6 @1 h
{
5 f5 Q2 P9 s+ c$ m ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % u' A: @% a$ E) F6 F" K. G
if( pSkillProp == NULL )
- k9 G0 p, I: S continue;4 W8 A' D) y, \( p
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 [3 }# g. C3 }- u! J3 a
continue;, l# L' i( F' B. D! E' u: c
lpSkill->dwLevel = 5;
2 F5 O2 n* M' [! ^+ _7 m3 W6 R }6 W3 _; Y" i# J( [8 H
}+ S; M9 d6 P. [/ n6 S
}
1 r4 H7 K. S" f2 Y2 A$ m& f2 o#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
$ f8 E! B3 W2 s) i7 g if( bGamma )* v, O4 T4 M/ X5 M) s; k
{
( r% }9 R: F' Q% y/ [; Z9 q- @. y9 `% T m_nExp1 = 0;
) w' c7 x, U, [' _% w! B( u }
: j" D1 ?8 s+ e6 [' c( [8 D# e$ W: I
( (CUser*)this )->AddSetChangeJob( nJob );
5 u9 w% w t# m# p3 @7 X# e g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] ); L% w9 A. }4 P+ M6 J
& |. Q9 y7 ~1 [' Y$ J( ?+ g4 [% R( t
, q$ v* g5 o: s6 F; ]; X1 Y#if __VER >= 11 // __SYS_PLAYER_DATA
5 t# [0 ?3 h- y7 Z g_dpDBClient.SendUpdatePlayerData( (CUser*)this );4 m* V. s% H& w1 G: t3 F; ]
#else // __SYS_PLAYER_DATA* s' l C/ f" r* Z1 f' P
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
2 i' k7 h; o9 w% y; U g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
9 e, `) q; p" T& } if( m_idGuild != 0 )
) N9 u6 u- u; d# c g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );- P. V1 k0 J; J: l
#endif // __SYS_PLAYER_DATA
- p* B6 q& S( g$ o9 N SetHitPoint( GetMaxHitPoint() );
: K, k, I7 ]# @9 n4 E SetManaPoint( GetMaxManaPoint() );& [$ z/ T+ t6 ]3 d2 ]3 B4 A- K; n
SetFatiguePoint( GetMaxFatiguePoint() );' @0 M$ o+ h8 v* ?
if( nJob >= 1 && nJob <= 4 )
, h7 a# q8 \* G3 `) G& V {
( V9 s3 r6 p, f3 q! F; |- V m_nStr = m_nSta = m_nDex = m_nInt = 15;
4 m9 R7 X! _$ {, y m_nRemainGP = 28;! j0 M) M( a6 E8 N1 ~
}
1 N2 [1 H& u0 ^2 | if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
6 Z3 \" x6 ]. z/ g2 z1 l, [2 K& m {8 D6 a+ L1 u2 h( _) |4 Q$ Z" P
m_nRemainGP = 118;
$ J, F( o- y- S. [$ ~ //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;6 [1 n6 }- w: ~6 i* _
m_nStr = m_nSta = m_nDex = m_nInt = 15;1 H- V# U. X, D0 [
}
F1 F! V) |1 b. p# g$ H if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )5 N3 C% L- x& J2 D2 A/ d
{
: L; P. |1 M+ [6 F1 w( W, D CItemElem itemelem;3 R' s S) J' d) U
itemelem.m_nItemNum = 1;% j9 }& W; `) S; N0 r$ r! T2 C8 h8 Q
itemelem.m_bCharged = TRUE;
* x: |6 f, P/ r1 N0 ~. x# y2 ?' u BYTE nID;2 x: | R7 d" j+ s0 _6 ?. k" Z8 s# {
8 {' S" S' H9 O" m/ [1 t
if( nJob == JOB_MENTALIST_HERO )
, G; H$ M6 ^8 j% X5 h itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
) F1 o: E; a9 |" c9 s) Y if( nJob == JOB_FORCEMASTER_HERO )
% d5 I7 ]1 z6 o0 s itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
2 J3 Z9 o. Z3 D* o9 V' U+ ^1 v3 }
8 f, x L9 `/ n ~( n ( ( CUser*)this)->CreateItem( &itemelem, &nID );
( Y5 M. e3 r* |& r% M2 n9 | }
# r. o" u9 U c' m5 T0 `/ i g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
( I/ z. D" r$ _2 Z4 Q6 Q) B! ~$ D ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 r( f/ P* C% J; h
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
9 h1 w! R$ F3 G( r/ M /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
' V8 m* p& L/ Y" X# \ ( (CUser*)this )->AddTaskBar();*/
+ m0 D! V% v+ R! `6 f ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );4 N: J5 g) t H
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?1 |8 ?' _! e6 w! W$ f$ f" i
((CUser*)this)->CheckHonorStat();
! v. c$ w# Z) V4 j4 ]& B ((CUser*)this)->AddHonorListAck();& k0 {: Q* o1 r4 h, G% _2 |( t7 s
g_UserMng.AddHonorTitleChange( this, m_nHonor);
( I: P8 t5 Y8 j8 i1 @; h* a#endif // __HONORABLE_TITLE // ′Tà?
( `% h. b3 U- L" x. \. Q }8 I! @8 N y6 ]2 N2 w* F
#endif // __WORLDSERVER
N: ^" z1 K; x. Y+ X" `} 1 n/ q& g4 Z! i4 R2 `' N
9 K! U, ~5 A3 |1 `* D然后你进入functextcmd.cpp并添加以下
* y8 z) s( u7 @/ O* W& l
4 v+ Q0 \# C5 H, A# @代码:2 D/ o; \$ ?+ {, ~1 @4 ?1 Q+ P
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )9 E! D; x& u& A: b- A$ ] A
下面插入
( ]# g1 s& b) X- ]- v W# N5 q i3 m8 QON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
' }& u; y& T: Q. a0 ?& L6 p& R9 a1 i: D$ Y# d [" P, }
然后你去
; m s8 r3 m; F5 z- T, p% j& Q
1 u! k! q B' S9 y% R6 Z代码:
& X% x" p# Q: ~& r代码
" v9 _& d0 c/ @" xBOOL TextCmd_ClearPropose( CScanner & s )
/ T) v( L3 \9 K0 H% q1 K. U$ l% Q{3 t2 A/ N" I6 E" f, N+ l6 f
#ifdef __WORLDSERVER
& R* Y6 S- O) Y9 `" S+ `7 A( u CUser* pUser = (CUser*)s.dwValue;
" ^0 h8 u/ i. x g_dpDBClient.SendClearPropose();( d3 m; {( i6 W# |/ p( _
#endif // __WORLDSERVER" |! }; ~' e+ U9 D( G% ], g
return TRUE;
5 U4 v! K1 H% E. Z& k8 A5 @8 N}
T% K5 A! y7 b1 Y! f; c9 I下面插入, e/ S3 l3 U4 N4 l# n7 Y( Y
BOOL TextCmd_rebirth( CScanner& scanner ): }4 I: `! b5 R; M" e0 J! J
{
% `. G N1 I" S6 D$ q) i#ifdef __WORLDSERVER. s2 t6 {; D/ A
CUser *pUser;
6 m7 V. u+ f0 X# h: `; A5 X8 QpUser = (CUser*)scanner.dwValue;
+ \" ^6 X% S. Zif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()). z# ^( j: I- N0 U+ @, s2 F
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
" P9 f% ]' _+ k+ n1 m# gelse- }* `' k1 s& e) f
pUser->AddText("你还未达到重生条件!");! A/ v" u6 C: S6 o& ` S( @
#endif( S6 T( p7 s( |' w
return TRUE;
7 x/ b7 U1 ~. _} 3 V, j9 O1 \. P* a* t& G* w' z- s
6 ^/ o6 X! J& u% I# x; Z. `; H. V5 g
, G$ g% H/ g# G% V( B
4 Y! Q4 q0 l# U1 u& W" {3 X
9 s+ h( ?9 B! ~1 X |
|