|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 t# g* O6 O8 ^& B
4 L* s8 [( m$ A- _Mover.h
6 s* O& X, x- [1 X" N* b# M代码:
* r: s/ z U3 D' T- _8 p: K找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü/ \3 x$ d- }8 G3 h3 c- U2 u: P+ u" V
7 A0 D+ g4 L9 N' ^( [. M
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
* z# @1 ~* A' j) d" H: }
( P1 k6 O9 h- H9 O# K7 k然后你去mover.cpp添加- Q4 Y1 f0 G- D) V
* {! i _* p0 G4 j
代码:( e' r& S" ^/ x) D( d
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )( _0 H v s. l* ?( l! Z" U" Q
{
- b# w. W+ q r5 D! n }& w" V#ifdef __WORLDSERVER: R7 i- z b- Y+ }! a6 c5 Y
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
2 D: K7 H9 X1 n: i3 d MoverProp* pProp = GetProp();
- u5 S# \' L6 l& ]; Y if( pProp )
9 \% x. Z$ ]' z! G8 R( T* O {0 e, D1 w9 c9 S) g
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
2 x9 n+ e8 _ Z; q {
, A7 J" ]5 n8 Z2 a4 X AddChangeJob( nJob );
# x' x9 X) [* G0 A J% Z: P+ [1 G9 c }else{% g% b. `2 [# j9 D* `
return;3 n2 N( i% B5 D* e
}
% K* b2 v, R3 [2 m) ?, ] int nPoint = 0;
% }9 L, r8 `, P { if( m_nJob == JOB_MERCENARY )+ i1 N0 k2 K& p T! D$ _
nPoint += 40;# w: _( ^8 t: [/ |
else if( m_nJob == JOB_ACROBAT )6 P0 n* W5 M @! K7 \* e; o
nPoint += 50;
4 W8 V6 @ q( P else if( m_nJob == JOB_ASSIST ); V! V* `5 `/ N: Q3 B3 Q% M
nPoint += 60;, X3 \) ~- |; a D( `
else if( m_nJob == JOB_MAGICIAN )$ c0 @. g+ F% p# r) w& n2 N7 Z
nPoint += 90;+ Y- S1 K5 t1 h
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 d( Z6 w. O6 l4 W D
nPoint += 120;8 u j0 _/ n) w5 V$ D4 \
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ). J$ C2 `0 H% \7 E8 a$ x
nPoint += 150;
2 C' k+ O" h+ H else if( m_nJob == JOB_RINGMASTER )
% t' f0 Q% e4 u6 n! G nPoint += 160;
- i3 W( A# e* @3 I6 S else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
4 X8 m+ Z, s; m# R nPoint += 180;
8 [: r) F4 f( F, E9 D3 }! Z2 ?5 } else if( m_nJob == JOB_ELEMENTOR )
" @! y9 z2 m! F z; g nPoint += 390;
0 j [! {% p* f else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
4 M& g; p4 B, v% E2 ^, j nPoint += 120;
) e- z" u3 ?+ S3 C else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )( v# T" [6 A8 _5 g, c. `
nPoint += 150; o5 y# s! n/ S$ J2 h! Q5 u; D
else if( nJob == JOB_FLORIST_HERO )
6 ?' ?, n& { ^( ] nPoint += 160;
0 n( \9 F2 F8 p' j, ` else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )/ f6 l1 S8 G7 n
nPoint += 180;
$ @/ F$ U" Z* q# V" c/ S else if( nJob == JOB_ELEMENTORLORD_HERO )
; f) e9 X. m* A2 B4 ]& \5 m, Y nPoint += 390;
& N C; A# R4 C- G, a
9 J7 d+ w2 M: T9 A: P9 B8 ^8 y, j8 l AddSkillPoint( nPoint );* [0 [9 g( k) T
m_nLevel = nLevel;3 p& Q+ M* ?0 P+ E7 f6 M. u0 H( j
% |' R9 h8 O0 L+ ~4 p: p
SetJobLevel( nLevel, nJob );
" F4 b" F+ ]( N m/ `) O m_nDeathLevel = nLevel;3 j0 _5 q3 {8 A& M( F2 r
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 c+ {+ v! v- c1 l1 f9 ` if(IsMaster())
% b( {# |4 G9 |2 r$ M9 |; N {1 |/ I1 v5 n( F1 S- D+ K
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
% \& }! E5 I9 S" Q5 J: k& ~' a& C if( nLevel > 59 && nLevel < 72 )
/ K* w' U& M5 R dwTmpSkLevel = 1;* |" x i0 _4 _8 _' \
else if( nLevel > 71 && nLevel < 84 )# h7 P& ^; d8 X9 T3 ]2 w
dwTmpSkLevel = 2;
& _% D8 j" m+ V, C! a V else if( nLevel > 83 && nLevel < 96 )$ {) a$ Y+ a: J& X
dwTmpSkLevel = 3;
8 i% {9 W: m+ M) B2 l; ~ else if( nLevel > 95 && nLevel < 108 )
6 ~" M" k k; x R dwTmpSkLevel = 4;4 {* E! S. u5 t4 J* S
else if( nLevel > 107 && nLevel < 120 )
( \! I: f+ |( x1 M dwTmpSkLevel = 5; i* r3 j; Y" y* C9 m3 m
for( int i = 0; i < MAX_SKILL_JOB; i++ )
. `. ]) K) P& _3 p { % o" N' P* n& Q/ Q7 Z
LPSKILL lpSkill = &(m_aJobSkill);; C4 J" H% X; Q u- r F- }
if( lpSkill && lpSkill->dwSkill != NULL_ID ). N. s% Z7 _% V5 o5 o, k5 g
{
% {9 x- R( V% A+ ]7 U l4 i: G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % {& m! d4 G- v \
if( pSkillProp == NULL )3 F3 l" W" W. O6 I, y
continue;% `; f9 B* ]6 q) S
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 L* ?2 h1 T7 j/ {# H' Y8 S continue;; B! @0 m; _" R, i" K+ @5 I
lpSkill->dwLevel = dwTmpSkLevel;0 r4 |. ~1 \' A
}, \( a7 [) A+ l/ n5 z$ Q
}! `4 U7 q9 r" h4 I# Q0 C
}+ u O8 W5 D, ~/ t
else if(IsHero())
' f0 @1 Y# M( I/ h1 h" ^ {
3 P1 V/ N ~7 g6 s, k for( int i = 0; i < MAX_SKILL_JOB; i++ ) 9 W/ m: w% { q7 P
{
# U! y# S, n% Y/ Y LPSKILL lpSkill = &(m_aJobSkill);8 K/ o# G; Q7 Q& L0 `/ z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 \) e( x% n; W4 z2 ] {
+ b# q* g4 K( I7 X; W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' z/ x( k, r* \2 f* n& W. e5 b
if( pSkillProp == NULL )8 W3 L. t7 f3 O' t# w9 \
continue;4 x2 J* g9 @" n' |+ q2 J! K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% f/ U @+ p9 X2 }+ k+ p continue;
+ I1 g5 g. e' S& b& P lpSkill->dwLevel = 5;
' [& ]- W; g# w& k- ^ }
1 c/ H( J- i( [% }" F$ ^: s }
; H8 U! k6 O9 }( d9 ]4 s }7 D* F) Q+ m b8 H
else if(IsLegendHero())" E2 ?2 r P$ K* Y
{8 q {: y/ x% [. R' P
for( int i = 0; i < MAX_SKILL_JOB; i++ )
* L) i. d/ B: X8 u0 d2 `2 D! Q: z {
$ f8 A6 Y' s# T0 s+ V: Q LPSKILL lpSkill = &(m_aJobSkill);' h9 m) R" o+ z( K( e' [
if( lpSkill && lpSkill->dwSkill != NULL_ID )' h- q3 g0 D1 C3 B9 w9 k( R
{
| A% }4 l6 }; }! y- O/ _ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 W, @- a1 x1 A- M8 R: Y' C6 i# I if( pSkillProp == NULL )5 t2 Q% T9 G: u& Y
continue;/ r+ ]# P3 a% M7 i
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; R1 |! ]( K' d continue;
. z/ ? l3 i' q6 v) u* h2 v lpSkill->dwLevel = 5;
' D3 L% U8 \, S* A1 ]9 r }
) \- }$ V9 \0 C8 F2 M }4 W9 g( [5 m( T& O" P& N3 O
}
# H7 ]1 [% _7 h e1 V1 }+ Z2 y7 W#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 A# L% _# M5 x' _9 Q+ ]
if( bGamma )8 d( j; m' \9 s- a
{9 B/ L0 F# H& O* \' M
m_nExp1 = 0;4 p# q) h& L. b8 `$ b6 {
}
( u" f# M2 G: F. q) w( p
' I% M+ X$ d2 d! V; ^! {/ _ ( (CUser*)this )->AddSetChangeJob( nJob );
' _5 ~4 C0 H# y# G g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
3 T1 r9 X: w: |' O0 a' X
1 Y% ^7 a4 J- q/ j) Q8 g1 f1 O" x) x
#if __VER >= 11 // __SYS_PLAYER_DATA/ \ Q$ ?, b" D# h
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
. f5 w# T9 x% z# G9 T5 K/ g#else // __SYS_PLAYER_DATA
, N* i5 |$ i7 T. `1 u6 o g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
y; M( t3 P0 m! J g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
4 X% A2 n7 o- a/ n# } if( m_idGuild != 0 )6 e# b, ]# ~, R% t
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );0 D0 t- F0 m6 c6 v# q8 T `* W/ p
#endif // __SYS_PLAYER_DATA$ z6 e8 n! J3 C5 F: Q! H2 e, X x
SetHitPoint( GetMaxHitPoint() );
5 N9 Y! _: ]2 B* a' a3 S3 R SetManaPoint( GetMaxManaPoint() );9 a9 d7 D; h% D# q; o
SetFatiguePoint( GetMaxFatiguePoint() );
/ z# t$ |1 j# v- N, v8 l if( nJob >= 1 && nJob <= 4 )
5 [+ L d2 d* K+ r7 L8 P1 p" n {3 a+ J) g7 U4 K" t' {/ d, s
m_nStr = m_nSta = m_nDex = m_nInt = 15;# a3 z/ u, _1 {0 _# a9 K! V
m_nRemainGP = 28;
. t+ i6 S8 J0 e8 d q }! D( b9 ?( u- z4 ~% u4 n3 o
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
8 V- f4 R$ C. e {
2 W" [0 u; Q( ]$ o6 Q m_nRemainGP = 118;) t2 W% A* Z5 u( a3 k+ q# @
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;1 M4 o/ x2 ~2 [0 Z
m_nStr = m_nSta = m_nDex = m_nInt = 15;
& ^/ G/ [/ T8 p3 W" r) w$ o }8 |/ g* G8 M6 I1 [# P, ~
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
. p2 g6 Y8 ]: N) Q9 \: B3 g {. c$ v1 }6 ~! ?8 @
CItemElem itemelem;
1 y3 z& { H+ e4 l* V itemelem.m_nItemNum = 1;# z* E2 Q4 _8 p3 n; Z- v( ^0 l
itemelem.m_bCharged = TRUE;
( N7 ]& ^/ Y6 j6 h BYTE nID;, z7 c3 V" [) F q
& t7 m0 D4 D$ I- N$ m' ] if( nJob == JOB_MENTALIST_HERO )3 o* V7 u# O/ t8 H( K
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
" k, @5 h, Y6 P( R% ] I if( nJob == JOB_FORCEMASTER_HERO )
( u7 v* h% T7 t itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
1 ]; h7 Y9 d3 @7 f" D5 A, N# M p! y2 u+ e. ^# Z) {. v9 N* S$ h
( ( CUser*)this)->CreateItem( &itemelem, &nID );
( ], X0 f* A" s- L4 Q) b/ D }
3 ^) T1 [0 S8 V* O0 t g_UserMng.AddSetLevel( this, (WORD)m_nLevel );( d3 N, A# w" ]" p
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
/ g4 e7 i; x- [6 P; i. @/ } ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
" i% \8 |8 \! f5 `4 @ /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );2 _) k/ H5 K5 f" u
( (CUser*)this )->AddTaskBar();*/
& `5 p& u$ j+ M1 ^* h0 n; r9 T ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );0 |7 f4 ^2 L. y
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?; E h; o) t+ }0 C5 G
((CUser*)this)->CheckHonorStat();
/ I1 ^6 A4 h. t1 C1 v. n. c$ t+ H ((CUser*)this)->AddHonorListAck();
% B, k Y- Z* v g_UserMng.AddHonorTitleChange( this, m_nHonor);
. O" K5 e! q/ o#endif // __HONORABLE_TITLE // ′Tà?
/ {! R6 Q7 U: e4 W& q# A' F }
1 l9 ~( |* f% [: g#endif // __WORLDSERVER/ b m6 y/ V' w* i. t/ P
} - D0 M, ^5 E, x, K( Y
) t9 J' n% _$ C- e$ d6 t0 U
然后你进入functextcmd.cpp并添加以下9 I/ b- Z- V5 a9 L8 j
9 a- Z+ h) |3 ?2 R) i代码:
. o4 g9 W9 F r3 U! KON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )0 d2 }' K- t9 X/ H5 @
下面插入
, S* e) j6 `9 D/ n( uON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
. I) L; x2 D% b: L+ x( y8 L& G0 b7 Q! `$ N5 w
然后你去
: G! i8 E; ?$ v u2 b4 N- f
# u0 q$ c- k/ f0 r5 u代码:, p! x$ N6 u5 z( n& D
代码. E( q9 X/ [" L4 Z3 ~# h
BOOL TextCmd_ClearPropose( CScanner & s )0 r" q$ _. O- K9 ^
{
, e3 e& e4 o, M#ifdef __WORLDSERVER R. d5 l' g4 A$ n( T A6 S6 [
CUser* pUser = (CUser*)s.dwValue;7 a g, E4 y. [; q
g_dpDBClient.SendClearPropose();
* P4 ?8 b6 {# p+ n: I& U#endif // __WORLDSERVER
# a7 }* Q% w8 p5 |$ M return TRUE;! r& M+ ?2 O$ d2 G: ~: F+ q, d
}
( @/ V5 ^) }9 ^* j' J& g! P下面插入
& ]) L! h# l7 v% Y. dBOOL TextCmd_rebirth( CScanner& scanner )
" m) F/ w- S" p7 T{
' R/ h6 M% u4 B4 d#ifdef __WORLDSERVER2 h/ w! K2 l: A# z4 z7 S' Y
CUser *pUser;- L q, ?3 W, E5 q( M5 w
pUser = (CUser*)scanner.dwValue;; U4 |0 D4 h) s6 H2 t+ k9 e
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
" T7 I6 l ~$ w3 U9 E) {5 `pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
6 G, i* }4 L! G" Pelse2 U, S0 b U; z+ b# J
pUser->AddText("你还未达到重生条件!");
4 T( G+ F! e$ \8 {) D#endif+ Q9 i* m) U/ N1 ^7 l( w5 V8 d
return TRUE;; e" d+ n( n1 R) }, T
} " p3 |8 B! T# B
' `* w5 {- l- f/ h
A( R2 _. g) G5 _
% i" T/ Z2 \! F( z# x. j# ^" u7 @; H* R& s0 R
|
|