|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
% Y6 D5 E3 N2 \8 u0 A) n
% _# O# I" g- g# @; @2 J' kMover.h
. X$ q/ | n' b代码:6 p: x9 x+ v2 c0 D
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
2 @( p0 [: D' q$ ~4 l. e5 A" s
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ! A7 H' r, p! t2 P& I8 T
1 w3 ^) \* m9 }
然后你去mover.cpp添加$ {+ S9 n; k* K7 f+ A
" k2 r# s; r7 H' L5 B: j" h代码:
3 \7 L0 k o& O2 B( Jvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
i2 \* m9 u8 a& G5 e{, @5 k& r, j c2 { k' S/ a
#ifdef __WORLDSERVER
Y! Q: Q. t! K // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
9 @3 K. T8 c* u& {' L# V MoverProp* pProp = GetProp();1 F* a" p k8 ]" @) \1 E8 y
if( pProp )
+ ]4 `0 V9 b! o+ { {, g! Q2 }3 E# J9 y' u7 Q
if( nJob > 0 && nJob < MAX_LEGEND_HERO )) Q1 i# f, a3 @# K: f
{
- |* `, a* h$ ~3 d' h, \( b7 n AddChangeJob( nJob );4 c [1 e& U0 R6 o* k' M
}else{( k2 x7 w, a7 E& ^$ j; K6 Y
return;
4 ~1 y1 w2 A/ f3 [) _ }9 L7 S! }( X) }9 M8 H: o8 D' n
int nPoint = 0;
2 B: k6 j+ _8 u if( m_nJob == JOB_MERCENARY )* I" m3 U2 ^ G4 @- y
nPoint += 40;' c- @7 h2 z8 e0 ?$ u3 [
else if( m_nJob == JOB_ACROBAT )
, n( g0 n6 G2 `3 E5 g nPoint += 50;
+ o% W5 {6 b s+ S1 s7 z- l& Q6 Y' j else if( m_nJob == JOB_ASSIST )
) K1 l( U7 \ x. i nPoint += 60;
7 [- X& \/ o( G4 L) A- r ] else if( m_nJob == JOB_MAGICIAN ); q9 Q* Y- G, Q! |5 ] ]
nPoint += 90;; [) M; f# f8 v# }6 _% L$ b
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
' p( M. e. E3 d1 @8 T. D7 d' R nPoint += 120;3 d) b0 S* }8 p2 f7 Q7 f
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
& x% z1 o5 Q1 E& H s+ w nPoint += 150;
7 l5 j" C: T, U2 D* r/ F. v, e+ k; ~9 z else if( m_nJob == JOB_RINGMASTER )
( A9 Q/ K( W; N# L1 S nPoint += 160;
7 w1 t6 T" d9 u$ C; p5 K else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )* |4 R( C f7 H' W Q
nPoint += 180;
5 N/ B7 `. D$ o V j else if( m_nJob == JOB_ELEMENTOR )2 z4 X) e9 J# U2 b
nPoint += 390;* e% K9 t. _& d; D4 n4 A1 J# P+ X
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )- l# p* \$ f# h/ ~
nPoint += 120;# K/ P" W0 |7 k$ A9 u; K" ^% `/ ?
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )7 o2 K. ]6 X; I% l
nPoint += 150;
3 M, _2 N( W- @ else if( nJob == JOB_FLORIST_HERO )
1 D' o' u. i+ ` P- v" c nPoint += 160;- J1 q# U( ]+ E$ b5 j
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); G1 i4 P" Y% j2 x7 f
nPoint += 180;/ Y# w6 `6 Q6 P/ m/ x
else if( nJob == JOB_ELEMENTORLORD_HERO )# o0 G* ]8 F& h- \, | K# ~( j
nPoint += 390;
: d0 l; Y* _7 b: [+ ]; Y
/ J$ ]9 X. q P8 Z AddSkillPoint( nPoint );% F8 J* u$ a& o% N
m_nLevel = nLevel;
0 {+ H1 c9 E9 w, K
% k, s6 X& m$ r9 T* r( n SetJobLevel( nLevel, nJob );
% _( z0 C8 Y, o8 @' O/ A2 u m_nDeathLevel = nLevel;3 k" _$ H0 i7 U [) D* z$ y4 [$ g
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! S U/ i5 E, Z$ \6 } if(IsMaster()): }, ~0 k/ E$ |: P/ a$ r9 i' v
{- I' `- K1 i: s6 F/ t! i- B) Y
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108, b) l8 Q/ N" {. @$ _
if( nLevel > 59 && nLevel < 72 ). d. O( S4 V0 Q8 U9 E4 O
dwTmpSkLevel = 1;
4 l7 N- o0 w) [ else if( nLevel > 71 && nLevel < 84 )
# O4 `. E( r5 A! l& [ dwTmpSkLevel = 2;
S( o, F" }# R7 |1 F( ?) T7 n else if( nLevel > 83 && nLevel < 96 )
* H9 t1 {9 ?" l7 I4 N8 E2 M dwTmpSkLevel = 3;
* O# ^( N" J; x: C! d: x w else if( nLevel > 95 && nLevel < 108 )+ | k* P- g6 \4 {, R) n! c
dwTmpSkLevel = 4;
. P" P/ X7 v M$ i* y else if( nLevel > 107 && nLevel < 120 )
3 j! k# P0 k3 s1 |" I/ c: [2 X dwTmpSkLevel = 5;
' v, S( k) _+ ^/ k, H% H for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 e0 x) u% Y3 C2 r
{ 3 r' o0 i/ @8 G% K
LPSKILL lpSkill = &(m_aJobSkill);
% D2 C) }; v$ r4 F2 A if( lpSkill && lpSkill->dwSkill != NULL_ID ), u7 v8 W$ _. ~" ~' _5 l% N
{
4 j% R1 ^/ _1 C- @! p ^- y ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- K& I4 @3 [+ r* N if( pSkillProp == NULL )
. r, D' f5 x2 V4 Z1 k/ c% S; f continue;
8 R* e1 n! |+ ?& o5 o if( pSkillProp->dwItemKind1 != JTYPE_MASTER): K% j- o. G @; J/ Y
continue;# H6 c" l+ Y9 n
lpSkill->dwLevel = dwTmpSkLevel;
" m/ I( J# {5 K) {1 ?& Z }
1 f* s8 L0 w' r1 `9 b% n } E# c, P% o# `, ]4 m
}
4 a! I* N4 w" |* o+ o# u else if(IsHero())
# R) a- X! |% m: s: p+ u+ \+ X; H1 E {
$ K6 N4 D) u; Y3 A3 P for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 Y. b0 D1 m- w/ t8 O/ c0 D { / }' u r7 Z8 s' w0 c. O4 o. Q& D$ W8 @
LPSKILL lpSkill = &(m_aJobSkill);) `1 {, ?/ x4 L5 U" [
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 a# d- t2 g1 Z+ _" W( d5 O {
6 s$ S( W- b+ E; L ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 6 I, P8 w m* V* F! o
if( pSkillProp == NULL )
0 v5 z0 c- g7 u. o8 [1 x3 M1 y9 ]0 S continue; l# r% k Q2 c
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ e4 t& X% {1 W# }8 b continue;
+ D2 |+ Q. I0 f lpSkill->dwLevel = 5;8 W% ^& e% c' e3 [! y- n
}
! h; M* Z$ r! U6 u+ s }
- D# _0 s" Y7 W. p. Z* F }
2 ?8 I* b$ b, P) U6 G4 G. u) K else if(IsLegendHero())
* b& n# G! h7 d) i! B8 S/ L. _ {
3 S+ U6 k: ?. T$ p5 l( B; U for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ n8 ]9 {5 N3 N7 [ { 9 `' e& Q$ @* h" X
LPSKILL lpSkill = &(m_aJobSkill);
4 y( X9 g7 K6 K: ]$ C. A if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 _/ q9 M) g! A4 y {* G$ J# Y( J4 ]& I# p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- R; q+ d( o. M7 T2 r8 S* [5 V if( pSkillProp == NULL )
' u" B0 S( g9 f! ~/ M continue;, ]5 u1 d5 {2 W! A8 R% l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 j( f3 u$ p0 `
continue;
' h+ ]9 j& m+ l, M, } lpSkill->dwLevel = 5;
) L5 }' l- s8 j! n }$ `: x: c+ z E; C
}2 S- O2 H6 M, p- A+ {3 I+ I9 s
}3 r# m; P( ], x4 Z
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; A2 j+ M1 P- b9 r3 T
if( bGamma )
$ g, p& n' |0 V2 A, V' E) L {. n8 {# u* l( u( I X P+ c
m_nExp1 = 0;
8 o; y. R, O2 v7 g }9 u! U9 {- p; n. q9 L
- \ w( a' M5 H9 T! _8 C X
( (CUser*)this )->AddSetChangeJob( nJob );
9 x0 M, F1 Y/ J/ y# L& B6 X; b/ i g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
+ w6 z. g, M0 F6 x+ @- T5 D0 ~* c8 }/ v: L
4 m3 L+ f" Z% w#if __VER >= 11 // __SYS_PLAYER_DATA
8 r/ u2 s U! n3 B g_dpDBClient.SendUpdatePlayerData( (CUser*)this ); D) U2 o6 r( O$ u& I# q# J
#else // __SYS_PLAYER_DATA
7 H$ F, l( y+ \: B7 R$ L3 P g_DPCoreClient.SendPartyMemberJob( (CUser*)this );; o3 ^* N- M' S0 k6 K9 Z9 }0 d
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );6 C" V7 ?0 o8 z6 |4 \0 }
if( m_idGuild != 0 ). ^* z& n7 b. k: g3 q
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
4 i% \# |& ]: r. \' s#endif // __SYS_PLAYER_DATA- \. s7 x: }8 ]) }, {$ v6 U
SetHitPoint( GetMaxHitPoint() );
; q% y" ~/ F; e9 D- j( r' j SetManaPoint( GetMaxManaPoint() );; Y6 h( s/ V; S0 M" ^
SetFatiguePoint( GetMaxFatiguePoint() );
9 P, D; |; P; m" K, ^+ `9 ~3 G& ? if( nJob >= 1 && nJob <= 4 )
& M7 v- s: d1 W4 i {
5 V2 C$ t! Z7 [) P' X! ^+ L5 E2 o m_nStr = m_nSta = m_nDex = m_nInt = 15;* f+ r. X; R' s; j" L! ?! J( ?$ J( e
m_nRemainGP = 28;5 z9 f5 M, S* y! G8 {5 _3 t
}) b" H5 s" V8 c% F# S4 f, O
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
+ e1 L3 O# B6 r {
a& y! G% ~/ G: {+ W' t3 r& P+ l, `2 z# o m_nRemainGP = 118;
/ k# M. a& O+ b# _. o. [2 `3 N; S //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
( n) r5 d9 k5 N! K, ^) q% K" ?% t m_nStr = m_nSta = m_nDex = m_nInt = 15;
! i# o; p" i1 k7 Y }
& M7 B" j& r2 O! u$ s) l8 L if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )- l+ y4 u* `: x
{0 W4 x! o; I2 y& y7 {* c4 R
CItemElem itemelem;) b% R8 }! M' g$ s0 N4 {
itemelem.m_nItemNum = 1;$ o s( M& j4 J, V; `" m
itemelem.m_bCharged = TRUE;
! J" O' H/ ]# d( I4 ~3 u: _ BYTE nID;4 n+ S5 d7 O) [( O
`# h7 p% n$ C( ? if( nJob == JOB_MENTALIST_HERO ). d; \" R% w1 u, h
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;- F6 I6 R" _5 X' o! I8 {
if( nJob == JOB_FORCEMASTER_HERO )
6 Y( q4 I8 G' N$ b# v8 c7 S itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
. F/ ?* Q* z) K! S* N# M
) T! y C& ^" V" m8 S ( ( CUser*)this)->CreateItem( &itemelem, &nID );
0 m8 a* t' A$ B Y' e& T }
0 G" b# T! ^5 C. ?4 N# I1 e g_UserMng.AddSetLevel( this, (WORD)m_nLevel );2 T7 W0 @8 Y' ?7 f. ]: b
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );/ j; r" e7 X- L0 B6 N
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );, C# j% e% ~0 @
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );- a% Q& K- _" ~- [) e! w( L! T0 Z
( (CUser*)this )->AddTaskBar();*/) y e, U* B2 |- z0 U
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );8 p5 v' o8 N+ ?
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?* ]: s _) a8 Z4 T! H0 x: L5 I
((CUser*)this)->CheckHonorStat();: ]/ b- ?+ a- L# H' I
((CUser*)this)->AddHonorListAck();; P8 ~- w; G2 T. A% D* A0 q- r
g_UserMng.AddHonorTitleChange( this, m_nHonor);$ ` o' a7 p7 k& Y
#endif // __HONORABLE_TITLE // ′Tà?3 S( f" ~" C& Y6 s9 O
}3 H: q: o* E& I9 Q# E2 k" c, Y8 c
#endif // __WORLDSERVER
" E! _$ @7 K' i3 Q* \2 o1 u! R+ W} # j9 ]7 V5 h' L1 A
, R2 V" S1 ^4 v# ]5 t1 n1 r8 w" N然后你进入functextcmd.cpp并添加以下) b/ W) ?( x3 m( d' a8 U
# M" T( C; r7 L$ P代码:8 g0 ]5 d, x. Z1 Y
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
- ^( r+ A: L! k6 p9 e) ], S下面插入
! {( i" a% L/ G" m' y' a$ TON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ( u, r3 q2 T/ U4 b z; H$ m
& o* f+ e l$ u* D' i5 ?9 U. ^
然后你去0 g0 W3 U% }' t3 C5 U0 g _
# x. D/ Y; T1 O代码:3 n% Y a, t5 H
代码! q1 `+ _4 {- N# l5 `2 N( K
BOOL TextCmd_ClearPropose( CScanner & s )* P. F! ]1 v! q; E/ Y; a. }# o8 Y
{- u/ W' g9 A4 U& i9 b7 j8 P
#ifdef __WORLDSERVER9 G3 [- J( D* c( W! a8 L' q# Z) ?/ X
CUser* pUser = (CUser*)s.dwValue;& {# Q8 a6 l- ^. p- M' E
g_dpDBClient.SendClearPropose();! y; l. X; M! C2 K Y. m2 P# O
#endif // __WORLDSERVER
- Y% _8 k4 p( M- S5 d! B" \ return TRUE;
6 ]1 d g4 \0 J& R. ]}
9 g5 S* `0 u- R# y1 t下面插入1 z# ?, H% \5 z: U
BOOL TextCmd_rebirth( CScanner& scanner )
+ N1 l) C R! G0 r; \3 d4 t8 V{" d1 E7 S, v" r6 \1 P, g8 v/ Q
#ifdef __WORLDSERVER" Z! Z( b% |# e% h) D" G
CUser *pUser;& f; i$ j; W; C* z
pUser = (CUser*)scanner.dwValue;. x7 C$ M1 ]3 \; r. [0 a0 q. R
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()); _$ E+ @, G" _' m( |- \- k8 g/ N& K
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);( s2 H8 u) {. ^
else' K1 v b6 |" T7 K |! d$ {( `/ \
pUser->AddText("你还未达到重生条件!");
' K8 a1 r! N0 L. e: o& g6 Q#endif$ E) a+ e0 P8 P
return TRUE;
6 e2 r h. `. [: G}
2 Y7 _ N! i% g- G" ^5 a# n7 d$ u2 H2 D# S0 j
( d5 h* P: ^) ^
\- C) {! ^; k2 a- E% n
; S7 h- M" K* Q) U! |* W8 i4 M
|
|