|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel; n8 h& n9 p( F% B2 }
+ {$ ^& [9 a2 v. I
Mover.h% x% y4 X1 h" H) {9 M
代码:
2 L7 ]* x" ^$ m# ^+ w9 E/ L找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü/ t: C+ u2 ~4 G- C# ]/ X
& A f' }! Z( p- u3 F* c
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
6 \4 W+ m+ k1 `# W, D8 {0 X7 k1 ^# X" N% V
然后你去mover.cpp添加
% c& N) h, q: \ ^: q- B+ P5 Z+ X& @' ?4 Y
代码:# B7 {3 s I0 d/ V$ x) s% g
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
5 b" t% X5 E4 d, Z! |1 v{! P4 S' x2 o! `; a' `$ O) `
#ifdef __WORLDSERVER
2 H$ O. U% G! d // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó' l0 W8 @! n+ J; e3 H; c" Q
MoverProp* pProp = GetProp();) {3 e1 S. Z3 A3 p' n' K
if( pProp )
/ B$ c6 Z% ~: }9 x6 H+ O0 F4 k {# e# |. h+ _* F# C1 V
if( nJob > 0 && nJob < MAX_LEGEND_HERO )- s; t8 Q% c, `5 T
{
" T9 a* \! H" k# l, }" b AddChangeJob( nJob );
% A3 @/ ~2 c( q# X }else{
, d) `6 o; X& k/ E$ q$ W return;! G3 m1 o, ^, {. D
}
, \# C/ e; a, B4 e w" b* n( z int nPoint = 0;7 L5 m$ C: C1 o5 v, a! T$ l
if( m_nJob == JOB_MERCENARY )
+ F: Z! |$ i5 f* U+ s nPoint += 40;
; D* e6 T& \! L6 D+ a6 u. @* x) w else if( m_nJob == JOB_ACROBAT )
/ X( O" A0 y6 f. A nPoint += 50;
$ w1 L4 ]; Z) n# m4 v: [5 j, h2 d% a else if( m_nJob == JOB_ASSIST )0 o: j V- K5 J, o
nPoint += 60;
. s7 G+ U G# d" Z8 y* Y else if( m_nJob == JOB_MAGICIAN )
: z1 r( v* r% K r, H, w% L nPoint += 90;
0 x s. V7 l; j else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
* `$ i! E, ]) h5 ? nPoint += 120;/ S3 a) p1 R. {- t, {* w
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )7 k. y8 Q8 {- q6 e; r
nPoint += 150;
" g( Z+ Z% S. A3 F f% g( g; S else if( m_nJob == JOB_RINGMASTER )* I8 F1 |% X Q; K; _2 I
nPoint += 160;
2 n& `; Q* l9 C% l else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )8 B6 P' |1 x, h" X1 s/ [
nPoint += 180;8 p) X# \! l* }# j3 d" E' | N3 x8 q2 C
else if( m_nJob == JOB_ELEMENTOR )' L% j- g7 l, I- T2 T6 d
nPoint += 390;7 m, ~# z& d! V9 \+ ~, [- f% p
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 G1 ^ J# ~. W) @& d* _ nPoint += 120;5 S: h# p7 N2 ?
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% T8 T/ @; H: D5 V nPoint += 150; ]) `, ?2 p$ x [9 P/ _% ~
else if( nJob == JOB_FLORIST_HERO ): C2 k+ x# r( I" e& F
nPoint += 160;
- |0 U0 x. y3 |3 `/ l else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )- D+ G$ ?9 ^5 k5 p
nPoint += 180;3 j. ^) [: ^& F6 e/ H: e7 X
else if( nJob == JOB_ELEMENTORLORD_HERO )" Y3 w1 z$ C2 O
nPoint += 390;+ T& w* `, s9 c8 u& i# S W- ~- _- ^- W6 ?
( r0 d! N$ ~+ {: \/ I( M
AddSkillPoint( nPoint );% i7 b$ |0 c9 y2 _/ l0 K6 e$ t1 s9 _
m_nLevel = nLevel;
6 C: G2 d4 {8 m2 z9 [/ W) w: A7 p H; A
SetJobLevel( nLevel, nJob );' P0 E6 Z( @4 ?* E* m U
m_nDeathLevel = nLevel;! A7 R# N5 g4 o$ s; |4 ^
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
2 P: p1 j; V( N+ a* J: Q* C if(IsMaster())/ L+ B$ J5 M& ~' {2 F$ b2 X
{
f& P# {9 `1 a: Y0 b+ B int dwTmpSkLevel = 1;//60, 72, 84, 96, 108; P, |* k, `, k- |. Q1 [
if( nLevel > 59 && nLevel < 72 )
5 N l# i/ y+ ]4 v* O5 d3 S5 R8 a- ^ dwTmpSkLevel = 1;
, b; o+ H$ w. F7 V else if( nLevel > 71 && nLevel < 84 )# X# T9 R/ T+ Y" L/ @; t) C9 P
dwTmpSkLevel = 2;
9 ^8 q9 g8 q0 ` D% z# T' x else if( nLevel > 83 && nLevel < 96 )6 |& `7 Z* J- g' f& _$ }) T$ r) Q9 T9 O
dwTmpSkLevel = 3;! c1 F6 E$ q3 n, ^0 a, x2 K
else if( nLevel > 95 && nLevel < 108 )8 g( m# Z* }) i) p% L2 {
dwTmpSkLevel = 4;* u' Y; g4 i2 F U* L6 _1 V9 s
else if( nLevel > 107 && nLevel < 120 )2 [) i5 ^& X7 t0 ^, c. u9 O
dwTmpSkLevel = 5;* c4 W; T. Y- a/ q' m& z) T+ c# B
for( int i = 0; i < MAX_SKILL_JOB; i++ ) & \1 z% g3 r9 K6 l8 W+ d) l m
{
0 \( k' l+ d0 H0 i; W" I$ ~ LPSKILL lpSkill = &(m_aJobSkill);
$ ^; }+ y7 A5 W1 b( y. u. S) x8 _ if( lpSkill && lpSkill->dwSkill != NULL_ID )
$ T# T: S" b6 e- B4 i1 N1 k( a# @ {, |8 i# ~1 U# y ~) L R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ M6 m# w' Q5 @, K if( pSkillProp == NULL )
* E0 i) P8 u* r4 |. f) U continue;; h1 y/ ^ b+ Z: r' t# e: E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' j9 K" b h6 T$ H* g' _% A5 c+ g: _; G
continue;
6 {/ a2 k" Q! Z- t' N lpSkill->dwLevel = dwTmpSkLevel;4 L* a+ m- J/ `' `. R
}# [. j# Z9 L: E. o5 l: e
}
' A' Y$ O3 @0 d5 X }3 ]) |5 Y1 W3 O3 D7 @7 }& p
else if(IsHero())' ^/ P6 o- e2 @$ Z+ T2 y
{; g7 Z0 B( |, b3 O8 N
for( int i = 0; i < MAX_SKILL_JOB; i++ ) + w0 z2 E5 b1 }! d
{
6 I8 }3 |: H: x LPSKILL lpSkill = &(m_aJobSkill);9 y7 b! i8 J! ^1 D- v' Z K5 ^9 I$ o
if( lpSkill && lpSkill->dwSkill != NULL_ID )
* p( G4 H8 N+ d z {
6 O# q) T+ s3 O! w) J$ w# p ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! j& N: N# m- D8 E; {8 r$ k4 b3 E if( pSkillProp == NULL )8 b: z+ u0 C' j: p/ C
continue;
, k. f& X7 D0 z( D# W t( ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ u2 \% T/ }2 ?% `/ _! S i continue;7 U* _# d. m3 M$ }, f
lpSkill->dwLevel = 5;
: N# [9 {& K% d' G }( b% G' \, p! c$ l
}1 g- Z, _9 h- f' P6 b& y
}+ P0 d. I6 P0 t* p
else if(IsLegendHero())
3 O& ]3 a2 W4 i5 k {
X, S2 ?2 M( k( \, @ for( int i = 0; i < MAX_SKILL_JOB; i++ ) , W4 n7 N. i& f' U q, f
{ 4 X4 O2 K- b# r- L2 v# X% [# S
LPSKILL lpSkill = &(m_aJobSkill);4 L. l! }* O4 l7 G
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 F9 i, E8 t. P1 B/ }& w
{
# P: A& y+ P% R1 D; s+ S ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
5 ^2 U: K) ?4 S+ L* n if( pSkillProp == NULL ) d) ], D" O6 v/ e% s* ]
continue;% N. k' d, j; q- K( J/ Q, i
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( `) w. p# g) V continue;
: t* E; q1 w2 C G/ u lpSkill->dwLevel = 5;
' l" I7 x$ A% l }, m* K, ?9 l' G% m( t A
}
9 a7 D( l# `" o }
, b5 t) G7 u' M! A B6 G#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 k+ f* y2 @ o) E' `* I2 w if( bGamma )
; L( p6 D) `% ?: Z6 n {
, \4 c$ N2 H9 }1 l m_nExp1 = 0;* v. C" K9 |% f3 l$ i5 T/ A0 |/ v' G
}. t s* w% ?6 ]+ y
5 c: E' }% i* Z& R3 W# P ( (CUser*)this )->AddSetChangeJob( nJob );
9 O* U* w) p6 r& q6 i# \ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
3 }! C* L( B4 n0 l' d. @; ]/ s3 n2 a! T3 H& m
, j8 _' Z1 ]1 x) Q8 R4 M#if __VER >= 11 // __SYS_PLAYER_DATA. Y/ W% d' W9 |
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
2 i+ i& X7 k k8 K4 O- |: b#else // __SYS_PLAYER_DATA$ |; y+ \* N: e% F! L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
: ^4 O+ r1 k- e* q g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( E$ C9 S' R0 M% V8 R- b. r
if( m_idGuild != 0 )# I* j' u8 O6 P ]5 Q! b% _- M
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
! E, p% w2 r5 Z8 p#endif // __SYS_PLAYER_DATA
2 I+ H! @0 s( G, `# b SetHitPoint( GetMaxHitPoint() );
$ K+ S! N6 [! }! K- j SetManaPoint( GetMaxManaPoint() );! P9 a- K7 R) c0 T
SetFatiguePoint( GetMaxFatiguePoint() );
0 ~( y) n: W2 ^3 |! t I) O8 h3 H2 r if( nJob >= 1 && nJob <= 4 )
3 d$ ]0 U4 h3 W9 a* T G {& j( d( Y* m. v" \! }) ~
m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 @! b& L6 W$ \: W' C m_nRemainGP = 28;
8 h2 L# D7 |) z2 r5 F }
( E: y7 X" u) Y0 w) o6 a if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )5 x. v3 R% x! j1 a# A) J
{
' {' t1 z+ P2 u; m4 {6 y m_nRemainGP = 118;) h7 w0 n6 Y+ h
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
" m5 r+ R: n5 k$ g m_nStr = m_nSta = m_nDex = m_nInt = 15;. A, J- W3 h/ b
}
+ v8 V4 H8 x9 V- M if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
8 K6 b8 ]8 P; C& b+ R {/ b, r, q: F7 d9 Z& d, T" {
CItemElem itemelem;8 t7 K) ^. \+ u' n
itemelem.m_nItemNum = 1;' n% a) f$ y. V# y8 C' _
itemelem.m_bCharged = TRUE;8 B$ y5 e3 c! k8 I' ~- ]; W$ u
BYTE nID;
+ o6 |: X" C; b( d& l5 d+ S/ R D& `
if( nJob == JOB_MENTALIST_HERO )& I7 ~( I- }) B& L5 S3 U7 S i
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN; p F3 Y+ Y4 o. X, t$ ^
if( nJob == JOB_FORCEMASTER_HERO )
+ ^: i" f7 I: _ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;9 O- }/ j7 K% e' A
9 b: } F+ q6 X6 ]5 E2 I: r1 Z ( ( CUser*)this)->CreateItem( &itemelem, &nID );
/ N! H2 l9 V; w8 [, Y! x9 ?0 a }6 J; E( |- g' y
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
/ ]2 i; H% k! ?3 K" ? ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );* c+ ]! P7 l9 h* c1 F% f$ E7 ?
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );7 j& q' `/ n+ ^. J
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );* a+ r0 _( s0 J' s
( (CUser*)this )->AddTaskBar();*/5 b$ t! Q+ h" p; F1 z+ C7 n
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
1 n; a5 `! H* E3 E' f; B7 i& B#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?2 M* O. x2 f9 {- h
((CUser*)this)->CheckHonorStat();1 }- q+ W7 D1 ^& H+ N5 C
((CUser*)this)->AddHonorListAck();
" E+ t2 _+ c( h" X& M8 R8 y g_UserMng.AddHonorTitleChange( this, m_nHonor);
" w2 J6 M- {: ?$ O% [- D. f#endif // __HONORABLE_TITLE // ′Tà?
7 N7 I) Z; t4 [8 x }! Q2 i5 M) A4 ~, n* {. T2 K; m
#endif // __WORLDSERVER
# R6 `$ |5 j$ l}
. K) ?3 K# h, E8 j, c8 b( a* T. D# v$ ?) r# T, f
然后你进入functextcmd.cpp并添加以下
- M' ^1 {( n: H" e& r+ K+ ]) s; M' h: ~
代码:
* ^% S3 q- q4 \; b3 pON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
F6 x7 L0 @: d1 O) j3 a$ @# w2 W下面插入
; Z) ?& a( k4 F# E( }/ S. YON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
% N/ D s- [. c! j5 Y; Q, u( l, |' g* C! S: P0 y' I
然后你去
c6 S' H, x) v# o
1 v/ j$ @; v3 Y* c7 I& J! q代码:' W, k. ~. ]$ G6 E. Y) W
代码# j; A$ p& T L- ^5 J9 D6 @# b. _' q
BOOL TextCmd_ClearPropose( CScanner & s )
- G |, t( F/ |: ^6 {4 G2 v{
. E7 X5 L3 A" y# Q# D- d" R! X#ifdef __WORLDSERVER2 U% {3 b$ M- m% _/ X. F: X
CUser* pUser = (CUser*)s.dwValue;
# @% ~( t6 H6 m- z8 e g_dpDBClient.SendClearPropose();
! J4 Q O9 C2 s# L) D. U! w0 m# X* x#endif // __WORLDSERVER2 e3 D$ c! s( Z% V) c) R4 a
return TRUE;
# l2 X- [/ U" f( O}: U7 v# K4 ^* z0 W/ q& P
下面插入6 H# d; |. a& N [4 P2 e
BOOL TextCmd_rebirth( CScanner& scanner )
- ^; |; [; k& x/ I- T( a- I{
3 s0 Z- Q" b% M8 D! y4 a#ifdef __WORLDSERVER
' d! `9 U4 A0 \& ]% r3 mCUser *pUser;
% T2 w5 H6 U# n9 c6 ipUser = (CUser*)scanner.dwValue;) w# Z, c3 f2 l- F" f! l0 _$ Y
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
, K* F! z& ~) X$ h! u xpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
4 S* E# t2 c7 D- I$ S' E$ q. ~# ^else
" B' D8 N/ X. ApUser->AddText("你还未达到重生条件!");' K+ r* P$ T" Z- _3 ^0 R
#endif8 R# _0 {- W: t% o3 B
return TRUE; z8 \9 E7 Y8 c3 _9 i4 w: K
}
2 K6 B; M3 U, _. j0 o
! {, v. j- K- k: i: ~; \* T7 D! `2 B6 ~7 ^; |
& J" k1 j3 W& M8 |$ Q* `0 _
1 |7 E# o. p! U, D. P
|
|