|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ u& Z7 J6 A$ B
( n \& M( c y9 o0 J! RMover.h" Z3 U" ~# F7 A( e8 Y3 t
代码:6 p5 \: f' e$ D! n d
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
- a3 n' D% ^; L
! C/ W$ C) X% F下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
8 y" Y& v7 _! u' B! g1 I$ k: L' @: s4 w3 _: z# |6 M, n# R( |: J
然后你去mover.cpp添加+ G3 ~; x% |. s# N* \
$ g- b8 F( h# K6 D( ^
代码:
8 [7 F6 k! T& k. U. j6 H' [void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
~% [/ \) w( ?$ x/ y) E{
* \2 n& _9 C* z6 f! l#ifdef __WORLDSERVER
( ?! W$ n) L2 D A5 L% ?$ X) [ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 `( L }1 Y" f( _' k) ~( l MoverProp* pProp = GetProp();6 j6 E! j8 V4 w1 v4 |
if( pProp )2 N1 V6 ?7 \; ] J6 F$ H6 n, c, V
{$ t" @$ Q# q9 |
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
' l. Z* w1 ~6 [9 \0 ]3 a {$ w, a2 E! ?) N$ N5 b. x+ x4 Z& B
AddChangeJob( nJob );$ A. R) v" v. W$ `* ~
}else{
+ {; }! G$ q8 q/ X3 g! ` return;! b- M" W b5 {! D) A
}; j1 k! }+ ]/ Q
int nPoint = 0;
% r6 R8 v6 q6 E' ^ if( m_nJob == JOB_MERCENARY )1 t) B# S( t; V. q' ^
nPoint += 40;# H3 Q+ y6 \& j
else if( m_nJob == JOB_ACROBAT )
* ]+ C! m, d0 U! b& f" k8 ?7 S9 u nPoint += 50;
5 y' g! c0 J8 _& Y4 Z else if( m_nJob == JOB_ASSIST )
. |9 }* y' ~) F0 i( I nPoint += 60;
( \: w4 \4 f7 j' V! U; { else if( m_nJob == JOB_MAGICIAN )$ X: q3 y6 [8 v7 R- q
nPoint += 90;$ w- t8 {$ z& H, A" _+ V% l! H
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )7 }6 `: S6 r- U }! E7 c" U
nPoint += 120;
& P: t( z. m4 m' T1 `( m else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )0 a5 k) U4 m- M7 A" C5 ~
nPoint += 150;
/ F s, I4 O1 j# ~2 D/ c else if( m_nJob == JOB_RINGMASTER )7 p$ c0 u$ B, w/ ?
nPoint += 160; m/ _- G" m! r D' _: ~
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 |) F( ~$ I( K
nPoint += 180;! T8 I# \2 Y, |' q+ d8 y
else if( m_nJob == JOB_ELEMENTOR )0 C0 m$ h! g* B j$ R# C6 u& l
nPoint += 390;8 ~9 V* |1 ]$ s) C0 L: w1 V
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
4 @# V5 N, V1 E7 B) i5 {3 D nPoint += 120;
! z6 I) t- r% e& o else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )5 g, O7 q; ]. x* o) C* b* t
nPoint += 150;
x7 H- k( @* o5 B* a- @ else if( nJob == JOB_FLORIST_HERO )1 ~- D8 ~3 I* {& T3 z) Y
nPoint += 160;
$ J& t, Z$ V' L2 w# y1 }4 v- }' R else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" W7 k. s: T. g, a nPoint += 180;
: \1 B0 Z* ?' \) k else if( nJob == JOB_ELEMENTORLORD_HERO )
( e: n4 P" j$ b1 p j. F nPoint += 390;
. F& z' V8 }2 v# w9 |; G1 C# A
) @5 o# o6 `2 \ AddSkillPoint( nPoint );0 J# ~. ?6 _2 I& @ j% a
m_nLevel = nLevel;# ^ X, t3 s# j5 h( v5 L
# X7 C6 O" J+ [1 L7 V) x8 K. z0 }9 {
SetJobLevel( nLevel, nJob );) l: c# q6 ?$ L0 r3 ^
m_nDeathLevel = nLevel;
! B# y' E" g( @ w- f1 o- y#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans( ?4 f: f0 a2 S
if(IsMaster())
8 ]7 `, X; w% k4 X3 n. [: [ {# M; t4 q& P' V8 v
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1082 G6 T: b' T5 O4 I) {: W
if( nLevel > 59 && nLevel < 72 )
9 p% h" V% T- {. P dwTmpSkLevel = 1;
3 J- \# S" S Y5 d o3 o4 \' B else if( nLevel > 71 && nLevel < 84 )* H% J6 d2 S$ W$ M
dwTmpSkLevel = 2;
* p7 H7 C7 w# b0 u else if( nLevel > 83 && nLevel < 96 )2 T" o0 v3 ~1 J0 e% L) ]
dwTmpSkLevel = 3;; |: Q t0 E1 E# s; \
else if( nLevel > 95 && nLevel < 108 )9 r/ s9 f/ R0 ~
dwTmpSkLevel = 4;
' f, K! D2 ?2 v& ?% E% |! v( I5 a else if( nLevel > 107 && nLevel < 120 )
( J& D! X4 z: x dwTmpSkLevel = 5;8 n7 e7 ]" R0 f
for( int i = 0; i < MAX_SKILL_JOB; i++ ) t2 V" z0 G! j' f
{
* Q3 k( _" \5 }+ s LPSKILL lpSkill = &(m_aJobSkill);
+ i9 Y& _5 X. [6 d: q1 Y if( lpSkill && lpSkill->dwSkill != NULL_ID )) { v5 k( u9 ?/ I; T, R3 x
{
8 Z& E% Y% F Q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 ]# R5 |0 c1 J5 h1 T if( pSkillProp == NULL )8 Y/ F Z) C! i
continue;- R' x% X% Y% T1 L! s" e; i( U
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 G- `" G9 s# U continue;3 \0 ]3 S9 t' r5 `
lpSkill->dwLevel = dwTmpSkLevel;
/ b# b- U& u- Z/ e+ Y }
0 s; o; j! S0 V% E$ } }
0 `8 _% C4 n( C6 L @+ Q( t }
' l G8 M+ H8 Q0 F else if(IsHero()) C- E% u7 t& v7 W u
{8 K! E4 j- j K1 U3 F
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 9 {. _2 A/ [2 S7 G0 p. b( w
{ 0 |* p0 H1 R/ J3 L3 O [$ g
LPSKILL lpSkill = &(m_aJobSkill);4 k8 g3 S4 H6 h
if( lpSkill && lpSkill->dwSkill != NULL_ID )
- w/ ]7 {% S8 _2 I6 U" r {' M1 j3 g8 w" O2 q2 r
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) `' s; J: F; G0 e; K# ~ if( pSkillProp == NULL )
p" g) d2 ~2 a4 {- R) W0 @ continue;
9 l7 t& R( l) Y$ r Q" F if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 f6 H6 \6 Y# E$ Z8 L continue;
1 B3 o* d) x4 m7 Y) D! @ lpSkill->dwLevel = 5;+ T5 {7 L; e% h' A3 D
}: a. P$ l% |9 {& z p
}) m8 n! L/ n* U& i6 m# `/ G
}
, S! k' }3 A2 C2 _4 \$ n else if(IsLegendHero()). n: O" C3 M' A( M
{
3 F" E$ [8 z$ ?7 {, z1 S for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 f; n9 D, G% W: z- [& [9 s# b
{ ! K N- a0 A9 _+ H1 U0 R
LPSKILL lpSkill = &(m_aJobSkill);
! z8 R8 |: \9 `$ @( W- {: [' a if( lpSkill && lpSkill->dwSkill != NULL_ID ), `9 K% \+ v, b6 u& i
{( Q4 c6 F! |! d d3 Y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , g5 f* U! B; N0 C; l# b& E- I2 d
if( pSkillProp == NULL )0 F! G: y& Z2 W- i" B
continue;7 d6 F. q( `$ ]! s! a% ^0 [
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 p( S" K2 r# o! \7 l' }% V
continue;% L8 a+ n' v0 s1 B. n
lpSkill->dwLevel = 5;
/ ~1 N. A4 o3 M- ? }: v2 x+ f. E" y% A
}: [+ L- S4 y3 ~' j" o
}& m1 o- M( m3 C
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" g& W8 B% |1 U8 t0 _7 a; W' C
if( bGamma )
4 \4 w. E3 Q% G5 g# s+ Q {
& E* Q6 D' T. \3 ^7 U$ c m_nExp1 = 0;
h5 m J v4 ? }( }- _3 r3 R% ]/ V6 k/ V
/ T# g+ u3 f& k( |7 f- x ( (CUser*)this )->AddSetChangeJob( nJob );% k4 ]* y$ k) U* A( t# R
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
' Z$ W* ?9 e* w/ o5 ]9 o
6 m# I" P, \3 Z N8 e% v4 P9 J* j/ ~* Q. w# {) F) u. T+ w9 I0 d
#if __VER >= 11 // __SYS_PLAYER_DATA
" w5 \# o% a6 H g_dpDBClient.SendUpdatePlayerData( (CUser*)this );1 V* f' U f" k, |
#else // __SYS_PLAYER_DATA- m6 M+ s9 `" y9 V' a
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );( m- [8 y+ W/ Z A
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );, [5 m' n7 F1 p
if( m_idGuild != 0 ). F: ]$ p* T! O2 t4 a
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );+ E( y! Y# r8 b" H" ?
#endif // __SYS_PLAYER_DATA/ `9 W5 {( B. m) \$ O( S& }1 ^" `
SetHitPoint( GetMaxHitPoint() );9 j; w$ ^6 i |/ i% E
SetManaPoint( GetMaxManaPoint() );; {7 P. K" q6 S2 ~% \$ b7 _+ [
SetFatiguePoint( GetMaxFatiguePoint() );
# v: [/ ?' T# p \# A7 W if( nJob >= 1 && nJob <= 4 )9 D/ T- z% d$ e: K" G
{
' j3 D9 P# J- I5 L8 e m_nStr = m_nSta = m_nDex = m_nInt = 15;
, x' o# @6 c' W$ H0 O- L& A m_nRemainGP = 28;
& M w/ N# d* n g$ F; @ }
8 h: J- E1 a" D$ d/ e3 Z; T if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
, K- E6 y0 P) `4 f3 Z8 K5 ]" A {9 `0 l& y4 T9 l8 C
m_nRemainGP = 118;
% r( H o; l2 m. F //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP; Y9 ~ D- D9 u; U6 u$ y1 V
m_nStr = m_nSta = m_nDex = m_nInt = 15;
/ Y, P) Z t9 P+ ~ b2 c }! f% [( N0 T0 t: r4 W/ k) P9 m" s
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )6 {4 |# n2 m9 g+ @" j
{
n0 m$ P, P' l7 ~: J% q0 q, _ CItemElem itemelem;
. C( ?$ _9 ^% k itemelem.m_nItemNum = 1;; K/ @' X8 ?- I* |$ L5 X
itemelem.m_bCharged = TRUE;1 e$ k: W% s& S8 l% m2 d
BYTE nID;
$ X- t `# A3 A/ c, K/ I- r+ ], O) Y
# p' f$ W3 D, e& ~, n# S# p& { if( nJob == JOB_MENTALIST_HERO )
; B# n! z. H, c& t itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
0 V8 n* T# a; s/ l$ {: S; J; Y if( nJob == JOB_FORCEMASTER_HERO )
5 X5 L1 I, k/ r- }! ^4 }( ~ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
* C H+ h* d" |, }) y- @8 y* H9 g: R
$ v$ D% M- h7 i( L) i5 ` z ( ( CUser*)this)->CreateItem( &itemelem, &nID );* `% y6 e2 ?5 A
}
1 G0 v% h6 S0 e0 H8 Z* C g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
( Q% @8 `. L6 C' J0 I! O ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
# H0 H/ J: S" {1 P( K" Z ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
5 c& }& L1 N/ }. O /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
0 g% r. [" j" S! q1 l/ s ( (CUser*)this )->AddTaskBar();*/
3 A) _' u9 y9 M. \) g, Z ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );/ y# V9 f' e& F& I
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?+ f) D- r( L6 R: H/ T7 M" K; ^
((CUser*)this)->CheckHonorStat();: X. K) f, a( h2 G8 B/ j6 Y" v( F
((CUser*)this)->AddHonorListAck();
! S5 u7 z) p1 ^ L4 E+ R4 c g_UserMng.AddHonorTitleChange( this, m_nHonor);
a, t% n* e! _# {, S* @- ?( Z7 S5 h#endif // __HONORABLE_TITLE // ′Tà?6 b# k) e- P2 _/ T/ F
}% t/ a3 E7 [0 c* L# O U0 R2 i
#endif // __WORLDSERVER
/ h7 B: A, y7 Y) X- L ~5 |}
( g$ ]- {7 @4 a. K- R, h* U; X6 _$ N; k- e. C. f
然后你进入functextcmd.cpp并添加以下! I' U, F. }* H% p# t: u
3 \3 j' Q" z( [" J _0 |# n/ A* ?代码:
. O% d; z0 O- TON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' ?( `3 S5 ]0 Q" L: ~. i* i下面插入9 z+ l& r# q1 l* K' v
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
6 @5 M. ?2 r. }" b
* F, |# B: F1 @* K- J然后你去
- ]6 \- B5 `6 f3 H! N" g& A4 Y. w! _- P' w1 i$ ?+ Z2 V4 H! X7 V
代码:
+ L6 Z/ V; f# @" `代码
- O& `$ q5 ?! @BOOL TextCmd_ClearPropose( CScanner & s )3 \4 ]% r& u7 U8 d
{
+ \: }7 }8 k5 z8 u7 \. b* ^$ t" e#ifdef __WORLDSERVER
$ F3 \! z4 p! o; C, }/ q CUser* pUser = (CUser*)s.dwValue;
1 t: s% m3 J: e3 n: J4 x3 D% d g_dpDBClient.SendClearPropose();
$ |/ I& K/ d! U5 h#endif // __WORLDSERVER% l5 |1 Z& _$ d
return TRUE;
" I- o# Y3 u6 E$ S- |7 q}6 p- u9 c$ \0 z
下面插入0 ~1 Y) Y/ p8 j4 p5 T2 u {. f
BOOL TextCmd_rebirth( CScanner& scanner )
7 Q A+ O3 L" O7 N{ s6 b4 M) _: S d
#ifdef __WORLDSERVER
% _7 A6 N& Z$ C2 m3 S; ]CUser *pUser;
2 A9 x9 ~! {) X! E4 U( d" E7 ?pUser = (CUser*)scanner.dwValue;0 J8 @- P; O* t( Y' w- q0 a% y
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()) c; {2 U3 x9 ]: s, K) T
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
9 S& S1 z4 G& v: Xelse
% m9 X Z) ^) q, {' i* vpUser->AddText("你还未达到重生条件!");
6 \9 }( B' F) i" y. W#endif6 g3 `6 ^! T+ m; q) o0 H. u
return TRUE;
, T9 l" s/ f2 X# Q" [} 6 S) }6 B; Y' e. O
1 A- k* _8 o7 ~9 a
( {8 F- [4 X, Y. b! H# _4 m9 T
; B3 {9 P( R6 R0 h9 D: X# D j
+ W( `4 ^% r# j5 S) ?+ x; N# @ |
|