|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel- G8 h9 R7 V$ |4 N* Y
" |$ w' `) d$ |Mover.h
6 {8 n$ J4 ^, T" P& {( v' G1 Z代码:) P. Q8 l+ Z( d+ a+ b: w. o
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü, t6 }1 E% [, {" B0 \+ Y. \4 d! {
: @. X4 b0 f' L+ f& }下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 4 v8 E* Y# w0 a9 L; ]1 Z
& q" H# O# w o1 N8 a3 b然后你去mover.cpp添加
! X: w; ?- @3 o
& W6 M8 @: l- @1 p3 T' M/ g6 Q# D代码:
' ?$ w( ` U! ?6 [2 |; X4 |/ Kvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
( @ J P9 C6 ~! c0 E{9 z) [; M t. {* P, j' W; H
#ifdef __WORLDSERVER
6 L) j) v. c9 D) V- Z // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 u: ?' q8 g, e9 w MoverProp* pProp = GetProp();% z( [) Y3 O" Y* X7 Z
if( pProp )5 V1 T# }$ D7 ^9 s I1 t
{! U. ?, k0 Q% _
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
- y) V' T7 F8 a- L- P9 r {5 f1 [/ G1 T- C) |3 d/ p4 F# V8 r
AddChangeJob( nJob );, d6 y3 u/ n* a3 l
}else{( f! \- r* W! W$ J
return;
" @$ I! `4 h! e }1 x$ v q8 j7 } B
int nPoint = 0;" W. K3 \$ X) d ?4 n0 F' D( i
if( m_nJob == JOB_MERCENARY )
* O: D0 l5 `# ~3 M. q i nPoint += 40;
; j, k- X" X1 U3 E* M; z9 a else if( m_nJob == JOB_ACROBAT ), }- K, c8 v* `# }* i7 C0 R
nPoint += 50;& S' i/ l( K5 v4 c n8 _
else if( m_nJob == JOB_ASSIST )- U, \( X! Y( B$ [0 D7 W
nPoint += 60;
+ @( x7 g/ K/ { W5 z& }* w( W" D M else if( m_nJob == JOB_MAGICIAN )# K8 D* v# F& b+ f
nPoint += 90;6 `: V( A0 O5 C# R4 F
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )! K! L) W7 Y2 G9 ]
nPoint += 120;0 `/ z8 @. U( \ R( q
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )$ B) m R3 ~7 k, E( p! Z
nPoint += 150;
1 ?# Y$ J6 x3 j, i2 S; D else if( m_nJob == JOB_RINGMASTER )
- C% F/ O5 I" Q nPoint += 160;& E- a5 x' f' n7 ~. n
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), _9 G% I1 n: `( J6 ?$ T
nPoint += 180;7 j+ N, p& m: t. m& v" Y2 k- z
else if( m_nJob == JOB_ELEMENTOR )
9 k$ Z: e1 ?4 [3 |" C9 k nPoint += 390;; j, e( k. h/ F7 T/ \' Y
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% H s) n z8 c7 Q4 K
nPoint += 120;
# Z8 w& E) [8 {% ^, U. }; k else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
( ^. g2 F" |7 y' X6 I; `0 l, s8 V nPoint += 150;& V5 [! C" b+ k0 l% B# f% F! _
else if( nJob == JOB_FLORIST_HERO )
! a# C; v* G1 a3 f" a9 p! Z. w: @ nPoint += 160;
5 W4 J% R8 Q* y: R8 Z else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 B+ B5 j8 d' M! a) R
nPoint += 180;& v% E1 V1 c/ H$ E$ u
else if( nJob == JOB_ELEMENTORLORD_HERO )
* N: x9 M- y$ m- H9 [( D nPoint += 390;
# c9 B2 R& {5 I" O) U5 R
2 e3 r( k1 m: \. ]; q4 C" D AddSkillPoint( nPoint );1 z* O5 C3 T4 H9 n( t
m_nLevel = nLevel;
2 a) r* h* [! v+ w7 A* d
& k8 o0 B0 s/ H+ U O SetJobLevel( nLevel, nJob );
; E1 J" S$ Q, \. I* H8 g m_nDeathLevel = nLevel;
4 K" j+ G: @% ~: e#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
H" g7 b! r8 j! D% Y if(IsMaster())
d9 W$ D) L+ D2 L5 f2 v" p {
) r* S+ k8 U. @' p: Q0 m9 m int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 @0 E4 z3 `& { if( nLevel > 59 && nLevel < 72 )
5 ?/ S9 u, d$ u1 {& {, M5 h9 j6 B1 R dwTmpSkLevel = 1;
; b$ f) \' Z1 ~* p- _' O' q. u" W else if( nLevel > 71 && nLevel < 84 )( y0 P; b& I, C
dwTmpSkLevel = 2;. c9 T2 v) Y; X3 \8 z0 P
else if( nLevel > 83 && nLevel < 96 )
5 Y8 `( d8 j* f" ?% t- N dwTmpSkLevel = 3;' m+ w% s' p% _+ r5 ]4 O
else if( nLevel > 95 && nLevel < 108 )9 m) i: I3 p+ n/ W/ p8 z' I9 R. p
dwTmpSkLevel = 4;
% i: M7 v- E$ T else if( nLevel > 107 && nLevel < 120 )! J: z5 l/ n( R7 ?: h
dwTmpSkLevel = 5;
$ Z1 g, m5 d& a; [* [: k$ X. e for( int i = 0; i < MAX_SKILL_JOB; i++ )
( t' r( \! K$ K# y" i* { { 0 e# ^( j+ ^0 I s& ]- P0 D- G- Y
LPSKILL lpSkill = &(m_aJobSkill);
& `% _9 _- z% `* V2 H if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 B. e, @" c0 v, Y$ a {
/ R0 i% X: d5 \% C0 p ^ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) F3 h! ~; k1 j4 o0 a6 ~
if( pSkillProp == NULL )% @. P( f+ J* E6 @( V3 @
continue;
7 M. h U9 N9 _3 ^ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 S8 M6 O* h3 B$ _! e
continue;
8 U9 ^8 Q E( p# j6 R+ T lpSkill->dwLevel = dwTmpSkLevel;
5 m1 V1 g% X# @ q } |8 o0 z1 Y. v( f
}
" R% g2 D1 }# |7 w7 r2 `) a+ T% s }$ f0 L2 R. S7 C/ W8 X
else if(IsHero())5 I6 ], k& v( y* \8 |
{
7 f g: n5 v4 K% O/ ~+ Y for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ m- d* O2 w$ ]5 P4 L { 8 \2 q0 g; p5 e' y" L- c7 @6 Q
LPSKILL lpSkill = &(m_aJobSkill);
6 I `4 D, A/ u/ ~1 S if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 L7 C9 V' |! W2 J {
6 N" W0 _' o' x& `- U ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , I+ u0 H" }% F3 F1 M& @: x( d
if( pSkillProp == NULL )* @* ~0 J) i* M* l1 J, {. F
continue;
' q( _9 X9 n8 T$ r1 K if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; a9 x! c0 J* i1 B continue;
7 `0 h' e- v1 K: h8 j) g. Q$ i" D lpSkill->dwLevel = 5;
3 q9 A3 O) u g8 T: C3 j }
8 k3 B+ m8 Z |4 X) b$ p }4 v' V! ?& `+ c" d* a
} S6 U# d6 T% v# G1 |. N
else if(IsLegendHero())
+ a* `, r \! V {
; T/ J3 ?1 ^, c, R+ M4 [ for( int i = 0; i < MAX_SKILL_JOB; i++ ) 1 U1 B1 X7 B1 X- V |: ~
{
- a. r( z! C- c" Z; R; S, m LPSKILL lpSkill = &(m_aJobSkill);. v5 I. m8 B; c7 N+ Q S; ?
if( lpSkill && lpSkill->dwSkill != NULL_ID ). X2 {0 ^! h- _
{
! W- w6 H& P4 T7 l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# \) U! D, R# h+ ]- B6 o% Z0 I if( pSkillProp == NULL )) G# X; t3 J9 D8 ]" [2 }. L
continue;& G2 H5 p6 X9 d: T: z2 u' `* X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 L3 |8 ~1 M0 P0 N0 R J
continue;
3 [, e1 c b3 b- B$ ? lpSkill->dwLevel = 5;
" _6 `7 _9 g2 U. y }
8 s* N# L* F" I" L }7 [' S7 V# G: {; i3 M6 `
}7 O( b+ k/ ~, Q5 ~# E- G7 b! Q; t; r
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" a$ s! f5 x: W, w. }' [
if( bGamma )
* a7 [& W* A0 H8 N) v+ d {" d8 D1 C; J' s# x
m_nExp1 = 0;3 c- P: F: ?: F! b7 C" E* J5 R
}# b+ G! W2 N: e" Q6 T. k0 X
7 L3 f/ g {+ }, y9 Y- ] ( (CUser*)this )->AddSetChangeJob( nJob );
+ j5 p, V5 b) r- B1 F g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );, D- \* _0 R& n9 c4 p
- j7 D# \: O8 I8 y' r6 Q
\. K7 m; x& h9 e3 _$ A+ ?#if __VER >= 11 // __SYS_PLAYER_DATA
! b- o* e Y+ @ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
( q/ U$ f/ K! h" x#else // __SYS_PLAYER_DATA8 S5 K0 p, X5 D( V0 h) A5 ?, \8 }
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );4 s; I1 N: F8 q$ N
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );/ z! T8 h, |& g$ k6 x' y8 B
if( m_idGuild != 0 )
4 O8 e* q* p, e g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );" S0 h" R( q$ |, g7 t8 F( `' \2 K
#endif // __SYS_PLAYER_DATA6 w/ a; P: e( s( i! V4 t
SetHitPoint( GetMaxHitPoint() );+ {$ S, z; n4 z, _* i& J
SetManaPoint( GetMaxManaPoint() );
, \' t# M8 K$ t! t& y SetFatiguePoint( GetMaxFatiguePoint() );4 O4 n7 M1 ~% ~3 \+ ~* K* ]
if( nJob >= 1 && nJob <= 4 )
9 s" z% Y, X. d! j5 L. z {
/ _: Q6 A, s) L) x m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ O% x. Q, F1 o( ? m_nRemainGP = 28;/ e: o+ y$ m' M% o
}$ T! W! A$ t6 o* m) W
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )0 Z+ M$ v9 O" W; H. O5 b' w
{: j4 q H9 ~" a' H8 i% Y
m_nRemainGP = 118;% p# I$ N* i [+ g, M- J
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
. X5 b: ]: U0 T, {- E' k9 Z m_nStr = m_nSta = m_nDex = m_nInt = 15;
! |; t8 C( V, c8 U2 P3 [" \ }) l9 x" a+ V1 g4 z: w; w* ?* ^8 B% f& i
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )' j3 y( _0 e3 w+ G
{3 F9 b# ]# F ]- T- I: y F# ?
CItemElem itemelem;7 h$ k& s" r* c; [
itemelem.m_nItemNum = 1;6 p" O+ |9 p3 g$ S7 z% D$ Z
itemelem.m_bCharged = TRUE;$ U5 k# d4 h, G" E% r+ m, @; f
BYTE nID;
) |- V1 ?: Y5 I# R3 g. J f, _% [8 g: t, {& b! b
if( nJob == JOB_MENTALIST_HERO )/ i; t4 s9 n0 V; y$ d% _
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;' T* y" U- A8 W
if( nJob == JOB_FORCEMASTER_HERO )
. @$ w; Q' r3 L4 e, I itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
& i3 Z& b: Y8 [9 U- B3 Y
a; P( g* |6 `4 H1 Z ( ( CUser*)this)->CreateItem( &itemelem, &nID );
" p* ~, ~& Y" h q" p/ G }
, `# d5 I* p% l1 _/ T9 } g_UserMng.AddSetLevel( this, (WORD)m_nLevel );9 G2 T$ `5 h0 O6 L7 u
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP ); b1 C7 Y( F' C( B/ Q
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! Q. j" ?. t! L" c- r
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );* p! v5 C+ B/ \' p( A/ S
( (CUser*)this )->AddTaskBar();*/8 \/ K) W) q7 v* Z. c k- F3 F
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );1 j( x7 H5 ]; T1 r! V6 Q5 U. c6 }* d8 ]+ V
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
+ Z/ f4 E/ |1 G$ k/ {) _+ [ ((CUser*)this)->CheckHonorStat();
: o" ^- K9 d6 W5 g1 Q" _ ((CUser*)this)->AddHonorListAck();
: k; c7 u, T- z4 c _ U' | g_UserMng.AddHonorTitleChange( this, m_nHonor); X4 J. J8 M% G3 I' i
#endif // __HONORABLE_TITLE // ′Tà?1 E6 t2 _; T& |3 G) t2 @
}
. Q0 e; m# U' t( c, S: Q! B4 M; e#endif // __WORLDSERVER
2 S1 \" A- n/ D$ d: g} 7 U5 d" o( K/ v i3 A2 E3 B
9 a6 ~: ^3 l3 |- `2 `9 J. I9 L然后你进入functextcmd.cpp并添加以下
+ D! {% a- m5 N6 ~2 I7 [: Q
2 T4 G5 Q/ c1 G" N% F6 S代码:
' i( X* F$ b- r7 P- X" i+ V3 CON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 I+ r# @( p: g% `! U
下面插入6 R# D1 D- j- O2 a
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) . A! a, w1 n+ Q3 G7 Z: d+ m. G
1 {1 l6 Z' V8 p2 L
然后你去
+ N, }1 g/ E. K4 ?# J8 _$ W
# F0 _* f" H2 X# Z5 c- j代码:
( \& W" ~5 R9 E, B* `代码$ |4 x# R# l3 L6 k5 l$ A1 \
BOOL TextCmd_ClearPropose( CScanner & s )
0 t/ _5 ~* U. j2 R" F{
4 g+ h- g, |% E4 g8 J: J/ E6 m#ifdef __WORLDSERVER
2 K( [" ~" p6 T' c% k4 |( @ CUser* pUser = (CUser*)s.dwValue;
1 e) R: U6 R. ]9 O1 D g_dpDBClient.SendClearPropose();7 P( q, k/ {# t/ m4 H3 J
#endif // __WORLDSERVER) P% [. Z, d* J% X0 Z/ l, R
return TRUE;
$ M1 W2 Z, \7 R/ G* G}- @- c0 v! V: R0 v# Q. t. I
下面插入
1 x* @- }- C5 k8 o5 E, j* |8 QBOOL TextCmd_rebirth( CScanner& scanner )
) |1 I0 G$ \5 M) X{4 E# z* b- U. u" b( m
#ifdef __WORLDSERVER/ x9 G: q- ]" {1 D* n8 x1 \
CUser *pUser;
& n& s* c: L, F) @/ opUser = (CUser*)scanner.dwValue;3 K' b2 k; f$ O0 L7 @
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())1 h& |- ~7 d' v3 a- T- a5 P
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
+ b5 A' i" t) I5 I7 e3 U3 ?else
! \) k N" k) K5 LpUser->AddText("你还未达到重生条件!");
! q. C" ]: f# o. |#endif3 X2 g# C9 B0 Q! Y0 {! I5 y/ S9 W
return TRUE;! j2 P4 g9 P/ O4 @% M8 @4 b) i
} , X/ W f2 A# ^8 j9 ?
) k6 Q& V, p+ m$ p0 l5 S
# f' v* E7 C& f/ `9 `, c
! ^0 |% ~% F$ H& y4 A$ w: V+ B+ y' W2 }$ O" ]; f- D5 F. a& \/ g l
|
|