|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
# t, m) ~9 A) [* c) \( Y+ w w# ]4 W: C0 B1 \# y) @& W8 w0 }, o
Mover.h# g' W+ Z) \% T4 g( S! C
代码:. v3 ^" V l6 K8 V
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü3 o$ F) x6 ], C8 _# A1 P4 y3 E/ }
6 x- B0 P2 k7 ^# l8 Z6 a
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ) l0 U4 d4 ?0 x& Q- h6 r3 Y
* T5 f7 d" Y- o1 S, W [4 ^ S
然后你去mover.cpp添加
3 |9 L2 E1 u- A* k, p; F0 y. _" u, ~. U
代码:0 w6 @9 ~6 \0 _ s1 d- V2 r# r# L5 ~
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ). ]3 q% _4 T* S
{
- p% L, \ t- K#ifdef __WORLDSERVER
8 w1 Z1 S& k0 ?( v% | // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó8 x$ C& w- s' A- T- O+ x1 U
MoverProp* pProp = GetProp();
+ t) |& R9 y4 c if( pProp )
$ U: l, T3 s- O% M {' J3 Q K) W% F$ s* _6 B
if( nJob > 0 && nJob < MAX_LEGEND_HERO )7 |4 K3 T, f* H1 @8 G3 L# z! h& K
{) R# g& Z X# j3 p4 `4 O& J
AddChangeJob( nJob );9 E* {6 k9 d4 N7 X8 L4 `+ y, p
}else{
5 p& C. }1 X; G; r+ q/ ~. L9 u return;
; J- S7 l. v( f, d }* Q/ V, x; _# l
int nPoint = 0;, d2 g# K j& S! ~# D
if( m_nJob == JOB_MERCENARY )) w2 U% u* X. q2 n( B8 B. \
nPoint += 40;! X7 D( X# z# b, ~5 h
else if( m_nJob == JOB_ACROBAT ), `8 _5 }* Z2 _
nPoint += 50;- h4 z9 R' j" Q8 l4 Q
else if( m_nJob == JOB_ASSIST )5 Z2 E3 f. M! e% H; e0 U4 D
nPoint += 60;/ K* n% O9 N9 P1 D2 C4 L; u: J
else if( m_nJob == JOB_MAGICIAN )' u! F; m" k* x- a. j) k) j
nPoint += 90;
9 x4 U3 l) ]% V: |3 c& T( i else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )) U: ~0 P8 f+ h% \0 w4 x2 P5 r o
nPoint += 120;
1 Z% G4 l% j5 n, M else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
9 l4 W; x/ z0 `% \6 O9 l nPoint += 150;
6 K& _" u( Z9 v& c. v# I else if( m_nJob == JOB_RINGMASTER )- M& ^5 q. H. N" |+ ~( G
nPoint += 160;
' F7 ~7 ?" j# n. e! [ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )0 e* F5 q- H/ E+ b: }5 {
nPoint += 180;1 A; z2 q! G1 E0 h( \
else if( m_nJob == JOB_ELEMENTOR )8 c& Y' M2 h5 X
nPoint += 390;
' P S+ O0 q6 X else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )0 w3 m! B: @) a, t! B) y( K+ `
nPoint += 120;
3 H0 e7 R: w& ? l; x' m0 W else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )3 m: |. L0 h) q3 f5 t+ v
nPoint += 150;5 r) B$ p( o" c4 }; m7 B
else if( nJob == JOB_FLORIST_HERO )
$ Z) Z; U2 z- M: N' _ nPoint += 160;
2 R2 A! Y! X; h& T8 k3 u* `9 e else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
9 H, Y e: d$ Q0 Q nPoint += 180;
' c# q* o3 Z1 F, b* k4 _ else if( nJob == JOB_ELEMENTORLORD_HERO )3 S" Y* z. H3 P0 W
nPoint += 390;
1 J0 E( {& t$ K$ h
, h, Q! B( {* b: |3 z AddSkillPoint( nPoint );
6 c9 ~$ a4 S! I* A/ r+ V* Q m_nLevel = nLevel;5 l8 _! m C( I
0 j G( m8 h, _" d& y) j SetJobLevel( nLevel, nJob );2 V4 O) T( ]* H! P
m_nDeathLevel = nLevel;* k& C6 [+ A5 p2 Y. e7 w& ?
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 W# U/ N- J" d) N# \4 t& y3 S6 m if(IsMaster())
" z2 P* A: k' S {& X+ f) B; L$ y
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1085 b/ ~6 |, ]$ J8 ?: K4 s
if( nLevel > 59 && nLevel < 72 )6 j0 o: k+ [! K- i
dwTmpSkLevel = 1;
+ y; i O( ^! l! ] else if( nLevel > 71 && nLevel < 84 ), d8 ^% Z7 M5 i' D
dwTmpSkLevel = 2;$ X% V8 E6 ]9 J) K" r& B3 @1 K
else if( nLevel > 83 && nLevel < 96 )
' u! B# C5 h) | dwTmpSkLevel = 3;4 o/ _, @+ V- J& y$ ^5 ?9 z( ^
else if( nLevel > 95 && nLevel < 108 )
# i+ r2 T4 a3 t dwTmpSkLevel = 4;
9 ^* e" P5 j. T) I9 G" x. ^ else if( nLevel > 107 && nLevel < 120 )
! K7 O6 s" u; ?$ N. Z dwTmpSkLevel = 5;4 s; x0 c9 x/ b
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) n5 c& p6 F: X4 [
{
' [: G; l& ~' X% g$ I% g LPSKILL lpSkill = &(m_aJobSkill);
6 n9 N7 M; ~. W2 y6 h; C if( lpSkill && lpSkill->dwSkill != NULL_ID ). y# m* y ^# e2 t9 E. m0 I
{8 l3 i1 d9 T% I7 z2 S! X5 q
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & |6 d) v. p- h8 `8 k; D! Z3 l# ~
if( pSkillProp == NULL )
& A. p0 ~% i6 B9 X3 g3 e# y continue;4 K% o& z, y% \# D# R
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 N( z0 l) ^4 f1 ^1 N continue;/ ]6 D8 M; ~* q" G
lpSkill->dwLevel = dwTmpSkLevel;/ |# T1 L" o5 y* ?
}0 _; P# P: `% y4 T F
}
2 d" ?& v) @ ~4 ~6 z+ q$ ~ }( M0 l1 o4 V V8 C0 e; e
else if(IsHero())& o3 W! k, C! ^8 J# Y" d
{( y6 D2 e) N* ^& @ {
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 t# f8 d8 y' W) n5 u& h
{ 1 Q$ j! m+ j. M1 w& E% ?9 ^
LPSKILL lpSkill = &(m_aJobSkill);9 x; o7 ^! t# a
if( lpSkill && lpSkill->dwSkill != NULL_ID ). B7 k$ w2 R/ V8 V1 \1 p
{
9 X3 `" g3 z" F7 `% H# O1 h ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 F9 X; W7 V: O. F- s2 b if( pSkillProp == NULL )( S* J5 M) p7 b' a2 m
continue;$ J0 }# k8 B m6 j
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& i2 _6 {; J6 X: g( m. ` Q continue;
' M6 v1 m% \( U lpSkill->dwLevel = 5;
" p& C9 p7 {; W6 y! A4 d }
7 }7 m) R, c# Y# W1 c' h }
, m7 x8 N* g+ Q/ P8 X6 h, X/ ^ }
% P* R/ _, q/ ` else if(IsLegendHero())
! O3 S& ~- B2 m' a0 Y {
; p7 x" h' T+ \' A for( int i = 0; i < MAX_SKILL_JOB; i++ )
; y$ M; x# E) a: ` {
5 U( f7 m8 Y A' _- t LPSKILL lpSkill = &(m_aJobSkill);5 p& w. e' T( P
if( lpSkill && lpSkill->dwSkill != NULL_ID )
; m% r4 S! F* r1 D- m8 x {
+ ?! A L" c3 [0 r- M ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 e8 r- H3 w1 p7 ]6 ^9 \/ y$ ?
if( pSkillProp == NULL )4 i1 K: F0 [) J- }9 e/ \1 y2 n
continue;
9 j% @. X/ e+ I+ s/ t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)9 Y; k+ E) d0 P2 E& G% Z
continue;2 c) T/ @4 V! u9 u, t
lpSkill->dwLevel = 5;
& u" J% w Y% V$ q }: x8 _ Y* m& G C
}" k8 h2 U; F; V/ S; [3 w4 j
}
+ @% O5 ^) o. z! R#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 s8 @* j6 \6 g
if( bGamma )
9 y: m' k1 T4 b: t2 ? {7 r. ^, P4 l* x8 D, W7 ~" o
m_nExp1 = 0;, N$ x: N' _, ~; A
}
7 ?8 ]1 m4 _6 A8 y7 b) O; h
" M* F' S2 Q- m ( (CUser*)this )->AddSetChangeJob( nJob );: ^% v/ n+ a& ^3 M
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
( v1 T7 o7 |( e! [) B4 S5 Q9 N9 \/ Z4 w# }; \5 _5 e
& g7 {$ \7 L+ }' i+ h#if __VER >= 11 // __SYS_PLAYER_DATA& C+ P. n; s V8 y* ]
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );- I& q% w7 b3 f
#else // __SYS_PLAYER_DATA
I; P, W) U, c( e, A9 b% { g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
% H( {9 B- T& G1 ]) e g_DPCoreClient.SendFriendChangeJob( (CUser*)this );/ n3 N. B# [5 m; n
if( m_idGuild != 0 )
' N% p) ?: D/ f' s1 ^ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
: _0 s4 F; z2 z/ Q# K3 k#endif // __SYS_PLAYER_DATA/ Y2 I; e! G. ?( j! o7 N
SetHitPoint( GetMaxHitPoint() );! B. @* N6 u3 T, ^: T6 J* O
SetManaPoint( GetMaxManaPoint() );
3 c6 i3 m8 k! Y SetFatiguePoint( GetMaxFatiguePoint() );
' P( t1 y3 ~" r, f if( nJob >= 1 && nJob <= 4 )
3 p' n- y# E3 [" B1 _( y$ n {
& {' ^. G W; U4 f2 e8 ~) L m_nStr = m_nSta = m_nDex = m_nInt = 15;+ }+ @( p" J( v1 q7 C2 ?* x# P
m_nRemainGP = 28;
. R8 C# s4 a+ W }- D3 @: [: s- @+ b
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )1 d. Z1 N/ I5 r* e+ v; F1 {. ]' _
{8 x6 p* [% K/ Z6 A; X* j
m_nRemainGP = 118;
; u U' Q& k5 k5 h6 s% N$ W1 [ //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
8 r5 m; W) B! {1 A; [ m_nStr = m_nSta = m_nDex = m_nInt = 15;0 Y. p* ^) \) p- ]5 M: ]; i/ S
}9 l/ v' r) g. B. F" f: d0 M
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )* p1 R& }. b" J9 N0 e W9 c
{
( }* F: v2 g2 L8 c2 | |9 r' k CItemElem itemelem;0 I/ b& A, z3 O9 Z, h
itemelem.m_nItemNum = 1;' ]1 {4 Q7 }5 q0 y
itemelem.m_bCharged = TRUE;1 g% S7 W5 ]! u: b
BYTE nID;
+ ^( S( e: E4 G6 N: j
0 v9 k9 g2 C: E! u( [2 c' ?' v1 @ if( nJob == JOB_MENTALIST_HERO )
% }; f J& p! B5 [8 ] itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;, g9 p: ^& l: n+ p$ K
if( nJob == JOB_FORCEMASTER_HERO )/ V/ Y% z: E1 s" o. l' y
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;) ?# F8 _% _/ o- T
; x4 L" ~* c" C5 ~* d ( ( CUser*)this)->CreateItem( &itemelem, &nID );
" }/ P `. l: I1 A$ x# l' l }
4 [& x- j8 |& [5 C: t g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
2 D2 c* G/ X* g& `/ A7 S( |: { ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP ); G2 H2 D& i& I- k
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );; B# E! Y, G8 K7 \5 E% i# k- N; }
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
" Q9 B5 W* Y: [9 f ( (CUser*)this )->AddTaskBar();*/+ @( u; J$ ^8 V7 ?
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );0 u3 g* C" m8 O+ i/ D1 D+ \
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
. ]" H) k' a9 P ((CUser*)this)->CheckHonorStat();
; J9 c. ~/ u e0 s. m ((CUser*)this)->AddHonorListAck();
3 O8 n* }& N: M9 R3 i g_UserMng.AddHonorTitleChange( this, m_nHonor);
( G, _0 i7 I6 \( q#endif // __HONORABLE_TITLE // ′Tà?
& O( Z4 y; U& S3 _: C }
) G/ c7 r* M* B: n( b#endif // __WORLDSERVER
9 X2 j; }/ O4 M+ [}
: h( h; a4 X* ^2 K/ S% G4 ^0 v' g7 X- o- Q
然后你进入functextcmd.cpp并添加以下
6 j( X* `& G. ]/ r1 ~. O3 D
% b* q7 ^ y! @, K2 L. W代码:
. R3 x% j4 z: u2 |) x# B4 jON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )9 X2 h; ]- G1 B- R4 K
下面插入 x6 [+ G% \# D7 t+ g: c2 S
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( O) [( P) z5 d: v2 P' p0 s i. a
2 k" [7 f4 M, ?/ l0 a' L然后你去
" q$ q/ c, \0 _2 d, f9 C& E0 q) t5 y K( O; U3 L9 V# i
代码: n9 B+ z. c) G% n
代码
. T! f7 r4 o* z" l: NBOOL TextCmd_ClearPropose( CScanner & s ) E# p- t) l" F$ {: W3 O: f8 x
{
' }: w6 A Q! [6 Y/ r$ Y#ifdef __WORLDSERVER' ], P5 W% _" f/ V9 T$ X Y
CUser* pUser = (CUser*)s.dwValue;
+ v! J) Y3 q9 P1 p# H3 m! N g_dpDBClient.SendClearPropose();
}9 S6 g: U p& u8 E8 s {( x" X#endif // __WORLDSERVER6 s- j l: y* w' m" C
return TRUE;# d5 W0 t. K) f& Y5 P9 ^
}
0 d( _) v+ @+ ~* D* f6 n& V下面插入
1 V6 o/ r! A- DBOOL TextCmd_rebirth( CScanner& scanner )' ^2 D$ R* A g! C, ?6 G, |
{) R. i5 H( i) ]+ L( y+ U! M F
#ifdef __WORLDSERVER
1 v- m8 T6 \ BCUser *pUser;
0 j0 L; P" h- m! h J, B, b$ UpUser = (CUser*)scanner.dwValue;
4 `9 d+ S7 x, M6 d' o8 C# {6 [if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())8 g3 G1 K; d; T4 Q0 L* Q
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
: h* ]) z# H7 Celse
2 V$ a4 b0 q1 i/ r2 ~6 E' h; |pUser->AddText("你还未达到重生条件!");
0 }! @8 u" S3 z( c! ~; {#endif3 p O0 d' x; ?# p1 _% L
return TRUE;7 n0 F% i$ F: C. d
}
& Q9 s& @, p3 B; T) ]' S1 x* o& x9 B% V i& r
3 @' I2 x3 h1 Q) e: l: l7 a
1 ^1 M% {5 |3 z# J: S2 x% K% x1 x
# J& ]; z4 m! y- }- ] |
|