|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
( s6 O$ F; P$ h
# c" a) X. @6 L8 U7 a$ P& F' D" lMover.h% z) K. H, @# \) G; s, } U5 O
代码:
# T3 M; w9 m$ i8 L找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
- y; P0 ?( d4 y- R, h+ E
: w1 t' H) j% r" Z下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; / s+ Q" i6 k; k' [7 d* F
8 A* t+ W( `7 ~, V8 W然后你去mover.cpp添加; m5 q) i9 {% Z5 y
: G* C u* R: ?: {6 J* E& w# L: ?代码:+ M9 V+ i1 S' R, A' [) e
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )) ]9 Q4 P( X) j( \$ R( Y' Z, _
{; {% ?3 ~7 t6 T: [7 \, a- Z: P
#ifdef __WORLDSERVER
9 k$ t6 p3 i% F3 Q1 W // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó" s2 P r6 y& \
MoverProp* pProp = GetProp();
# r- Y1 j. {% l$ j$ ~8 C if( pProp )/ H$ ?) w$ T: `- a( l/ a; y
{/ Y% u+ }4 |4 A3 Q& h0 c
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
( e: O E& A! l6 B3 {2 g6 C {
& n: u& X0 }/ K$ t6 h4 s3 h, \2 Q AddChangeJob( nJob );
4 P7 _- R w, P7 N% r( U; c }else{
4 k) m. K! K$ Q' y2 G( h' M' [9 X& Y return;
) {5 {& P+ r1 d }
) z( I9 g8 i3 w2 g; f( m2 l int nPoint = 0;
( Y/ S$ M5 V$ y if( m_nJob == JOB_MERCENARY )- O! M6 r! |! _3 P7 V: i h* m
nPoint += 40;
/ }! K: \* V! ? else if( m_nJob == JOB_ACROBAT )( A, {3 E5 o5 c4 o$ z( T
nPoint += 50;
$ |2 b$ b- K! t1 x else if( m_nJob == JOB_ASSIST )- o2 s. S9 T1 U8 Q$ e
nPoint += 60;4 H/ h1 i9 q0 c6 j3 C- K! m% Y( @
else if( m_nJob == JOB_MAGICIAN )8 ~! p0 ?, H6 k( c
nPoint += 90;0 j$ u- `6 j$ g
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )+ C- A" x: P4 }0 ]
nPoint += 120;6 E+ J/ W" a0 Q. L6 e. j+ ^
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: i' d K! A6 ]. x' T nPoint += 150;
+ K i0 j: A; j3 N0 W9 ?( o% s, P else if( m_nJob == JOB_RINGMASTER )
* d) k8 l* p) M nPoint += 160;
+ T0 Q: B8 I9 q4 _9 c4 l' m: K else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )( v: w# U, F7 f6 j) }
nPoint += 180;
8 W# p D& N0 w3 t3 c8 s- e; \ else if( m_nJob == JOB_ELEMENTOR )/ `. U U$ v0 U. m
nPoint += 390;! F2 w& [) {7 _9 c( S- P, w
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% m- i1 F7 f( M: G8 p4 ?, ?
nPoint += 120;; I- n% B9 `$ k$ g, J, X6 f5 l
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )' i) m9 ?! ^7 e; Q3 w
nPoint += 150;, A% }8 E' [0 L" h
else if( nJob == JOB_FLORIST_HERO ); X. H! e' H" W& J/ h/ q1 F
nPoint += 160;
7 Z8 i6 N6 r2 s( ~9 L else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 {7 _5 U6 F5 x! i9 O
nPoint += 180;
* |# S% ~: z# Q. A else if( nJob == JOB_ELEMENTORLORD_HERO )
0 t1 U( c+ T2 r0 m7 c ~( k nPoint += 390;" E0 |4 S6 T1 f4 \
; P0 P6 W4 A' q2 U
AddSkillPoint( nPoint );
, r p+ v4 G4 R1 h8 K; s. x' h* \4 S m_nLevel = nLevel;
+ k: W' w) `4 {. A# `9 w
: ?7 r3 o! B" a; n g SetJobLevel( nLevel, nJob );' E% Z/ n* Z4 `
m_nDeathLevel = nLevel;
0 @) i. i! \4 [5 J4 M% [# w" |4 ~/ F#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
- K9 [9 H e3 ]+ k if(IsMaster())& v# l% V" {# k0 Z4 h
{
) ~! l( a" {. [/ \2 ]1 R- \& ~ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
9 q0 T; D8 K. U# R if( nLevel > 59 && nLevel < 72 )
. }8 P/ x) z! V, M dwTmpSkLevel = 1;7 \" G. Z, `- ?* z6 X7 {; j
else if( nLevel > 71 && nLevel < 84 )/ F" ^- T! u5 _7 G& d6 Y. w7 c; x
dwTmpSkLevel = 2;( B& N8 d( V C ^1 y
else if( nLevel > 83 && nLevel < 96 )' f0 d: C: L/ i2 G/ }5 w3 p9 A5 K
dwTmpSkLevel = 3;$ J' Q9 Q- {5 h- n; }. q
else if( nLevel > 95 && nLevel < 108 )% R- A6 U: P5 H/ e: G9 x$ B
dwTmpSkLevel = 4;
, Y3 ^( \. Q9 R) S, n else if( nLevel > 107 && nLevel < 120 )
5 M6 r% s0 g/ [8 }, D& @5 I+ A. P* M dwTmpSkLevel = 5;
4 E1 v0 G7 f% g+ p for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 d8 w. q. s' J {
3 b' G# _% |4 I: S: C LPSKILL lpSkill = &(m_aJobSkill);7 @/ Q' @4 H' e H! w
if( lpSkill && lpSkill->dwSkill != NULL_ID ): K' q1 J. M8 U
{
; w: w* D3 |: u- }( } ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
5 F2 r+ E5 {5 w* ^+ p% G if( pSkillProp == NULL )
8 J$ _, ~2 M- P! o: S continue;: t/ s. k! T, W, u
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ J2 M) H! g4 l/ V" i! ~ continue;
& T' E L# ?& f8 d lpSkill->dwLevel = dwTmpSkLevel;
( D! [/ j& b6 u }
6 j6 c5 Q7 }1 j3 j: R( F }
, K# k2 N4 }0 q7 e }
, @' G) I, g' M9 L else if(IsHero())
# T5 N, ~9 b3 F" S1 g& h5 E {9 @/ [" Z- _, r0 u! r: ?
for( int i = 0; i < MAX_SKILL_JOB; i++ ) - W7 @3 }+ R, a% B
{
, i4 I3 J% A% v9 t! Z R LPSKILL lpSkill = &(m_aJobSkill); F, i! [2 a6 s
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 K, W7 |5 u2 E
{1 T+ T; N* e( W! k3 {$ N6 g! R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + J) L) X) t s* e% }
if( pSkillProp == NULL )1 V1 T `- `$ I7 a* T
continue;, w& \' \1 j/ b$ V7 s
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, O: D* y* A' Q+ I* P8 P9 n continue;
* [0 w% u9 _% y( w2 q/ k lpSkill->dwLevel = 5;
M3 m, o- o1 l N }
1 Q; C* w/ \: l# W4 d e }% A0 ?- L/ H: A
}
, u# |9 G3 g' w8 l& y else if(IsLegendHero())- t. J6 T3 f- w$ x
{5 {0 Q+ O' M+ y# e# _; ?
for( int i = 0; i < MAX_SKILL_JOB; i++ )
f2 e) v' d' Z: d) r2 L {
5 s# g' ]+ c5 d- f1 o4 e LPSKILL lpSkill = &(m_aJobSkill);
6 ]" O; W. N& l& q. n5 _ if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 d n; H* ^% j* N {
$ D( _: S. [1 B; J' N, B: O: c9 b- ], ~& X ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! z$ A: E3 z+ }* t: [, z. y% q6 r
if( pSkillProp == NULL )
: I( b7 j! ?% g) ]3 ]& O$ d3 [, y: N continue;
" l g' Z3 T0 ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# F' v( J5 i, }" h$ E1 y continue;% @4 ]& [4 Z# ^+ Z- J3 i( Y
lpSkill->dwLevel = 5;! F& \5 @, A$ x6 D) t
}+ E9 R! T' w" T7 y
}
4 p( m. W- q3 F# A$ q1 Z( I" o2 q( \ }% A i" R( r$ S, `; x' h
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 s3 t+ A( y9 \( a4 O
if( bGamma )3 R) A' h# `- T2 g X
{* _* ?' {+ h4 [2 @6 j
m_nExp1 = 0; i I& Q. H1 F/ V& ?
}
" [' Y/ }0 x. B) @/ x5 y' f; t1 N1 T: L) r/ v/ t8 S
( (CUser*)this )->AddSetChangeJob( nJob );
8 T. s+ ^ k" S6 ? g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
1 b; y- ^1 t4 }& k4 J2 _/ g3 `6 s U3 H$ V; u$ H O7 H/ O
) c6 t* E2 L3 E, L i. n) W
#if __VER >= 11 // __SYS_PLAYER_DATA/ X) d) S* @# N. [/ B8 Z& k+ C
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );5 H! F0 i9 e3 S1 M% W, A% r+ ?
#else // __SYS_PLAYER_DATA
. l4 e3 r3 D# {& [9 j3 ]* g g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 w" U8 D0 j3 J w* U$ V
g_DPCoreClient.SendFriendChangeJob( (CUser*)this ); {) F5 Z+ m4 G6 x) p7 w* [
if( m_idGuild != 0 )# i; W, w/ k/ E. s- R- L
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );% A7 Y$ f7 V: Z0 k" ]/ h% i
#endif // __SYS_PLAYER_DATA
" Y3 V4 x$ f" Q: G% w SetHitPoint( GetMaxHitPoint() );
Y/ r$ k4 b# r/ V SetManaPoint( GetMaxManaPoint() );
! J8 D% D: K$ o1 ~+ e. \" Y SetFatiguePoint( GetMaxFatiguePoint() );& d9 W8 r* V/ o: L0 f; y
if( nJob >= 1 && nJob <= 4 )
* U& `, I. Y+ }7 i' @' g* ] {
$ x6 F4 S5 a3 k1 o m_nStr = m_nSta = m_nDex = m_nInt = 15;- [, Y* ^6 s/ }% d
m_nRemainGP = 28;% t6 s8 \ H7 Q% ~
}" n; B+ Z9 Y4 x. }# s
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) v5 e8 [" S: o# q {
, U. n6 M; i- f) C# V( s m_nRemainGP = 118;/ o; E M2 W2 }4 I% g& Q
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 q% }, i% P1 z6 s2 ~4 a
m_nStr = m_nSta = m_nDex = m_nInt = 15;
" C' d0 @" }0 y! C# a, d# @) | }
% T) t2 n! p5 V, W if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
$ {, U/ C8 W/ M7 E0 Y' W1 S2 | {
4 c% Y2 J/ x" e0 r8 M! g CItemElem itemelem;
1 Z( x/ M% `1 o {3 I2 y itemelem.m_nItemNum = 1;& V: `+ C; T+ t- o( ]1 |
itemelem.m_bCharged = TRUE;
0 @6 [6 W- Q! c4 X- P* p7 v* _! I BYTE nID;0 e/ Z2 `( t" E, c/ }: ~: B9 b
9 h& r. y3 ~. m4 M0 K& ?/ K
if( nJob == JOB_MENTALIST_HERO )! j1 \) v) S a! t) f
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 w+ G8 D1 Q2 n: B; O# ~
if( nJob == JOB_FORCEMASTER_HERO )- K; z3 U# H: X$ r, S4 Y
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;' ?4 F1 T. O0 Z- Y
9 E( @( M/ l9 G+ b" `$ ~; W1 B
( ( CUser*)this)->CreateItem( &itemelem, &nID );) q" _7 Z# C2 e" G1 s9 l
}2 P4 g) ~. h* ~& a6 }
g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); B1 _# n' t, d5 D$ s3 e8 b
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
. _1 B# R+ a7 C" {" x) r5 q& F5 Z ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );* U! Y) p0 D: j& _/ U+ @
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );: s9 a+ }9 _* h* i0 E
( (CUser*)this )->AddTaskBar();*/
" x* A" G4 V4 I* v ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
! G7 @, ^8 i4 C7 t& f#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, O3 J; e) U2 x1 A, X4 p. N
((CUser*)this)->CheckHonorStat();: h1 \! Y( @( U$ d% [* w3 w1 f3 L+ _
((CUser*)this)->AddHonorListAck();
5 M6 B: j# h% v% `. K6 J3 H g_UserMng.AddHonorTitleChange( this, m_nHonor);6 A' U8 a5 F' i) i; t8 J
#endif // __HONORABLE_TITLE // ′Tà?7 l) H/ u% Y0 q0 Y- r) M
}5 e& S. t \5 H8 i% @
#endif // __WORLDSERVER. c6 Y& [/ K2 m6 [. j5 E8 @ P
}
5 `& F+ N! N M7 c2 v8 i4 A% t; v6 r; Z3 W7 Y
然后你进入functextcmd.cpp并添加以下
) [ A. n* K' p5 r0 ^! e# @4 P5 {. F; I0 s% Q, i
代码:2 y9 c( `9 y$ C( N; w
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )2 O# P/ I t' Y: f
下面插入
% s1 y4 V: M0 x! M7 X5 T0 r: L9 _ l# RON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
) t% U! L% N# [; l* ~8 K( E# {, d( W }6 F4 [. a$ s! W3 o' E% P
然后你去# l- ?" o" c+ A2 p1 ?- ^2 G6 L/ Z
) g; g8 ], z4 ~' v0 W9 Y$ G( r
代码:
& C) P' ^/ \. m* g: `* N( Q# y" z2 h- v代码, L) B- o, A7 h8 d. ~8 w; O
BOOL TextCmd_ClearPropose( CScanner & s )
. V6 h$ \0 S, H( p1 y( A{
( a& T0 W, r$ A3 z* c+ j# H#ifdef __WORLDSERVER. W) g9 c% m2 y' n& A; @
CUser* pUser = (CUser*)s.dwValue;
2 S: p- u: j) W" @; B: }6 J$ h g_dpDBClient.SendClearPropose();
# Q& h/ m [2 X8 E2 R/ L5 o+ }#endif // __WORLDSERVER
- D7 Y# }/ Q% h; S return TRUE;
; n4 ~) t" n* R}
# m: U" [- A7 w下面插入4 d: `2 D; S3 w8 z4 A
BOOL TextCmd_rebirth( CScanner& scanner )
. `4 n' x+ T3 c/ {$ h& X{
6 o# }8 y q; l+ z# G3 `+ ^8 i#ifdef __WORLDSERVER
8 H; x9 |3 r2 KCUser *pUser;
@5 O8 O) ?* A8 j8 B) M. ^& ]6 x: ppUser = (CUser*)scanner.dwValue;
2 J1 C0 m1 Z( y0 P' ^' ~+ sif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
8 }6 j0 ^8 p7 E6 c! a6 p5 P# y" qpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);. n) a" M" a% m8 V" I
else) F: f1 T# o/ z* _4 S
pUser->AddText("你还未达到重生条件!");8 D! B, ]6 e3 K- ~. u) u+ \* A
#endif- c# f1 Q3 d: ?4 L
return TRUE;/ ~( |1 P( \ s0 N4 q7 ]; G1 }
} . r( y9 q- H! d9 E% j0 H
, J: M# k! P: {$ J/ h# H
L! x) R2 {$ U9 m. Q3 S
' Z1 ^/ G( Z1 S: U. d7 a c: E8 g5 {* a1 x
|
|