|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
; p& \ j3 g, u. u
4 C1 j* H2 f7 i2 R) C, H( T$ l2 N& rMover.h
( b: w" }* H8 e% z代码:
) A! |; i: T0 Z4 z8 {, X找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü2 c U3 A) K1 n, a& K
$ O O6 d" ^: P& A4 V8 |3 r下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ) w+ k4 r1 p2 M; v: B6 }
& P1 u, j9 ~3 j% c! b) z v然后你去mover.cpp添加$ ]: ?$ o! w/ P7 Z+ A# c2 `* K
# _& r o0 \- _4 h. k4 y
代码:5 x# J& C ^( W+ T
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )" `$ a& A5 E% y
{6 x. I; ?7 B I8 p! o$ l: u9 J) j
#ifdef __WORLDSERVER" n1 o/ ?$ i8 D7 d" t! ^4 n/ H
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" @( C) j: V1 I ^ MoverProp* pProp = GetProp();
, H' f' [: Y U, n( x/ ^% n+ `0 _- Y if( pProp )/ h2 }& |* ^# w6 n) z, c
{
! K# l5 U" K$ W6 z! ~2 X if( nJob > 0 && nJob < MAX_LEGEND_HERO )
6 o+ C3 E" S: e- z( [* m; z4 q {" d2 @& X0 ]9 N3 L* X
AddChangeJob( nJob );
7 O+ g0 p, @7 i6 k0 Y8 l/ M }else{: k# M/ O" q* H! g' c D" m
return;1 k" i- q/ [4 a) r1 y7 \- D
}& ^. g7 f" A" C* Q. I5 M
int nPoint = 0;
; A$ E W# }5 U x if( m_nJob == JOB_MERCENARY )9 v7 T% ^% X- }; I( y! f; I
nPoint += 40;
8 L* P3 P* z$ n* r/ d# B; J/ b else if( m_nJob == JOB_ACROBAT )% v9 l' B4 u. X" R
nPoint += 50;
# [4 m+ ~0 [, f" m/ g( E! r else if( m_nJob == JOB_ASSIST )
2 p8 \' O3 G. f9 G# @ nPoint += 60;' p3 ~! g; E% I. C8 \0 G+ T
else if( m_nJob == JOB_MAGICIAN )
) n/ Q5 n# P- X/ M+ } nPoint += 90;# }% x: z. c- ?( A5 v1 ]5 [
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ), N/ t" X+ ?8 @; ^
nPoint += 120;
+ S2 R9 Q5 {# q. P9 a/ i' D6 q# W else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )* N) N/ ?4 k' ~7 ~! b+ n D, W9 O
nPoint += 150;0 {; i8 g; s1 L i3 V
else if( m_nJob == JOB_RINGMASTER )# h( n: _; j c- g- v/ p/ }
nPoint += 160;
! i( }- {: M* m7 K- Q; w else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
# q+ S0 c" R ?" ~7 C* A% o" Y0 s nPoint += 180;
( N' P" V# T! W5 k else if( m_nJob == JOB_ELEMENTOR )
6 l0 z+ w$ |/ g nPoint += 390;
4 i# }9 v' Y, q; i else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
$ [ I3 B! ]9 J' W7 p1 x' Y nPoint += 120;
" @; B& [8 g0 ?% A5 P else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
0 G3 l! a5 ~: N/ I1 L: O W nPoint += 150;$ t+ W& R( c: _+ S* U
else if( nJob == JOB_FLORIST_HERO )* M* M& ~: Q4 l3 q4 `4 U
nPoint += 160;
" M- M! R8 L& E0 f else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )+ H, f0 k5 O& E) s, O7 V9 c
nPoint += 180; W; B3 R* G0 j. f$ W( Z" o! b
else if( nJob == JOB_ELEMENTORLORD_HERO )
/ ?* J3 v# _' i+ D7 F; |/ G# [" b nPoint += 390;
/ n" P+ n/ I8 W0 e6 u, x' A! k$ `: S- z& G0 j' D9 U
AddSkillPoint( nPoint );* u3 G) d! p0 ]" l, U, V
m_nLevel = nLevel;5 A+ f: N6 a+ r7 R/ a' Y) u; P& k8 L
) ?" i. J# P2 D7 K* @
SetJobLevel( nLevel, nJob );
' e8 S& _1 Z- w# J+ `8 B7 O0 g m_nDeathLevel = nLevel;. D$ X; j& p* M5 u2 C% I' d9 F
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans6 s& M& m. m) `% t9 P2 M u' R% C6 S, I
if(IsMaster())
s5 n4 t7 s+ [1 b1 A- s {
3 n) e* l- f \$ l+ r) { int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
# l" {. a- g5 D! M) |. P I if( nLevel > 59 && nLevel < 72 )
) B+ M1 l6 r1 r% B' p3 v: y dwTmpSkLevel = 1;0 n( [" ~/ a w. n7 P
else if( nLevel > 71 && nLevel < 84 )
- I) p; J. `1 |% i dwTmpSkLevel = 2;
& O/ x# b0 n& h+ E1 i$ | else if( nLevel > 83 && nLevel < 96 )
- n4 _# S, @2 I: Y dwTmpSkLevel = 3;
4 ^1 g3 ` p- S3 h else if( nLevel > 95 && nLevel < 108 )
; H" ?- p( m3 L$ R) k dwTmpSkLevel = 4;/ I5 Z( F. L' C7 Q3 C2 z y
else if( nLevel > 107 && nLevel < 120 )
7 h3 {4 p' A( y7 n dwTmpSkLevel = 5;
1 c7 b. M4 i9 o7 T for( int i = 0; i < MAX_SKILL_JOB; i++ )
' U) O6 ^& z4 q; ?0 i+ ^ { + J; _$ B) x$ C3 {; C
LPSKILL lpSkill = &(m_aJobSkill);
4 Z$ u2 G" B6 j4 ]# Y if( lpSkill && lpSkill->dwSkill != NULL_ID )
, r6 ?; G. n1 S' Y# e5 b4 @! [7 @, J {
/ L f. e P2 y/ m ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 ^0 \2 s) m# n" m if( pSkillProp == NULL )
* S$ K, A' S0 O1 g& Y continue;9 v: s& u5 D" ~" z4 X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 U: h% n y4 o B3 L* f
continue; x' b/ p3 U$ i+ j) s
lpSkill->dwLevel = dwTmpSkLevel;
0 P2 t2 R+ W9 [3 m3 h) a }( A+ g9 M" G, b }; F$ N
}$ g6 J* _6 C- x4 c! B, f4 A. l
}; P+ H x, r! ]
else if(IsHero())
* e' `, k: K. b+ E {- ^1 U0 [) ?$ w
for( int i = 0; i < MAX_SKILL_JOB; i++ )
* S$ {) r. x4 p2 M/ V { 8 B+ {' @0 V. ?9 F1 [& t7 v' f- U5 ~2 B
LPSKILL lpSkill = &(m_aJobSkill);1 G, l+ P1 C2 U
if( lpSkill && lpSkill->dwSkill != NULL_ID ): }6 ^& n6 {* k, t* c/ V+ y/ @7 x
{
% K/ F4 ~, O5 H$ k: \" M' z6 a5 g ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " P7 [3 l2 Y. x3 A
if( pSkillProp == NULL )8 Z% y: N- d! @
continue;
8 r+ w3 }) {$ s8 W( D+ B3 z7 Q; e if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 l! s( t+ C% j5 T: R$ j- | continue;
( U& X3 ]* ]! H; X6 b lpSkill->dwLevel = 5;
/ c9 k. `8 o6 ` }! R$ h- [, t4 U% e c, ?, _2 u
}
' J: h, ^) a% O) N9 V R+ w6 D* p }
. J/ p$ q( Y* ?; L; V else if(IsLegendHero())6 l, z: I9 L( N i" Z3 Z
{
* @' s" J- U& g/ k* m0 V for( int i = 0; i < MAX_SKILL_JOB; i++ ) " B% _* ~1 d! ?2 h; s1 ]
{ / u8 j& N2 a {3 K; Y+ o& v/ T" L
LPSKILL lpSkill = &(m_aJobSkill); U. {9 a6 W9 a: B6 x7 b9 W
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 S7 y3 p- Q( z; K) ` {
5 ^1 d% }& @4 _. R% E6 K. T9 t ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( Q1 C" d4 A u. R- E7 h, Y if( pSkillProp == NULL )
! A/ A9 j, o6 ^7 X" h' ~1 j) c continue;8 \+ M6 e) I- @1 |2 ?9 s( w
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! w1 ~* }* i. c0 F1 s
continue;9 l2 ^: L4 L' E2 M+ c g
lpSkill->dwLevel = 5;
, o( w' ?4 s* h" _6 ] }
. e2 l/ D( F! e' k8 {" }5 M }8 C' r2 v7 c9 k
}
* z/ D0 } S+ Z& D. g; g#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 m; H& E- ]* a# M4 D if( bGamma )
$ I$ Q {- y# p# T3 C5 n L! K1 } {
; V# h% w1 M* V( D! Z# w m_nExp1 = 0;! v4 _9 q. O1 C$ W9 m
}0 d" N, ]: Z. I; Y) q
" q( q9 G/ i5 i1 X
( (CUser*)this )->AddSetChangeJob( nJob );& A5 X5 K+ z. v
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );! q# P2 Q" i7 t- L4 X
3 @, ?. \- u9 b; [
" `8 }# b o6 P1 G+ Q#if __VER >= 11 // __SYS_PLAYER_DATA# M2 s& g! p6 Y; W2 R
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );8 c; c* ]( m' j* g) E
#else // __SYS_PLAYER_DATA3 Y/ Y X" N( G3 X) L% [
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
+ N+ B: J7 J7 E; H- H0 K g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
b6 B/ e6 n7 B if( m_idGuild != 0 )3 }) G7 X! n. Y: }, s2 n1 G
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
8 R" ]8 e% q6 i! Z% ~#endif // __SYS_PLAYER_DATA
( x' v8 l- s2 v& z( y5 j8 t- s SetHitPoint( GetMaxHitPoint() );
/ {) Q3 D* L! g( z) }, _ SetManaPoint( GetMaxManaPoint() );
# C, n2 G9 j, W g8 L' L SetFatiguePoint( GetMaxFatiguePoint() );4 t& o$ K% G5 D' `$ V( c
if( nJob >= 1 && nJob <= 4 )
* n: E# f7 ^5 @/ x {
0 B1 l( j/ n0 T5 G3 M$ J+ G m_nStr = m_nSta = m_nDex = m_nInt = 15;0 R& T+ X; h7 Z3 @3 H* o. K
m_nRemainGP = 28;+ U" S$ n% n3 d; p1 ~
}
3 J- _) K% y1 P if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ): }" b7 ^4 n: f8 \; W8 U' O X
{' R. C4 C, t* S8 E% T2 V
m_nRemainGP = 118; H' O4 U' _, ^1 Z4 b
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;3 V y& t% K2 |: J, g) l7 |( p* K
m_nStr = m_nSta = m_nDex = m_nInt = 15;; M7 E( H* f* F7 b
}
6 C$ v2 H7 z! O( d. j if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )4 J8 ?4 M/ r6 N; {7 A4 }9 e
{
; F3 O) Z+ \; X7 ~) A- S CItemElem itemelem;
3 y& ~/ k5 n9 r' p0 o$ Y8 a* ^; D itemelem.m_nItemNum = 1;
, G# `( R; t; ~3 b, v5 c8 x. N itemelem.m_bCharged = TRUE;
2 m/ R1 [( ]- l0 t0 T1 [ BYTE nID;
* A5 y3 K* f2 I. i1 P9 O% H1 Z* X, h5 `# ?1 K7 I0 ]% p
if( nJob == JOB_MENTALIST_HERO )) |* {1 ?# d/ z1 s+ a! y' i
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;; p( s; n/ M) \1 m
if( nJob == JOB_FORCEMASTER_HERO )
' o) ]7 Z7 ^" Z. U7 {- W6 ?0 l; g itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;) ]1 [' `; w" s9 B. F1 Y
, z R9 d5 x4 t: u% `) u2 V
( ( CUser*)this)->CreateItem( &itemelem, &nID );
9 K7 S- b1 [* t* l L }8 F V3 J" B: y0 o! I" t& n
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
* u5 J4 A1 f: P% d ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
/ M, Q1 T( D( c2 Y ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& Y& s5 f6 [$ o8 g& e /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );1 x# J" r) {$ ?
( (CUser*)this )->AddTaskBar();*/
? d7 x% {) g2 Z }' z- D/ \ ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );7 K q5 y! g i- [$ `1 I+ j
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, v0 U! E. T4 z7 u! F
((CUser*)this)->CheckHonorStat();. A! f }6 K; Q5 E
((CUser*)this)->AddHonorListAck();2 H7 e: ] K& h* o( k+ h$ X: U, ~
g_UserMng.AddHonorTitleChange( this, m_nHonor);) b0 U4 q" {# X) O: t
#endif // __HONORABLE_TITLE // ′Tà?
9 A7 x$ }- P( u! @, @ }
2 c8 N3 ?" {& J#endif // __WORLDSERVER: A( p- u! Q9 a8 C
} ) P2 A# \' R1 I% t! r, v1 e7 V5 \
2 Q2 ?3 S+ V4 d6 }/ c, r然后你进入functextcmd.cpp并添加以下; B% W& d/ O L! K! Q& C% P4 \
+ a+ E/ t% F, ^代码:
' b0 r& E' X0 X0 hON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )* v) ^- _! Y: S. o& S+ K7 d
下面插入: j D/ v2 o7 a+ s, n4 y1 l! f; W2 \
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
' X- `7 @% t" M2 |9 d4 f m" p# X4 }7 v6 i z
然后你去
1 Z: n$ F5 g$ C; i! R5 \! \
9 X, L7 R$ b: q1 B$ z% Q代码:
; Y% N0 S+ a7 b! m8 }0 b代码
4 Q% \; }2 b7 N* mBOOL TextCmd_ClearPropose( CScanner & s )
9 F! R3 ?' ?( s" s" F' z9 u{( L% h2 |# P/ {
#ifdef __WORLDSERVER: v5 G. @! ^9 Y# e# x) R: d+ H/ @( O
CUser* pUser = (CUser*)s.dwValue;' F7 c" L/ Q4 v b
g_dpDBClient.SendClearPropose();
: U \, M3 g7 R' V#endif // __WORLDSERVER
1 J2 `/ x3 e/ e; ^0 p) ]9 j return TRUE;5 P0 y, [7 T( E. A! ?
}/ N9 B( B$ V+ B; m( f
下面插入
9 R# A5 J: W. ^1 L$ eBOOL TextCmd_rebirth( CScanner& scanner )
% U/ v' N; f7 T) {. K' R. s{
8 C" m1 m" |+ y- H+ I7 S#ifdef __WORLDSERVER
# o& p6 x" H0 m+ m" g: Z% HCUser *pUser;: t: e6 [ i1 d: m
pUser = (CUser*)scanner.dwValue;0 p; G: H X/ p$ F0 b5 _1 g7 l
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
2 `7 R6 v+ B# `& H1 U1 ^pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
) k, D9 _1 M6 @/ J9 w- K6 e) melse
# m& G6 ]0 [& ]5 w6 ipUser->AddText("你还未达到重生条件!");: }1 g1 W) Q. I* m: h& P. h
#endif, f9 B0 p( p M* E1 D& M# w
return TRUE;' e9 V' j( g1 C# ^5 @4 O, s
}
* D. U( X# }- L/ X* A; p( { w% s8 n" X: o- i
3 U, _; A m, Z6 P
; J8 Z& ~; l+ Q- [- Z, H& Y
- D& s6 z1 v8 S' f, C |
|