|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel# v' Q, p+ L- v3 z
2 c& U1 [/ K: Z- F: F. {& s
Mover.h) v" v5 `. s3 {/ L; F4 n
代码:! t8 I- A: N, w' q w$ m
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
) Z! \; x) B& D. ~/ I. N
2 w- H2 K% m+ s- C下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
$ i, E8 ?9 E- e r4 |/ D
. T; z8 ]3 C$ O然后你去mover.cpp添加
% m$ l2 g2 _1 S# c$ E; U' X
- v2 K2 [8 M2 O2 p8 R- y- F代码:% V# y2 F, B1 H! v, {0 c& h
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
( U3 T/ ^; V4 Z# E8 @4 @{3 y# S" J% g/ P
#ifdef __WORLDSERVER
; x+ N; ~& Y3 [* O // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 d) A* k: K9 U' Y! Q" l4 g MoverProp* pProp = GetProp();$ Z) d( U1 V- [8 U: S& ?$ Z, v; B
if( pProp )
- t1 i$ P8 @: q0 v4 [ {
/ p) P% I- E) O4 e# ] if( nJob > 0 && nJob < MAX_LEGEND_HERO )
# @, j) M% c' i) t {
! [6 ~: I2 E" A( c/ @ AddChangeJob( nJob );
9 l. ]7 _$ j" L8 u7 j+ E }else{# s R( [! i8 u$ Q& o
return;( l, Y3 k) w5 f# f
}
: _0 j$ m+ T, t int nPoint = 0;
6 `) c5 ?) ], o if( m_nJob == JOB_MERCENARY )7 T4 b* ?- T/ x) _& i+ D- I, h. S$ K7 k
nPoint += 40;: l' ` g; H2 ^# O: i$ S4 |
else if( m_nJob == JOB_ACROBAT )
2 n$ v X/ T6 t nPoint += 50;" N1 C' B N" g' m
else if( m_nJob == JOB_ASSIST ): l3 j9 `: d9 ]" q
nPoint += 60;2 {4 e0 n1 h0 c# z' {
else if( m_nJob == JOB_MAGICIAN )
8 H+ O/ F* f3 B6 k9 a- K nPoint += 90;5 j/ x3 Z7 q w, F6 N
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
' {' V! m. ] c) } nPoint += 120;2 ~/ n- ~+ e) C% f2 K" H+ @8 S
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: L# z9 z2 l+ D) R$ X# E, R nPoint += 150;3 E0 ?3 w: Z; K6 A8 L0 J
else if( m_nJob == JOB_RINGMASTER )7 ~ x+ B m. j3 X" @* R7 T- q
nPoint += 160;
) @. |# d" z- r else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
2 _* j5 O& ], f$ T: j" p nPoint += 180;
- _, U, L& m8 z# k else if( m_nJob == JOB_ELEMENTOR )
+ B* _: o. N! }8 B9 E: ] nPoint += 390;
' t: k8 q+ g; I( P1 D else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
& @4 P: M3 t, G3 S4 E nPoint += 120;
a3 N4 r9 v. a1 @. `5 c4 l else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
& b8 X2 r; P3 @8 B: @ nPoint += 150;3 l# w; z3 k$ O4 |" l6 J
else if( nJob == JOB_FLORIST_HERO )
: r. Z+ l+ B7 V nPoint += 160;. P0 `, p9 [' ?$ q+ d( g T
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" L& e. h' t4 s7 t nPoint += 180;
- x. {4 x" f3 }6 q6 L else if( nJob == JOB_ELEMENTORLORD_HERO )( Q* i; |* g, G8 B, h
nPoint += 390;
3 K! P5 g" t% T" Z
# r. r6 s" t5 G7 v2 ~# e! V$ a AddSkillPoint( nPoint );
! G* v; {4 h. g* @9 ~! \, ]# ~ m_nLevel = nLevel;
2 O) \: o* w' b$ U
1 D+ k e6 J- c$ l* n SetJobLevel( nLevel, nJob );
$ _1 J. u A: Q- Z7 b m_nDeathLevel = nLevel;' `7 N4 R; x* o5 S& K3 {# `1 R
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans' K% A; r) ~- o* m( `
if(IsMaster()); J" h8 J$ U7 x6 }1 l
{8 E, p6 n: P& o6 L* L9 t
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
5 J: B8 S" W) @; e if( nLevel > 59 && nLevel < 72 )
9 m, X' M7 R$ N dwTmpSkLevel = 1;. F/ x- {4 z# d( `4 W
else if( nLevel > 71 && nLevel < 84 )
0 M1 k7 _) M; M5 h dwTmpSkLevel = 2;
9 I+ p7 N0 o' d1 | else if( nLevel > 83 && nLevel < 96 )1 D. _ }, W7 o" l% }3 ]: c
dwTmpSkLevel = 3;3 p( [7 E) X. s. ^5 s9 M
else if( nLevel > 95 && nLevel < 108 ) f% N* E, t# t8 l0 d: f3 v! k
dwTmpSkLevel = 4;; z" J- h8 K0 m0 h7 I' A* V& t! m
else if( nLevel > 107 && nLevel < 120 )' p+ i: q. |" e( J( x
dwTmpSkLevel = 5;
) ~! G9 n: r% |! B for( int i = 0; i < MAX_SKILL_JOB; i++ ) g! D i4 Z& v" @
{
! c% d, h4 r9 @( O LPSKILL lpSkill = &(m_aJobSkill);
$ h* [: f! e. U: v if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 E( s3 @$ ?5 `# t' ~3 c' L { |/ |* K0 z9 D/ @5 n( m+ ?
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( s, U' ~& P# ~+ g. l/ }! m
if( pSkillProp == NULL )
' Y9 I( x) K Z$ i8 b! x continue;
) B9 \- Y7 S9 @$ \7 j) E$ D if( pSkillProp->dwItemKind1 != JTYPE_MASTER); n- }+ P5 g6 f$ G
continue;
. s& M( |) u" K1 u lpSkill->dwLevel = dwTmpSkLevel;
5 Z- @4 H- q) s- x }4 g" G! l- }# j' M
}
T. m# A; z% O$ d8 B/ T }
9 L! ?1 N- F3 ^1 j* f1 Z. g else if(IsHero())9 d% p. @; t0 \1 Y2 O3 L6 x6 F) C z0 G
{
5 |+ X2 S! |/ I Y for( int i = 0; i < MAX_SKILL_JOB; i++ )
( b) K( z7 a0 V8 ]( f {
2 \7 t' k M7 s/ _; d LPSKILL lpSkill = &(m_aJobSkill);8 j. C3 `7 F0 N" Q$ |/ `, k) x3 @
if( lpSkill && lpSkill->dwSkill != NULL_ID )
( c: [+ D y9 ^) N/ }6 Q {
, e) i# T4 G: M/ q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! |. j! _- o# C- F2 Z: h5 ` if( pSkillProp == NULL )
' d7 \1 u. r$ p+ J continue;
; z# Q. W/ W! H% @& o if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ p" M9 Y1 b% s# E6 k0 J
continue;8 w$ {- g" I) s9 W5 C% Y% G( M4 V
lpSkill->dwLevel = 5;5 b8 u z* b+ {+ \( H
}/ R4 y1 G3 J/ K
}
2 m- [+ H. @& N! D, P% P7 b }8 ~8 Q k0 K& p. a- C$ ^
else if(IsLegendHero())
7 u! `" l! p% ?, x, ~ {9 b7 r+ Y/ `. p: Q# d' z- |
for( int i = 0; i < MAX_SKILL_JOB; i++ ) + c* v/ n z9 @3 E$ r% B( G
{
8 ? [' g: W; z B1 f2 p LPSKILL lpSkill = &(m_aJobSkill);+ K }7 z. U; G- [$ Y" _
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 e% `7 b5 ~. D! M& o {
5 X$ Y1 g1 D8 i- D ^ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , `4 G+ h5 ~. X9 P
if( pSkillProp == NULL ) Y. t- ?/ U) G! l, Q2 O
continue;
& a& N; t5 [8 a0 f+ h! F6 b if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# ?* e8 \- O7 R9 f$ I continue;% ^: I3 w% m# L H! A; D) m3 O
lpSkill->dwLevel = 5;% j+ G) N& U' s. ]- i+ A9 a3 T
}
) b/ A; }, {* e8 p8 n, V' N }
( @& S% w( \7 S. \ m }
& x) p$ x0 S. s2 u0 v) Y& l8 V#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# w" W. y: Z" y4 _, a* a if( bGamma )9 ?" x" u4 u3 v" c
{
) b( ~( g7 p7 R8 j m_nExp1 = 0;5 o# Q0 F5 q( m, O) H+ d
}9 r: y. f- I% H, o
2 Y9 x0 J, E" Z/ Z
( (CUser*)this )->AddSetChangeJob( nJob );
& x. M4 N& w5 u0 W; w# ? g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );' _" ]1 J' B2 v) V
1 m, t! B- g) C5 A; C, Y2 C1 i$ z* T D9 D) f# i5 }% C/ x* y
#if __VER >= 11 // __SYS_PLAYER_DATA
; Q" }" l, o% X g_dpDBClient.SendUpdatePlayerData( (CUser*)this );/ u w4 e+ [' C2 C3 P+ Z2 c$ P2 }
#else // __SYS_PLAYER_DATA
! p2 A7 A* m- ]& m5 Y g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
' Q/ k+ H3 |2 s' A. H6 R8 y$ m g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
. W5 t5 }. o( n, Q* U, O if( m_idGuild != 0 )9 z8 c' w. n9 R0 Z- Q6 Z' z
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );0 s V* n7 d" o2 c- o, G
#endif // __SYS_PLAYER_DATA
* G, _/ B( Z0 z/ i4 N SetHitPoint( GetMaxHitPoint() );
" w5 |+ ~- n M, F SetManaPoint( GetMaxManaPoint() );7 ]6 F6 u! K2 Y" S/ O
SetFatiguePoint( GetMaxFatiguePoint() );5 `0 M0 ~, p+ g+ h
if( nJob >= 1 && nJob <= 4 )0 s, f: j: Y4 O1 z9 L, F6 I& n
{
5 W j# L/ U9 T3 P" n" g: g* q! ^ m_nStr = m_nSta = m_nDex = m_nInt = 15;; ^5 L! H. a q6 n
m_nRemainGP = 28;
; P: k+ F7 A9 h" [" R }
$ G0 _. {' V! j2 Z# _6 b2 R! V; V if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
% E7 ]: l& B5 ^: ~ {2 N1 \9 t( d$ Q: p% i0 w
m_nRemainGP = 118;
* X }% o. \' I //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
1 q8 {+ ~- f4 v* {( J3 N' R m_nStr = m_nSta = m_nDex = m_nInt = 15;5 Y) S/ ~; o: I$ p2 I# b
}0 ~" n( v6 n+ x
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )5 `% e8 L z5 L" k/ H$ t3 M
{
7 K/ ]/ }+ N8 \& W CItemElem itemelem;
) [. l% j8 a) r, r. g( z# H itemelem.m_nItemNum = 1;% I+ }- n7 ^- f) N
itemelem.m_bCharged = TRUE;2 B! M* Z0 O) A
BYTE nID;( S) l' u' v# L3 |. l+ o
6 r8 ]6 L# o) N! i5 ?; l n( X if( nJob == JOB_MENTALIST_HERO )+ ?* W5 C- S0 l+ ]+ q
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;( k: f& J( _) o" H, P
if( nJob == JOB_FORCEMASTER_HERO )8 H3 b# U+ k7 G* K
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
; f8 L, a* T5 k% Q, _8 n+ @" L3 N( j* R7 t1 g% K& H) R" G
( ( CUser*)this)->CreateItem( &itemelem, &nID );
/ Z' S7 r; c+ W( [ }% e7 ~: D0 ?! U8 y0 O
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
9 q# Q. y, p- q- @, [; `0 o* y ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );9 g. `$ i4 S% h; Y
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
3 _4 b" M5 r V6 m4 w) W+ M/ Y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
2 f( g3 R: X" T& T! K$ p ( (CUser*)this )->AddTaskBar();*/
, d" G4 c9 ~0 D/ X3 ?4 Z7 A& C) Q ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );" t/ J& U* Z' B. P
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?0 v* z+ D7 m- ^. q6 y& R
((CUser*)this)->CheckHonorStat();
2 @" s/ Q' K0 { h% f; u t! V ((CUser*)this)->AddHonorListAck();
- ?+ }: w, e' |3 c g_UserMng.AddHonorTitleChange( this, m_nHonor);- `! ]" O7 t: I B4 ]* J& L
#endif // __HONORABLE_TITLE // ′Tà?8 I3 W/ R- l" n/ S7 u( b
}2 a2 F8 E' ^/ h0 |5 x. \
#endif // __WORLDSERVER6 Z1 I5 m2 m7 t; M3 c! t8 u/ n
} / w) T9 ^7 K0 x. r0 D
4 n$ s# [$ n1 s4 ]' c% i% A+ O5 [然后你进入functextcmd.cpp并添加以下7 X) {* i* W0 L4 [; \
) g; P9 B1 g( D代码:
# M9 n) E; ^. I) O/ T9 ZON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )5 M [" p% Q' I' N& b
下面插入2 }- f2 ]6 I3 D$ E. b+ }) }
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
8 `2 X( ~/ @+ i
* ?: E# a+ O9 W然后你去
' y7 X: O$ a0 A8 l; V" l R Z$ n; A+ f
7 Q$ E5 y4 C$ E* v代码:% `9 P n( p7 W1 D
代码( o6 Y$ l. W& ~; g: C, l
BOOL TextCmd_ClearPropose( CScanner & s )
8 s% v5 |2 A( d% u# P{
8 D3 M5 c8 P- I# D3 u4 q0 a#ifdef __WORLDSERVER
; c! s5 Y8 @4 |; b) }( v5 e6 Y CUser* pUser = (CUser*)s.dwValue;
Y1 p" A" F- l2 L, ]& G g_dpDBClient.SendClearPropose();
& j" Y- @6 s8 X#endif // __WORLDSERVER% g( \. _% i. U
return TRUE; e+ R) N" b7 Q/ |
}8 \" J( G2 S/ y
下面插入( ?6 _! Q* _2 J8 Z) j
BOOL TextCmd_rebirth( CScanner& scanner )
. U5 {, t& O- s" E1 @1 _{) g# j$ G4 o a$ o( G
#ifdef __WORLDSERVER
( `; ]% j" a9 v; MCUser *pUser;) Q! l! X* y1 r7 @$ \- o$ y
pUser = (CUser*)scanner.dwValue;8 f/ `+ u' g% X
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
; {6 U1 V$ I+ s6 b) {/ |pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);- ~0 K \4 ]2 e3 C9 D1 T
else; u3 v/ @% I1 z, A0 K% R
pUser->AddText("你还未达到重生条件!");' ]$ P6 I7 Q5 ?! E
#endif: D) R# @: B$ r
return TRUE;8 E# v5 |! W3 g0 F- ?# ^2 }# r `
}
7 h/ |* \. j' _# N" K3 N$ y8 g
- ^' _8 c2 l9 C `1 V# n" S& I+ c9 Q; w3 f6 e/ d# i
- e/ F6 _) X! @) E3 R" D ]* V* w, i4 K( m3 |4 ~1 J
|
|