|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel4 z/ i' X( f$ }1 T" h0 k
2 {" ^ ]9 A/ N% r
Mover.h; L) D. H% c5 G8 W. z1 l( s
代码:
0 |0 K& d! R8 o3 n! J6 @3 k找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü1 b7 D. q1 R! X% R' I
0 F( \3 u: z) N) _下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
+ c' F! H! Q9 m- D
7 s4 z1 r+ y. }' ]+ F$ t B! J然后你去mover.cpp添加
! G! C: f5 [9 z+ A! m0 O R" m* Y$ o# `3 a' p3 E
代码:
* r" V. I% r3 C$ w( Z% Y1 V8 }void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )( q2 n; }# P/ w6 A" [
{0 H% i/ K( g; n
#ifdef __WORLDSERVER) Q3 \0 {" L3 ?, `" ]# y
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
5 K4 Q2 @4 g) c' Q MoverProp* pProp = GetProp();; R* u/ _7 Q6 N& y0 J8 X' W6 Y7 B
if( pProp )
. Q1 ` f" A6 \- ? {
. R5 J! u$ ]' J& X6 Y if( nJob > 0 && nJob < MAX_LEGEND_HERO )7 d" q b1 I0 O* d
{$ @0 s% d. |+ V
AddChangeJob( nJob );
# g9 }+ j7 c2 Q2 O }else{
8 H! P }/ G- Y' q4 m return;
+ [2 v) k, f- I% W }
7 K: h0 Q& @' e9 J0 L# q9 Z int nPoint = 0;4 v4 x0 V7 M) M9 w0 y8 j; {' M
if( m_nJob == JOB_MERCENARY ): M( i- T/ ]8 D3 Z- W2 V% e
nPoint += 40;- u$ ^4 ^/ r# r% r* y. r3 c' X2 c
else if( m_nJob == JOB_ACROBAT )
- v+ B, u: p- v/ g7 Y# W: R. v$ h6 Y# f nPoint += 50;
- q: p! C b2 l) K else if( m_nJob == JOB_ASSIST )1 e: z5 W* R1 }% K0 Q w- {$ u7 u4 v
nPoint += 60;0 Z4 p! V: m6 m1 h& s6 t
else if( m_nJob == JOB_MAGICIAN )1 |' T1 u Z6 k' m
nPoint += 90;
4 b2 o# y# B, L else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% I: c1 C6 U; o9 d( o7 b nPoint += 120;
) ~/ k3 O! F& w' y) p' \9 J: v else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
T1 t" f( `+ q4 C nPoint += 150;
# x, @, E8 I& ?* `- T3 g3 [ else if( m_nJob == JOB_RINGMASTER ) T- T2 A: Z M) H0 e
nPoint += 160;. \# k+ v# N) O) ]
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )$ O) Z; V4 W) G" P# o
nPoint += 180;
8 Z6 z7 T) L: q else if( m_nJob == JOB_ELEMENTOR )
8 x; N h' O, `3 K1 { ?/ V# \ nPoint += 390;" m3 ?/ n r* J6 M
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )- K5 m# Y p$ Z
nPoint += 120;
9 \$ G/ T N0 s5 H: U! W" y else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
" z2 f" y# l4 M! W0 A8 C2 A nPoint += 150;) m2 B- o/ [6 P" I
else if( nJob == JOB_FLORIST_HERO )# ?% y+ u* v8 P
nPoint += 160;' k5 |/ T1 h) g V
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
; j1 q8 M$ s4 K, D nPoint += 180;0 G3 @: w, _8 ^4 p) g9 H j
else if( nJob == JOB_ELEMENTORLORD_HERO ) e( a$ \" m6 O! ]+ X# I
nPoint += 390;
% c2 I3 g2 d" q0 n, A4 ]5 z1 t8 ]5 ?, a. G! W8 t% u
AddSkillPoint( nPoint );! Z$ H$ E: k6 n0 z; U: H
m_nLevel = nLevel;
3 x' J8 l9 i) W" @1 Q4 [
+ u& ]! J: g9 ] SetJobLevel( nLevel, nJob );: q8 } o4 g7 p+ Q6 A
m_nDeathLevel = nLevel;
9 B) x: ^# M4 i! v8 z% I/ L#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# F5 Z. C+ x, Z4 \
if(IsMaster())
% U3 o, |8 _1 O0 {9 f {
* X$ v/ j/ ?4 h# `# z int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
" g2 b; I( K8 t8 G L) O if( nLevel > 59 && nLevel < 72 )4 i% v% V9 `6 u1 d2 V a9 F* i) Y
dwTmpSkLevel = 1;' U9 ?- C K( a4 T" e& F
else if( nLevel > 71 && nLevel < 84 )) R6 }6 g% Y5 U1 d" a- G
dwTmpSkLevel = 2;
0 s$ Z0 h$ Q& x5 ]' k2 |: M, P else if( nLevel > 83 && nLevel < 96 )3 o" L$ H. p+ v: L' ?
dwTmpSkLevel = 3;
/ Q' r, l. a! S3 @% Z5 V else if( nLevel > 95 && nLevel < 108 )9 F' J6 U1 B9 V' k1 I+ v* W, g8 z
dwTmpSkLevel = 4;
: ?' f4 o2 n- r else if( nLevel > 107 && nLevel < 120 )& a! q! O; A. R4 s0 E$ \. b* P, x
dwTmpSkLevel = 5;6 o9 _# \) G2 G3 L) e2 T
for( int i = 0; i < MAX_SKILL_JOB; i++ ) / Z3 z3 V& ]$ i. E0 ~6 {) H
{ & ~ O0 T$ O1 j2 m8 |6 W% ]3 F7 V
LPSKILL lpSkill = &(m_aJobSkill);$ R4 h& y2 z* |% z4 s) A/ p& W- P
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 Q( I0 J2 L$ n/ q- n; G$ w/ ^" G {
/ X) w+ m( O) X/ K& E ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ o/ y0 f$ O: a( m if( pSkillProp == NULL )" T, m5 v) v7 c9 c* D/ ^
continue;7 R) q- m3 [; S1 F& ^5 z4 [6 K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 T' t" p- A! u6 ? continue;
' A! l* N& \, {# z lpSkill->dwLevel = dwTmpSkLevel;
8 Y1 ~. ]9 M% n% o9 n8 D c, R9 J }8 D% N/ f- \$ w
}
$ U- N/ Z4 g @' Y) w }. e% ^; P: s: S8 O- L" ?
else if(IsHero())
7 h, `4 a1 Q( b8 c5 q& X0 y {. f' e: K8 @3 y8 A
for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 f8 x* u: R8 a) Y { / s u G; I3 X* L5 B: k% R
LPSKILL lpSkill = &(m_aJobSkill);
! C9 q5 m' C* C# Z" e! {/ E if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 A) @' y7 j+ I {
1 e# g1 o: d x& k9 \' Q2 a, c ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. e0 ]+ e" }* V: ~# I2 w if( pSkillProp == NULL )
$ e, I2 N/ T+ Y& Z+ l5 ` continue;
5 ^; R" a, ?8 w# x; K9 K if( pSkillProp->dwItemKind1 != JTYPE_MASTER): }6 z( e+ E# o' L# C5 X
continue;
) N: W) r3 P8 `1 c; G6 ]& u) ` lpSkill->dwLevel = 5;
/ {4 x) I0 |" s* O0 D }/ v+ y2 ?5 I9 ~- t) `% ?% N
}* v! z: E) i- [* q+ y1 X9 V
}
0 c+ T1 a$ U! y0 R% U* z else if(IsLegendHero())
4 A) I1 T n: B% y. g0 d+ f {
2 @7 J: z. y* W; P% G& L4 A, j; q for( int i = 0; i < MAX_SKILL_JOB; i++ ) / o! ]# C; x# v! N
{ 3 s8 N. z/ y& e! f4 X5 e0 P
LPSKILL lpSkill = &(m_aJobSkill);# V3 h, v4 X9 ~
if( lpSkill && lpSkill->dwSkill != NULL_ID )' I4 O/ _: N0 Q F3 W2 z
{
0 t5 a& Q1 R3 G+ J0 z ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : x7 |" c6 d. D$ n) q
if( pSkillProp == NULL )
. ^$ F8 s4 h* V2 e continue;
$ p2 J; U0 [3 ~. @5 s$ E" B/ l6 U if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, Q$ `8 m# [9 ]$ v% D# K# h2 `" W continue;& n' e/ X2 v- R) R; g
lpSkill->dwLevel = 5;/ i! G3 l% v: j* X5 ~" A
}: Y% E! C# {+ Y s( n* C
}
( |% s% y2 P1 W }
; j* G4 K! {9 {* @" C#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; q& s8 U0 j) [2 P! {8 d: c/ O
if( bGamma )
( G9 b: X* `( P* _6 B. l {
2 \7 k4 x2 D5 V! J; l# H# H" { m_nExp1 = 0;
- G5 D9 J" y; T$ X3 I$ F }' A0 p# h' Q, C1 Y8 ^3 o) `
; N7 O# U* H* T) x ( (CUser*)this )->AddSetChangeJob( nJob );
- Z$ m+ A: _4 Q; ]& H g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );2 o: F: [3 a2 N* P, ]0 z
8 ]6 b4 L0 C: `) r% U: `- k
/ _ Q) m7 \ L$ D+ _8 @0 B#if __VER >= 11 // __SYS_PLAYER_DATA X0 L r& Y: Q" T: D! e7 X2 X1 v2 h
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );, z& A" h1 v' M$ y* B$ q
#else // __SYS_PLAYER_DATA( {; E( z+ W ?$ J, ~% |9 E7 @
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
) W, d H1 T; @. C- C g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
4 q" M! g6 A+ Z* M4 y if( m_idGuild != 0 )
5 }( Z" @$ M! c0 B+ O g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );* b3 H7 r2 t5 a, C& F; x; B4 J! h
#endif // __SYS_PLAYER_DATA
7 X. D' a; O2 Z* j* W SetHitPoint( GetMaxHitPoint() );
3 i" r4 q; r0 m4 w2 b SetManaPoint( GetMaxManaPoint() );
$ f% G, V' _# E, T SetFatiguePoint( GetMaxFatiguePoint() );
* ~. m' l6 \$ `; V if( nJob >= 1 && nJob <= 4 )
2 I: e0 A; e$ u {
1 L1 \& [0 M. v! e/ u3 O$ o2 s# J m_nStr = m_nSta = m_nDex = m_nInt = 15; _* \5 @- y9 r
m_nRemainGP = 28; {' X8 x9 x/ T$ N
}6 o1 V% |' o# |. V
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
* ?# ?- f0 ~5 s5 x {- J. p) s: J2 Y. [
m_nRemainGP = 118;
6 d( b$ I* Z2 ~; _( ] //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
; X F$ u. Q ?: q6 _6 k j- l8 D m_nStr = m_nSta = m_nDex = m_nInt = 15;' b3 ]) ?. s; B& y
}7 c1 q" H& e0 u. L2 m2 h! Z: I
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )" W% t" S$ o0 |+ O r1 [0 q0 R! M3 P: a
{
' a0 x# v6 p+ `; W4 V. A CItemElem itemelem;
$ |; b" l' Q( t$ ?, C itemelem.m_nItemNum = 1;
! a0 Q0 `2 N2 K% S9 g itemelem.m_bCharged = TRUE;2 A8 ]+ ?/ p3 k! G" I7 l1 b
BYTE nID;
. v; X/ \+ g' z8 J, }, G
* z+ q, m! L( Y if( nJob == JOB_MENTALIST_HERO )/ c( \8 Z3 j5 G6 H- a& u2 t
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
/ q: _! P3 U, x if( nJob == JOB_FORCEMASTER_HERO )
, Y4 r8 u7 j/ @* P% ?) x. w itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;; c, S4 G% @* d) i `+ G; ]
+ _0 e/ P7 M: L; Z2 J8 f0 y5 j% t8 d ( ( CUser*)this)->CreateItem( &itemelem, &nID );5 i4 F' a8 `! E! d0 F* P& g
}
6 S- |; e, F$ P g_UserMng.AddSetLevel( this, (WORD)m_nLevel );2 Q4 f2 p: F+ u1 v% r5 w
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );+ a2 t9 s1 a& R4 r- H& V
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! ]; q! E1 g1 q6 u
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
6 o) {8 W0 x! j7 M5 Y2 D ( (CUser*)this )->AddTaskBar();*/: t, E! B3 h$ h; z$ `" B3 P' _
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
- D# ]& n+ {% m#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?5 X- J" }7 n/ Q4 b+ r6 a# J" _4 ^
((CUser*)this)->CheckHonorStat();
4 `% N% N7 m8 T2 b) U2 h1 W ((CUser*)this)->AddHonorListAck();. b3 D, S( v7 C
g_UserMng.AddHonorTitleChange( this, m_nHonor);* A- Y( @+ ]# H5 [
#endif // __HONORABLE_TITLE // ′Tà?3 G* i, I% d. m3 m4 P1 x' f
}! M M' g* a* z2 u
#endif // __WORLDSERVER2 H# }. [/ ~' q5 O4 T7 g: O
}
' z% ^+ S* Z P& P8 z2 h+ B! x9 o% _ c/ g3 [- D }6 z7 S, j
然后你进入functextcmd.cpp并添加以下
% \! `' D1 l+ J+ t3 R( Q+ b5 u& V8 C7 y, ~- r+ P' h6 \9 @
代码:8 m5 x" `; t+ o. z& E2 z8 x* A
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ), N$ p' M! j/ J
下面插入
- n4 c Q" |$ U- z0 w- Q) t7 fON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) % f3 m8 s+ ?* | b+ d# | K
5 e' S1 s) B2 _, j* n; U: J
然后你去
) w$ r# I+ ] ~, C
7 {$ g$ t4 h, i9 P0 m" ]" q- J代码:2 O2 D" _, _$ i) I5 O7 z8 s
代码
4 t. ?7 G; ?8 GBOOL TextCmd_ClearPropose( CScanner & s )8 i9 Y9 `, j) E9 |, |5 k1 I& Y
{
4 j- `- D9 x/ G( p4 u6 c1 {" | Z#ifdef __WORLDSERVER
8 _2 g. ~) K7 z/ d CUser* pUser = (CUser*)s.dwValue;7 }2 y m6 g7 e* r
g_dpDBClient.SendClearPropose();
3 [ L. L# g/ p; ?. M7 ?#endif // __WORLDSERVER; \$ d4 q7 n. u5 f
return TRUE;/ f( U& T9 w, E* }% C* K' {/ [
}
: v/ L7 u# V V W4 J2 t下面插入; K( x% M" @7 c* q+ N
BOOL TextCmd_rebirth( CScanner& scanner )2 q# K. C. M. f! Y" G" g
{" T: r& M, L. O3 P$ f3 m
#ifdef __WORLDSERVER
' ^; x- F; F. j i2 yCUser *pUser;8 _5 O( M' h; y
pUser = (CUser*)scanner.dwValue;
/ l( `* e% x. W) s, Iif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())" Z3 b8 Y! M: ]$ x O' g d
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);! b: `; i" ~% @1 a+ X
else
3 y8 w5 v1 C# y' p$ k H7 RpUser->AddText("你还未达到重生条件!");
0 b8 w* [1 a( j n+ {#endif% D5 K- |" ]/ e2 W9 H
return TRUE;" a9 ~$ b" c3 C6 r$ w7 Y4 G
}
0 v3 x& P' I/ U( ` |
- ^' s0 M* c- B5 V5 I
8 m/ z# g% q+ a) m8 [9 s1 Y, [
3 b' [1 t/ S2 C& w9 i3 g) ~0 L
9 w) o L- |2 ~- W" h9 x6 _ |
|