|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel; z3 z- x! s+ _" f, V7 ^: A% I
- r/ M4 |$ m k
Mover.h: L# L* u$ u" t" L- U3 w) M
代码:. X0 @, h: C" U+ @/ E
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
Y, U" n2 u) e: h6 |9 n: F0 V% N$ m( H* Y& {: `
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 0 A, r( A1 _! `! B
) J3 l) U" }# y% V) A$ O" o
然后你去mover.cpp添加
1 I5 R x7 G% E. H5 {3 t* o0 _' _# D, W, B
代码:) m4 Q1 ]3 V% @3 R" j
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )$ ], J* Y/ g$ N
{6 {! @+ q- ]6 w6 t. B, G
#ifdef __WORLDSERVER
( l% u$ c! f$ q* v) F: o( {- ` // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" q; q% M" O( W! Q! O# [ MoverProp* pProp = GetProp();7 [* @/ I- M# \! N1 E
if( pProp )3 s% E$ Q2 K. `8 u- v
{
1 R6 m( C( q+ s+ W* @% m7 y* g8 p if( nJob > 0 && nJob < MAX_LEGEND_HERO )/ ]7 ]* b+ e+ W+ D* [6 X
{6 W( y& }1 n$ T5 P& C4 X$ N
AddChangeJob( nJob );, D$ b+ U N0 Y8 V+ \
}else{8 f' i- C2 t5 P
return;& [' e/ y+ e5 }. @5 A' ?- M' \
}# D: C" l9 @, ?; ^) G: @5 a
int nPoint = 0; D! x# B4 C+ f8 L5 a+ B& S* c0 G
if( m_nJob == JOB_MERCENARY )
& a4 { N/ _0 W8 Y5 ]8 m0 U9 K nPoint += 40;( n( a- \( _3 H r# T* J
else if( m_nJob == JOB_ACROBAT )
- p! M7 @3 W: n( p S) |% k nPoint += 50;
3 x7 V/ V* D5 J* i# s/ C- T/ [ else if( m_nJob == JOB_ASSIST )
j: z2 c8 u/ b4 Y) |+ }1 d nPoint += 60;
- u. a' x0 ?! ?7 U' h m% q else if( m_nJob == JOB_MAGICIAN )' i5 J$ Y0 u/ w% {! W
nPoint += 90;
7 u/ \$ m* ?2 i: B- w! n else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% e' O, @- E3 B1 G6 d nPoint += 120;" k/ l1 S- @1 E, }: W) J- N* P
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )% D: K( ?- q* u2 Y& g# C* z
nPoint += 150;
1 A+ \! O! W$ Y else if( m_nJob == JOB_RINGMASTER )
Z/ Y! C& p1 q! g8 m nPoint += 160;
$ S; o9 K# C; l! g% N4 v else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )$ `7 Z. e# b( i$ s* x+ x
nPoint += 180;
; Q) ~% X' e& q" l- N else if( m_nJob == JOB_ELEMENTOR )0 {5 K6 u! @+ a! G+ o* C. n
nPoint += 390;
0 U* @0 E5 Y7 m, W5 q: j else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
& Y. G4 ^, c- \! K' l2 L1 W! W" M nPoint += 120; u) Q k9 G" D8 M' e
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
$ o* d- P) l" K+ r3 w/ H; c nPoint += 150;8 O/ _ G# \" k& @0 N B* J
else if( nJob == JOB_FLORIST_HERO )
2 y3 a8 M$ c i; L4 \ nPoint += 160;8 b4 K: j) [: p" i% t! p: |
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )6 b$ @' o4 F e; x; F! {
nPoint += 180;
l9 E/ `( x& R! a! h3 y r else if( nJob == JOB_ELEMENTORLORD_HERO )8 o4 `+ {. S( o. ?# A4 Z
nPoint += 390;
) A: T( R i$ e, a) f" O
5 o- B' W6 R+ k8 T* [ [1 m7 p AddSkillPoint( nPoint );4 _9 |, @" \0 X
m_nLevel = nLevel;! d% q/ D1 Z p; _+ b, e3 m
; r: E/ V3 S/ _: H SetJobLevel( nLevel, nJob );
# f4 K4 l8 b" |$ }! I m_nDeathLevel = nLevel;
& m4 c+ s5 Y3 H6 C5 g#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; G( O! X {& |2 {, L5 Y
if(IsMaster()). I3 u. v2 w2 e" Z8 ] Y
{
( y' I3 o% J# n6 O g int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
2 M5 }% w7 Z# H9 _2 A5 w if( nLevel > 59 && nLevel < 72 )" F! N; S" ?: S/ S, m q0 `
dwTmpSkLevel = 1;$ P: t( j4 B. A5 a& ]7 w% ~% c
else if( nLevel > 71 && nLevel < 84 )/ w6 c) ?! A5 x
dwTmpSkLevel = 2;
" I* y- w1 u6 J* Y+ T8 q else if( nLevel > 83 && nLevel < 96 )- ]3 p% ]& p( M3 U0 _2 t
dwTmpSkLevel = 3;
* m$ U( b3 o* A3 [; b7 C4 a else if( nLevel > 95 && nLevel < 108 )
7 M/ q0 C$ |& B( b dwTmpSkLevel = 4;
5 q6 P, P/ E! D" A else if( nLevel > 107 && nLevel < 120 )
) R6 A# X( y5 S, [# n dwTmpSkLevel = 5;& T* i5 W' b8 [% J& ]" M
for( int i = 0; i < MAX_SKILL_JOB; i++ ) , s( f: G# G/ r+ W! |
{ ( c+ n8 L) p8 p8 ?# Q; H" z
LPSKILL lpSkill = &(m_aJobSkill);4 s4 B, h+ T% d' f" n2 M
if( lpSkill && lpSkill->dwSkill != NULL_ID )
; C7 P4 F( `6 J( p2 R {
9 s% T/ T) V n! N$ o3 Y G' w" p7 ^ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. H# s- i c [! e& l if( pSkillProp == NULL )! c1 i2 _& b. B% S& X. t
continue;# ?: ~ U" f4 h' U2 m* J
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 z! w7 y- d( ^
continue;6 y+ C* r, ^2 }9 } r2 W
lpSkill->dwLevel = dwTmpSkLevel;- ] ]) s2 N2 D' |* L. E
}* i' p0 H5 `/ M# S2 J* r( V& O3 W0 J
} C# U* S2 f2 \
}
" [% _3 |* C: z6 U else if(IsHero()): W" H$ u3 P& h/ Y
{
8 q$ k4 q: s4 D @( \# {: A for( int i = 0; i < MAX_SKILL_JOB; i++ ) . _" N- Y2 N$ A) v
{ 3 M4 I/ K9 Z- N6 q8 q4 p
LPSKILL lpSkill = &(m_aJobSkill);
" J8 ^5 V+ {" I/ y2 s0 b. o# n1 q if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 B' M- C# d- P4 m {% \+ l a1 H* ?' w8 ^3 T$ D
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 j3 O2 x7 O7 m& g1 [
if( pSkillProp == NULL )* b5 n* {9 B: ^) d' Q8 w
continue;
4 j! l* ~0 {. `( F/ d8 M, J if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! y W5 T5 U3 G. I% X1 k ~ continue;. R. N) r8 a; o
lpSkill->dwLevel = 5;- O& D7 p7 \1 D7 Q) C) j0 @
}
& K! v3 m2 x2 V3 G3 e }
3 [* Q7 m) y! e3 A }! A% U4 L. h! H" W& U1 g" h p
else if(IsLegendHero())+ D/ X9 s/ n$ W8 a h& F
{. W1 Z2 j$ w6 A# M4 I2 m: y
for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 n6 y8 G9 `- p+ J {
% A0 ~/ H5 }/ }/ ^& Q0 {: ^) W LPSKILL lpSkill = &(m_aJobSkill);$ t) N" D& W+ U/ a, q/ C
if( lpSkill && lpSkill->dwSkill != NULL_ID )# R8 ~7 E: I9 {. A7 S; B w
{
2 A8 x4 u& p* J# u6 i6 } ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * R/ Z. Z: _( V0 ^: T
if( pSkillProp == NULL )
) R4 s' X7 T B0 p continue;' d) H D' N: N" @! R4 m# T
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 }5 U5 z. N5 U* j( K continue;& h! D" g# P1 d3 d% e
lpSkill->dwLevel = 5;" T3 f, ?8 }8 b& I- X# u7 Q5 _
}
) t2 U2 Z4 F, @# S }
* I" [4 E$ J; a- b; B6 Z) {" Z: J. ` }
$ V6 q0 S& G% x6 f. j#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
' r8 ]1 l' {3 ]+ _( w7 @! z if( bGamma )4 A* u$ G, K b! F% C* h' w, i
{
9 P9 g/ } L# t* F5 { m_nExp1 = 0;
0 m7 @& a; R9 z" D7 C0 l }/ M0 w- |+ Q' M# K4 A7 C. a
; Z9 B2 d1 \9 @8 E, u8 u
( (CUser*)this )->AddSetChangeJob( nJob );& j d1 y" C9 |8 w4 ?7 c
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
+ W1 V4 F; Y$ _6 {% m/ {0 _- _( g- F* f/ w! t' j7 D) N" u
5 M: m W' i6 t/ G% m( a
#if __VER >= 11 // __SYS_PLAYER_DATA* c$ L, Q3 n/ Y( o, j
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
. W+ z1 t- x( f# m: v( |2 ~#else // __SYS_PLAYER_DATA9 P' ]( C, k- {) G/ D7 ]7 a$ k6 h
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );8 c$ p; P) S- D/ p
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
. i M4 J3 g% F9 i+ d$ X if( m_idGuild != 0 )3 j/ G3 g0 N+ o# S! d
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );; J0 f; w$ [' _
#endif // __SYS_PLAYER_DATA
! g# b' z$ [8 {# T5 } SetHitPoint( GetMaxHitPoint() );
s! u5 c! X; K9 Q0 w SetManaPoint( GetMaxManaPoint() );
1 a2 m4 L" l" y8 q7 X* d% e SetFatiguePoint( GetMaxFatiguePoint() );$ f; B8 `+ y/ Y* T# F
if( nJob >= 1 && nJob <= 4 )
2 R9 r* O5 o2 j; [4 Z1 L {
6 x; @4 M6 l, e, F! ? m_nStr = m_nSta = m_nDex = m_nInt = 15;; [7 N2 J; p% |* S
m_nRemainGP = 28;
" r& G6 X5 A$ S0 {+ M2 q }: W9 I4 d" _6 |* c0 f/ j4 Q% Z
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
% `0 _! o) H- N q/ E9 g7 C y% T3 c {( d" H2 v6 C; n
m_nRemainGP = 118;
3 ^! a9 r' e, L //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
3 h! Z" Q L; E m_nStr = m_nSta = m_nDex = m_nInt = 15;
( q, e* f: d4 u: ] }
+ u% {* f, [( x5 V0 S, W5 L if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )6 d9 b8 B8 C: c3 b6 l0 u$ R4 @
{1 {# ?% L) B' ^
CItemElem itemelem;
% z+ r ^9 T( `& @' b0 ^9 L itemelem.m_nItemNum = 1;, A {0 }) H. K# I
itemelem.m_bCharged = TRUE;
5 l+ W. M8 z; t9 \ P( ] BYTE nID;0 ?& Z# x! ]/ c, \9 o3 @2 j3 t" D3 J8 N V
e0 R G @* i( l2 W7 V c if( nJob == JOB_MENTALIST_HERO )0 ~+ G- c: Y% i4 e' z
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
+ T+ M" E( q/ M7 B x: Q8 D if( nJob == JOB_FORCEMASTER_HERO )( \1 [1 X0 G1 [% |
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;9 F M& {- ]4 _6 _
. P! j. l$ z; Y; D2 J6 M ( ( CUser*)this)->CreateItem( &itemelem, &nID );0 h9 e5 l/ z$ T
}
# K( d3 r3 N6 T) s& q; A g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
2 A* }; {8 ~: K& V$ ~. ?. M ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 h7 @' {# b0 Y% L/ }' v# t H2 F
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
! t/ I: [5 _" _$ W* @. e0 U3 q /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL ); e; u+ h. K" u! B
( (CUser*)this )->AddTaskBar();*/
+ [& i z6 j/ d, F) h5 K ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );7 t/ B' u" K. I/ V; Q! C
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
' g0 w9 G/ t( D9 z; ] ((CUser*)this)->CheckHonorStat();
% i- Y8 D+ {; E) g' _; B ((CUser*)this)->AddHonorListAck();5 e0 I) v Z7 I+ z2 P# [7 |3 _
g_UserMng.AddHonorTitleChange( this, m_nHonor);
+ | Y$ M9 y7 S5 h/ V#endif // __HONORABLE_TITLE // ′Tà?; U& j7 D% f& }3 {% D. `1 n) s
} z1 b/ p+ O6 w; O3 s* U$ q
#endif // __WORLDSERVER
- k# D# b! {4 p) s9 v} 3 U m2 a/ y2 k# g4 R0 P
" j8 ]2 l8 Z$ L. Q( N
然后你进入functextcmd.cpp并添加以下
# L& B+ b5 ?) G. i. \% U. d
2 v+ |1 B5 B5 W; z+ }) f代码:
! A- o9 f$ a! L7 U* M. VON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
1 _4 @4 ], V3 Y; d4 \下面插入
- l( U, \$ M8 c- g% RON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
# y: _+ N% W9 v. H6 d( u' }
. K! |" p6 Q9 ?- }! y然后你去
0 m; s- L' l2 c, H1 S1 m9 S: c5 F1 ?5 U1 {2 K
代码:2 f+ _1 g, g0 ?/ U% O/ J$ I2 D
代码
+ U3 ?& l8 I+ t. Q! sBOOL TextCmd_ClearPropose( CScanner & s )$ _6 x* J! b' L" g: l+ y2 J
{
7 {8 m6 A0 i; I. N0 G; r% A#ifdef __WORLDSERVER& \3 v0 V; P. S3 L" K) z
CUser* pUser = (CUser*)s.dwValue;) L7 C _; t& `% c; B8 v R
g_dpDBClient.SendClearPropose();" a V) ~) ^) I! X2 x2 w; P/ D) @
#endif // __WORLDSERVER
1 q, Z' F3 S" Q& o# x( | return TRUE;
! I; Y1 m- D8 A" r9 M, w U}" K' E2 l! [& D4 [
下面插入6 F- S/ r8 o: C3 {' F1 K0 Y/ g9 C
BOOL TextCmd_rebirth( CScanner& scanner )
. u9 f9 N# i$ f7 x: ^9 l6 i2 n{
9 y8 x9 e$ r. P9 X' n#ifdef __WORLDSERVER
0 L/ J+ t& g2 y3 i; mCUser *pUser;
/ r( G0 V3 ^1 L' j! c7 X* @pUser = (CUser*)scanner.dwValue;; Q7 |' S1 n1 F. I
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
1 \ ?' v7 R" TpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);7 f z5 o# L2 m7 A3 g7 [6 r y6 G
else
/ y7 {+ b5 [% d* RpUser->AddText("你还未达到重生条件!");$ C- J; e& c# D, V) Y
#endif1 A, t" \- y$ A# E7 R, ^
return TRUE;
& B& L1 Q& H7 b9 \2 J8 }3 n4 {} , A! c# I; i6 \6 k/ K
5 I6 a/ T5 ]6 b; v/ w2 w8 k& [' s& u/ r0 T
7 D5 |4 @( s' V" c$ ?
! g J2 y) h- E
|
|