|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel. o' U+ S8 z& G6 [/ m; R7 B
: c9 ~3 l$ E7 G7 q2 J" f
Mover.h
8 y) J! o3 W8 R+ a8 i1 Y# `代码:5 z$ U x6 R! I8 ~: K2 D1 U( [
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
4 M. d* U. {) t! L- _+ l
. \2 ?! o/ L5 {7 C/ _下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ' x+ U: y( k; r j8 L# e
5 S+ D* B" F* ]% q
然后你去mover.cpp添加& D$ f9 J- E: Q( t; b9 z# W. o
0 _% T7 w) `4 y) E u代码:& K4 R6 c3 y: [6 ?/ u: @
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
* X8 b' k D" a1 w3 z; Z" ~{7 h' o# |2 K# M* k3 j. H
#ifdef __WORLDSERVER
# `* H! P& ?3 R( a // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
) g& c- m8 w# D$ E MoverProp* pProp = GetProp();8 Z; ?) j! L( _, B
if( pProp ), G' W. x* _/ B: f7 F8 V3 z& K
{
& H1 M6 @" O5 v7 T: y$ m( A if( nJob > 0 && nJob < MAX_LEGEND_HERO )& v8 ?, k- J$ ?8 e4 e' R3 i% A) Z
{
$ \; c* R3 I$ T& Y0 Q AddChangeJob( nJob );) a* n- d0 C) D; D
}else{. N( {$ Q7 [3 T( N
return;0 P" e1 y! Y+ L" z+ t; _% T
}: Z+ Q' O$ F) K/ |
int nPoint = 0;
' V ]; L# G+ t6 O8 U* H! M( K if( m_nJob == JOB_MERCENARY )
' @1 u+ A' v, u nPoint += 40;
2 E! Q1 U, c: @, u+ o/ }( s, m else if( m_nJob == JOB_ACROBAT )# }/ }( F' o' O
nPoint += 50;
) s( p: Y) v d* E: a) P, g+ U else if( m_nJob == JOB_ASSIST )8 }* g, W" N( i3 [ Z4 l% |
nPoint += 60;' s$ B6 N* Y: z
else if( m_nJob == JOB_MAGICIAN )* Z# J) o6 u9 h* x: P- y
nPoint += 90;
5 r" \9 i8 O3 P3 f1 S else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
7 c! k/ O+ e% J) K( X ]4 P nPoint += 120;6 Y# S; v( Z$ C) ?2 ]
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
/ F2 L1 ?; x- K/ f* I1 y' n" K nPoint += 150;9 K- j, S8 d' n8 G) w
else if( m_nJob == JOB_RINGMASTER )5 y3 Y6 K* m( D9 a
nPoint += 160;
1 X9 p5 ]- u' p+ s+ ^/ F else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 U6 s' r) R$ D' K
nPoint += 180;) @- ]2 I$ ^' \' P9 p2 t* S; |- W
else if( m_nJob == JOB_ELEMENTOR )
% f9 ]" n2 O* A* B! R$ e" i nPoint += 390;
" ~% k$ x( H6 M7 K% m$ v9 ~ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ): o. V; R5 ~* n
nPoint += 120;
( b& r0 U3 ^& ~9 |' [ {7 ~ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
! c* O; m% d* j2 Y( S nPoint += 150;' X2 h1 I( W! Q
else if( nJob == JOB_FLORIST_HERO )% |2 }# Y0 E1 G1 Q4 u% n6 P8 A
nPoint += 160;
: |" J# x$ D- s8 k ? else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )- _* K, x* p- x* }
nPoint += 180;# f. u& }: i! F/ w6 X! [# o
else if( nJob == JOB_ELEMENTORLORD_HERO )* n% ~$ u' m* Q7 N/ F) B
nPoint += 390;
! b$ |* v t& Z1 U
6 M% y- R7 _! Q+ t0 v( z* w* I AddSkillPoint( nPoint );8 j% `7 w) V: G
m_nLevel = nLevel;1 C4 \0 [" |7 T% `$ a
% e: V& K4 ]: h9 Z7 H* o; f, {( S
SetJobLevel( nLevel, nJob );
2 P3 L8 Y2 ?8 u& j4 H6 E m_nDeathLevel = nLevel;+ `$ ~8 y Q* d' C. c# g5 H6 w
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 o% l% X$ x W2 \: F
if(IsMaster()), T, O' p4 T! q- I( m( O3 |
{
' o1 F7 Z; b5 ?9 S int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
, A3 {$ J7 {2 o" C- G if( nLevel > 59 && nLevel < 72 )
( o/ O( z `' J ] dwTmpSkLevel = 1;
: n# J# m; N' H0 R. b else if( nLevel > 71 && nLevel < 84 )
2 Z, N* u% Q6 j, a& l* V dwTmpSkLevel = 2;5 [8 z# g7 d& |
else if( nLevel > 83 && nLevel < 96 )
5 R- t8 I* C) Z# M# z: { dwTmpSkLevel = 3;" C% u. _$ D# `, S6 z, p4 p, U/ ?& {
else if( nLevel > 95 && nLevel < 108 )
7 r$ | f& @, s dwTmpSkLevel = 4;! E+ K5 u9 g2 _
else if( nLevel > 107 && nLevel < 120 )
0 x( F- B+ c$ Q, d& p- _! w* W dwTmpSkLevel = 5;
) N6 _; I" F5 H3 U* _ for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ l2 }4 |* k( {; ]- `- y4 ~& p
{
5 E/ o. Y$ ^' ?1 o LPSKILL lpSkill = &(m_aJobSkill);9 ~7 [( i! q$ U, ~# S: b
if( lpSkill && lpSkill->dwSkill != NULL_ID )
& @+ s' D. z; r/ _! P+ x: v {
" p E8 k8 L8 @+ A0 w* h+ b9 | ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 M" f6 v3 d. ~" b! `0 ]. {+ ^
if( pSkillProp == NULL )
4 d. n/ T! H8 q* n: R/ a+ ~( K continue;
4 x! x. I& [8 w if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( p- [4 r' X1 s continue;
) X. i$ G! R3 s1 A3 Z+ b5 o. B7 b lpSkill->dwLevel = dwTmpSkLevel;
# e' d: {' E$ ]0 l& ? }
( x! p9 z3 N2 }- J. o- c. E; i* Y }
2 z# L- { T: t u9 q2 ^ }
0 A# r! u) C! ~1 m4 M' u$ M else if(IsHero())
+ m; W' B; c2 c7 [; f {
" A0 a( q2 q( G' D. N1 o4 V for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 H4 K0 H6 Q2 a5 P: @! _* D
{ 8 W0 W7 i6 B! J6 l3 l9 M
LPSKILL lpSkill = &(m_aJobSkill);7 u+ Z( E& d8 I6 z5 Q
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 d3 f0 I. E h9 P% V {
9 z" B$ u) E# t' C5 {5 B* s$ v7 U ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 a$ [2 J8 [4 t3 t( _# r
if( pSkillProp == NULL )
' G/ R. V, }; X continue;8 n0 H" b. F: y+ p' O" N
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 Q3 F; {6 L7 }1 }) p# a5 ]( { continue;
1 _- j3 Q/ y2 N) K3 x% i0 v, D c9 J lpSkill->dwLevel = 5;$ z( s( P* h4 H# ]$ N
}
) s: \6 l" F0 { }
9 g O* n& g3 G }
$ f) `0 R' Q' o1 e5 b+ e# _ C% P else if(IsLegendHero())
+ {" Z9 {' S1 q' Q0 Y {
! z, D$ I1 ]" g1 C) { for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( ~* c' C* o- o* v" }' w9 P
{
5 s3 H: W c. c5 Z3 Z4 D: A, M LPSKILL lpSkill = &(m_aJobSkill);
) z) R: S' v# V) E if( lpSkill && lpSkill->dwSkill != NULL_ID )
& j2 Y0 V8 d5 c4 k% U {- d% d2 y. o& R e1 F6 v$ L
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 {; [% L$ s* I4 m: m5 Q+ A
if( pSkillProp == NULL )
9 S U* U) K, Y2 ~$ \ continue;8 J" X$ q$ C. p' t' Z+ v1 o" S& P( J
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); h4 m6 g2 }' @8 x& V# O
continue;6 i# F3 c l8 H D. V
lpSkill->dwLevel = 5;" c; A+ u( b4 [! L3 l8 n
}
4 E) a5 K$ _* i/ G }/ a6 s& j5 O+ y5 h% S
}
/ c* ]' ]- D) ?, ~#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 d9 x- D) |* Y j' ]! _
if( bGamma )
/ {* e( H) r$ t- a- D2 j9 Z3 x {
' X( M% |: ]+ m: u0 B! v0 T m_nExp1 = 0;
6 _# z" M" ^; r" w }% i$ p/ U2 u7 U6 }0 t
r6 A d1 [1 ]% h: r3 l$ N& a
( (CUser*)this )->AddSetChangeJob( nJob );- K5 ]$ j. |! U; g
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );: X& T9 I' m" R- C( |
( z1 v/ H/ Q, h. M! _# s
+ ~$ \5 y+ d; h/ v' f& w, c* @/ o#if __VER >= 11 // __SYS_PLAYER_DATA
; q8 L2 _( {1 |& C% e1 K g_dpDBClient.SendUpdatePlayerData( (CUser*)this );; z5 @) z, ^0 l8 P
#else // __SYS_PLAYER_DATA
# d, x4 J) f' G1 J0 i1 m g_DPCoreClient.SendPartyMemberJob( (CUser*)this );5 \4 s0 n3 l6 V6 v* ?
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
j0 ~/ r9 W$ ] if( m_idGuild != 0 ) }% ], ]/ Y: p+ l7 p
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
/ E" c% w$ e6 c8 L! C2 i2 w2 ]- X#endif // __SYS_PLAYER_DATA
; C" A' T. o6 t6 B$ F2 }* b SetHitPoint( GetMaxHitPoint() );2 X) F$ ~, t- S/ J; c8 y
SetManaPoint( GetMaxManaPoint() );
+ x$ }8 ?; x' G1 Q+ e/ V SetFatiguePoint( GetMaxFatiguePoint() );0 c6 x' B5 H9 j% L2 j# t$ B
if( nJob >= 1 && nJob <= 4 )
6 v) o B, c$ Q; q {
2 f9 P) n; Y' Q0 X4 X2 l3 f" e( H" j m_nStr = m_nSta = m_nDex = m_nInt = 15;8 w3 q. L+ ?! t+ h8 [6 ^1 f6 n
m_nRemainGP = 28;* J1 K8 }/ h' z S1 t5 i' j
}& Z, s) p3 i4 s5 N' T" i* {5 Z
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )4 W0 W& W H1 H% u5 [
{
, O! f. {8 d" C( P m_nRemainGP = 118;
/ s" t0 O/ ]* Y+ O* E0 g //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;' k6 [( }' f) D; S, x. {
m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 E: h7 v' B" ?9 ? }
( z- R0 Q, v2 ]; w if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
/ H7 y* P* {. Z {
! g [/ Z+ [ s2 x$ F CItemElem itemelem;
) k# R# w2 W' ]( K1 |% R1 g) h itemelem.m_nItemNum = 1;
6 f- N& i+ }) ^' i( V itemelem.m_bCharged = TRUE;& ^& E& l `% A% B
BYTE nID;
- P5 H ]. s" C9 w
1 ~9 D# |5 I. U5 B9 x6 j4 j if( nJob == JOB_MENTALIST_HERO )$ c; P- k# ?+ @& Z
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 f/ j+ X+ z6 A9 ^7 B! `9 b
if( nJob == JOB_FORCEMASTER_HERO )& y+ l, a8 I5 e2 X/ S$ a
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;' N, X; m8 D0 F& @+ o9 q
: I; _( u' J3 y; m3 A
( ( CUser*)this)->CreateItem( &itemelem, &nID );
1 a2 @$ n4 d& h% [ }! K! m, Z- a. c4 Y- |! x6 W
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );* s L4 B1 B9 ^4 t* \. |
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );, x. N1 d5 }4 y4 F% S2 ]2 n* @
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );7 }1 b% E z6 N
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );5 W- b4 m) p: J9 b" u5 \. S
( (CUser*)this )->AddTaskBar();*/
+ k/ O0 R8 Z5 R. F ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
* H9 [) @, g) V k. U#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?4 @- i" V6 ^& }8 s: r' Q
((CUser*)this)->CheckHonorStat();" U* k( R) q6 Y2 x$ l; Y" `0 _( O5 o
((CUser*)this)->AddHonorListAck();
: S. d2 T/ W* w6 X% ^, M g_UserMng.AddHonorTitleChange( this, m_nHonor);
+ _" J; G6 H" l6 m5 M#endif // __HONORABLE_TITLE // ′Tà?
) Q3 g& E; B5 S% Y: ^7 x9 d9 x }
5 i( w3 c4 [( e1 q8 d: Y#endif // __WORLDSERVER' D) E+ @$ P, _ u
} # C8 i ?, u7 C% [5 B9 \0 K
1 l7 D% I2 B) s Y% ]3 f7 d2 w, O
然后你进入functextcmd.cpp并添加以下
; p. O. L7 @" c' x( e: n- K( Q0 X
代码:9 c3 _% w+ g* I5 k) t+ v
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )" k8 t0 X- T3 u; d! M& d
下面插入; j! F; ?4 Z. A: }2 L
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) % z& Z8 K8 O( V( i# G2 g+ \
J8 O- ^6 B) C" h+ e然后你去, x/ F% |, F# J0 Q) n9 h7 w% G/ {
' ?1 ~3 Z4 b+ }2 M" q: E
代码:
& W" |- y4 l! ?& ]' p代码
1 K4 |5 ]7 O+ S7 n" G$ I4 D! rBOOL TextCmd_ClearPropose( CScanner & s )
2 [1 c. Q9 b- X- s* o W{
" k. [( U. q7 ^- F }/ Y: T#ifdef __WORLDSERVER
, ^3 {, @* {9 g: L CUser* pUser = (CUser*)s.dwValue;
9 P! x3 G7 p3 P, `: Y0 D; j7 i g_dpDBClient.SendClearPropose();8 [5 X' N4 u; }: Y' w
#endif // __WORLDSERVER! A1 y3 j0 E/ k& i# N
return TRUE;, s* N0 P3 M; U) b* h: Z
}) p2 q( q1 K1 l: b2 b; V
下面插入 a8 W/ l4 l3 u& |0 n2 G
BOOL TextCmd_rebirth( CScanner& scanner )$ ~% X' h) E1 U5 q K) s
{( Y" }2 w% E3 t. B3 @
#ifdef __WORLDSERVER4 n9 o6 y' V4 z- t
CUser *pUser;% y& M$ K* _+ K! s( P, J
pUser = (CUser*)scanner.dwValue;$ P$ N! t- Y: ]6 `
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
6 _3 ^; T$ r( d# mpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);- W% N2 V0 u( |# I( u
else
2 a/ i" Q+ S4 B8 a5 G$ y O! Q' v* d" rpUser->AddText("你还未达到重生条件!");
/ v2 k/ S6 M9 z7 N8 V% ]% V" T#endif
$ [$ s* ?0 F1 c, {6 F; Rreturn TRUE;
. c0 W' J% Q5 A3 t- Z} / o( j6 j4 I0 W8 y1 k
$ i0 `& I% T O9 f
! W& Y7 D( Z5 V2 `- f( R, ^& X6 N
9 o2 W. |3 w5 |5 n; R
|
|