|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
3 z$ _; d" F( z( h! B: e
' M0 z! I0 R- H' `+ I5 ^ x0 tMover.h* A: J% q( a' g
代码:0 N7 @8 U. Q9 I& c. |
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü1 G9 p: p. m( ^) O
) k9 ?4 D. p. R5 }9 d下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
; H1 F1 y$ B. c, V- d
. j, _1 R$ X5 V- E; l然后你去mover.cpp添加/ }4 t' T5 c( l# l! F
& n. [9 ^9 [* I8 a3 G0 Z代码:
~) v' z' E6 @! E/ Y1 Hvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
8 _- j. V4 A) m. M3 E5 L: U6 q5 {{( _" i! ~" I0 V/ h
#ifdef __WORLDSERVER
* i. E& m* Y w5 \8 I // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó E; c- {4 f3 [) \
MoverProp* pProp = GetProp();
3 K$ m5 |6 {$ H; }! u! k2 o/ P if( pProp )4 ^ r& U( l4 p e3 ^
{8 \2 Q" B7 [' b* p3 g* |
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
5 [4 h/ @ V+ Z: g/ ? X {
, F, b; y5 |7 [. A AddChangeJob( nJob );
" K( C, f$ {7 `$ U }else{
! ~- v, j% R/ @ N& j9 B return;% H- A- R0 O0 ]
}
f! \0 v ]0 Z, p& u int nPoint = 0;
) p0 B% O- }, P" p+ h2 z5 F if( m_nJob == JOB_MERCENARY ); E7 Q: h6 s8 ^9 I/ i
nPoint += 40;2 z ^# o w, a+ h
else if( m_nJob == JOB_ACROBAT )
3 e/ K1 m. G+ h: C# [2 D nPoint += 50;
/ G/ P V4 ]4 p& Z# I& q% k else if( m_nJob == JOB_ASSIST )
0 a' P: S4 K, N/ E nPoint += 60;- W ~( B6 o5 \% p' {
else if( m_nJob == JOB_MAGICIAN )- j5 Z+ L) z4 W& E% h6 S
nPoint += 90;, x# G& @5 R) \
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
; l9 s# u, n- @0 j nPoint += 120;5 c6 e3 o! S4 K! _# j) O9 H
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: P1 J; o) L* A) F nPoint += 150;" \7 s5 M6 f- K/ k0 S$ U j k
else if( m_nJob == JOB_RINGMASTER )9 r6 m p- u0 A0 S& L/ T. X
nPoint += 160;, O2 H* g; w* b4 y
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
) u' X6 l7 c" W0 v' U" R1 y. y nPoint += 180;7 i+ i2 h5 o4 f3 @' o
else if( m_nJob == JOB_ELEMENTOR )
) b3 C7 L3 m I: F nPoint += 390;' T! q; y0 b5 |; F! {( P
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) h4 U J8 ~! A9 B! [3 `+ X
nPoint += 120;
8 e5 O& N- \# }. J. f* W5 a else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )7 n5 b3 [/ E8 e; \
nPoint += 150; [+ B O/ ]% ~* t9 m
else if( nJob == JOB_FLORIST_HERO )
7 A. f& M' S6 _- |3 n/ e7 @ nPoint += 160;# a& M% A8 s4 m& R+ K
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
4 B$ L; c" l: ? nPoint += 180;
! n$ x4 ?& E9 |8 | else if( nJob == JOB_ELEMENTORLORD_HERO )' ^% L. j7 T$ w) c& _
nPoint += 390;3 ^! H. w" E" O/ k4 e
( ^. C. y8 `6 p1 t5 [
AddSkillPoint( nPoint );
0 Q1 b2 q9 ~3 x( ~ m_nLevel = nLevel;- ]/ z# h7 `4 N! E
+ U7 q& G* k* }# G1 C; r9 X: l: I SetJobLevel( nLevel, nJob );
, V0 M8 b) y* J% s' o2 V, a m_nDeathLevel = nLevel;
6 b0 R' X9 w) O#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
: c2 B! A! t8 ]/ ] if(IsMaster())
: D( y9 \! H( j# { f( B {) d* e9 N( v! B1 C0 O# e* r
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
6 O/ t. R O2 U! W: K if( nLevel > 59 && nLevel < 72 )
$ v3 P# O, [. C1 ~( _' X2 `5 B dwTmpSkLevel = 1;
! I" `- T' h( x7 d- b( C" n! x else if( nLevel > 71 && nLevel < 84 )" C: B* }6 u& j
dwTmpSkLevel = 2;
9 L) |' I# L- p: k: L# R' { else if( nLevel > 83 && nLevel < 96 )2 V. u* X1 l6 W5 f
dwTmpSkLevel = 3;8 Y8 f5 g/ Y4 F
else if( nLevel > 95 && nLevel < 108 )
8 a3 |6 ^$ y; w& E+ Q" x dwTmpSkLevel = 4;
; v. c2 B9 x" O, o" t else if( nLevel > 107 && nLevel < 120 )" p( S n! b S& X+ Q4 x" `
dwTmpSkLevel = 5;% ]; t6 [3 `- g Z6 z$ x3 y3 j
for( int i = 0; i < MAX_SKILL_JOB; i++ ) , B7 H8 `5 K) g6 C" [
{
( k# z8 n' w7 g5 O LPSKILL lpSkill = &(m_aJobSkill);
4 t/ ?5 ?/ n9 D; ~3 a j& b if( lpSkill && lpSkill->dwSkill != NULL_ID )5 ~5 F I- _ ?4 X3 i: _& U
{
( l4 x7 r5 a7 A+ T x ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * J( ~# \& @* V2 Q; r5 w( V
if( pSkillProp == NULL )
: ?8 W2 ]% c& _* }) O! f continue;
; u3 _8 d _% O; h- l# r: [# e if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: K# q3 I5 M# f continue;% T2 G" s% j0 R; S
lpSkill->dwLevel = dwTmpSkLevel;/ E) X9 s9 S0 F% F+ E' W; U
}* U/ u! C" N9 M+ b: w
} J1 t1 `! r2 E4 k( ^% R
}
- V) H9 o4 W1 Z; D, M else if(IsHero())
2 z# z* z( l, J/ A& E1 H6 X$ j {
1 V0 q; T! w( F1 n Q for( int i = 0; i < MAX_SKILL_JOB; i++ ) - n7 p4 p! b/ c+ s- E9 }2 \
{ Q5 }# {8 U8 H' |+ R; v
LPSKILL lpSkill = &(m_aJobSkill);' ?) [' u0 G; K/ }9 N( y
if( lpSkill && lpSkill->dwSkill != NULL_ID )9 q9 {; N) Y% w. G Q& G: L
{
, b) r# l! i+ K7 \/ D4 [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 p+ Z! z; U- ^/ t4 x, k
if( pSkillProp == NULL )
' ^0 h" h4 V: n$ P continue;/ M! j" N1 C- t/ I+ w$ b Q& F
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); u" s3 t: L! ], m0 ~: u" _) X& Q
continue;. }; g( S1 ?# x& j" o3 w
lpSkill->dwLevel = 5;
! I" D; S% o, L9 _; e% b/ t }
5 I5 N; A' l4 V/ m+ s3 ]+ ]) c }
) ]: Y8 G& }+ Y1 N# z }( L, |1 a! h) C) m
else if(IsLegendHero())
' u2 {4 ~& q- Y a6 h* A {+ i2 Q. H' y a( L1 l
for( int i = 0; i < MAX_SKILL_JOB; i++ )
# m2 M; j+ m" Z% Z8 d) x { 5 j8 c3 S$ V0 E6 P
LPSKILL lpSkill = &(m_aJobSkill);
u7 `( O2 S' A7 Q8 t: t( E* e if( lpSkill && lpSkill->dwSkill != NULL_ID )
* {# T1 \ @0 t+ g% Z# S) J; |* m, F A {
0 P; v7 E9 q/ i; ^1 _; K ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 {, J. X3 \- H5 K4 b" R
if( pSkillProp == NULL )
6 Z0 D0 d' u( L" [ continue;
g" v2 J$ s/ U2 [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 R% _/ ^' V; b1 P) x) A( A$ ]" | continue;
6 b0 Y+ m" a; X' ]9 M0 L7 U7 o lpSkill->dwLevel = 5;
2 R( t" T4 z% B* @2 L! e* s }# p% m5 d' \5 H" p- o* U
}
4 N/ N* e# f1 N% h3 o }
3 [( @" w9 F! x1 z#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% }# d/ g$ Z: g3 p if( bGamma )2 i5 e3 w V0 F& R" n4 k
{
0 j$ O) J, O t2 }# ~- \ m_nExp1 = 0;' K. b) C9 A/ Z& O$ k, l, f
}$ { d0 e' _: H$ X2 A
4 {6 L1 W" M+ a! _* v
( (CUser*)this )->AddSetChangeJob( nJob );, d$ w2 S3 f7 u+ n
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
' L1 P8 U+ e l( b% F. x l) Z% B2 |; _
. Z) e5 \9 x4 M3 F; a( i& l#if __VER >= 11 // __SYS_PLAYER_DATA
4 d" u$ g; D' W1 e' [ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );. X6 j9 A: M' k* x" p, u( w# M
#else // __SYS_PLAYER_DATA7 r. M2 _4 G" h" R
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );# v; {; I6 d0 c/ K1 O
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
9 d, R" \$ d" c( s) h if( m_idGuild != 0 ). E2 v8 `1 ], t, w
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
! S: l- w) T( v N) m( ]#endif // __SYS_PLAYER_DATA
) K1 i+ S* K& m SetHitPoint( GetMaxHitPoint() );. l$ J: K! N+ i, S
SetManaPoint( GetMaxManaPoint() );
2 H( H- a( w& w% x. } SetFatiguePoint( GetMaxFatiguePoint() );
' m, L# N6 Y( b h, N, q! R+ y7 T. f if( nJob >= 1 && nJob <= 4 )4 _0 ^( [8 ] X( `! N1 |0 r9 v
{
" P; n8 |$ d: [ w0 n) W: a4 h m_nStr = m_nSta = m_nDex = m_nInt = 15;
1 W5 y# L) W$ Y* ` m_nRemainGP = 28;
5 e3 S8 y, ~& e }
# B4 u7 C/ C9 d6 k" I" x+ ` if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ): }# [! Y4 u, l$ c$ j E* L. O
{
0 N$ ]$ ]& D$ P+ b9 o3 Z; L r m_nRemainGP = 118;
" `- d9 { P+ H. a+ N" @* } //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;* a- \0 ~+ n6 e- j6 F d
m_nStr = m_nSta = m_nDex = m_nInt = 15;
% E1 ~ ]4 S" h* o }8 l$ e( A2 H5 e- J+ \' k; f
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )% B- y# V4 @$ R/ u1 n
{2 a% L: x# ~) V( z
CItemElem itemelem;
" v- \. c# b! b$ _6 x6 g itemelem.m_nItemNum = 1;: m' q l; X- @$ O
itemelem.m_bCharged = TRUE;
$ K! v! u2 x# J, n8 O# {/ [ BYTE nID;/ R) Y9 P* B7 w; g- r, h) R) S
+ |- w7 I3 \0 |) b1 Y8 }& C
if( nJob == JOB_MENTALIST_HERO )
' e/ {3 k: d, h& y2 Z8 g itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;' L2 Y# x' r/ {% h! @- |
if( nJob == JOB_FORCEMASTER_HERO )
& [4 ?9 Q1 R3 D7 n7 G9 v8 i0 O itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;! \) j, u, v$ Z y* y* n D6 `# P
/ M8 R3 |& u6 a2 M4 `; j ( ( CUser*)this)->CreateItem( &itemelem, &nID );5 p) d% k& M" w) d0 |( E' D
}- a8 F7 q1 c u
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
8 L8 N; I( ]. T2 x; i ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
# H- R W3 N; C' e# |' ^3 s" l ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
3 l. B" ^$ y& a$ b1 h2 I /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );, |7 s0 v2 Q( f* T6 ]( A8 O$ y5 o! ]
( (CUser*)this )->AddTaskBar();*/0 v4 P& I8 v% Y" }( D
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
, f* [4 {7 w, N# H5 I#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?: U' H8 ? l+ ~- E0 D9 ]
((CUser*)this)->CheckHonorStat(); [# I9 S& A2 S5 o5 S
((CUser*)this)->AddHonorListAck();0 g6 i% b. Q, ~( V) [
g_UserMng.AddHonorTitleChange( this, m_nHonor);* z" P% H: c6 s5 P% O9 s
#endif // __HONORABLE_TITLE // ′Tà?7 h; F( Y) p0 c% }' b9 U( A' L
}8 B1 n3 r- y( F
#endif // __WORLDSERVER
0 w2 }9 G# L. C4 `) {, j} # Q+ v8 Q" j( V% A" J/ Q4 M
/ ^( y# [+ f$ u6 |4 G然后你进入functextcmd.cpp并添加以下
* y$ e0 f7 ?+ J7 Y9 S5 [/ H$ y$ R# {3 s2 ~+ }. C
代码:9 @* N- i' }5 n# d- @
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )" p" f |4 ^2 d% P7 c& i/ f
下面插入
$ B" B+ N" J. O: H! B0 Y) m0 x, FON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) . p& ~! H) G# A
5 g; O" H" c5 B! X9 g然后你去3 D; m5 ?7 h. O8 p" Y
0 o: [3 X; c, d! r
代码:8 u; x. N& E; x, c
代码
6 ` H2 p$ a! k) C: bBOOL TextCmd_ClearPropose( CScanner & s )" L1 p" D' U' Z* Z# n
{
! B' {/ ?6 i4 F+ s* f#ifdef __WORLDSERVER
9 ~) U* D# K9 D$ ] CUser* pUser = (CUser*)s.dwValue; {1 {. S$ R5 G7 t+ m
g_dpDBClient.SendClearPropose();1 n7 O8 M" ?$ f8 C1 k
#endif // __WORLDSERVER3 w) i( |) x; S4 O
return TRUE;6 O' p0 P `$ |+ m+ A: B
}" z$ ]- P# ? o- ~: ?
下面插入
* K( ?9 }2 l1 B! ~- H, a t) cBOOL TextCmd_rebirth( CScanner& scanner )' S/ D% p& D6 X7 ?
{' i$ H: C( y! D/ S$ j! `: S% }
#ifdef __WORLDSERVER
+ [' L5 \7 S& g- }9 HCUser *pUser;$ k) ?/ w/ ?% a0 L
pUser = (CUser*)scanner.dwValue;
% x' U, ]/ A- R- B5 U& ]6 E& Y+ Eif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
. c2 s; E. z" M/ C# TpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
: Y. A- m& K9 r" N' U% U! s0 N7 Oelse* {( f( b' ^# h/ [( t
pUser->AddText("你还未达到重生条件!");
2 m: x2 o# S, a6 Q! V8 L2 H! w#endif6 }5 s6 Q9 ]3 Y* O
return TRUE;4 O4 Q7 I4 I1 D3 F9 \8 p
} 1 A( ^ D8 k4 @7 w, l5 m! D& A
3 {7 \ h, B. ^8 S6 P5 Y
3 k q8 V" q. A' r, k- i1 P, I2 y5 d
, o' m1 P1 C. u: H! p |
|