|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel4 m$ O4 f/ Y: }3 ?9 G3 \
: l8 ?! j; \3 I0 _& `! AMover.h
+ b+ h. P7 { Q3 b4 l代码:
C. n2 J: o4 Y u找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü5 N* k; H6 Y u3 a4 Z) c# N
( t/ k& d. q! f. E, L# R
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 a% b7 [* n* k
- \9 h* C% z r& m# l; O! Y
然后你去mover.cpp添加
3 b! W) u* Q, ^" u2 Q
- ?6 d3 C- m- ]- {1 m2 ~代码:; ]1 F8 M/ w5 O* r. H, o( j$ t6 g1 K
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )1 U, n% n% r) A1 f8 S8 r
{) p8 V2 O; O- }
#ifdef __WORLDSERVER
% H1 X3 x! q7 m: C# o1 A! n$ H // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
; a' Q a/ \; c MoverProp* pProp = GetProp();
4 T5 ~0 ^9 W# K+ B6 } if( pProp )
1 l+ G4 D& Z# i' @0 e# z {
/ K9 i( r2 _( T6 ^! p3 I: U if( nJob > 0 && nJob < MAX_LEGEND_HERO ) N: B3 c; N' y
{
+ E M8 H" x6 C/ | AddChangeJob( nJob );! @9 ]9 Q" ?$ Z1 Z" s
}else{: m& C( H( F i6 O/ z$ v4 `" @
return;
9 P/ ?# |6 }( ?8 J0 f! }. c* { }
/ r0 P- M2 S0 \: ?- e int nPoint = 0;
' z3 n9 [! }" u( U( O if( m_nJob == JOB_MERCENARY )
7 E2 J+ n0 X2 J+ ~0 a+ Y6 \) [' t nPoint += 40;2 W4 V' \& c% ^* j6 a0 P
else if( m_nJob == JOB_ACROBAT )0 \6 w+ k2 G' g' s' G3 h1 }
nPoint += 50;( q% j* n) v& R2 B4 r* d" o
else if( m_nJob == JOB_ASSIST )
1 t# b4 R, z7 Q% K% R9 s; b nPoint += 60;0 I( s$ {! K6 C+ N7 @
else if( m_nJob == JOB_MAGICIAN )
5 v7 Y- \! o4 ?% d' o3 d& _7 S nPoint += 90;, o, u. S. x, v( ?( d
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ): a7 E+ y2 t- {$ r
nPoint += 120;4 ~4 b" E: e, ~( n) b6 d. @0 a
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )+ I' `% ?2 k* e1 I7 @4 t* @
nPoint += 150;
' Z9 J: C3 {; b# V* U else if( m_nJob == JOB_RINGMASTER )
5 Z1 J2 ~) l$ T Y$ H# b6 B nPoint += 160;
: n7 j, \( q8 m! c+ T9 C else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )! z9 n6 a) y; i3 k% ^
nPoint += 180;
6 V, p6 X) _$ t else if( m_nJob == JOB_ELEMENTOR )
0 ]" l9 r6 I) _* ]# m2 O nPoint += 390;5 w0 }& X7 y X: S( z: l: c+ s
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )5 _7 V% y& V3 c: ^1 F6 ]$ q* @& P
nPoint += 120;% o$ b$ y9 J+ r) O
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )% ]7 \4 u/ ]; e5 |6 _: _6 {
nPoint += 150;
2 o; i0 V1 U: F% K else if( nJob == JOB_FLORIST_HERO )
7 Q/ p( t7 c2 {1 N- X" T7 i nPoint += 160;
7 `+ @" c2 J- |# L3 F% g, t else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )% { s& a- k) H: U$ C: F
nPoint += 180;9 U- v% v- ]. k2 [: q
else if( nJob == JOB_ELEMENTORLORD_HERO )% s8 F3 G! e9 R# R
nPoint += 390;5 J5 D! Q# q3 Y- L
, N- V9 s6 u ?/ `+ h; x
AddSkillPoint( nPoint );
/ G) h7 M0 ?5 V) W m_nLevel = nLevel;
) ?/ p7 z5 c2 j% L( b+ u, h0 Y7 j; ]: S6 v* {! v4 C& t& `
SetJobLevel( nLevel, nJob );6 i5 y8 c- S) w! {! z/ D: r
m_nDeathLevel = nLevel;! P% z5 r, i) Y! Y( x) x, _
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans2 y( c* }$ h& d, b
if(IsMaster())
5 k/ U" K9 d5 r: ^ {
1 \9 J' ~; e0 V) { n, V9 ^ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
& t" K( B% G* l( x- F' U7 q$ D& ` if( nLevel > 59 && nLevel < 72 )
" T( d; S6 U2 T1 Z! K dwTmpSkLevel = 1;
( ^$ F }/ q, @ else if( nLevel > 71 && nLevel < 84 )' _' N' w9 k3 W* g6 I$ z* H
dwTmpSkLevel = 2;5 ?+ y: F" B8 o' F- N2 O# h6 ~0 y
else if( nLevel > 83 && nLevel < 96 )* p8 S, w) F! l5 s: @
dwTmpSkLevel = 3; P% j: A) i- j u- t' I" k
else if( nLevel > 95 && nLevel < 108 )
0 P1 U3 S1 z) o! H6 v dwTmpSkLevel = 4;3 c' X% \9 E% C. p9 n
else if( nLevel > 107 && nLevel < 120 )
: q" @* @) l" J5 q. A: I { dwTmpSkLevel = 5;
! `- T+ B5 @8 s! o' S1 q3 p for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 h, e' ?) ]/ P. t {
* u! Q7 D0 q$ j7 a; q7 N( A$ ? LPSKILL lpSkill = &(m_aJobSkill);$ i. r* l+ D. K& M' O, G# y; ?4 o4 M
if( lpSkill && lpSkill->dwSkill != NULL_ID )" x$ T1 s! E a! D- s7 k
{
; X" P2 x& |* D# Z2 K1 b ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : H# Z- G6 z3 ?1 x/ ^
if( pSkillProp == NULL )3 w# Z5 ^) i! v8 z/ O
continue;- e6 U# p3 U* e+ v2 ^" O# I
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)# v" h4 F$ {; G2 K/ ^
continue;! h+ Y8 S7 r5 Z! B0 r
lpSkill->dwLevel = dwTmpSkLevel;, M' W" Q! K7 i3 `1 h' W" ~
}- Q/ t4 ~/ ?+ S% x' v2 B7 k7 [( b/ x
}& B7 S( _5 b2 i0 _) K" n
}: ?9 {& Y- e5 ?4 S3 [3 d+ y" W
else if(IsHero())
' V& h6 g0 K- h& E/ E5 N; ? {
% F4 ?6 X9 g* ]* o T for( int i = 0; i < MAX_SKILL_JOB; i++ )
- d, X/ E3 Z+ X3 A8 @4 c: b* m: |- `# H { 4 _1 I! P" \+ s% ~4 g' L/ e) c! v, M
LPSKILL lpSkill = &(m_aJobSkill);* p* t: T. H& y/ H) p" k" p4 a v* p- s
if( lpSkill && lpSkill->dwSkill != NULL_ID )
% g( o+ P! }, @" J7 @ {% m- x$ B8 ` Q5 _/ a) n0 X" O) |8 g
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 [: }* P: G' z
if( pSkillProp == NULL )- Z l q" u- @, b5 _# e# _0 v+ W
continue;
% _) b; k5 \5 W4 @ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" O/ d: a. v; f+ L- [% G+ ^ continue;" Q& `( i: H) m* N% m
lpSkill->dwLevel = 5;) b& f6 ]6 p" }, h
}
, r. D& T% a- M |1 M }3 ~% o* N. l0 |7 j) I$ d
} b; ^6 l6 p/ Q r: Q8 {
else if(IsLegendHero())7 j' u1 p: m% j2 L
{
8 P, e* Y8 B0 s3 {8 N. A for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 x" t! @' j* `, a { , G$ m9 w& I j3 P% D; @) {
LPSKILL lpSkill = &(m_aJobSkill);, n: r4 C7 Q2 b+ j2 S1 v
if( lpSkill && lpSkill->dwSkill != NULL_ID ); b* v- \+ [( m7 F, v: N& S9 f/ J
{+ u# C; V) a9 X: [
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - n9 B$ s4 a9 D8 \# D V" x' q) K
if( pSkillProp == NULL )
; b8 V, G1 d. ^. K* B+ B; F continue;6 w# a3 P4 b2 O; b4 M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 I& B: T$ a: y) I' z( R7 ~ continue;
& f! `& S, U; ]) g7 |: Z' }0 Z lpSkill->dwLevel = 5;
- f. z, F1 B& o1 }( v+ F' l* J }! ?$ l0 e1 t; q
}8 v1 o& \, P! F2 ~6 \
}
1 c) t0 ~+ [4 m8 G5 M0 t#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 f& i) e% K4 O2 N, ? if( bGamma )$ C5 j' W$ y/ ?; O; a5 g
{ J7 |: ~1 G2 I' k; M
m_nExp1 = 0;4 M' N# C- U: F9 v1 }( @
}/ ~: \3 a9 {& X. X
7 t' s: H4 `5 [9 e
( (CUser*)this )->AddSetChangeJob( nJob );+ a4 s# a, G4 ~& @ p- J, r+ U7 W' ]
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
2 z; @5 W h, B, V& S! r4 d6 D7 f8 x
6 W" R# Z" I. |& x0 X5 \#if __VER >= 11 // __SYS_PLAYER_DATA
7 X6 V& p: W! L$ M# e* ^ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );8 x$ k: {( x8 D) V; x
#else // __SYS_PLAYER_DATA5 k( h- E2 t- g4 R* D5 o9 L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );; R( k/ Y% s5 b$ o1 Q# T( y
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
2 S9 l! R+ l- ]: e- T1 b: p l if( m_idGuild != 0 )% N$ r* i" T$ h. E
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );- @$ S5 W7 x- X. M4 P' G, z3 e
#endif // __SYS_PLAYER_DATA
W$ D7 Q; k- | SetHitPoint( GetMaxHitPoint() );
5 d* [7 n6 d0 {; m! t SetManaPoint( GetMaxManaPoint() );
0 T" V7 i: q6 |; G5 U$ K SetFatiguePoint( GetMaxFatiguePoint() );9 X1 A3 S3 G) I3 N- E
if( nJob >= 1 && nJob <= 4 )
8 L& z. O. W$ j1 e( ~9 F: J6 G' }4 J {
5 M5 c5 u4 `9 i1 x4 B7 W m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ C2 k$ M; ~- v% Q1 T' ~% a m_nRemainGP = 28;
3 w% H2 @& |$ A2 U! p% h }
( X9 C0 [7 h$ w6 w! j3 t3 _8 ? if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )0 q# i0 N, C/ C1 Y+ f+ h
{
1 `) b t. {! W3 @7 o1 F m_nRemainGP = 118;
8 a' w' Y, W& k7 H Y //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;5 E% G* q) C/ o% S: P7 o
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 k9 Z4 u$ P7 P- D# _4 @
} `) |& a3 w! T6 g2 Q
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
9 j; q3 O' q0 a8 @5 U" Q3 | {# i- s; Q C+ D$ H5 h4 _& j1 \* V
CItemElem itemelem;
' n; `/ ?+ Z0 _; z8 a' Y! r itemelem.m_nItemNum = 1;
+ d$ z/ l( Z; \ itemelem.m_bCharged = TRUE;
: W8 h" t: I7 m* ~, ]0 I BYTE nID;
/ N4 y* W; f( {1 |7 V" C6 {7 W# z0 T8 w. G h" s
if( nJob == JOB_MENTALIST_HERO )4 \% O7 _4 h3 \6 H! P" R' d h
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
6 o- W3 j7 B5 H8 S! v+ I if( nJob == JOB_FORCEMASTER_HERO ) v7 d" s. A/ ?7 s) f6 `
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; v1 u8 I- B- D& V7 x9 i4 q4 N
h+ P- A+ B2 k" A5 k8 L/ B- }2 [' X$ ~ ( ( CUser*)this)->CreateItem( &itemelem, &nID );
: B+ Y! n/ t2 C& Q+ z2 ~ }" U7 M7 m" ?1 G8 O& k) y
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
9 \2 h" g; t( y9 F- D6 g; C& | ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );6 K. I+ L6 W" m+ }7 O/ h* U4 @4 b3 W
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
2 H2 k( {! \& j" C2 T" s /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
* s5 P+ [, K* x' F% U* G6 N ( (CUser*)this )->AddTaskBar();*/
$ z6 }+ u/ B& f! t ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
8 g% B# ]- q# D" X: H B0 C4 S" N$ D#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, J* I" B- T1 S2 v- \
((CUser*)this)->CheckHonorStat();0 `/ N( k, m% j
((CUser*)this)->AddHonorListAck();$ n2 i0 u( M, B
g_UserMng.AddHonorTitleChange( this, m_nHonor);
, C2 ]) `8 k8 k/ Z" I. n: X1 N. e#endif // __HONORABLE_TITLE // ′Tà?/ f3 G) `: |$ O# g% Y% q
}' C4 g3 h7 s8 x0 {' C
#endif // __WORLDSERVER
; u# H; l( T2 I8 ^" j} / R$ ~7 K8 A G1 ?7 i1 G+ x
( |& {! L6 \* ]9 W8 e4 y2 A6 c
然后你进入functextcmd.cpp并添加以下
0 b+ K5 @4 g1 e9 ?/ V% h
# {% i3 Q1 M: _2 ^8 }代码:
# y9 m: N- O7 ^2 T8 G0 W: ZON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )$ [4 q+ W4 [% k! N- s8 Y9 ~2 v- Q
下面插入- F4 n# x8 I( N; r8 w
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " `/ m& o8 }" v* U# c/ ^ l6 l
8 x1 C5 C$ q6 [# G8 a+ e) p
然后你去
5 @ x5 M. J4 ~/ s3 M2 x/ E* L
R. i: l, t" ?2 x代码:
: `2 y$ S' @* L! x* z代码1 H- c4 u J% M( v' l' d
BOOL TextCmd_ClearPropose( CScanner & s )6 u. W- \/ l5 p" S. t5 x$ |: `0 e
{
. d% J, \6 h6 _, s#ifdef __WORLDSERVER4 A q3 o% r# s/ L; g$ |' S7 d; _
CUser* pUser = (CUser*)s.dwValue;& z( K$ f |) h% L, W9 a9 z9 {
g_dpDBClient.SendClearPropose();2 B+ m7 b$ [# g1 c9 u2 u# f* w# A
#endif // __WORLDSERVER% u3 i/ j. X [+ I% i( l6 ?
return TRUE;
# L# g% Z7 T. e! ]' w}2 n2 S% h9 P$ ]- E0 l$ a
下面插入
3 |2 i+ m3 Z: Y( I1 w2 O1 wBOOL TextCmd_rebirth( CScanner& scanner ). k+ S- d) h# I! k. N+ Y9 V
{8 p8 I6 Y; i3 z
#ifdef __WORLDSERVER+ `1 Q# E+ ~/ H' q1 _ e7 v
CUser *pUser;
% J4 B3 M0 a# F0 s1 f# ?/ spUser = (CUser*)scanner.dwValue;
: {, q/ y# `7 T5 T2 T% fif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
# m+ L& j# N# Y6 \0 PpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' F- M) c" e% Helse7 n. ~' f5 |3 k2 g q. E
pUser->AddText("你还未达到重生条件!");7 J3 c0 C9 }9 P; n( d, k Z) I
#endif
8 G( B( p$ n1 e2 f: Treturn TRUE;. W+ F) U% J% j) i7 Q3 l
}
& e- `/ {5 _" Z1 b4 Z1 Q9 R$ D9 z5 D- S. u* [4 s% z
& C7 E6 B5 \7 w
4 X) t3 q8 B+ m! R
5 E) ~0 T) o: [5 ~ |
|