|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel% s7 J) o0 E3 y+ ]9 k" l& F' n
; V1 f7 j5 Z6 d$ P( F+ _7 g) y1 \7 [Mover.h, q$ H( L# c+ @) p* r$ _0 a0 o
代码:
6 n2 q; B$ o; P+ l V找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü4 K& p0 J/ x6 \" i
" Q+ s; p1 | v& Q; u下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 5 T( I$ X* R P7 w- D9 C
' ~' Q$ N8 K1 |4 ]0 K
然后你去mover.cpp添加
5 w, R2 J |0 t$ ~1 L l! e
' s# k$ N" g/ j" {/ y- T" p& I代码:
- k- ~4 Y4 b/ l& ~; Y( gvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ) C/ j' e J( [9 k
{
0 d9 G' q) D* N1 E, m: K/ x#ifdef __WORLDSERVER
& ~! K, F6 h$ e4 m2 ~+ u# C5 Z0 V# H/ i // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
0 _9 w" k- _% F! U MoverProp* pProp = GetProp();' l5 K/ L. Z4 g, m5 G+ j
if( pProp ). q# o* f+ a' I9 d G1 E( b
{
3 x/ l+ S, g( f3 K if( nJob > 0 && nJob < MAX_LEGEND_HERO )
% r' d3 ~% M. E+ r N8 L! t {
! g, z- V* b! p& Z* ~6 S AddChangeJob( nJob );
* x3 x W8 m2 E4 Y5 F. w8 U# ]- W }else{
8 K, V' a9 V5 l return;# K6 a; j. J" c+ s7 ?$ V) U
}
) J. E$ v- R v$ N: ?4 k: T! O9 G int nPoint = 0;5 G8 g% i0 ]! d8 s& {
if( m_nJob == JOB_MERCENARY )+ H" S$ G6 o0 Q i- \4 n5 c
nPoint += 40;# ~' y! |; [) M
else if( m_nJob == JOB_ACROBAT )
- q$ ~8 t: e* q- g& c; ` nPoint += 50;
; \" ~5 V+ L" B& }: t else if( m_nJob == JOB_ASSIST )( H% J6 I# O2 @1 h" h. N
nPoint += 60;7 R9 z0 F7 t1 G. i
else if( m_nJob == JOB_MAGICIAN )8 V! y) c4 L7 Y1 ^# G( N
nPoint += 90;
1 g' A) D8 `. Y$ h2 v O7 S# {2 u ` else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% n7 ?: x; E* u( N1 J/ a4 q nPoint += 120;
x7 o P8 s8 s! p5 _& @0 j+ H else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )3 I6 ]2 R6 U }- @) D2 T" Z1 p
nPoint += 150;
& A# G0 S3 E M else if( m_nJob == JOB_RINGMASTER )! e5 l l( \9 o. z" b$ Z
nPoint += 160;
# I1 r* z( s2 b, w' X% w% b0 L$ ] else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), \ m% f7 u& [+ W; f
nPoint += 180;2 d4 I* |5 R: G+ O4 k/ [0 i
else if( m_nJob == JOB_ELEMENTOR )
! q2 t- f. Q, Z5 x; x8 x- s2 ? nPoint += 390;9 R) m" {6 X- j1 u# N! h
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )8 F# Y8 g7 w, k- ]
nPoint += 120;& G$ h4 `; j- U8 a% ?; c; _, }
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% B$ y9 s/ H* f. M* ]5 Z nPoint += 150;
$ S" s# _$ H" r( `2 u4 L else if( nJob == JOB_FLORIST_HERO )) s2 u- l: @8 D5 U
nPoint += 160;
2 }+ `- z$ R) l else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); }! Y2 C! S7 C7 R! I% ^
nPoint += 180;6 ]5 v3 N/ H" A7 C2 p# A# F x
else if( nJob == JOB_ELEMENTORLORD_HERO )* D7 c/ z' q; A; }+ _7 k
nPoint += 390;
2 t! |) o2 z9 ?0 d5 S6 M0 o
( D3 Y( k7 h# L. } AddSkillPoint( nPoint );
% o% B: E) C% u# \ m_nLevel = nLevel;
) j) t+ K g, |6 e# U- c2 d6 v& x
4 g+ U; q* @4 n2 L8 @0 k2 H( o SetJobLevel( nLevel, nJob );7 D T* L1 |" L5 w$ g# L1 `
m_nDeathLevel = nLevel;
- |( K- s9 z9 L: M#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
; t w" N, p* g- x8 |5 Z Z if(IsMaster())9 j% |5 v* o: L7 n: W) o' ]2 v/ _
{
I, G. k# a4 R% w: c$ `: c int dwTmpSkLevel = 1;//60, 72, 84, 96, 108- S2 D# W7 d. h& K
if( nLevel > 59 && nLevel < 72 )
+ N; K% O; J2 ~) ^; t' {5 ^ dwTmpSkLevel = 1;
0 p, P: E' Z. n& ^- z else if( nLevel > 71 && nLevel < 84 )
6 E8 B/ w% r3 V7 W/ w; |+ l9 [; X' V dwTmpSkLevel = 2;
; ?% V1 N/ D: @/ E9 ^9 F, I# U+ E( s/ e& X else if( nLevel > 83 && nLevel < 96 )% O5 n' e$ b q0 k; W. h) ^- d. o
dwTmpSkLevel = 3;: R1 A0 H" {3 R
else if( nLevel > 95 && nLevel < 108 )% a$ _; D6 ~; o3 w0 S
dwTmpSkLevel = 4;
' v6 D* ^! v! v! W% b5 ^ else if( nLevel > 107 && nLevel < 120 )0 k( H8 ?; e# F( k. Z9 c
dwTmpSkLevel = 5;
$ ]' H1 D2 v0 ^6 e0 S for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 A' g4 [9 a. o! S# K: u
{ , o. _; C2 ^0 @; v6 G. Q8 Y2 g- G
LPSKILL lpSkill = &(m_aJobSkill);
9 X* S9 ^# }9 i" f5 O2 N if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 @/ q6 `+ e/ x8 V5 D/ M {; Z3 c/ O8 H/ k$ B( h& F% D$ n
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ [3 J8 e/ ~* {& D if( pSkillProp == NULL ), l K8 O& m, L1 _
continue;
! g+ ~/ W: p- I7 M if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 H# P" a- p* M" p* P& u
continue;
! ~* h7 o$ r+ V- v) x3 u lpSkill->dwLevel = dwTmpSkLevel;; C- a9 y1 n0 K9 {0 l# o
}
, f- O/ M3 p; s) G }0 u( `7 p( e0 ~' ?1 }& c
}
1 } `8 H1 ?, j1 |' `# e! Y else if(IsHero())! _0 N- `( m! f; K
{
: B! C/ w& t! j for( int i = 0; i < MAX_SKILL_JOB; i++ ) # q* u3 N4 f! K% Q, R# K) U
{
8 z z( o% Y* Z) M' D F+ D3 }/ V LPSKILL lpSkill = &(m_aJobSkill);
3 @& e4 d. }9 I% h if( lpSkill && lpSkill->dwSkill != NULL_ID )! T! F+ Z+ B' l5 T9 R
{
6 Z! n6 r0 l2 r ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 r5 t: c! P- X' L if( pSkillProp == NULL )
- o/ u# L7 @# K( `; k continue;; }$ r* c3 F2 r! c& j
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); J/ \- j! E/ O# f; `7 D7 G# a5 ]
continue;. T. m2 S+ h8 u: W; J
lpSkill->dwLevel = 5;
9 m; R, o! S9 A8 F. a; h }
, ]4 N$ C! m0 y }/ f4 ]0 O* E( H) `
}* P% `* d- L, u( G. O; R! {$ R! Y
else if(IsLegendHero())
4 p' x. Q5 P& q8 D {
3 \' s' l1 W$ B6 v for( int i = 0; i < MAX_SKILL_JOB; i++ ) * {/ G* _2 W8 V0 h+ q" E
{
+ v5 ]; E4 x5 _# E LPSKILL lpSkill = &(m_aJobSkill);
% [ K* m* H% H& [( i/ p if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ b, U/ G( B2 C {
B# t0 ^6 @7 k" D ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ q; z* F. d( x1 N$ B2 `, j
if( pSkillProp == NULL ), g% O4 ~0 g; [3 o+ x$ C( e
continue;4 k+ S; ^0 }2 U' I" H4 k+ P* `
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# {% Q5 V% f3 T5 G& f0 e# W+ [# B) Z continue;
& y3 p+ b* r) ~8 R* F5 X lpSkill->dwLevel = 5;, d5 o: ` k* {( j% n
}
5 k6 d/ |' D, s* v }9 O2 F' P" j. B+ I: j$ e3 L1 o/ @
}) }1 l0 ]2 W2 H8 m( c7 S
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
, v |( x F" a/ G& _ if( bGamma )
& b; H6 p4 W, r1 P. O$ z2 ~ {
; N3 n& W; I+ M4 I( o+ K5 `& d! P2 r m_nExp1 = 0;$ ?# Z, |" k0 t7 a2 A' |
}
/ o6 N6 j; y1 G! Y( C# Y! w2 r7 Y1 G
( (CUser*)this )->AddSetChangeJob( nJob );" ~% r6 k. h2 w; ?. _
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );3 ?( Z4 D& A1 E& l# R [+ a
" U0 e( D) h0 p1 v
3 v: v H+ \7 U' \" z. k' a#if __VER >= 11 // __SYS_PLAYER_DATA* o' m5 |; C% f7 K: }
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
- a" x. m/ u* _6 f: E8 m6 b#else // __SYS_PLAYER_DATA
$ H g9 n$ |* Q) f8 C( [9 E g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
5 Y3 c; w) u) j g_DPCoreClient.SendFriendChangeJob( (CUser*)this );' ?* S& [" H Y2 y- u- _: N3 i
if( m_idGuild != 0 )
! ~7 v4 @" Z$ Q" ?8 r2 g; M8 Y6 p2 J; ` g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
$ }9 x+ O$ C! Z$ N( d! d% O' ?#endif // __SYS_PLAYER_DATA
# V+ e+ S7 u% ~8 y6 O% w3 o SetHitPoint( GetMaxHitPoint() );( T" Q: |' B- x# \# h4 |
SetManaPoint( GetMaxManaPoint() );
5 d/ {9 s! S3 ~3 h SetFatiguePoint( GetMaxFatiguePoint() );8 E0 H+ P! v3 c9 r( p; {+ Q
if( nJob >= 1 && nJob <= 4 )1 V4 B0 U6 R6 d" E$ u! j7 f# D
{$ {: w+ ^. o# g: ^9 h
m_nStr = m_nSta = m_nDex = m_nInt = 15;
0 Q/ \1 F& P3 r& S3 F5 @ m_nRemainGP = 28;6 e, u2 J( F0 P1 T
}8 U* T) U% c- Y2 S* ]7 \# H7 J
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
, i6 x3 j* X+ w1 o {- G D: g: b; I1 @0 _7 K
m_nRemainGP = 118;
5 P' ~' k$ P( ]5 x //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
] s% K, }# ~$ z! ` D2 ]0 C m_nStr = m_nSta = m_nDex = m_nInt = 15;/ W0 C" l8 j- o1 K$ i
}
( B7 k# |. [6 k' f' v+ n if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )4 O( Q) u' t7 |# i* E. k: r! E/ s
{; o1 B7 f" ^/ z( _ d( P
CItemElem itemelem;! ~: g, f. [" ~
itemelem.m_nItemNum = 1;
/ D8 s% ]3 T& a* ]- @2 U/ U itemelem.m_bCharged = TRUE;
$ f" K' n; O8 u BYTE nID;8 n5 o' p3 S( v
" O) o1 n+ W* g0 G, o6 G
if( nJob == JOB_MENTALIST_HERO )
. _. o: h* D# C+ H& ] itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
: Z ]5 n1 l% i6 W1 m5 i if( nJob == JOB_FORCEMASTER_HERO )
+ w2 K: Z# q; K# V$ f itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
; b* Z, w0 {- D$ }5 C7 i
/ `. u) M% C: [, e1 k* }6 x; o ( ( CUser*)this)->CreateItem( &itemelem, &nID );
6 X; [& r! \: p9 @7 B }' ~. X3 i5 H: P
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
1 N) f5 M- g5 O9 r, d1 ^ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* e7 Y" d3 e6 U: b2 c) Q ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
5 e y0 k( x, @& D" v /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );1 A" P7 q7 Y" E# P. Y) z2 [* s
( (CUser*)this )->AddTaskBar();*/
: C+ r; _3 [6 x. Q ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );7 |* Q' q0 V5 W- g7 J
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?6 d! K8 V) t- \4 ]! ~5 K) i
((CUser*)this)->CheckHonorStat();! G' }1 M* }% P' M* V
((CUser*)this)->AddHonorListAck();
. L: M: r- j3 |1 r8 z7 R. R8 F g_UserMng.AddHonorTitleChange( this, m_nHonor);5 Q) y8 T4 W( F; ]
#endif // __HONORABLE_TITLE // ′Tà?
$ @: D+ j$ D f+ a* R }
' t5 l; n! R6 ?9 B w! T#endif // __WORLDSERVER/ ~9 o/ J' L# P2 V$ ^- X7 {3 A! r
}
- U$ `+ S# P* T: V9 R( Q# u8 G# Z4 P0 k2 W7 l
然后你进入functextcmd.cpp并添加以下
4 g D( S' y1 v" \9 w/ m9 |6 c3 Y9 k% f1 F2 E
代码:
9 A z& v# C2 S. ?; N$ h9 HON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
6 E* x% M2 E7 Z+ @; u下面插入% L4 j X/ g1 Q( h9 ~
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( T6 ^; A0 I5 ]" a/ y( e- i# E& t7 f% X) S2 U2 p
然后你去
* O- T3 _# b/ ?" C0 Q. a4 x# N7 |+ A6 g9 {0 y8 D' ]& Y
代码:3 V/ D! F$ y# C9 z" R3 |/ h
代码( B4 b) H. M# G' B! \
BOOL TextCmd_ClearPropose( CScanner & s )) k: c, a- N7 C o( c) s) F
{/ d: w7 o- M: C6 L
#ifdef __WORLDSERVER
. g1 F; m% S% }+ T CUser* pUser = (CUser*)s.dwValue; ], u* P `9 Y6 Y7 \ y& q
g_dpDBClient.SendClearPropose();0 a& O. e5 s8 x) |% ?3 o" r1 a0 P
#endif // __WORLDSERVER
* X( m) G7 e `2 H1 a/ I5 F return TRUE;
9 C% {5 }4 m1 i9 C9 l2 E}
9 [# ~$ P; ^% v2 k9 X7 p下面插入9 g T1 ~ M6 o
BOOL TextCmd_rebirth( CScanner& scanner )0 k1 t! M: l+ P8 T. l2 k1 k) E* ]' n
{
% }! v; U7 V5 B+ X, {9 a#ifdef __WORLDSERVER d3 q$ \1 m& n8 a
CUser *pUser;/ h" T( i' U1 [1 M7 B
pUser = (CUser*)scanner.dwValue;
% H4 c5 _7 D4 Uif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())) d2 T! H( g/ E, b7 J1 H1 B9 a5 T
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);9 E L$ z5 T& ~% R. E: X' ~. e) N
else3 H7 c+ F. o6 h- @
pUser->AddText("你还未达到重生条件!");5 [- Y+ l. j# O j& @/ l) l/ d
#endif
5 S2 x! Z1 i( d* V0 D Preturn TRUE;; G: ]! W& e# K$ ^, w
} & J3 d7 v8 D- W4 _" r
* D# s( ~) {6 S* D" {" j
4 N0 k4 w: Z6 ~! s+ S0 w: ]% W0 G2 Z4 L& W& X6 g# F4 w
2 U. d% U0 `, W! h- B6 m) v) u |
|