|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 `$ \( u: z- i# f: a6 I2 u7 n! G$ C
+ T, i% s0 R: h+ j+ P/ T
Mover.h
, T, i! P; ?8 `9 g6 s, \$ W代码:
1 X3 v: q( ]! G, n找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
' r9 _$ I' V, {# D' F
0 Y8 [, W9 P2 K' p. P" [下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
" E5 b7 D, b# }3 ~+ R0 k6 t) h# v( _3 D: y7 X! t
然后你去mover.cpp添加
3 g8 K. e# \" H' s+ u+ p+ y+ U) `# m) J8 h
代码:
5 C% V# P0 F+ ?- k; m) \void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )$ W5 y l+ A. i; d
{% g) r6 a S' o+ @+ `7 T, }. Y5 L
#ifdef __WORLDSERVER1 @! f. ]8 I7 r! {/ x0 w
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó9 Z$ j+ w6 [$ x( s" ~' z2 I2 d
MoverProp* pProp = GetProp();/ a8 V4 |, M/ N) s
if( pProp )
q1 I. @( {# _, j7 z6 g {
3 j" v; G( U3 U q( h7 ?7 |1 @5 C if( nJob > 0 && nJob < MAX_LEGEND_HERO )1 u& X3 q3 ~- ]1 s
{
, x' t. R* d: D. X# J4 T AddChangeJob( nJob );0 v+ ^8 b( f! `
}else{, [) n' c6 |' J6 Q
return;
4 {1 X' t3 r+ R) x9 |! f$ Y }
! a7 V! y) n$ B4 ~# g4 _ int nPoint = 0;
, a" p9 @4 m" s if( m_nJob == JOB_MERCENARY )1 M: @6 J* I. T& h m. O
nPoint += 40;
4 |. i; Y: p* C2 o8 _3 `5 x: x else if( m_nJob == JOB_ACROBAT )
6 H) a* }7 a* f6 E0 X" h nPoint += 50;' e2 _* ^$ X1 V: X, u9 F9 B
else if( m_nJob == JOB_ASSIST )2 b; v: M6 Y9 _# g* N# o
nPoint += 60;
4 c9 v d% G3 a9 }; g else if( m_nJob == JOB_MAGICIAN )' I/ b- e- U+ `2 W
nPoint += 90;1 k4 U% o; K2 c3 v; e; q
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
" T$ [4 y* Z3 _ P6 ?* L nPoint += 120;
4 M1 W S/ l+ a% O" g" I% t else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )& _# @% z5 Q/ v5 }
nPoint += 150;0 W2 M: o' I$ N! c( T r
else if( m_nJob == JOB_RINGMASTER )
; T' P+ r0 c% G5 u1 K. ^. C2 y% ? nPoint += 160;
9 @# V! k9 `: b; U6 t' m9 y else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
E" T: g0 ?0 S- I A( @+ O! u7 k! K% e nPoint += 180;- y+ ]- V* L& w, ]4 Y( ^
else if( m_nJob == JOB_ELEMENTOR ). \3 A9 ^) \/ A& g
nPoint += 390;
1 i, q5 k% B: d0 Y) n3 o5 `: H else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ): E: f# @! j* Q4 Q$ K) y
nPoint += 120;
: }( }6 `- I, }1 z( I7 V else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
4 V* c" o6 _+ {' \ nPoint += 150;( ^, o( G0 P2 N
else if( nJob == JOB_FLORIST_HERO )
8 L% v8 V& u U' f4 T: k6 W nPoint += 160;
" m; _/ \* b- X- P) ~2 [. @ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )0 w7 U& D3 X" k6 ]
nPoint += 180;5 R4 D$ }7 |) A n3 o& i# _4 d- S! D
else if( nJob == JOB_ELEMENTORLORD_HERO )
) |8 t6 r5 d: K/ G6 A; N+ w5 k nPoint += 390;
2 s o9 _) T4 Q/ l H* A( d# T* s- I2 e# N; z" l' n/ ?' x; B
AddSkillPoint( nPoint );
0 V) R/ W; O7 u) V. A m_nLevel = nLevel;
1 ~/ Z! m/ o% I$ F0 c2 ]
' z9 `* T- `. T SetJobLevel( nLevel, nJob );
& I% ` N$ m K. ^; T m_nDeathLevel = nLevel;8 `% y A0 E3 y) g: a+ z
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 S; `5 Z0 e1 R5 N( i# f
if(IsMaster())% V# {" q9 p- H: o2 X
{+ f! M. y# H: Q8 p! L9 Z2 q
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
! R+ e2 K$ ~; K if( nLevel > 59 && nLevel < 72 )
( B4 G, k# w( Z" I: j4 D4 ^ dwTmpSkLevel = 1;
3 R' H" \8 t9 h+ G7 }" ?* h else if( nLevel > 71 && nLevel < 84 )
; c4 ?( ~: w" y% e dwTmpSkLevel = 2;( d# D0 S8 c n3 ^; }* K! L H
else if( nLevel > 83 && nLevel < 96 )$ ]$ ~( N& f+ o
dwTmpSkLevel = 3; ?5 h2 M3 W5 {# l, ?
else if( nLevel > 95 && nLevel < 108 )
5 F! [7 Y: P7 | dwTmpSkLevel = 4;( |; a+ {5 D* k" {1 F
else if( nLevel > 107 && nLevel < 120 )
/ x& b. m" b2 Z dwTmpSkLevel = 5;7 l3 P- H! o+ D6 x2 N0 w& c
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 b; {7 h* N) z! E3 {; A0 P; Y
{ 4 s0 M! Z# V u, k7 J( d
LPSKILL lpSkill = &(m_aJobSkill);
$ {5 O8 w( w+ N& Z) J$ U6 z3 J# | if( lpSkill && lpSkill->dwSkill != NULL_ID )# V- g3 B7 A7 P( i3 u7 c
{4 G6 V) B g' u% \+ Y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ k! K; P$ U$ c3 i/ ]+ j3 X if( pSkillProp == NULL )8 N- Q& G m2 u# f+ t+ l) \
continue;
4 Z+ I9 B" M: ]6 f Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 d7 v* W' j2 p& j) a! E2 k
continue;4 Y) F) v! u' N) x5 y
lpSkill->dwLevel = dwTmpSkLevel;
1 V$ e0 [; u( R; K7 M: V }$ [4 R% w# v" f) J! y; t( p' ]. u+ A
}- W% b6 o% Y* M( e% r. Q8 h
}
2 ~% m7 N8 c! m# \* c: i$ v Q else if(IsHero())
5 q- I* Q; l$ k1 V( H$ s {
7 N; ]) R! n: Z( U2 _1 U# j4 x Q; ?3 C for( int i = 0; i < MAX_SKILL_JOB; i++ ) & B7 ~. `* u( V! p! R
{
! i6 t" s9 B: d3 h/ V* w% j LPSKILL lpSkill = &(m_aJobSkill);
" U& B* ~( Q2 x) x if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 ~7 q) _: t% }; r e0 M8 F1 ]* s {1 H3 T; B) X& a! j2 V, X2 r' v( I
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * @+ w5 q8 M- N
if( pSkillProp == NULL )% Z, }/ A$ o7 {+ w# ?
continue;
! H- j( h* [; ] if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; o# o) `6 n8 p2 n' m" ~8 ^ continue;/ m/ b4 i& {, A0 I6 ~( N, L
lpSkill->dwLevel = 5;
n& C4 ]' X: z7 y$ r }5 [% G2 {( V) `; o p2 K
}
5 a5 I ~* m' y6 u }" R$ d* w; s5 W9 Y
else if(IsLegendHero())
- V1 Y0 m# g( U( ^5 u3 y; v {
, ^0 p/ L" p7 T for( int i = 0; i < MAX_SKILL_JOB; i++ ) d. d! h" Q" v
{
* J9 N/ E& E9 Z' k* n& y+ c LPSKILL lpSkill = &(m_aJobSkill);
( b, H* N% u' {, b4 Z0 s, r if( lpSkill && lpSkill->dwSkill != NULL_ID )
# S3 u9 O3 ?+ g: r2 o {! n* t. J. Q l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & g% t' J: R; m/ q' U! V0 @
if( pSkillProp == NULL )5 S8 E% ?; |# Y! |/ O5 k
continue;; y( A: w' x, w" e0 w. o: K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) y) _% n8 g* m: z
continue;
* w1 J- \4 w7 n4 S) o- ~5 y lpSkill->dwLevel = 5;
* B; b% G7 q: o$ ? }
: J$ z, i- M2 F" a }
- p5 K# k& T" e: U) S1 `! F }
+ a3 s7 Y! H+ [( r5 ~: o#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
: q2 Z) a4 r; @1 v( m- d if( bGamma )
6 N+ n* P }9 c W# o/ M- R {
* r/ v! Q6 m1 r# D4 x3 b- N Z m_nExp1 = 0;
( ~5 x- g2 ~( K! I }/ {9 s$ C* s% w
/ D) G- l. u4 D- x! ~1 _ ( (CUser*)this )->AddSetChangeJob( nJob );) ~; h$ l! T+ E: E# x
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );! j k% \0 Q* V( W+ l
/ N% w! _. _4 E
4 h2 s0 {; N6 q/ @8 G# ^#if __VER >= 11 // __SYS_PLAYER_DATA
: T; [; Q7 C" ~* e. j; f6 M( Y6 M g_dpDBClient.SendUpdatePlayerData( (CUser*)this );- O: x' V. c; A0 n
#else // __SYS_PLAYER_DATA0 w; w: [5 m: y q. h4 K( B* H5 D
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );% }$ ?1 m4 H+ t n! U5 s) k- ^
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
. S1 {. a4 [- [! `: h if( m_idGuild != 0 )
" v. @& {! d' b9 i6 _ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
4 o0 [1 O# L" |! e2 I2 Y* a#endif // __SYS_PLAYER_DATA
0 e- z: E: u$ v SetHitPoint( GetMaxHitPoint() );
5 L% l g0 o9 } SetManaPoint( GetMaxManaPoint() );
9 D5 U' }# k n+ A( L$ o SetFatiguePoint( GetMaxFatiguePoint() );
+ _; X C3 D" z) O1 x& W# b if( nJob >= 1 && nJob <= 4 ) y. n5 ^9 N4 H. A
{, i9 [) L0 P- J
m_nStr = m_nSta = m_nDex = m_nInt = 15;7 @" c" h$ M5 _& A. Y- P
m_nRemainGP = 28;1 H3 i2 W/ o( E+ }/ C
}5 @+ Q/ \# E3 b/ @0 V0 H- X
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
4 C o! q4 z: B% F* }2 f' ~ {
8 C% U/ h% Y6 l$ G! k' {% z0 L m_nRemainGP = 118;, B9 w/ a& h& h
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
9 s8 o6 p, C: X! m- Z m_nStr = m_nSta = m_nDex = m_nInt = 15;
! R8 x6 y; X8 N( `$ ~. C }; i6 o/ @- w2 \
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )2 f7 }( `: a0 Z5 q' n! w
{
, @3 N b- X# n, }( E, t0 k CItemElem itemelem;
+ Z/ F( r: J! h% g% ` itemelem.m_nItemNum = 1;6 u; J% S j! ~1 ]- o! `) j
itemelem.m_bCharged = TRUE;
' ~' y" |; r/ x, d BYTE nID;
1 O& k, ^7 R* d; O* o' u$ |
6 l/ P9 C% M, \6 X& R' W4 P% v if( nJob == JOB_MENTALIST_HERO )! p4 r# C2 y; Q$ L9 v- X- q
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
; ?; s( D* u/ g( f" e6 D) p: X if( nJob == JOB_FORCEMASTER_HERO )
+ U5 |5 O% `7 r itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;5 W t8 a: U: D$ I3 t: n
7 B8 U" G3 R, E ( ( CUser*)this)->CreateItem( &itemelem, &nID );* y W8 @4 G+ ~2 o( @
}/ a8 e V2 h1 C7 ~) Z1 u
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
% y% X U) j. y5 H3 ~ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( }" X& v5 g) o' k ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel ); [5 \$ h7 m" S9 E p
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );5 r5 W% C! D' }7 k! d
( (CUser*)this )->AddTaskBar();*/. P" k' w. y& R; p# L! Q; L
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
8 _4 w, `1 F* v+ e2 y% D) T#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?; @5 q/ l2 j' c# u0 T: ~( X5 o F
((CUser*)this)->CheckHonorStat();
+ O3 g1 T# d+ n! I5 r0 b& J ((CUser*)this)->AddHonorListAck(); W# Q9 m. Y- A# }( n
g_UserMng.AddHonorTitleChange( this, m_nHonor);
# @: ?0 G5 M0 ]0 I$ ?* p3 R#endif // __HONORABLE_TITLE // ′Tà? f1 ?. L& M2 B: Y3 F* R$ ]3 ^ r
}' u! F: i: Y! D4 X5 J" s
#endif // __WORLDSERVER
! z# K5 o' n1 K# }9 _$ _2 G+ K}
4 M+ Z/ V% V8 j( t* y, F1 e
# x/ u& H8 S! {3 n: l1 Y然后你进入functextcmd.cpp并添加以下
, r+ a5 p! u% @+ Y! ]
' p4 W. L; C/ \; n- c, W: X代码:1 c' W7 O2 _, G" f: c& j
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
% T2 v( g' D2 n! z& p* b下面插入
c: b# P5 W. i7 T- z3 kON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 6 d6 K& _! b+ x
$ |; x4 U3 n! G. D+ L然后你去
5 j+ y, ~% H4 Q0 M/ s% _0 G
3 d1 S6 k" u+ U, \/ d5 r0 k w: F代码:
: N7 O8 a# A5 z5 ?7 Y d5 g- I3 o代码
2 Y% U) v$ a! @BOOL TextCmd_ClearPropose( CScanner & s )
0 d" c s: j8 G6 v{
3 |# z4 O! c. v' _ J+ E4 L' ]#ifdef __WORLDSERVER* D k% K- \8 f+ u) B; y
CUser* pUser = (CUser*)s.dwValue;& Q& q9 P# ^& c' s. h% ?4 c
g_dpDBClient.SendClearPropose();# {4 [5 v! M' V6 K
#endif // __WORLDSERVER! r. d3 k Q8 [: P
return TRUE;7 y5 ]% e# c# f3 B, `
}
. r4 _( y% T) o$ h6 m2 x下面插入' _! P# p/ W3 ]6 n! h
BOOL TextCmd_rebirth( CScanner& scanner ) W3 S9 I+ V) G
{$ H) E# P9 B* R6 W' X) P
#ifdef __WORLDSERVER
1 O7 B) ^% c# \1 QCUser *pUser;& n g G0 A, j( N6 s, S" @
pUser = (CUser*)scanner.dwValue;
' |2 r! ?6 p5 h( N: Y! jif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()); V. p3 z# C" P5 X5 U* n' y. N
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);: c/ {8 a, f- v' y6 _& T
else
, G" t; B! U7 q4 |3 Z& ppUser->AddText("你还未达到重生条件!");( G' n1 k2 G6 A9 ~
#endif' U' Y0 `! r3 y( E
return TRUE;; }* V" J \; w2 J) n' z0 k8 p
}
4 ^6 G& p" }' X3 ] \3 M" O- [
6 E6 U; n5 o, U& ?* r' @. |
a3 a! I2 [. ]6 \1 H1 f7 j
, v* b9 |4 ]* r/ s$ Q3 z1 W4 d% k& H
|
|