|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel, U3 `6 ~; d* H% x" E
/ z7 k% f5 ?7 xMover.h
! o0 x. m3 A% [& V6 ?( I! B. k; c/ N代码:
3 G% V3 F- P' Q找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
* ^% V# O( Q' G& \& h. d! l% y" I
- j+ U' }/ ~% {. u N, D下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 9 ` G7 h7 _7 e4 F3 C: A1 O3 g
' w; g {* d1 [' `2 |" \然后你去mover.cpp添加
1 X% t- W* S6 d' w- k# M% z4 Q1 S [+ B3 B3 B
代码:
! d6 I5 H4 E. Z" W( ]void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
& U2 }8 o! J9 p6 n, z" {% W{2 \( t5 ^" s0 `3 E7 O+ ] H, k
#ifdef __WORLDSERVER& {; o* O* Z( r
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
( F/ H! M, J( t) d: X MoverProp* pProp = GetProp();
/ W3 P8 H8 @+ L! h if( pProp )
7 r o( a) J5 w+ ~ {4 o3 e0 n& j* N& D/ ]% c4 N; A
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
/ q" x. @1 `" u1 l3 f1 y, i {
( X5 x6 X; H9 w0 E u AddChangeJob( nJob );! E+ {( G6 v# ]
}else{$ D( v O3 n* _6 ]
return;. C" t5 p$ {& G5 H1 E a, ]
}
! ^+ X4 o" h! C7 ]* e9 g7 t# { int nPoint = 0;
% W- g$ w( v4 F1 V% ?5 K. X if( m_nJob == JOB_MERCENARY ), J% j' m. z3 q! P) N5 {' X/ V5 P
nPoint += 40;) w& q( }) U J$ {3 C
else if( m_nJob == JOB_ACROBAT )9 k. x% T+ M8 d, j* t9 E, H& P
nPoint += 50;
* n- _" p5 F. Z+ P! p else if( m_nJob == JOB_ASSIST ), Y- N v; N+ Q7 m, L
nPoint += 60;
' z) D& |8 a4 w1 ^ else if( m_nJob == JOB_MAGICIAN )/ t- J1 v+ T2 {+ k. a7 T- G
nPoint += 90;
! i6 y( @8 G; Q% t4 ^ else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )0 u( D; J) l) ?& o0 h
nPoint += 120;' e. B7 c+ N% J9 _5 j
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
N7 V0 N- f* K4 r3 u+ a nPoint += 150;% }# W8 E7 ^# Z3 a0 S5 V% g
else if( m_nJob == JOB_RINGMASTER )5 I( D- j5 d. @1 u2 m& T
nPoint += 160;* `% B [, c/ ^: D! c% T- }
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
6 f: @$ N, F0 E# [- S* z, p9 X+ [ nPoint += 180; j8 N/ a. I9 e, z" ^) q
else if( m_nJob == JOB_ELEMENTOR )0 Q2 x3 y: j8 O c1 s& v( O
nPoint += 390;
. E# G! q- I8 ?+ r5 M, Q) T else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; t' z( k$ \* s8 C+ g3 _* F v nPoint += 120;
2 J" U7 W/ b0 B( c2 W else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
1 x# E" A! b% r6 h8 a0 S5 L nPoint += 150;/ M/ h$ S. K6 {$ ~5 n, ~% q
else if( nJob == JOB_FLORIST_HERO )
1 M- P$ g- Z7 l3 Y* n4 c% j nPoint += 160;- b0 d4 f: K) \- _, n/ h: \
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ). r; b- v. W; S: _, G2 [" J
nPoint += 180;
; d: T* K/ {0 h! S: `1 T+ l6 R else if( nJob == JOB_ELEMENTORLORD_HERO )
6 K8 @6 E/ Q/ L9 M3 P: C* m nPoint += 390;
3 ?& [7 `0 t" |
% f6 \. V, s/ J3 w" h t+ ]/ y7 P AddSkillPoint( nPoint );
1 A' ?3 @: I# s" n* m m_nLevel = nLevel;
& _. T' X+ T* `
* T. P% s& N9 L: H4 L1 R4 } SetJobLevel( nLevel, nJob );" r& ], s, [9 Z: E$ q
m_nDeathLevel = nLevel;& L5 b+ j; z- l) O; S8 u. e
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% M4 R' w1 ], r" D, c$ c% i if(IsMaster())
. ]+ T. {& {5 {% |" G( a {
1 s7 Z' z+ ~" { E# n8 ^# g" {; R int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
# o7 x% p2 r' z. r( g W" S& K1 e8 g if( nLevel > 59 && nLevel < 72 )* U8 D) o; N/ }9 F# `
dwTmpSkLevel = 1;
: J7 V" Q% `* }1 `& v o: t3 Z" G else if( nLevel > 71 && nLevel < 84 )
; i' \& ]* I; O! C* }( ~ f dwTmpSkLevel = 2;% w2 `6 j. z, @5 Z# p
else if( nLevel > 83 && nLevel < 96 )
1 G! } N6 L( \/ I# b) Y dwTmpSkLevel = 3;
5 g6 [& R" D' v1 c2 z0 x else if( nLevel > 95 && nLevel < 108 )
9 e+ R) W+ [' p dwTmpSkLevel = 4;
3 A4 U' I4 w2 g+ a! ^# R% e else if( nLevel > 107 && nLevel < 120 )
: {2 u6 `- @' j( e) x X2 C+ [ dwTmpSkLevel = 5;) ]' t# L( D2 ? X) O
for( int i = 0; i < MAX_SKILL_JOB; i++ )
: s/ ~' L1 v% r/ Y! C& s+ | {
! Q5 D% U4 |% _ }0 [" ?2 q; u5 u LPSKILL lpSkill = &(m_aJobSkill);
! _. I' x- Z! g$ s9 N: N if( lpSkill && lpSkill->dwSkill != NULL_ID )) Q$ @# H4 i2 F' D, G
{" r/ y9 Z5 p3 z7 N; E
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
r( Z" a) J1 y L if( pSkillProp == NULL )9 @1 |! e+ D1 L R: x4 {" y
continue;
* c/ B2 P" r+ [ e ?5 { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) _. L' B6 A2 f# |! f- O- K
continue;
( p b% q9 H) P' A lpSkill->dwLevel = dwTmpSkLevel;# ~1 V; K+ V* ?
}$ C% S# z7 d8 `. }2 ^& w& H, [
}
3 Q& N c1 p; n }
- b5 k9 p- e M- r else if(IsHero())2 L2 U* y: S1 y, {3 P3 @) a h8 Q
{
+ z8 G7 D: F; A" E* c/ [* R for( int i = 0; i < MAX_SKILL_JOB; i++ )
- K& |0 Q0 R' Q8 W# _ {
/ X3 P1 z2 G: S' {$ c LPSKILL lpSkill = &(m_aJobSkill);
* w6 F: v3 n; Q. |3 g' t8 J/ T if( lpSkill && lpSkill->dwSkill != NULL_ID )
' Y+ |- ]& r3 G& ] {9 c& A R& b: |) n. E% O8 K
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 {* a* @+ \5 j
if( pSkillProp == NULL )
6 k1 B& g* x; A0 K) q continue;
' O/ i3 Z* C$ E1 O& l5 ]/ R if( pSkillProp->dwItemKind1 != JTYPE_MASTER)# a* Y& I1 a* X. M6 n& b- O. r0 ^5 }
continue;
9 T5 T( V. |- V+ W5 g lpSkill->dwLevel = 5;) _9 A8 F+ ~* N/ S3 o
}2 U: q% w c/ c, G7 g
}+ _, @. l& q: p$ ]4 B6 ^
}
, N7 s4 u9 W2 x else if(IsLegendHero())
; P _3 N; m3 b, d# `9 @ {
2 H( y( o8 Q! Q2 {' y8 m) B; s for( int i = 0; i < MAX_SKILL_JOB; i++ ) : t0 h& }5 C' B; [
{
2 t5 y( u5 H8 h* M( K LPSKILL lpSkill = &(m_aJobSkill);+ N, ]/ g+ [$ Y! ^% ?, h3 d
if( lpSkill && lpSkill->dwSkill != NULL_ID )
- a+ p g* [2 g9 f {
9 v8 ], m. l# q u ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . }4 j3 |' U. q/ p/ O9 |
if( pSkillProp == NULL )9 {$ E. g3 C K' m; x' b9 G
continue;$ ~& X3 I& T3 G1 G
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: q* e! `2 u8 s* u" O: Z continue;
6 X9 a. w F+ u2 U! M/ \, q. B# s# M lpSkill->dwLevel = 5;
* z+ f2 n& C2 h: E6 ? ~ }, {; F: H' W& i4 D, F! Q) w
}4 c& t2 M: w. u$ P6 S$ h
}1 D& R& z# Q/ m' l
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
* [& G7 E9 W1 u if( bGamma )
9 f6 {- O6 S2 p0 v; }0 S {1 \0 I& T+ J/ w: \- z! p
m_nExp1 = 0;$ q$ _9 x) C# Y% O" _! K- W
}
8 N( S: I( b+ r! A" r
- y$ A5 @* A! j& L* } ( (CUser*)this )->AddSetChangeJob( nJob );
4 x1 ? D+ Q/ M' d g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
5 M2 P9 E1 ?) D' X. c$ d
, P+ V& ^" B; w
7 h9 e& b* {: `* ~: x#if __VER >= 11 // __SYS_PLAYER_DATA
8 }/ U( `8 v; \. |; [; m5 ] g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
- S$ v' G1 m( i% ^( s0 o#else // __SYS_PLAYER_DATA
' ~4 E" b4 c( G4 V4 N g_DPCoreClient.SendPartyMemberJob( (CUser*)this );# P( Z# M" v& l' m4 Y! k4 f
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );% H# z8 i) E, b8 `
if( m_idGuild != 0 )
$ h# i w; R: l+ T% K4 c8 Y g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
# l0 } O' p$ M: u9 e: @% w#endif // __SYS_PLAYER_DATA" B2 y8 _) V- g' k. Y- e
SetHitPoint( GetMaxHitPoint() );- B( B6 M. j. R, k- V% P
SetManaPoint( GetMaxManaPoint() );
6 N2 [) r5 f; h% Z) Z% ]! B SetFatiguePoint( GetMaxFatiguePoint() );
$ S3 ^. H# Z9 {, ?' F+ _7 Z if( nJob >= 1 && nJob <= 4 )! H6 v5 ]! f4 q! t: a( E# J7 W% k
{4 e' x5 J- o3 p* ]
m_nStr = m_nSta = m_nDex = m_nInt = 15;
* I3 t$ a$ b) n9 ^ m_nRemainGP = 28;
# E9 Y+ T: x6 C- ^ }! j; y0 w P8 a. I6 R9 E8 w. q
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
" V2 K" d) f8 S4 |. m$ j {
7 c, p+ F% f+ d Y+ s m_nRemainGP = 118;
" z! U# P. {+ r. H- j //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
9 P2 U6 S. p. h% r4 D m_nStr = m_nSta = m_nDex = m_nInt = 15;- ~( X2 F( Q) M- y& C/ C* h" \
}3 H2 P B! e: T/ v2 m+ w' q
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )( S. [& v# R4 `6 K/ a
{. ? p4 G3 Z8 B+ X: H
CItemElem itemelem;
6 |) ]2 u8 m' Q( A; p" W itemelem.m_nItemNum = 1;0 `+ ^4 v( N W8 C, m6 N: r
itemelem.m_bCharged = TRUE;" y/ j- m4 N' ~8 g5 K
BYTE nID;
3 F5 S h0 m; P9 p1 _) G+ k* r0 }# @+ S
if( nJob == JOB_MENTALIST_HERO )
1 H* a3 D6 \- \5 u itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
) T2 ~; v4 X; r: m$ Z* q- ^ if( nJob == JOB_FORCEMASTER_HERO ); |, m7 d. I4 v: L* T. h
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
( y0 G5 l0 K; s4 z4 E
* V5 U6 x9 n8 a' O R ( ( CUser*)this)->CreateItem( &itemelem, &nID );
2 [) x8 p2 J* I3 D1 H }
4 i, Y$ f" u; s( e, @; q; w6 w' z g_UserMng.AddSetLevel( this, (WORD)m_nLevel );2 n, h$ i3 j U K, t _9 u9 h
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
- {$ s# t6 B) i2 j+ w$ s# L ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
% e4 {' {# R6 |1 f /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );/ }* e: x! Z" `: H/ {; S
( (CUser*)this )->AddTaskBar();*/
8 A% b3 V3 R4 F2 C& l" v, s' }9 y ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );4 p% t/ S5 Q) m$ K9 l+ L+ W' h
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
/ S9 H2 a& X8 D+ x ((CUser*)this)->CheckHonorStat();
& a/ n' f D9 [# M! h, Y ((CUser*)this)->AddHonorListAck();
; h7 I9 b: ?# c9 E" W g_UserMng.AddHonorTitleChange( this, m_nHonor);' Z$ q% g: R I7 P/ o2 P6 F: w, M
#endif // __HONORABLE_TITLE // ′Tà?
/ Q8 }: X: c2 Y8 L" {0 V }
3 ?2 ?6 i6 }" @: M; G#endif // __WORLDSERVER$ ^% o2 U( T1 f: X7 r
}
5 v" \ s3 K/ v# D5 X! M2 G
g- ?9 C/ D. Y$ _% V) Z然后你进入functextcmd.cpp并添加以下
4 I9 u1 ?* T- \ Y, z7 p0 F/ {8 L( [& C1 u v8 J
代码:: K5 M+ t, m) y7 P+ _8 L) W% k
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )' u% `$ c* {# { T
下面插入
* g8 y/ I- ^6 r" p& g' Z/ \ ?ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
" W$ q# n! D! `% e5 c3 a V3 \1 }9 j6 Y1 o
然后你去, X5 ~+ _8 n: ^* n1 }0 f! q
4 w* w) c5 j/ T6 p# @/ M+ i, ]
代码:2 _( t; D. M" P$ _' u+ B( X
代码
4 ^) ]% J2 v" a F0 O% E% _+ aBOOL TextCmd_ClearPropose( CScanner & s )
5 y' Z2 i( ]# K* n3 A- T3 ]) g{5 B& ?+ e' V6 T' `8 V# c
#ifdef __WORLDSERVER
5 N7 y, ~, f, C" r0 i CUser* pUser = (CUser*)s.dwValue; ~8 U! L0 `/ ~2 p" K G% E4 B
g_dpDBClient.SendClearPropose();
0 `# q, i4 t" A$ Q& M#endif // __WORLDSERVER
( G$ z1 ~, P; ~ Z return TRUE;
5 | F [3 \8 L+ @0 ?* h9 q/ r}
2 F# G0 q, B" U G+ ?! P2 `5 D下面插入
$ L4 u1 ~+ |' R* G1 [BOOL TextCmd_rebirth( CScanner& scanner )
( U O3 T3 L9 i5 D0 b' z. \( G{1 j! S; ?9 V1 z
#ifdef __WORLDSERVER
5 ~6 ]8 H" |4 P/ C$ A7 }$ ACUser *pUser;
& C; \3 Z1 k1 ?6 TpUser = (CUser*)scanner.dwValue;
, P$ `4 K$ V& ^: @: bif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
! U- b. Z. O% `1 a8 K; TpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);5 _ R" f* b+ P% d9 n+ ^
else
1 P3 p% x) U$ X0 Y- l( zpUser->AddText("你还未达到重生条件!");
' e0 d7 q) q5 K( C0 p: y1 A#endif
# f: N: M: a+ Oreturn TRUE;
4 @' b) k+ t/ U}
6 G/ s& v7 x1 t9 y; R: q0 Z4 S" t6 @8 P' v0 h- e
) K l6 ?" q3 j4 W" A7 @" i% ?
p; a' T$ h0 s8 c; _# @2 R
, N F4 T4 A- h% } |
|