|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel: F1 Y5 N/ p+ d4 j6 M! {0 X- X' r1 [
& D8 z5 V6 c+ [- n
Mover.h( \3 k* _+ n$ _( H8 h: T2 @4 h2 X
代码:
a) q- _; L4 N- j找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
- z1 b6 w* L( N$ P
+ Y8 _3 r: E Y9 j/ h) G下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ' ~* E S& J8 @8 |% W3 h2 ~1 w0 a
* f; ]! O' d! S3 b3 Z, b
然后你去mover.cpp添加% D; n" s W- q
- ^0 s. l/ w- W3 B/ m
代码:( ?0 e3 C+ c1 i7 X, w5 z G
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )) N9 D3 L9 b9 y% ]- S
{
8 F5 H S& F8 Z+ m( f* J#ifdef __WORLDSERVER
; r# k1 E, g4 w0 z& l1 ] // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
6 j: X! _- p6 V7 a! [3 J" k MoverProp* pProp = GetProp();
' p6 v I B$ f$ \ if( pProp )" b4 X$ U6 |: C, @ s
{
, A9 E& N7 |4 }0 ^, L if( nJob > 0 && nJob < MAX_LEGEND_HERO )! J+ h5 W3 p) Z B- J
{
* d' k# F, {& \9 ~6 o! a AddChangeJob( nJob );4 O( j% C. ^( J' p5 F
}else{
`0 K& v: ~; f) B5 K1 g% g7 h return;
2 @) h! U& i7 F5 H& L) o g. ]# e. p8 U }
: _ q+ }3 N# m* D; M( { int nPoint = 0;
" ?1 N o2 |# q( u; Y ^ if( m_nJob == JOB_MERCENARY )
, k( O( r, ]+ d2 H/ W nPoint += 40;- F; |6 @7 l& o: j& T
else if( m_nJob == JOB_ACROBAT )
$ w1 J# e3 l& ]$ D: h" ~# m nPoint += 50;' Y- w/ c0 \) }9 Q: n
else if( m_nJob == JOB_ASSIST )
5 \* n9 p# _; W" j& E9 d' v nPoint += 60;
* ~! w0 U5 E0 \+ L. R* W else if( m_nJob == JOB_MAGICIAN )9 v5 W* M: W. j6 l) }
nPoint += 90;* [' h" i' }/ m4 c8 p
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )) q4 J) I% J2 v/ \1 a0 }
nPoint += 120;
8 ~) |: s; d5 O else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )0 G9 c1 H& {4 z- n
nPoint += 150;& h- O' {2 t% a6 ~: _
else if( m_nJob == JOB_RINGMASTER )
$ X! r- b* ^, V nPoint += 160;
. M W+ p6 a/ ]$ Q5 P( H/ z else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
$ }" s6 ~) z7 o0 G nPoint += 180;# P: V4 l5 p& ^6 k. j
else if( m_nJob == JOB_ELEMENTOR )7 U2 L) I. ~6 ^3 {8 a
nPoint += 390;
9 o7 c# T: ?: D3 Z& i else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )5 E- ^5 n! ]+ ~: m9 v
nPoint += 120;
I% c! K3 P0 ]( K* w( B else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )* X3 H, ?! Z& B& H& q) c
nPoint += 150;
9 |& N; t! ^$ M ^( |4 Q+ \ else if( nJob == JOB_FLORIST_HERO )
' E: S8 g8 O& r; l, M& _1 @1 m nPoint += 160;
9 J; k$ V; M! n1 \ v5 A k# { else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
4 v# S7 {7 l& x+ R* W& } nPoint += 180;" T- C8 n3 |! c- H% N6 V
else if( nJob == JOB_ELEMENTORLORD_HERO )
2 @4 ^9 R9 d. U6 R/ a5 v: A! W nPoint += 390;) |7 t8 N1 q7 Y8 E1 E% A2 O; A
9 T2 Q5 i8 `$ O, Q# {2 {
AddSkillPoint( nPoint );4 Z! J/ t( s8 L* f' G" {9 \2 g! S
m_nLevel = nLevel;
' Y' k6 f5 [ h9 `
. \4 l, s7 H) V SetJobLevel( nLevel, nJob );
6 I6 I# o+ _' `; s1 C% k m_nDeathLevel = nLevel;
! u) E; e5 @ w# ?! H#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ m' t9 c& D; J if(IsMaster())
0 }0 }1 Z! A; x* l( [( g {0 K; w6 T# B7 S, _% ~9 J
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1089 K ~. L5 z! t2 M3 T5 a
if( nLevel > 59 && nLevel < 72 )
8 g |0 }- v) [. Z6 E, g dwTmpSkLevel = 1;5 f9 u6 ~) a" F3 `+ I2 r: F) w
else if( nLevel > 71 && nLevel < 84 )
o5 g) e! U" g- @/ D; | dwTmpSkLevel = 2;, ^; o1 ~. e5 \8 ?
else if( nLevel > 83 && nLevel < 96 )3 R& c: h4 y( a6 R a6 i
dwTmpSkLevel = 3;& n( w# ~2 ^0 o6 U% j6 {
else if( nLevel > 95 && nLevel < 108 )
. `0 g, I% f- e: t" |8 s/ }+ Y dwTmpSkLevel = 4;
5 [. z. v- t$ D0 X/ |9 x) I2 h( e else if( nLevel > 107 && nLevel < 120 )
; I! [2 v R* J- n) G, K6 M i dwTmpSkLevel = 5;% ?* p5 r9 N' R. l' }
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 b! @- }6 Q0 Z& g9 f { * P/ r L. M! I% D1 S6 V+ U3 u. O8 ~
LPSKILL lpSkill = &(m_aJobSkill);
4 v3 E; N0 B# K& B; V0 w if( lpSkill && lpSkill->dwSkill != NULL_ID )! M( F, G9 w6 m3 Q) N2 d
{
2 [! M+ s) H: }' J8 n ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; B: y; ~3 Q ^& g5 S& s3 M8 @ if( pSkillProp == NULL )
; x6 i+ K$ {' V* r+ j# ^+ d% V continue;
9 a" X% n, E6 i ^ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ ]8 j; j* s! ?$ T9 \6 v& H3 ^ continue;
/ G# R8 `0 h# e V5 O lpSkill->dwLevel = dwTmpSkLevel;
8 L# q( c8 U, {1 \* Y4 b* Z }' M% e* m5 k, \
}
% g/ t+ C4 _9 [* x/ y- o1 R }; r$ g3 }7 C* I% o% B$ T
else if(IsHero())
5 o' U- F. `6 P; A {) x6 ^ `2 J V6 }
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 A0 P' {# y' x, _+ v { 1 [9 \( h/ i, I. ~# X' q
LPSKILL lpSkill = &(m_aJobSkill);
7 D. z! |% g( J8 \* X' ^; f5 c6 ? if( lpSkill && lpSkill->dwSkill != NULL_ID )
) a& [7 h! X1 B# {: v+ Y {
. w$ i8 z. l4 ~; N1 ?* z2 W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 6 q1 c' Y8 d& K+ Q
if( pSkillProp == NULL )
( b% ]/ O# f/ _/ \+ n continue;1 I" f5 K: @* \+ D& W/ ~
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 ^( `5 k0 [; j continue;# G. a$ x, O( y2 a) g+ e6 D# n( L
lpSkill->dwLevel = 5;
1 V8 O" S5 g( M$ O1 e0 u. b }
6 @4 v W J- R* Z5 {4 ^3 @6 ~% a! w }! g5 N I- B7 n
}. T+ T; e( H @
else if(IsLegendHero())
3 t' [7 p4 k' O {# [& X, m2 a* T1 I O
for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 p u Z0 {9 T `$ q( c8 h0 P; n {
- y* m0 P# g( g& D7 O% l LPSKILL lpSkill = &(m_aJobSkill);
# q5 {8 _: o; \4 Q if( lpSkill && lpSkill->dwSkill != NULL_ID )# f m+ r) k9 d. q9 p; z
{3 _* ~( b6 R0 p3 J2 q# @( q
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! J8 d5 f) q4 q, i# q- ?
if( pSkillProp == NULL )
Q1 w) ~% X) @. _. {" |2 X continue;
) C4 _# d+ H4 |% F, X if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, a+ I3 G& h, ~0 z% C1 m continue;
: @% J# ]6 C8 N: N" v4 Z5 C' \4 J lpSkill->dwLevel = 5;5 o. {. N1 P0 }, h5 P
}
& N& O5 I+ I6 p$ N }
% Q, I6 E; e9 n2 w }
3 U" W; \1 O0 M1 b1 C#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; D% t9 B$ q: E, R7 O4 z" O0 }
if( bGamma )
9 e* h3 N7 n" f' O! H { N8 h3 J, y( n* @
m_nExp1 = 0;* Z9 f1 T, g3 }8 N0 ?4 L8 O
}
7 V0 F- b |$ |! }0 @: l
& `3 y0 _8 w( Q) j ( (CUser*)this )->AddSetChangeJob( nJob );+ \& V( Z; H2 L
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );& h; i) w5 e1 {9 {3 N2 _
4 J$ ?& ?4 J2 u, R/ D" V. f2 t
#if __VER >= 11 // __SYS_PLAYER_DATA& f1 }$ ?! ?4 g& h
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );1 D; p# t0 ^% B% M8 H$ q
#else // __SYS_PLAYER_DATA
5 g4 k, |0 [, w; c3 R g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
0 M' J H" m: N( s3 X' b) u* `$ G8 R g_DPCoreClient.SendFriendChangeJob( (CUser*)this );2 y1 M- W+ M" \. N# I$ ^8 `
if( m_idGuild != 0 )/ \& G: V! n3 w+ D2 \( e' W1 w
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );+ J$ x* |: z* B0 _# q* C' V
#endif // __SYS_PLAYER_DATA) }4 J1 D. K# ?, \, k1 _! |/ ], r: s
SetHitPoint( GetMaxHitPoint() );/ L4 |( O8 [2 v2 E. }- _
SetManaPoint( GetMaxManaPoint() );
" U( w3 Y4 ?. K' ~1 f4 z/ C4 s9 z: H SetFatiguePoint( GetMaxFatiguePoint() );
3 n) \5 a) E) |7 O if( nJob >= 1 && nJob <= 4 )$ w3 X& b; Q7 R1 x& {3 | }
{+ S8 K) H4 i) m1 i# Z# e! L
m_nStr = m_nSta = m_nDex = m_nInt = 15; K* `+ m3 g4 U+ \, _+ c& J3 ?
m_nRemainGP = 28;
! x2 j4 i1 A3 ]) \9 o, c% K }, N4 l b: o# N1 j
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )1 b" r, k X: Z! m" N7 R) n
{6 m4 ~) ], d- K
m_nRemainGP = 118;4 c4 D4 ^7 g9 F$ _1 }& a! }) R0 j
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
' {8 c8 g- L% a$ z$ C# D' T* K m_nStr = m_nSta = m_nDex = m_nInt = 15;) u# e( e, t2 o- m
}4 L5 F, R+ l# P
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
7 T! ` @, ?! a& x7 P {7 t& v; ^5 n1 L' M+ S8 `
CItemElem itemelem;
/ u/ K: I7 y" i. `5 R* f; @ itemelem.m_nItemNum = 1;
& a8 b" p/ g9 n itemelem.m_bCharged = TRUE;- U/ V3 ~4 Q# f4 `/ ^- d3 h
BYTE nID;# t- Z2 v$ e- l" k
# |2 u, L- H V8 q8 H+ n9 g( E# f if( nJob == JOB_MENTALIST_HERO )% c- u9 b2 o) e7 s0 I; L
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
2 g5 d( N# v% X5 r/ ~2 O! Q- \& I if( nJob == JOB_FORCEMASTER_HERO )8 t7 m. t0 _; \5 }
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;: @8 Q, b9 M" t7 B- L
F$ @9 G6 Y/ a! }9 u! g1 V* ~
( ( CUser*)this)->CreateItem( &itemelem, &nID );
- N" g1 p( E* N9 F8 w }" r, K1 v2 v2 G$ A1 D
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
. @* d+ @3 C/ ~9 i! G9 J1 m ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
3 @% ^! I4 K3 a( a- ] m7 }4 T ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );) ^& {0 e; f+ l6 G/ g; t- j
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );+ V: A! w: n) ]0 ^- R4 b& v# r
( (CUser*)this )->AddTaskBar();*/0 N1 s& x* Y! R: g2 W' {
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
; C1 w4 ]# q! P7 Y9 X; S#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
+ h% A5 t" Y8 o% b- e- ^ ((CUser*)this)->CheckHonorStat();
7 m7 k. S3 R; s6 X ((CUser*)this)->AddHonorListAck();
1 f- }1 e- e6 {0 ? g_UserMng.AddHonorTitleChange( this, m_nHonor);. B, t, s$ r7 R0 G! W7 Z; j
#endif // __HONORABLE_TITLE // ′Tà?
0 ?/ `0 j. U& u, f+ u& Y. |$ r }% f( p5 i1 K+ ` o/ b: G+ k/ }
#endif // __WORLDSERVER
* V9 S* W. C6 |# g4 u}
, f5 ^* P& P* y0 H" o9 ^' U V* ^
2 r1 ?4 ]% ^# ]1 O; V2 O+ |然后你进入functextcmd.cpp并添加以下
t! a; `. u1 d! k5 ?1 T7 Y2 C& J( Q
代码: @" s. k+ v& g7 N% k) ^
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
y# s, ]% Y' y/ A& v% F( `" }下面插入
5 b( g" J! H8 \1 q0 ~ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 9 t8 }8 t; X7 i d3 w7 t) e' ]
. S4 M& @- m1 ]" e* f' X) }
然后你去
1 ^" j* \3 I) {8 G7 e4 {. u3 W. {& ^8 `
代码:3 l0 M" X" m0 m6 |1 p6 B R
代码+ C( E3 w8 z$ p# L' D
BOOL TextCmd_ClearPropose( CScanner & s )2 Q0 ^4 j% Q% u5 _
{
$ {+ x: j/ x( ^: P#ifdef __WORLDSERVER
' l; ?1 Y! C9 d) K& x CUser* pUser = (CUser*)s.dwValue;* }: l. ~9 Q/ h$ `9 H) Q; ^, [
g_dpDBClient.SendClearPropose();
( v" J3 \7 x2 v. f" A2 N#endif // __WORLDSERVER& w5 i5 A$ v+ U2 ]8 K
return TRUE;* ~- l/ U* \! L) l, ~3 D
}
6 a% v$ s+ l3 F' \0 U/ i& T& l下面插入: W: U# b/ N- Z
BOOL TextCmd_rebirth( CScanner& scanner )$ f N1 [7 d h& e
{
1 H: ^! s2 y7 h& @1 R#ifdef __WORLDSERVER+ M; l2 v V6 O( B/ I* Q& Z/ e
CUser *pUser;* c& {; g w4 n8 s& s
pUser = (CUser*)scanner.dwValue;
5 W P N8 X* M" E4 W; s" Oif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())1 G/ J& m2 B% e6 K. C2 f2 o- P
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);% x% v: O' H/ ]8 h6 S! @( p- K- _
else4 t7 y+ d3 h7 k/ x3 k7 u# B* F& ^
pUser->AddText("你还未达到重生条件!");4 k- ^9 ]) i; P0 e% D* T7 m
#endif D( O1 I) Y5 V/ I% S
return TRUE;& ~% A, E1 J) F% u8 N( p+ [
}
/ N- Q# g) d# A' y
. R8 G2 L/ ?9 h6 i# p3 t' C: V3 ~; o. \. W: L0 k: L5 ]! H
* y0 u. {8 q7 f& ~
: ~" x$ C' {' |' q |
|