|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel4 T: s9 L2 l! I" b
' b* T+ S- h6 Z% T0 }& F
Mover.h
" \7 g3 c! C5 O: u代码:0 R1 q+ m0 U+ C
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
, g( `8 S% L! s8 `/ n- s% b
6 Q) c3 B1 F5 x9 u2 a下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; $ q3 U6 {9 W* T) L
4 M& V: ]7 E- m
然后你去mover.cpp添加9 q7 N: U5 X7 {$ G5 w7 V
4 Y$ I7 G! Y$ |$ e! M5 o! D1 C
代码:
( h; b$ Y* I( q2 z* {5 Jvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )4 J0 W' W O6 Y0 P" \2 |
{/ |. e1 E3 ~$ u4 ]
#ifdef __WORLDSERVER
; x5 o# u8 t5 f( `" g9 d // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 } ^8 P2 m' @/ l! r3 k9 ^ MoverProp* pProp = GetProp();% G: |' w9 q' o D @" F# C+ `
if( pProp )
* w! D4 @0 V9 P& B( q6 H3 J+ V {1 d. m* e9 i K0 r- j
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
2 s3 B% t& y$ R5 N {1 I1 h, O4 a% b4 T1 j
AddChangeJob( nJob ); c7 Q& Y/ W+ C4 [, ]) U0 t3 m+ @
}else{! J5 G, I( k2 ^9 J% Y2 N- s$ z# [
return;0 W, J! y- R5 g( P0 l
}4 w- `: X7 [# M9 Y# _! m7 k7 s& F
int nPoint = 0;8 s* Q5 [3 I3 i/ Z/ ^: r- L6 ^
if( m_nJob == JOB_MERCENARY )* D O0 s5 _ z- |4 ~( l+ {
nPoint += 40;
& @" v- @' D+ f% n+ i5 \5 J- g else if( m_nJob == JOB_ACROBAT )
! V: t1 t& d" e1 I% O" ? nPoint += 50;) S: b/ U7 M* [# e0 [) I' y
else if( m_nJob == JOB_ASSIST )
$ s. L% V& Q% R% L9 J nPoint += 60;
* ^0 d4 M3 W! |; W, A- F6 f else if( m_nJob == JOB_MAGICIAN ) h' V& k& @# E# J5 M+ r7 {8 k6 z
nPoint += 90;
) t$ }2 A5 P! }# `4 X! m3 M% k2 ] else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
9 O0 F' v1 T; C# z nPoint += 120;
) ~" a+ u& Z# b- B else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
8 m2 g, D* b) u- @ E$ E nPoint += 150;- |" O7 f& ~9 _, ~% w+ ~$ \) c1 f. e
else if( m_nJob == JOB_RINGMASTER )
6 [. _4 K% k2 U0 p. k* p7 } nPoint += 160;
8 k1 P3 n: B9 W6 f, l9 q9 ?* r( t else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
% G' O# ~! b T0 v nPoint += 180;
( U. ?- K% s6 _# k6 ^. Q( o% x else if( m_nJob == JOB_ELEMENTOR )4 V- d0 H2 v* M- K9 @$ t7 e
nPoint += 390;1 {, ^% y8 P2 V' p$ j6 c
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
0 z! [) [. H: a! k nPoint += 120;5 U# f9 d& K7 t; z
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ); o- z/ A% v% ]. ?8 f6 a' v2 Z8 {
nPoint += 150;0 ]* r; b# L5 Z% h* v- x6 [
else if( nJob == JOB_FLORIST_HERO )
) @3 g; i; S' U7 g2 ^$ v% Z. h% l nPoint += 160;
% ]' y1 S' M4 G3 ]6 I$ K else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
# D" X/ ?8 ~3 o2 k' Q7 ? nPoint += 180;: ~& z; u5 _5 v; v! q
else if( nJob == JOB_ELEMENTORLORD_HERO )
! w E, K* c5 I+ v/ L% B7 Y5 \ nPoint += 390;0 B1 ?. A* P9 }( ^$ ~" `
& Q+ g A n- M9 d. [ AddSkillPoint( nPoint );2 W) {2 x! Z& H1 g2 e
m_nLevel = nLevel;
& P5 s# i6 M+ D9 i- q) ?9 d; N3 b* A1 S ]5 W7 n) t9 v7 Q/ t
SetJobLevel( nLevel, nJob );
& \# J8 X, ^5 d) R8 f7 e' ?$ u$ G2 ? m_nDeathLevel = nLevel;
5 P( U3 g5 u3 O8 N! \* L#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
- H/ s# a: g8 S3 R1 u; z if(IsMaster())
. A/ h! v; Z3 n4 f5 H {7 M: Z' v* t* p$ ~, e2 J
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1084 y" Q- B' _0 f" N M) L1 F
if( nLevel > 59 && nLevel < 72 ), z! r& i# C( F& @- a3 A
dwTmpSkLevel = 1;
' { u! Z* `6 B7 f/ N7 M6 v: H else if( nLevel > 71 && nLevel < 84 )
. w, |4 I# z! ?" y2 H C dwTmpSkLevel = 2;
5 J' n, \& J9 S+ Q. w8 v9 c else if( nLevel > 83 && nLevel < 96 )" m+ |0 `5 m' v% _
dwTmpSkLevel = 3;6 O. j* h: S3 |( K# y
else if( nLevel > 95 && nLevel < 108 )5 X- h6 u2 _3 G$ L2 f8 G
dwTmpSkLevel = 4;- A) x2 h% \# f" W
else if( nLevel > 107 && nLevel < 120 )6 I; H& K. F0 N
dwTmpSkLevel = 5;
9 A E& e2 ^: ^; G- ^2 R for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 V+ m& @8 J& H" n {
7 _! k4 D- n9 A2 f' C LPSKILL lpSkill = &(m_aJobSkill);
0 j7 w% D5 x# d. l! K* | if( lpSkill && lpSkill->dwSkill != NULL_ID )( x, S( u3 A! Y% l
{* U# }+ T' f( D8 B
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . L( {& ~: t: C
if( pSkillProp == NULL )
Q- t8 i! H) E7 d1 O6 H continue;
: y) |% d: B( `! d' s if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 x0 p3 ?" E) w! c3 V5 E: b continue;5 g6 W1 u9 u" }6 l& H+ Z
lpSkill->dwLevel = dwTmpSkLevel;
: |8 V% f$ r4 F0 @& U$ h4 n$ E } ^; Q: x7 @* D, V- B& a- F8 f
}
O. U/ g" K- y" x$ Y' H2 W1 |% x }
- J8 B2 G \1 }9 s: J else if(IsHero()), v6 u* ~& \6 R% W$ W( x
{
- i3 G s5 _- J+ h& j: b( a5 k for( int i = 0; i < MAX_SKILL_JOB; i++ ) & y1 Y* q) t! g/ j5 n2 U
{ 3 v3 s7 k+ F: V
LPSKILL lpSkill = &(m_aJobSkill);3 @) m8 M+ X+ B4 _+ O- d
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 I6 Q% {' M' ]7 _2 s/ H1 m {8 N8 l: h8 n! B9 A
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* ~. R! f. d$ t: {; {2 j, z if( pSkillProp == NULL )! v" q% z0 i) i( w
continue;
1 P. U' v: V( s' B* `+ H! E if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& f. j& T8 }+ q5 C: W3 p) h continue;, M1 D. E, Q# Z; o4 V4 \9 M9 ]) q
lpSkill->dwLevel = 5;8 ~3 h) a3 S8 J7 A; d2 J- v
}
- _" s, w E5 G; m/ U/ y7 A }8 o* E, b4 Y( O( `* p
}
* U$ x" F7 ^* E' X else if(IsLegendHero())
( M5 ]2 s8 o% H$ ^9 b {
) Z u+ W7 \' _! I for( int i = 0; i < MAX_SKILL_JOB; i++ ) % k' p7 P! W3 Y& k0 }
{ M$ k' q' Y% M! q0 H( C+ R4 Q1 T
LPSKILL lpSkill = &(m_aJobSkill);/ A$ D* T7 D d7 H$ K
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 F0 o( t9 Z5 C6 L- ~ M8 x( E5 H {
! U* Q+ p3 G% J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); |: X | k6 z) w
if( pSkillProp == NULL )+ _9 c, e/ I4 i0 d
continue;$ H: i4 C ?/ S6 D# m
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- t# }- b8 q) f
continue;3 \/ r5 T7 r5 }! d7 G) D4 Y
lpSkill->dwLevel = 5;
# c% M7 X8 N9 [/ J }
5 l4 S; t0 |6 g) f; U5 e }1 j* C9 y+ L0 I) {, }- w( V9 f. A6 q
}
% @4 I, {& f& x0 W: q#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# X+ ?# N7 Q9 ?4 Z6 t
if( bGamma )- m# @. W3 N' Z g
{6 D d E8 g! c2 s
m_nExp1 = 0; ]. g: w6 j2 E3 P. R1 W% C/ }
}
. t+ v. w& F1 }7 ]- m" z! t8 v. n9 X! H& \4 e S
( (CUser*)this )->AddSetChangeJob( nJob );+ k c9 q ^ x
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );$ E/ @& }1 n0 x" r+ y# m# v: c3 M
, |3 q0 k! c0 s$ s& A* w5 y8 t% L7 x' h i
#if __VER >= 11 // __SYS_PLAYER_DATA: i) b6 u7 x. h& ]5 b" f$ v$ w
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );( e) W- J% i( m$ Z- h
#else // __SYS_PLAYER_DATA
/ g3 E: x+ b, W* ] g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
; g6 Z* X7 v8 Y4 w& r+ o$ a+ ]# F g_DPCoreClient.SendFriendChangeJob( (CUser*)this );5 l! m2 Q% N$ \
if( m_idGuild != 0 )3 ~# ?- n2 ^0 j
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
' Y+ \4 i e% h1 Z8 N! U#endif // __SYS_PLAYER_DATA
$ ^/ _. x |% k& |" d+ y1 N. [0 `! f SetHitPoint( GetMaxHitPoint() );
6 ]% n T9 F( C' c' U3 L SetManaPoint( GetMaxManaPoint() );
$ ?0 O. O9 ?8 y) E SetFatiguePoint( GetMaxFatiguePoint() );
C% z' ?1 a' Z if( nJob >= 1 && nJob <= 4 )
, ^: E) R" k8 t; o( s+ v {# S7 ^- R; m8 E6 h' ` ]
m_nStr = m_nSta = m_nDex = m_nInt = 15;# B& j( C4 P0 s; W" x& `
m_nRemainGP = 28;! b+ l& g. m) f( J9 k
}
, c' H2 P0 z3 Y3 y: H if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- O8 [; T ]$ J5 }5 Y
{6 Y; O# U+ V% v7 o$ F7 Z) U* ? @
m_nRemainGP = 118;9 [8 R# o$ O1 G
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;: H' f. F) [. |0 c) U* x
m_nStr = m_nSta = m_nDex = m_nInt = 15;: x. @. m$ R4 W& j) z
}
" b2 i- f* h. F* J; s7 A W5 o/ S if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )" W" H p A5 r& T- ~0 ?
{$ M& x6 M- J+ A6 V# S p; C
CItemElem itemelem;
3 a* d- F* O( {8 F; T itemelem.m_nItemNum = 1;
1 n" N7 F$ _! R3 n8 `9 R: Y3 L itemelem.m_bCharged = TRUE;! s( E9 w5 K! t
BYTE nID;
5 v( l; ^4 o3 x( S; ~9 B
* T2 X2 n# l" k; `: }2 Q if( nJob == JOB_MENTALIST_HERO ); H/ n' m' ?% n
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;! @- L1 H0 A/ d6 C# w/ k4 Z
if( nJob == JOB_FORCEMASTER_HERO )) |# Y) E% `4 W. @
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;" o( i- ]% }# T# H# R$ L
+ L) j1 v7 J, S9 ^& I
( ( CUser*)this)->CreateItem( &itemelem, &nID );
* e8 @+ M; u, [4 W }
; a2 j9 E% M# X g_UserMng.AddSetLevel( this, (WORD)m_nLevel );; K2 ?2 a0 M$ ]4 j
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
5 F' @) H1 Q8 }0 {( x( ~ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
" B4 }. w4 z1 J! L* s$ G2 @ /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 n* d' }, L9 P+ t5 S6 K" V
( (CUser*)this )->AddTaskBar();*/# A" L. r$ T) o( n5 {- L1 M
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );1 i3 }5 M+ a6 d3 ]) j! w, N8 i5 z! e
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
- ~2 v8 N1 S! e- r$ m3 ~ ((CUser*)this)->CheckHonorStat();
0 b! j3 Z& }/ j. j& ^! U! U! A- H z$ U ((CUser*)this)->AddHonorListAck(); v+ C& Z" M! G6 \% N& o
g_UserMng.AddHonorTitleChange( this, m_nHonor);
* u& J O; W J: h& a! `#endif // __HONORABLE_TITLE // ′Tà?
2 T( l5 z( ~+ F7 J, o& }. K( r }
1 D5 S' y% b! Y9 ^/ Q9 a#endif // __WORLDSERVER
( z- R, \: J8 u, i% i. a}
+ @8 r0 p, c* N |, Z+ W2 _2 i. a! }
然后你进入functextcmd.cpp并添加以下9 f/ Q$ H' D+ J* y1 R
) A; ?( j: x0 v6 g6 n
代码:% h) z! _. h' M/ z$ L! Q4 L
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )- @9 D, v- `3 S2 }8 s
下面插入
6 x v, E& L9 m# V; N1 Z2 s; vON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) / \) ^) ^3 L* K4 [, t! `/ T( M
1 Q' u2 o: ~5 {/ u) w
然后你去
9 @' e& k* y* d3 Z s% j D: k& Z, j4 I$ H: \ K5 u
代码:
4 s* \- f: f% V9 e代码
7 b8 L$ k" g) {# hBOOL TextCmd_ClearPropose( CScanner & s )
2 \& f8 Q* s/ b+ v) _$ a, _{8 ?1 p+ t+ S! Q3 o* Q# S
#ifdef __WORLDSERVER8 a& i5 U: X1 `1 K/ N
CUser* pUser = (CUser*)s.dwValue;8 J* f$ w' T: @$ H: `( j) J
g_dpDBClient.SendClearPropose();
! X( a% X3 f& ^( M, ^#endif // __WORLDSERVER5 ?) i, Y) U2 b5 T( q0 A7 Q0 ~
return TRUE;1 G N5 q+ x3 C7 V6 F# z X
}# E) O. j( W8 I& Z8 v) v( I
下面插入4 _, I0 M0 O+ ^0 x. C8 N1 H7 l* }$ w/ y% o
BOOL TextCmd_rebirth( CScanner& scanner )
. ?: e0 Y P1 g8 E2 k! J: o{
3 ~/ Z/ b7 y* T1 }9 t#ifdef __WORLDSERVER
" I" a3 h8 Q9 E5 PCUser *pUser;( M! ` u' U$ e+ i$ b
pUser = (CUser*)scanner.dwValue;+ ^0 H; n, e- m+ v
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( S2 c$ v/ \& U4 D
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
T2 p1 C9 u, Z a4 melse
1 W+ l% H# V) g3 PpUser->AddText("你还未达到重生条件!");
* l! m" s* E" x4 l& V: }#endif7 P' Q2 s- K9 q. z+ `/ A B
return TRUE;
+ k# t4 p4 E2 R2 g: c) Z. ]} 9 \& Q% k( H# Z2 _" U% y
5 M+ D3 Q b* g5 l v4 N+ U9 F$ ?
' q. X3 f6 ~; |4 B* q; H
) p: x* B7 i5 h- |; Q4 U4 A
; q( W8 P4 t2 {6 h+ q |
|