|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
2 f( R+ N! s- A* L% L* m
9 Y: b1 p, S2 }4 wMover.h; P; K+ P- [- W2 f; Z9 H
代码:
( E9 `5 c6 A0 n4 @- A1 P找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
9 U8 ~, i# c3 u: B' {
8 d& S% O. B' Q/ g; e5 w下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
- Q. C6 `4 x; [4 f {( t7 Q0 W
+ {* h7 {9 Y& J然后你去mover.cpp添加 F' S4 J6 x; Y6 l; m( ]2 `
: L- |; {. [9 y( Z7 Y5 @$ N
代码:# q: u4 o, T, o" F% r
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )& L- q @7 {9 q0 b# N- j
{
9 S3 J7 q( b( o0 U8 J: {/ L8 e7 }7 U% \#ifdef __WORLDSERVER
. h0 O9 J3 U/ E! \ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
5 h# g) N2 V4 L) y1 D: O( P MoverProp* pProp = GetProp();6 N3 S/ q0 K' P8 c; M
if( pProp )
, g8 ~! S, n; O5 r0 E {6 D7 K) b0 Q. g! l6 I
if( nJob > 0 && nJob < MAX_LEGEND_HERO )2 n0 y9 i) A. {' w
{7 w9 i/ |( ~1 {
AddChangeJob( nJob );* ~4 ]$ K% |6 X1 U, A* p2 K1 K
}else{
" g' F$ O' d4 a9 Y3 H1 L: D7 P return;
+ H: h" Q. h+ T* I9 K4 D }" Q# z5 q* Q- {6 p9 Q- X
int nPoint = 0;* Q( h& Q0 W7 |8 r& I
if( m_nJob == JOB_MERCENARY )# \- w4 U2 z( W) [ n9 Z* g
nPoint += 40;2 t* j( j4 b5 i
else if( m_nJob == JOB_ACROBAT )
9 W( s9 c E1 M- P1 u7 X nPoint += 50;3 g7 ]% e8 B ?8 P" E9 R: N
else if( m_nJob == JOB_ASSIST )
+ v$ g! x# E1 u1 A) [ nPoint += 60;
# |! j5 I; v0 ~% j; v( N% ^ else if( m_nJob == JOB_MAGICIAN )4 L# B2 }. Z& |7 q: E
nPoint += 90;
1 a4 Y# p$ {9 U+ N! |$ I else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
5 B3 `9 }" @. A; U% X6 g nPoint += 120;
% l. l# N- f) K2 `' J# k else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ); n2 T5 K9 s D3 S2 t* L. p# ^
nPoint += 150;8 W1 @- z, c( }+ `" s1 z
else if( m_nJob == JOB_RINGMASTER ): J4 K( l* W8 V
nPoint += 160;; b% h. {+ G+ P
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), U7 S0 K0 ?2 v" i
nPoint += 180;
" V% w! k# Y$ S else if( m_nJob == JOB_ELEMENTOR )
, T E/ O2 y* E. m' d nPoint += 390;
P2 |2 y+ [* A/ x, p: M) n else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
1 ], ?2 t' l/ R# q% m6 x1 Y/ f; j2 S nPoint += 120;
5 i- v3 C3 ]- E: p/ U" X else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
7 Z) A1 b7 {6 w, H* f6 ]+ t nPoint += 150;
f }( T- L6 n else if( nJob == JOB_FLORIST_HERO )
7 }! {2 n% W$ ]$ @) }+ `: B6 F nPoint += 160;& ?" p. H- y) m+ i4 d0 t/ G c
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
8 Q% ~- h1 }' x% _: L nPoint += 180;3 C5 G+ y2 N8 `/ h
else if( nJob == JOB_ELEMENTORLORD_HERO )
' n( R* N) k# e2 U nPoint += 390;
2 I6 H' b1 s8 n# s- w. y) i; j
/ I7 D) Z7 l8 f: t1 W! ` AddSkillPoint( nPoint );
t- l3 P6 {. \$ W4 _ m_nLevel = nLevel;# ]/ Z& b2 R9 g/ {& |
8 o c, A9 w$ T* ~1 q SetJobLevel( nLevel, nJob );% @; m M8 [/ c
m_nDeathLevel = nLevel;4 T+ [5 w9 h* p+ }. @5 K: o) {
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) L; M7 _$ f! f
if(IsMaster())- Q, U% D( A" s% T9 l5 c- C
{
. X- H2 M6 ] i1 k! [/ _ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108, V+ d( a" s% d3 X5 b9 w! T; j) [6 d
if( nLevel > 59 && nLevel < 72 )
- g& T6 d* v+ W% }, {& v dwTmpSkLevel = 1;
9 o( w' k+ @- n4 D* K; W1 t else if( nLevel > 71 && nLevel < 84 )* ~+ j6 ~% d7 u
dwTmpSkLevel = 2;! z8 p0 X6 f$ {" a4 D
else if( nLevel > 83 && nLevel < 96 )
- i7 u5 b, [1 U& k dwTmpSkLevel = 3;7 |$ H, U7 b3 v
else if( nLevel > 95 && nLevel < 108 )* u8 \% W$ H6 u
dwTmpSkLevel = 4;; W1 `6 q8 p) w6 E- F0 N
else if( nLevel > 107 && nLevel < 120 )! s% w' O8 L; m0 U/ i
dwTmpSkLevel = 5;$ }; [! b; ^9 R* j
for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 n8 ?/ g+ a0 i1 Q' \0 g { * x+ M2 x) n& ^, ~% k& C# {
LPSKILL lpSkill = &(m_aJobSkill);1 Z( g# l8 W, J
if( lpSkill && lpSkill->dwSkill != NULL_ID )
1 @: u. k" i' Z3 h7 }' s# U {" [* K7 |# B6 C- T% k9 L% Y+ E6 ^5 ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* B3 f% A, Q1 N; I7 y) Y6 N' i/ u! m if( pSkillProp == NULL )1 B/ i8 N; v7 O) P
continue;- E7 u' [! n# L" V" v, w4 |
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
- d5 X( N5 I/ ~2 x/ f3 R5 I* U continue;
" t8 x. q" _! a+ D1 H- Y1 { lpSkill->dwLevel = dwTmpSkLevel;, ^9 A7 @0 D. t; H+ O6 x, D
}7 i, Q3 r# e3 D7 z7 e4 Q0 S
}
# x3 Y; G6 a* `$ u }7 V1 O& j* o+ c: v
else if(IsHero())
. M4 [$ }' K/ h9 a3 g {
. M, M" Y( s' l [: } for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 V( W8 }( _; u9 g# ]5 z {
$ x: y6 l3 l5 d LPSKILL lpSkill = &(m_aJobSkill);
7 }, T, l' Y- { if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 h0 m$ H) t7 @- K4 @# m {, c* X7 F0 p9 R+ c& o: ?
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. A) T8 d/ c9 r9 i7 u! K8 o0 E; b if( pSkillProp == NULL ); d8 B9 ^7 U- S# |, A( w
continue;" i+ d S& S% }9 L( x5 j- l5 M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ ^. K" G" P; q% Z& B5 D
continue;
/ B. {# `& p1 e/ V5 N+ L lpSkill->dwLevel = 5;
5 O( J% ^# K s/ { }3 a1 v1 p$ ^$ \2 M! F3 j8 z* P6 A+ q! A
}
: E5 a9 c) Q. Q/ Q9 h# ] B }
! O, {! T9 Q4 `! N5 n( E1 O3 C else if(IsLegendHero())
3 A8 A& ]/ ^) a- m {
# ]7 j+ r/ K% l7 ~2 P! b N for( int i = 0; i < MAX_SKILL_JOB; i++ )
& _/ V# y! ~- s: d8 V; { {
% q! f9 N! H2 q9 C8 w& {; w LPSKILL lpSkill = &(m_aJobSkill);$ i7 ^! u$ Y0 p$ V
if( lpSkill && lpSkill->dwSkill != NULL_ID )% m# M; k W0 j. O3 t. ?
{1 O/ W, |, Y" Y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 ^6 S% ?/ j( z
if( pSkillProp == NULL )
7 ~3 ?" K1 R. T7 w continue;
* @. n5 d4 T2 u a+ j2 K" E# G. N2 { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 M$ V* q; ]' b) U% c. E, q/ G2 Y0 c continue;
8 a$ f& p/ G' k+ g1 C1 I% o lpSkill->dwLevel = 5;0 Y- l1 E+ g0 a& p( k; y( n# P
}
7 w8 b: I' e8 R& o }7 \( c: T+ q1 k' o6 v) P$ |$ r0 d
}
% A6 g/ c, _7 o" z3 f8 Y* O#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 ?+ ^% \* u& F6 i. f if( bGamma )
6 l" u/ [+ g& K: B {
) o2 X8 i4 D0 j- R" r2 p m_nExp1 = 0;
. K" V9 I) G5 ~: E; r; I" Z2 Y }
- J0 z+ }6 s& C; P8 Y% W; [' S$ {! k9 W0 t; k0 `; D( n( f
( (CUser*)this )->AddSetChangeJob( nJob );
. H7 w9 O6 d0 E, ~* R5 P6 r g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] ); R) }) [ V L% X4 I6 S
" ]4 D% M' j Q1 |
a7 X7 u5 r8 Z; `4 ^+ R3 R
#if __VER >= 11 // __SYS_PLAYER_DATA2 }* K; ^5 r4 H/ j3 L
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );3 g* U7 `& l) X
#else // __SYS_PLAYER_DATA
" Y4 i/ p9 @/ } g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
j, T9 P- f2 k- `5 O# S; u2 ~' ? g_DPCoreClient.SendFriendChangeJob( (CUser*)this );1 ^* } F* k2 q$ D5 c. c
if( m_idGuild != 0 ), A: q6 ]# o9 [" Y6 t0 f& |
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );0 |0 Q# B2 S/ H* l
#endif // __SYS_PLAYER_DATA
7 c5 e4 B1 f$ C( |* |5 c8 M SetHitPoint( GetMaxHitPoint() );
/ q* T. ^2 M; X. x; w SetManaPoint( GetMaxManaPoint() );
' n% m' n# T* X. t8 q v SetFatiguePoint( GetMaxFatiguePoint() );
$ G V3 O8 \; t8 t1 e5 U if( nJob >= 1 && nJob <= 4 )3 G3 K- G! X6 S
{
6 {0 W9 Z6 s0 E! A2 n3 h: ~ m_nStr = m_nSta = m_nDex = m_nInt = 15;2 M/ J3 x. t( L( H3 Z: O$ R
m_nRemainGP = 28;
& ^; r% Q, v' J! b7 P6 D8 s: K% ~7 P }
+ F9 [& a* Z! e; V if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )% Y/ Y: {# Q2 v4 @2 f( G
{
' r# P6 V9 O# Y# b% G2 D& M m_nRemainGP = 118;
4 G) H& n) J6 r0 G3 C( x2 v //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;4 z* M% [/ j/ k" @( ^5 \6 d& O
m_nStr = m_nSta = m_nDex = m_nInt = 15;
: I3 j% G' t" r; A$ o6 z" ? }+ P8 D7 W7 A/ h) ?. X
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
1 v0 `$ W# r1 z O, |6 c: g- N {* l( W% z) l# l# I/ i8 y
CItemElem itemelem;
2 O- j4 _" X9 W4 J itemelem.m_nItemNum = 1;: B& m$ R3 H4 E7 J. H8 b
itemelem.m_bCharged = TRUE;
' F! ~8 e: R, z0 r+ a. W2 U. L/ p BYTE nID;3 W+ j. u+ S: U( }0 ` h
+ o& E- m2 M; u) o5 l
if( nJob == JOB_MENTALIST_HERO )* N- ~' ?. y6 t. _( o
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;; g, ^! e' S: Z; M& t4 v
if( nJob == JOB_FORCEMASTER_HERO )* n# I6 Y9 K& i: a- M* t
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
$ }: ?% x% _% M
* }& u6 t- A7 ~7 K2 V; X ( ( CUser*)this)->CreateItem( &itemelem, &nID );
5 S Z# c N+ n3 g" ^% |! z% n }
- _& t1 u+ P6 a5 J! P g_UserMng.AddSetLevel( this, (WORD)m_nLevel );6 x/ B& D1 M1 H5 [. K; t, X+ y
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );' U5 f. ]! t: `
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
# f2 ]6 f4 f) N+ G, g/ L" m, y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );' |, C4 A1 J9 z! K4 V
( (CUser*)this )->AddTaskBar();*/* d: \( Q, Z% Q2 l1 ^" `9 O8 `
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );6 k o' n) [, @; Z4 V0 T( Q! L
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
. m# V9 [& W/ J: D! V: j# D+ t ((CUser*)this)->CheckHonorStat();
, `( J; Z& ~- o* [4 V* n; F1 m" J ((CUser*)this)->AddHonorListAck();1 ~* W2 Y& k2 l% L. L
g_UserMng.AddHonorTitleChange( this, m_nHonor);
3 W' ]8 l# V0 x- p( H/ v0 S#endif // __HONORABLE_TITLE // ′Tà?2 g. t! G% |8 V- J+ w
}
8 f" Y3 e8 N5 R$ O#endif // __WORLDSERVER/ g: B. q/ { Y' o' v6 Z9 M$ K
}
7 o4 l5 y9 n& H/ J! Y4 g& F" S; Y, E( x6 Y
然后你进入functextcmd.cpp并添加以下
7 d; Q- g* d5 T; n' q% @' b+ b" z* F2 N" y
代码:9 |, f/ T# _( q$ m
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ) J* }$ E3 d( R5 M# M- a
下面插入# S, o7 S8 U4 n- S' {
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
! ~: m% y0 u& [" o! D# }4 C* @. | Y- d# _9 S2 W" {& b9 _3 G
然后你去
' r, T1 c5 v+ P8 U* e' e" S. P7 o
" {, _* }, I7 j" \6 I$ f' Z代码:: ?6 o8 C: C- C8 x5 Z3 u% K
代码
8 |! l: f: f3 mBOOL TextCmd_ClearPropose( CScanner & s )$ u v9 K% G/ f- y, y
{
* y, j+ s4 S7 M7 p4 |#ifdef __WORLDSERVER
( o3 s& X$ F, F! p' P: R* h CUser* pUser = (CUser*)s.dwValue;. j. H- B/ I! u; {5 U2 _
g_dpDBClient.SendClearPropose();
3 j# W8 Y/ ?2 w" E7 F: S#endif // __WORLDSERVER
! d) ]# P9 ^: [" { return TRUE;* R2 I1 m% Y! Y5 a4 F
}
5 g- r$ t' c u7 j9 G4 S下面插入
1 d9 U0 |8 c7 F6 {% HBOOL TextCmd_rebirth( CScanner& scanner )- G5 R; T4 e" P7 b6 J1 Z( H
{% N! g) k) ~2 j3 U6 d
#ifdef __WORLDSERVER
) @0 ]- `! c8 H, ECUser *pUser;
4 p8 Z v0 n8 U# C4 O& `pUser = (CUser*)scanner.dwValue;
; l* T! B* j9 D1 Y4 i4 Aif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
& \) ^0 z- ^/ s# c& I, ^pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);. m; P9 F, m- e6 n$ \4 P
else# Y9 f" d. n, t
pUser->AddText("你还未达到重生条件!");
$ y' q* z' K* m#endif
$ m. f4 @, t# ?9 X4 o( Areturn TRUE;/ k+ h( \+ u f. N+ I8 v
}
+ _# G; t3 C. |( S' f e; ?& e8 a! B$ O5 R- t6 S, n L
# O/ a+ H6 R* M. o# e
* e% w7 M2 k, M( V- U
0 Y. v, J, w H/ {# W- \
|
|