|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel, [0 S7 I4 H0 Y1 J2 B
/ {5 e M. a1 N0 z
Mover.h7 n6 l5 x) y4 {# F
代码:1 {/ h/ y- L4 i5 K! y
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
$ o0 P2 V- x6 T! _: B$ i$ l# `, C4 u4 s' S8 c5 {* j, d
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
, ]7 {/ r* [# T D% ]# j, F1 c s3 c
然后你去mover.cpp添加
/ N; x3 _! I' p0 L) \/ Y5 b. ^4 n
代码:
3 D2 c v$ `% R# I, N8 s) mvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
0 `, p- h2 `& r$ e% i6 F{* p& |1 P8 U2 Q
#ifdef __WORLDSERVER
7 D3 J4 ?8 p e$ n6 V- \ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó0 ], d: G6 B$ z* T9 U
MoverProp* pProp = GetProp();
7 M3 ` ~9 N8 {4 Q if( pProp )7 E# J* A! f# e. y/ m
{& ^3 M$ r: l2 g) y
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
2 G! ?' h7 _) F# k8 R9 L {0 e. V2 U, J6 ~0 E* b
AddChangeJob( nJob );: v! X$ P, u) U9 t. ^. O
}else{
( v X, ~1 ~ y0 b& w return;) Y7 K1 c1 Z- [/ [/ n
}. z2 V. T8 a) l$ M
int nPoint = 0;& u8 } r3 \) V$ t: W
if( m_nJob == JOB_MERCENARY )
6 w$ y: h( G# j' s7 B8 ]9 u& W, {0 f nPoint += 40;
! ]8 b) l2 p3 N. c# f0 G7 T else if( m_nJob == JOB_ACROBAT )' I( o2 |0 |$ ] U
nPoint += 50;4 t* z; f3 G* ^2 C" t( `
else if( m_nJob == JOB_ASSIST )
/ }1 K, v5 i$ S, c7 a nPoint += 60;. R0 a0 O. G9 W( i
else if( m_nJob == JOB_MAGICIAN )" R4 G$ }7 C7 X( X3 T( V5 i" i
nPoint += 90;+ t& o' u1 @! s1 O2 k0 @
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )4 n/ k/ E2 X' A& r8 m8 S' P S
nPoint += 120;6 ?, B, `4 v, Z/ g6 |8 ~/ S
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )4 k( n! }/ n) X9 A5 I
nPoint += 150;. I3 Z- W* q( Y' K
else if( m_nJob == JOB_RINGMASTER )6 ~( Q# r7 i) _ M! [$ Y% A
nPoint += 160;
: ]+ U0 {% A& F% w- V else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
6 ]6 V9 Y& i: z, f2 d6 q& e nPoint += 180;6 o) m+ P2 C# f: m v; W' h
else if( m_nJob == JOB_ELEMENTOR )- [3 Y7 d/ ]0 c) p |7 a! h3 M1 L
nPoint += 390;
' t2 Q% z2 I' K7 p0 p6 S w else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; a2 W6 Y6 `! A) j nPoint += 120;
/ e N' d+ k5 N& D' b$ N" _" t else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )1 e* @2 \; o# I2 T. H/ W
nPoint += 150;% Q4 n7 f$ x/ _$ S. k2 W4 |3 p4 A
else if( nJob == JOB_FLORIST_HERO )- R" i+ z* ^6 z3 ?) y1 W
nPoint += 160;
: B7 }6 M5 `: |2 \. E, p) J else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )% r2 w7 }: s3 T% B
nPoint += 180;2 f1 O0 W* ?4 \4 ^6 ?
else if( nJob == JOB_ELEMENTORLORD_HERO )
# e- \; U' d* u nPoint += 390;3 W$ O8 ?2 L( q, y9 P7 A
3 B5 V6 n7 c B2 `) y6 I AddSkillPoint( nPoint );
& j6 l$ Z! t. R' H Z; q8 ] m_nLevel = nLevel;4 }1 E+ Y) T% z @2 b1 m* n/ `
' K6 [& {* S2 h" W
SetJobLevel( nLevel, nJob );
( W3 f7 R7 T" F9 r' I m_nDeathLevel = nLevel;
1 C- o/ Q' [# j) o( T0 x#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans ~2 Q( e1 J. i# H3 X
if(IsMaster())4 ~! _0 E* P$ @ D0 I8 e$ y9 \
{
& r+ q0 ^" q, F. d" Q0 z int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
) l( p* n$ |3 E; U1 }4 } if( nLevel > 59 && nLevel < 72 ) p8 v' j, t# f/ S5 h. L1 ~
dwTmpSkLevel = 1;0 q' T! n. E/ `7 {/ |
else if( nLevel > 71 && nLevel < 84 )4 V# s$ ^6 r5 ^" I
dwTmpSkLevel = 2;- h. _5 _; U: E9 ]
else if( nLevel > 83 && nLevel < 96 )2 s4 ]5 S1 r" B) S$ _6 \( _
dwTmpSkLevel = 3;
; `3 a1 h9 [; i else if( nLevel > 95 && nLevel < 108 )) T6 R# M. {0 W$ [/ g3 }
dwTmpSkLevel = 4;% i) |6 O* g# m1 R
else if( nLevel > 107 && nLevel < 120 )
6 j* [% n. R- |8 j! [! b dwTmpSkLevel = 5;
2 _% S7 @( o* F! J for( int i = 0; i < MAX_SKILL_JOB; i++ )
! z) U) l8 d. a2 h0 V- S5 J {
3 t5 W) ~4 g) g* P" R3 q LPSKILL lpSkill = &(m_aJobSkill);0 I! Q) O' I3 `
if( lpSkill && lpSkill->dwSkill != NULL_ID )6 O# _, Z7 K) G: V X7 j2 t6 K
{( s5 g4 x& H, a. Q/ B0 h
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # E( x z& S! N% {; E3 I2 j
if( pSkillProp == NULL )
+ Y" N3 \4 J' S6 j$ k1 y8 H1 W continue;
& h' E& s4 l" Y' W if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) W3 a6 b8 ]# S6 \, u. V, n continue;
: Q9 `5 a3 h" w# p lpSkill->dwLevel = dwTmpSkLevel;7 e: _: o; z3 L' D. h
}
) b- D/ M# N1 H; {& Q }& l Y/ t Y, [ u9 N) w
}
) }: |: A! H2 Q else if(IsHero())
. @* @- _* }. H {
# ~7 ^0 r. T3 j% c# w8 a% I for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( ^/ h% A0 ^9 n; ?5 `1 c/ Y' q
{ * \0 n$ w6 j) G J& _
LPSKILL lpSkill = &(m_aJobSkill);: g0 {0 y2 g- q: F G4 R0 G' _
if( lpSkill && lpSkill->dwSkill != NULL_ID )) O% x5 K/ _ k% }9 }) ~
{
, i& Q; f* n1 C, | ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; l8 q, w+ H, w; y# l
if( pSkillProp == NULL ) W$ c: l9 K* ^, v$ H
continue;8 u* p* A0 u% l. D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 b) x% |* j& D6 [& b7 D continue;" {0 A) D; j' M7 T
lpSkill->dwLevel = 5;
* a3 F b8 Y# K4 E. [, { }' Y9 L+ }. J# B
}" \' m" J0 |. K
}
/ c G. ~$ i* T3 ?" \6 |* i else if(IsLegendHero()) E1 C1 ~4 J: f5 g% c5 z, }
{- o( x9 W' O7 C/ N% A9 l
for( int i = 0; i < MAX_SKILL_JOB; i++ ) & c' u0 K) i. `# Q& W
{
; I. S& t+ K. ~/ f9 h LPSKILL lpSkill = &(m_aJobSkill);& ^- k* r, J8 G/ ~' Y$ x
if( lpSkill && lpSkill->dwSkill != NULL_ID )
* Y+ [* o' ]: x4 x {
# B3 k/ V0 r) B( v ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & e% E' g) B3 I( d# {
if( pSkillProp == NULL )
6 {( F" z: E& m7 A5 W continue;
4 x, V j9 R& M, \; I if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' Y7 k) x6 S! o3 y X, X. L- {% } continue;
! s$ @4 L0 l$ v3 Q8 H lpSkill->dwLevel = 5;
# x& Y. U4 v) k3 K1 W8 S! D }
3 n3 \( z2 L- }* [# v8 L }. [; i$ s& b+ ]3 y
}# { k' \: v4 O8 G
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
, W& e( u+ M3 J0 X if( bGamma )" x) ^" Z3 v" C" y5 i4 O
{
3 L; |) G6 u* B$ G, Z m_nExp1 = 0;
1 f, Z/ `- b0 L3 n: p% A/ c9 t }" Z% T4 u( S0 [" E7 e+ z: ]" l) K
. k* i5 i9 W" _' L r
( (CUser*)this )->AddSetChangeJob( nJob );
6 H6 o5 C i3 C; o9 _. b g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 s, @3 ~* y! I$ C
: i) Z" R# i8 k% z" R ]% r+ H6 W" }5 l' S" t
#if __VER >= 11 // __SYS_PLAYER_DATA$ W' r) [6 U. W5 u
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
" h8 \+ u$ M8 D1 A- ?. K#else // __SYS_PLAYER_DATA8 W* b! E% C% Y# H7 \
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );* d3 T5 U! Q0 r/ ~( t
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );0 l) G+ @. z6 b. ]; o7 m
if( m_idGuild != 0 )
# n8 A! Z0 s9 n7 N g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );2 z' Z1 G2 T) Z9 L4 W" q( @
#endif // __SYS_PLAYER_DATA
/ d! ^3 w. H/ s. F3 R' B7 { SetHitPoint( GetMaxHitPoint() );
. m; ~+ Q7 V! P) @/ @ SetManaPoint( GetMaxManaPoint() );2 p a) ~9 U/ U9 ? [$ G! G
SetFatiguePoint( GetMaxFatiguePoint() );2 ~: n) k" P* w. T& u
if( nJob >= 1 && nJob <= 4 )
) x5 W% W3 L) e8 X7 x {
$ B! {! c6 [/ Y. | m_nStr = m_nSta = m_nDex = m_nInt = 15;
. v; A6 l( r* c$ w" \9 d/ Z m_nRemainGP = 28;
, Y ~% V& ?4 X* P: V% A }
/ C8 w3 ^ p# v5 y* [8 e. D if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
, s1 O' o( c, T% G { V( I2 a. k4 M4 Y1 ~
m_nRemainGP = 118;
" R5 ]) S, U/ U; I. z- g //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;- c$ I2 R- Z) r5 a9 T
m_nStr = m_nSta = m_nDex = m_nInt = 15;, s+ O' n0 _% U
}
1 v5 W9 X+ ]) i7 ]/ u' d: X! t6 l if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
& ?" X* }7 j0 v9 M" M {
: _9 A5 q# A9 N" Q2 i. o5 k CItemElem itemelem;
) Z% l4 I; E' X2 T) G+ i* M% e itemelem.m_nItemNum = 1;. A# L6 ^3 o9 [* |
itemelem.m_bCharged = TRUE;. |5 y2 y2 n/ x
BYTE nID;$ \; Z9 U* R! v6 M& L
" H5 f9 D: q. ]* e
if( nJob == JOB_MENTALIST_HERO ) `3 a4 t% M9 m5 Y. Y% i- k) p+ Y
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;& S" l3 Z# }2 K- C; t7 L7 R4 A
if( nJob == JOB_FORCEMASTER_HERO )/ l b5 P) @) S( j {& s
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
$ E2 c8 h/ p2 f% w, W/ I
0 E2 `7 `2 ?+ @' S9 L# v, M6 c/ W ( ( CUser*)this)->CreateItem( &itemelem, &nID );
s2 Y1 I" a: s0 @1 T6 m6 _ }) Z$ s/ ]' g0 F5 g
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
' Q6 h7 m) _) C ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
4 R0 Z: @4 P3 P+ }3 m ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
1 s7 t; ]& B1 y4 [6 |: i; `6 w2 N9 R* m /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );5 m6 T; x9 m4 E: Y# k3 ^
( (CUser*)this )->AddTaskBar();*/
) |5 |: T- F6 P4 O8 P8 l; K& P ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );3 y% T+ |' f' b2 Y
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
) N/ o9 s! \0 _1 v! ^ ((CUser*)this)->CheckHonorStat();
0 K& O- E% [3 w. F ((CUser*)this)->AddHonorListAck();/ c) @& r" T' P! |
g_UserMng.AddHonorTitleChange( this, m_nHonor);
$ l3 n: R& |6 o/ r+ l2 q#endif // __HONORABLE_TITLE // ′Tà?2 e& I3 @: }1 l) L
}
9 o0 a' S, f7 R7 z#endif // __WORLDSERVER
2 I7 i* B0 m I, U% K& t. k6 D) b6 ^}
7 \- M" Q. L2 n3 h8 H4 I* `5 g4 H; A- Y8 h- {+ u
然后你进入functextcmd.cpp并添加以下
% Q8 L" l ]2 N8 \
+ Z% \: S# x4 i! u8 Q代码:
& N7 i1 _ U" N5 B# P% n# b7 v qON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )$ [* ?6 I8 I# r# n3 Q
下面插入3 A5 B/ X4 Q' L) g% x/ }
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 0 H' D+ ?+ _5 \# G6 [. c3 E) X) O# c
2 Y2 \7 M' J- G然后你去
7 h* C1 r8 Y# e5 D, }: S5 Q9 w
代码:
( W* ^& `9 d. G4 [; K代码
6 _% {& u) n, S1 T& @8 M- SBOOL TextCmd_ClearPropose( CScanner & s )0 M' m3 ?% Z% ^3 }% Z
{ `/ v+ {& C" G$ K$ F
#ifdef __WORLDSERVER/ i! r7 E2 C; b; J
CUser* pUser = (CUser*)s.dwValue;; m4 l1 @# m4 l3 A
g_dpDBClient.SendClearPropose();$ E9 I1 C& m9 t3 ~% B8 Q6 S
#endif // __WORLDSERVER
* f$ v0 y$ v# _; L8 a8 _ return TRUE;; `* ~' _" }0 C5 L* v0 p! P
}
* t" e1 G$ V- k1 U, c/ Z; e8 C: b下面插入
s7 T# n% A9 W1 E& A0 cBOOL TextCmd_rebirth( CScanner& scanner )
$ f- I! A+ D0 V% E3 S{$ J9 \' {# W: L6 i
#ifdef __WORLDSERVER; g) }& C; f, Z' L% [2 T
CUser *pUser;# f D4 l( u% C
pUser = (CUser*)scanner.dwValue;
+ X, i( Y" s; j3 C( [if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())3 V/ ~; k' C! @* k4 `$ @, F, Q
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
& C0 z$ O- o2 z4 _. |& x3 E) Relse
2 Z6 T* ]* B/ }: M5 v0 E9 GpUser->AddText("你还未达到重生条件!");
B4 l6 g! ?1 t* k: e5 } [#endif4 y+ _1 h N+ _* ]- ~2 O0 o h. X
return TRUE;
5 a, T, @3 M! r}
# C& O8 I; r( J, p2 H
2 n! Q' Z0 f2 w- k- v: h: }5 O. v b6 ?5 w
+ P* h l9 m: E2 ], f" G/ Q% x) W
& @6 p2 |5 v: X8 t6 X; D& R6 E" a- } |
|