|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel ~/ ~( g4 W+ ], A0 D$ p
f+ X. t, T! M% m# o* KMover.h
( c: M" S, O- ?4 C, ^9 {代码:4 @( S' H+ q( S) l
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü8 f: K& I& J' x
4 N: h. J* q' F1 O; ]下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 2 J5 f O; \* t. j
# u' ^4 A- X, x4 l3 W
然后你去mover.cpp添加
+ i r1 N8 l1 Z' O" E. x9 s' U( M4 K7 }% R2 m# S" c4 D1 E
代码:
0 A7 J- |# e5 r& M6 M: Evoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ) H. c. m: k; d* U4 J
{ X' Y! \, b9 F/ \4 i
#ifdef __WORLDSERVER
. f" C& x& L9 M5 ]% t, z) c // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó6 K, r( _7 |8 [9 s6 f/ M5 L
MoverProp* pProp = GetProp();8 n8 ]/ J3 g8 T
if( pProp ) C8 J" `2 D/ L+ ]2 w% b
{
! I3 [$ v- `& p6 k* P6 H if( nJob > 0 && nJob < MAX_LEGEND_HERO )
3 |1 ?9 R2 W" c X( v {
( [0 V& d, q E+ O Z2 Z L2 ^ AddChangeJob( nJob );
# n( q( @% u8 y3 ] }else{
% \. K. m% a0 o0 x8 }2 ~3 j* Z return;: {. n0 O" J1 A# I8 N* E1 e
}7 T$ }/ v! ]% ^0 Y5 K* q
int nPoint = 0;! x- i& p0 t9 Z' l
if( m_nJob == JOB_MERCENARY )
0 T3 o5 }, C0 u9 i8 d2 y, Y" i3 f6 K nPoint += 40; i$ A0 S# H2 s5 }
else if( m_nJob == JOB_ACROBAT )
# [7 u1 c3 v) W' b3 R nPoint += 50;
' [9 f* q1 \6 }4 W4 t# M1 x else if( m_nJob == JOB_ASSIST )" ?% W, W1 U0 T/ z
nPoint += 60;
: V& a* M' h3 O8 ] else if( m_nJob == JOB_MAGICIAN )& z! P2 v e% R. @# U
nPoint += 90;- g# i9 ]; g, S
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )4 F! C' l% `9 ~
nPoint += 120;
; N7 [* r. q- l5 O1 m/ l: k) p4 t else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
% y; X& U0 Z$ C! Z9 y$ H1 a4 h( g nPoint += 150;3 X! G5 v) g& A# F% Y8 L" h
else if( m_nJob == JOB_RINGMASTER )% S6 L* S' H- ?$ h- A3 u
nPoint += 160;
8 o5 w& ~" o% @* x% ]& E/ @; s else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
V5 c0 p3 D/ U, r nPoint += 180;
& Q. F: W" }3 z1 ~ else if( m_nJob == JOB_ELEMENTOR )1 x5 E9 H: _: X/ [3 n0 M& J
nPoint += 390;
! w- l; h! l- w. M else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
4 I" W: Z' W- z7 J0 P& q' m% c5 \ nPoint += 120;, s% z2 B4 `! A* @ T! [
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 c1 C$ {" k* Y) N/ ]8 U. S nPoint += 150;, p) P& I1 c! u& y% N
else if( nJob == JOB_FLORIST_HERO )) e/ P! W: O# p9 {: s
nPoint += 160;3 |1 s2 h. u( |
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )6 h/ g6 y4 M6 t1 [; c/ n
nPoint += 180;
2 N; r* {" K, Y; ?% ~ else if( nJob == JOB_ELEMENTORLORD_HERO )$ W) X9 s+ T3 {+ h1 V8 {
nPoint += 390;
' Y, I' r% E( h' P/ E& U' ~ s. {/ Y, |. v( A
AddSkillPoint( nPoint );" W; g6 O3 A- j( b' S9 v' I5 m4 j# P
m_nLevel = nLevel;5 l8 i0 k! U" T4 i' P) H* ]
' q, d3 Z, N4 Q3 }
SetJobLevel( nLevel, nJob );9 ]. l3 u$ z# a3 N4 ?
m_nDeathLevel = nLevel;
6 L0 `+ P; y, M' w, @#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. D. N. K1 O. @$ q! _' s if(IsMaster())4 d0 h/ ^9 `3 b8 p i( v
{
6 [7 ^' ~2 ]$ ` w int dwTmpSkLevel = 1;//60, 72, 84, 96, 1082 L6 \) g+ l/ [# u
if( nLevel > 59 && nLevel < 72 )
8 b7 a; W- L i2 W- \. B/ j dwTmpSkLevel = 1;. Y [, y2 x7 E5 o/ ~
else if( nLevel > 71 && nLevel < 84 )4 D7 A# ?6 Y. ^3 G( [9 J
dwTmpSkLevel = 2;* r" Z9 d, _; _8 f. w; s
else if( nLevel > 83 && nLevel < 96 )" r; _, J' |; D' D
dwTmpSkLevel = 3;' H3 Z; w/ }6 Q) d$ c7 |
else if( nLevel > 95 && nLevel < 108 )% ~; G, {% m/ \% i
dwTmpSkLevel = 4;) K2 Q' |3 ^7 N4 A' r+ X
else if( nLevel > 107 && nLevel < 120 )
7 g' D( P: K6 }- j! ~ dwTmpSkLevel = 5;
' _0 [5 [1 N$ L' f for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 a- `3 u' ^5 l# }" F5 l {
/ R- g- j4 O* s: ?# m LPSKILL lpSkill = &(m_aJobSkill);$ e2 s( e7 g: z+ q3 h
if( lpSkill && lpSkill->dwSkill != NULL_ID )# D | k* j, ~3 x1 k, O
{8 v9 @) y: o. y6 \
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! J* s6 [ a/ f0 m
if( pSkillProp == NULL )
2 d6 U! b. X) Z* P' M continue;
- O2 F `; w a if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 Z; z3 o1 \) t1 k4 _ continue;& y: N& w) Q0 B, p8 K
lpSkill->dwLevel = dwTmpSkLevel;
. q2 {( W6 G% ^4 C! G }
. s- J% b+ N+ Q }
3 T8 O* k- H- D, o }8 e, ]& c! Y2 h; A
else if(IsHero())9 k9 Y w1 C2 [. V
{
, R0 _* p( v" | for( int i = 0; i < MAX_SKILL_JOB; i++ )
# c. Y( c. _% p: i/ _ {
) y# M( F# E0 j. q- W. l! S LPSKILL lpSkill = &(m_aJobSkill);3 ~$ Q1 E- {. ]+ m4 S/ u$ b, V5 l
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 v4 N9 i0 L5 K7 ^( u f/ x) M' q {$ u# F: }& a8 K: Z: P8 E5 K Q& T
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( Z+ @0 _0 |9 }. j; T
if( pSkillProp == NULL )9 f, s2 J/ `3 H6 @; x, \
continue;
' f' a8 S, R8 { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' f' t4 L. K5 s
continue;' `* L5 x; Z4 S" S, ]) J7 W& N% p
lpSkill->dwLevel = 5;. b' R# w. H+ c, A6 W7 k* Z
}
& C% ~; H7 S+ F% y0 F5 v! k x' s5 K, ~ }
b% X7 a7 s# R, h5 Y0 p }- W9 H) }. {7 N% t+ k7 @# c
else if(IsLegendHero())
" a8 D) `2 L! s) F" I3 b" P {7 e1 I9 x2 {! M
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 0 r: Q2 y4 O9 d# A0 k
{
% w. c; Q9 x$ D! L; G5 k LPSKILL lpSkill = &(m_aJobSkill);% y! j% V/ G, ?9 |3 k" Y6 d0 r2 z" m
if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 s! L0 q& Z% J, O! Z {, y+ k( U! F" l' e; Y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" a& R: g/ p9 \+ Q; Q8 G if( pSkillProp == NULL )0 T# R+ c2 s- L" N8 D. j' S
continue;
" ~! n8 n# @$ D; p if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 r$ s7 l; x' ?: g. W* m
continue;2 i5 I8 d- f% f4 }& n) K
lpSkill->dwLevel = 5;% l) L. B) l9 e# `( b3 _
}
( v; Y& N( k) J0 X1 K' t: r }
- r; f) W$ @! d1 r }
- h- z, k, T! r3 [4 ^3 H# {( Z% h* Q#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans- u0 J( w7 X9 J( `4 A
if( bGamma ); w6 x7 F( k; v' w0 J1 j5 { l0 l* E. n
{2 ~" m, I- Q+ T( [5 n M! F
m_nExp1 = 0;
, j Q. m. _) t3 x9 m: J0 s- R }% B, R+ K/ F7 g
) k# K. T0 M! t: K
( (CUser*)this )->AddSetChangeJob( nJob );
+ o, ?0 L! R3 f X g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
$ u- F& Z- b I) S- p# C' N$ z: b6 s' w$ F" R z
$ B' l$ O# o" c7 b0 ^4 M+ y#if __VER >= 11 // __SYS_PLAYER_DATA
! v$ W1 b1 I. `9 i+ A, P g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
8 q2 B- T' h0 b% p7 P5 t#else // __SYS_PLAYER_DATA
' L7 f/ J8 t8 H6 Q% |. h g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
4 g+ I% q# j! P Z& s. x# { g_DPCoreClient.SendFriendChangeJob( (CUser*)this );) {& G; [; j0 T! Y; R! v4 _
if( m_idGuild != 0 )6 f# F+ y0 n/ c: Y: O2 p
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );( P( l9 h2 e( l* ^
#endif // __SYS_PLAYER_DATA8 h; _9 w p6 F$ s- U. U' t4 b9 h
SetHitPoint( GetMaxHitPoint() );
0 F3 i& B* I& o/ k9 c; K4 D SetManaPoint( GetMaxManaPoint() );
, t% ]+ J5 b& W3 Y3 K SetFatiguePoint( GetMaxFatiguePoint() );( ^2 J- ]9 P% a. F! g8 \4 z" ~
if( nJob >= 1 && nJob <= 4 )
/ g2 D9 _" r6 d$ D X6 d, r7 j {. H" ?' V, G% K/ D) ~
m_nStr = m_nSta = m_nDex = m_nInt = 15;+ M Z4 U6 F& o# [3 G2 C
m_nRemainGP = 28;. ~) @; q, x8 i( x- V. D: j5 Z+ c3 K
}* I: _8 n& X' F6 V: a# c
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) W' s. R0 z& s" H8 C# R {
' \- T/ \* H3 C( G: g+ Y m_nRemainGP = 118;3 S. k% K7 I4 h
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;0 r- ^9 z) }( k, c+ n" }
m_nStr = m_nSta = m_nDex = m_nInt = 15;7 G6 Q$ I1 V2 {% E
}
( \ T" D; M& F; z7 V; s! A if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
& b( p0 c% F; O. [% A$ _ {. @2 k% \$ N& G$ R: k" i. ~0 H2 m
CItemElem itemelem; G* L+ T% ?0 ~) N \6 J
itemelem.m_nItemNum = 1;5 A- o) X1 W5 c$ t; e
itemelem.m_bCharged = TRUE;9 q7 `8 T& D* Q# `2 V5 g
BYTE nID;
& y. `' P5 l8 f0 ]5 D' H# _% ^0 W# U. W/ A7 z
if( nJob == JOB_MENTALIST_HERO ). y* P5 o6 [# V
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
% N6 q2 q# F+ O1 _: K. A+ o$ b8 ? if( nJob == JOB_FORCEMASTER_HERO )% K* B8 [! O3 u" b
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
4 U) W8 f" [3 a& I0 c& q. I+ j% @$ s3 K
( ( CUser*)this)->CreateItem( &itemelem, &nID );4 s6 |9 q2 m9 w6 d5 w- p- B
}
0 f7 `9 ~. Z% a9 S4 H' [: T" u" `3 m g_UserMng.AddSetLevel( this, (WORD)m_nLevel );9 J2 M1 P9 }7 m$ \
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 Q! [; M% t7 `
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
# g8 d( `; w, F) `% S4 l5 Q$ | /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
' B: A$ z2 }6 e9 Z {. G# S; [( C* R ( (CUser*)this )->AddTaskBar();*/
* b) t+ s B# y ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
' S3 ]% X N. ~7 C#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?) h$ ?1 u3 B4 j. f. X' z, ]
((CUser*)this)->CheckHonorStat();8 Z# U3 o+ s9 q0 T
((CUser*)this)->AddHonorListAck();
' u' V6 c. M* B g_UserMng.AddHonorTitleChange( this, m_nHonor);( Q1 E8 z7 @1 x* M" P& C
#endif // __HONORABLE_TITLE // ′Tà?
) b! h, m2 u6 l+ n# } }3 p7 W: f6 H" K( q, e0 [) @
#endif // __WORLDSERVER
) S4 ~8 C% J9 z# ]" `/ M J- Y6 t6 e} 5 h6 o' Q8 {9 ^% ^
2 n( o+ _7 o1 w% @: X% r然后你进入functextcmd.cpp并添加以下
% _1 u. f* ^, G0 W. Y. a; Z3 w
7 s# ~0 a- t# o0 Z代码:
& D; v& t9 S& J9 G; R' e1 ZON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ): c# p1 F. P C' N0 n
下面插入
! h1 D0 x4 W0 a1 n' |7 [' nON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) + _6 i ~+ T& a2 @
6 D- R, | M% Y# u* H- X然后你去
1 e# e# [, b# J' d0 R3 ^2 N% G6 F$ O+ ]4 `
代码:
2 C# P8 m, M6 c, s$ F代码 D4 T$ b9 h4 t6 C, g$ z
BOOL TextCmd_ClearPropose( CScanner & s )
8 N+ I% O1 y& s, N/ E" t' _5 B0 x{) X( ^6 h* P# e: h/ U- w2 \
#ifdef __WORLDSERVER
' d( ^( U* @7 z/ P3 m7 N CUser* pUser = (CUser*)s.dwValue;
: b2 q ]; N0 y% ` g_dpDBClient.SendClearPropose();
; [, i: V& W& r/ t* `#endif // __WORLDSERVER
5 [2 H$ w" j* @: \ return TRUE;
- w; {$ Z$ [, E! z+ |- g5 N" c}
+ e% S- R3 ]* A! u% Z下面插入2 h. h2 R7 a7 q6 h+ [. f' L
BOOL TextCmd_rebirth( CScanner& scanner )
7 \1 P1 \# ]4 {9 P/ p' J{% u3 ]. i* V j
#ifdef __WORLDSERVER
- P& h* I" B, C+ N4 PCUser *pUser;
/ C+ o8 @* e5 s# EpUser = (CUser*)scanner.dwValue;
; Q6 a" T* E2 q+ J& e! ?2 hif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())- e# R& s) i9 o0 i
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
& k; v/ U: {+ k/ i5 velse, s: V8 Q( f$ U, F" c6 r
pUser->AddText("你还未达到重生条件!");
: m: L- A3 i# _2 D#endif, G, b# h0 x& e( T( ^& \, b
return TRUE;
9 S' p1 \9 V5 K# J( A} + S0 {8 m5 K% c0 d, v
3 o# O8 P% Z$ U
% F* g7 `0 Y4 C6 J' r! R
/ R, [) [$ ]7 s/ R: y# w& V/ |; r: e L
|
|