|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel1 j- f( x% H- S' W; G! _ F) V7 `
7 d1 }+ K( \, _: A, g+ W
Mover.h
* A0 G) H! N* V1 F6 `+ g( n; c5 Y代码:
; s# x8 B* ?$ p5 F. P- _找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
, q5 {* ?: O( X5 W! s' n; T0 z
5 P" @4 q4 r% A# F# y1 C- H下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ) v. T" y+ D5 m2 v, U/ l
O, A# m- D" p' b- d然后你去mover.cpp添加
* j8 a7 b R4 d- c% I9 O$ n' }* u/ a. H
代码:: g1 ]/ I6 a& Q7 Y M
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )2 @) H+ b5 _1 B. ~& ~: x
{3 J0 w J3 n+ ]) Q7 I( w, q+ c
#ifdef __WORLDSERVER
X: V) p1 m) K6 y // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
; m& q0 c; m& A5 ^ MoverProp* pProp = GetProp();$ ?) o4 P+ K( i
if( pProp )
+ B" r4 N+ W; [2 d8 x {
1 ?- x4 e, l6 j' C5 w if( nJob > 0 && nJob < MAX_LEGEND_HERO )' E) L. e, s. J4 g/ _* |
{
. _& J( I& J2 _! N AddChangeJob( nJob );' G# P+ q( G! L# f- m6 c
}else{
' I$ g+ ~6 F1 h) I return;4 ^2 Z; @: z/ w5 E6 D2 A
}: G# d# R# ] T' x+ ^
int nPoint = 0;3 G; E: b$ M( E% I
if( m_nJob == JOB_MERCENARY )
4 q0 R; R4 N0 \4 i5 Y/ {2 Q nPoint += 40;; g8 z: h% f1 K& [4 F+ }
else if( m_nJob == JOB_ACROBAT )
8 E% M. A2 F8 H( a+ O$ b- D# q( H7 M nPoint += 50;# y. m6 U6 B6 i3 B7 O
else if( m_nJob == JOB_ASSIST )
' J& B9 F- {7 I+ l nPoint += 60;7 {, [, s) E* n. u2 e5 h
else if( m_nJob == JOB_MAGICIAN )# a; g1 _! b5 B3 F* y1 j( _/ d/ V
nPoint += 90;( h$ ~ b6 W4 e' F
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
6 x* H1 ]: w0 U- i8 a. j7 _ nPoint += 120;. L# R! N2 F o: O8 x
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )" s4 G. G7 l6 v0 h5 _0 }
nPoint += 150;! Y j9 n3 c8 x' t% V. g% ]
else if( m_nJob == JOB_RINGMASTER )
2 n$ _9 V! z' c$ ^ nPoint += 160;8 F% n7 [: ]! U: n% i+ j' z. W
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )& ?$ c2 c0 {' L% E8 P9 _
nPoint += 180;
4 E7 F2 g% s& H9 E1 m else if( m_nJob == JOB_ELEMENTOR )1 Z5 z0 N* x. d
nPoint += 390;6 y/ C3 X9 i$ i( V
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )7 A# T5 {( P) [7 x# E* x: A
nPoint += 120;
u, e6 U( g* W- u8 {6 D g8 b else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )7 N1 v' `4 Z* t, I- J
nPoint += 150;
; ~) y+ c" |5 b- W* r% w else if( nJob == JOB_FLORIST_HERO )6 N! K T7 \+ P
nPoint += 160;" |. i# D9 M0 K- ^+ r
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )1 D+ G* ^7 Q# e: A' t8 O
nPoint += 180;
A1 {: B' s1 x3 s7 E9 V ` else if( nJob == JOB_ELEMENTORLORD_HERO )# c- O: I u/ V2 F6 ^# C
nPoint += 390;. ~9 J& {( w& O! R
1 ^. U3 P, U( v$ j
AddSkillPoint( nPoint );
& N" F% Z& ?4 E( |$ q m_nLevel = nLevel;
q. ]6 N) g/ [& k
% [3 h' W |2 |! ~! N SetJobLevel( nLevel, nJob );
! t1 P* ~- o8 a; l m_nDeathLevel = nLevel;2 j5 d8 c0 z J" ]; u
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
& u, K8 _" g% \' [ if(IsMaster())
- w* a; z, Y2 J {
+ O& @0 i" C( M int dwTmpSkLevel = 1;//60, 72, 84, 96, 1083 b7 h/ f9 ~$ C) ]% E- a
if( nLevel > 59 && nLevel < 72 )
' h6 L/ @: V: C$ S F+ } dwTmpSkLevel = 1;5 i1 A H- {, n
else if( nLevel > 71 && nLevel < 84 )6 L6 D: W2 U+ c0 ~
dwTmpSkLevel = 2;# j: j8 `% w8 I! G1 T! s6 I& N+ ]
else if( nLevel > 83 && nLevel < 96 )5 Q, _+ p5 h5 a' ~/ N* ]2 q$ K
dwTmpSkLevel = 3;9 t. O7 a1 o1 A9 D! \7 G4 N
else if( nLevel > 95 && nLevel < 108 ); N' I8 ^ S2 s0 c
dwTmpSkLevel = 4;$ @ A$ j+ N0 a8 Y6 g2 k, e
else if( nLevel > 107 && nLevel < 120 ). n, r" k; f! S% m; L! C1 E
dwTmpSkLevel = 5;- g) G4 V1 R2 A" ~0 X9 ]& j
for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ c5 P; V9 p' s+ N2 n: q; y2 W {
t1 H+ {! d- B. m- V; g LPSKILL lpSkill = &(m_aJobSkill);
) Q9 | ^+ J9 [1 q if( lpSkill && lpSkill->dwSkill != NULL_ID )5 h1 ], N, }5 @( C+ o, m: ~
{
6 s o* X& y7 ~. z" k# M$ L4 v ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% T, E% D5 O G+ Q6 Q7 } if( pSkillProp == NULL )
$ S; F' D6 d, j1 w- q7 I6 ~ continue;
2 G# w. w' ?) v" A: J* I; k2 V if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ K' B8 S# o( W3 J5 y
continue;
$ F( }6 j- m3 N0 `$ T3 c lpSkill->dwLevel = dwTmpSkLevel;
5 e% E- Z2 W" T3 L5 Q }
9 w. I7 E; J6 Z/ l) t) H }
9 \5 X9 n& q# W0 c3 b0 B }
, p6 C& q( y- s8 q8 [ else if(IsHero())* U9 p& K5 ?( G5 ]2 g/ c
{
" O0 l. T* I, s2 y# k$ k- C6 M for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' B; g& p2 h+ f+ p+ m
{ 2 z6 X5 G# t2 |' ]5 m
LPSKILL lpSkill = &(m_aJobSkill);
+ \+ b+ ?; T6 b( f( ]/ E% n if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ q! _4 s2 b% m4 w {
2 N6 m7 C- h& p1 ]1 n ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 X' s" e) X! g& M; S8 U1 z if( pSkillProp == NULL )
7 Y# |+ A/ O, r* _ continue;( u- |7 Q* ~3 U4 K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' @7 i" L6 A$ y" `6 C2 b0 d! F continue;
! u C8 i( @# u% F. y8 M lpSkill->dwLevel = 5;
. z- B5 I0 i6 ^* ] }0 p# V4 o0 p) P. Y, O6 }
}+ y# Y9 e3 p6 I9 ~7 _5 E% o% x
}
5 m4 F* @+ a0 g* G( I else if(IsLegendHero()). g9 Z- B! W! [1 B. p
{- i0 G6 X, W& u: ]3 S5 }2 T
for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 D u% c; p& A0 z+ E" c' l { 0 q" ^( g9 X9 G' e% p$ k. M3 U" A
LPSKILL lpSkill = &(m_aJobSkill);9 g- {. x$ p3 G4 C3 _5 O$ Z: D8 [& s
if( lpSkill && lpSkill->dwSkill != NULL_ID )" G% ?6 P3 L: T9 p( M
{! U) O% Y3 x7 L/ N, N% N4 }6 \
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 m0 W9 |1 Q+ v o* I3 G$ N& B7 I3 ?
if( pSkillProp == NULL )) I( g& N( _; y
continue;* x3 q/ \% ~# i( O) D V# s6 z% A+ T$ V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); t8 C# n; {1 k j7 h
continue;
. N' d5 P& s' |" T' s: k lpSkill->dwLevel = 5;2 V# f/ _# C( d* T5 @* H/ ]
}
/ Z8 m& k7 J5 z% v" y }0 K1 Z/ s8 t7 z+ t: e; s, k T* m8 ?
}" [- _0 [: Q, R8 t1 a, m2 [1 ]
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ W: i1 E: }% z+ z3 ] if( bGamma )
( m$ [0 K! I+ u/ g {
' u9 N5 W0 x5 n m_nExp1 = 0;1 k. k2 Z6 _. Y8 m8 V
}
4 T9 m* a) k1 A' F" ~# m- |
* n2 N) R, j# M$ u+ ]2 d# `( k ( (CUser*)this )->AddSetChangeJob( nJob );
5 R! ?4 ~% u2 w0 h4 T2 t g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
6 h0 p5 j, g$ s0 L( M& @$ e
, S, u: \0 p/ Q m9 P
- \- T7 d2 z( t- k% t- j1 U/ h#if __VER >= 11 // __SYS_PLAYER_DATA
. k, L( R4 ], Z0 ? g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
, s7 M; \; z0 r! A#else // __SYS_PLAYER_DATA
7 N2 t0 z: s* R+ t2 W g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
6 U2 M0 ]1 c5 _) a g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
6 y% p7 n# L2 g7 ~ if( m_idGuild != 0 )
& r0 h. l3 e% B$ I g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
3 z: A3 e2 g- B; f#endif // __SYS_PLAYER_DATA
6 w; k* d' Q# `, g6 w. o6 j5 ? SetHitPoint( GetMaxHitPoint() );# j2 |2 {: g8 v L- Y- a' f
SetManaPoint( GetMaxManaPoint() );
8 x" N5 W! K: T9 b SetFatiguePoint( GetMaxFatiguePoint() );+ R; z0 A. I: w' Z, H3 j/ Z# _; B
if( nJob >= 1 && nJob <= 4 ). V3 w2 C% g( b/ ?9 u: |
{* g" _ b9 |+ Q5 C, H: ?3 }4 H8 A
m_nStr = m_nSta = m_nDex = m_nInt = 15;1 U' q& W$ A* t" Y, R. f7 ], X" M; R
m_nRemainGP = 28;, ~. H1 o$ M+ a) a
}
* L$ o8 k" |+ c. w5 s& z5 X if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
7 |. R8 [, z5 o. B; {( t# F0 X9 E {+ B( a/ a! a- I& n3 w
m_nRemainGP = 118;3 B% d2 K' e1 {
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
9 `8 C5 z% w* p; x N m_nStr = m_nSta = m_nDex = m_nInt = 15;$ f$ X) J1 D; @; J, ~# @
}3 R( T* `8 q# Q/ ^6 t
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )1 |& C% C( W0 N1 m
{. S; S) [. z4 y# |7 U
CItemElem itemelem;
& g" r3 t+ o# N0 v itemelem.m_nItemNum = 1;
. a% g1 W( ? R; D9 R itemelem.m_bCharged = TRUE;, ^% A7 \* h0 e5 B
BYTE nID;; A5 c) f i* q) w4 A6 R* X
) t9 I5 S7 Y7 }4 B if( nJob == JOB_MENTALIST_HERO )' L5 M) Z$ m' ?
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;& p; J4 j0 G: \
if( nJob == JOB_FORCEMASTER_HERO )
% a6 H: T! e& I4 s itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
, N8 m# _# |1 E
) I0 K' V# @% n7 q: i! Y ( ( CUser*)this)->CreateItem( &itemelem, &nID );
7 d9 P% }, w6 ?; s. Q }
2 c% B3 |) K2 m g_UserMng.AddSetLevel( this, (WORD)m_nLevel );, a, p6 ~5 ?! r! m, W
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );. s/ e. g$ Y L! Z
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
( L/ j U+ I: ]0 M' | /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
6 K0 d' E& u2 K* P# J9 w7 D ( (CUser*)this )->AddTaskBar();*/& Q$ k/ [8 {2 e
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
2 F% Y! O5 f" t* M: m v#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
8 G( n5 _0 y+ b0 e+ u7 } ((CUser*)this)->CheckHonorStat();' w; V) ?+ T2 Q0 w8 a6 H9 m# |
((CUser*)this)->AddHonorListAck();
; d8 m4 R2 J1 f g_UserMng.AddHonorTitleChange( this, m_nHonor);6 c# D6 d% P6 d z
#endif // __HONORABLE_TITLE // ′Tà?0 X) W% G9 M* {, L
}/ f0 `/ X4 O: u! B0 _" D
#endif // __WORLDSERVER" C* D; V4 N6 A; }& `. ~
}
) {4 Q1 t$ f2 ^- w3 n) o1 a
- F ?+ q: ^4 }: n9 u然后你进入functextcmd.cpp并添加以下9 P- [# J) }. b. G, ^
S4 ^/ A6 A! n: a9 c! n8 ?代码:, [- Z, s+ Y- X+ d; L
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
. e4 Y! A# |7 [: ?1 T) e$ v下面插入* m5 L- W. m# S% h; `
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) + @6 j1 G! u9 ~' v# b
7 h H( r6 B6 \* ]+ U# R然后你去
6 f; Z2 J# v+ l8 t) o/ B6 Y7 |( d
代码:
: Y# X& B* a% x' B/ g* d代码; c0 M7 R+ z9 l: j( ~+ i
BOOL TextCmd_ClearPropose( CScanner & s )
; q: c2 f$ ~6 m: i% H- l{
" J' \7 S' ]2 y( Q; e8 _#ifdef __WORLDSERVER
9 Q$ L" l0 ]/ j/ L% Y; s5 C) w CUser* pUser = (CUser*)s.dwValue;+ w& g* p% q6 [6 X
g_dpDBClient.SendClearPropose();
* h6 j9 V0 P. ^* M( s2 |4 G#endif // __WORLDSERVER4 ~- T; s6 e g7 K! {* n
return TRUE;! t" E4 A5 `( ^; h- q
}
" ~% J& B! f0 A( F/ E0 v下面插入6 L: p, Q; u0 D8 v6 G
BOOL TextCmd_rebirth( CScanner& scanner )
5 R3 Q1 a. l) ~4 g2 e{
; u$ Y/ ?% M% J/ V#ifdef __WORLDSERVER
, x- S+ E J5 \ Y( ~CUser *pUser;
, v) A8 R/ B, x: E7 O: rpUser = (CUser*)scanner.dwValue;
* c% e3 k; J) U; {! x8 h; Xif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
" v1 J. i, F3 gpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
8 } Z. }: I k3 `4 `2 z# f3 welse+ S# `% }, _& H, S% b
pUser->AddText("你还未达到重生条件!");
8 i. ?$ p% s% p |#endif2 b! w ~2 e# n u" A7 `5 w5 ?
return TRUE;
/ B8 Y4 C- u1 [" i1 w} , c' c5 X, U8 V8 W8 |2 [, t' L) D
( r2 e1 L- `' p* K9 e9 u5 y1 s8 J! U1 l& T' s9 @/ W% s
. J. y6 r0 I- Z0 U6 A9 C: Q/ b- e
3 g4 D F8 P7 ~' [ Z7 Z |
|