|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 c& G1 I- z! n3 o
2 z% Y4 u& t+ GMover.h4 u. U8 W2 C$ L
代码:
% z# l7 n6 H; o M4 s; W7 W找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
3 T- L3 o- I. |3 i6 j, P
/ |/ ~! F# s+ |! b" [" c1 S+ c9 Y下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
7 p) ^: Y- i: T- O, p$ Q8 Z8 m; D# S! l+ `, X# F
然后你去mover.cpp添加
" u8 F: n" \% B) s* E9 R' Z" t1 w5 V; F4 V2 V0 B
代码:4 e; K, {6 ?+ Z$ x" \ w
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )2 Z" m) I% y( b# h& M6 q" ~/ p) a
{9 ?6 w; F5 }" m) C1 l8 s9 j
#ifdef __WORLDSERVER% V5 c/ t! W5 ^; u( K7 x e0 |
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó ]3 N( W$ u! y5 E, `9 O' g7 \
MoverProp* pProp = GetProp();- |5 o0 C4 E- u" X. h0 u
if( pProp )6 E* P3 l) H6 o: X" L0 w
{( U/ \$ q! V$ W5 R/ A
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
8 @" I% } w! _5 G0 N7 T; V, N {, ` M" g" c4 x2 J
AddChangeJob( nJob );9 ^9 a- z- q) P m6 i1 g1 a+ L! R
}else{
# |5 k. W( f8 u/ E return;
0 A' W$ V+ T& @: r+ ~ r }
2 Y* G& t& ]( K* ~: J& `" K$ C4 w int nPoint = 0;
0 C5 ]$ j) S. D( s if( m_nJob == JOB_MERCENARY )3 l5 v1 T& P& B7 a7 g8 L6 X% Z4 V
nPoint += 40; O# S, ?+ S3 {
else if( m_nJob == JOB_ACROBAT ), O/ H1 \8 {7 } }
nPoint += 50;: Y8 X2 k7 ]1 o
else if( m_nJob == JOB_ASSIST )6 b# D5 [, Q& W+ j& t
nPoint += 60;% @ E. b. @% a& K
else if( m_nJob == JOB_MAGICIAN )
* y0 ^$ T0 O: |, s nPoint += 90;
: `# w" Y2 v% t& K/ ^% U else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
; N& v, N3 K& J nPoint += 120;2 m; L0 q* t' z: t* z; r
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ) U1 G) n. F0 \/ J+ |1 J4 y
nPoint += 150;% G$ w! s9 d3 r* x5 Z) G. ~
else if( m_nJob == JOB_RINGMASTER )5 r; z- V7 z0 Q# n% D
nPoint += 160;
" C9 O' x% z( X4 C* F: ]. m5 F else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), O0 Q, h6 j3 g( \
nPoint += 180;2 J% A; Y0 u5 s, v) ^ K. h% o4 o
else if( m_nJob == JOB_ELEMENTOR )
# ^3 H% y4 H( \" S nPoint += 390;
4 C" h. \* n1 P6 ]( \ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% y! r( E- V$ W" R3 `0 k! r
nPoint += 120;
- V, ~4 u+ c* \) r& V else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )/ p8 u3 O2 E. X% P& g! M# [. d
nPoint += 150;. I2 Y q: S) e& ?
else if( nJob == JOB_FLORIST_HERO )
1 @. O6 L2 x5 H: y4 B! N! | nPoint += 160;
$ S. K$ i# Y( [3 l2 X else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )0 p8 n5 t8 V% h6 }
nPoint += 180;
2 x: L, ^/ B- E3 @3 ? else if( nJob == JOB_ELEMENTORLORD_HERO ). f h/ v/ n& j
nPoint += 390;( d6 e+ I9 k. t, V" R
1 @2 H' V, Y& ]7 n( y AddSkillPoint( nPoint );# O, s5 S. y# [" Y
m_nLevel = nLevel;
5 {, L8 l T) d* \9 }% g; C8 V/ _! K3 l, E
SetJobLevel( nLevel, nJob );
8 K- `4 y" o2 A, L m_nDeathLevel = nLevel;
! M4 H4 T9 N6 i4 a6 L& }0 s#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 i% v, D2 S } if(IsMaster())9 y1 u3 g. A) X5 k
{
" H9 z0 O0 }# j7 } int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
K, p }$ F! O0 R/ @" |+ S% f% T& ?3 u if( nLevel > 59 && nLevel < 72 )
7 d1 s4 X5 l7 d% J dwTmpSkLevel = 1;6 ~; C- O7 e2 T: Z' Z, x: v/ M
else if( nLevel > 71 && nLevel < 84 )" `' _/ d {) N2 Z
dwTmpSkLevel = 2;2 F/ i0 B. p1 E M
else if( nLevel > 83 && nLevel < 96 )
! K# H- @ T$ w dwTmpSkLevel = 3;: k2 @' n" K9 n; a
else if( nLevel > 95 && nLevel < 108 )
6 Q1 Z# `) ~9 l9 z: T6 L; M dwTmpSkLevel = 4;
8 H/ \5 d" L5 | else if( nLevel > 107 && nLevel < 120 )4 G1 H8 J$ n. v
dwTmpSkLevel = 5;
3 Z/ g: a8 O5 r8 l8 x6 R for( int i = 0; i < MAX_SKILL_JOB; i++ )
. M* @$ L5 v5 A# b3 ]) ^2 W {
p) ]6 u* H0 n& A7 \6 } LPSKILL lpSkill = &(m_aJobSkill);
; w% H; d2 s0 j- h. p if( lpSkill && lpSkill->dwSkill != NULL_ID )' y) Y& n8 d n \3 d X8 q
{
7 ^2 @* f) n. e ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 x0 I4 j' C+ b: c if( pSkillProp == NULL )
' G3 B" `4 b% F/ y4 w continue;( T! s& r( b1 i2 k) i9 u7 O1 Z& V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! P6 }8 N+ e% p" ?0 d( c) T/ {5 } continue;. _' W- s( C1 f' j
lpSkill->dwLevel = dwTmpSkLevel;
! V1 J$ |6 ~( p7 Z; u4 ?0 n }
$ t1 l' h- p6 l9 R- | }
. X$ Y8 H. R ]) g# C5 e }5 L, p3 e: l% v* e) W$ R
else if(IsHero())
n* X& J- @9 C | {1 [& u- _/ [/ P6 n$ _
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! t/ F2 ?8 _) x; \* l
{
\! e2 s: N4 N LPSKILL lpSkill = &(m_aJobSkill);6 N P6 Y$ ?) r, d1 Z' N
if( lpSkill && lpSkill->dwSkill != NULL_ID )" k! n! c$ A( a) v
{$ P# ~0 e3 r* N/ H
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " j1 m3 k2 ^1 G5 F8 R
if( pSkillProp == NULL )2 F% p. \9 ?" O, Z0 d" d
continue;& y* Z) J# L, [# W; R, R: l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! s# [8 y! G2 m* g! G. }
continue;( |& w r4 i" i' {# Q6 S W; l
lpSkill->dwLevel = 5;$ g4 j5 R7 V, I7 i7 I1 ?; `
}: p. }/ `7 W9 j% w- V2 {
} d/ \7 e0 E7 y, p6 V, [. X( j
}
. q+ i* D) T- p7 j0 h else if(IsLegendHero())
+ a5 l( L# o5 @, F$ P {
1 y* Z2 V' m! `8 _9 C- d( L for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! n$ C3 L3 u+ u7 s. c. R& h+ x/ B: g
{ 8 o* Y6 j! V. B) `4 N" k
LPSKILL lpSkill = &(m_aJobSkill);( ~- B) _7 O; \; j6 k
if( lpSkill && lpSkill->dwSkill != NULL_ID )* W0 J8 ?/ @; a. f. p. _2 J1 A$ u
{
6 S! G6 K8 } e ~ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; O* q+ }6 n0 ?% `- y if( pSkillProp == NULL )
/ d* r( U5 n* C: J0 F Y3 { continue;
- J4 @0 Y# ?$ U% y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* @5 Z9 E, ^2 @ continue;: G" E: i+ a# X W- [ ~& x7 y
lpSkill->dwLevel = 5;
9 Z A3 @( T" G! Q# p" r& H }: X; w, \2 A, D$ @0 M" c
}4 I( M3 e% O4 [8 r1 V
} u8 U. q& I$ `5 d6 f
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
$ d8 a2 g2 j/ Z5 _; v if( bGamma )
$ p, _9 ^% j- }3 P9 x' w7 F w {
; |: }2 u) a1 p! I) D7 n- ^2 H! O: S m_nExp1 = 0; O; l' r1 u" \1 Q |1 V2 ?) X
} |. _5 l! k& ]' T# l% C% y
^1 W$ t/ J/ F+ M. k
( (CUser*)this )->AddSetChangeJob( nJob );
4 S$ |* N' z) h* _; w g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );- o+ o# k) F4 G+ N% {
/ B' f" w/ G' E i) {7 Z5 a
0 h) ?5 Z+ X# }; x+ E' [#if __VER >= 11 // __SYS_PLAYER_DATA
' N) E. D" O) K6 Q5 _! t) B* p g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
t5 \8 }( f$ f4 K0 o" Z) a6 _% q#else // __SYS_PLAYER_DATA& ~; W3 {) K" l [
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
8 Q+ c u9 D6 S& b3 Y g_DPCoreClient.SendFriendChangeJob( (CUser*)this ); W# \" Y5 x" r. U. e) e
if( m_idGuild != 0 )
/ m0 T5 L2 |" F T g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
& E E: q' I% r$ P#endif // __SYS_PLAYER_DATA g$ p d! n. K, h
SetHitPoint( GetMaxHitPoint() );
, _9 j4 a$ ]6 c6 u8 P( d) k; n" A [ SetManaPoint( GetMaxManaPoint() );5 }% I. W1 J) i& k$ G; R- @
SetFatiguePoint( GetMaxFatiguePoint() );
: P* x( Y" S4 [1 G1 ]& E( P9 J; P" Q if( nJob >= 1 && nJob <= 4 )
; y+ k8 l1 @$ Q2 |% B {. r x% C6 t" G* j6 O
m_nStr = m_nSta = m_nDex = m_nInt = 15;, L5 A8 F9 Y1 m9 J+ E; n" B0 O) \
m_nRemainGP = 28;3 y ^! o/ N: G
}# ]$ t _% a2 F& H+ Q% B2 ^
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )! g" n. z# g2 g# n+ E
{0 e; x5 B; o. K9 W* s) _8 f) z
m_nRemainGP = 118;) D d0 q8 p/ \+ u6 W# r
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
6 ]2 h" G& i" J" _ m_nStr = m_nSta = m_nDex = m_nInt = 15;6 i" _$ a" x y
}
# q% O9 I2 u) i0 `* w$ q if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
' N5 W1 {: a2 K" k$ y {
( [. d- m! g+ |5 |4 m CItemElem itemelem;4 ^4 }1 I8 w/ y3 |
itemelem.m_nItemNum = 1;4 e5 K% C' b8 E' M" A0 _
itemelem.m_bCharged = TRUE;5 C, M9 K) ^6 g! c% q
BYTE nID;
8 h' ^' @$ u3 Y& i! E! V
5 T) o( q' o& ~' F" F3 t if( nJob == JOB_MENTALIST_HERO ), \8 C& { v1 S. a: k
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
5 |9 f& c) t3 j) c if( nJob == JOB_FORCEMASTER_HERO )
5 L j4 @ ~. D itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;1 r4 j7 V: m# \; i5 N4 ~. \
! A; ^& r3 ]- e6 F0 O7 N
( ( CUser*)this)->CreateItem( &itemelem, &nID );
) L; P. F, P, r- p1 d }
2 F# H. |! f% B+ N g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); Y0 R7 N }+ ?7 E4 X6 S
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
3 J0 B/ I4 }- g H4 N ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );: f! ~3 p4 y" H2 s) `# `
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
3 C1 z; S2 |* ?) ?. c4 J ( (CUser*)this )->AddTaskBar();*/
4 U8 `) T& C8 o1 X/ Q) o- ? ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );: o' r9 h& H' d9 j l/ b, R
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?! l( b6 G, {# B) N* Z' ?) J
((CUser*)this)->CheckHonorStat();
* G1 R* C5 ]- q. D1 Z4 w ((CUser*)this)->AddHonorListAck();. A. n z; y$ A
g_UserMng.AddHonorTitleChange( this, m_nHonor);1 \" s0 o% D' D0 E7 v
#endif // __HONORABLE_TITLE // ′Tà?6 v9 K$ \. B% \$ N2 ^* q, V
}
' s0 D! u7 L- g$ {#endif // __WORLDSERVER
9 x7 r6 e! Q- t: ]8 p, k1 W$ m}
8 H o; M! L* f. f7 n. _1 g+ x9 v7 ]$ [ B0 U. E
然后你进入functextcmd.cpp并添加以下
2 e @4 [' o2 {
& P$ r9 b3 ?; k5 ?, ?! e" U2 ~8 r9 X代码:$ v( W8 p" \- K' c6 m g8 |5 c
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
0 W% R8 L5 [, b7 {& ?+ n下面插入
7 j# d( \8 i* D3 U3 d$ E$ SON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 8 A/ t% M$ z% F z) j
8 h% G5 Z. ?3 u! c, m3 d$ C
然后你去3 G1 E1 h7 K- \0 l6 G
" E0 y: n" ]( y' E4 C1 N' D
代码:& T; z% u) \5 e/ e
代码
' t1 c! j4 d3 j& j4 \BOOL TextCmd_ClearPropose( CScanner & s )
1 R( i6 I% s( `2 l# B{8 c- }5 _( L, I- h
#ifdef __WORLDSERVER5 x2 |, g: d6 [5 p- ~! v; ^& k
CUser* pUser = (CUser*)s.dwValue;
0 Z/ R* B& K, _' d4 s* P; k g_dpDBClient.SendClearPropose();6 U3 B" p( [- u( O0 h7 v0 X
#endif // __WORLDSERVER8 E3 j) w5 v5 X( W4 |
return TRUE;
4 T. S7 B# \, M- d3 R* r}9 W( o+ f6 q: ?8 m
下面插入
- h% ]5 q$ I }$ ^4 M' QBOOL TextCmd_rebirth( CScanner& scanner )
6 d# L/ l" H) e, M+ e% G{+ A3 {" N; j6 A" I `
#ifdef __WORLDSERVER
' v, I/ Y& H! S- OCUser *pUser;
$ J" \0 e/ v; x. H! c- s5 s+ W5 RpUser = (CUser*)scanner.dwValue;- l d0 j" Y: Z8 Q; K a
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
, \/ B4 Q* d( m# spUser->InitLevelPumbaaa( pUser->m_nJob-16,60);1 @8 ~3 o7 z" U+ O+ M/ e, w
else0 T8 ^" e- L% ?% Q' Z1 ^
pUser->AddText("你还未达到重生条件!");( U# N1 T& F& E
#endif" e9 Q* l3 a9 q$ ]
return TRUE;
1 `1 [7 D/ x$ Q) s}
# N4 e; W, g" v# K* ?+ L1 B4 q x* p( T% E( {* j9 A9 n
' c& q* I- I3 e0 z% ?6 A
( U j# }5 _8 F( k8 |; p: k; G) f4 O. y( _0 v
|
|