|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel: ~1 Z: p( v; t" y4 ]" A
, c- \* v8 w. k. U3 t6 U# [Mover.h
: V) v# Q/ C) X0 V* E代码:' Y! h x a7 |$ y# B6 @0 p
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
8 i. v! b" T. W5 E
$ ^5 j8 c9 W1 U: q1 b' R下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
* h5 I0 o' |! [! d9 x6 T" C3 w. a% F& ` B; {/ u! A T
然后你去mover.cpp添加
; i& M# ?, r; x7 c: n$ L' |) V# k! Z
代码:
2 \7 Y" K& E( J, O1 ?0 |void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
3 d: H2 J3 U' j% K{4 j- U; T. A' j! \
#ifdef __WORLDSERVER$ `- ?3 m, Z7 b9 Q/ x: Z& |0 V
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
r* B, F* z3 u. M MoverProp* pProp = GetProp();
/ T; n& [8 j4 i+ v, m3 z9 f if( pProp )# |& K, U6 L6 Q3 k
{ z4 F0 `& \- v5 T& \2 Y) p0 ^; m
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
1 B5 X( V- i+ p( n( o {9 ^5 }1 c5 g7 y1 u% x
AddChangeJob( nJob );
7 Y/ j) c. o2 c# J }else{* o: T( ~& S- B; |# ~/ V9 ^5 W
return;
6 h# P6 A1 H5 b; d% ~1 D6 u) D. D }
. H+ ^# c2 z* V+ |+ I2 W$ N6 c% \) `9 f int nPoint = 0;
8 E5 j' d3 l% G) a. Y e if( m_nJob == JOB_MERCENARY )
P- w/ C Q/ r0 u9 ^/ b nPoint += 40;
8 M @8 N/ @1 Z/ o else if( m_nJob == JOB_ACROBAT )
, o, k7 I, x" L% {6 ?; c nPoint += 50;
1 l6 o* m9 S/ C/ L else if( m_nJob == JOB_ASSIST )
) G R. {/ k! p) o nPoint += 60;
3 N1 V3 {5 A% q/ V0 B else if( m_nJob == JOB_MAGICIAN ), e3 g/ B, t0 j# V0 {& y9 K
nPoint += 90;$ X2 o- f1 W( X
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )1 Q/ W7 T( t# d0 j
nPoint += 120;, d: L0 `7 b+ [" G! M
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )( ?2 `7 M3 M1 S/ @* F
nPoint += 150;
9 Q7 s& m3 E; s& Y6 {/ J8 p else if( m_nJob == JOB_RINGMASTER )9 d4 m8 U: I2 q* c, |
nPoint += 160;0 a: ]! J6 @( D& W# _
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
: P5 t' N- {7 T nPoint += 180;0 E* b2 a7 o0 m+ n9 Y6 Z( o/ x8 }
else if( m_nJob == JOB_ELEMENTOR )
! x/ u& H) A! B( c% U nPoint += 390;
8 h$ r' f% x3 l2 o F' L& x else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )( U! y( Y. S4 }& ~
nPoint += 120; \3 y) T* G0 L! `/ y2 l
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
" \& \# W9 `4 L nPoint += 150;) E- z2 D M a4 Y1 _9 l% O' z9 W
else if( nJob == JOB_FLORIST_HERO )
4 E- G9 r4 o5 c7 E& T, S nPoint += 160;
9 r* W) B* N0 D( H# z& T else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
2 i5 |8 S R( U) K) g n6 _% Q nPoint += 180;" l m* l+ `8 I' K/ ^ q: a
else if( nJob == JOB_ELEMENTORLORD_HERO )
) Q" Z9 O3 L2 r3 R nPoint += 390;
' T% U# k8 f. ~8 A+ n" M: }- W2 q0 N& ]& u" M" |: V
AddSkillPoint( nPoint );
6 |( Y, v9 R$ z: C m_nLevel = nLevel;
% }- u& ]* C0 ~1 ~
5 v) h# D/ [6 X' C SetJobLevel( nLevel, nJob );) M% h% f1 Z: x( ]# c' D
m_nDeathLevel = nLevel;0 v. [- L/ S/ J2 x6 l3 D
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! ?9 ?: B3 x# L+ }, V if(IsMaster())
" g( N+ @0 e! Z, ^: g9 d {) O/ V) T2 M$ `! C# ?0 k! u1 k
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 ?* H& ^& ?- p% i- F
if( nLevel > 59 && nLevel < 72 )1 @4 p& }: G2 j) N6 x$ p2 h3 P
dwTmpSkLevel = 1;1 n1 N! d# W1 Q
else if( nLevel > 71 && nLevel < 84 )
2 d* m5 _, L; S1 ~1 o dwTmpSkLevel = 2;( I. _2 B+ L/ i& u* C" @
else if( nLevel > 83 && nLevel < 96 )9 N) ]! F" g3 k# K! T8 }
dwTmpSkLevel = 3;5 d( m! c* U# l, T: o( d
else if( nLevel > 95 && nLevel < 108 )$ A1 L2 I( ~4 b2 i* i1 G0 M
dwTmpSkLevel = 4;
8 T! G& L/ I4 I3 O else if( nLevel > 107 && nLevel < 120 )/ `8 r& h: H# n Q, f
dwTmpSkLevel = 5;4 _3 V6 m) D$ a! X
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ F4 t0 K8 A. {( [
{ 1 R& s& p# s8 I- ?1 s/ N: u3 z
LPSKILL lpSkill = &(m_aJobSkill);
0 Y; C6 @% f9 t/ G( H# V8 I if( lpSkill && lpSkill->dwSkill != NULL_ID )& h7 |: o" {7 c: m4 z
{9 o0 B' f3 l) f4 P) l. u+ M
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 E# y+ d0 L) u% \# R
if( pSkillProp == NULL )4 z, F6 i% Y9 h" j
continue;7 g$ B* g7 L, o, o$ Q0 x2 Y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& ]+ z+ N y! J9 c
continue; l1 C; h6 }$ O, m
lpSkill->dwLevel = dwTmpSkLevel;9 x8 S1 S: n9 S0 p3 R0 x
}2 O: N) t! h5 f9 d# E# }6 k
}
2 t/ b% r7 I- { }
) j/ u+ m9 B1 @; B, R J+ K7 B9 U: O else if(IsHero())
. F2 ]; [3 Y: D {- T$ U5 _! C! n
for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 R3 ]6 ] Z4 P0 Y { - u6 f; l8 } F8 i" r
LPSKILL lpSkill = &(m_aJobSkill);
* H4 K% E: |8 w) h if( lpSkill && lpSkill->dwSkill != NULL_ID )
( c3 s$ Q, C/ N ?/ a {
% E6 k4 w! B$ I, w7 Q* w0 F: S ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ z P' f1 @7 D4 V$ E if( pSkillProp == NULL )! f! \. M& `* C) p
continue;
: d1 F/ C! a9 U if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& u$ h' }; q9 z/ i
continue;& k- h; G8 N: M$ u) q2 o3 c1 R6 s
lpSkill->dwLevel = 5;( {% a9 u6 Z$ j, u. }
}! b) w) A: Y. J7 a. @) e2 H8 P
}3 z: W+ v- Z1 C% X9 [; `! O' |
}5 w4 y2 v; n% b% |
else if(IsLegendHero())6 n( u* b9 u M6 F/ z/ Y
{& g1 y N4 n9 A2 p F; K
for( int i = 0; i < MAX_SKILL_JOB; i++ )
# B1 n, B* G' J+ u* ?6 C! x7 [ { 8 ^3 l7 b4 w9 b1 }0 U
LPSKILL lpSkill = &(m_aJobSkill);2 n" ?' t; J/ a* b+ G9 [1 `9 y
if( lpSkill && lpSkill->dwSkill != NULL_ID )6 K- v5 @' e1 y1 L
{. f- E& Y ]8 o! {# D2 [! l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! A P, M7 A- A F2 s, q! K: F if( pSkillProp == NULL )
" A! I. t; }* ]6 v) h3 E continue;
8 ]* N' z8 p, E if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
n6 }# m h! T3 o# O) [8 \ continue;
) R! A0 [# V* y lpSkill->dwLevel = 5;( L% n' m: g9 k# ?. n, Z Y
}
9 T1 [* o( r' _4 _2 Z }
+ x$ z8 Y( K. R! A- a9 V" k% @ }- Y9 }4 ~7 W% w3 d; t% [
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" F# D x0 h, c) j
if( bGamma )6 Q' G: s: ]: c, k/ C1 l' G/ V
{
4 ]: V6 N& ]: X# a m_nExp1 = 0;3 a8 L. g+ H7 {3 i5 z! z
}
, }& r5 m8 R7 |. |3 [" |, G9 B# J
* _. z3 b5 i! Q. A- g: O- P" p ( (CUser*)this )->AddSetChangeJob( nJob );3 C* F/ s4 b; h* p1 M4 S
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );0 A- b# i# N k; [+ u( F
+ Q" P! r! h/ c% d
$ D9 n2 W1 N0 T" i: o T1 H
#if __VER >= 11 // __SYS_PLAYER_DATA
, M" ]) ]8 l6 `$ y' I- \0 R; }* o z g_dpDBClient.SendUpdatePlayerData( (CUser*)this );8 |6 C3 d1 Z5 S% {& M2 m
#else // __SYS_PLAYER_DATA7 L' |2 ^; y1 ~) S) ]: e' T, ?& A
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
3 R9 k1 ^4 Z- x5 v g_DPCoreClient.SendFriendChangeJob( (CUser*)this );. z7 U8 t9 d# ^, Z7 S2 v8 E
if( m_idGuild != 0 )
m; C1 R) B- @4 a7 V g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );8 z, U( J0 a0 J" G0 B8 Q
#endif // __SYS_PLAYER_DATA9 y% Y" ~( F! _; P/ T0 m8 |) o$ p4 O
SetHitPoint( GetMaxHitPoint() );, \' c( x V2 G9 r: y- m
SetManaPoint( GetMaxManaPoint() );
9 ]3 }0 l. a, d3 |, N SetFatiguePoint( GetMaxFatiguePoint() );6 Y: Y9 Y2 \" l9 B
if( nJob >= 1 && nJob <= 4 )7 e. z7 `# M) L" d* V. n, H
{
# a( ]" p: t, p$ X m_nStr = m_nSta = m_nDex = m_nInt = 15;8 D1 s- f: Y0 L$ b$ t* N$ z1 g
m_nRemainGP = 28;
3 A: V/ \: H o0 Q$ F7 H; A2 e* o }
: r3 z8 u+ H: m8 O- K- v if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )! V+ B0 `6 L, _; A4 }0 R
{( V' l! W. x/ r# s5 j
m_nRemainGP = 118;& T: c! ]) y6 F6 y5 m0 Z6 ?
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
: u! D2 T/ o" ^9 x) p( u) K m_nStr = m_nSta = m_nDex = m_nInt = 15;5 N& x. C u! m& `. T/ _! N1 W
}
5 c5 G: {" T& v if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )( o( R& W% P- G: G J/ c
{; |5 ?. q1 i8 |* i S) V
CItemElem itemelem;
+ g3 _0 j6 \: a" q itemelem.m_nItemNum = 1;* I# O# V: o( _4 p+ C
itemelem.m_bCharged = TRUE;
. M& i( y4 q1 ]+ ^* j BYTE nID;% g% \5 `/ \' W* _
( D% I1 t* L/ f1 D0 {- \! ?' C
if( nJob == JOB_MENTALIST_HERO )
% m; ]2 m9 z) d8 B" U8 O( W" z M itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;3 y% `' k9 x" g4 [- {
if( nJob == JOB_FORCEMASTER_HERO )
% L; x# |4 s$ x* \9 H itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
/ U4 A' @* j3 w& `" L9 m7 a7 v3 T' W# n$ @& Z: v1 z. T
( ( CUser*)this)->CreateItem( &itemelem, &nID );
{. Z' S" v- y; Q3 _0 k/ g; Z }
- ^/ M3 L$ Z' D3 x) `2 \ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
& n3 c. O' b6 _/ k) i( k, d# @ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
! B; g8 X. K( g7 h ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
+ S$ N3 F. F( W$ _9 Z1 ? /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );. g& N6 L$ M6 D! z
( (CUser*)this )->AddTaskBar();*/
5 k7 t5 H+ k, A% l* _ ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
; o/ w. O7 Z* E' n; k#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?5 }3 T; K# F( r* ^. V# a
((CUser*)this)->CheckHonorStat();
% u$ b! q3 u$ @% n ((CUser*)this)->AddHonorListAck();5 C8 p: q" A z
g_UserMng.AddHonorTitleChange( this, m_nHonor);
: o% Q/ \2 o/ U. g* d% q#endif // __HONORABLE_TITLE // ′Tà?% ^) [5 F" n3 i2 Q% @" ~8 c
}
6 N$ d) S+ V$ K1 K) S#endif // __WORLDSERVER
9 h6 M6 w8 ^% I5 d! P0 U5 [} % J2 y9 o: r: ]0 p7 E$ F# ?
' \' _ p1 x$ J
然后你进入functextcmd.cpp并添加以下
8 O6 ]0 T( r. ?9 P/ h# h) x( J! c( ^) m4 @/ j* C8 c3 I2 s% V
代码:- E% j5 v: ^. q8 T8 z, V
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
/ n6 E5 r4 G, j* W下面插入
3 w6 R2 [5 x! c" |& N- ]; j' lON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) # D- p V( U I6 I. r$ f
$ N/ |+ l: L+ |/ _然后你去% ^; G$ }6 X3 H% U/ ^
, j: V$ W F6 q1 E2 O. Q$ P0 [- I* N+ l代码:
" a% c7 f: B% {( Q. j. O; |代码7 N, X" B4 J' K M4 {. x8 ?
BOOL TextCmd_ClearPropose( CScanner & s )& P0 @" h; x% Q# n: @
{
# H/ w- C* |. K* m u' T; @, A#ifdef __WORLDSERVER
/ e4 Y5 p9 N- U9 ^9 O CUser* pUser = (CUser*)s.dwValue;
/ a" G& e6 N6 N+ q' l g_dpDBClient.SendClearPropose();) k7 |6 I" P$ C0 j/ w' F
#endif // __WORLDSERVER& r% b' U. n9 w) h2 F5 ?' I% e
return TRUE;
0 c) | B; u% M/ J/ U}1 x7 w3 b+ M( y7 y
下面插入
U: N7 y+ s9 j \5 S4 U# JBOOL TextCmd_rebirth( CScanner& scanner ): l) I4 O- E3 w( ]/ e9 G3 c" i! ^0 B
{
X4 K, A" ] Y+ i% D0 z#ifdef __WORLDSERVER4 V" t4 P5 P) c" q+ e
CUser *pUser;; o- H* x* d% c8 Q' y5 g! Z, f. H& P
pUser = (CUser*)scanner.dwValue;4 B# Z6 z, \4 Z/ C7 V6 a; O3 Z5 c7 K
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()), |: D. M) L, O% ?" b% N4 ?( k$ A
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60); n2 w0 c9 ]5 |& p
else
- ]# }0 t/ s! l* VpUser->AddText("你还未达到重生条件!");
. A7 {. J3 C% H9 Z$ d- x#endif4 N m' X$ g* ^
return TRUE;9 m+ o: L, b& d# X
} 9 Z4 M% n" C% Z5 l% v) j8 L3 O
9 {4 @3 M0 G1 o- L& W) S% q) u" p6 v
$ M0 q" p6 m! Q, Q! j+ Z/ P0 X1 K
, Z4 F6 \) b5 y4 G |
|