|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ i( b9 K. I0 Y( r; h# B" ~7 L! `1 \0 X
Mover.h6 T# Q8 _% c; t8 |' H5 F5 [% X
代码:
7 r! I5 [" C4 P! N找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
+ F" b" a8 l- f" R' z6 [6 f' I! U+ p- x# d2 A& f, t! r
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 2 U1 A4 S0 W; S2 d0 [) X
8 |; K) P* v# k& n- j$ s然后你去mover.cpp添加) H# }9 h# X8 ^+ [. a
* M: Y" P. S. C# Z, G/ F- z5 P8 @
代码:
, m C. }9 Z0 m4 s6 cvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )1 G( h+ R- Y! ^ e; G! k. b5 d
{
3 L2 k6 ?7 P2 V5 ^! o. m( F8 y#ifdef __WORLDSERVER
0 Y5 P, G: m: V1 w // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
7 Z+ q7 ^# X9 g( d! x1 I* C k8 M MoverProp* pProp = GetProp();
4 h9 E, D. s/ h4 I! T3 h if( pProp )
9 c6 q5 E& ~- Q {' D2 j/ N- c; R6 A
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
/ L! y8 {0 O! `5 X {
/ c5 m Q E# G' f AddChangeJob( nJob );9 Q) K) e& X1 R1 A) Y2 y# ~1 o
}else{
& z6 Q$ B& H; q( g8 ^ return;
3 E) N0 S& m6 U9 g. f }) g0 E1 e" p* l/ a/ u: @
int nPoint = 0;
( n% j5 Z; y+ p; ~! Y if( m_nJob == JOB_MERCENARY )3 o& F& t ~4 k2 e
nPoint += 40;! X" H( l! \) ~- t' _% i8 _
else if( m_nJob == JOB_ACROBAT ). R' w) ~) H: j7 `
nPoint += 50;
% F8 M. z+ B7 l0 S* I else if( m_nJob == JOB_ASSIST )
6 C, q, j8 d5 [! p9 Q+ o: ~ nPoint += 60;0 H, F1 r {% k& h% @6 W+ {! p
else if( m_nJob == JOB_MAGICIAN )7 P$ E9 N$ }& T9 _+ z1 c* ?
nPoint += 90;
9 @$ b b) I% ]; h H" g1 C0 C x else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
7 ?1 c0 z& P+ x j3 ? @ nPoint += 120;
' q8 T9 n+ [. H else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )! m( `4 c) C0 \5 F6 {7 f6 x8 J
nPoint += 150;7 ]6 H, o5 W" G: b# P
else if( m_nJob == JOB_RINGMASTER )
% F1 f! s' i$ B i! m2 ]2 D nPoint += 160;
9 C/ U! y: l s+ \7 [: I% y else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )) u" v& Z2 }, y2 c" g4 q L
nPoint += 180;
: G# u U4 S# z3 P- `9 q% [& F/ u else if( m_nJob == JOB_ELEMENTOR )
S) B' m V p) c* O nPoint += 390;
. D8 Q+ E/ o; S( ?2 |2 _ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
3 G0 w' B! K9 v, w7 H! U$ q+ z A nPoint += 120;' R3 Z3 u' s0 R" L5 V4 c7 ~, w1 E
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )9 F# E; L5 g) S" }' f+ C
nPoint += 150;
/ S% ~/ e4 I4 D3 ~1 S4 l else if( nJob == JOB_FLORIST_HERO )
" F* w( q3 k- A! G8 T* M: w nPoint += 160;
) [7 `; y% ~ [ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 L/ B$ @0 R! G1 }! j: B nPoint += 180;
$ h4 W8 y. C: x" }( t/ u2 r else if( nJob == JOB_ELEMENTORLORD_HERO )" f2 M D( w8 B1 B$ _4 }, r/ y7 _1 X
nPoint += 390;
0 Q1 D# S/ V6 C0 z# d. R6 h+ W, S1 w/ D3 w
AddSkillPoint( nPoint );
7 Q0 h9 T, z; p! m2 n m_nLevel = nLevel;
& D; s& g/ M% z. {$ o7 }2 X+ ?/ M6 g& C) C: B4 H6 t2 y
SetJobLevel( nLevel, nJob );3 h3 e$ t/ Y; F4 L& A( C8 s
m_nDeathLevel = nLevel;
, e4 ~" _, V/ E, r& |" }- b2 W#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
" Z% t( F" X& b, q$ k( a8 } if(IsMaster())5 r7 ?! o) w; ^) F( P+ {, b
{" g) L" E& b6 @3 I; Z- `/ [, n
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! |5 A! o; r1 v
if( nLevel > 59 && nLevel < 72 ), u' x0 p+ h+ H8 S3 i% A, N! f
dwTmpSkLevel = 1;
/ X( M& A( z8 C* A+ X# n9 z else if( nLevel > 71 && nLevel < 84 )8 `3 ]) M5 u/ ]2 O' t4 G9 r/ n c
dwTmpSkLevel = 2;4 R* R; z/ q$ Y$ c
else if( nLevel > 83 && nLevel < 96 )6 H# u- t) h" i/ e, _& T) _6 }
dwTmpSkLevel = 3;
9 X2 y$ g4 c1 {9 R else if( nLevel > 95 && nLevel < 108 )
0 c( y. n( x6 A" q" |3 A dwTmpSkLevel = 4;
* O% s3 o; ?6 q8 ~) X# L; D else if( nLevel > 107 && nLevel < 120 )" \( j6 Q) P2 |" A
dwTmpSkLevel = 5;6 Y* G/ R! w4 I# h) t
for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ M4 k; e% f4 u f9 N { , U& k0 a+ z1 Z. ^4 _+ U
LPSKILL lpSkill = &(m_aJobSkill);2 _7 a C( l4 Y s1 A- F
if( lpSkill && lpSkill->dwSkill != NULL_ID )
; g' b# i+ i( P$ @! e: b) c {
* O: v$ y1 j6 X6 l4 e4 h7 X0 c3 z* V ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- `* E4 @) H8 T1 i if( pSkillProp == NULL )
7 L% e3 Q, @. P* T% l2 k( _ continue;
. x: z% E5 O7 \2 ^; S- w. @ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; ^, p- e+ ]: n- U+ D, @) V* W continue;
- B5 {/ H9 ` B4 t U lpSkill->dwLevel = dwTmpSkLevel;
% B& U. W: x0 G( [+ O7 Y }
6 F1 @6 f+ P4 V3 A) ?) o! r }
& y7 b5 t z0 W7 W: V }
/ f- K3 K3 Z/ Z# o else if(IsHero())( N5 m- d u3 Q% B( R% M3 `4 b1 _
{
- s. Y5 i, @. ~- G for( int i = 0; i < MAX_SKILL_JOB; i++ )
& Q7 W7 P# }9 o/ l6 O2 | { ! B( i7 J. T6 m; U4 h
LPSKILL lpSkill = &(m_aJobSkill);
; d0 ~0 K; E$ w2 E if( lpSkill && lpSkill->dwSkill != NULL_ID )
) ^1 n0 ^" X) ~( N/ R u {8 W5 K- o: V) @ @: V* r: _
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( B# p# b0 X% O% N1 m
if( pSkillProp == NULL )
, C/ y1 g+ O0 z" T7 `# s- B; v continue;/ ~$ J B& X* b( Y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 k+ i* t' Y! _/ @
continue;
" z/ ]+ p! t7 A* z" {, X lpSkill->dwLevel = 5;* |, u. o" n% J! R' ]" D, i! o
}
1 w8 \; G- e( w7 ^- j# Q% }0 b }% `8 ~+ G6 q% ~8 e% V4 H2 U
}. I' C9 W: z! a+ L8 x- |/ I% k1 {, Q
else if(IsLegendHero())3 P7 q& a0 J. o# |6 N
{
2 \ V- L1 T3 H: g- R for( int i = 0; i < MAX_SKILL_JOB; i++ )
! i3 J, S. A, Y7 `" K# X {
8 A# Z* x* e/ n! r' E. n4 L LPSKILL lpSkill = &(m_aJobSkill);
" {% ?3 ?- ~$ j. c" k$ ? if( lpSkill && lpSkill->dwSkill != NULL_ID )
. Q+ ?+ k7 \! ~5 C0 c- W {
& u* \1 G/ N% N+ e% Z* N ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 s3 @, u/ A+ s8 v! c
if( pSkillProp == NULL )
& M/ z% n0 W- f+ K, l3 B continue;: p2 H$ g: \! L: @- {
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 a$ F2 @9 y+ j! T- J
continue;
% Q8 ?7 D$ k' n( v5 V' P' \6 H9 i, N lpSkill->dwLevel = 5;
" o$ G" M( [8 v& J$ p2 ]; l: c }
8 @3 v+ Y- K5 z, k1 L, G6 ` }
4 W; v# v* g% c/ B- y- { H }
$ J8 |4 Y' M7 ~$ _3 d( M; I6 x, ?#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" l& q+ ^* X! b1 E* G/ M- C
if( bGamma )
$ w! p$ Q/ i5 D o! F# R4 u6 R {
9 I$ s4 Q! z/ ]7 n8 X m_nExp1 = 0;7 X8 g8 u; ^3 q, A' W
}/ {' w* q. n" D1 `
x3 }, [8 I* \' A; }/ `6 }
( (CUser*)this )->AddSetChangeJob( nJob );
, H- d; S9 }2 Q: l) a g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );% r; M: n6 K: Z! @3 i
" c2 y. W: v" P6 a
1 I2 D% O" ?3 I" q. O( {9 m4 q6 c- Q
#if __VER >= 11 // __SYS_PLAYER_DATA5 g: D: k _; U2 M" K
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );9 n9 [$ ]- a% B& ?, u: X
#else // __SYS_PLAYER_DATA
1 |: K8 b ~+ a# c3 s0 R. ]; a g_DPCoreClient.SendPartyMemberJob( (CUser*)this );! H- b1 f8 o" m8 Q3 A1 E
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
6 T. s0 c& _ k. M$ K4 p8 [2 c9 z if( m_idGuild != 0 )( L1 _- R; P% G. k2 g
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );) U1 ^% h! b' G: y8 ^
#endif // __SYS_PLAYER_DATA
' ^3 h- e4 D7 B$ z9 h' p, p SetHitPoint( GetMaxHitPoint() );
: E8 J* c! X. P5 n* m SetManaPoint( GetMaxManaPoint() );0 U7 R. |- w ?; I: ]- T
SetFatiguePoint( GetMaxFatiguePoint() );
3 \ d: x. v' i9 |" j* h if( nJob >= 1 && nJob <= 4 )" t5 y( t8 q; l" Z3 B; ]& e9 c
{6 i" ?/ L0 a/ _9 ^% d& G
m_nStr = m_nSta = m_nDex = m_nInt = 15;
# Z6 S3 }# g* M, c m_nRemainGP = 28;
+ q4 b, P* J C% ^ }1 z1 o: Q0 j, ?& {5 S4 t
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
% [4 P$ {0 C3 G; n/ E* A0 Q* I4 i# ~ {
& H% `2 X7 O* m+ b7 V m_nRemainGP = 118;
! L! f3 Z7 r+ o9 i //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;* \: v' D5 q1 k0 N2 N
m_nStr = m_nSta = m_nDex = m_nInt = 15;
: j I9 q3 i- k }
& x! y+ g% c- w* z1 t if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
' }2 m0 [5 Z/ n! e ]; e {. Y: P' k5 f$ a9 Q8 d/ E. Y' @$ ~
CItemElem itemelem;( k* u, D7 U& Y# G
itemelem.m_nItemNum = 1;
' l7 H4 X' b; V- u; y% F/ M; f6 F itemelem.m_bCharged = TRUE; d1 p. v- |9 \% L
BYTE nID;
& x8 b1 i: [- n+ q( D5 p) p& \
$ L2 }2 X$ u/ G" @6 ]) [ if( nJob == JOB_MENTALIST_HERO )" N5 v! i! Q( \8 v0 t
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
( F8 @) t$ E9 Y. a0 L- N if( nJob == JOB_FORCEMASTER_HERO )
5 b% f2 l/ \( k$ z! B2 R1 L( | itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; y( y7 z/ W4 S" H5 P o; d; I7 w
; E6 p, b, C- p% @4 @- t
( ( CUser*)this)->CreateItem( &itemelem, &nID );
X$ v; F% |2 y! ?& v }
& Y0 z/ @* @+ S3 e g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
: t( l( _, z8 P4 [ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 Y2 L( {3 q8 t3 t
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );1 r: I" o& S1 ^( L; c
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
' l2 a* q" C& K7 {( Z- T ( (CUser*)this )->AddTaskBar();*/ l7 C9 \( X% }% @* Z* C2 |
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );- n5 I1 M: q: R0 w
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
7 {3 f4 X1 c7 Q: t" Z# j& ~ ((CUser*)this)->CheckHonorStat();; ~/ n& z# O8 L `% r" J
((CUser*)this)->AddHonorListAck();$ W! L/ L1 O8 b; ?) ?$ Z s
g_UserMng.AddHonorTitleChange( this, m_nHonor);! E. H3 n: M/ Y
#endif // __HONORABLE_TITLE // ′Tà?6 I$ X! D8 i: [# G8 J
}
0 ]$ ^, O' }5 n6 j0 q#endif // __WORLDSERVER, E" e3 ]2 G/ s
} * q/ L+ k- }7 B# b- E; @( {
( j# R! w4 W( i9 r- ]
然后你进入functextcmd.cpp并添加以下9 M8 d* @1 F q
9 P, H9 g' Z; q& l! b
代码:- y: y0 S3 g3 V, |" F6 T6 S
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )- x7 v9 s5 m, [
下面插入
4 D- K, ~; x/ s9 n" b$ G- NON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " D+ x3 r8 k, h- {
# v6 q0 J5 `- g+ _2 W, G
然后你去
$ `( f+ k9 F; q% l5 v# m1 w1 v* z' x1 Q; v$ e L) y
代码:& R/ A0 w$ s @3 a
代码' O9 }: Z/ o. g3 }
BOOL TextCmd_ClearPropose( CScanner & s )
7 }5 m6 l0 z6 I t) K* |- a7 z{
8 u- h" Q1 c6 a- n#ifdef __WORLDSERVER
, _7 s! Z5 @$ K4 c$ P! K a CUser* pUser = (CUser*)s.dwValue;
" n5 c9 Q2 D( T8 e g_dpDBClient.SendClearPropose();/ u% n8 T+ o1 S% G+ _; L
#endif // __WORLDSERVER
3 r# P" U) o% \0 ? return TRUE;
' t. a9 f+ Z- _& O}
# e, ~8 l/ G2 |! x% n4 k下面插入; l% E' }( B- c8 y5 u! O: U
BOOL TextCmd_rebirth( CScanner& scanner ); Z* H+ ]' M" M8 F% v; Y3 |+ ^
{
3 p" q# x$ c6 [#ifdef __WORLDSERVER
# A7 N: x. ]! b; i& UCUser *pUser;
* S3 Y7 _1 S% `2 a: J3 tpUser = (CUser*)scanner.dwValue;8 R' { U: k1 q
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
5 p7 n) x2 C5 {' ]: }pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
5 `. i/ q4 @( c% M# Q- p! velse0 G, @1 T t! S
pUser->AddText("你还未达到重生条件!");% k) \4 [% j" U( ^7 d
#endif
9 I) l& b$ R3 u* P7 Kreturn TRUE;
" @, O: f9 \3 j" V8 u/ Z}
; r E1 ?: Q8 Z! {
& @, B! [5 {4 A# B. m8 x( s, T( i) G* N! ]9 E. j l
' q# }8 z6 R( t# _
; f, p' K r( ~5 G, L* E |
|