|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel( g. V" l. _" ~' h: t+ [& Q
- {* X o: z' S# W0 UMover.h: o. x0 [ _. y4 E
代码:, o3 T0 |, K! Y- Q+ l
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü7 i1 W1 k3 U. }
# u( q3 B+ k8 R, [! x' r
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
\- |" g {! ~. G4 J/ r1 V% U1 }# M
然后你去mover.cpp添加! M" G6 E h7 E1 {8 @4 Z' i4 m7 r
+ J8 ]# U+ D: m7 R/ n) g
代码:
* \2 R( H- v% X. G/ J. tvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )& B' p& n9 O2 e7 B. X$ w6 V! Y" x* g
{# i* P- o5 S$ Q" a3 c
#ifdef __WORLDSERVER
% g" O& |$ X2 a4 p' N // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 a5 s: X9 _. W. _7 @, E% s! g0 O MoverProp* pProp = GetProp();
- A9 P7 e3 P- X: M% {' B if( pProp )& P/ m3 Y' {7 S1 }" U6 L
{: q' E( `% E& T- v1 x, F
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
" o! ^* {! n+ P5 k {
$ y4 W+ n* {# C% o ~" l+ V! | AddChangeJob( nJob );
6 K9 q# \- `. `' p, G }else{9 \. E0 r! C9 J+ q) W8 R
return;6 l# k" }3 t; A2 ^; C3 _
}1 E, q, A. F( s2 |8 T2 W. n% ^" a
int nPoint = 0;
4 H& K! Z z1 ?" q# ~$ [ if( m_nJob == JOB_MERCENARY )
, U2 d& n, t; D L/ Y nPoint += 40;
% v$ d3 y8 r) y/ j5 z( G) N else if( m_nJob == JOB_ACROBAT )
. U! m$ r% h+ { nPoint += 50;
6 _% `& Z$ V$ f- H else if( m_nJob == JOB_ASSIST )3 b+ c0 q/ Z$ ?) h }
nPoint += 60;9 _8 B6 S- _( s8 C8 L/ `. \% l$ l1 g
else if( m_nJob == JOB_MAGICIAN )
9 i" e2 C/ Y' Q( D0 Q) J nPoint += 90;7 d. {; }' _: J+ u% c; R8 ?
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
4 S0 _, r/ B$ A nPoint += 120;" Y; L/ M" w; p z
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ): }- y2 e. ^/ E3 t
nPoint += 150;; k" U4 T) {$ k) a* z
else if( m_nJob == JOB_RINGMASTER )
/ l8 A; g$ A! M" y1 g# P# t. t N x/ n nPoint += 160;% W# B, J1 K+ f2 q6 x
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
/ O& P: C8 k1 h& K4 } nPoint += 180;% ]) V# D8 W( V
else if( m_nJob == JOB_ELEMENTOR )- Z& y! X" f; _& y4 ~8 ?4 F
nPoint += 390;0 n: Q- O) e4 N. o6 N( h
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% E$ l7 ]( N9 m# E
nPoint += 120;2 \& K7 }; s$ ?& T
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ) d# c/ u" R1 ~( \- W) `
nPoint += 150;, d3 k( ~1 J" f9 M; G. \
else if( nJob == JOB_FLORIST_HERO )
0 v7 e* @+ l3 G4 {1 S B$ o nPoint += 160;
4 \* T. o+ v' ^8 o else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
( A1 ^" I \& S! X7 s0 J2 v$ o nPoint += 180;
9 u- M1 ^$ [. U else if( nJob == JOB_ELEMENTORLORD_HERO )" C& G2 i8 h9 [) {; H
nPoint += 390;
: T0 I6 n3 T; f% G: o6 g' f1 I% G
AddSkillPoint( nPoint );
6 ?) B& H0 T1 x+ p m_nLevel = nLevel;# f; Q! u, r( |- g; U3 T* w
) u u6 j9 i- d. \ SetJobLevel( nLevel, nJob );
6 _8 I( Z0 @) R* N m_nDeathLevel = nLevel;
- ^- c2 {" I" G" @' I6 Z#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 S, T# S: J0 I" [7 r3 f, ? if(IsMaster())
' L0 T6 U# a9 k: P- J V {
. Y/ y% \1 T6 i- |6 j8 S* c int dwTmpSkLevel = 1;//60, 72, 84, 96, 108; b9 I# o, V' ~ g/ O8 F# @+ p
if( nLevel > 59 && nLevel < 72 )
6 D8 u& E7 i9 F: _! M8 u dwTmpSkLevel = 1;6 r$ N4 o7 ]' ~ c! J
else if( nLevel > 71 && nLevel < 84 )
! k+ Z; `# k$ O dwTmpSkLevel = 2;5 t0 H& x2 c0 e6 t- _
else if( nLevel > 83 && nLevel < 96 )
; u7 [$ p% I* l, Y2 \$ t6 B+ Y- b dwTmpSkLevel = 3;
z3 _2 {( g& d! J else if( nLevel > 95 && nLevel < 108 )1 J4 @- F, a7 t3 \* n+ i
dwTmpSkLevel = 4;
6 m( m w; ^' ?% ^7 a else if( nLevel > 107 && nLevel < 120 )
3 A0 L4 g- C- a! L2 J+ J0 Y dwTmpSkLevel = 5;
! n2 c: i/ ?* i7 @/ j for( int i = 0; i < MAX_SKILL_JOB; i++ ) / l" G+ _/ b Z
{
' V) w$ j& w2 \0 h; S% Y; K) s LPSKILL lpSkill = &(m_aJobSkill);; Q& F" S* S5 D9 I: P+ V, v% k7 t( n
if( lpSkill && lpSkill->dwSkill != NULL_ID )
* Z& p" r, T+ H0 U- p {: A, v. R s- m( n e) h5 ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 K, O/ e3 C" ]9 e8 w- X& _
if( pSkillProp == NULL )2 D8 K) k0 B8 Q: l6 J# \7 |
continue;
" X( R6 `2 W1 X9 x/ t: C if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% l' q D, T/ i) O% O& P8 U continue;) e2 D. s- @2 q* U& ]
lpSkill->dwLevel = dwTmpSkLevel; [5 q( D( O: P, l2 L
}1 m) {" O4 z1 s1 \$ x
}
. g H$ K8 a- R* V% p1 Q8 O& X }
6 z( }4 _- P$ n, s( ~3 n& T% p5 k else if(IsHero()): q8 p. Z# ], t; |
{' E( K' f& V5 d
for( int i = 0; i < MAX_SKILL_JOB; i++ ) : F _* w- ]& m* u# x9 x
{
( H2 I9 g; [6 c w LPSKILL lpSkill = &(m_aJobSkill);
3 w& g: e9 Q* c {) h/ N if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 Z; U8 ]- G# z: _+ T) u) U {
# h( w; ^7 q5 P# q0 ]* M2 ^ b, t' G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 i+ w: l8 U' f5 w
if( pSkillProp == NULL )8 ]5 W" z. s" L9 ~0 Y" f- l
continue;& n) B. g9 \$ E, H/ h+ l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 s- p& x+ W+ Y3 X
continue;
, k, P! o* n8 T1 M" i P7 ? lpSkill->dwLevel = 5;
; Z7 Q# r1 r8 j }, E3 h+ r1 z4 L+ ]& {! A
}1 A( |$ u) U$ T, O
}
# @, h& {1 V7 d3 h* ` else if(IsLegendHero())8 G2 H' Z' r6 L# V4 P! T4 I1 W
{
8 p* @ h" m5 `% ^: r( L for( int i = 0; i < MAX_SKILL_JOB; i++ )
& C! `& A2 v' J* a* S { : A& Z- Z3 t4 _1 R, M
LPSKILL lpSkill = &(m_aJobSkill);
+ `" {9 T' p4 }: f r& K9 b if( lpSkill && lpSkill->dwSkill != NULL_ID )- X) Z- |0 c* B2 n, |3 g9 v9 i
{, w1 b' G! N/ s+ G
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
0 |1 T5 _/ S, {( V if( pSkillProp == NULL )( J! J8 B% k( D' ]6 R
continue;( g4 d$ e8 w6 j Q* {6 Z T
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! S! i/ a" S0 J$ i! v continue;
2 s' y. I0 u& Q k) z3 _ lpSkill->dwLevel = 5;# q! ?! c$ K4 B3 T* t! m- v
}+ Q- q3 `9 w1 h3 k5 R
}
5 Q. A6 L! [: P1 L. U. @4 R }
7 i, F0 S1 L/ x#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
- r, T, v+ V! @2 _ if( bGamma )
$ F4 H& Y/ T* R4 ]1 X, Z5 J* ^ {
6 ]$ ] K4 ^4 U3 r* x2 T m_nExp1 = 0;' h6 M( I/ A; j, @+ i4 `
}
5 L5 q. E6 k# M( o4 L1 }1 _) Q: y" j8 ^8 p
( (CUser*)this )->AddSetChangeJob( nJob );
% \1 [+ t. E6 W" E, g/ o g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
% }1 ~5 W5 V R) S$ U2 f3 F
. }+ H5 x8 ?$ u; _! y$ S) |2 y3 H H# e8 h% o6 p) [
#if __VER >= 11 // __SYS_PLAYER_DATA& E1 P( G6 Y* U$ ^# y
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
* z# H; Y- A/ ~#else // __SYS_PLAYER_DATA# j8 Z2 W: e& Q/ K4 E% l
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );' u: C* l4 `6 ]
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );# Y. n% Z O! A/ w
if( m_idGuild != 0 )4 w, d- i9 S% M; Q6 s# L
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
5 t: v1 }" z( J' p#endif // __SYS_PLAYER_DATA& z, H3 P& w+ y% D
SetHitPoint( GetMaxHitPoint() );
) ?) {8 J5 i+ y& k4 o% ^ SetManaPoint( GetMaxManaPoint() );' z, c* y: B7 N# k6 x0 H
SetFatiguePoint( GetMaxFatiguePoint() );
* Z$ O2 ]4 f) _4 I+ D2 n if( nJob >= 1 && nJob <= 4 )
# Z+ d9 }# j3 e" @2 X {( ^4 F: f# f5 c# l B! p; n
m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ m" A% m) m9 X/ ` m_nRemainGP = 28;
) P/ t3 B% @9 k6 A7 D }
/ ^5 {, ~$ ?( M: w. Z% T if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
5 N6 ? Z. o: X- u- S {8 V. L* A0 [. O9 V* f: w8 |
m_nRemainGP = 118;
/ ~4 S) A8 Z1 K# R% P //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
- p( ~' W' M- F) j: K/ M4 ?; a m_nStr = m_nSta = m_nDex = m_nInt = 15;
! M, \# M. W) _: b }1 r8 w: x5 ^8 k3 j8 n5 k( q
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
: T' Y+ y. q$ m' x+ l {, f: u& S% N1 D, @/ K
CItemElem itemelem;
+ N! F: x2 \- _- E9 B itemelem.m_nItemNum = 1;4 y( z$ k& V7 H; p( w7 o; ?
itemelem.m_bCharged = TRUE;
3 s+ h! v0 y6 O2 K$ Z) i9 T BYTE nID;- k" n8 O# T' }
; O$ s, W% c+ k6 O1 E4 {
if( nJob == JOB_MENTALIST_HERO )
* k5 K# ~% J. g' e/ l itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
4 @) g8 W, @( y6 z' a& q if( nJob == JOB_FORCEMASTER_HERO ). \# c$ T/ D, }
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;0 q+ n3 ?* L. ]4 Q4 X
# b0 C( u7 C0 y" b) V
( ( CUser*)this)->CreateItem( &itemelem, &nID );
% }/ |4 Q' \5 l' M+ L$ n9 _ Q }
7 |6 [6 h/ F) r( E {- Q g_UserMng.AddSetLevel( this, (WORD)m_nLevel );. k5 I1 d( @. U0 q& @! J* W5 |
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );- w! z' R' h6 U) E9 c
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
3 }: Y. G3 c9 a- y7 _/ b/ M /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );+ L, p' R+ s3 J/ @
( (CUser*)this )->AddTaskBar();*/
6 @6 Y6 z$ V" ~4 C6 v ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );, E8 r; k% I5 }& e4 }0 Q: {" E
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
/ }% ]3 e1 I: I7 ? ((CUser*)this)->CheckHonorStat();
4 ]! j- q7 { n: r( y/ ?+ L2 M ((CUser*)this)->AddHonorListAck();, G- {" j# j0 U, b6 {
g_UserMng.AddHonorTitleChange( this, m_nHonor);) h& \ W" J& q& G2 h5 ?4 `0 L
#endif // __HONORABLE_TITLE // ′Tà?
4 @; T1 c7 n6 I6 G# I% _0 n5 U$ k/ _ g. I }: K q: A, v8 x6 x8 G4 x
#endif // __WORLDSERVER8 v# I H' M, D' i- Z# n
}
% m, a: j1 r2 Q( g- o+ P& V. D- h1 O, t" m/ t$ j! [
然后你进入functextcmd.cpp并添加以下' a# z: b4 g+ @& }+ _3 Z
. Y6 |9 }* [, J/ F
代码:1 ]! L/ ^$ p5 Q9 n
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
% p: l' ?1 W0 V0 [& I( x$ e/ e下面插入7 {% P3 g5 b7 o' q/ O
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
: S0 L$ t% r! ?4 a, `- a) O8 W8 D' O% }2 q
然后你去/ N, t) S# z% Q
" E; L" a- o% T+ e: D( S9 t代码:
" r, \. j5 _4 v3 k代码2 Q% m- P$ i( N) w
BOOL TextCmd_ClearPropose( CScanner & s )
- B* m# F: v7 y. m{
( D1 M1 W& C; A1 Y2 V0 @" s#ifdef __WORLDSERVER1 A5 c: I/ b+ v) M) g
CUser* pUser = (CUser*)s.dwValue;' e! D" u3 P! Q) p# I
g_dpDBClient.SendClearPropose();* V* s1 c3 n4 {& P/ S5 x; v }
#endif // __WORLDSERVER
' F* I2 F j6 q2 L* \' C S8 a1 g return TRUE;
, E# S2 j. M" l7 U$ i' o7 S}
! W. b6 O! r l4 L2 T6 V, }& x下面插入
: A+ Y& b' r JBOOL TextCmd_rebirth( CScanner& scanner )
$ M) n: B3 S: P" L{; T' n# ~ f: b* s* V
#ifdef __WORLDSERVER+ R1 ^% f+ ? J9 q. u% S% V3 a
CUser *pUser;
: L: V2 L) B [2 ?$ X! v' }pUser = (CUser*)scanner.dwValue;' A, ?1 E3 U% u C& @) l0 Q* s
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())! @7 n& y* c/ L7 E
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);* ]8 M% G# V" e2 N4 Y% c* W
else
, z e% v) m9 EpUser->AddText("你还未达到重生条件!");% ]" ?, q6 y( {: S* e5 ]4 Q
#endif5 q2 x1 B8 D- ?+ c) i- N
return TRUE;$ h4 {* J1 @/ N' C) E1 s8 u
}
" U& F( t, i4 k8 ~) O" D8 b. y9 s8 J) _0 p
4 B- G4 {8 ]! f( J h# D
* F8 y5 g! l1 Q# Q! v
# M) C* c, h; Q/ | V x |
|