|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel7 {8 D5 J' y# s' J
! q5 {5 \+ J1 j; z u3 |
Mover.h
% p1 `* h4 ]- K( o* } Q4 @/ Q代码:
+ V5 x" c) P# O0 o' u找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü, i% d, g/ W# c( V; Z7 L5 U; A
7 j8 e, ^# c- b3 ?$ v7 g
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; / ^0 K- z l) C5 Z& M! e
; S6 x" `2 r4 b7 J
然后你去mover.cpp添加$ \4 j; y! Y6 C y0 K: a5 c
0 O; G; h$ Z& K6 S5 k
代码:9 ^& \# [0 e8 U' C& |
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )4 s# s9 V9 Q( W3 x& h
{" Q; K) ^2 \% n: y
#ifdef __WORLDSERVER" [# J/ J4 t1 L+ H% Q5 ]
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
- m% Q* m9 a) f" I4 I! F- k4 e MoverProp* pProp = GetProp();) v2 ^# F x" b( L7 E
if( pProp )9 c% d' q/ g! j" I5 [
{3 @8 k9 D: r0 Q) P
if( nJob > 0 && nJob < MAX_LEGEND_HERO )& O% {$ G" o6 G
{5 e. d* k: z# O" N+ R1 f5 S
AddChangeJob( nJob );
+ v% g7 ^% p6 ~$ Y9 P }else{
4 G/ }/ n9 m: e return;
: M; q( V' P( v% Q# M& [2 f8 r6 i }
$ I+ {! Z0 V3 f7 e" Y int nPoint = 0;. @5 @/ o! K2 w1 a
if( m_nJob == JOB_MERCENARY )8 t' ?& E- K' l# N$ i8 z
nPoint += 40;1 ?% n9 \ U4 f. c, @7 h
else if( m_nJob == JOB_ACROBAT )# W; T% P* u: ^- w
nPoint += 50;
% M5 u' f% s/ \- w( P' R else if( m_nJob == JOB_ASSIST )' y5 M& l9 f$ s( v7 D6 d0 Q# G
nPoint += 60;+ p( J1 m1 J' j% y
else if( m_nJob == JOB_MAGICIAN ) S ] F/ }4 ^! b! c+ Q0 }
nPoint += 90;! n7 q7 |+ {" g0 ~0 h
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
; ^4 c1 g% K: X" @" q nPoint += 120;6 I) h6 s) k7 D: P: @! m( p7 v
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )' d' \$ |. f7 }" c' v
nPoint += 150;7 h9 u2 N( K2 [4 ]4 A! v6 q0 c
else if( m_nJob == JOB_RINGMASTER )
3 l( M. o8 K- X- | nPoint += 160;
6 Z5 ]" x" F# x' O8 k else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
1 J) m3 h {7 }* \* Y0 Z ^. B nPoint += 180;0 a; x; q0 O/ \- a
else if( m_nJob == JOB_ELEMENTOR )
0 a" F, B! O( V2 d4 `! ?* I c1 l nPoint += 390;
- a8 _+ m3 M* c else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )! o( C5 n" `- F6 G1 R
nPoint += 120;
0 k' D8 [$ z8 t7 X/ A else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
8 B" A7 D) K: `7 u+ w! }- t nPoint += 150;4 o% x: [/ ?* ^$ ]; q
else if( nJob == JOB_FLORIST_HERO )4 l/ q# Z* I6 }. b& ~1 i& j+ {$ P/ s
nPoint += 160;
. v! L% |# ^, s: k3 J else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )5 A; S; J! `. U# `' Q
nPoint += 180;
1 |. `3 a& K/ W7 M+ I: y else if( nJob == JOB_ELEMENTORLORD_HERO )
# N4 s. z( x! H, V& o- f a) j nPoint += 390;6 r; R; Z' u6 L! ] s; o6 @; C
/ \ L2 h( t F2 Q AddSkillPoint( nPoint );9 m k6 F0 I3 |: C6 F8 q
m_nLevel = nLevel;3 H7 w; {! r% a8 _( y5 K
4 A( K2 V$ k$ z4 n- o9 `, k
SetJobLevel( nLevel, nJob );
6 a, \$ u& Z* i6 E0 z6 k, M2 o m_nDeathLevel = nLevel;
" S* E. z2 g1 M2 h" g* {#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
1 e/ e8 f1 A# F if(IsMaster()) H3 ^' M% ?0 W) A6 i: y
{* I# B7 J/ _# R" r* D6 O( b
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! x* Q" k; e% @4 g
if( nLevel > 59 && nLevel < 72 )7 V) q4 u, t& N. h+ c9 {. \1 T
dwTmpSkLevel = 1;; p6 L# o+ @6 G3 x
else if( nLevel > 71 && nLevel < 84 )% a2 Y9 z$ x6 M( X4 R* M
dwTmpSkLevel = 2;
. y& ^+ t S( k- P else if( nLevel > 83 && nLevel < 96 )
, _. U# ^6 b& s1 i9 M3 q( y dwTmpSkLevel = 3;
& p% s- \* d* ]$ Z9 ?% A9 h4 W; z& Y else if( nLevel > 95 && nLevel < 108 )
4 @ d. v c" L0 Q dwTmpSkLevel = 4;' K7 N+ W, |+ J- l8 {5 ]" k
else if( nLevel > 107 && nLevel < 120 )
- K# z0 W, L% ~ dwTmpSkLevel = 5;
8 p6 l" i& E+ P: _. s d for( int i = 0; i < MAX_SKILL_JOB; i++ )
( r( y1 T) u" M$ K; b5 s {
$ f6 Y Z( `; j' x/ _3 [) N( i LPSKILL lpSkill = &(m_aJobSkill);
1 w( ^. D! G% m% @ if( lpSkill && lpSkill->dwSkill != NULL_ID )
* n. r' v! F7 A C! i) M! p* | {. I- e! `4 Z7 R' F
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! u# n2 ]! D, i! J: G/ Y0 p if( pSkillProp == NULL )4 g# A7 W3 X+ z% {- O+ z
continue;$ V8 @2 J; ?( k5 F3 r
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
- q4 x/ F! B; m% t continue;3 D6 e6 X1 j: E4 K7 i# Q# L
lpSkill->dwLevel = dwTmpSkLevel;
5 D# C w7 w9 E& D! u }: {6 a% ~2 q6 s N j4 \1 g+ h* j& k- R
} O5 u9 @7 g: G; ^. X
}
1 u6 \! a# v/ h% n$ J) c7 z else if(IsHero())
$ x5 }: `3 N2 E {0 A9 q* c0 _& b% r7 V3 f8 G4 O
for( int i = 0; i < MAX_SKILL_JOB; i++ ) % h7 Q4 m; P( Q+ \
{
; A. ^# \* a4 c7 h4 f# }1 D0 N LPSKILL lpSkill = &(m_aJobSkill);8 v- v+ o( B/ ^9 m- g$ _, |
if( lpSkill && lpSkill->dwSkill != NULL_ID ): f1 H0 G* h9 I
{ w) l# n8 W# B. S2 S+ t9 _' U
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( ~; V4 W- u& N
if( pSkillProp == NULL ): U! Z" h1 X8 F% g" c/ I8 V
continue;
/ B8 W" G7 ?6 V( e' ^ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( F3 g( L+ ^1 O2 H continue;
4 q% p3 j7 \1 r3 I5 Q2 ` \ lpSkill->dwLevel = 5;, c' [5 p6 b8 b
}; i# r1 p Z; f! c5 Z+ S' A: g
}
2 w/ D _, l- @8 ]0 F% m/ \6 x }) U( d1 X2 R/ m- \
else if(IsLegendHero())
; B4 Y, _# ]1 S+ ~. e2 M, x {' R( `; ? J) o. j4 G
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' x( d4 P. U: y& B# G2 s
{
: o* a3 t: {( Q5 ]1 q+ a LPSKILL lpSkill = &(m_aJobSkill);) T0 R; s5 c9 U# K9 p% E
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 F4 u4 q5 I: J! _5 R {, f* i2 t6 j' o; v5 O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; S# q/ E5 r! z/ C1 r* R T: o6 V7 i
if( pSkillProp == NULL )
! f% ]' y, ~" h' J! _' e- W continue;
! h! Z/ B7 w( h* v& \9 ` if( pSkillProp->dwItemKind1 != JTYPE_MASTER)% w+ i+ e+ T$ ~+ k
continue;# D& {/ X1 g6 m$ s9 o) c0 s
lpSkill->dwLevel = 5;3 h( e; @" U% S3 C* ^
}
' C) X& m6 g7 A2 f0 ~6 o }
* f- Q$ [- o0 F& R( _ }
$ c/ S% t8 u! m5 H( f#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 b) c7 Z3 [ u/ a
if( bGamma ), }5 D% _' N; q* q; c
{
% k* [9 E" Q- S$ J3 i# n( e m_nExp1 = 0;
+ Y) j3 ~2 t* ~; b' n# m" N }
2 ?( R+ n) s1 N7 y# k' C) z/ Q7 T7 G3 X7 v
( (CUser*)this )->AddSetChangeJob( nJob );; ]6 ]: |& K2 D" h+ `
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 J. j; a3 y d W: j: u8 i
( d4 b) y7 \4 ]2 w
1 `6 B3 ~' x" h8 O4 i#if __VER >= 11 // __SYS_PLAYER_DATA0 s8 Q1 @+ R) w
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );* p$ q9 }. a% e7 q3 U& n. c
#else // __SYS_PLAYER_DATA; w b# o* h3 U: h9 N' _- A1 O3 u
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
0 x* ~5 d3 H/ `3 _' e/ O g_DPCoreClient.SendFriendChangeJob( (CUser*)this );& p: d8 p( v' J" a$ w
if( m_idGuild != 0 )
7 `7 F5 W& U: p- A6 U! g g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
5 R& ?& l( j* }" U" \ U( W4 f4 L#endif // __SYS_PLAYER_DATA/ Q5 e7 n$ l+ O6 f1 Y
SetHitPoint( GetMaxHitPoint() );
, h+ U0 k/ y9 D, G5 v0 l( H: c, |1 _ n SetManaPoint( GetMaxManaPoint() );& z" W o0 u: g% r5 e; I
SetFatiguePoint( GetMaxFatiguePoint() );
6 d8 U% l- j: j# ^ C if( nJob >= 1 && nJob <= 4 )) l4 l4 Y" n# Q# ^5 n
{
+ v# f4 r+ I2 l: O! |0 V6 x m_nStr = m_nSta = m_nDex = m_nInt = 15;
7 @2 N+ D' \# y- n; B$ C m_nRemainGP = 28;
( D2 J# w% g* T }1 t* X5 D+ |( y% F; W2 X8 n
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
: l* E+ q4 V. G) K6 r% `, K0 D6 Y {
1 Y8 a- S( F; k+ e" {1 V m_nRemainGP = 118;
# P7 ~- t2 @$ r( P //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;2 ?) X F- l) M4 @
m_nStr = m_nSta = m_nDex = m_nInt = 15;2 O- m8 S; [5 |$ R
}, _8 J: G, F1 a2 f3 ?. _
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
* Y# K5 U; b+ a) } Z {
7 j& g6 L/ W' u7 K" z CItemElem itemelem;+ r* T3 ~$ _7 x. V+ W4 P
itemelem.m_nItemNum = 1;0 G3 v4 {* s2 c" y2 h
itemelem.m_bCharged = TRUE;6 T& l+ F* x3 p% K P _6 W
BYTE nID;: T: C+ B* t4 b7 g' g' H
, `. d' w# j6 A$ ?' g7 f3 H if( nJob == JOB_MENTALIST_HERO )% B+ u0 ^! k z, W
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
: Q; H9 ~- t. ^% L, s6 h, ~ if( nJob == JOB_FORCEMASTER_HERO )6 K% R: [) B& b7 P( i+ f3 U
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; ~6 t/ K' t2 m% T4 T6 F) I; U
9 I# @* N" t9 p }/ d; q ( ( CUser*)this)->CreateItem( &itemelem, &nID );
% ^0 p* K3 o$ P& \: D; S! F" q }
; I% k! @! a( U( e1 I/ t g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
. E' w, X8 Q0 W& ^) q4 V ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
8 y0 |; H% B* F ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );# y* a. H( {5 G" Z; B m( b
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );3 K* p6 C4 @# L \
( (CUser*)this )->AddTaskBar();*/
# U8 V* j2 S* @4 ^6 n( K ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );. z& ]' q0 I9 d" V9 J% V
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?; h! [7 ~; y& L) c, B% d: N% N6 X; E
((CUser*)this)->CheckHonorStat();, N9 ^) {! m0 I' \3 p" V) C9 ~$ ?, ^
((CUser*)this)->AddHonorListAck();
8 V0 Y3 `1 f% F1 h2 Y g_UserMng.AddHonorTitleChange( this, m_nHonor);
: \) M; G8 \ y6 o#endif // __HONORABLE_TITLE // ′Tà?6 U/ I& E" M$ h: v8 w
}
1 f2 v. b; e* i: s J#endif // __WORLDSERVER
( q/ a: q: ^# t1 ~}
, r$ N+ e, }# g! v5 o% _' {( y% G, Y; T/ m& N( W9 t9 u7 p! k
然后你进入functextcmd.cpp并添加以下* o. E% N: i( G% ~( S
) o1 F1 q2 ?1 b2 a
代码:
9 w+ Q) M; J0 Q( a0 TON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )9 R8 Q. A: Y1 W8 Y. D% M
下面插入
; [5 D+ `! U4 S2 Z. AON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ' F) e; v( G Y9 F$ X j0 y9 @/ M) u# D
; V( u" ^+ K3 U3 k" M4 F2 }( k4 t( s
然后你去
3 y/ a% K/ }. j9 X- V
; V" \. r0 `7 _( {. s代码:$ }( F9 v5 x" E' k7 ?) J5 b
代码. R9 d2 c) Q6 \" E+ ^
BOOL TextCmd_ClearPropose( CScanner & s )& w8 z! p, ?7 L6 c! r l3 `& p9 f
{
4 W, p2 i# b+ k1 O: B8 a#ifdef __WORLDSERVER) |+ I# }! t A% X) Q
CUser* pUser = (CUser*)s.dwValue;# X, `: [* @4 D. j( T7 ?) E, v
g_dpDBClient.SendClearPropose();
8 v0 v- W- V, P9 @, P7 f" p! f#endif // __WORLDSERVER
! n/ c7 g% `6 d6 R$ A# r return TRUE;
2 _2 g% Z* k+ @( T}4 T/ q1 s4 H& J% o! E
下面插入
* @9 w9 p- ~. J+ w* j' }0 C3 K$ dBOOL TextCmd_rebirth( CScanner& scanner )
2 }6 H* h# P/ S! ?# o{
: Z% T9 Z. x: P#ifdef __WORLDSERVER
% F3 K* U! c1 \. PCUser *pUser;
2 v# e/ f1 M& u3 ~9 T; |pUser = (CUser*)scanner.dwValue;! n0 _! J9 X s5 t+ x
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
4 E% r$ N( C' c9 f1 tpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);, f8 {! Y6 d- l( M5 Q0 ~
else
: E* v$ J( m* O2 D& A% dpUser->AddText("你还未达到重生条件!");
4 R9 L5 y1 l! H9 o; G7 v#endif
# C) t, e" m: W5 T4 Q" Rreturn TRUE;, J& D4 {' q9 L
}
1 J% g# l# G! B( c
0 P7 y! v# F( m) O4 q, C7 y( U2 r7 K* }8 ?( _
; z0 R, V# q8 u; F7 A7 R% ]4 o
- e+ W/ Y; r& [, a
|
|