|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel8 D/ X3 c1 C) H
$ `1 J7 g N! m0 c) aMover.h
* u( Z. J8 Q9 i* Y! }( l代码:% q+ U* ~" b6 Z% _4 T
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
4 i' a' _0 a* G% d8 r
, }0 j) \* y# u: Z0 I1 u6 h# Q下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
# \( L3 ?2 k: b1 ^, t& q( o3 q2 I1 A# B7 t
然后你去mover.cpp添加$ v! W4 L. o! K* i
! z$ m, k/ m& x6 S0 \- X! [: y- T代码:2 |$ ^: g: a" G
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
& J9 I# [ v3 n6 d5 b% f+ C{5 }( w2 l3 a3 C: r/ S( `
#ifdef __WORLDSERVER
& o4 F' L& G; t1 k // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó' {0 h- L: `% r) L0 v& l0 X: ~
MoverProp* pProp = GetProp();
, i$ k6 X E! [ if( pProp )! G& a7 t' A% K! B1 O+ @
{
" O. i: Z( }2 C U. Y* D. X if( nJob > 0 && nJob < MAX_LEGEND_HERO )/ D1 ]) y+ G; A
{
) z# ~2 P O' P* }& k AddChangeJob( nJob );0 K1 H7 ^0 \# m
}else{
( \6 |7 ]' z* e1 ? return;( Y/ b9 X! h; M& v3 j9 X( U1 E
}6 X9 }2 Z3 |6 ^3 I1 F" \
int nPoint = 0;
. {* }6 J9 h) Y- A& b7 A: R3 l4 N- _ if( m_nJob == JOB_MERCENARY )
~6 O# `+ u: B, @2 k# G8 {6 U nPoint += 40;( y) S# T1 v: I
else if( m_nJob == JOB_ACROBAT )
2 r0 B0 q& j- x- ^ nPoint += 50;# z& q8 g& S4 c+ y1 q
else if( m_nJob == JOB_ASSIST )
8 G! N9 o) P# K5 l" n) c! q nPoint += 60;. V" V6 @+ s& d- \, x% q0 h
else if( m_nJob == JOB_MAGICIAN ). S: n( n# S5 N" D# e, H
nPoint += 90;: ~& [- p7 Z: b, f, c* Y% v3 S
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
! o/ z- ^8 s4 u) e$ ] nPoint += 120;& H: Y O/ w7 r9 o" N
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ). }3 c' u- D- W. v! @# k
nPoint += 150;
: F8 s9 j5 k, i' Y: ~8 D else if( m_nJob == JOB_RINGMASTER )% r2 [% Y2 n+ Q( E$ l* \5 R
nPoint += 160;
$ h, y( Y) a6 m/ o; i8 H else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 [% a- I8 {! d) X) c7 O$ {* K6 u2 X' ]
nPoint += 180;
& q' ^8 m ]4 _" f8 s' J else if( m_nJob == JOB_ELEMENTOR )9 W1 r- A. a4 \/ y
nPoint += 390;
$ I V( r8 r o2 i( P else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
/ c3 _0 @' V% ?; Z. F5 ]$ X0 Z4 M nPoint += 120;4 I5 f$ i8 u, a; z. C) s
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )4 y) }3 N! w: |& K6 H4 ^) L+ @
nPoint += 150;
. C! V! l- S1 Q else if( nJob == JOB_FLORIST_HERO )& W# L2 H4 \* u- B$ {% n+ j4 s: L/ g9 u
nPoint += 160;
: W' y" i# y9 i else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); g/ k7 u+ C. R* [, o
nPoint += 180;
; e5 `1 R s, n else if( nJob == JOB_ELEMENTORLORD_HERO )- Z. x9 `0 r' ^7 Z
nPoint += 390;5 u4 {- o' E# N; m
$ f% [8 K1 A0 l# T' m
AddSkillPoint( nPoint );; ?% X0 p, I! Q3 _9 ~+ W
m_nLevel = nLevel;( x9 {! x/ f+ o! o
5 o2 {! N, X6 U" B9 S6 F SetJobLevel( nLevel, nJob );
' A1 y8 j, z! w A m_nDeathLevel = nLevel;
0 h" i _" b, S" T( J#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ A. o4 B0 g e+ P
if(IsMaster())
0 P$ f- d8 @. X {
. V* b: y# J5 X" _7 k) n( a int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
. v+ O# U7 a: K) X0 h/ r( c( j if( nLevel > 59 && nLevel < 72 )
# J9 X7 Y C4 ^0 f dwTmpSkLevel = 1;) t1 O2 c- _, F6 P4 o6 ~0 o
else if( nLevel > 71 && nLevel < 84 )! \8 `7 C& t; R9 f
dwTmpSkLevel = 2;9 P# N$ d. Z/ u) ~1 R) O+ t3 a; B: f
else if( nLevel > 83 && nLevel < 96 )
' @9 c4 G r0 H' ~; A; R' ] dwTmpSkLevel = 3;9 ~& Z# r, m( [) S$ c7 c2 E7 F5 y9 _
else if( nLevel > 95 && nLevel < 108 ): y8 w; P1 i# V' v: U4 T F
dwTmpSkLevel = 4;2 A) {$ `" }8 E' @* e3 L& |) B
else if( nLevel > 107 && nLevel < 120 )7 {2 W n- [3 V% I' t1 H
dwTmpSkLevel = 5;$ E6 r) K% d& k
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 y( _2 a- x; ]6 k8 \ {
, W7 N0 H" O8 R( j$ Z LPSKILL lpSkill = &(m_aJobSkill);& ~. `7 z5 g$ ]* v1 K: Y
if( lpSkill && lpSkill->dwSkill != NULL_ID )
! l7 i$ J( O1 _' o/ y, { {4 M: w; J/ U( B$ ?
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 D G( ^1 @4 S6 Q/ K
if( pSkillProp == NULL ). @+ k2 e) Y; K1 @. R' k* ~
continue;6 n) K, W0 s, G* \) ]" u
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 T; h& x1 |. _/ y continue;5 C$ x2 O( e7 Q1 g. ?
lpSkill->dwLevel = dwTmpSkLevel;+ F9 e! N8 W% }8 ^" w
} g% j# `% n8 }) c2 h$ f! K
}( O8 C- N* p, ` y9 f/ f
}
8 Q% Z7 c6 ]6 {: r else if(IsHero())
; C3 a0 V5 u5 } { k* C' U: p* @
for( int i = 0; i < MAX_SKILL_JOB; i++ )
* M" @/ M* Y/ d N, L7 }8 ` { 9 q+ X5 h0 L" C: M+ T8 h4 o* X5 W
LPSKILL lpSkill = &(m_aJobSkill);
* n( ], a* s; J/ J2 G' E8 Q& { if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 W. }: g3 [4 N4 _; W. z( {4 v9 U {+ f J' p( b& b' a, x- `, L$ \
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( @, c( {) k+ Z; l) F2 v" j6 C& Y
if( pSkillProp == NULL )1 F& O& n/ }2 O
continue;: z- s, s& r7 B6 |
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
- ]' ]8 `3 N' \2 [ continue;% r- k' n+ P8 z; K# p
lpSkill->dwLevel = 5;
% c# v# p; N4 x1 O$ M }1 G! r) J# l4 h5 }: \1 J2 n. T
}
) G$ t4 _/ Z% [( y/ r }
, x2 ?$ M! I; ~# M else if(IsLegendHero())
. i! A: F. Y: I! u8 K# E! m- b {
. p$ y% u+ ]' m1 c y2 j for( int i = 0; i < MAX_SKILL_JOB; i++ ) 8 c5 k: y; C& |, C5 ?
{
; B0 E+ h* y, Z LPSKILL lpSkill = &(m_aJobSkill);1 a. z0 ]. B- [2 o: B
if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 S3 u4 ^; D9 A {
8 _6 z5 _5 {8 i; i& e ] ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 D8 X7 l; h( q( U, ^' H/ q2 b if( pSkillProp == NULL )
0 Q. m5 i2 b5 h( n$ y) P continue;, H. O" P/ }1 g# f
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)9 O' I! Z2 U, }/ y0 g4 X5 s
continue;- R0 E: M. P# r. i' V2 q- q9 V# R
lpSkill->dwLevel = 5;
! v, u' S8 b9 Y: E4 B) C }
) p2 o N8 c; I- W* U! R: Z, L }; d; F, `+ o9 T. @- I4 d
}" O% O9 A3 r5 J/ a4 F
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) V3 s, t! s8 e( L
if( bGamma )- Y& h( B. V8 F. f4 ]
{8 A; x/ P/ O$ U' V
m_nExp1 = 0;
+ Z3 X1 D- ~) {- H0 [ }' r4 c# ^% S% g/ U3 D1 j: s9 Z5 D
( P$ w. Y$ {! M4 J ( (CUser*)this )->AddSetChangeJob( nJob );
# R; g3 m! Q. p. c5 r | g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
4 M3 W/ K0 l/ e3 k1 b2 `9 D* c1 O" n# d
; C. |2 u( `. J#if __VER >= 11 // __SYS_PLAYER_DATA
) B2 n: G0 ^& v8 Q* n* T. A g_dpDBClient.SendUpdatePlayerData( (CUser*)this );# o$ `! c( x1 U5 H5 v
#else // __SYS_PLAYER_DATA
6 {/ z. S3 s& y( x3 e3 M g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
' _6 s3 q7 J3 q0 a/ p g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
4 T+ L6 J% U* O/ X$ m, P8 f: @ if( m_idGuild != 0 )# c# |" m/ U/ R! N
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
( t" F( D+ n- F- Q" C( |#endif // __SYS_PLAYER_DATA
7 K" n; m5 R; H7 ] SetHitPoint( GetMaxHitPoint() );2 m- ~7 N S7 [2 Q
SetManaPoint( GetMaxManaPoint() );
6 e( q, q2 f2 H" L: e3 n SetFatiguePoint( GetMaxFatiguePoint() );
! i1 b$ Q# C% `3 V' k if( nJob >= 1 && nJob <= 4 )
4 r" w: s* V. } V, Y# V* K) u {
5 P: w3 \5 }/ C1 d/ |* _4 f m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ K2 g# t1 |1 M/ b n* R m_nRemainGP = 28;
& G6 T5 y2 y; a/ B y4 S" A5 h) h+ a6 I }! W5 L C4 { H# ` Z' G
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- o: ~2 O4 h# S6 |
{ U4 b' |: n; R8 a/ Y" W
m_nRemainGP = 118;( w j/ E. S' `0 i
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;- C* S& H7 z7 G, n1 b7 D3 Q
m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ u+ N: u' L! Y$ q }
4 S* u P* i1 p# Y5 M! X if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )7 g& j. i7 Z+ g4 x; c
{9 {# i' R3 v- N, Z4 `
CItemElem itemelem;7 _& w2 U+ T! C& S# P
itemelem.m_nItemNum = 1;
( l1 t+ Q6 i) q, C F' d7 C itemelem.m_bCharged = TRUE;
/ V* Z( N* S7 v+ X3 I: W1 z BYTE nID;
0 Y8 V+ u5 V7 N! a, e) P) ]3 N
; _% M- d$ t" B if( nJob == JOB_MENTALIST_HERO )
) ~. l& W2 {: q itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
& s; X! x8 i% U, T5 g if( nJob == JOB_FORCEMASTER_HERO )
" l" a- R: l) r3 E$ X itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
" F" e* O' \7 n8 ?5 u! P( }8 T6 _) b1 p r: H0 U) p" q
( ( CUser*)this)->CreateItem( &itemelem, &nID );
D4 f0 [, b- C! |, _/ U9 P }
$ Y0 Y, J: E6 T+ H) v7 X g_UserMng.AddSetLevel( this, (WORD)m_nLevel );; a% b. ~6 S, A2 Z' U
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );9 g2 N7 S8 ` K: x1 y
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
; M) c' A' r, I4 f9 \9 } /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
! R* d& g9 I0 p* e8 h ( (CUser*)this )->AddTaskBar();*/6 a2 _2 R. l5 E+ d. s
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );; F5 F- G& z8 J! b- v, D( w9 C
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
& X9 _. n$ q$ e! r) V; H" { ((CUser*)this)->CheckHonorStat();
4 C' x( j- R: X( y6 K7 o ((CUser*)this)->AddHonorListAck();% J* ]; d6 D, {
g_UserMng.AddHonorTitleChange( this, m_nHonor);
0 a* [+ q8 a( _#endif // __HONORABLE_TITLE // ′Tà?, @3 L' _. t1 g2 q4 j7 |3 d
}
: |# L$ G, f4 U/ T#endif // __WORLDSERVER
( P7 r$ w1 }! i/ D; _} 5 w2 U5 L, e3 u" {0 R
; J# M: p3 E6 Q1 u; d- @6 E" y3 O4 P
然后你进入functextcmd.cpp并添加以下8 M( x6 ]# @- }: U9 G
. }7 U: i& [& k5 W, }
代码:
j. ^/ f' u: n. {ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
% q7 ?" U/ q1 x: {% u下面插入
: ^2 A$ \4 h$ ^% l& cON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 0 U" Z6 C8 o$ d! l' o
/ o! J% u7 j" E* ^! J然后你去
+ N+ \ {( R8 O# i/ S+ A1 ]+ R: k0 C
代码: R+ ~6 o6 ?1 X- s# H
代码& X7 w) A! G9 Q; @ J9 U8 W
BOOL TextCmd_ClearPropose( CScanner & s )
# @8 D( @! q- o5 L. C! s{
6 w" ^, c: O6 I#ifdef __WORLDSERVER8 c9 T. o/ T# j% L
CUser* pUser = (CUser*)s.dwValue; q4 g/ |# S8 i( ~+ |
g_dpDBClient.SendClearPropose();
& X' G. ]1 e/ n4 c2 t#endif // __WORLDSERVER
& H! ]) W9 }% ^; Y! t& E return TRUE;5 A' B: W( U- a0 p% W
}% O% w$ n/ f* A S% O" H
下面插入
: o2 j: x" c* f; zBOOL TextCmd_rebirth( CScanner& scanner ): s" j& y) I5 L3 H6 B
{* d. Q5 e$ A x' W: J
#ifdef __WORLDSERVER
6 W0 I2 J0 I/ j. b7 D5 | ^CUser *pUser;
( a3 d1 ^7 q* U h, s6 ipUser = (CUser*)scanner.dwValue;
5 A; z0 R h$ s/ dif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
$ |: f* \ T) h6 ^$ V+ mpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);* r1 }6 [5 f6 t
else9 m8 V+ E3 a6 d" v D
pUser->AddText("你还未达到重生条件!"); ~- U; v" b/ b# @5 n' u2 s
#endif
9 F$ U- p1 ~; {. B- D* Lreturn TRUE;
* |7 P5 ]/ L! T- N}
; i3 N8 i1 Q: ~$ G' ^4 @" `) @& ]& e8 S8 f& @
" A5 D$ q/ g2 q
0 q* O, k( s& H8 P- {+ D7 e" Q
& Z8 p! |4 _/ z+ u. e: M3 r
|
|