|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
. _% e) n1 H! T3 p, m1 L! l0 ~ b( M7 l7 i4 N L! D' R
Mover.h
3 \. c4 \% N; Q- f4 H4 I代码:
3 _3 `& y2 f+ G" E% j2 c9 h找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü' M7 k& q7 g* S! I/ N
\' I) Y5 g/ x* D: l3 A" n, }' I
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
9 a4 |% l s& J5 v
( N' n" n( Q: j# @4 @5 {1 j然后你去mover.cpp添加' K: y6 z4 E# B
8 G9 \0 t- A, N9 u, N: r3 L# ~代码:
2 j- o, r( @, \% b6 I% V/ yvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )* w7 T m* t$ y
{
; a3 I# S/ o2 ]- v& O. g2 v#ifdef __WORLDSERVER( m, G* X/ U7 i3 B
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó$ ?' c3 q, L A% }7 K* I
MoverProp* pProp = GetProp();% T* J" ?2 \* C. a. M+ ^; [) n
if( pProp )' P" g8 K( e' ~ ~& r6 H
{
: a* t: b: F) y0 C) U; z if( nJob > 0 && nJob < MAX_LEGEND_HERO )
8 g8 V: Y$ x# x1 f {
* I8 H" \; v( R4 L4 t3 Z! R AddChangeJob( nJob );
6 n/ G/ X* t. M8 f% @( Z) \3 b }else{
. x" ~, l4 G0 T return;
' F1 e& O9 {7 y& K1 \5 U }& g$ L5 k- T5 d# d, ~
int nPoint = 0;& ]0 U# X w8 }' ~ o/ \
if( m_nJob == JOB_MERCENARY )
% u5 m' T- H: k: w# P* x nPoint += 40;
& D2 n! Z& V$ C else if( m_nJob == JOB_ACROBAT )
% t/ O- e* r& u8 g6 p6 v nPoint += 50;
4 h" h: m8 i9 W7 w8 X2 N1 L0 I% | else if( m_nJob == JOB_ASSIST )
- v6 C! S+ v6 R7 c% ^7 t# a nPoint += 60;* x: q$ V( ]5 W
else if( m_nJob == JOB_MAGICIAN )
0 s5 ~( R( w# u7 P; \' X* L nPoint += 90;# n# w+ y. ~& R# O
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )5 e% w4 G, ~8 g% x; I
nPoint += 120;
' M& e% ^$ L0 q; V4 O+ Z) K: L# F5 d else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
; z. q3 j, j! i* ~ nPoint += 150;
! K+ V6 G& g2 k( x C else if( m_nJob == JOB_RINGMASTER )
$ }; ^! X# g' Y; H \& X nPoint += 160;
f$ z3 d( z* ~( z. b3 O$ p else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )7 C7 G3 P% Y+ u
nPoint += 180;! j( I( C* Y+ m% S e2 k7 v# ~" U
else if( m_nJob == JOB_ELEMENTOR )* ]% M* U% v! `7 A9 x) X4 A
nPoint += 390;* \$ l! k/ M9 j7 N" t( c
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )8 G* t! R9 d' h/ a
nPoint += 120;) Q8 n" d; z7 A1 w; N4 Q& v, }
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )* e( b5 V' O# O8 W4 l) X* _
nPoint += 150;% H0 N) j! P7 u" e. E; j
else if( nJob == JOB_FLORIST_HERO )
8 k6 `5 T) I4 j' j- K9 U7 a, y nPoint += 160;0 W% G! [1 t% @
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ): D3 H. d; e4 W3 n! U
nPoint += 180;) G! O) K4 q8 y% u3 ?2 |
else if( nJob == JOB_ELEMENTORLORD_HERO )
) i/ r- i- K4 P4 Y nPoint += 390;
# a7 n- w: S, P9 Y& a7 U* U3 u- e! x4 w: `5 s) ?0 u
AddSkillPoint( nPoint );
# M a+ E# N. ]$ i& q' s' G m_nLevel = nLevel;6 n/ R- ]' M( b8 y. T- f; q
- g3 L" f- k* \& p. Y0 e# ~4 L' u# c SetJobLevel( nLevel, nJob );: Y% ~" _- ]6 {6 Z7 U0 B* `
m_nDeathLevel = nLevel;4 A5 ]8 h$ ~& f7 O" n8 D
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
& J9 B9 l ~5 x/ s, h9 g: j if(IsMaster())( Z5 I6 T% Y7 E2 S: W/ k6 O3 a
{
; t# Q8 U2 [ I* l" S, V; p+ C int dwTmpSkLevel = 1;//60, 72, 84, 96, 1080 M0 a K, e8 J6 F& f# l' S( t; Z4 u4 k
if( nLevel > 59 && nLevel < 72 )
% V' U! ~6 T/ X6 G) p M dwTmpSkLevel = 1;
0 b3 B9 F' ?( W else if( nLevel > 71 && nLevel < 84 )
6 y) ^# n( S- k: e' e; v& E5 M dwTmpSkLevel = 2;
3 b: i! G3 ?, t- i. P else if( nLevel > 83 && nLevel < 96 )/ A0 g. p- N" ^" C. w. a: z
dwTmpSkLevel = 3;
1 V O( j7 P; O# X8 ?5 U( t8 Y else if( nLevel > 95 && nLevel < 108 )+ S; b/ N, w: W2 p
dwTmpSkLevel = 4;0 R% s; B9 ]6 \+ m
else if( nLevel > 107 && nLevel < 120 )
: P4 C* p. I) t7 z dwTmpSkLevel = 5;
( |- t5 _& P+ _0 G% c7 d% a for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 B8 {) a' j5 @3 O: C { % A; H% `" C6 r$ F% U; q+ n
LPSKILL lpSkill = &(m_aJobSkill);
# Z) Y k1 D3 \ if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 e( ~0 X+ A1 r! _ {6 f9 A9 w: x- A4 y# y+ d/ d3 {
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) t5 c3 H: A( ~( r6 |9 b if( pSkillProp == NULL )
$ Y: {6 s5 B" @0 W1 R! ]4 B2 z continue;
: ?; G% m. N/ b f3 n5 G if( pSkillProp->dwItemKind1 != JTYPE_MASTER); S9 e3 |1 ~5 Z$ p9 e
continue;( t9 Z1 e7 h+ v/ }( C
lpSkill->dwLevel = dwTmpSkLevel;
% l, _% J' l3 ^3 Q/ V1 Z% i! M% H }
; p/ J/ y. s# J }
$ W( p7 S6 H( s }
$ r; T7 }5 S7 R# K else if(IsHero())
9 i" L9 a4 c) Q: V! `3 N9 L+ |) F {! U, T' N5 I! ]1 h! Z2 S' z: C: G
for( int i = 0; i < MAX_SKILL_JOB; i++ )
( M( h. D: Z" ^5 H$ @4 E& k7 l {
7 h' v. h$ a/ l9 a* D# W$ t LPSKILL lpSkill = &(m_aJobSkill);
* R- K3 o( Y c: E0 ~3 @5 ^3 z if( lpSkill && lpSkill->dwSkill != NULL_ID ) {& g I" k; j2 l) `7 }( Z
{# v# \) m, e' ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! Q/ K0 e6 n# |$ P4 {
if( pSkillProp == NULL )/ u' [9 L5 O7 e/ @7 A+ K
continue;6 Q: H5 i7 ~0 O4 D8 K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) Y4 Y( m, U8 E. ?4 S5 S& y continue;, T9 T; T7 X! O ]: k0 z% }: \
lpSkill->dwLevel = 5;9 s# x& K1 [+ H [9 {7 |5 y2 }: z
}) [$ y; O6 U T( G
}4 S' ]* |3 F1 y1 b& L) h9 J
}& w2 p3 n+ \2 d- j
else if(IsLegendHero())
( c, V0 U2 i4 D1 y+ ] {
7 K C& W) f6 u& r, B) `5 X( D for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 o0 `8 I8 L0 y
{ 8 \; A) V: _. n' @5 B
LPSKILL lpSkill = &(m_aJobSkill);
$ W9 I2 \8 ]6 Q if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 c1 k! a6 k j( L* m+ ^! C5 e1 i {" U; I z" a& c% e
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - Z& ~; T" s5 A) I; | t) B$ @
if( pSkillProp == NULL )
4 u! h2 `0 U3 u, a5 l+ D continue;! z( s- b& Z) k# N% U3 C7 h
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 p: T4 Q& V* H- W1 w: d* \
continue;
, W. ?; F2 ~2 J5 I: A9 y o lpSkill->dwLevel = 5;3 S' z) N- I P* ~) b
}2 E! v* {( [$ c
}9 s, a/ h& R# ^# c; [2 L
}
% ^0 p! d" F- a2 h# J#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: p+ m' {/ [7 ^ Y
if( bGamma )3 t3 W% m: ]. e G
{, Q, B* g. R! d
m_nExp1 = 0;2 V1 M- J6 _/ q$ ^7 o
}
5 i5 {* Q1 n) ~! [* Z6 i" C% L
( ]" j/ @, C7 P; O9 c2 X9 q ( (CUser*)this )->AddSetChangeJob( nJob );6 K n# K! M6 j. K+ Y5 B+ j
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
. |7 H5 E: [4 g8 A# K3 h
2 s0 [# a4 z( j. S" {+ M( ~8 ^' a5 Q1 {, d# E$ S) L/ Q$ ?1 s8 j
#if __VER >= 11 // __SYS_PLAYER_DATA
' B( V; M1 K' _ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
: \( j* E2 z4 J9 E! ^" q: o#else // __SYS_PLAYER_DATA6 p# g0 I8 R" Z, V U' S& @
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
# d' q, }, [! d0 V0 x# q2 p' _ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
7 Q" f P% T d* l2 [- w$ n if( m_idGuild != 0 )7 C2 P( T; w- c& L) S! z, H4 k
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
# m& V- M! l U# s#endif // __SYS_PLAYER_DATA
+ z/ {5 \" G( I9 j3 s SetHitPoint( GetMaxHitPoint() );
0 D! b" T1 J) `$ s7 C4 X' x$ B' m SetManaPoint( GetMaxManaPoint() );
3 U2 P; g* N6 M( O& W/ o2 K SetFatiguePoint( GetMaxFatiguePoint() );/ ~& T X, D1 j" k: {" q2 D
if( nJob >= 1 && nJob <= 4 )3 G" m) E9 ] ]# y$ c% k
{
4 u( N5 R; v! s: \, [ m_nStr = m_nSta = m_nDex = m_nInt = 15;+ @4 ]% R: m% U0 n1 F- f
m_nRemainGP = 28;
7 [$ L6 [/ D) l6 R. T }* d; i0 [8 j) C4 j: b# C) y. f
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )" K7 @1 y! f0 D
{; S2 P5 x1 P( N, U( S- Z# P
m_nRemainGP = 118;
; {$ h. \) R* C7 T9 s: B //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;- D/ m& r8 J# }$ P
m_nStr = m_nSta = m_nDex = m_nInt = 15;5 c5 u; E9 J" b9 e: z* J8 g7 l
}
. Y4 q6 Q6 q- e4 G9 r) c0 y( @ if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
% ^. U- Y+ Y2 O) n9 m3 S) Q {0 L: L; E' m1 b
CItemElem itemelem;
5 k6 c" e; f. r itemelem.m_nItemNum = 1;% v+ f/ [6 x( _ W& _/ E
itemelem.m_bCharged = TRUE;
4 E* `/ h+ b" n. [$ Y BYTE nID;2 k. U+ R5 G) _. N
/ k1 N& K5 k% y+ Y! z if( nJob == JOB_MENTALIST_HERO )9 d# c+ A* a; R6 ]5 P
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;' u8 r3 n4 k* g& f# v5 [) Y
if( nJob == JOB_FORCEMASTER_HERO )' M G% R; {: s# S" l- W3 B+ i
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;4 T6 D: K D% A) B& B' y- N; R8 T
9 F" [+ I& ]" Z# @+ v ( ( CUser*)this)->CreateItem( &itemelem, &nID );
* y$ M/ @ V; ~# k }
. t6 W. l- k( i6 {: L g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
6 O. @$ h; ]( }( w ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP ); n+ N @7 ^, u- ~- K z
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );& m7 C: P6 {/ j; o9 ~1 I) M
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
# }; A5 U3 Q1 [. v- \ }% O ( (CUser*)this )->AddTaskBar();*/
# ?+ Z3 A6 \& x- M* k# \* L! d ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
, c B- n8 j6 Y4 t: k' W#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
6 k, ?- e8 e9 ]+ X0 b& d5 b; ] ((CUser*)this)->CheckHonorStat();
& g/ p1 d6 p" ^6 G ((CUser*)this)->AddHonorListAck();, P- D2 b' d# z# ~$ E6 J6 L/ A
g_UserMng.AddHonorTitleChange( this, m_nHonor);, {. h/ d+ Y# A2 Y
#endif // __HONORABLE_TITLE // ′Tà?
8 U: ?6 _( V6 b3 I2 J3 E% P; D }
0 p3 `8 r. b. L* R4 _8 e" q#endif // __WORLDSERVER8 v6 M' b4 r6 `( j
} ; R/ S' l6 b* R J& b0 h; ^
, ?4 C+ { C1 i4 |! Z
然后你进入functextcmd.cpp并添加以下$ h, H" t1 ?, ~& g$ Y' ^' x# C
( l% R2 x; G; M3 [1 @) ]0 Q代码:
5 j1 E; X5 z$ |. J7 o* c) }2 NON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
. a9 a! T+ U7 I6 c. i下面插入$ J2 E7 T4 f$ s2 U4 K
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( m& S* L Q7 W0 g; d/ O9 R z/ f6 @ e% r8 A- A$ _3 ?* c/ `
然后你去
8 D) _+ D) S' W! b' [. W) E! A$ I" P
代码:) \1 g6 O6 A @6 I6 F# M
代码. o9 B* E; H6 t* w) f
BOOL TextCmd_ClearPropose( CScanner & s )
& N. L7 Z/ {% @- u( \5 d) k& G* |{
4 L" x- Z. l+ V( F#ifdef __WORLDSERVER$ _- v5 w8 `4 F# c7 \$ b0 {
CUser* pUser = (CUser*)s.dwValue;# C/ y3 z, ]- u/ e# K
g_dpDBClient.SendClearPropose();
( a: R) D. c- q- _#endif // __WORLDSERVER
0 C" ]' u: y2 K4 J return TRUE;
/ A+ I0 w' }% K! B, y9 p o; y}
8 P9 U, r$ v9 `$ v/ D1 }5 F: ^, Q下面插入
! S$ Q8 d' |: j0 i5 {8 j+ \2 PBOOL TextCmd_rebirth( CScanner& scanner )
* J4 R; M8 c. X( k: ]" P2 j{
( R: }4 E6 D" h4 w8 T1 m) z#ifdef __WORLDSERVER
2 g6 E4 b$ f8 u K/ |9 uCUser *pUser;: V) H( A2 k1 @
pUser = (CUser*)scanner.dwValue;& Z" ^3 Q1 X( {
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
% [3 W5 V3 L7 e# XpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
. t% u {$ u) k8 a0 X4 @4 yelse6 C; [# b$ C; |0 x+ J
pUser->AddText("你还未达到重生条件!");
% w- b$ {! i5 z#endif! Y' l+ m. y; l% k R3 {# D
return TRUE;
% d, i8 T2 R+ l) L, T ^# Z}
5 W) X9 l. M+ P" k3 j
+ }7 C! V* k, E9 b# i6 i, K/ `$ }
# ?9 P1 {' o" L* s/ o R9 |: i0 ], l
) g8 j: ?' V1 T" f' _ |
|