|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel% E/ l/ q; a% z/ u- s8 v: j, h% n3 A
# d. K) ]8 y) Y0 h! G
Mover.h7 Y6 S4 q5 M0 }+ b0 X7 E
代码:
1 y0 P. H! c t& n& R: }+ b找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü: O7 X. `$ ~) q. H& C+ x! U. |
/ W0 |6 Z- P" ~9 W0 z
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; - o' W- B/ e! U& D2 Q. G& Q' e
1 Z" J4 k# S8 j. X9 b
然后你去mover.cpp添加
# |+ _$ E8 Q2 B% b3 p4 P
/ g& x% H! }* ~. {; M+ o* H代码:( q6 X& A+ {$ d6 f, s8 L5 s) p
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
# V H; z! ^1 K& V{" w% a7 z1 x- _$ I, {1 w; H& f' a% t( d
#ifdef __WORLDSERVER* N( F3 t$ e* Z' ]$ c6 P0 `1 U) W; X
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó$ u6 ~) e$ x4 a( G6 o6 `5 M
MoverProp* pProp = GetProp();
( c6 |+ o) X1 T, o3 ?. I if( pProp )) i1 y4 T5 Y1 e0 ]0 O
{
j1 [% R: W) i7 ?) ?8 v9 G if( nJob > 0 && nJob < MAX_LEGEND_HERO )
$ m5 g U* |7 M2 x. b+ S6 k# w {' C: U' t9 [/ z# P+ J4 O
AddChangeJob( nJob );
; i, J% z5 q1 ] l( j1 @+ n }else{. {2 d6 }9 V# O6 F& ?* d: e' B
return;
& l; `* `/ p+ r }0 G6 ]7 k% j( l* R
int nPoint = 0;
# h/ k: ^1 b% j2 U- b if( m_nJob == JOB_MERCENARY )
+ X; r; K `3 f b( P nPoint += 40;
D6 R4 U( r/ ?2 Y3 b$ w* ^ else if( m_nJob == JOB_ACROBAT )
! \6 J* a, x; t- E# l" U$ q nPoint += 50;% H& X- |. d/ U8 \& n: Q; q5 D5 P5 A
else if( m_nJob == JOB_ASSIST )
$ h. \, X) H- U8 t3 f0 G) n; F nPoint += 60;
5 [; x" j7 @8 r3 N* [ else if( m_nJob == JOB_MAGICIAN )
# ]/ ?- Y, u" C3 J& a# g6 e nPoint += 90;
& J7 Y, z- X5 v: H) g9 j else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
, ^$ }) ?4 b% Z8 _. X J nPoint += 120;
$ e: N. _; {2 K+ g0 r0 F# u else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
# K+ y8 {: m8 b# g nPoint += 150;
9 Q; t- m* _3 X) A5 D else if( m_nJob == JOB_RINGMASTER )* i- M9 N) S: X3 t* ]9 Z4 \
nPoint += 160;
6 R. ~( G$ W0 y else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )0 {4 w3 \ ]3 _6 C5 e- F$ a d' Q
nPoint += 180;+ u4 V/ A0 D4 \' k9 W
else if( m_nJob == JOB_ELEMENTOR )$ \+ @1 W4 _1 C2 [
nPoint += 390;) h% h: L `: T* Q
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& V: @ U+ q2 k s/ B( F
nPoint += 120;
: l# N/ w- z( F! O, V- f. k3 s else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
5 l3 M, L0 U* `0 S" E+ Z" m, D$ F" F nPoint += 150;# N" X' E$ f6 E: U
else if( nJob == JOB_FLORIST_HERO )
) J/ Q$ [+ J2 h nPoint += 160;
" c! @+ l# |- q else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
# ?0 X; l0 l. S" u; z0 b% y% a nPoint += 180;( F$ r+ U6 I u
else if( nJob == JOB_ELEMENTORLORD_HERO )
( [ t+ Z2 D( o% y% k/ r nPoint += 390;7 W6 `3 t$ [+ O" R
) ~4 A: i' {1 \+ q8 E& ^+ ?$ b
AddSkillPoint( nPoint );" L9 b8 J/ h; k* e3 |9 P
m_nLevel = nLevel;
" k/ F0 D+ y: k0 z3 X9 D* r; Z3 D- Y( Y$ y
SetJobLevel( nLevel, nJob );
% T" m; I' V8 S9 A% o& I0 J m_nDeathLevel = nLevel;, ?' B G# p( s9 ^
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ E# P$ G3 r- E/ p1 |( \
if(IsMaster())
$ q+ J# y, K3 { {
4 A' r* x1 U f/ V3 a+ V int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
1 x$ |; C/ K0 l+ y6 o3 _) o if( nLevel > 59 && nLevel < 72 )
0 V3 }: q' h( k9 ^# O dwTmpSkLevel = 1;# g' o% \$ u* T: p+ S8 F- Z+ W/ v
else if( nLevel > 71 && nLevel < 84 )
; I, [8 R9 R8 Q" d z/ d dwTmpSkLevel = 2;* E3 d! ]8 U- o4 @5 I1 Y
else if( nLevel > 83 && nLevel < 96 )
) X1 I5 \1 V4 J; T$ D( A# t dwTmpSkLevel = 3;
" w9 c; S, p! i4 ^: y) N else if( nLevel > 95 && nLevel < 108 )
8 w: a3 K, k+ T7 i dwTmpSkLevel = 4;
1 t, e2 k4 |1 z# {3 A3 C$ p else if( nLevel > 107 && nLevel < 120 )
! x5 M% h5 [) G* p dwTmpSkLevel = 5;/ e4 J& M7 Q6 q: V" N
for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 `( n+ V' j" F& x6 x [( j2 a {
4 E) E+ |- ^4 |$ U( { LPSKILL lpSkill = &(m_aJobSkill);& Z' P' a& O; T
if( lpSkill && lpSkill->dwSkill != NULL_ID )' Z0 N& j$ y( x H
{6 N0 v0 M4 n8 [% I2 b9 ^: K
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ` h% s: b2 e; e9 L* f; y9 n, T6 o8 }8 l
if( pSkillProp == NULL )
) M" ? C( j# q. l/ W continue;1 g$ i' @+ X- e* k
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, m# J% u! s. L* V% {% n; l continue;
4 {8 n2 d+ l0 p2 y4 i- f" q lpSkill->dwLevel = dwTmpSkLevel;
) k: q& B! Z0 Z3 p, a% Z }
" P" {7 \1 Q+ e) b# M8 D! D0 f: s }0 G: g0 d0 N# L; L# k
}/ ^) U1 G$ \! z' ?& A6 ^" g
else if(IsHero())
. k7 K; v) R0 c& ]' N- e {/ v3 T8 p+ M7 j: `7 @0 m
for( int i = 0; i < MAX_SKILL_JOB; i++ )
, N9 B* B0 X# Z, y, G5 S( h# N+ n { # Z+ ~0 K* k2 s8 E
LPSKILL lpSkill = &(m_aJobSkill);
0 y( p4 a8 t" S& g if( lpSkill && lpSkill->dwSkill != NULL_ID )
! x0 {3 V% p, J3 e I {
1 S+ L, W r& ~ m0 @4 h ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( v0 d8 R% o( Z if( pSkillProp == NULL )
# b: O Y' P7 `/ @* B. t4 V; |9 n4 W continue;4 Z/ l& i$ S$ A
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ Q& t7 {* R% x continue;
. @3 G# z: W0 p lpSkill->dwLevel = 5;
8 J' j m/ E! w9 D- q; O }
- s; J6 h2 U1 k; N4 V! n. s; \' z; w }# F5 e) `9 K3 L
}
) F( ?: }; F; c* s: g else if(IsLegendHero())2 y1 a' N: w( z! {9 ?( R+ e/ D
{' n: X4 R! M5 t5 u
for( int i = 0; i < MAX_SKILL_JOB; i++ ) % C6 x/ e* E# N- m' A9 R
{
! Y; _* X b) ]! v+ p$ h" E LPSKILL lpSkill = &(m_aJobSkill);+ A: s) a8 R/ B5 S& g6 ~4 K/ ?
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ R5 f' @- d1 U; D; A( T {
) _- l* K/ `, L ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ r: v$ X5 c: z& i- C9 E0 z7 y if( pSkillProp == NULL )
! l/ _$ u. K4 N2 I8 [ continue;1 a* ]: r# U0 c& B* _* z) ~
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& i Z! Z: K. a+ P6 w, g& j
continue;
8 c1 \& [( f0 e o2 U1 a lpSkill->dwLevel = 5;; [* F1 f6 W; R0 [* G5 P# V; r
}8 Q+ ~% j! P+ J8 y% {$ r: X$ u
}
5 R( `' _) z5 c) b }6 l4 U/ G$ ?0 p; X3 E5 _# U
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ ?! M* |/ }9 R# C% O
if( bGamma )
# V5 L$ a2 I# J: L {0 ]- S; V: s! T) ]% Z
m_nExp1 = 0;0 T' Q% A1 F+ a7 W& o
}- M. k" \; t& T' A8 [
' ?& S! X& M: C. }1 ~+ _% _" Z ( (CUser*)this )->AddSetChangeJob( nJob );' I0 \4 C3 Q& S8 ^
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
0 d% q& F, h# Q$ C5 c
% o1 k7 f0 R- I i
" O( S# t# d% _' Y8 q: d3 B#if __VER >= 11 // __SYS_PLAYER_DATA7 @5 d6 ?; r$ t5 Z$ |* _
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
, v- G2 _; G s" E#else // __SYS_PLAYER_DATA' Q, }: N/ I+ a9 ^8 p) e! v/ F% c* `
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
6 G4 W- q2 J+ | g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
! p* L/ o3 p, D) C% L4 I8 j if( m_idGuild != 0 )
9 q& D3 X/ h/ e g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );9 p3 Y& V7 D: ~/ v3 D6 O6 }: Q
#endif // __SYS_PLAYER_DATA
% H4 D# p f8 l0 v) N SetHitPoint( GetMaxHitPoint() );
r$ v$ h( s& _5 Z' Q SetManaPoint( GetMaxManaPoint() );! v3 z$ ~+ P0 `
SetFatiguePoint( GetMaxFatiguePoint() );3 P; F* t* t; f/ W# n
if( nJob >= 1 && nJob <= 4 )9 h8 m' ^2 I1 D+ G
{+ [; A, U1 x0 K8 q( |
m_nStr = m_nSta = m_nDex = m_nInt = 15;2 w& T* [% @! _$ T; m$ j
m_nRemainGP = 28;
+ q- H# F8 L& k) U- P$ m9 D }! K1 [4 k& S2 g; Q/ ^
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& y; r+ d0 f/ M$ m9 N' N* ^
{
5 w( ^) M* E- Y( y m_nRemainGP = 118;
3 A, K2 W4 U" e3 P3 T5 t: k" N //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;' k* }5 b$ ]9 ^! Y7 `
m_nStr = m_nSta = m_nDex = m_nInt = 15;; j, @4 z1 h0 ^" ^8 j5 C
}
5 J4 }# o6 y/ [: d* { if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
8 ^* r8 ~( `6 N Q* y {: G2 s8 ]. D& s5 h9 g1 p
CItemElem itemelem;
2 d5 P3 Z O7 e6 e4 x, O3 J" S itemelem.m_nItemNum = 1;
7 a- J- M' R1 l4 w4 e" l' [ itemelem.m_bCharged = TRUE;
2 V5 M4 u8 U1 Z# @9 L- _ BYTE nID;
6 ~) A3 F1 ~2 l; h* o0 l' H/ p$ i. T. c
if( nJob == JOB_MENTALIST_HERO )
; D# ~3 e7 |; H6 ^* V# r itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;; |; ?" n9 \/ }3 M) X, r7 A, V1 J4 O
if( nJob == JOB_FORCEMASTER_HERO )
1 {5 A# X+ M; h itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% M) W2 H: L0 Y: J. I% W
9 s% Z( B& W6 a0 X ( ( CUser*)this)->CreateItem( &itemelem, &nID );
: }3 O5 y; {2 { V }% J& ?8 L, K6 I3 x& J- f* E2 Q
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
4 ?! |: U0 ^; g, ^& }3 R0 L ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );! K J) E( l& ]; m) C
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );5 j* Z) x5 t; U
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );4 E( \2 P/ O Z, ~- J7 Q+ U
( (CUser*)this )->AddTaskBar();*/$ ~1 r- p: |2 l" V9 D- W- F
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
3 g/ n5 W, G: \" h9 H) U! O+ @5 N# C#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?6 r( l4 [+ Z9 L
((CUser*)this)->CheckHonorStat();- M, S$ G, g$ [" o- W, {
((CUser*)this)->AddHonorListAck();
) _& G+ |" e% V4 ~5 q0 i1 i1 x8 `) h/ _ g_UserMng.AddHonorTitleChange( this, m_nHonor);. L3 O1 G: j' |' M1 X5 U. P" R! p( B
#endif // __HONORABLE_TITLE // ′Tà?: V, M2 t0 ]* o2 \, ]
}
9 h4 \9 I a& f" ]) n5 H/ _#endif // __WORLDSERVER
( y( n; U! m, m/ r9 L} 4 i% @' z; G- X
7 P( }# s# f+ Z
然后你进入functextcmd.cpp并添加以下
, [+ s$ R3 L" W% M; C. @, ]( o
8 }( A% E$ O r# u7 h" L. `代码:- Z% q7 u9 {- L2 h$ A$ `/ k& o
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
6 |; ^% Q$ d$ i" J, u下面插入
9 ?7 Q p5 |$ w% M- p" mON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) G q! j; t, O% h. {, A) S8 a+ ~
8 q4 |' W5 g5 {; `8 u, @
然后你去
$ i8 O3 |4 U# X# m7 z7 y* h; K) J# Z6 y% O5 B1 a; X* Z |3 `
代码:
7 N9 Y0 x9 ~# H1 C- v代码
* D$ y( n2 o/ M: X. G3 j1 aBOOL TextCmd_ClearPropose( CScanner & s )
6 m: H& L1 M0 P8 C/ \# T{1 T8 s% i! U3 P2 |
#ifdef __WORLDSERVER
9 D" _# ]* f! K CUser* pUser = (CUser*)s.dwValue;2 F( p# D; ?) p8 C
g_dpDBClient.SendClearPropose();
9 Z; _3 O; v6 ]! H7 E#endif // __WORLDSERVER& P, N: d& T% a/ t
return TRUE;
! [2 E' x( M7 U9 J2 v5 k}! ^$ S8 a' ^& I9 l
下面插入
2 ]' }) j6 g" t4 G t, X: n# r4 C# DBOOL TextCmd_rebirth( CScanner& scanner )1 H4 i1 p6 W9 N5 n
{! A* P8 R) s/ y' W; M
#ifdef __WORLDSERVER
2 B7 F) U8 A9 [9 FCUser *pUser;
+ w" F) u: ~% n) X" GpUser = (CUser*)scanner.dwValue;
4 ]8 M1 \$ F0 Hif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( F7 T5 k, ]) S* l
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);5 E8 s1 a) S# |0 d
else
- x2 I1 Q% }- e' ~* f6 _& L* EpUser->AddText("你还未达到重生条件!");
; Z+ A- j; W4 V7 B6 q/ j- U6 e#endif1 O/ W. _/ [+ c8 Q/ I( ^. }
return TRUE;4 t N9 I* f2 w! ~2 y4 J, R
} 5 g. x5 o# i& P
+ C- t0 \" q$ z
# z/ |6 n, I# n( i
" Y. X4 A, G- V% A3 F8 \$ `% [) z/ b8 c/ [3 q4 X
|
|