|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel K4 T" o9 F4 Z* O2 ]( M, U" R
( \7 V. }$ @# \
Mover.h: @$ H- o- ?( e" u1 C2 F1 k; T8 q
代码:
9 o+ Q* w) I0 y ^找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
. ^& K- u) q+ d5 V) D, k" t
, q( ?) e, q6 j1 K; D下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 p; ~+ l6 k+ `6 h1 a/ W1 f" G
9 b, C, D) l B
然后你去mover.cpp添加
# f0 T) t. e7 V3 @/ c+ { g0 _3 B! {5 e g+ |$ q, k8 d! u: g
代码:
: \7 O* E x9 \; X, k3 z1 O! [void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )8 X" w/ e5 ^% m F3 s; o( m1 C) H/ u* N* i
{' { v9 m& W7 J! t8 v
#ifdef __WORLDSERVER
) b( M+ f+ \$ t // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó% O2 ` [2 n. O6 b' ~+ J7 [
MoverProp* pProp = GetProp();6 z- ?0 u+ S% g8 {& v2 Y. W
if( pProp )5 N9 N7 a. f2 Z2 Z9 Q
{# K0 O* ~* a: { c E; X2 j- r& E
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
9 f3 t/ R0 L6 a8 a0 f {
3 S5 |) O# M6 h C AddChangeJob( nJob );# ]* K0 I; |% |6 p
}else{
' \) B8 S9 n8 C9 o& g return;' R& y) }' i2 x8 A
}5 ?& R# s' i" L0 @3 b4 Q
int nPoint = 0;3 `& j5 {) K! \8 m
if( m_nJob == JOB_MERCENARY ). D0 k& }- l# @2 B: Z% S Y
nPoint += 40;
4 ?( g% I' ?/ W8 R- I else if( m_nJob == JOB_ACROBAT )
8 O% o; }# Y0 u nPoint += 50;
: M, [' Q( r) \' c$ W- x5 P) ?: z- P else if( m_nJob == JOB_ASSIST )
3 }! c: v4 O! r9 X nPoint += 60;
3 h0 s. }2 ?/ G( @: K else if( m_nJob == JOB_MAGICIAN )- S( f4 u+ E8 M. A8 k0 i
nPoint += 90;* t @3 Z$ L" d+ _% x) j
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )' K" a+ V; N# w* \! ^" \
nPoint += 120;" ?) Y# L- e' C; Z$ A( \
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )$ C6 O- i* l# t0 q4 @- c2 o
nPoint += 150;
1 w1 j) Y* U% T6 S, Y) U else if( m_nJob == JOB_RINGMASTER )* h, Z6 m% |- n$ U. V
nPoint += 160;
; g: Y/ i5 @* G" h else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
1 c% r* k8 l2 i) m. I$ C+ @) ` nPoint += 180;
* ]" d6 Z- M# _' U/ @4 J% H7 l else if( m_nJob == JOB_ELEMENTOR )6 v& }9 w& }6 M& H! y' Y0 n3 v
nPoint += 390;
; k4 v/ l4 g/ y0 P9 S9 W5 N5 D- _3 S else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
v) J& N' @; X2 i nPoint += 120;
+ Q+ D: s& w# R' G' l' c6 S else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ) l. d5 O$ o% {3 X
nPoint += 150;! }9 [# m2 ] C3 y
else if( nJob == JOB_FLORIST_HERO )
+ Y' l1 t9 M. R2 Q/ ^! ? o nPoint += 160;2 Q7 Z+ J# `3 }# }, X6 m
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )3 H% J' s% i# Z& ^5 V2 o
nPoint += 180;
7 Z3 u3 K3 [* P5 I. P. L else if( nJob == JOB_ELEMENTORLORD_HERO )3 N' I* O4 ~4 ]# V% p* s2 f/ A% I1 e
nPoint += 390;
4 \& l% x, C+ {0 `9 F4 @* N
7 q5 c$ h3 `+ ~+ I8 u9 E$ D- U AddSkillPoint( nPoint );. m% Q: K$ k% ^9 W
m_nLevel = nLevel;
4 e8 A8 ?* v1 C) W2 {0 E+ L# ^/ \6 s: e+ V6 @( |
SetJobLevel( nLevel, nJob );- `' Q3 x! k {( r+ ~1 J
m_nDeathLevel = nLevel;" a5 S& [/ h8 m N; a1 l! J2 `8 X1 k
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
5 J2 T3 l* p3 a9 \! t: F- @9 F if(IsMaster())' M8 ]) k" @+ G& L- ?$ f
{3 n: `( ]3 E% Z. r! ^
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1081 t6 g! H3 v# S# R0 D3 D
if( nLevel > 59 && nLevel < 72 )
9 i4 K: d) A5 ^6 r" u8 C dwTmpSkLevel = 1;
: y% q0 N2 W4 C5 o. A! ` else if( nLevel > 71 && nLevel < 84 )
3 n: K; t# Z7 C1 A9 {' g' L dwTmpSkLevel = 2;
0 h/ b" [& ~1 q2 d7 H8 M" ~$ e6 f else if( nLevel > 83 && nLevel < 96 )1 j9 k+ K9 k! \
dwTmpSkLevel = 3;
8 K. w. e4 u5 L. V# b else if( nLevel > 95 && nLevel < 108 )% U/ \+ ^! o% w/ G- K# n- u
dwTmpSkLevel = 4;( I" ?2 a5 C k `: }6 L" N0 _
else if( nLevel > 107 && nLevel < 120 )
* w( P/ M/ H" M1 Q: V+ |" B% B1 w dwTmpSkLevel = 5;
. B( g9 X. n' ~* s: [+ A* x+ u7 H for( int i = 0; i < MAX_SKILL_JOB; i++ )
" [8 j- n1 W2 e3 u* t& P {
( t7 Y& N2 k( {3 @- i+ l: m. N LPSKILL lpSkill = &(m_aJobSkill);$ u5 h4 v2 f0 y. d& K; ~ j
if( lpSkill && lpSkill->dwSkill != NULL_ID ); ]2 ]2 h; S# c; S3 W6 O: ~
{
5 P6 ]. k* U; m) j ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 u9 X( l: _; M; U/ C7 S
if( pSkillProp == NULL )
! z" o' ~ G6 U9 L continue;
. V+ z" c6 N) f& s% Z& R- T if( pSkillProp->dwItemKind1 != JTYPE_MASTER). j2 i+ g7 {9 [) Y
continue;
3 G5 W2 f# W6 B5 H- _ lpSkill->dwLevel = dwTmpSkLevel;( X- S! d8 h+ a8 \' I; _* m! Q
}
: k, g* o* }. S8 `% v3 Y. ^ x }
7 z6 m& r, L+ ?( a2 h3 d/ h } B4 C1 r) r: K
else if(IsHero())
m, M% I; N; S" }0 C: t {
1 B( r: H: M8 B% a5 C b for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; |5 r- ?3 n9 l2 ~% p
{ " S& j7 j) S' U$ s
LPSKILL lpSkill = &(m_aJobSkill);9 F* n1 {" X# H* C1 D* x
if( lpSkill && lpSkill->dwSkill != NULL_ID )
_! {0 Y! O, \5 m7 @ {' b" k v- r- X7 G
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. ]9 {4 h: a* z& [" e* y if( pSkillProp == NULL )
# w: t9 S8 X/ l% s2 |6 }5 E continue;) J$ k5 @; A6 f+ W% G6 @# q
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)# z7 d% A3 Y& v/ e! ~ e
continue;
9 ]: i0 |- {; C; ~$ K% d# j4 a lpSkill->dwLevel = 5;7 W9 c# a z, E' A" {7 I
}
. `, Z4 a; q8 R# l9 T6 | }( i& d- t. }- k) P
}" O+ P6 y0 P/ ]2 u! ^# [7 A
else if(IsLegendHero())
1 N; o$ U8 V2 H# L2 t# ] {' H) Q6 W H. `# ~- H5 S8 R
for( int i = 0; i < MAX_SKILL_JOB; i++ )
' \) B6 y4 o: p { ) T$ b4 y1 d8 `' c
LPSKILL lpSkill = &(m_aJobSkill);
) s2 w* D. j' _+ f5 e2 R4 f( ^ if( lpSkill && lpSkill->dwSkill != NULL_ID )& e8 O" {3 T" b8 ^: ?9 {
{
1 q7 B( V6 F" j7 n8 E) r2 P+ g- R2 Q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, B4 s, R. L# W1 e8 k3 T7 ^" Y if( pSkillProp == NULL )
+ @' z* L R2 U: H/ y continue;
* l7 e6 e/ d, z- o if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 D3 m- E9 d3 ~, e continue;( g" w) d3 W7 A4 L" C Z X
lpSkill->dwLevel = 5;
+ q& y4 g# m U3 x" N }
0 R; I, O2 q _ }9 _: m6 [# h' `# x6 M3 d! }6 u
}! }0 |! M3 B4 @0 W) v
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans' O4 D% \/ m' }3 I. X6 M$ O
if( bGamma )" }" q: Y% C* c( g
{
9 R" k2 B, _' Z7 S% N$ h: h3 \ m_nExp1 = 0;
; J7 S8 U8 v# M0 s/ U }
; L( s' H$ Q Y* m; F+ @7 M2 }2 L1 t) O
( (CUser*)this )->AddSetChangeJob( nJob ); z; |, r- A3 q6 f7 O
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
7 `8 e0 @' R* x$ Y& E: ?. _" ]
1 _& {5 ^0 f1 h! u& T3 g7 l$ R* Y9 H1 w9 E' y+ |
#if __VER >= 11 // __SYS_PLAYER_DATA
6 J9 T" G1 L4 }3 ? g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
8 [. ?% p- a) \* q#else // __SYS_PLAYER_DATA) i) B; q0 f @0 N
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );' X' F8 U! @% ]/ U
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
( T3 i) v2 ?1 D- M' Q if( m_idGuild != 0 )7 s$ [3 ]- I5 w8 z$ j7 n. j$ p5 b
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );* e6 X# S7 ~1 B- W$ M: J7 c3 d
#endif // __SYS_PLAYER_DATA: H5 K( M* _; |* k y* @
SetHitPoint( GetMaxHitPoint() );- t" i Z0 d7 F; O6 H2 |5 f( M
SetManaPoint( GetMaxManaPoint() );
3 ~ X/ L) R4 n SetFatiguePoint( GetMaxFatiguePoint() );6 W5 ]9 l' P8 H# d4 y* Y
if( nJob >= 1 && nJob <= 4 )% `% f$ I5 Y- a& n; K+ D
{% O8 J3 j0 ?. v# X+ P4 S" _
m_nStr = m_nSta = m_nDex = m_nInt = 15;
0 i# }% S4 d0 R' z+ j m_nRemainGP = 28;$ f) A2 I8 M! t* {; R
}6 z$ G1 C% _# f7 e
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ), f) m$ X* L: d3 s! ]+ O, c
{
, Y& y! h* s2 i1 a5 d m_nRemainGP = 118;6 n5 U9 h; m! D1 L. K2 k9 Y
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;4 U# h: `3 b& \% F0 v
m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 y/ D9 j! @3 n) v/ G0 t( _ } a' P7 s* E6 ]1 B( G, d
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )4 e! d E3 j! r! {
{
7 H! i) D$ z8 N- S7 } CItemElem itemelem;
0 ]. a- I" t% c itemelem.m_nItemNum = 1;
/ X( C4 O+ L4 t' V2 _ itemelem.m_bCharged = TRUE;% Y% z, C* ~- J% K! Y! l$ w0 m
BYTE nID;
; L1 z3 q+ u% ]& a9 q
' x" |1 z! z3 _2 v. o2 D5 Z+ I' O if( nJob == JOB_MENTALIST_HERO )" N: V+ l* g/ R
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;: ?' `/ v: B& Y. p" g9 }
if( nJob == JOB_FORCEMASTER_HERO )
4 } Y8 E! ]% q- s8 Q' M itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;# x4 [: t1 l! A) \. W! w4 K
8 k+ j" D9 n0 D* C* T$ S7 g! j& R2 A ( ( CUser*)this)->CreateItem( &itemelem, &nID );
( i! r7 a g1 d ^* [ }
1 ^3 A1 \9 A4 {% g3 I3 ~ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );; i4 G( K, I5 }& n) P* ]
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
. p. i( }3 | }+ A7 E( B ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
% Y4 U! K- w$ y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
+ @& g3 U/ c! d+ ?1 ?4 t ( (CUser*)this )->AddTaskBar();*/
5 x6 u8 E" a% o! ] ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
' n5 I6 w9 \6 |, I0 _#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?3 B* x/ ^8 i' s' U
((CUser*)this)->CheckHonorStat();
* ?$ O, k! d& t3 T* I3 O ((CUser*)this)->AddHonorListAck();
# q. j, @* {! V/ d9 e g_UserMng.AddHonorTitleChange( this, m_nHonor);: l1 x* s2 ~* F9 _2 F" O( _) E8 V6 l
#endif // __HONORABLE_TITLE // ′Tà?
& m, m5 A6 v! p5 L: z" Z0 ^ i }
9 g. x/ k# `+ S, X$ c#endif // __WORLDSERVER
Y. _) ~+ x+ I! ]}
, x8 B0 c6 @. n/ P) X* @1 q5 F; q8 ], S: |: n+ d; e U/ [% E1 E
然后你进入functextcmd.cpp并添加以下
* A& O% _6 w7 q5 H5 }; B8 d; {7 |& m" e' l/ r! a4 v2 q
代码:
$ G9 ^0 `+ w, H. QON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
5 t6 y2 A% ^, q下面插入+ }& j- \; i6 a: W: m1 S
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) & D9 K6 d& X/ x2 C" a, ~+ \) c
B( ?! y6 C# L
然后你去# x F, \% l0 U. o5 f7 }2 I7 B* q
1 n9 Q$ l, F) ?" A
代码:/ Z1 q& i) y* d3 A, k/ K
代码
2 M. P, f1 ^& y* }" Y7 ?( S3 hBOOL TextCmd_ClearPropose( CScanner & s ), A9 h% g# Q! M. }" q; j
{# }) }" L, ^9 {$ D, F6 u0 c
#ifdef __WORLDSERVER3 w6 a1 W5 C. A
CUser* pUser = (CUser*)s.dwValue;
! b& L0 B6 g& z; `( _. t) N g_dpDBClient.SendClearPropose();
3 H. Z+ V3 @7 h0 t#endif // __WORLDSERVER
+ x; E+ ~% p( g' ?) g6 y; K- f return TRUE;
. F( K3 Y6 v3 U5 Q" M}. I7 b! V1 _$ P& o* K
下面插入
9 ^. C X; |0 |BOOL TextCmd_rebirth( CScanner& scanner )
3 f! ^: g, O( Y. w b# a{; ~8 B1 g/ M% t0 J6 J( W
#ifdef __WORLDSERVER4 z# N8 i; w# u" ^3 n6 g5 g7 m5 ^
CUser *pUser;
0 N/ M& f& G, r' J) ?6 bpUser = (CUser*)scanner.dwValue;
% `8 M \& E, s9 \1 e8 g+ }8 b7 i3 Wif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())) k1 H _* c4 R# n+ R3 m( a
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
$ S$ |5 F2 k! e5 I! N. e0 }else# U/ k3 W! H) S% R; w
pUser->AddText("你还未达到重生条件!");
5 M3 @& Y! E0 h+ O0 W! L/ L#endif
' R1 `0 K" F' l$ mreturn TRUE;: c- i* C, f9 }( Y. e9 ]
} 6 t( O8 p$ y3 ] z* d: t# n
' W/ [$ z. j" l
7 `) D& B* F: H- I$ k8 U. t4 k4 p* k4 M i+ [ W! F
) R0 y4 A5 l% ~$ L9 F
|
|