|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel V+ S) U2 K: f7 p
/ X3 X8 M5 ?2 c' HMover.h
; E* w! W0 P: N0 O- g& N+ f代码:
$ `* q& \- \+ p$ n$ L找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü6 o5 Z H) T9 q
3 d# I. L2 Z2 V9 L: I# {
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; : X# K2 j4 S: y6 [9 x& o( u; ?
% `' w7 ~% b" z5 m4 V! n% g然后你去mover.cpp添加
+ G- o1 | _- \4 e) _2 Q2 ^/ H3 h' B" K
代码:: _" w/ l6 {; p! x: C( ~& S
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )$ x4 I, F7 g3 S6 b1 u F: C3 Z: E6 m
{
7 v4 V9 L/ @1 L( S/ X#ifdef __WORLDSERVER
8 [& A' f$ _4 d9 H4 }, Q2 A) S // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
. h8 r! i% I: @' A2 T MoverProp* pProp = GetProp();$ V% H2 P! n6 c% v
if( pProp )
7 w; g9 C$ C7 I {
& |$ W. n& }7 G4 g# o if( nJob > 0 && nJob < MAX_LEGEND_HERO )
3 y& j4 K; m5 w+ k" | {8 Y# f5 P5 w7 R1 o! ^5 H. r
AddChangeJob( nJob );
" v6 @4 D# [4 W1 ? }else{
1 X: I7 I( I i& R* M. S return;
6 w# O0 v2 O8 u. z4 F) u/ d }
! v& K( @6 O- F int nPoint = 0;: c9 S) M* h0 \# l- U" M
if( m_nJob == JOB_MERCENARY )
8 h* C; z! B4 w6 J nPoint += 40;
3 V6 |, a% ~/ E1 m9 [ else if( m_nJob == JOB_ACROBAT )4 E% ~7 V5 v+ y) L) M2 ^8 K0 z; b
nPoint += 50;; ^8 Q" L ]6 ]! ^+ Y
else if( m_nJob == JOB_ASSIST )
9 L1 D$ `, N0 z( A0 w" W& ]8 C nPoint += 60;
8 B1 G& H. ^4 w+ G- L1 K; I else if( m_nJob == JOB_MAGICIAN )& j* ]" n! N# V1 a) r
nPoint += 90;
" h3 _4 s9 [# d6 h* Y else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
7 g+ G% ]0 \# f0 C nPoint += 120;8 \4 Q, |2 _& e6 `4 k# V
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ) _/ G6 B8 a+ ?: o2 i
nPoint += 150;6 f; l- W( S6 `$ k! h+ s$ n) s$ i
else if( m_nJob == JOB_RINGMASTER )
. X+ w/ o) M) p( X, S& x nPoint += 160;, ] S& I7 z( e3 D1 e& W& o+ r
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
# X+ a: \1 x+ [ Y3 g nPoint += 180;/ {* y. b0 a2 r% d. m9 U1 R# t$ x
else if( m_nJob == JOB_ELEMENTOR )
! q( p- ^8 ~% t+ q3 w' w4 p9 s nPoint += 390;- o3 o( B" d: O r- |
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
4 G! u+ Y0 S- G- U; V: x" P6 V. e" s nPoint += 120;
( g: [9 F$ k/ S$ X4 h else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
$ O& G; F; @ ? nPoint += 150;
5 P; d2 A$ Q& t$ l else if( nJob == JOB_FLORIST_HERO )
" E3 g( g0 g5 ?+ w; Q- e! U nPoint += 160;) r0 e/ I3 u' J+ b- v
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
4 I4 D, I9 y! v9 |; {# G# x nPoint += 180;2 \! Y+ u# J4 i& U3 S/ P
else if( nJob == JOB_ELEMENTORLORD_HERO )0 b' ?' [: z/ x' S
nPoint += 390;* A/ t Z& M( N0 `" C
7 t4 `5 @4 {& i3 l AddSkillPoint( nPoint );
) r6 A2 w; n: X4 \6 a- D m_nLevel = nLevel;
- F9 @- z$ g9 n7 v, N7 V
9 F. j8 \# u s9 X/ E1 o SetJobLevel( nLevel, nJob );# i4 J: j Y- S7 x$ {
m_nDeathLevel = nLevel;% o/ v9 ~' v8 @1 {% T$ \
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 W5 x9 W2 {; G2 y1 q: ?$ |* D$ }
if(IsMaster())
" ?4 o B& k3 f% K6 C1 u {
: d1 ]9 Q; E/ |( G int dwTmpSkLevel = 1;//60, 72, 84, 96, 1085 X. g( B/ q6 Y* i* k* M6 L
if( nLevel > 59 && nLevel < 72 )# ]; v+ _/ c* n; `& d& e5 Y
dwTmpSkLevel = 1;& `( h8 R. h @3 v8 {* P
else if( nLevel > 71 && nLevel < 84 )
0 a/ G1 ? J5 A0 h, z% L, ? dwTmpSkLevel = 2;
# a4 S4 h4 P3 F8 z+ @ else if( nLevel > 83 && nLevel < 96 )
: X8 [* ~6 l$ G1 c# S+ i b$ w5 b u dwTmpSkLevel = 3; A: T$ `0 v) @
else if( nLevel > 95 && nLevel < 108 )
& K; ^& m, ~, o* U0 J2 ?1 I6 I2 e O dwTmpSkLevel = 4;
8 Y. J4 I: u }, R9 ^( f else if( nLevel > 107 && nLevel < 120 )+ i, X) l4 u' X! h
dwTmpSkLevel = 5;+ R1 w h1 @% Y. F2 }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ k' k7 g$ o9 {
{
2 D/ \: y! u2 n LPSKILL lpSkill = &(m_aJobSkill);, S9 p% R$ q. A/ {) u: M
if( lpSkill && lpSkill->dwSkill != NULL_ID )" Y1 r8 N9 k \' N0 D, d
{
8 K5 `! |7 \8 u* ?3 D ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 q" M8 e# E' J: S
if( pSkillProp == NULL )0 g# i2 l, d. N, e' M/ Z
continue;
# M# z8 t' c! j1 V6 a: @4 y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! U5 |+ o2 Y8 X2 @/ ]: |" B
continue;
: o8 Z5 a# X( F lpSkill->dwLevel = dwTmpSkLevel;* ?$ h# s) M( {
}- q& Y7 N4 t- ~! c! x# I
}
- x& u3 m- K9 v! k/ ? }: j0 L. j* C0 }
else if(IsHero()). J. c/ x# J0 A7 e2 \
{( P {1 @) T) f7 ~1 _
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 x0 z0 z/ k6 y! {* Q+ @( m# J {
4 h# G: b+ Q- w9 v7 g$ G LPSKILL lpSkill = &(m_aJobSkill); G' A/ Q4 h- c) t, y. g
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 U. h$ r5 c3 _( q
{
, m3 O% W6 d+ N' M# b ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + B9 x* q+ o8 h* t1 ^
if( pSkillProp == NULL )
! ?5 U n9 j+ M3 B5 \8 \6 B continue;, X4 h' j3 o' ^& W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 C! |; P5 O1 K8 J continue;- N. f: ?% |1 X% O" G3 p
lpSkill->dwLevel = 5;
8 [' P! \# Q F/ N+ z }
; U" s& p. `4 v }
( c, N' \( P1 [5 I$ g2 }/ N }" ?8 x% b5 [$ X' m1 {5 D) y( f
else if(IsLegendHero())
' }+ O$ E9 Y& o4 \+ i {! t9 u& ~! h9 B& K
for( int i = 0; i < MAX_SKILL_JOB; i++ )
) B9 e7 `7 d, k { 0 e# U, u' h2 s
LPSKILL lpSkill = &(m_aJobSkill);
& Y% w3 u8 o9 A. F$ |* v if( lpSkill && lpSkill->dwSkill != NULL_ID )/ o2 q" o* c) O. v( \( \
{
3 i, P# X$ U' U# g* [0 O o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( E. Q$ Q0 U0 ^, x( V2 A, y
if( pSkillProp == NULL )
) }% J8 n# \% H6 r0 T continue;2 X7 f6 _) P' A B, W7 c
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 x9 G$ g! i5 S7 w* L! P `% h+ R
continue;( c- F. [3 ?; Q4 _) \+ M" y! `3 X* F
lpSkill->dwLevel = 5;& N2 V! \/ n4 _5 q q) o. v& ^
}* U. {' n; b# e, Y5 s
}
2 e- W, ?: [, r4 P }4 r, M* F( M% L
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
$ O3 V) L, A7 E5 `' \, _8 X) Y if( bGamma )
% g7 }) `$ q: l1 _5 c {
. h. L1 V8 K+ q# {: r0 E* [ m_nExp1 = 0;
) D3 \, S. s B9 [+ B6 L5 N0 F }% C9 K8 @2 R; c9 L% Z* C
! Q0 X I' x( N ( (CUser*)this )->AddSetChangeJob( nJob );
( \8 z4 M7 d$ g, u) i1 b8 g g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );; L& L1 h. b' }+ e
: [ ?1 o" ?- B
) M6 C2 k0 I, K+ D0 Q#if __VER >= 11 // __SYS_PLAYER_DATA" f9 p) L' R2 h0 Z7 y- W
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
# U5 d7 a6 S0 U# ]+ L' V#else // __SYS_PLAYER_DATA; {* \( X- @3 V. s5 t
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
S; P6 v, ~% l. n% [% r/ r g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
2 @1 O- P1 b) B t7 V E$ V/ l/ Q! E- b if( m_idGuild != 0 )$ M' r5 H! m# d$ b5 P
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
" [" t* V: O1 h2 s0 X+ r#endif // __SYS_PLAYER_DATA) j W8 o, ?4 I; C
SetHitPoint( GetMaxHitPoint() );$ m' o8 h" S! c
SetManaPoint( GetMaxManaPoint() );" }0 O4 b/ a6 S# d
SetFatiguePoint( GetMaxFatiguePoint() );* {. r* q; q" I# _0 A$ p+ s
if( nJob >= 1 && nJob <= 4 )
8 O0 P7 k* y* E8 G: w4 d {
1 h, J( ]5 t+ F/ K m_nStr = m_nSta = m_nDex = m_nInt = 15;) k& }! Z* c/ u8 N2 G; \2 |# s
m_nRemainGP = 28;
6 |! l- t# [* f }3 Z; z- \* M6 P8 c' O7 X0 a$ B" C; w
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
& ~" x$ Z0 i3 f3 T; t+ {, }5 Z {
$ S, |. Z) `+ }* E5 ~ m_nRemainGP = 118;- a, T0 e% K' d& q# Q0 y; O8 {
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
$ h% ?/ r3 @2 F. T m_nStr = m_nSta = m_nDex = m_nInt = 15;* x/ b9 K7 x: s" o" A) h- R' X
}
/ x" h, j1 C4 x. O$ p/ z if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ) @7 }4 k* a7 Z% R+ J# U" \6 ^
{
6 `7 B5 o, |6 I% K( Q. Z4 ^" E: Q CItemElem itemelem;
3 K& ~; _% T4 M% f! s! o& M itemelem.m_nItemNum = 1;' S( M2 N0 A( d2 E) f% `
itemelem.m_bCharged = TRUE;7 ^7 ]; A* ^1 ]
BYTE nID;
A9 u W* b& ]* ?6 S! `/ s+ B1 H9 h) N8 H/ s0 }+ M- S6 M9 Y) j* l
if( nJob == JOB_MENTALIST_HERO )1 q% ]3 X# G- n9 Y
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
0 h& W) X2 ~8 L( } if( nJob == JOB_FORCEMASTER_HERO )
9 y3 I1 L8 k6 O/ N itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;* R- o' {$ h' w# c- d# u
s/ W8 E% q8 F7 } ( ( CUser*)this)->CreateItem( &itemelem, &nID );
4 p( D7 Y# e# Z( T& A }
+ v# P4 |, |/ I/ r8 p6 } g_UserMng.AddSetLevel( this, (WORD)m_nLevel );8 b) ]) i6 r! M% W8 C
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
& T' O2 i" { }5 B" s4 p/ r ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! A) Y" w( \+ A$ V1 R
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );! H! u+ ^& ?+ p* W, b/ z O
( (CUser*)this )->AddTaskBar();*/' ]: A& w1 d# Q) B# f
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
3 }; ^: A0 v; E#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
0 y- p' ^) ]: W2 @ ((CUser*)this)->CheckHonorStat();; D. f- a5 ^9 ^3 |, z' l- \
((CUser*)this)->AddHonorListAck();9 z1 p4 j" a, c8 U$ z
g_UserMng.AddHonorTitleChange( this, m_nHonor);8 k- ]6 `/ c1 o1 r
#endif // __HONORABLE_TITLE // ′Tà?% `. o. f% L, p: S
}( q( s3 z. f! ~' r
#endif // __WORLDSERVER6 k5 h" U% L0 n. w, ?1 |0 k
} ' P( a" E9 x. l) e" n. l
V3 a4 w# C) |+ L: M9 q
然后你进入functextcmd.cpp并添加以下5 j4 t3 Z r5 o$ s
9 {% C9 K/ L$ T) m/ q$ G代码:* [. e/ b0 J& E' @) D* x3 u. M
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )0 X$ }# P4 q6 E
下面插入
9 U, h4 Y" C0 H: w f% h) A9 CON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
& `- s* m5 S; y. J4 y$ Q! E7 u% m% F q# B/ H+ Q
然后你去
) V" M* w1 m6 }2 a/ E1 X1 s+ a9 w2 C; i+ s3 k
代码:& H+ _7 L+ F7 A {- _) h# t( D
代码- y6 o @5 Q9 R3 z& w: z; g
BOOL TextCmd_ClearPropose( CScanner & s )
3 h% l# ?/ f) J{7 K0 z2 T: M2 }' l% V! |5 y
#ifdef __WORLDSERVER
; Z( u" L3 X- Q CUser* pUser = (CUser*)s.dwValue;. q8 p) N% O# F$ F* n+ t
g_dpDBClient.SendClearPropose();& c2 y& p9 v; \/ l- z% L# ?3 M/ V
#endif // __WORLDSERVER
( O) h: B' `7 q) q/ a7 H) L" |( V return TRUE;7 ]' p6 R! m3 b; `1 R3 A, ]
}
& h) ?! ^ _- T' S0 p% \' {下面插入* K) \4 f! A$ D( |- H
BOOL TextCmd_rebirth( CScanner& scanner )/ H' O# K1 v: @$ D7 k% A- z; E
{+ c3 J. k' I! i. `+ ?
#ifdef __WORLDSERVER
' b" d9 B9 C9 O6 i. j3 p& D# G( fCUser *pUser;
! f9 B4 o7 h k" O) spUser = (CUser*)scanner.dwValue;! N1 s3 R* Z$ S1 o, [) ]4 v0 U
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( }0 M4 C) i% JpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);8 _" {" X0 x. m I7 c k7 D
else; \& \3 u- i; A0 Q% P
pUser->AddText("你还未达到重生条件!");
( A4 N0 N$ @( \8 A! q: c; h#endif
6 M, |6 X0 \# |/ W1 v3 nreturn TRUE;
7 Q9 h; T' {; q0 o' i8 U3 D' R}
& ~) P. J6 ]% ~9 G
4 l2 s& O2 C$ l/ O% N+ g) w
4 u8 e0 g7 B1 f9 @" I
& Q5 E z9 K f( E- s2 }$ _0 c
6 `1 Y4 a3 G# k |
|