|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
4 |2 G+ I3 _- C6 U- d N
0 f0 x$ p" v) s5 a7 g: P- NMover.h5 B( f" j- d( g. s
代码: S3 `9 C4 n" y) G: ^5 S* r# G
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
7 N- q1 ]8 j: {3 T% u0 \3 ]$ z0 n
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
6 B& |3 E% d7 M, O9 `
: r9 [. e5 X0 [4 \( y0 C3 b然后你去mover.cpp添加
5 @& U G5 e/ d9 L" p; ~3 a6 D/ ~7 f5 D- `8 O
代码:7 y, g- c" |; e/ V" W
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
/ O" H% |. j4 ~{
$ S7 l2 U: K, r1 g6 a4 L#ifdef __WORLDSERVER: b3 k% r, s2 q, v/ l
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
: f6 ^' X. q, I) S8 \ MoverProp* pProp = GetProp();
! R5 ]9 p5 o7 |, l3 ~3 y if( pProp )+ O9 I r2 ]3 F$ s( a3 M
{
; N% Q: K4 Y, H, d9 h if( nJob > 0 && nJob < MAX_LEGEND_HERO )
& W9 i# g9 W" n" G# H {6 q. d1 i) b% Q7 t8 A9 f; }1 @8 M$ w! T8 }
AddChangeJob( nJob );& g0 Q* R0 o; R. ?, O% `5 j
}else{+ y2 ~; ]& y& Z
return;2 O$ Y" k& e N& l' L% S
} ~' z( h) B& E# p1 M$ p
int nPoint = 0;
0 U1 ]9 P3 q# j& @, K* W0 B) o: j if( m_nJob == JOB_MERCENARY ), `# M, _/ D! w/ M2 B+ F1 e
nPoint += 40;
$ ?. V+ h" `4 i4 h5 g5 y. C else if( m_nJob == JOB_ACROBAT )
! X& ~+ B# c5 _9 p3 x) q! X nPoint += 50;
; H5 v3 c, l9 q, j else if( m_nJob == JOB_ASSIST )
8 Q' C: [1 a, R& W nPoint += 60;
) K( `6 |( Z$ N9 m else if( m_nJob == JOB_MAGICIAN )
+ V( l2 L* L5 j) n4 {0 V' ] nPoint += 90;
: _- E, w* S8 W' i else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
$ D3 {7 k2 o5 j# a# H# C nPoint += 120;* G% C6 ], Y' G1 R* ^' O
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )$ _' F& u: D9 C
nPoint += 150;
( [; b" \. X! |$ x0 \/ c# M% C else if( m_nJob == JOB_RINGMASTER )7 B' x, M- n1 j+ F8 J
nPoint += 160;
4 U9 C0 p; V- j% K2 w) t) c else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )" ]0 q7 M' m& n1 y0 y
nPoint += 180;
' y# P- f# d: T- T+ G2 U) s2 ~3 z else if( m_nJob == JOB_ELEMENTOR )
$ O/ ?$ ^9 \8 [/ Q% H nPoint += 390;/ \3 E- N. E2 n) X
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )2 i x: H! O o, ~0 }
nPoint += 120;$ M. F, {9 H7 s& {
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
! W _" C6 }2 j/ I nPoint += 150;
; Z* Q+ m. F. U& V! J3 H/ u& w else if( nJob == JOB_FLORIST_HERO )
& S3 h( `2 N4 J) {3 ` nPoint += 160;
) J3 I+ X+ V2 c8 R7 L9 F% F8 }1 l else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )8 [6 d& @' C6 K$ j; _# `. x- Y
nPoint += 180;
) Q/ K" g2 U0 x1 ^ else if( nJob == JOB_ELEMENTORLORD_HERO )
. U: T/ n4 c' T- q nPoint += 390;. D: p- ^7 W$ m. ~2 E( L4 m) h( [
) I2 N5 O* Q; w7 P; S; ~
AddSkillPoint( nPoint );6 Y. ]9 s2 \3 F# y
m_nLevel = nLevel;
# P4 R; L0 `* M2 [# `8 l+ g6 C! P2 B$ A1 ]. Q, @4 ~
SetJobLevel( nLevel, nJob );8 M, z& d7 k, ^" w, J8 d( Z
m_nDeathLevel = nLevel;
; x; S7 d2 p- m1 v( R#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans2 ^3 f$ S) w. M0 e/ R. Y6 H) l, u
if(IsMaster())" U% o& ?# N) C' Z% M- y6 t* g- t
{) T/ e+ h, o! s$ u) u; a A5 _/ H, G
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108& f' l1 }% K! u
if( nLevel > 59 && nLevel < 72 )0 ]+ r, {9 i- R! Y" J, u
dwTmpSkLevel = 1;
, D- R/ L; J( A# B/ k7 d6 \ else if( nLevel > 71 && nLevel < 84 )$ L7 c6 n; r% M9 S0 Y& Q
dwTmpSkLevel = 2;
# e' D& n/ q5 a: Q# u1 c else if( nLevel > 83 && nLevel < 96 )- y s( ^! ~) w, a3 {
dwTmpSkLevel = 3;; a3 b6 J7 a! ~8 z: K3 ]* N/ T
else if( nLevel > 95 && nLevel < 108 )
6 k8 G! z' y- T5 t dwTmpSkLevel = 4;
" ]! Q& h# x- E! { else if( nLevel > 107 && nLevel < 120 ); S, o- C6 `" S# X8 _3 L3 {2 ?" V
dwTmpSkLevel = 5;
: e" `! r& d/ y1 }4 H! D for( int i = 0; i < MAX_SKILL_JOB; i++ )
. B! n# W. k6 F- g; B { 0 H/ j- s+ f6 k2 `- M
LPSKILL lpSkill = &(m_aJobSkill);2 y% e7 W+ l! ?3 |! w3 R
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ h1 f% w. }( A6 I: S: ]+ i
{
/ A7 V- f b" i% T: ~( W3 t$ O3 ^ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 Y. I% o, ~* Z A( \; J; u4 B; b if( pSkillProp == NULL )* o2 I6 b7 K! H) o \, @
continue;
4 u4 d* g- k% \2 w- l9 { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 C/ ]. |7 ~' j, F, O3 j
continue;
& t$ P/ w7 a) e# _8 [& W2 }$ o lpSkill->dwLevel = dwTmpSkLevel;
8 _. }$ A7 v& N: _1 v }
; D# a# L# G# q* _4 a( ^8 v1 {+ K }7 _2 B. B( n$ ^! p3 e4 D
}
|8 D: E5 x" ?& g else if(IsHero())& }; G8 h# u8 L
{
( O4 n# f! M& T* ~4 G for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; f- k x' J A( B& T
{ 3 Z" U5 r' y/ v
LPSKILL lpSkill = &(m_aJobSkill);* B' I' _& T$ b; P+ T
if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 p) T5 E8 O2 s2 D# p$ U n {: c# R8 c. E+ u7 e8 e( j0 p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 6 [0 O' @4 P2 {* L1 p" r; U; M
if( pSkillProp == NULL ): _% S7 l* r. j: E& e3 }
continue;8 L% K H8 f: q4 j
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# X: @/ B6 ]- G( y1 {) V. r continue;. @: q7 K+ f- N( o2 [& M
lpSkill->dwLevel = 5;
) x+ \+ V" h6 e1 p" \7 ? }
! d [# c4 y8 S, f% p+ a3 Y }
2 v8 a8 D7 ]7 v2 U }
( c+ `8 Q, f. H5 d else if(IsLegendHero()) m! v3 o" M6 r$ K5 f
{2 U* C. x: i! }& s5 F" u- W- F& [
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 q1 f/ X. Y/ ?( Z4 W' ^
{ & n+ Z, e7 }. k+ p0 a
LPSKILL lpSkill = &(m_aJobSkill);
; o; }3 ^3 x0 E1 l8 b4 ~. l if( lpSkill && lpSkill->dwSkill != NULL_ID )
. c. y7 ]6 ~% [2 X {
9 v6 z( m2 L; ^, p* u8 J; I5 y ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * I0 D) G; S( k/ M' }0 q3 t
if( pSkillProp == NULL )
9 _0 }0 E; O3 Y, p+ Z; g J continue;% I/ L- R* \" ^7 F# L$ ]
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 s+ W0 D" t5 O0 V0 [& k1 q
continue;5 E: S8 H8 _, @1 i0 y
lpSkill->dwLevel = 5;
' v8 g$ z( V6 H. D& e* E }9 Y% y1 u3 a% p9 f) ], M
}
6 p) K# v: ~% | }) X. _# ^" |! G3 U0 D* n
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 q0 @* }3 H: ]7 Z0 B
if( bGamma )
) i% m) `6 K. ^/ d {- {: w, d. R; r( T$ t
m_nExp1 = 0;
$ `+ `* K( F7 Y: p0 q" S9 o }
2 s. t/ J S* `/ w8 _* O/ _% G7 W' ~/ c7 j0 i) r
( (CUser*)this )->AddSetChangeJob( nJob );; f& M/ V+ u- b4 u( J1 p N
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
n, y5 R7 N' I( e Z; D9 o! W
$ P# G- o/ y$ _
6 a8 o- \7 j8 _4 O- ~) |#if __VER >= 11 // __SYS_PLAYER_DATA9 N8 c9 O- N' \' @) P+ Y) C( p3 p
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );6 G& w1 L% z' H. U9 |8 L6 N
#else // __SYS_PLAYER_DATA% X" f6 w% \) r7 ?7 _
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );. L9 {" B# J- G5 p7 y/ w4 L
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
9 `5 A4 _0 z/ L+ p9 T! x( S6 O8 b if( m_idGuild != 0 )9 d7 v7 D' v& M' x% r5 u, z; y
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
6 m% @- i8 J2 k8 e3 h6 z* g, C#endif // __SYS_PLAYER_DATA
$ w, l! o( `9 p SetHitPoint( GetMaxHitPoint() );
8 F0 J0 a5 x. ?8 h4 E8 G. P4 u: K SetManaPoint( GetMaxManaPoint() );
$ a/ z9 ?- U: h8 L SetFatiguePoint( GetMaxFatiguePoint() );, j& x) ^# {2 h* A; a1 m) J: ~
if( nJob >= 1 && nJob <= 4 )
" s" w; u) ?2 K5 t5 X& X4 l/ h5 [, a {2 \) h* \. p! { k1 v/ ~0 o
m_nStr = m_nSta = m_nDex = m_nInt = 15;0 G- i( W/ |% ], B# h
m_nRemainGP = 28;
4 T7 C' f8 V, F1 P2 M }
) c- @2 S( H2 N( @ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
/ A7 k6 ]& P* J/ @% |3 ~/ S {
6 h7 ^6 f: Y% ~. i8 b8 H* a m_nRemainGP = 118;
) `* @ Q" d2 N6 D! j) N$ j //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;- x4 x* X5 H" n# m6 @
m_nStr = m_nSta = m_nDex = m_nInt = 15;; N$ D3 S0 s5 J* q
}2 [9 N f# Q8 C. O3 r$ x0 J
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
1 E" i( M& r3 K) ^, U+ l) P {
% V- m( L& Y7 F$ W CItemElem itemelem;* C1 z- e# l# R
itemelem.m_nItemNum = 1;# D! Q! Z* s$ p6 O
itemelem.m_bCharged = TRUE;& r% g* a/ w# e, u- n) }: o
BYTE nID;
1 @) A1 W+ n* b T# J: N5 u; L2 b+ @
if( nJob == JOB_MENTALIST_HERO )
d* G, U! p# S) H1 O; o! `; x. y itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
6 B- Q$ r7 |! Y$ Q if( nJob == JOB_FORCEMASTER_HERO )
4 c1 A H! f, c7 v itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
9 c4 [ C% _/ y0 W' P( [% k4 A" T& }2 }/ R3 G3 ]* r* U) t! E8 Y: g
( ( CUser*)this)->CreateItem( &itemelem, &nID );. Y9 F& h( X9 P
}
& h( N' A4 [* @' ~$ Y5 g6 c4 G g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
3 ?* k8 a1 a! a6 U) d! _9 G0 \ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
\3 z) S6 ?1 @) f) y1 |: W ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );$ H* W- f4 x% W3 x5 i
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
( D5 ? E; q2 Z3 }' x ( (CUser*)this )->AddTaskBar();*/4 P9 T$ S1 q# j5 R( D: L4 `
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
' B* e: {7 d: s/ t6 f( m! `- M! ]#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?; |! z+ ~! k7 L' |* `$ R1 I8 o
((CUser*)this)->CheckHonorStat();/ R8 m, F" N* I+ ~
((CUser*)this)->AddHonorListAck();' }3 U/ w$ g: y9 q8 _, I
g_UserMng.AddHonorTitleChange( this, m_nHonor);
* D+ X% |" r! L0 ?#endif // __HONORABLE_TITLE // ′Tà?
. T4 Y$ W0 W+ n2 ?% P }
, M" d/ U8 T3 r; W% T& E! d#endif // __WORLDSERVER+ f; _- _+ M! N0 C- Z9 \8 E
}
) B# F5 i& @; |1 w6 Z5 v+ }* O: U
然后你进入functextcmd.cpp并添加以下
$ W0 |9 E2 x8 X* t1 w C3 x2 c6 p$ v) R: E; n. U1 b
代码:- u9 U* j+ O( C/ K* x, X
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ): _( K, z5 z0 k+ W' a8 {( M7 M
下面插入
& R6 W, h4 T( {* {7 q6 f3 Q8 ?ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) # S6 y8 S/ g W7 p/ p! Z
" B* Q% A1 ]# L3 f, Y/ K然后你去
' S, P+ V$ @& s/ X* f* ]! c. h0 W: A q: X
代码:6 d9 A$ \; x: g, y( x/ s
代码
8 E9 i8 K2 i! d, {3 [( Z' ZBOOL TextCmd_ClearPropose( CScanner & s )' P5 b$ V4 M+ C" k( }4 _
{
- _8 |& S3 R+ w8 {7 O2 ~" ]2 x0 ?#ifdef __WORLDSERVER" i! u3 i" u- b( ~7 Y. X
CUser* pUser = (CUser*)s.dwValue;
# v8 D" P+ ^) x# X g_dpDBClient.SendClearPropose();
! [% _; y0 f& ?' Q#endif // __WORLDSERVER5 G' C- ^' X* y/ t2 O
return TRUE;; S0 y4 ?; J' X, h" f5 {
}
2 v ? y/ H- [下面插入( d- a2 i+ ^+ t5 ]- w. l8 e2 B* f
BOOL TextCmd_rebirth( CScanner& scanner )
0 A ^9 J' R0 m' e. Z{
! H" t+ g C: F, D: ?* Z#ifdef __WORLDSERVER" I* {0 C$ X( ?( |+ U6 C2 [
CUser *pUser;
+ R! n9 H8 v0 R* JpUser = (CUser*)scanner.dwValue;6 P, _) i& w1 t" A( r* @
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
8 E& D1 _( J( ?& i! F* m* b, ZpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);- d$ q, i% u& |. a- G7 U
else
2 V! g# {$ U& {/ QpUser->AddText("你还未达到重生条件!");
0 d3 q. p; ]; y+ L* N7 m#endif
( }9 _" F( p7 i, o+ A# ^return TRUE;
- N. ]. d0 J6 K4 ~) c3 L} 2 d3 N' s9 D% l' `
5 F0 t- D1 U" A- Y' {# n4 A
8 ]1 J4 A: G! w7 ?$ i4 m% s# T/ o9 `1 d* b+ Q; Q ~8 W
8 f4 Z2 a" ?4 `
|
|