|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
4 ?' n8 y/ e N# A- o
) j- E( \- d& J/ P( EMover.h
Q; o ^+ \0 K4 U$ @代码:& G8 V$ d6 ?" J, J! m
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü: f: b* F% S- d0 x1 F1 J) J1 t
+ L) N( X8 R- f+ |2 r下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
) y0 H/ g ^; A! L& p1 ^
6 o4 T- o# N# \& L& }0 U6 T然后你去mover.cpp添加
$ z; i T6 ^* X% \' T
- ?9 J9 {, I m5 y1 B, G代码:& F0 \) S! e2 ]1 V( F, s/ h
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
4 {% x' c$ E' ^& n0 _{% E# r6 l8 H/ Q2 n
#ifdef __WORLDSERVER# N( \1 Y" l6 Q) w& X- l( } P
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
8 Y1 k" ^# p: P MoverProp* pProp = GetProp();
, [( I$ _! G& k" d9 m5 {" l if( pProp )
7 T( V8 s9 E% j' I8 _ {
; _' E" N, l, m! h" p" K if( nJob > 0 && nJob < MAX_LEGEND_HERO )" g3 c4 ]/ y Z, ~( Z8 `# } p% e8 O
{
# W- f- Y1 f) y% y1 H AddChangeJob( nJob );2 t( z8 h' B2 f' M
}else{$ X) t9 R L; z
return;
" A+ T( \7 h1 M }0 k; ?8 B H) F3 V; f% e
int nPoint = 0;/ A$ j; W6 _ M7 f
if( m_nJob == JOB_MERCENARY )
' C* G" @1 C" w; q5 @ nPoint += 40;" O# n; X1 L# h% u+ C
else if( m_nJob == JOB_ACROBAT )" b: \5 @) B9 N5 @* h
nPoint += 50;
; Q0 F+ [" i6 O4 D4 [' g3 B else if( m_nJob == JOB_ASSIST ), f+ a9 c. E/ t( ^
nPoint += 60;+ t+ w- ~5 {& }# x3 W: t) M' C
else if( m_nJob == JOB_MAGICIAN )2 A/ G7 Y% F- k( E9 B) h9 K0 v
nPoint += 90;, V7 [5 I1 @. l. z
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 ?6 @- K8 l! M' [# Z
nPoint += 120;& M5 P# Q _2 ?: T+ k
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
$ c6 l6 g6 f- p4 q0 U& C4 V: E2 D3 K nPoint += 150;
+ M$ {: m# w; I' b- _ else if( m_nJob == JOB_RINGMASTER )1 E+ G# p/ p' `! r
nPoint += 160;$ C) l, q7 a/ \$ m
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), @* x' k6 H: V; H4 w+ i
nPoint += 180;* W5 k. `4 `: K) z' L- \
else if( m_nJob == JOB_ELEMENTOR ) I( N6 l4 C) {$ x# l
nPoint += 390;: \) ]2 B0 H6 L0 e. c: R
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )( O H/ [, [# M2 } D& q0 W
nPoint += 120;& Q. U9 ^* q+ B" y# u
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )- F; J! ?9 x$ G; Y) ^
nPoint += 150;
5 p7 T! y2 \# h8 l2 V- |/ L else if( nJob == JOB_FLORIST_HERO )
, _; g5 M8 k6 c' d* g) O" N0 t nPoint += 160;$ i' x3 H& ~' B3 h2 [6 r V, |
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
7 ]. f( V' ?* K) |+ C& ^9 O nPoint += 180;' _' B" x' a% z
else if( nJob == JOB_ELEMENTORLORD_HERO )
; n% S- b- A+ j" t7 y% A' z nPoint += 390;9 G V: k1 `4 E* j( J- _9 f, I- e
" m. h% O t& \- w* `1 m$ F0 T
AddSkillPoint( nPoint );/ ]4 q2 q1 Z' e9 E; G
m_nLevel = nLevel;6 |8 I; N9 ^3 d8 M
! N% A' {- |. K8 u
SetJobLevel( nLevel, nJob );0 g4 B8 h( X$ v0 c# v$ Y4 b" q
m_nDeathLevel = nLevel;! i2 \' ]$ Z7 R7 K Q( v( W; h
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( V1 b/ x" ~9 c+ S! S if(IsMaster())' \6 G" Q: I$ R- E/ T2 Q' m% u
{5 t2 B1 y( [7 d
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
3 @( l1 x! N5 g* C! w if( nLevel > 59 && nLevel < 72 )
' B& S- Z6 L6 M; r' `) F& d& f dwTmpSkLevel = 1;
. \9 r1 h E x; ] i2 L else if( nLevel > 71 && nLevel < 84 )
( Z* r1 b+ a1 [& s. K5 d dwTmpSkLevel = 2;5 ~- T x! ?: w4 G% d; C" w/ l- v1 j
else if( nLevel > 83 && nLevel < 96 )7 N: W' F; `6 C2 o8 [( s1 q8 I
dwTmpSkLevel = 3;
2 q" {0 H G; c; y$ X9 p else if( nLevel > 95 && nLevel < 108 )
: m; q, | w2 e6 l dwTmpSkLevel = 4;
& X9 W% j, _# k8 b# Y else if( nLevel > 107 && nLevel < 120 )
3 T2 m% W, i4 R2 _ H! Y, a* }$ d& { dwTmpSkLevel = 5;3 c( t7 z$ W( Z
for( int i = 0; i < MAX_SKILL_JOB; i++ )
E. K- |7 J, _# l9 D3 | {
( G$ h. S1 r! L% W8 M" p LPSKILL lpSkill = &(m_aJobSkill);& c" S/ M9 I9 f8 }. g5 K, {) _
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 h# T; F: \5 b( X; O5 { {" ? E! {5 [' K5 R2 }
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
m! w, R8 Z9 U' `, ]% | if( pSkillProp == NULL )7 l" Y6 V$ u. n4 l
continue; J* G: N4 X( R3 d2 o
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ n6 v# Q) W8 B: ] T- L! J continue;7 ?& y0 Z: k; T
lpSkill->dwLevel = dwTmpSkLevel;
3 p( K% i! X0 F) s }
5 A* M/ ~7 e5 ~) p: R+ ~ }
7 l# U( Z! |' a: Z. ` }: f, s' Q5 X7 g; K9 ^/ l' W
else if(IsHero())
# V$ J* K9 E- k8 S/ X" Q" c {2 G4 ~0 s [- l* ]
for( int i = 0; i < MAX_SKILL_JOB; i++ ) # x0 a+ @" V8 G$ \' t# o9 E9 H k
{ 5 V9 {" t! R2 Y# P8 |
LPSKILL lpSkill = &(m_aJobSkill);, r' X0 v* {/ A
if( lpSkill && lpSkill->dwSkill != NULL_ID ). e: U0 Y ^1 w
{
: ^- u* [) ~* R) i5 [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; g( p C# ? R8 J+ {% N
if( pSkillProp == NULL )
: T; l; ~- j9 }, y continue;/ G ^/ p! c" j: ?
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' c) p4 c3 \3 P9 \, J9 d" O) e continue;6 D8 |2 e- y4 P0 u0 K
lpSkill->dwLevel = 5;6 R; n" ~6 f, x* B& Z9 ]
} U z/ p" l2 o2 S
}
" C& d) u6 [$ a }
6 z* q* @: ^3 L8 K! ]( e else if(IsLegendHero())$ Y& q2 I+ X% _; ?0 l+ B
{( i7 m* R5 O6 [2 O! I
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 u- U2 K, O4 H; _+ k6 c
{
& s& P! D4 |9 z! `! f. K7 |& `: r LPSKILL lpSkill = &(m_aJobSkill);
5 [3 }* \( H! e1 Y; d if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 k+ V4 A( m9 Q. b% S1 D/ g {
& i0 X8 D7 z3 Y$ {6 v ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - [' p4 b1 K1 }' Y# @* H% g
if( pSkillProp == NULL )/ ?& i$ a# R' `5 q" I
continue;
, n8 m v% G+ E/ q. w if( pSkillProp->dwItemKind1 != JTYPE_MASTER) ^* ~3 a! F0 n+ F! m9 ~" p0 p$ V
continue;, A2 F8 o$ T1 \- X N
lpSkill->dwLevel = 5;
( q; ~8 t0 G- ~# e2 B: M4 Q1 l }
2 Y( _- c# M p! o }
+ k z5 Z$ t% [# t9 u }7 g8 F3 v! Z- C
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
d2 B( q+ D7 N' g+ J% ]" K if( bGamma )& n' E0 x+ c! z+ W6 G- c1 T1 A1 w
{
1 A0 j6 m. C: U$ X7 { m_nExp1 = 0;* ]. n0 @" _3 F6 @9 @
}
4 U. G& U" k% P
: u [' D G! e5 ~) o8 v! ] ( (CUser*)this )->AddSetChangeJob( nJob );
. p* p3 P1 Z3 y. _9 X6 [ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );: c0 r+ Q& P1 D; c, T5 H2 ?8 h1 X# K
% x) s. z+ l% O9 l0 I
( S/ A/ C# L0 Q#if __VER >= 11 // __SYS_PLAYER_DATA
5 g F* N" n2 W: J g_dpDBClient.SendUpdatePlayerData( (CUser*)this );& f" ]. @7 B0 ?5 z! m: G
#else // __SYS_PLAYER_DATA: w- s! L, n9 h' P) `
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
' u: G. F0 J! s* ~) w g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
" t+ P0 c0 Q8 A. r5 O if( m_idGuild != 0 )% ?, P S% P- w& Q# m
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; z* B0 ?# [1 @( v( I#endif // __SYS_PLAYER_DATA
- a' h, y& K% @ C- V2 F: f3 w5 K2 R2 ? SetHitPoint( GetMaxHitPoint() );& m- P3 F7 t) b* n2 U
SetManaPoint( GetMaxManaPoint() );
0 S5 Q# P9 S4 C) H- t SetFatiguePoint( GetMaxFatiguePoint() );% a7 C$ }- a& |+ A& h
if( nJob >= 1 && nJob <= 4 )
9 I( D6 V3 T" p# X {
+ n. q' Q) {$ V& m9 ~* Q9 J; K m_nStr = m_nSta = m_nDex = m_nInt = 15;5 s3 F# U s% ]/ `! [. R
m_nRemainGP = 28;6 t* r" c h9 s8 c
}: E7 C' d3 G: _/ x& O
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )2 U' x3 Y) @$ l0 T
{
5 P) J1 o4 y8 l+ E* j m_nRemainGP = 118;
% [9 u1 C5 e" v( Z$ P //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;" v9 o* a* N+ `% ~8 @
m_nStr = m_nSta = m_nDex = m_nInt = 15;
- h6 Q9 N* t7 S9 e4 n }3 V- }: x1 A0 x$ S/ e5 ^4 }, p0 ?
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )3 U$ m# z2 Y* r" u. H
{
9 Z4 w! Y' _ n8 f CItemElem itemelem;
) q4 G) W& f! z0 S; c9 T/ x itemelem.m_nItemNum = 1;
8 u& Z1 N5 P; ~ _& m itemelem.m_bCharged = TRUE;
1 ~' w7 P+ _- X$ | BYTE nID;
3 {/ V) D$ I& b$ s
: `5 a% a8 b* Z% D if( nJob == JOB_MENTALIST_HERO )
Q: F. z' V( y2 K' G: G! i1 Z- ^; t itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
2 H2 E2 Q' O% @; z if( nJob == JOB_FORCEMASTER_HERO )% l; ?; Q8 I) T
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; ~7 g; ~" x+ [; h
2 r% d0 {5 J$ g' k6 V ( ( CUser*)this)->CreateItem( &itemelem, &nID );% S+ o! f p1 R$ j2 I: I* H8 s
}" W. A8 q; E/ S Q' M- ~" l
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
w& U, Q9 E. p1 A5 f/ L2 ?4 g ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( N; O* }. x+ ]+ F: Y ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
+ g3 @: Y2 ]# i9 U% t w /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );5 N8 s( w# f' ?1 y: s: _2 \
( (CUser*)this )->AddTaskBar();*/
1 h$ w6 }* G- i1 R- N' l ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
+ | q- @# u! Z9 ?4 C#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
; x0 p# u$ f+ r- z7 o2 n/ Z8 l/ h ((CUser*)this)->CheckHonorStat();
5 m7 M, T7 u: q3 W0 e( E ((CUser*)this)->AddHonorListAck();
+ N2 ]. h; E% ?* f g_UserMng.AddHonorTitleChange( this, m_nHonor);) l9 D. f3 Q- H- x2 v; c8 f
#endif // __HONORABLE_TITLE // ′Tà?
# \1 y; x8 p+ O8 r( z) W }0 h6 V7 @: m+ M
#endif // __WORLDSERVER+ q3 `* {6 t$ w; T6 r8 o& R
} * O$ n. S# n% J E
: t' {- }; R. M) |9 x5 c8 C+ @然后你进入functextcmd.cpp并添加以下
2 ]/ h4 m- H5 x/ Q; O# \$ b
' k8 ^; S# v: ~; j代码:
0 i# J1 q; z2 W# Y* YON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
# e9 Z+ |9 `6 D" g下面插入: ?/ b4 Z1 Y+ U- `' {
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
. L* e" O! r9 i* s- o5 ?+ ]* u+ G$ [' o+ S2 M
然后你去7 \! q2 \7 }3 T$ @9 S
- R I" A; t+ O- }- J' s% l$ z6 P代码:& _1 p" m5 u$ z: P
代码9 O! c G B- Z; X3 I! L, p) ~- s
BOOL TextCmd_ClearPropose( CScanner & s )* g# U$ |" N4 A" k
{! u, A& B8 t/ r3 k8 u
#ifdef __WORLDSERVER; z! T7 @- B0 m4 r# }/ U8 Y* H
CUser* pUser = (CUser*)s.dwValue;
0 ~# Y) @) \7 a0 L R g_dpDBClient.SendClearPropose();
8 x4 C9 J I. T! B8 c! W#endif // __WORLDSERVER
% Q( y- U- N z* J) d; f return TRUE;
' w2 [. ^% S p}& V2 G2 w; ?7 f. ^/ O* P0 C8 X( l
下面插入; ?$ D/ }+ \4 B0 w6 n0 o: T
BOOL TextCmd_rebirth( CScanner& scanner )) `* W+ n ?* x2 w. ^
{
" n& I6 v9 ?! ~% T4 r#ifdef __WORLDSERVER
. i& M1 b% X: q$ K4 e* [9 JCUser *pUser; w/ d! i1 h: Q Z( p% J$ R
pUser = (CUser*)scanner.dwValue;
9 G: Q. d4 o9 T8 g5 kif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())3 s+ n3 K* i/ Z% m
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
) z8 O5 _& A$ m2 B7 O# Z ielse8 o% k# J0 X1 h2 _, h. F
pUser->AddText("你还未达到重生条件!");5 F( d- r& r) A/ Q# ]* _
#endif) v5 D8 A% l2 J0 V' [$ [$ k
return TRUE;
2 w4 O$ M2 u7 c q} # W T8 Q' n, b
! f4 y$ e5 b/ h3 d }, J6 Y
9 ]. R: |1 r3 A
% C2 p. O2 |1 A" _, Z, a7 b+ u6 ?, S3 f7 ~' g; Y; a
|
|