|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ i( c. d0 j; P' \
5 d6 |2 }3 N$ H- G& b; iMover.h$ @% z# h4 a+ h4 x% e1 J
代码:
1 ^7 U# \3 V! [; C6 v/ f找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
3 I, `1 I6 [7 b4 [
1 U. \$ [ n8 b下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
6 W; V* c) x( c# C! T
# n) ~. ]. ^7 Q) L/ y然后你去mover.cpp添加- Y+ U. \- n5 F f" H% I
( t$ R. z4 h; _8 Q+ o7 P0 n
代码:
+ C/ d3 C# U P" C( ~void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
: O9 ~! Y) t2 {% Z{
- R& n: y; e( O/ e#ifdef __WORLDSERVER% T* g! a2 X( _8 F2 E2 w
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
9 ^; {/ \+ z/ A+ n% a MoverProp* pProp = GetProp();- \3 t% f, I/ b+ s1 H
if( pProp )+ f) C; r q$ j* x7 O5 x% E) U
{
9 f6 g1 ?8 a% T5 ^# P' L# E if( nJob > 0 && nJob < MAX_LEGEND_HERO )0 ? S% E7 ^1 e% {9 C! T
{
% O" U2 X" [; X* L" ~ AddChangeJob( nJob );
+ y) E: f o7 V+ z. p+ [ }else{: l T: K+ |0 m5 K0 K/ H6 k' C' y
return;
% T: i! b0 i& | }
3 \3 V+ @% O( j8 @0 U" c int nPoint = 0;
$ h. j" ^3 u: v9 s if( m_nJob == JOB_MERCENARY )9 |% B$ m2 j5 I$ t8 I
nPoint += 40;
1 u* c! i# d$ J# g else if( m_nJob == JOB_ACROBAT )5 N* V$ |0 b6 S
nPoint += 50;7 P/ O' o2 I: I3 z+ g+ g7 k0 R2 i
else if( m_nJob == JOB_ASSIST )
) G2 f) `* i! [1 [ u) a7 Q5 f nPoint += 60;
2 @* j; K4 X3 v9 K2 g else if( m_nJob == JOB_MAGICIAN )& |# Z* ~6 R- \; p# `
nPoint += 90;1 c1 o. V+ F; ^, F! n- e7 [
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )( P# O# t- t7 d* p. \( b
nPoint += 120; X" E( I" q1 F1 y& e
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )/ \0 e+ [& W" ^' a
nPoint += 150;4 Q6 J; W) i5 q3 D
else if( m_nJob == JOB_RINGMASTER )' L# X* G* M; M0 Z5 @, Q
nPoint += 160;
) B/ P4 @2 ^1 ]0 d" O else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
7 q& g- m2 X! d/ i nPoint += 180;+ \; a7 f! d! ~0 F. P
else if( m_nJob == JOB_ELEMENTOR )
; z. ]3 p( u+ k5 l nPoint += 390;
* _( X; G/ l7 S4 t& H else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )! ]3 R$ V2 c* M/ ^/ d# \
nPoint += 120;
0 y0 e+ w$ A' q7 @1 N1 d else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )* _4 g; j7 |+ s, M1 p( l
nPoint += 150;2 _) Y2 Y5 A5 e% V+ c5 E5 U$ [. u
else if( nJob == JOB_FLORIST_HERO )' S: d# B9 Z" [. I: C6 d8 v. @
nPoint += 160;; X" |9 O5 g& V7 U1 A
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" p) I& c0 H. ^' j6 } nPoint += 180;0 O& K e4 K/ W) i
else if( nJob == JOB_ELEMENTORLORD_HERO )6 A& q! ~: w6 }; `; v8 {& c
nPoint += 390;/ R" y4 \- B {# x+ v
$ z. x4 ^2 S5 z( @
AddSkillPoint( nPoint );
. ~- O: o. m8 G3 R: P- Q m_nLevel = nLevel;' A9 z- k8 b" `+ P
D) |, O# Z. ]3 D) T: Y SetJobLevel( nLevel, nJob );/ C9 h9 j0 }. j, R( n" V
m_nDeathLevel = nLevel;$ o% h* ]6 @; H
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans' l4 T4 C6 |* }* z9 C* g
if(IsMaster())
& V; d: P7 e5 G1 a1 J {
J9 K9 h; L# |/ a4 N1 L) ^/ D% R int dwTmpSkLevel = 1;//60, 72, 84, 96, 1087 E& w) W0 W+ a' K+ d
if( nLevel > 59 && nLevel < 72 )
' C8 f- W. W( c1 G- u; s3 m dwTmpSkLevel = 1;) k, A$ h) I- c
else if( nLevel > 71 && nLevel < 84 )
8 p: D& p# j, T3 H9 d dwTmpSkLevel = 2;) T* |( W3 w! e2 s+ U
else if( nLevel > 83 && nLevel < 96 )
7 M2 `* [' L' k/ e- ? dwTmpSkLevel = 3;! r1 S! O) I6 o! Q! L4 v: E+ R: @8 i
else if( nLevel > 95 && nLevel < 108 )
( w9 I* N& P- j8 o" N' o5 k$ x dwTmpSkLevel = 4;7 W0 |; O1 Q, }7 y. l
else if( nLevel > 107 && nLevel < 120 )
" r V) m3 f4 @ dwTmpSkLevel = 5;
% R$ J8 p' d/ G2 s8 G! W for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! f3 h! s2 b$ s
{ & J5 C3 h% M! I) a* B5 _
LPSKILL lpSkill = &(m_aJobSkill);
( y$ y: B2 P) K" l0 }& S# p, [$ b0 p if( lpSkill && lpSkill->dwSkill != NULL_ID ); x0 E( V) n1 J Y9 w: J7 R8 d
{9 D* n: @( \( h4 q4 u2 b: o
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( R" n; L2 H8 R$ ^! n! i+ | i* b if( pSkillProp == NULL )( R6 s4 e R# w
continue;
+ s0 A- U. D* n" T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 [6 T) v+ E# J
continue;
: `# u7 \3 n* \; B/ G+ U lpSkill->dwLevel = dwTmpSkLevel;7 x' @; y g0 a9 [, W7 j g
}9 j, n7 ~ M& X* [* r
}. x- g" X4 k7 r, A
}
2 e9 D0 A- ]4 Z* u7 u else if(IsHero())* D* M* C$ I! p: g3 \8 `
{
+ t) d: b3 e. s; f, Q* [- V for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 c0 ~: b, @2 p1 [, z- B {
& B0 L0 f" ?6 k( @$ L LPSKILL lpSkill = &(m_aJobSkill);
2 _# ?3 H/ K. v if( lpSkill && lpSkill->dwSkill != NULL_ID )/ G8 x" l# M' Z
{
; [$ h7 f0 y1 f( L( d ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * e- S+ J* a+ G/ ~) l
if( pSkillProp == NULL )) s* o: j7 D! Q7 [5 g& g3 d
continue;
& a1 n/ ~6 Q. |0 H U if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 _3 w, F; I/ ]; O) v+ x. f& a
continue;" ]* k/ a& D% J5 b. k( V; _
lpSkill->dwLevel = 5;0 J/ k# p P# r+ S
}& K4 a& D V4 j# \8 r: h
}% b, |4 F' l1 g9 X: l
}
. w9 ?! N. i; o( P( ]& b j else if(IsLegendHero()), e- Y. }7 v e
{
4 b/ n. b' L! N for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ @" X; g( F+ S* R8 W, _: D& [" d {
5 f w1 y8 Y% i% W' i+ c# C LPSKILL lpSkill = &(m_aJobSkill);
) z* X C2 @" @, ~$ Z: J if( lpSkill && lpSkill->dwSkill != NULL_ID )- g* n t, W* U" t& t5 q7 a
{5 b1 f; d+ }* b0 I# K
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 x. h6 q' Q$ @0 f if( pSkillProp == NULL )% l( A/ j7 ^, T4 @ S# B% ]5 Y
continue;6 H# [% U, J2 f
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 R ^3 d7 }9 C' w* K; f+ `
continue;$ \/ N" {$ j) ~: s1 {# C
lpSkill->dwLevel = 5;( K% y8 ?; F3 T3 R; r
}7 T: ]( ?( M6 ~' e/ p. Y
}3 Q* ]0 f( n. N+ Y
}! \0 T6 {7 Q, u p8 f {9 x
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! e2 o2 _- h8 p. H* F% }, j$ Q0 i
if( bGamma )/ }! D' r3 S+ c# k" H9 I' u S4 u
{
1 I$ ?9 x) C1 n Y( I m_nExp1 = 0;
& T6 V) Z. c* I, x) D }* }7 {, ?2 r/ \0 S- W
( C4 N; I% G9 m ( (CUser*)this )->AddSetChangeJob( nJob );: u, i( G( W, N) j$ B' t
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );, ~! T4 C$ h6 R" V( R% H1 i# h ?
5 C5 D( ~5 Z( G/ q* s7 k4 z# i
. F7 W& L. d- x3 i6 X4 X7 H#if __VER >= 11 // __SYS_PLAYER_DATA% O( @7 V9 u4 L& D W) w
g_dpDBClient.SendUpdatePlayerData( (CUser*)this ); w5 ^6 [1 K# \$ L
#else // __SYS_PLAYER_DATA
! N7 U m6 N! y; _& p g_DPCoreClient.SendPartyMemberJob( (CUser*)this );6 _0 u! B) R, y
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
3 T) _+ ?# C3 c if( m_idGuild != 0 ), U+ C( _6 b# r7 u; }
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );) c8 ]0 P# i) y2 t- ` M; `
#endif // __SYS_PLAYER_DATA) }- h! e$ i8 D ?# v/ q6 H
SetHitPoint( GetMaxHitPoint() );
2 r$ O4 e' k! I& y y0 v6 h2 r* f SetManaPoint( GetMaxManaPoint() );
$ t' c0 e5 @( K4 d) k' [ SetFatiguePoint( GetMaxFatiguePoint() );; [$ C4 ^. R* E* l
if( nJob >= 1 && nJob <= 4 )
+ v- L( v* Q1 R, M# }/ E4 J) N$ Z {
! T, ]) Q2 |1 i m_nStr = m_nSta = m_nDex = m_nInt = 15;# l2 U6 ~0 {: d3 k( {
m_nRemainGP = 28;4 o3 X4 }. M+ K) N% d. D
}- k8 Z7 x) B; I* E7 M* `' X% X0 j
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) q3 H( m, E) {/ N9 N {( z3 z; [. b1 O: P0 V1 N& T
m_nRemainGP = 118;! Q" T2 S6 U# G% h( {5 m [( B! O1 H
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
. V9 Q* N7 m- }8 n m_nStr = m_nSta = m_nDex = m_nInt = 15;* e; ?) E0 V, [3 p; T# a
}( I; y8 [" w* S1 c- `. Y9 g
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )3 F" n4 J2 }0 i9 H* ? n
{
6 U: x) y, M0 `, H- Q# D8 z CItemElem itemelem;
. I- P2 f5 Q; G; w itemelem.m_nItemNum = 1;$ Y2 ^* m [, {0 z: o) E7 Z$ I
itemelem.m_bCharged = TRUE;
6 @9 N% t% P4 ?, l) [' Q, a BYTE nID;
$ M% G- U8 N- r" y- w
! ^; n# p# X# z if( nJob == JOB_MENTALIST_HERO )
" m' T' j- Y* x itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;" u) m& X3 U2 e( \0 x8 z
if( nJob == JOB_FORCEMASTER_HERO )
) a1 ]+ J- k: h( \ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;- |/ o; {* x5 {
+ ~5 h% v9 K/ Q: o ( ( CUser*)this)->CreateItem( &itemelem, &nID );1 G4 G; }( `9 O" d& n( Z: q5 l
}, j7 ?& B8 w4 P( t- H! Z/ I/ }
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
! k ` {$ F; d, H0 `' I ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );* }! B. v4 ~& x: M3 ^
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! t6 l" L! ^2 M( k7 G1 w
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
( Q! @( N! J& h8 ^- y9 o) U ( (CUser*)this )->AddTaskBar();*/
6 [8 E" d5 S, Z% ? ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
0 O3 E$ O2 q% p r: V& I5 j#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?5 U1 L) w4 Q# F b! z
((CUser*)this)->CheckHonorStat();
H5 d+ f8 P- ]- c: h% V4 {4 f+ Q ((CUser*)this)->AddHonorListAck();$ A- O9 z7 c& R8 w
g_UserMng.AddHonorTitleChange( this, m_nHonor);
7 Z9 N- Z# i0 \! p#endif // __HONORABLE_TITLE // ′Tà?
; v4 e- ^ v1 q }- s' r8 P5 G+ x
#endif // __WORLDSERVER
: u* [/ b7 c! _% E) ^$ S}
6 [/ [* j( h; w: ~( G) m% Y: W! H2 L- V) b. E& ~& Y
然后你进入functextcmd.cpp并添加以下
$ E/ r0 [6 ~& \( |' c0 Z; ]9 z3 o- }- Z! M) }' }+ [0 j0 X6 r
代码:
& T; S, K" y# o GON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )! b2 J. [4 b3 S- t
下面插入! F! W) r* j8 Q5 K4 s/ M" \) R) \
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( A5 F. q. J! M# a& @, k( e0 w8 s
然后你去* O" q3 u$ h& f7 O+ u& P; G- [
5 W1 B, s, | c4 a8 C# X; G
代码:9 K! o- y' C1 M6 u& c$ ]
代码
' j: p% ?1 S1 o% L9 o4 OBOOL TextCmd_ClearPropose( CScanner & s )
: I- P v/ _4 G! Q1 @; ^; k7 M{) o1 U2 P( K# `. T: n( A/ j1 L
#ifdef __WORLDSERVER
8 f/ {7 Q9 B2 f' S CUser* pUser = (CUser*)s.dwValue;
) [7 ^+ Q+ f5 d* E g_dpDBClient.SendClearPropose();
0 B3 O, g8 I6 l, W% j7 E2 Z9 d/ v#endif // __WORLDSERVER5 s9 H) i0 z: \# N {% i
return TRUE;
# Q& f/ N5 _5 Z( I3 ^}' E; j. A3 X7 G
下面插入
% w" L+ |: Q* x' [9 ?+ LBOOL TextCmd_rebirth( CScanner& scanner )$ O7 [& ]# c# X$ s9 `/ ]$ ~: ^# C K
{
$ S, \( ~7 F) T8 l/ w#ifdef __WORLDSERVER
7 z2 k* B5 |9 t& U+ \- xCUser *pUser;
. ^5 ^0 f4 x# F0 O0 L, }pUser = (CUser*)scanner.dwValue;1 _; D( {& F W. Q+ `! b G
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())! ]( \0 `9 l0 ^5 R3 X
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);4 N4 E) B. o. p5 h; q+ t g6 Q2 _
else
5 O3 C$ Y, ?1 L5 J; npUser->AddText("你还未达到重生条件!");
& X) z5 K6 [* v3 r- u0 q/ s& v#endif5 O$ i6 a/ x; M+ x+ I
return TRUE;% i- R1 B+ t( Z) Z8 P" a
}
. F# M) y9 y7 P6 j
& a0 V1 s# j! G, l
7 k$ {5 _4 \+ g5 G/ `! R" x: \3 x+ Q. K5 |% e0 I# U: ^
. b& V% ~, `, B7 t; p+ W2 H% k9 g( [ |
|