|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 w* D5 ? o8 c
9 V" s- W) S: K+ i
Mover.h
! j: h* N( {9 Q b+ h代码:3 U9 e; b, ]( D/ L% k3 a2 I
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
/ M3 y V& A2 d/ n" k Z
- ?, I9 `" {( d下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ) f7 A1 n; B4 I
7 F: ^' p6 K+ y: J" r& i然后你去mover.cpp添加
: k' d% H% h* R' w0 p8 s2 v; h: A+ N8 d( M
代码:
4 N& K- p( Q7 vvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
2 @$ b! O, s3 d4 u{ q, x P0 c5 ] P
#ifdef __WORLDSERVER
9 `$ ]5 t& A* d" {# @& ?1 D2 s // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó3 ~8 K" c' Y7 c0 Y5 b# j1 q
MoverProp* pProp = GetProp();! I' E: D3 L* q) H$ r: V) @
if( pProp )* r: H; n9 r: \* c) N7 y+ Q, |! s
{, K3 d5 k0 {# A( E3 w) E
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
) Z1 y5 H) h4 ^1 v0 k( n) \ {8 ?4 m! b) z0 `. n$ M G
AddChangeJob( nJob );
' \& U7 f. e1 A: R }else{
- s- B5 U2 L8 `+ g& Z! L9 G return;- C+ y0 H5 V% G5 x
}) `6 u/ @2 R9 r8 H; w# J' y$ Y
int nPoint = 0;2 a" S/ y; v H; X, M% a; g
if( m_nJob == JOB_MERCENARY )
+ W) J9 [) ^$ p9 E nPoint += 40;7 J0 e: y, g6 E; r0 \0 }# u
else if( m_nJob == JOB_ACROBAT )
2 w z, m8 V0 D* p- q nPoint += 50;
0 J/ |0 R/ n" Z* h& i$ K# o else if( m_nJob == JOB_ASSIST )& b: g9 i8 l# w C) x
nPoint += 60;
& A8 E. H) s# f" q' ]- p else if( m_nJob == JOB_MAGICIAN )
* p1 X! J: z8 l nPoint += 90;
4 o* q" P: L- G: ]1 X0 Y else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )- E1 r4 |: Z; u8 ~7 m
nPoint += 120;1 a, o* X6 V0 }$ \9 ]; @ U
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )5 V2 P* `5 h7 U: I* L' X
nPoint += 150;+ a. G$ `1 @) X% n+ K
else if( m_nJob == JOB_RINGMASTER )5 i0 s9 S& P# \ q
nPoint += 160;. Y# S! }5 Q, T% B3 j ~- W( Y
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )# u# u, z/ ~ l5 m9 _ M7 z: H% ?
nPoint += 180;
2 s& @* s) x$ g- { \ else if( m_nJob == JOB_ELEMENTOR )& @, p" d0 E5 h" m1 Q6 b' t$ O
nPoint += 390;) _8 s8 W1 y: f. F# y3 p, Z7 A( f' l2 U
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )2 R) t" L& q( a" v
nPoint += 120;9 `* d/ }4 }* }0 j6 {# M
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
. s* V+ r U2 \3 m: B) J4 Y% z6 u# M nPoint += 150;
$ p, B5 c+ `( V' x8 Q- ` else if( nJob == JOB_FLORIST_HERO )6 \( Q) g4 z& S$ ]. L5 _
nPoint += 160;, `1 K% [0 g7 P( w7 `. `
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )& @# L. q3 z! Y5 `9 T
nPoint += 180;3 ]$ B) E: w6 K, ~) u/ o/ w
else if( nJob == JOB_ELEMENTORLORD_HERO )0 o+ J0 U3 o0 b- L5 J! H, m( h1 e
nPoint += 390;! |, p6 N# v- Z% i( C8 r c
8 T' s/ Z& @0 D" m7 H1 _' \
AddSkillPoint( nPoint );# T1 K1 n+ ~# ]
m_nLevel = nLevel;9 @+ o0 {5 u8 u
) E8 e8 A) a4 Y B& j ? SetJobLevel( nLevel, nJob );/ G% g3 b7 a. f" t- Z3 X
m_nDeathLevel = nLevel;
% X0 y8 w0 H. B$ R* {7 e5 z#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" T- {/ r' D1 T& V9 ~" ?$ f
if(IsMaster())# `% R6 k6 {$ Z: |9 u- }. A
{
9 H! W# i, n/ J4 O: F& s. d int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
) g4 w2 z3 m" ~! }0 v. ~ if( nLevel > 59 && nLevel < 72 )
1 J$ C% E6 p' \8 U dwTmpSkLevel = 1;* K! h5 s+ `6 Q7 @: q8 Y4 _6 f
else if( nLevel > 71 && nLevel < 84 )0 O1 p6 U& U5 U+ Q
dwTmpSkLevel = 2;
, W8 c$ Z* i0 \) X+ z else if( nLevel > 83 && nLevel < 96 )
8 }9 I9 C: a( } T: G7 e dwTmpSkLevel = 3;
" K1 ?; @* A" @/ r \, S2 S else if( nLevel > 95 && nLevel < 108 )0 W7 d+ B( C$ V% |% A8 ]& i: e9 ]
dwTmpSkLevel = 4;
6 D. U+ h3 Z" Z) j- B6 B4 [# @ else if( nLevel > 107 && nLevel < 120 )
; b9 j' q2 Y* I' Q" q% S dwTmpSkLevel = 5;
9 V- _' b; T4 M) ]& \# x for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 L' _" p( u0 Y/ N
{
7 `) `; k' t- k) ?: H( U4 S/ m8 N LPSKILL lpSkill = &(m_aJobSkill);; E4 D/ [, r' o7 g# P" O! Y
if( lpSkill && lpSkill->dwSkill != NULL_ID )1 E4 j0 A# H8 a* i* Y3 |
{
6 j( }4 w- e! C) u$ w% j' I ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 G, o9 I3 T" ]( ^+ ~
if( pSkillProp == NULL )
$ G( V% U. `" R' q. Z; ~ continue;5 i& i9 w+ x" \# M5 @. i% V& w1 h
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ O# P' S. W. i4 x* D- ` e continue;
* s z# Z! o# N/ a: m3 n lpSkill->dwLevel = dwTmpSkLevel;
8 \) u( d. R8 i7 a7 ` }
* s" o, o5 g9 h& N4 {/ s3 z }
7 k. L+ k Q& [* a8 C' W }) C' Q6 s+ A8 A) T4 i" A
else if(IsHero())$ X2 {& B: f0 J" ~ Z4 \
{* f7 L# X- X% c' t
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ \ x, Z8 B/ R3 i) l1 [
{
6 `/ `8 V$ f; f LPSKILL lpSkill = &(m_aJobSkill);
3 l' B* z, ^$ M1 A; N if( lpSkill && lpSkill->dwSkill != NULL_ID )0 g$ d: a1 c$ m% A2 P
{
% W- O$ | g+ Z8 i8 |7 F" U, Q* \8 G& J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 i c+ a/ t2 `+ R9 @" b1 C9 C3 ?( j if( pSkillProp == NULL )# v' c# H* w* {6 u% f1 a
continue;8 ^! x! Z* t) n Q% P6 W$ M+ y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ |, Z8 E; a. Z+ t2 z continue;) w+ T6 R# q4 U% i& J8 ]* N
lpSkill->dwLevel = 5;
# V6 n$ i3 b) O% V0 W }
! W9 Y0 N: b& s' [( I! S# B" u ` }
& A$ D) V7 G) k, b) z0 C& O2 B }
5 _ @, J( W- W: \2 g else if(IsLegendHero())7 p2 D0 i7 C2 n4 V5 C
{+ h1 O1 m9 f5 _! h- C
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) `3 y# p* b( F/ d
{
8 o$ P. n6 _. m( x' C3 l# k, s' T LPSKILL lpSkill = &(m_aJobSkill);
* h: L) s2 T8 R% k0 c' Z if( lpSkill && lpSkill->dwSkill != NULL_ID )
# ^3 W- n* L) S9 |/ _$ | {2 N' U, L8 j3 ~ l5 d
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * H9 y1 J- ~* M2 D) K
if( pSkillProp == NULL )1 r2 B/ h" Y: u# \3 v' ^
continue;
3 I( l8 y0 B0 u7 {4 x; D U: l if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! k+ k0 w/ M1 G2 P# I n2 O: ^$ e continue;
, ]# v3 T' k( d# L. A3 e lpSkill->dwLevel = 5;
5 f" d& T% o0 N$ Z }% e u- \/ }9 u4 t/ X8 K
}
% e m0 }- w( Q7 ?( M4 U }6 m+ T1 ?0 g2 D1 k8 i
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ p" x% M! C U3 Y
if( bGamma )
3 w$ l1 h. l; F8 o) m+ o {- F7 i' J+ Q* R$ r i2 ]6 m. n5 m
m_nExp1 = 0;1 a, m, u0 t7 k" ]* a) }7 r9 y
}
8 b' s, B& B& I8 y8 o: W
1 l) N0 t D4 Y4 [7 [' [) e5 Q ( (CUser*)this )->AddSetChangeJob( nJob );$ j& X5 e1 c+ V9 V
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );2 ~5 U) e7 p6 u& q. m! |' c
7 z: ?1 p) x6 K8 m+ `! P. W7 [
( f4 d. b, @9 R( K# ^' h$ Y
#if __VER >= 11 // __SYS_PLAYER_DATA/ u, Q9 }# Y( w$ s1 W8 D
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
6 R8 N" u. ^* K( W$ E6 M2 G#else // __SYS_PLAYER_DATA& S$ |+ A2 u9 }. ?: O5 g, L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
% S9 S4 o- U7 j& R8 y g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
; I( w7 n6 q6 i* N if( m_idGuild != 0 )) a# s6 F2 [+ a# y* O, ^
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );6 M$ h* z5 K+ Y" e# ^
#endif // __SYS_PLAYER_DATA/ Q- t3 W* ?6 f, y& w; k$ M
SetHitPoint( GetMaxHitPoint() );
: a% R+ Z* R% T. I2 D SetManaPoint( GetMaxManaPoint() );
- L/ p3 W) {3 D- m; o0 V+ x SetFatiguePoint( GetMaxFatiguePoint() );/ m T' m) B9 K* p2 ^- a
if( nJob >= 1 && nJob <= 4 )' _" x4 v7 M7 M9 j( M' q
{
* Q7 z) j6 |# W9 u- k( R m_nStr = m_nSta = m_nDex = m_nInt = 15;
* `" s* ^' m5 h# q6 C' _ m_nRemainGP = 28;
x8 S. a! G4 S/ S* ~ }6 j7 e+ B8 m( Z7 n4 H% J0 }
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
3 @3 V* Q! E4 k1 X J, g) a {
K' F3 e! R- i' b( }( N: A* p. }, A m_nRemainGP = 118;
6 f* a" u; l& M$ Z$ O //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
; }+ k" S( [. x% w m_nStr = m_nSta = m_nDex = m_nInt = 15;
5 S' Q/ N6 t. d* \/ V2 X }. G, |( p, {+ u4 X/ U' J
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )& C+ w8 L+ P4 S" Q \3 J3 v5 K
{* s% O% ^+ V! x/ i
CItemElem itemelem;8 }+ K2 X: B7 g0 Z( P+ _2 J& x' n
itemelem.m_nItemNum = 1;
& r0 O3 T" h" a2 b0 A8 d! @5 b8 s- D' s itemelem.m_bCharged = TRUE;# w, }: {9 i2 ?3 ]
BYTE nID;# b% s, y2 D" B8 d$ M& _
9 o# q# ?$ t; e% t. V9 R if( nJob == JOB_MENTALIST_HERO )6 N$ Y; Z! w6 r( u0 V4 }0 Y
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
3 i" \5 v2 r5 H h& Y! B if( nJob == JOB_FORCEMASTER_HERO )
1 }/ F7 [# J3 M8 h itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;$ o$ o; A+ V% h( B
* |2 z) |! ?; v7 K) m+ l ( ( CUser*)this)->CreateItem( &itemelem, &nID );
7 f# t; Q4 {6 A$ I }
- N" j& A& Z2 J0 j& s" T T! M g_UserMng.AddSetLevel( this, (WORD)m_nLevel );( e# ]$ j. m; I
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
2 p% c' w M7 N9 R; ~ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
$ G9 J* c1 m" N0 m f /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 g: C: s, z7 j: z( [
( (CUser*)this )->AddTaskBar();*/
3 h) X6 s. f, Q ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );' r& O, O3 j: h$ E' \
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
7 T1 r7 T( C, O) |7 U ((CUser*)this)->CheckHonorStat();$ G! n9 V4 }' i$ W, i: k) s
((CUser*)this)->AddHonorListAck();
, v' w) c) G) y; } g_UserMng.AddHonorTitleChange( this, m_nHonor);
2 r% }: v+ v/ M- l' \6 ^#endif // __HONORABLE_TITLE // ′Tà?, Q+ r5 ~* ^; D0 a8 u$ r
}1 q3 i) P6 L! B" U4 u
#endif // __WORLDSERVER
) q% i3 c/ }$ a6 Q/ M. A6 `' U C) H}
* @" y9 a( S1 y1 M. M6 j" \& g v3 [ w) I3 G' y
然后你进入functextcmd.cpp并添加以下0 e0 [/ Z: W7 D' V2 ?. r+ o
1 `/ J) }3 |6 o; r) @( k' b
代码:* B! g: |/ | b8 G, O1 S" m1 A
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 u8 D& N$ W0 Y3 p/ W( I
下面插入
1 W) J1 s( d" T% N, Q4 g' F2 R9 rON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ) g$ C U$ t' [6 P& ~( |% w
% q m3 Q, H; J7 h% B* L然后你去0 Q9 I* r( t+ Z8 |8 }% p
* W* a0 p+ c5 B! T0 p
代码:
0 k4 ?# Q9 S5 p7 C1 B9 U( F代码
) U7 N9 N( e* V0 r0 VBOOL TextCmd_ClearPropose( CScanner & s )
" `9 ~3 ^. Z. r{
! M0 i/ a: p& k+ P, I#ifdef __WORLDSERVER0 _: D1 g! {* r( S, Y+ N3 |/ t
CUser* pUser = (CUser*)s.dwValue;! }1 Q% v; X. k2 y0 C- b
g_dpDBClient.SendClearPropose();3 @$ b/ j2 _$ \: F1 [
#endif // __WORLDSERVER
+ L- u% n& @2 u( C" H return TRUE;3 C5 m. Q0 K! z, V4 W- U* B
}
& }# a) Y" n% `/ D2 x5 e下面插入4 S7 X5 I4 W: x$ W
BOOL TextCmd_rebirth( CScanner& scanner )6 @& [7 ]. X: @3 f7 ]+ z7 M
{4 v! v% Z4 m5 `0 {0 N
#ifdef __WORLDSERVER: @( x7 T2 c \8 {" v# S, \+ E7 f) q
CUser *pUser;" V+ l/ D0 C/ ?3 b U: N
pUser = (CUser*)scanner.dwValue;, i9 F$ t% F% R+ K
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())8 o$ n7 P; u" s6 z) I$ M: ]4 E; v
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
$ @. ^$ J& C& ~8 a8 [else
* I) S, e$ e8 x1 BpUser->AddText("你还未达到重生条件!");
: o5 g( U" m# C- N: a+ F% q#endif% R9 O0 @3 u% t) q: q6 p
return TRUE; a& `( o& T- @* w% i
} ' i; u) o7 P: l' f7 `
' Y: s& n/ W. b/ g, D$ F6 x4 z7 A. O |6 s6 I; `7 |7 @( c
p# }% A$ V3 U5 v* r
! n9 d3 C) a$ O; Z( x |
|