|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel4 {! Z) s2 C! H- F& \5 s# w& K
2 \+ h& V# v5 [8 |. @2 }0 D
Mover.h4 Y) q5 b& m$ @4 B# b
代码:
5 d4 ]+ ?" S9 M找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü$ h% M7 d3 K, {3 ~! j, m
$ u4 P* b2 J. Q! r* G8 A6 y
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 1 D# W0 p1 j% J0 W
/ t/ V0 c @$ l O1 ^; M4 C: J然后你去mover.cpp添加
: W: }1 H6 g5 ~' n% a
6 V5 F, c, l) h9 X代码:" c: B( e4 A2 ` V" l
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); s5 K$ B5 k5 H
{- o u* q. _- w4 O
#ifdef __WORLDSERVER
8 F0 n5 Y# L9 j( @ u // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
& d. L+ G$ M6 ^ MoverProp* pProp = GetProp();
! p, n. e5 Q; r3 ?0 j m, W/ Y if( pProp )9 y0 S$ W3 i P" u- u, l1 A5 Z
{3 k0 V- O# N' h3 k
if( nJob > 0 && nJob < MAX_LEGEND_HERO ) Z9 p: D! a# Y6 _/ k3 n$ d
{1 v: K0 E" g8 C9 ]4 d
AddChangeJob( nJob );' r3 u" E7 `+ |7 F0 I7 k* C' G7 Z
}else{
2 f2 y' h3 i6 n& _2 T9 V- \ return;
5 Z3 b7 b# H& e/ ^9 g7 y }
' H9 c: |* X: q4 N int nPoint = 0;" w; z5 n' j @0 U+ e/ @% F! L, M2 `
if( m_nJob == JOB_MERCENARY )
. ]6 ]8 K. j2 @ nPoint += 40;
$ [; `; E7 ?) ]! n) g, L8 l else if( m_nJob == JOB_ACROBAT )
2 M, [) l$ `8 c$ B: ?- c4 b nPoint += 50;
2 H! M+ o& ?, V# I else if( m_nJob == JOB_ASSIST )
& y2 ^! U! [: F+ W0 j" L nPoint += 60;7 |0 [' @' n l- \$ E. t/ q
else if( m_nJob == JOB_MAGICIAN )
) K9 d1 e5 J9 Q% h+ | nPoint += 90;# u6 g1 n: h* L% O
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
+ Y5 W$ G# U y$ z) i% d3 x nPoint += 120;9 k. k5 u2 a7 c5 L' k5 g8 d# ]
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
7 O: N" U1 b. [; M nPoint += 150;
* X: U# I/ r2 S+ [0 p else if( m_nJob == JOB_RINGMASTER )
: k6 [* {! P! P nPoint += 160;
* _& v' [0 l6 w% _+ ?& O, J else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
8 ^/ N+ R2 q- c2 ] nPoint += 180;
; R1 [- s+ L# [2 a else if( m_nJob == JOB_ELEMENTOR )) n6 j7 T- n1 y+ l6 d& J
nPoint += 390;6 B( E+ N" W$ T6 B" f- H
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
1 U% W9 C9 t. s; O nPoint += 120;2 d( {& ]. T8 |% u
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
! L8 v. O9 R1 k4 f nPoint += 150;
% G! t0 G# K3 [7 {1 _ else if( nJob == JOB_FLORIST_HERO )+ H3 J3 ^" ]( B6 c1 e7 q# y- r8 F$ L6 Q
nPoint += 160;- p3 E. N% U5 ~( R+ P
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 Q, l5 o8 J( [3 O( {7 c) z nPoint += 180;
7 Y: i' W5 b9 Z else if( nJob == JOB_ELEMENTORLORD_HERO )
3 U8 m, W1 o1 C2 d; v nPoint += 390;4 @; w9 N6 h9 P1 X
, n! J" t* |$ J7 }( `. A7 c1 D! q AddSkillPoint( nPoint );% B- |: P$ d0 g' r# B
m_nLevel = nLevel;
& Z5 p$ S/ N/ }3 Z! n5 C* ]; g
SetJobLevel( nLevel, nJob );5 k/ J) V- k8 Y! O
m_nDeathLevel = nLevel;
. G0 l! V2 V. e- {, d- h#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
2 ^' A2 ^% o7 N5 z, j3 p* c2 z if(IsMaster())
2 O" O' a# s: d( U; L1 ?8 g {
5 q( p* c2 G7 n! n- w- u int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
$ v4 Q) y- a: M, O% y, [8 |/ I1 \ if( nLevel > 59 && nLevel < 72 )/ R6 ^+ B0 R$ [+ e" `
dwTmpSkLevel = 1;
]6 H0 z0 J7 _; b8 ^ else if( nLevel > 71 && nLevel < 84 )7 U' l( E& D5 h
dwTmpSkLevel = 2;
1 u/ [% Y# i2 a else if( nLevel > 83 && nLevel < 96 )9 L3 V% s5 X! [% P; f' v1 e
dwTmpSkLevel = 3;
! f' p. ?/ D, g3 K- p else if( nLevel > 95 && nLevel < 108 )
3 A8 u9 r1 W$ T dwTmpSkLevel = 4;3 \7 R Q; u$ c9 N3 i
else if( nLevel > 107 && nLevel < 120 )
$ {3 w/ J9 f0 d3 t0 E1 i0 ]8 S dwTmpSkLevel = 5;$ Q" O9 W' j7 D0 D& X( r* C
for( int i = 0; i < MAX_SKILL_JOB; i++ )
y5 Z1 r2 A8 r0 \' k9 C {
1 s/ b& u& A4 o2 l) c LPSKILL lpSkill = &(m_aJobSkill);# ]4 q' \6 U1 q# F5 ?$ y& @" e
if( lpSkill && lpSkill->dwSkill != NULL_ID ), B/ `9 q+ T, Y, m* W2 A
{' `/ j) Y% |) O8 @
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! w5 \( O: c) x
if( pSkillProp == NULL ): R& ^! P q; Y0 K
continue;+ A& z: i# ]7 e; l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! S: b' k' B: R5 M4 R- d; W9 D continue;/ B/ z- e- ]# }! U; |
lpSkill->dwLevel = dwTmpSkLevel;( \1 C* \. `: e, y
}
5 R4 |" ?) o* L- A8 W$ k; D% H) m }
0 C( u! h7 C: d' c6 u }0 Q: p+ q8 Q A# \) m8 t
else if(IsHero())
2 H% m9 @2 @& Y l1 L6 l- Q {& k5 h, c+ s0 ]3 V) S. w) L- M; V0 q# f
for( int i = 0; i < MAX_SKILL_JOB; i++ )
. g( i" ]! R+ y! v u( \) n/ H7 v {
) W7 Y/ B% H& A- c) Z8 r LPSKILL lpSkill = &(m_aJobSkill);
5 L) y5 m) l+ N+ x if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 l' m4 U$ }$ p. p' K* I4 n2 I! K% R {
8 t. P/ O, v/ r3 l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# k% O7 i4 y# Z2 H r" R; E if( pSkillProp == NULL )
1 J# }, x0 V; P& { continue;
! n2 `: d2 c+ B4 I& W if( pSkillProp->dwItemKind1 != JTYPE_MASTER), N; u0 m" b, I7 T+ m1 _
continue;8 b( W# d. Q! i( X! {! i; @& G; d
lpSkill->dwLevel = 5;& d1 j( @: c7 |$ @; L
}9 G/ X, X. C+ u! E! J* W
}
) Y( x& ]. \. S9 `2 B }
, N5 V% Q2 ^& ]+ J else if(IsLegendHero())
3 h, I+ c ~& y0 _ {# e. O5 x8 c7 I6 Z. B& ]9 Z
for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 d2 K: P Y9 b* P6 A { & ?0 r g7 f& A8 C
LPSKILL lpSkill = &(m_aJobSkill);+ o" s, i' @( C3 b/ | Y, r
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 `" C/ ?* n$ m6 D9 {1 K
{) |+ ~) a1 U# j$ q
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. L( W; l ?4 M. e) V if( pSkillProp == NULL )
& i- _7 U+ h6 j5 A* F( J continue;
: ^1 ^+ s! v& F6 ]2 v if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) J4 k0 f3 F; ?/ b# |' l" C continue;# x! s& x: E. B. t! G: z s
lpSkill->dwLevel = 5;0 U; B' I# x- w
}
" A6 D6 ` S6 v9 r }7 o* L8 s: L" H4 l9 s
}
' r' z2 M K+ f- j+ H1 V+ y( S#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. h, j b) k+ f8 W! q2 [2 e; | if( bGamma )2 G/ p& ^7 T0 V: ^: k$ j
{
+ `! {5 {+ e# B: V m_nExp1 = 0;
, J# a' Y z. p- }$ O- ]( v }
8 P. @ a- ]) S
Y! B6 |- O. _0 o ( (CUser*)this )->AddSetChangeJob( nJob );
l& y5 J# t# w1 C( d n g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
9 B) o9 `; W& G
7 z8 U+ ^7 l M; e1 X3 k9 w0 ^) a9 [
#if __VER >= 11 // __SYS_PLAYER_DATA$ P' T' k! V9 f# T- x: P
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );1 |3 o* [ y, @( h- O. y% _
#else // __SYS_PLAYER_DATA/ Z, U& D& G2 ]( k) [# ~1 R5 ~
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
3 E3 y: t: o+ W g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
& O t$ m+ }6 |/ {* m4 |4 C4 @ if( m_idGuild != 0 )8 Z8 M' E5 _! x# g F
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
# {+ G! t& w' A1 t9 m#endif // __SYS_PLAYER_DATA7 i$ Z Q2 w- J% m/ Z& c+ [
SetHitPoint( GetMaxHitPoint() );
) e% {& K4 t4 x5 t" |0 h; n& A SetManaPoint( GetMaxManaPoint() );; t+ k0 r4 V) V* E8 q( b/ `
SetFatiguePoint( GetMaxFatiguePoint() );. H. A' D: X. f2 g( C4 o& A* V! Y
if( nJob >= 1 && nJob <= 4 ) ^1 R7 G! D0 b2 W
{
. v4 q7 P, E8 L& m W _9 `8 l; i m_nStr = m_nSta = m_nDex = m_nInt = 15;7 ^% G: d0 R$ q/ t' c8 @& ^6 r0 b
m_nRemainGP = 28;$ c" G P% u/ |8 r
}7 [& G+ S% I0 T6 \* |: v
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )$ X1 B* R! p/ \- \
{
( H# R# d+ D& M2 \! B m_nRemainGP = 118;
# h+ ?6 s4 m5 f, R( z, r( o //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
! I2 C' z0 Y; r+ l% I m_nStr = m_nSta = m_nDex = m_nInt = 15;8 K# r* G/ g- S" D
}
1 V4 m- O2 a# w3 k8 n if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )+ S# f& {/ G( U# U3 T* h
{
5 y7 f5 N, c( f4 b+ O- T CItemElem itemelem;/ p& T& e: P% w4 ^! u
itemelem.m_nItemNum = 1;8 d+ l4 w) g( v3 ?9 Q
itemelem.m_bCharged = TRUE;
- \3 Y; a& s2 G9 V, e/ k BYTE nID;
2 F& W6 X: f9 q* p- S0 ?3 r3 H: S
if( nJob == JOB_MENTALIST_HERO )5 m2 d/ D2 a1 f8 s. \
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
3 @: K" U& ]$ U if( nJob == JOB_FORCEMASTER_HERO )
3 {, X* N2 ] {! }$ I9 S. e" M% v itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;1 u$ i- {- Y* a$ A
/ G! n! Y. M2 ^4 Q0 k
( ( CUser*)this)->CreateItem( &itemelem, &nID );; @/ J' [2 Y" ?$ u: T' W4 g; D% l
}1 O1 ]% a4 l1 Q$ Q
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
& S+ `4 Q5 h3 Z1 O/ i( c ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );* L; I8 Y4 f+ O
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! l5 @1 Y% ]6 z5 N. X/ s5 e- e4 x
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
) h: E5 x/ a( K, I/ u ( (CUser*)this )->AddTaskBar();*/8 Q4 x; v- u$ b# S
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
! a5 J5 E* Z/ V) L#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?. O7 S: L4 d8 n0 H1 |
((CUser*)this)->CheckHonorStat();8 ?: i: c9 t/ R9 a" Q
((CUser*)this)->AddHonorListAck();. R1 ~+ E" ` [- Y
g_UserMng.AddHonorTitleChange( this, m_nHonor);
" M6 Z3 D# j7 m& T7 C) ~: N#endif // __HONORABLE_TITLE // ′Tà?
9 f& K2 p0 C% { }
t' a+ B7 L. v* v- g6 u: @#endif // __WORLDSERVER
% u/ {, H& i f/ _& ^$ L: k} * `+ }$ B. r7 y- B7 Z/ g/ E1 |
2 u S) Q$ r# L( x/ f然后你进入functextcmd.cpp并添加以下 l+ e, c7 R! a& A, t# @$ d# K T( M
o* S! Y) c9 o代码:
1 C& p: e) k1 ?; { n$ dON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )6 H6 c6 {$ ]# |' r% Z6 A
下面插入- B& s" |3 r5 m% z5 X/ [
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 1 i k8 @) ~ O! A8 [" F
) @( d0 L! Z0 f ?2 j! C
然后你去
1 a8 I/ q' u& W+ D
! M9 g9 ^. X+ t K2 Y代码:& S9 _' W3 O+ m3 p
代码6 x* T9 G2 `4 v1 F$ T+ L9 ~
BOOL TextCmd_ClearPropose( CScanner & s )
) q2 r9 h! O3 F{
! k: k7 ?& f, ]6 b#ifdef __WORLDSERVER
) ~! C l9 f$ J! A CUser* pUser = (CUser*)s.dwValue;
7 |3 n) U' v7 ^7 a' V2 T5 Z S" A" P g_dpDBClient.SendClearPropose();
. y9 k8 t- s4 Z1 V5 P#endif // __WORLDSERVER
% S) T4 n% ^; P- D return TRUE;
6 Q, E3 X6 ~" R8 e6 R9 |}
8 l: ^* k4 b7 e下面插入% y; V# F% K4 N/ F0 k
BOOL TextCmd_rebirth( CScanner& scanner )
, x% B8 K% o5 ]6 v{3 b+ d- h+ c# y& f
#ifdef __WORLDSERVER) N' R/ p, k1 V" i
CUser *pUser;
( Q9 N. f; ^9 T( E# o( j6 B, N" i- zpUser = (CUser*)scanner.dwValue;
' V0 v5 E3 X& \$ Zif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())3 m+ W/ v2 m1 f! @# I# \% A2 R
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
2 i6 k4 C" F8 u, A# delse
6 D$ O7 B5 R1 k' n4 a+ |' kpUser->AddText("你还未达到重生条件!");
- E( O, Y4 p4 h. y#endif ?9 I1 s. r/ M8 O( P! N- r8 B) S' a
return TRUE;
% p& M8 z- y! b} 5 O ^& O$ ]; B5 s+ H: U
% a, X" o7 p, l d
& G! @/ d) S& u& ?6 s& ^: K3 @' k
5 R: a2 ]' D% ^. N) K1 ^
5 |0 b3 }. F2 J h( s) k |
|