|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel* A$ H7 R5 k: v7 E& q
6 n) y! W, F7 `/ y# s- U. L
Mover.h7 I# h0 ~& Q! O& v
代码:
) B; t5 e# a+ Y0 ]4 W2 M$ t) }找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü1 U8 s7 n8 [) p9 X' B5 d
9 _6 X0 f5 @0 f/ G5 m$ }. T下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; # U# C9 _' r, j) P, c9 f
/ z! o4 ^+ `, X) q+ y- T* P然后你去mover.cpp添加
7 F! s! Q1 h" {" w& h
+ p N: n+ Z. s6 o代码:
3 m+ K0 P+ F; r$ S" S, Cvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )0 A' h8 j- L, w5 ^- b
{8 r2 k) i: S) M& S5 a" Q
#ifdef __WORLDSERVER
8 c, V9 m3 F2 b, I" J7 x8 ^ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
) B5 y$ [" w1 n! N! m MoverProp* pProp = GetProp();3 A5 y* R3 B( X3 i4 h! R1 C& S
if( pProp ): o7 k! Z- G8 K: j+ i7 C5 @
{
3 c' l$ l& z$ P$ u if( nJob > 0 && nJob < MAX_LEGEND_HERO )( U1 c1 A: D; h- w' @
{
0 D9 j9 m% D7 N7 o% [ AddChangeJob( nJob );
3 H7 {; h. T! i$ b( @' s }else{
2 ~9 o* }8 i/ C4 G5 F) I7 I return;, T, M( | R, E+ d5 t3 r+ m
}
# V/ b. P/ D& T: {0 X' U int nPoint = 0;
( J! F/ c4 y2 d if( m_nJob == JOB_MERCENARY ). o3 @! n- P4 b$ C$ R
nPoint += 40;$ }3 E2 V7 r- i' K* ?
else if( m_nJob == JOB_ACROBAT )
6 i; C( z! d j3 _0 t$ a6 e nPoint += 50;
: t* X3 O( I, c1 S" T0 I8 f) R else if( m_nJob == JOB_ASSIST )
" b( }2 b: [7 e1 Z6 o nPoint += 60;' \% v/ `' {/ l3 d2 q; Y) X
else if( m_nJob == JOB_MAGICIAN )4 [$ O! e) W x# L1 \6 K3 h
nPoint += 90;+ d# [; D) X) x) O
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% k' y' g, Y( j5 `, X nPoint += 120;2 W7 V' @1 f( k6 y
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )- I5 V8 F! q& c x) g* T, b
nPoint += 150;7 H# {. j3 q {3 C# L- C6 c; X
else if( m_nJob == JOB_RINGMASTER )9 w# c" d' ^2 ^3 a; S1 d
nPoint += 160;
2 ~: D' G$ s1 V: h/ i4 x0 T else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )8 J. E: G4 k; O5 k0 E
nPoint += 180;
4 @# I( i8 i$ [8 o8 D# h( i5 a else if( m_nJob == JOB_ELEMENTOR )' [# M& q/ k- S: h3 q
nPoint += 390;7 n/ I& d2 f5 H8 G
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )7 ^4 m9 A; p3 v+ ~4 Y$ q; [1 A
nPoint += 120;
* M- Q; N( m* k1 Y0 P else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
1 ?( U" f# a6 U' `* a4 C: R# h% S nPoint += 150;8 P$ ^, y9 G( m9 L" r: i
else if( nJob == JOB_FLORIST_HERO ): S& j- y% Q% n- L/ ^( v% k
nPoint += 160;
9 ~" k- Q4 ]; u! i' T) n) b/ ` else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
$ J! R0 q) ?# m! g nPoint += 180;
+ W) e( s& ]' d9 P else if( nJob == JOB_ELEMENTORLORD_HERO )
( h& e# J! L3 D% F8 ]/ M; o5 b nPoint += 390;
) h8 {" k/ Y% r6 Z. {* u, ~+ W" ]+ H7 U u7 P( b& a& J3 X; D
AddSkillPoint( nPoint );
: _& t, T0 R4 K' ? m_nLevel = nLevel;
% Q! d9 \/ D1 N- V7 b; y. Q1 w6 m+ ^4 R/ \) K
SetJobLevel( nLevel, nJob );
* K0 ~% X q7 m" P* s m_nDeathLevel = nLevel;
j$ u2 B, k1 u- R2 x7 E \#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
$ [! U* _3 C5 ^+ N( s if(IsMaster())
4 B7 |, c) ^* \6 J' @$ z {; Q. _- y8 c6 a* x$ K1 m P R( J
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 q- V/ O: o' l; w& V if( nLevel > 59 && nLevel < 72 )1 _. K3 |! X; S
dwTmpSkLevel = 1;
7 z- f# B! d3 I( q0 X3 \9 X else if( nLevel > 71 && nLevel < 84 ), s) M$ H* q- I
dwTmpSkLevel = 2; _7 r u3 Y+ r4 A: l! F
else if( nLevel > 83 && nLevel < 96 )' I, w2 R6 @/ R+ O. l
dwTmpSkLevel = 3;
3 J) q: |; J, w8 b( ^$ Q* E, O else if( nLevel > 95 && nLevel < 108 )
' g% ]' o9 Q0 C# g dwTmpSkLevel = 4;
5 v }* n, t3 i0 D else if( nLevel > 107 && nLevel < 120 )
3 [- V9 t) f, g% B c- T& t6 R2 R' D0 g dwTmpSkLevel = 5;8 _1 a% i% v, }" {' T
for( int i = 0; i < MAX_SKILL_JOB; i++ )
; G) V( Z0 q! H5 {& x {
; U& g$ b$ w. L7 C LPSKILL lpSkill = &(m_aJobSkill);
3 r" l9 k8 ]$ r9 i. _: n% r# O if( lpSkill && lpSkill->dwSkill != NULL_ID )( I4 W; O2 F/ |9 q
{
7 ~5 Q- L! n; ?/ G% E ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% g( k0 ` L& X: D- R8 n1 t if( pSkillProp == NULL )2 R/ j# y- N( A3 |
continue;
( p9 p3 A& }! c3 X5 ?8 c& | if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ Q6 H ~9 M! z" b- k
continue; t, A8 A' U0 K# ^% t/ H
lpSkill->dwLevel = dwTmpSkLevel;, b+ y' x, K4 W U j
}' L- O* J, A+ Q1 @/ ]# q. b
}
9 a; N6 x( s. v5 _/ y% B }8 z; k/ R& o) C. u1 n
else if(IsHero())
8 N4 k+ p S. F- A$ j; s {, w7 L/ ?: f3 C( _/ l+ z
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 w* P/ a+ |) V8 M3 |7 D3 ^ { 1 {/ j8 Y3 a. L; J# b x* C* C: ]( f
LPSKILL lpSkill = &(m_aJobSkill);1 ^- n8 h! b4 `. R6 f" c6 [
if( lpSkill && lpSkill->dwSkill != NULL_ID )
& G7 a% b1 q" P {
' I0 Y. f! l7 h ]. C7 }. ?1 i6 _* L ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
' ^1 c8 M* t, F& d if( pSkillProp == NULL ): c b. N! Y5 v; b
continue;
, B* K6 A N4 ~6 k if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 T$ k. g$ ~. D7 d continue;% k& Z; Y9 }9 F: f6 u
lpSkill->dwLevel = 5;5 ^+ v1 Y! c- r# F' J/ _0 ~
}
3 s3 J! {8 ?$ h6 i( E" @ }
% @3 Y4 b/ [% j; D }' ~3 g! n+ y4 C% h" I
else if(IsLegendHero())
. h5 R( P! s) M# G! y! u {
2 }( v; s* o' ]: c: v: Y for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 |3 e7 V( n2 g' k( j* ^! v: o% r
{
* Y, Z/ q$ x& P$ B. g LPSKILL lpSkill = &(m_aJobSkill);
9 x' W9 ?) m" `. j* P if( lpSkill && lpSkill->dwSkill != NULL_ID )! `; T/ u7 X' r2 L
{$ T& t' |) n2 w5 }. K3 Y. A
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' O3 s/ E( b% C8 J! K
if( pSkillProp == NULL )
( A% N/ f! Q) o continue;
4 F3 U9 S* w) [% s. u9 U* ? if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 ^4 x* t) E, C- q/ N% ]
continue;
% \, D5 q" U" F* |* W1 A( O lpSkill->dwLevel = 5;
" E6 B' j4 { S6 P$ h; ?2 M' _) g' ~$ U. T }$ p( j1 w. q9 `* q# P1 w; J
}8 n7 b: h# u, U$ H U& v
}
/ j# D* Y- ^8 T- }- i: R# I: b# z#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! N1 {4 Y; m( M
if( bGamma )8 `7 K) {1 }5 x# u, x' h
{; f! ^* ^$ @4 \; E$ @
m_nExp1 = 0;
7 T+ F0 F. v2 {4 u- Z }
: V. w7 L& N8 i, W0 a- k: j* d, ~" u3 h7 y Q+ H3 i q8 H4 v
( (CUser*)this )->AddSetChangeJob( nJob );/ I: v m" [* L2 _- R
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
2 U; B& g: u) ?3 Z7 F0 m' r1 h1 i0 z( M: |3 s! x, Y: R2 l3 e6 t
) L2 w3 C/ F8 s, O4 B#if __VER >= 11 // __SYS_PLAYER_DATA
6 M- K6 O1 J1 ^' w0 c" h g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
$ P" Q M. `, }* ~6 Q7 ^#else // __SYS_PLAYER_DATA5 O* `: u4 Z* N& P9 D
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );- J1 G; X O. d6 `3 \* c3 ~- q6 O. ?
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
/ N4 F' Q! p3 p# H if( m_idGuild != 0 )
; ^8 U, h# P5 C, [6 s g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );8 D5 }" {3 Q2 O+ d! J8 {' u
#endif // __SYS_PLAYER_DATA$ G9 b7 p- C3 \/ E
SetHitPoint( GetMaxHitPoint() );
) f2 `$ W( [* A" L SetManaPoint( GetMaxManaPoint() );
; W. A/ t Q: [ E/ t; O SetFatiguePoint( GetMaxFatiguePoint() );$ t; q+ x+ x/ W1 ], o6 o1 `% v
if( nJob >= 1 && nJob <= 4 )
! S; i3 ~8 Q/ i& C {1 a4 t# D" d- _8 O4 C8 c
m_nStr = m_nSta = m_nDex = m_nInt = 15;
4 w" ?% Z- M, m# E$ j# Z- T1 P& D0 r8 ?: Y m_nRemainGP = 28;+ R D7 J6 } A/ C
}/ Y! s. N' S& V5 b7 b9 m
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ); Q& i$ C( j8 y9 i/ a' `$ Z
{
' b% R$ f0 L/ O, T0 B m4 Z m_nRemainGP = 118;8 Z) u* W& X- M7 ?' w- O, {8 G
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
- e* c$ ~) Q) [. s m_nStr = m_nSta = m_nDex = m_nInt = 15;
' o$ f' ?/ L. J" t' [; ?3 q9 X }: Q9 C" w8 \' u( I" w
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
! [( w9 s3 V5 i& t4 {, l. R) n2 }0 h {
# S6 t. O4 Z) N& I/ o) Y CItemElem itemelem;; t8 {0 u8 h% R8 s# b5 [( A8 N( ~0 ~
itemelem.m_nItemNum = 1;
3 ]; P3 b- `$ B4 x4 e itemelem.m_bCharged = TRUE;
5 K0 ]8 z6 t; f BYTE nID; A3 B. C. |% i. Z
$ Q, {9 B# N$ \1 P
if( nJob == JOB_MENTALIST_HERO ). Z+ |& ^( }4 J( ?' E3 Q
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;1 x# }$ p& U1 ]! g: _5 ~: a
if( nJob == JOB_FORCEMASTER_HERO )
, @! ?$ X/ |% c E7 g4 \1 L+ ~ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
8 v/ u5 V% L6 Y' l2 y5 z1 |; s2 r: m0 ^+ z1 o" T5 _
( ( CUser*)this)->CreateItem( &itemelem, &nID );
1 T) C. S" Q0 f* O# W7 v( w }
9 s) |: _: i& f4 g g_UserMng.AddSetLevel( this, (WORD)m_nLevel );2 m- m! v$ Q' f0 a9 v6 u1 D
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );. h, `+ _$ F* ]5 p3 `6 L
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
$ I! i0 L: P1 M, P* p4 s( O* z6 p /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
9 r! I! Z- A O. {: N ( (CUser*)this )->AddTaskBar();*/, M0 s) [+ K* ]) p1 f# Z+ I) b
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );( _0 F e( g4 i& R
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
3 S+ j8 p+ p2 b+ r/ Y ((CUser*)this)->CheckHonorStat();. p2 d4 `7 q5 ^6 q: |( Z
((CUser*)this)->AddHonorListAck();4 m) F6 U" c/ F
g_UserMng.AddHonorTitleChange( this, m_nHonor);
3 E% P4 x: u9 G) e- l: U#endif // __HONORABLE_TITLE // ′Tà?" P- k8 I* Q5 r# b' h* C! p; K E( J* a
}$ r% N! B8 u; P# ~6 @% h( j
#endif // __WORLDSERVER/ R# ?1 i% Y2 \7 L" b/ O3 G
}
4 U6 [* a v. O6 O: Z
3 O# M+ P* G4 G( p然后你进入functextcmd.cpp并添加以下
( H s! G& t8 Q2 h2 g! W
- R7 g5 |+ \# W代码:
6 Q t: k- U+ u# E- ~+ p* ~ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
$ W4 Z* n8 C$ B- g0 j$ g下面插入& L9 y/ O) I2 l3 S$ }: M" `
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 5 c1 Y# l& K! r
8 F8 y8 \9 s1 k0 d然后你去) }6 x/ u% H" V* \: f0 v
2 e5 k' j |9 l9 r; g
代码:" | ]! ]) |: e- U& r9 ]
代码4 W" ?. _7 ]9 A6 e$ @
BOOL TextCmd_ClearPropose( CScanner & s )6 J# k g! R( ^/ {8 E/ E7 f6 P2 a! D0 k
{# Y4 o: G4 M$ \% ^; d0 H
#ifdef __WORLDSERVER
) x2 e: ?+ @5 I) J+ d8 W0 \6 {' _1 {) k CUser* pUser = (CUser*)s.dwValue;6 O% r$ e% v5 T4 y# P& l
g_dpDBClient.SendClearPropose();
4 { g- @$ g; `. t* s#endif // __WORLDSERVER: m+ m9 o; y( Q( o
return TRUE;
/ O( d8 R5 p0 N9 t$ e# U4 X2 X r}
" i7 F# w+ @0 p3 t, r/ S下面插入7 q& [- B4 P: a& p3 v
BOOL TextCmd_rebirth( CScanner& scanner ), }6 g: S' G( A I- \9 e2 J% A
{
' ?* \% e l" B: f! ~0 o- M$ D8 J#ifdef __WORLDSERVER
. o/ l3 g# p4 p; Q3 VCUser *pUser;! ^ a4 w; w3 B. Z$ v. G r' |
pUser = (CUser*)scanner.dwValue;
+ w. J8 E7 K7 H, pif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())" n/ ^. W+ Y1 _& T0 v: r7 l
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);! k2 b9 Y$ I/ y% ?
else7 x, g& f" q: M* e6 ]5 p
pUser->AddText("你还未达到重生条件!");- U) h5 c& }1 _% J9 s
#endif
1 w+ r8 ?, k9 q5 `* F2 `9 Dreturn TRUE;
2 B) G( k' k& V2 Z} / J1 y7 n7 a5 i: c2 k) p
; m K) U1 a0 s/ k3 j1 V
/ w, Q2 o% I2 j4 s( t' [! u7 _4 v+ d
4 G/ O, `' r* z% D; [- m, [- L" { |
|