|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ j# s0 O! Y- c2 V# q: f$ K W8 n7 a$ `' E
Mover.h
3 p- k! G9 [) o+ V+ o代码:/ f) T/ w V8 k5 Z
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü8 t" }' g; F9 ?+ F& ` s. K
% I5 K6 U _" m& J" w
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
/ E6 i t" C2 ^: U5 [2 p1 A5 j2 f; k! r0 N
然后你去mover.cpp添加
" e# D; D% [$ S& ]" s3 I) _# V9 F1 z" m( X+ r
代码:# B! L8 A6 u; ?- w
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )& A4 N' h* R5 F: C
{$ x* y" x- ]$ m B- C2 t/ J
#ifdef __WORLDSERVER0 ?) m5 Q* H5 p+ W3 {1 Q
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó( n* q5 R* M. _* l/ Y: \
MoverProp* pProp = GetProp();
4 x' G2 `8 _* B/ N if( pProp ). K. b8 `/ \3 u Z
{
$ _1 [' e4 O6 m8 Y if( nJob > 0 && nJob < MAX_LEGEND_HERO ): ~; X: t3 t% s3 I9 k( i) Q4 }7 _
{
( v9 M& v2 k' g' C AddChangeJob( nJob );
/ x2 x& e/ c3 v) R G. i: h }else{
' b) x/ _; V! @) t& Q/ S0 h5 A return;3 P! W2 `+ [* `) k
}$ j% H7 v5 y& z: @
int nPoint = 0;
! U) H; ]- g* o6 p$ }( w" g0 f if( m_nJob == JOB_MERCENARY ): P& A3 Z# I% K! m) s
nPoint += 40;
" A- c6 i& g3 |" P. e3 z- k# g* [ else if( m_nJob == JOB_ACROBAT )5 _ v% g0 v4 I; y% Z
nPoint += 50;
" V5 m2 _* p. }- B' W0 }) ^1 x else if( m_nJob == JOB_ASSIST )# x# F# _) O4 ]6 E3 {
nPoint += 60;
2 f5 Y' d) W. O* Y) ] else if( m_nJob == JOB_MAGICIAN )
4 L$ @9 Z! f* D1 y1 j nPoint += 90;" S! D5 Y5 q& |4 r
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )7 n0 b+ O* V% G' S% W# Z
nPoint += 120;6 S/ P$ W& t# j; @2 U& J" { _$ Q
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )4 l/ @# ^2 W) w; u8 F/ f( o! z3 \
nPoint += 150;) e2 K: H& M8 `
else if( m_nJob == JOB_RINGMASTER )
3 K" _3 N4 D2 }4 |, i1 ] nPoint += 160;% V9 z0 _( M V& h4 }% V% a
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
' {) H1 s- d+ i, e# Z nPoint += 180;: R( F, K; b7 k B4 d6 B% m7 U
else if( m_nJob == JOB_ELEMENTOR )
) o2 x; e! Z3 C! v1 W5 F. | nPoint += 390;( ]9 P6 q$ `* J% K
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ) \ W8 N9 {- t
nPoint += 120;/ F; j" ~' t' ?7 h
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )) j0 {1 J0 N6 i, o7 \( }
nPoint += 150;
6 i- U/ U" n9 u V+ Z* ^! x else if( nJob == JOB_FLORIST_HERO )
+ |* g& }$ r3 Q$ j nPoint += 160;; A% A! n6 D5 G6 q* C' Q. u+ e
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )9 x1 r' I0 v) H3 h0 @0 z7 W2 l8 l$ f
nPoint += 180; x' o) |0 A [; U
else if( nJob == JOB_ELEMENTORLORD_HERO )
4 I" n4 u9 V9 G% G2 P$ s nPoint += 390;
1 o/ h. ?% i% S# l+ I: k7 G3 ?0 ~' `0 S
AddSkillPoint( nPoint );
- R3 M4 i0 p$ K m_nLevel = nLevel;* W6 P4 {8 G* M( S
# M, _ }6 L3 o$ Y SetJobLevel( nLevel, nJob );
X) B( V+ a& u8 V m_nDeathLevel = nLevel;
3 s5 I/ E2 v' Q0 m- d0 u% q#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans( w( K' _2 g' [% X( d
if(IsMaster())
" _ h9 U5 `' w5 u {
! l* j5 S+ O; @0 U8 J& ?' g } int dwTmpSkLevel = 1;//60, 72, 84, 96, 108+ H/ D0 C: D+ q
if( nLevel > 59 && nLevel < 72 )
4 P W' S% X' v- a9 ? dwTmpSkLevel = 1;
; f( {) S6 S% b0 O+ ` else if( nLevel > 71 && nLevel < 84 )9 R# F" l* m# |, w, Y% o- J) l1 y
dwTmpSkLevel = 2;) E; a [* q* Y
else if( nLevel > 83 && nLevel < 96 )
$ d! Q/ C: X! T9 q/ `8 d dwTmpSkLevel = 3;0 g, z7 [- K% m/ c! a6 w, W# H
else if( nLevel > 95 && nLevel < 108 )* K, @, z8 w0 N9 c
dwTmpSkLevel = 4;
# o! X! A2 i" O n$ _4 f/ _3 C else if( nLevel > 107 && nLevel < 120 )
7 m* I$ h Y% a! [0 g; q! U dwTmpSkLevel = 5;" N' O0 O8 A- ^$ h8 d
for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ ^/ L) p4 m5 z3 n Z {
8 q! y3 d) x6 l) i+ A1 a" i LPSKILL lpSkill = &(m_aJobSkill);
. X" a. c3 v- p$ _6 z* Z/ K if( lpSkill && lpSkill->dwSkill != NULL_ID ): ^) Q1 b; [ b* j
{8 p1 E, T4 x" E
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! f" |% u/ u0 p! R1 g
if( pSkillProp == NULL )
* N+ C8 _. ~% u; ]/ Z0 ` continue;0 b3 ?4 ?" p! X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: O. B! _) }& W continue;' @6 h, R6 a8 p# t
lpSkill->dwLevel = dwTmpSkLevel;
# b9 e. `* d7 `3 e e% M }
0 b/ Y2 H0 Y* l0 n7 K: A }
0 i% L# |7 H5 o" b- U }, x% N$ V0 U; g
else if(IsHero())
& U E' a2 Q: b' r {
- e1 D& P& c, ]2 k4 O# w0 j4 D for( int i = 0; i < MAX_SKILL_JOB; i++ ) / l0 f& r2 D2 H. S/ d4 k! U% V
{ m+ |% s8 p# R5 @' o! ?$ K
LPSKILL lpSkill = &(m_aJobSkill);* c& T1 M& I/ r. S+ \
if( lpSkill && lpSkill->dwSkill != NULL_ID )
! i7 p" k2 Z' ^9 b% Z: X {5 A6 w ~9 G% l3 x, \) s/ H
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
J, ~. e' i8 w2 P* @ if( pSkillProp == NULL )7 m7 N) `% z: L s: [3 R/ i/ @" m0 T
continue;
( c) h8 ?2 ~- Z* v# T$ Q. n if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 ?$ o( Z+ D# p% O5 }9 j, }7 b+ m continue;; o) x$ t$ o0 @3 H$ y# S* x
lpSkill->dwLevel = 5;
( X3 R& B- Y: L! ?$ ]* k }
& y; O+ z, C; L% H7 ~6 Z) [ }1 D' U7 D. o' k; a" I
}* \' @; d' ]7 W4 k, H& {7 _+ ?
else if(IsLegendHero())
( w5 p3 s5 D+ ^& J {
) P0 J" V/ I& }: u for( int i = 0; i < MAX_SKILL_JOB; i++ )
/ b9 x4 h$ w; R+ [. C3 O+ s) E* m( u {
7 S& i' A1 e7 J; O! ?# p4 c+ M LPSKILL lpSkill = &(m_aJobSkill);2 t0 U5 t$ o1 [7 x
if( lpSkill && lpSkill->dwSkill != NULL_ID )
" F2 |' s* S( |4 g L {: F- ^0 G# a( }( H
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& [% o, a4 Q1 o( e- c if( pSkillProp == NULL )% H8 L! o; O/ P; h; f, L
continue;' L$ B3 B; L# s4 P ^
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& J% m5 b4 r& _
continue;( r. ^% U4 H5 _
lpSkill->dwLevel = 5;$ v- a& t% H! W+ K6 C
}
- I9 u1 h' q) f2 ^0 }4 i }: g2 T, L' ]4 |) T, l* X
}9 T' P* H: t. F9 J
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% Y$ L' W/ ~) Q, A: d; j if( bGamma )
# A+ }& R5 p2 b+ I' @0 y {
: B% v' P' e( |8 i' X7 y% w4 ^ m_nExp1 = 0;4 e* O: u: z4 @4 f' D5 R- F/ }
}
7 T6 a$ A$ ^$ p+ {# G0 a* B4 [
" [ Q' H+ q) ?- {9 e- f, ? ( (CUser*)this )->AddSetChangeJob( nJob );0 t5 k5 [* C/ }! A6 o( _9 f* ~& f
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
$ L# r" Z' o, g& |% j
- V- `: \8 e; Q+ C1 j4 L1 s+ a$ _ a0 J! O3 u; y/ Y% D6 q, W
#if __VER >= 11 // __SYS_PLAYER_DATA% D7 B6 J( V5 u1 Z
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );# u1 {" t: @1 F/ H
#else // __SYS_PLAYER_DATA" }+ `1 W) f m4 g) b1 V5 K9 c9 B
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
1 P' ?5 I4 P% ?. V. M u g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
7 Z1 Q0 n& @, W& r9 W: Y if( m_idGuild != 0 )8 G6 e A+ _" n2 G0 }, v% U, q0 m6 X
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
0 {' ?7 i: W, g8 d#endif // __SYS_PLAYER_DATA
3 e! G0 s7 P) `5 { SetHitPoint( GetMaxHitPoint() );
% b+ U; N* U( p w+ F8 i8 [0 _' l SetManaPoint( GetMaxManaPoint() );
8 I! X C2 `7 Y& \" w# m SetFatiguePoint( GetMaxFatiguePoint() );* v. R# U1 R6 N3 f. S
if( nJob >= 1 && nJob <= 4 )
# q/ n" m3 b0 R& M ` {
3 P# h6 `" @8 g0 \7 d- Y4 l' ?1 a m_nStr = m_nSta = m_nDex = m_nInt = 15;
) Q8 |! @) M4 r. Z. B m_nRemainGP = 28;5 ~! i+ U+ ?& j+ u/ p
}- P2 x2 t1 L/ V" g+ Q; ~
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ): Z" b v: A8 O+ |0 w6 ?( K
{
4 G2 n v4 C S5 X1 o4 D m_nRemainGP = 118;6 p$ V1 Q! W: X7 S" l
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
$ f& ?7 A9 Y! E( D" | m_nStr = m_nSta = m_nDex = m_nInt = 15;
4 t& [7 k. ]7 ], W8 \- ]& r }$ _) n1 O- V2 A
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )% {2 H' i( B4 W# @/ {- z) k
{2 y# O w, _) @7 \( }
CItemElem itemelem;. C6 e8 O$ N2 f( A4 M3 ~5 s
itemelem.m_nItemNum = 1;
% r4 p! _1 ?* R3 ~' s- ? itemelem.m_bCharged = TRUE;# a3 ~- u- {+ q7 N
BYTE nID;9 U0 I, x) k. i0 g* U6 \
2 y; t) h5 I V$ R
if( nJob == JOB_MENTALIST_HERO )9 _" q1 ]( v9 ^, k
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
8 f6 m+ n- q. f2 e if( nJob == JOB_FORCEMASTER_HERO )
/ r$ i8 Y1 c2 Z$ J itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;& t, }; ]- R( j% q8 ]! D+ i* P& |
4 g# V/ h7 B4 e# ~5 p: T5 e7 Z! P! Y
( ( CUser*)this)->CreateItem( &itemelem, &nID );
4 A3 Q, D+ z; v" m9 _6 h" L. | }2 D L( D/ b7 m% \! D( K1 y' v
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );4 B* L4 `# c1 _0 h% n
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
; B# K" w7 D8 X) l4 X0 ^2 @7 q ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );+ e! F7 W8 R: C* F/ f
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
/ W; K1 h& W9 k0 F4 o ( (CUser*)this )->AddTaskBar();*/$ j S' V2 h" _2 i. o. n/ h
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
$ v0 U7 h/ ^0 r& T$ _#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
: B" {% z& x P9 r+ E& z6 y ((CUser*)this)->CheckHonorStat();2 L0 _; S9 L0 G- N3 S
((CUser*)this)->AddHonorListAck();5 N1 ~: r7 R& H
g_UserMng.AddHonorTitleChange( this, m_nHonor);( y4 [8 X' _+ a. q1 a' t
#endif // __HONORABLE_TITLE // ′Tà?- G- H$ t5 ]) h) I: G" u; `# r
}2 O; r7 `& R9 h) H1 D( g5 ?; h& ]
#endif // __WORLDSERVER
. M, `" m5 f5 R+ l}
3 V7 T `- X# _3 ?6 z1 t) k# o) o( S: g
然后你进入functextcmd.cpp并添加以下4 d3 u7 t" d7 t8 D
3 J1 B8 ^% f# |) d* W
代码:
3 b; R: F$ w1 [: NON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
; Y4 ^6 L4 H* ^" {( D下面插入; i" |; Y `9 a0 s+ i, d' P/ j
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
5 f9 {. _% c# q# f7 K0 U6 A9 P. z+ u1 r
然后你去
: S) B) `" Y) P6 i% B" B6 V$ w7 G+ l# f; O; U8 |
代码:1 E3 t5 W4 f7 g% P
代码
/ Q; @. C, ]% @BOOL TextCmd_ClearPropose( CScanner & s )3 |; a8 a( h: ~7 e; e
{
4 h+ H8 L" ]. r+ P' W) e! Y: e: G#ifdef __WORLDSERVER
- E" H' T6 H% J, J$ ]+ x y) Z+ s CUser* pUser = (CUser*)s.dwValue;' W: M2 Q: |+ L# P% _
g_dpDBClient.SendClearPropose();
/ o0 \0 t* [8 ^" M, n% i8 q#endif // __WORLDSERVER
/ G/ ?$ G( ^8 l9 O0 R; C2 O9 T5 e return TRUE;$ p) a" M% Y$ Y) A- k
}3 I6 e# y) n+ t; X) \
下面插入; | F5 Z9 R# @
BOOL TextCmd_rebirth( CScanner& scanner )
: n3 q3 w4 S( r4 Q9 ?) O3 o2 \{+ D) W3 G0 X0 O0 y' ]& J7 b
#ifdef __WORLDSERVER
# E0 q+ Q# K5 E' }; KCUser *pUser;
& L' y1 V! I7 q8 n! W y$ e: BpUser = (CUser*)scanner.dwValue;
9 P5 t* n. z1 D( g) sif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()), u2 a3 I m9 z* X1 c# z
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
# l% T9 Y. O) _. W9 [# {& u# Felse* U9 Y9 t W8 q/ j3 f2 u
pUser->AddText("你还未达到重生条件!");/ k; O& B; V8 \. K- y4 G1 L
#endif
$ T0 D# T6 c( G1 y7 s, Greturn TRUE;, J! D% R( B6 n( S7 Q: B2 h
} 2 s! r% v. S0 u# u4 j
3 u$ I l" G9 x, r* @& M3 Q% r3 y3 J8 q
0 w% b) K% Y& _# p
# X( U, u4 E/ j" q- x
! C6 @& |( q# B& n6 V! Z |
|