|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel/ r! Y3 ]0 U p/ }5 p
6 N* [8 {7 F; }& |4 _/ j7 ?Mover.h
! M( c3 q; a/ i! v代码:
4 k4 a! ]( b# C; T5 Q' w找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
6 h) x) e+ T: I* [! N; R1 L; o4 t! q& ^
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; " _/ p! K) b" Q% Q
8 Y+ Z$ c, h' Y* w) A) n( E' y然后你去mover.cpp添加. J7 d, t5 G( t6 V
" r. R! s$ Q& X2 G2 z' M) g代码:* p1 b* i5 b4 S$ T. \4 S
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )7 n8 W5 T1 U, X' T8 K" O; [9 H" g2 C
{& c; s8 f% q; C9 F, t+ B' ]
#ifdef __WORLDSERVER
- [0 C" J: Z0 u: A // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
2 X ~; r7 n( I1 o- p MoverProp* pProp = GetProp();
0 k- K) l- r" ]& }. X9 c) {) T0 ~( O if( pProp )
' d, _$ q$ Y- q {2 W6 O& E1 `' y2 B
if( nJob > 0 && nJob < MAX_LEGEND_HERO )3 O* s- s/ E0 q0 t# X- r; y f
{
1 A4 R0 R* g2 z: m6 H" R+ ~3 S, z4 v AddChangeJob( nJob );
+ h; |* Y) [' a# F, e: L }else{1 f/ H+ W D3 e) A- u; w$ X
return;6 {3 ~" e. o! V# j
}3 R% p3 S% m2 V# C. \
int nPoint = 0;
$ ^8 K: ]# a- A( T if( m_nJob == JOB_MERCENARY )
( ~8 _' `2 L. S+ }3 y9 l6 Z2 y nPoint += 40;
+ L9 R4 M/ @- O2 E5 h" j else if( m_nJob == JOB_ACROBAT )
* n+ r e, ^& r9 |( s0 z nPoint += 50;
1 F+ a4 ^0 b& U- X else if( m_nJob == JOB_ASSIST )7 s8 X# x" m6 D) f
nPoint += 60;
: s# r( B! `7 Y& n4 r6 I, N else if( m_nJob == JOB_MAGICIAN )
: U5 n. }. r! n$ s' T( E9 l+ } nPoint += 90;: Z J9 G. _5 X2 c$ r
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )$ U# e" T/ d+ e! h
nPoint += 120;
4 K2 k9 w/ ^. s- B H; F else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )1 y) J. Y; g! V& t
nPoint += 150;, P. I4 a: k! i- s( X7 i' l
else if( m_nJob == JOB_RINGMASTER )
+ {! @0 E+ |: C6 b+ Q/ `( G, S0 H nPoint += 160;
2 h+ C+ O5 o) J0 g, A" P& X. k else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
6 c$ w4 J% z, K. o q5 R nPoint += 180;/ m6 K M2 M% o6 g3 j
else if( m_nJob == JOB_ELEMENTOR )1 ^: V. O% M( Z9 y8 ]3 H
nPoint += 390;
0 f" j* B6 d- V6 `$ b8 q% |3 G else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 M, p0 m' @7 q. D* E+ d5 r* M nPoint += 120;
. C2 I+ F* v+ D" k else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
p' a4 a' T/ C! \# y7 a nPoint += 150;. R9 E0 y) b9 Q* x/ g* g v) s1 R! j
else if( nJob == JOB_FLORIST_HERO )
, ~( ?$ ^. S. Y' k nPoint += 160;. z5 q) W9 ]) N; n# d
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 r: H" k. J6 {
nPoint += 180;
1 f' V6 Z% w7 u# j else if( nJob == JOB_ELEMENTORLORD_HERO ) D1 |; w4 N- ]1 k8 R$ [
nPoint += 390;
2 ]. [6 g5 F1 N5 I6 D$ M3 f; O8 t
AddSkillPoint( nPoint );: ` c% v) ]. x8 T) H8 P( q& l
m_nLevel = nLevel;; |+ [' |2 z6 L
% ]# `% s. R$ n* _
SetJobLevel( nLevel, nJob );* D8 f, p. Y* T9 z+ S
m_nDeathLevel = nLevel;
7 F8 e" V: P2 B8 W#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( c+ M, p1 C2 r5 M/ L/ I if(IsMaster())+ |; w5 y& } w) ^
{
( |3 s8 o" F) F8 D* `1 b! O int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
7 Q( E3 I6 _/ @6 o, O if( nLevel > 59 && nLevel < 72 )
( }6 @0 C( h+ s& ]- i' {! u dwTmpSkLevel = 1;
& g! _* Q. x* o! B else if( nLevel > 71 && nLevel < 84 )
" Y& g: w" Y) v dwTmpSkLevel = 2;
3 P" m$ [" f. X" n2 \% @4 c* {* y else if( nLevel > 83 && nLevel < 96 ); f2 k6 p, t5 N" @: f
dwTmpSkLevel = 3;
8 u) P6 T/ L& u0 c4 x4 ` else if( nLevel > 95 && nLevel < 108 )$ q4 v3 g, q. C, a
dwTmpSkLevel = 4;
$ ]5 X D1 j3 p7 I else if( nLevel > 107 && nLevel < 120 )0 L6 }8 R/ f- l! V( ]$ C8 H' v( @
dwTmpSkLevel = 5;
, I2 ?' ]: k9 Y for( int i = 0; i < MAX_SKILL_JOB; i++ ) 8 l9 h [3 w0 J! H
{
v/ j( \4 Y3 O LPSKILL lpSkill = &(m_aJobSkill);
. J) `( ^2 V. p, ^1 s1 Q9 k if( lpSkill && lpSkill->dwSkill != NULL_ID )
! m- @) m7 E8 i6 E9 m {- o: J( x* p4 T7 K+ z; \
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , J# i1 E2 ^7 u8 K
if( pSkillProp == NULL )
( Q, v9 o2 Z- c5 I% G% x8 v! \ continue;# n4 R. `5 B1 x! \+ j5 _
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) J$ @. U9 {* V continue;
2 `* K* D5 h6 n( i4 n lpSkill->dwLevel = dwTmpSkLevel;
2 T. @4 d% L8 D# Z }. \" A. t) D. {, h: D. o
}
+ f+ O; v$ j4 q' R5 A. h }
* ~' d( Z4 x8 ]4 n5 T& m else if(IsHero())+ l1 U3 a: ]! g
{
: d% O) \* u* c i$ B# X for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 B8 n- f2 Q8 ^1 ] { / i/ T0 A6 i2 K" `5 H3 T6 b
LPSKILL lpSkill = &(m_aJobSkill);
: V- Z7 z1 Y. Z p+ U9 I if( lpSkill && lpSkill->dwSkill != NULL_ID )5 P: N; r# ^ N8 }& [
{
$ Z6 P1 ?; e/ e0 N' D! k1 o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( R" V2 a. l) l$ L' X if( pSkillProp == NULL )
6 P0 |/ [) J! `' M2 c continue;/ n7 ~- `# V0 G5 G1 W2 V) I
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); }/ e7 Z( `$ G8 N; c# s$ R) ?
continue;
/ C* Y$ J: p$ g% x1 f& F @ lpSkill->dwLevel = 5;- D1 a* b5 A5 w
}- y, B! B: Y# q+ ?3 j" z
}
P7 n( P- w- `# Z }
9 o4 r+ k& @/ t* y7 R/ q. b0 F) G: J else if(IsLegendHero())
( I) D, O5 Q3 j* P) g: i {
0 s& m9 M% c' d for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 ]& W4 k8 {- u { 4 B8 E: v' S3 T7 v) f1 z% w3 h# L
LPSKILL lpSkill = &(m_aJobSkill);
" L: k1 T+ j( b* L4 H if( lpSkill && lpSkill->dwSkill != NULL_ID )
1 G. z4 ^" @- n+ a, i" D {3 I/ V* |. M1 {0 b
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 _, X* _9 K" ]6 P9 q
if( pSkillProp == NULL )9 {, ?$ R3 t# R
continue;
$ U- Q8 z+ F4 M" f U; n if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. O% U$ F' q8 U: P) K; O continue;, S4 d' G) f8 u. b
lpSkill->dwLevel = 5;
5 |$ {; U* G8 |% K4 ` ?8 ~ }
7 ]9 f* w" V5 d3 d }
" `% y; g2 T& O& M& }6 E }7 }& i1 o0 O( W
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ e5 W# u( K6 v9 Y; P
if( bGamma )# L4 L v% g0 q: p0 M
{
" s( R0 \( |, m8 r, u5 D* ?' o m_nExp1 = 0;
( ?9 @4 z7 q3 p8 M% S9 ?) M }0 ^- y u6 e6 p5 M6 U$ z
! G9 x1 g. F- v4 L
( (CUser*)this )->AddSetChangeJob( nJob );
+ p8 j' ?5 k2 P. `, }* F g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
- v+ c' {3 D' Z9 `. b- o. I1 s& ^5 ?9 U- y4 V2 y
2 v. f @* s; t5 k
#if __VER >= 11 // __SYS_PLAYER_DATA& @4 z9 [ ]0 w' T4 C
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );% i7 L) B, Y f5 b
#else // __SYS_PLAYER_DATA
2 d4 m u8 v5 S+ `7 C- E+ \, ` g_DPCoreClient.SendPartyMemberJob( (CUser*)this );' J- K2 T/ b9 ^2 W. C
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
& s6 F: q& {2 f' [& n3 B if( m_idGuild != 0 )+ r" A3 C8 `9 n9 d s
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );7 \( R( c$ t5 b( J# [
#endif // __SYS_PLAYER_DATA* F& J9 q- i& P- d
SetHitPoint( GetMaxHitPoint() );3 b9 n2 t1 p$ E. J
SetManaPoint( GetMaxManaPoint() );
9 Q3 d: c) D+ Q# q8 k! A SetFatiguePoint( GetMaxFatiguePoint() );
1 Z! A# p1 S7 z( q if( nJob >= 1 && nJob <= 4 )! q2 @ g/ v5 F& ?: @
{: i+ N+ g6 f/ t) L5 q4 y$ J- l
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 {7 h2 {5 G$ K( o2 ?
m_nRemainGP = 28;8 c6 E9 p- v6 u* y: ~5 j4 b
}0 q: k ^3 X! z+ r" w. u$ ` u
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ). p% l: {. ?, N2 |( ~
{
0 Q/ s5 M( _9 e m_nRemainGP = 118;
2 U% K9 ^% m q, Z3 }" T //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
" |/ P) L$ }1 l m_nStr = m_nSta = m_nDex = m_nInt = 15;6 l- T5 n8 C0 K+ E, `4 D; {
}
7 Q. z! o; ~! \8 s; ` if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
5 K& w; j1 @+ J+ y7 A {5 _4 F& T0 W3 f) M5 j
CItemElem itemelem;
& C5 r. `4 `. [8 b5 y. |9 F& v itemelem.m_nItemNum = 1;) @; e) o. x1 A) L' L, @) R7 ^
itemelem.m_bCharged = TRUE;
0 v/ G9 U0 d7 l: W- w BYTE nID;! a6 ?7 D5 z* V- @7 N
8 c4 ?- V, {: |$ U if( nJob == JOB_MENTALIST_HERO )) \* b' K) H6 N3 ?
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
: f" j) C1 Y# [' U) y1 C9 ^ if( nJob == JOB_FORCEMASTER_HERO )( B6 j2 T* h' I1 a( H6 e" w- r$ [
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;0 x) @- \% T1 V) m |6 ~" d" l
: I9 g% f, ^5 j# k6 T) ?
( ( CUser*)this)->CreateItem( &itemelem, &nID );
' f3 P) K( i. y* m. i+ [! ^" B# U }1 T; W4 J2 N# h1 m9 r
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
. F. R( {# V8 s s" i) A' e: G ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );1 H2 c1 f% B/ e/ V
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
% i" {$ T* q$ i, `2 `8 T r7 H /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
+ r, b9 h- H8 e ( (CUser*)this )->AddTaskBar();*/
$ e2 k# Z5 t6 T" y ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
/ `) s( d+ D, h `9 X#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
. \* {9 ^9 t% C! B* U ((CUser*)this)->CheckHonorStat();! k& H6 C/ @ l: f3 b
((CUser*)this)->AddHonorListAck();
% V" I0 |" U0 M% Q, ` g_UserMng.AddHonorTitleChange( this, m_nHonor);* t" v0 o9 a+ m2 V! m4 K0 B4 r
#endif // __HONORABLE_TITLE // ′Tà?
/ H; q ?' _: t8 _, k }
7 ^9 s; o. B, _( k#endif // __WORLDSERVER" j8 M7 w, A, T6 O
}
. s! V3 [+ n3 y, A; g U1 H+ Z% @' i( s+ ~# l- e! r! A7 C" h
然后你进入functextcmd.cpp并添加以下+ ]; ~9 E2 d" ^7 ~- _1 [
( V+ g( C+ z8 u
代码:8 Y& _5 t' g$ N; H& w( z
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )& M% C; y) w) {0 \, q
下面插入6 b9 D% p' c2 ^
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 9 v6 O0 g9 T1 q9 X; h8 y
" S, z9 {% k+ S0 m2 a; n
然后你去2 A7 A/ ~5 b; D& I8 s9 K, ?# N* A
% g2 s {& u3 m' |: `
代码:
# y7 y: N& T8 j/ b: @9 G代码
( k' A: {' ^" Q+ D! _7 x' A dBOOL TextCmd_ClearPropose( CScanner & s )
7 w/ \3 W$ P: C2 i: J{2 W) [& k/ L5 n' B4 E0 K- G
#ifdef __WORLDSERVER
7 S' U* E8 @6 y1 j3 _ CUser* pUser = (CUser*)s.dwValue;6 b5 z1 f4 F$ k/ K; ?$ z
g_dpDBClient.SendClearPropose();2 X& }* c; l8 ]1 J4 S
#endif // __WORLDSERVER
* @! P( `- P3 \: |/ [$ d return TRUE;& @) @% h* D* @6 O" F. n' F# o
}; a; h2 l: G9 k; X8 j) l3 K, [& s0 R
下面插入
' J& G" x; K7 @. IBOOL TextCmd_rebirth( CScanner& scanner )
# g9 O; F$ ?. C4 u/ e3 ~" P{$ `+ y% s7 n0 e" ^; F
#ifdef __WORLDSERVER2 _ S% @2 W$ @$ E6 z
CUser *pUser;7 X4 X" t0 b) F0 m( o
pUser = (CUser*)scanner.dwValue;5 x8 {- s# P% i4 E( R7 h3 B" a
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())0 G; a8 H2 {; X& e& P3 s
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);! e, o" t* i( a3 r, T' u! J$ N( j
else8 c+ L M g6 N. d1 b
pUser->AddText("你还未达到重生条件!");
% Y; x6 I. g% u( L#endif
% P1 h; w! L. ^return TRUE;3 o. n5 o: f# `' P1 f
} / o$ r# _! l% t, C! T
6 q, |+ m& K5 A! N! @, i8 k1 P
$ m1 E; D- w5 P& F; Y, l- _* ]- C0 v
! R7 I- U9 H5 e* `( e: g
7 `9 I# w* m* F8 X8 s |
|