|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
& E" y. ?: d8 Z- k
6 D" f9 ^0 ~$ O' LMover.h
) e! S: x+ Y6 W. h% D* }代码:
1 c) j1 p/ P+ }3 E, k; |# f找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü: y0 o. v9 s4 J5 g& v7 X
/ y7 L1 H- b) P* v+ |* F1 c' ]$ `下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; $ g% p! S6 \6 Y
! |' H5 V* f9 }8 a然后你去mover.cpp添加( w/ E7 J& X3 p3 A) ?
+ N$ y g/ j5 ~3 i- R* O
代码:
e! P% h" M P% S2 s& ` Uvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
9 h7 y) w+ ^- Z0 a/ J- o$ b{
; C1 J& W+ w( u" k) I#ifdef __WORLDSERVER" S: \9 g3 Q- w5 i+ N
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó. J+ e7 C/ _3 X0 [5 S/ }4 O
MoverProp* pProp = GetProp();
% j: c( P p7 n( A8 p. L if( pProp )' H# E( }0 G5 T1 B- r! n" e
{
! Z$ K& C+ z: l8 d# Q4 }: Z if( nJob > 0 && nJob < MAX_LEGEND_HERO )
! D3 j2 ]/ G3 [ @3 w* m {
" O+ j+ E$ A/ j. H1 u AddChangeJob( nJob );
# {/ t) E, c K* X/ d }else{. {4 o) l" h* |3 y
return;
* ]+ H) R* r; e }
) ]" S3 h" j' ~( ?* c int nPoint = 0;3 q2 V; G0 n$ D- ~
if( m_nJob == JOB_MERCENARY )) b; M" n+ F! V$ ]& P
nPoint += 40;
2 B3 x: o" P& _. _9 ]$ ]6 } else if( m_nJob == JOB_ACROBAT )$ y& |: Z# H7 l
nPoint += 50;
5 [9 m) S9 B4 G& m8 ]! ~% S8 Z else if( m_nJob == JOB_ASSIST )! C- ~- ^6 y, Y2 N! I5 V+ E
nPoint += 60;( b0 v$ T. @0 G8 ]) i O' I
else if( m_nJob == JOB_MAGICIAN )
; X# a) w. S# S5 j. e8 L: V nPoint += 90;
( q. h- l: f: u! r* l/ k2 O" y6 ~& c4 A7 Y else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
5 J+ @1 a: x0 N) u! H/ }: w0 v8 \ nPoint += 120;( s0 M1 u k7 H; X9 g
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
+ l5 O. [& }" A5 v4 [; k nPoint += 150;5 P0 h( `2 W& p& |: [
else if( m_nJob == JOB_RINGMASTER )7 J! }' ?( Z9 j- E Z O ~; w; Z
nPoint += 160;1 ]. C/ Z: `- x0 @0 U5 Y/ i1 |
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )4 ]8 V* K) V, v" t" n+ A8 t/ V
nPoint += 180;6 C. o2 v& f4 E3 C3 y( n
else if( m_nJob == JOB_ELEMENTOR )
* B0 m+ _' f& c/ x: K [8 H/ [ nPoint += 390;
' B# y1 r* F) z7 Q# D9 k5 N else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; P, _5 D. r7 A, A B: V nPoint += 120;
( H* Q& E! q1 ?, G else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )% }2 H( ^' |3 q* K, K9 E1 \1 ]
nPoint += 150;& [" a7 Q- A Y
else if( nJob == JOB_FLORIST_HERO )# w5 P$ \! f2 f: E
nPoint += 160;
4 S# m0 Z; N* |4 l2 s- R8 U7 e else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
* i- D1 {8 L9 Q) Q' X7 y! q nPoint += 180;
" [ h2 ?$ [$ ^- N; M else if( nJob == JOB_ELEMENTORLORD_HERO )
" A3 E$ q7 D& `/ q( [! Z2 l nPoint += 390;, t; @! V Y! V- }5 ^+ A, q+ E
" H. _/ q/ w+ O( O0 K AddSkillPoint( nPoint );4 M7 x$ W. e; ]5 E( i9 \
m_nLevel = nLevel;
! ~2 r* e8 A5 m6 {2 ?6 [9 j
1 w( _" J' T$ C SetJobLevel( nLevel, nJob );! U) j! p" R, X: C% d# z, e1 C6 V
m_nDeathLevel = nLevel;2 A& W( T X2 \* ]- \
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. W" o- l1 c9 s; k: I' o$ x: @ if(IsMaster())% f. I/ k1 n6 e. s
{
9 i% Z0 V$ h3 M: L+ ~* B int dwTmpSkLevel = 1;//60, 72, 84, 96, 1084 {' M% P$ N' V* w' e9 S6 v
if( nLevel > 59 && nLevel < 72 )
& H( K4 Z- M2 A1 D6 t& t( u dwTmpSkLevel = 1;9 A8 J) S: x0 x; X7 l
else if( nLevel > 71 && nLevel < 84 )
% [, \0 s# i) b5 m! E9 ` dwTmpSkLevel = 2;
& B' `8 ~' L( U& E6 y9 { else if( nLevel > 83 && nLevel < 96 )/ c5 l$ ~% Q; ]- }& ^1 V7 L; U
dwTmpSkLevel = 3;1 w9 ^8 m: m9 L
else if( nLevel > 95 && nLevel < 108 )9 d' t0 z K+ R) r( G# O' Q$ e! O
dwTmpSkLevel = 4;( y3 K1 L! Z. \
else if( nLevel > 107 && nLevel < 120 )* n6 a" C4 |8 B
dwTmpSkLevel = 5;
# E+ f/ ]# d2 x0 C' d% c5 w for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; H% g4 [0 X* T
{ ) b; o0 d" B$ g$ B$ l* w; e- @
LPSKILL lpSkill = &(m_aJobSkill);
) n8 i/ X) z- h) e$ F/ y if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 T) E. N" F' P% K- f* K7 A: ^ {
4 l( B8 G0 F+ g: z9 | ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( a1 _& w5 o$ X* P if( pSkillProp == NULL ) V8 B' D3 f1 F; U5 w
continue;
3 v m5 r' J7 F+ T c4 \ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ k' ]/ i0 \9 s; A j
continue;
) D0 L! G# B, T7 ]" i" w lpSkill->dwLevel = dwTmpSkLevel;0 @" G$ {; ?; K$ O0 I* J
}
* s9 w4 B& P& z) O1 A }
; r8 h6 n: z- V1 y }
9 S" r1 _( I* ~ V$ P4 U else if(IsHero())8 A4 L; o% Q& j
{0 E/ m1 t1 b+ E& J Y- ?" A2 [
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! y' J4 `# D3 A7 W/ ^
{
/ X" |# T3 U- M7 G/ s LPSKILL lpSkill = &(m_aJobSkill);; z. ?6 z4 i# a& B0 T
if( lpSkill && lpSkill->dwSkill != NULL_ID )
) Y! ~; A! H1 u8 m6 G* ^3 q {
% ?$ Y+ k0 E. `/ I: p ]6 ` ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : Y6 N7 B! C8 B0 x2 ^* A* w
if( pSkillProp == NULL )
8 G) ]. ^/ _2 c4 A( _+ R; f continue;0 x R; T' E2 M- e
if( pSkillProp->dwItemKind1 != JTYPE_MASTER), Y% _( T( d* E7 P8 ]" Q& J- L2 P2 q
continue;
8 T( ^2 @1 O# L; U9 G# g1 B4 J lpSkill->dwLevel = 5;
! H2 ~8 x8 N: m }
4 B4 G5 M5 l* B5 _3 c4 R, }7 T# h: n }7 t* g) b U5 l3 ]4 m8 Q
}
! [& D7 g. X/ j! j1 `4 b9 B else if(IsLegendHero())' }0 B+ a1 I( y0 ~1 l* v: ^1 q
{
# `9 J/ f( c# p. H0 @4 V for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 g$ c2 f" W+ Z+ g' Q( y { - m- \ E/ |5 B7 N* `
LPSKILL lpSkill = &(m_aJobSkill);) [0 S0 U/ F4 h; o% R6 ~
if( lpSkill && lpSkill->dwSkill != NULL_ID ); n( m) |5 h, Z2 N( w7 r& ^
{) y5 ]( ]# ^/ F, M& e/ y6 \9 y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% v9 O7 C0 v( n/ M+ C; P8 a if( pSkillProp == NULL )! s, [5 q+ d7 ]2 ^ R6 F! @
continue;
3 `' o4 L' a: o# G2 [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& b" E) o% |* }/ Q- K% ] ]- J9 s( ` continue;. B- x# |2 w' S0 D
lpSkill->dwLevel = 5;5 X: D% ~: X8 Q8 \0 }& T
}
% j. t4 K+ ~4 Z1 a1 x( c }
: m: v$ P8 h9 W: ^ }
: G+ o7 [& u$ K* O# v#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans E8 y8 i$ A& ^0 Y! }- Z& P
if( bGamma )* a( Y8 F3 t7 X9 B# K! i- Y; S; q
{6 R; e2 Y1 r# I' m( `; b
m_nExp1 = 0;$ ]" c) q1 m+ i. |) h% A% l$ J+ s
}' n0 `0 V" F5 J0 q- u
9 n' f; ~7 o4 W* P, K0 l* h
( (CUser*)this )->AddSetChangeJob( nJob );7 t" p9 A0 k$ }% I! E
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
. A c& O5 Z) K5 G5 }* w* ^8 U# L/ Y, G1 m8 H' @' u! q
1 W6 z' L+ H9 G+ l+ k; x& b#if __VER >= 11 // __SYS_PLAYER_DATA8 B% V1 A+ F8 T& Z+ N Q8 \/ p
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
# K& U+ U& [# O: ^9 y2 b#else // __SYS_PLAYER_DATA
# R$ g& a; U7 B; B7 S g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
) W: x4 q; e0 ]* n g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
7 W* Z1 O# ]2 Z, t9 p if( m_idGuild != 0 )
5 Q* ^) X( A& X* ?: b9 B g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );% h; T# e$ y; K. B1 O
#endif // __SYS_PLAYER_DATA0 F! U3 r) ^2 R* z& l
SetHitPoint( GetMaxHitPoint() );
# E6 K) @) Z% B! I SetManaPoint( GetMaxManaPoint() );
# j# e3 W' }" g8 Y; c SetFatiguePoint( GetMaxFatiguePoint() );0 p4 w* |/ S+ W8 B* K( {" J- k. p
if( nJob >= 1 && nJob <= 4 )& {0 C0 \# N1 m2 o
{! Z, F0 ?# \* Z( X! G) I5 z1 d7 ~# Q
m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 V8 r1 A6 ?; c5 n- k* S$ M m_nRemainGP = 28;
, t4 a0 x2 M& {% _ }8 ~% _ j2 q0 x3 i% u$ {
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
* C8 ~" ~: K" R2 ~' v {
0 b* G5 k6 s5 c1 P. W* I m_nRemainGP = 118;0 O- S6 w( Y: a
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
) I t: D3 p) o& {$ P2 c9 v m_nStr = m_nSta = m_nDex = m_nInt = 15;1 I$ Q9 s$ Q5 z- G# @& b
}
/ |1 Y/ Q( z8 e: p( C$ C7 h1 v1 i if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
9 @3 C8 \8 M) ]; Y7 I {' b, A* k* j5 m1 ^$ q T
CItemElem itemelem;$ Q2 C/ G5 ]- u5 `
itemelem.m_nItemNum = 1;
/ a/ Z8 t- E5 G" B6 _/ o9 _6 p itemelem.m_bCharged = TRUE;+ u4 C7 \- F1 b9 u% l3 R: u
BYTE nID;
6 k+ L9 o3 W U5 q9 C8 t% w: C8 P2 n+ P
if( nJob == JOB_MENTALIST_HERO )
: b) }4 j" M5 [% w6 @ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;( p/ ]0 P/ U) z1 h1 V1 K; O8 \0 a
if( nJob == JOB_FORCEMASTER_HERO ), }9 l5 N0 U3 r5 |8 b/ _3 r! c: f
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
[3 i4 f. V; H' d9 h
1 {; S7 U. c2 v+ U1 I ( ( CUser*)this)->CreateItem( &itemelem, &nID );2 [# p3 I/ H4 y5 M
}; z1 H0 p s) y1 b, D
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
, x! g: V, s1 [/ O/ N) n" \0 M4 x ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
2 V/ U$ K3 J1 A- C ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );# B0 k- I2 `0 G7 Q3 R6 M3 X
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
3 e6 ~/ T. v+ b% a) W/ m/ @5 W( |$ j ( (CUser*)this )->AddTaskBar();*/
* {3 R8 y, f* `& o5 y. k" \6 w ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
8 E- m! X2 `7 q+ A% t1 h. j Z#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
9 Z, z" M2 f2 e, K* I ((CUser*)this)->CheckHonorStat();
. h" b6 _1 V1 d% G ((CUser*)this)->AddHonorListAck(); x G7 ]! ?8 ~0 f+ m" X' `
g_UserMng.AddHonorTitleChange( this, m_nHonor);8 v) ?( q i; T( y
#endif // __HONORABLE_TITLE // ′Tà?# n2 ^; N6 @; x. J9 Z
}
# N8 M( B4 _& E0 b" w. j#endif // __WORLDSERVER
! X* X+ K2 T! p4 Z! g1 p$ W$ L- y& X} - T: M" T9 n6 ]1 L% W- J- t
1 F' M( \5 J9 W% w然后你进入functextcmd.cpp并添加以下4 F1 Z: u: E& E+ Z! a; R7 k3 Q) e2 ~
8 u1 [& t5 u- U( p0 ^0 V) f b
代码:
% p- ], Y, ? P, I( jON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
+ Q( h/ Q. m" D' a* `2 q. z% c: n下面插入
: y5 g* i* K: `6 m1 XON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
2 }+ h- r1 r0 q' d" Y0 L$ v
- e$ S8 e/ b' O5 \然后你去
: B5 o8 V4 {: a* B3 w# P
1 e8 g5 u* P2 k% K2 d代码:
$ B; @. q* H1 G* o' Y9 m& H1 ]代码
B4 E. V" u: H$ D$ g- qBOOL TextCmd_ClearPropose( CScanner & s )5 C0 l; a0 E, _" v2 C
{
0 ?) l; A7 x) P( W#ifdef __WORLDSERVER3 S$ \/ S/ [ |4 u, n
CUser* pUser = (CUser*)s.dwValue;
/ y9 V' P! _# r& \ g_dpDBClient.SendClearPropose();
5 X# R5 S; b- J8 p" U9 K6 b) Z; p: q#endif // __WORLDSERVER0 Y$ F8 u6 d6 L5 Q* q* f3 h" p4 s
return TRUE;
: t5 \, I: T% J0 a}
" a* U5 R% ]* Z/ O3 N" \' ?下面插入
5 P- y" \6 Q) K/ S% ]BOOL TextCmd_rebirth( CScanner& scanner )/ m" L: H8 k* I$ g$ s, v
{9 n3 f/ k, |( G7 Y8 e" k, `6 u, D
#ifdef __WORLDSERVER
* n1 h# U. ^8 ^* l dCUser *pUser;+ m/ P7 d) Q/ ?5 E+ _
pUser = (CUser*)scanner.dwValue;
$ Z6 ^) I# V" u# @! j9 Tif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())6 w- l _ S6 @0 K
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);" {) e' ]# j) `- \8 n
else9 [: e1 A; {+ g& a1 B5 X! B
pUser->AddText("你还未达到重生条件!");
" @* |- M$ M7 M7 o2 m#endif
3 M' d' h" r8 Q: \return TRUE;
1 E( v7 `$ w! r# Z$ z' ^} 9 a; e) y3 ]3 X( h; [
% q: }2 ~' S4 X* f
6 G* F: G8 w' t3 m$ n/ D4 V$ R2 c. r7 Z1 j3 q5 L& L
! C0 O& w) ^, G7 v& E A |
|