|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel. c1 {7 C; p9 d9 O) ?. s
2 m: u4 R/ Y" w$ ?Mover.h
7 x! L1 J) E' g* g代码:
% m1 m) u0 M9 n% Z9 [' H. N) d) n找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü$ _ w4 r+ a) R3 O5 }7 L
9 A6 `# |0 B; O
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
' s& P! ?' ]! a# E( L! L& J
" |3 l& o3 c K然后你去mover.cpp添加
0 H3 Y# e8 U! i. f1 y c( Y( r( R- q) Q2 _: l- C5 ~) f
代码:
: @! ~+ K' F) Evoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
D) R- H. u5 {" ^5 [1 F* ?{
) v4 M; m: r( h7 U1 N* A. ^#ifdef __WORLDSERVER8 j+ W; Y6 _& {( A
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
+ ~5 D% i7 O9 r9 p MoverProp* pProp = GetProp();
5 X% W4 d1 ^' |1 t1 T& U if( pProp )% p2 `7 Z! x1 e9 A, X
{! X' g7 T8 }( a2 Y/ x
if( nJob > 0 && nJob < MAX_LEGEND_HERO )% J) z* R! H# U: T* ?0 m; L
{
: y) l. C: V3 ^ AddChangeJob( nJob );6 X8 o7 Q$ Q4 j3 w1 \8 ]
}else{
7 S% l1 d* E8 M! h$ u" E3 c return;% V& E+ P" v6 u( P7 D4 q6 r
}) u `7 ~" N9 ?' `1 f0 K
int nPoint = 0;' n0 W1 d+ g: o7 k. l& q$ Z
if( m_nJob == JOB_MERCENARY )/ a! ?: z& f" i7 P. b
nPoint += 40;: B! f) A/ h; i1 Q
else if( m_nJob == JOB_ACROBAT )
7 d& @: w" [0 ~6 U" E$ R6 O1 d/ H nPoint += 50;
2 B1 z7 E F+ D9 m4 k8 c" G2 d8 { else if( m_nJob == JOB_ASSIST ); }# [* c2 U+ ~
nPoint += 60;
- E# J% e) t% j else if( m_nJob == JOB_MAGICIAN )9 L. G2 x9 N: @* {9 p
nPoint += 90;* R* u; k# }0 i5 H9 ^. Q) Z
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )& ~3 |# M2 A) `. c* Y+ X' ~8 |/ e
nPoint += 120;: S* C- L: o1 _8 U& s# u9 w U
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )/ J- o- D6 }) j/ F: ?
nPoint += 150;
& \/ C+ I: L8 W5 A) I8 g( m, U5 i+ Z else if( m_nJob == JOB_RINGMASTER )
0 r- `; ?6 z1 z. u nPoint += 160;, U# @; s8 N S, c, z
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )# x! g5 c6 `( A G$ T- w# C( T! h- O" A
nPoint += 180;
( W! \+ U, n1 ^1 F else if( m_nJob == JOB_ELEMENTOR )
) a9 A, F7 O- D nPoint += 390;
" F3 H; O+ \9 Z3 N0 \* [+ } else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; [8 R3 M; d) j8 ]3 O( N, O8 s nPoint += 120;
- ?) v3 g" I& k4 A else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
3 [5 ^: b9 }4 m& N) w# y nPoint += 150;
* \7 V. L1 l4 Z1 s* h* C else if( nJob == JOB_FLORIST_HERO )+ B, t4 U% ^1 O/ ]3 V: ~' d/ N, Q9 b; k
nPoint += 160;4 @/ M3 Q6 O3 M$ }
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" S5 a3 i& {: g$ _1 L2 Z' ^, ~ nPoint += 180;& B& h- s7 w+ j: j! V3 s
else if( nJob == JOB_ELEMENTORLORD_HERO ) L' w3 O" M9 N' ~6 e$ e' U
nPoint += 390;
3 B# f( T9 R- E( p
! v. u# b$ x( B ]4 z6 X W) o AddSkillPoint( nPoint );4 o7 N' t6 n* e7 N. t
m_nLevel = nLevel;
) b g ] }: L) P7 Z- @
, x, R) ]2 v8 x: S7 l( c9 F0 y SetJobLevel( nLevel, nJob );/ X8 g) Y3 R( K* K
m_nDeathLevel = nLevel;2 |( v, L! Z3 T% k- A
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
, Y# C! D$ J6 h: \ if(IsMaster())" E! L0 F& b' ^( B; o9 A% G* S
{
1 U. r. Z" j% Q" [# o0 t: e int dwTmpSkLevel = 1;//60, 72, 84, 96, 108. l1 |% U. r0 b( c
if( nLevel > 59 && nLevel < 72 )/ ?. M3 b, H; n( `& h6 K8 Z* j" s
dwTmpSkLevel = 1;9 c& v/ B1 T+ t) C) k# ] W5 G9 I
else if( nLevel > 71 && nLevel < 84 )
3 s1 l8 z7 t! ]. G dwTmpSkLevel = 2;
/ l6 t; H* W* [1 E( P( O3 x! Y else if( nLevel > 83 && nLevel < 96 )7 b6 S6 C6 n# Z5 V: n$ v: L2 d
dwTmpSkLevel = 3;. A" J- [ ?+ ]; z% O9 G9 V l
else if( nLevel > 95 && nLevel < 108 )
* B7 P# _3 X$ F* [ dwTmpSkLevel = 4;% R7 X; g$ \) Z1 p# p& c1 u
else if( nLevel > 107 && nLevel < 120 )% R X/ Y; t9 D" o. t
dwTmpSkLevel = 5;1 Q: `1 G+ S$ N- u- u8 j
for( int i = 0; i < MAX_SKILL_JOB; i++ ) * C- S# O7 t: N" |
{
3 v7 q( _$ y0 X" ~1 e, w LPSKILL lpSkill = &(m_aJobSkill);) B& x0 m2 N; ]+ L) B# O
if( lpSkill && lpSkill->dwSkill != NULL_ID )( }2 S% b" X% T" `+ [
{
$ }, p$ H4 h' q+ u% [% N- Y' o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); m* A# b) y7 ~5 X7 y; V2 q9 q ^ k
if( pSkillProp == NULL )
4 X( e1 c$ X' Y, k continue;
& R2 y' P9 y' s! \8 M' n if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, q! H/ r+ _/ G D5 o continue;
1 o+ x: U! G2 Q lpSkill->dwLevel = dwTmpSkLevel;
& A5 G1 z4 \3 a }1 {9 t- E4 ~" R( u
}
Q% j0 |+ m7 d7 t L7 g$ F9 z }9 r+ \2 R) J( k) O
else if(IsHero())# V( k8 x# {: R+ R* f
{
& d5 l( c$ L$ }9 _6 v1 F5 v for( int i = 0; i < MAX_SKILL_JOB; i++ )
- g! o+ d) n: A( \5 O0 E- k {
4 `! [( |7 H) k$ C* s6 x" E LPSKILL lpSkill = &(m_aJobSkill);+ Q* q1 D8 H' s9 ~2 j" |
if( lpSkill && lpSkill->dwSkill != NULL_ID )
# M5 J/ Q% i# |* O9 n% X3 i2 }7 n9 ~3 o {
9 E J) X" P5 Z# M ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 M4 C/ |# {( g, \1 n. Y
if( pSkillProp == NULL )5 T% Y2 w' a3 s
continue;
. ~+ ~9 ?# U) _8 G; d2 B if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. H9 a% K: |( W) K1 X" X0 D+ B L continue;
2 m) f7 j7 y# y, P; Y4 L( J/ y lpSkill->dwLevel = 5;7 z5 ?4 |9 H K# F6 N
}
4 t; t1 s' q v9 O6 j8 h: V& r }! r( Q4 N5 N3 W* z# _
}
- M0 O2 @: g/ q" z3 H v else if(IsLegendHero())
4 `4 e$ r2 f0 i+ q {
; t/ W; w7 S4 T$ G1 i for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 I( [! T3 l& Y. q
{
5 ]4 ], P: h$ x( n8 u# X LPSKILL lpSkill = &(m_aJobSkill);
) h& F7 O1 z4 R1 b9 e: c if( lpSkill && lpSkill->dwSkill != NULL_ID )0 r5 v) l$ L9 e' H/ Y' J7 r
{
5 B; o/ F/ q$ c" `+ W1 Q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( f1 A; `% h' ^* \5 k# ~ if( pSkillProp == NULL )
1 S, d/ C. L% `7 t continue;# ^+ D; _0 Y/ p1 ]' A9 w0 \
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' D" m5 p( R; k0 Y1 s& h continue;
; W6 W( `+ h0 w1 Y. J& J$ X lpSkill->dwLevel = 5;
5 M* Z* C3 f8 x0 W4 A }# ?; n. J# g+ s6 j* W& ~
}
8 F# ?% s' `3 l$ T& a5 ] }
6 R, q' Y( z" x$ V0 R#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans5 }* b, r1 l8 d/ d& E4 a* k1 W0 }5 o
if( bGamma ). Y3 p7 M6 j$ ` q. \; L
{
9 Q) S6 m- q6 W2 ?4 V. } m_nExp1 = 0;
1 y6 u- y p5 h9 |$ s* J/ W }
4 E: L$ |" j, p" T+ Q! T
+ l7 s4 n5 t: [" ~! P9 _ ( (CUser*)this )->AddSetChangeJob( nJob );% f) x8 Q# Y* Z1 a* _; y9 N
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
: W, K8 s4 T' A/ ~* K4 t4 P1 U! {) e' ~- m2 n! l# C2 `
, i1 t) I% k S' F$ }* ]
#if __VER >= 11 // __SYS_PLAYER_DATA
. O7 L% W. H# Y) B g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
0 D5 x3 Y4 R( T w/ x7 ?#else // __SYS_PLAYER_DATA
" M" L: B2 g3 X! R9 g g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
: G: v4 x; a5 o5 `- { g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
+ n; y. P0 G0 J" t# i" ] if( m_idGuild != 0 )
! `8 {! i1 |+ k) o' |2 s, j7 j4 b g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
8 [/ _7 F z# n% _ g( g#endif // __SYS_PLAYER_DATA
H: i) u* G' E* g0 s+ O. \ SetHitPoint( GetMaxHitPoint() );
% `+ S- T# S9 } SetManaPoint( GetMaxManaPoint() );, T, H0 _* t& {* y/ r
SetFatiguePoint( GetMaxFatiguePoint() );8 ~/ \! A. e) j4 @4 t0 ?3 a
if( nJob >= 1 && nJob <= 4 )
% `" }( Y, J- ?# @ {0 H$ m7 s1 A/ k' A0 D. s& Y6 R
m_nStr = m_nSta = m_nDex = m_nInt = 15;
; `9 v- |1 [) y m_nRemainGP = 28;5 {% h6 r l' Z" z6 {
}
) k3 R% v2 j# x' v- z$ r( P if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) H0 t! B4 b" Q5 r5 M5 c% I {
_* M9 n: ?( @6 [" P m_nRemainGP = 118;
* ]2 _! x$ L# x: \3 h% w# I5 `, w //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 N. V( U9 o, y3 }9 f$ s3 Z
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 r* X0 f7 T7 `; l8 `1 V
}4 f @: M: a1 @) k# h
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
5 t \* s7 G T1 q/ O { {1 N" k2 d, J$ m9 P
CItemElem itemelem;. g) V1 m2 u% r/ f+ {
itemelem.m_nItemNum = 1;
5 W( C" x$ I, O itemelem.m_bCharged = TRUE;
# N6 G7 T2 u% U# ^ BYTE nID;- ^3 E0 w1 }- L+ X- N% e8 m
. k# G8 i- o% r* |- m if( nJob == JOB_MENTALIST_HERO )
. V. S6 N3 P/ a { itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
- w6 |5 O# T; R: ~, w& z7 I if( nJob == JOB_FORCEMASTER_HERO )
: z3 c$ w; j4 V6 r7 o1 D% z itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
! p( w7 d! N) x( b7 ~% J4 w) D- C k- r, D, X8 g0 V
( ( CUser*)this)->CreateItem( &itemelem, &nID );' x {+ f V5 K$ @' \: q. }' w0 A
}
% O* Y% ~# Q+ Z! A+ c g_UserMng.AddSetLevel( this, (WORD)m_nLevel );5 c0 p( n" X: s' H: r4 M- @1 p
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
7 T5 ^; |$ O+ e; u7 \# s! m( P6 f6 N- S ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
( q, U0 e+ U) S/ k" g! V& s2 s /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );( m% r9 m* G5 d5 k" K8 S
( (CUser*)this )->AddTaskBar();*/
( n# Z6 v5 w. I* J ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
6 }4 \. j, A/ d+ V2 ^, [8 X#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?% W4 Y) r4 n$ i, p/ ~( M7 E
((CUser*)this)->CheckHonorStat();
( m, U; z" Y# G) g7 R$ I# W* V ((CUser*)this)->AddHonorListAck();% r6 [1 f9 D- C/ F& \8 A2 l2 p
g_UserMng.AddHonorTitleChange( this, m_nHonor);
, |, m3 b4 u1 ~( w- i/ W#endif // __HONORABLE_TITLE // ′Tà? g5 L+ I: ]8 a: U
}
% O. ? M3 C$ ~+ g. E# [2 c#endif // __WORLDSERVER
$ v- { ^3 I P' x# P} # n }, A# J0 V: ?4 D
8 u* z% R5 |: X0 H然后你进入functextcmd.cpp并添加以下
* O) R0 `$ s) U6 Q6 v0 T) Y: z6 A b& v# {
代码:1 B% e+ D' f0 m3 `! l+ b
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )" X' D! }$ g p
下面插入3 R: M5 ]8 f) N+ @6 O0 ]' m9 ?4 ^- P
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 6 X1 D+ v3 g4 ?7 b- E# n+ v( {
: c; h0 ~4 d& _* a然后你去; r9 }1 l% M& G' R. b8 M
* X) h( H% C0 b* r F代码:3 ~" b- Q* K- \- }
代码
' H) ^: `0 n2 M" rBOOL TextCmd_ClearPropose( CScanner & s )
5 n1 x+ ^* l" s/ F2 r{
* r$ p* j d& O$ h& L8 U- Y#ifdef __WORLDSERVER
% T0 v% F7 ?4 A9 _2 Z CUser* pUser = (CUser*)s.dwValue;
# I; N" C2 g) v) R' y: z g_dpDBClient.SendClearPropose();
: L/ I0 ^5 ^) X#endif // __WORLDSERVER
4 O3 M( G' @4 w. [ return TRUE;
" Z* a' Y: o. P( @ v3 l& x}
' n2 U, r, a) y. l# z& m# f8 ?; w$ ?下面插入
9 ~( |- G3 v# s3 D, c' bBOOL TextCmd_rebirth( CScanner& scanner )
9 X* B7 y& Q6 I a- {' |: q; y{& J7 D" k+ x7 ?
#ifdef __WORLDSERVER( K: j: G; o; y& F
CUser *pUser;
" j4 P8 U! S' s; F5 B5 KpUser = (CUser*)scanner.dwValue;
0 k9 M: ~ O& H& z' dif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())7 W* W' c5 A6 s! `" R
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);8 k* }2 G# L9 |4 l/ L" s0 V# R' r) A
else
! [0 n+ o) H2 V1 NpUser->AddText("你还未达到重生条件!");
4 K, ]- b/ S( C w9 _#endif4 W1 ]. r r m1 \* K: |2 h, a! t9 X
return TRUE;" S9 g7 J' {7 M$ |+ U1 J- w
} ! T7 J5 o* i/ w+ @$ P5 N
0 @; C! [# S! f8 z2 y- _# A- O: g! A( {
6 W3 \' p5 L2 E- F8 Y7 r, Z
7 V' d- D* q* d |
|