|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel% |: _8 @$ p- g
1 c& S) Q$ w- I3 `, h- K/ ] sMover.h
, I7 s7 N3 V6 e# y代码:$ V8 ?0 l1 R4 @6 l _
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
& \4 t* f4 A1 O5 l: ^
, n6 G: q9 Q2 @7 L下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 9 Y- K# W& `' E
2 C: S( E U2 \( v然后你去mover.cpp添加
' {9 ~' R9 p' J- e9 M1 k8 Q8 x2 a" c3 F# ?+ a! h$ e
代码:
. E4 ^# e, n% s' Z* b( Lvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
; |* h% I+ p& ?: Q6 D/ }1 y{. d" L$ H( y9 \: A8 _( ^
#ifdef __WORLDSERVER4 j4 o C) y c2 |
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó. S2 u" o' X, o
MoverProp* pProp = GetProp();% A8 V! K9 f7 Y/ Q: i
if( pProp )
& I9 J" x1 ^+ | {
4 p" e5 a3 H, c if( nJob > 0 && nJob < MAX_LEGEND_HERO )
9 c* O: E+ M' X. d' K) \& c& Q+ M$ j {9 E7 j# l, {8 r% c
AddChangeJob( nJob );
" N+ k. z+ {# ]- s: ~/ O }else{. a5 y' Q: f) D* Q, z7 S
return;
8 w* Q/ o! ~2 t) h }
# z# q( K* i8 w0 s. B8 C int nPoint = 0;
1 _) ^! _0 K4 D' C$ C, I if( m_nJob == JOB_MERCENARY )
- g' E- t- G" U+ Z: J9 s( y nPoint += 40;
$ r; f1 O, V& S else if( m_nJob == JOB_ACROBAT )
! u" n8 S# v8 Z8 c3 p$ u nPoint += 50;
& Q1 B c' K" W3 E- t, h/ u else if( m_nJob == JOB_ASSIST )* C! o, x. c- n& D1 ^4 c
nPoint += 60;. q4 ^7 V J0 C" j7 D* J5 y8 p
else if( m_nJob == JOB_MAGICIAN )
& T+ s5 w; {" W) k' x9 o* n! w nPoint += 90;4 I1 T, p& y, j1 e" l
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
3 f: [* J, H i3 A( L( T nPoint += 120;
4 e. N+ h# h* W' e( v' r4 j else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
0 y4 T- p! U+ j( |& F6 R nPoint += 150;
5 ?$ l5 q+ k' [: {3 ^' Z3 g+ I else if( m_nJob == JOB_RINGMASTER )7 W o; M# w; k0 ^3 h0 b
nPoint += 160;
& d6 i' K4 p1 \ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
( P8 G2 d* C/ D4 d9 q nPoint += 180;
3 Y9 ~8 a. V8 z) | else if( m_nJob == JOB_ELEMENTOR )
@! K* o% v# X. F nPoint += 390;
+ Z( F- \8 E6 K% h5 Q9 d! @. E else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )9 I, E+ K! C; U( `: B8 Y. k
nPoint += 120;
! k# d: E) C! S/ a" @ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )5 N7 `, _% x/ k! h' v2 {" b' F+ U
nPoint += 150;
6 q# _: z: q, n' K; ?) p7 Z Y else if( nJob == JOB_FLORIST_HERO )
+ H: n! R' z: \ nPoint += 160;
2 M6 B2 y+ @2 E' B6 }/ n else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )( L: _8 A& b% H" Z# J
nPoint += 180;5 L4 C- V9 J. a: R# Q
else if( nJob == JOB_ELEMENTORLORD_HERO )3 A% C$ \ A3 i
nPoint += 390;
( x7 u" {. H( m( `! z/ V) {+ m" f: V# I7 m" m
AddSkillPoint( nPoint );, b; N5 ~: a! b0 V1 ^: k: F
m_nLevel = nLevel;
$ E/ x; j, E4 U% e# F$ i) B3 B K3 q/ C5 C7 t) A
SetJobLevel( nLevel, nJob );. c/ [7 |# K' O
m_nDeathLevel = nLevel;
: c3 N8 Q5 y* S* u#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 s* S. B2 {# x" |2 M7 g" J A
if(IsMaster())" L: P1 Z& ~9 N- n# X
{5 e5 d) n% _# V ]0 R
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1084 [6 }. ]7 n; P6 }- w+ a
if( nLevel > 59 && nLevel < 72 )
; h e! N/ a3 U7 o% M dwTmpSkLevel = 1;! W6 j8 j3 }9 w) X2 ]$ T' q: D/ u
else if( nLevel > 71 && nLevel < 84 )! N+ Z4 G4 ]' o; D: i o
dwTmpSkLevel = 2;
2 a+ k7 X# m3 k else if( nLevel > 83 && nLevel < 96 )
U' X5 h3 j9 d4 ]$ @5 y0 j+ Y2 n& k dwTmpSkLevel = 3;
' T( B0 |% f; E7 l else if( nLevel > 95 && nLevel < 108 )+ d; p; f# l$ `" D: D* F
dwTmpSkLevel = 4;# r1 j0 [8 p$ n$ C/ A" h; l
else if( nLevel > 107 && nLevel < 120 )
' _: }) w% B0 E c7 p, A, z' | dwTmpSkLevel = 5;
% C$ U$ X+ Z- m5 Y for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 x+ q& Q6 [6 K" m& h6 W8 D4 W5 [
{
/ b* v# I) P/ s& Z% q1 h1 f LPSKILL lpSkill = &(m_aJobSkill);
+ s7 P; _% H" p5 P if( lpSkill && lpSkill->dwSkill != NULL_ID )4 }4 N" P+ f- P8 E- T6 c$ Y- k/ @8 u( F6 I
{
/ a2 }7 J. X7 ?- P- l; Z* r1 t ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& |4 R( ]# C% u' ~) T% x if( pSkillProp == NULL )
) p( u+ V0 r* R Q3 e& `/ Y continue;
- o; } _9 Z3 X$ D" k if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 w% O& e8 g4 i& C8 i* ^/ j3 A continue;6 O& t- ^& L7 J J; A3 b: n
lpSkill->dwLevel = dwTmpSkLevel;8 c$ c4 \' P- k, ^6 d& }! K& [4 F
}' A- p) I% ~5 m4 Y1 A8 ?0 T% H+ J
}* h4 l' K+ I: {& B) N0 i- G$ q# e
}$ m# x% p( Z' M6 G' F4 h7 j
else if(IsHero())( {. t1 J# Q! P; G' F' D2 y
{
7 D0 {5 ?+ B8 I/ }' U+ L$ N P1 T+ W for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 A; h* n: H4 \4 j3 c* l, R
{
3 ?2 X4 u8 w9 Z m8 z+ G1 @- S/ [ LPSKILL lpSkill = &(m_aJobSkill);
- u! S2 x3 r6 {6 C- |3 l if( lpSkill && lpSkill->dwSkill != NULL_ID )5 _% ]* e y) T5 x d; y7 S
{
0 U8 H! b6 L5 o8 p i0 N/ C/ M w! w ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); / I: K7 Z2 G! S& L8 l/ e+ E
if( pSkillProp == NULL )+ V) l" p- B7 }( O2 m
continue;( m! y y0 k; N- v; @% O" V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 F+ E5 I9 u8 N! b; a continue;9 ^$ E! h* u, k
lpSkill->dwLevel = 5;
, I+ Y8 I+ Q. B. Z+ d R3 r% u }
2 C( l2 ^+ G; e. d5 S* m6 K }2 A* c: ^; `& ]! w, b
}# Q7 p# n$ m$ P
else if(IsLegendHero())* z" [4 Y& j7 O. n- R" \2 h" l
{3 A2 a& o( m" k: C. T9 H) g
for( int i = 0; i < MAX_SKILL_JOB; i++ )
) z5 s" X. V, F+ B* R5 e% M+ j( ?$ _ {
g) R2 ^4 w3 _ LPSKILL lpSkill = &(m_aJobSkill);
- u% h3 X# o n# j; I4 b if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ A) U$ K/ H u8 e5 |. J& h$ \' Y# F {
7 W3 a2 c4 u- Y. r$ @ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
' u' _+ E/ `( W5 A if( pSkillProp == NULL )3 {9 T0 Z2 [- k4 [- R. I) X
continue;
( `' ^% }& ^; ^9 R, E: A# a) t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ b0 s }% \2 R$ G E- f! L, [+ Q continue;
& w# E7 ]- Q) O lpSkill->dwLevel = 5;
?& Z4 d' m/ n& C# [" ~/ E }
" G, L, o" d5 v( _2 l }
0 S6 p# F4 J1 z; M }0 ~5 s2 G& {" {! _ z
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans* i) A9 x7 X6 i2 X
if( bGamma )/ R0 e. W7 [# m7 k( Q
{0 g5 H8 w8 x$ t# i; z$ S
m_nExp1 = 0;
, z& m* x$ v' H- X+ B8 F }6 ?/ n z v. E
2 t6 w% J/ m' R, z1 X- ~9 x ( (CUser*)this )->AddSetChangeJob( nJob );& L c3 {$ _! o- `: X
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );9 |. _ Y) ]0 w3 S
" n& V Z" H" S, h
2 a9 U! z8 h% x S% | j2 m
#if __VER >= 11 // __SYS_PLAYER_DATA
. ~+ R1 Q0 R- Z' s8 g g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
, a) [6 v8 P* y3 W9 v& i! Y#else // __SYS_PLAYER_DATA- L5 Z: |6 D" q+ U6 C( L" z
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
% y S% @, Y4 ]& I# e( n g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
- k1 \8 [+ _2 [( ` if( m_idGuild != 0 )& [0 `+ K' Z6 o* D- L6 a2 Y3 A
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
% L' O9 j# n1 O) u! u#endif // __SYS_PLAYER_DATA' W% G- g* n- b0 d+ z
SetHitPoint( GetMaxHitPoint() );
. c; _. M5 I( q$ F% \! Z SetManaPoint( GetMaxManaPoint() );! [, w* y& S$ f& z, P
SetFatiguePoint( GetMaxFatiguePoint() );
+ ]: F7 j+ z' |3 O8 l* ] if( nJob >= 1 && nJob <= 4 )9 U A. h, N, s
{
- [* G1 ^% t# T" O' n, _+ ~ m_nStr = m_nSta = m_nDex = m_nInt = 15;) T( V+ _! I, c: ?
m_nRemainGP = 28;, S; h2 K1 |$ d
}
& A% B2 t6 d: I9 \; T if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )# W @/ N1 e3 J1 u/ o: P
{* F i9 T! @" T( s; f. r
m_nRemainGP = 118;
3 l l7 h4 M4 d1 a6 h/ _+ ?; Z //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 I: S( U5 {. f% \7 X
m_nStr = m_nSta = m_nDex = m_nInt = 15;
' {# p6 c% [1 K3 F( S' S }
# R9 \% ]: \5 V! w4 N+ c7 A if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
+ V. A+ p% B" L' m: D# @ {, C! r& w2 Q/ R' J u7 Z/ I9 G
CItemElem itemelem;! L; f* s6 p& `& T; B# Z! F* d
itemelem.m_nItemNum = 1;
0 E+ J4 e0 m: S itemelem.m_bCharged = TRUE;
0 ?: g5 _0 ~* O! U m BYTE nID;8 r9 }. Y1 p* ]0 a+ n4 s
3 j8 V: ^3 G2 o# }" D' B5 [ if( nJob == JOB_MENTALIST_HERO )
- X' L- k2 D1 r# A# T itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
) g+ i, w1 Q4 N' u$ M if( nJob == JOB_FORCEMASTER_HERO )
0 q/ a" k7 I: p# u itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;- p0 s" M" T" |, z! e- W a: ^
l: ^/ A9 F5 T
( ( CUser*)this)->CreateItem( &itemelem, &nID );( R/ b: @, B' J& M* Z
}
, }% j. u, [) @! E# a6 ^0 t0 m3 p g_UserMng.AddSetLevel( this, (WORD)m_nLevel );9 b) ~6 V+ j0 P
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
9 S, P0 o" o9 }2 E" X ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );4 [1 k2 N% @" G1 d( u% p. M8 y1 ^
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );* [5 j/ D6 X2 r( k- H1 @7 X$ t% W
( (CUser*)this )->AddTaskBar();*/
! g _; {1 X! E ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );* t& y0 X/ X* L4 F; V9 B2 F
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?; X c t: }1 M$ z1 Y: }! M+ F
((CUser*)this)->CheckHonorStat();
. o3 X6 G) L1 H2 e ((CUser*)this)->AddHonorListAck();* _6 {6 `5 g- ~3 l$ N9 R, c7 t
g_UserMng.AddHonorTitleChange( this, m_nHonor);# {; q3 H& _3 f6 z
#endif // __HONORABLE_TITLE // ′Tà?
1 ]: q. J6 A% T9 u h }
* B( Q8 M) @8 V% ~2 t#endif // __WORLDSERVER
' B$ V1 Z+ i! n: V: N& l C8 Z5 M}
# k Q& d( w H0 Z. B
8 f" c" }- P5 D/ q* r然后你进入functextcmd.cpp并添加以下
& i/ f0 M, r8 O$ |- d; m+ s
1 N% U9 g) h k6 ~代码:. Z( W5 `3 ^6 E' W: P
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )4 I- Y5 \+ D/ t k
下面插入
; C0 o2 \3 f7 n! t1 g5 Q8 V( BON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
5 e4 m% O' `( Z4 R2 N0 ?6 Y& l* f8 m
2 g" {# L/ t9 H# j/ {/ Y2 p5 Q: @( g然后你去
?2 ~; \0 y" G$ g X2 |
- ]# O- Y1 t# j7 y8 y9 i$ R代码:
. r: e$ H) d5 S: C+ d代码
0 p% t# n U* _4 {5 p( yBOOL TextCmd_ClearPropose( CScanner & s )
0 _1 Z- P- P! Z! P1 B7 Q6 C{ t1 j+ \: o& H. i& }) y9 g( O$ M) {" j
#ifdef __WORLDSERVER5 r% ~3 H$ `9 s( x
CUser* pUser = (CUser*)s.dwValue;
# Z2 P9 _: Y1 c, o% p7 s g_dpDBClient.SendClearPropose();
3 \3 Y( G- Y2 b6 F; {#endif // __WORLDSERVER* m. ?8 W" b( ?, x. b) q
return TRUE;
! H+ d6 g; b4 r% i0 l: Z}& b" ?1 ~# m) ~4 p# r) g2 V
下面插入
, [* P" l, \1 O! lBOOL TextCmd_rebirth( CScanner& scanner )
3 T( w9 c" `; ?: j) k2 I6 u{
! K* ^) {6 K4 x* t4 f#ifdef __WORLDSERVER
1 f% I+ W* Q% F3 Z9 }/ E5 H1 ?, `CUser *pUser;
( q. H. v% Z. CpUser = (CUser*)scanner.dwValue;
- J+ G6 i6 W; }: n6 r# x2 zif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( f% p. y: n Z
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
0 T7 P }" i- b! s7 m$ delse2 g, r5 G" d. L$ S) ?
pUser->AddText("你还未达到重生条件!");- B) F( \' M9 G
#endif% L! {% P/ L' c3 L6 Z! Y, @0 S6 C1 w
return TRUE;- q; D" w b% V6 i" X
}
% f1 G7 T8 D1 |* j: }. j" c0 S4 U7 V3 i; `' r' m( @6 @
, @, g% E- P9 P. o6 B
( @6 f: C" }; m5 O/ {$ e7 G
6 `2 j5 {+ t' r1 H$ E5 h9 c
|
|