|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel# I" U0 R3 m- |; n/ l) w3 s
6 F b( @4 e6 s7 s. E; `+ ]Mover.h1 C1 ]; l8 Q/ U
代码:$ y8 r* M4 [4 m) f' ^1 z, f3 N' x% F
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü% C% k, D& w6 F# V) K# c/ E
$ V- q7 i3 B4 O( s0 e. ?
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; " C: j1 j/ c/ `+ |6 ~, a
1 `% ^8 o) [; M' Z$ F4 }然后你去mover.cpp添加$ |1 h- N& E" }2 ^
4 V* I3 [- B" i2 O3 i" ~8 g7 T7 p代码:
5 g* i2 t1 J# f) ivoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )" D d& z* H) Y4 M
{" y4 ~! n( _. x7 X& i ~
#ifdef __WORLDSERVER6 t+ s7 B8 Q0 R% l) A/ l _
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó# `- c, t, B' ~! B
MoverProp* pProp = GetProp();
7 F: _7 l1 \' v" \# T0 u! ` if( pProp )! [! a Z. Z! ^8 {6 v
{& T: ?7 Y" e! w* m+ v# Y
if( nJob > 0 && nJob < MAX_LEGEND_HERO ); d1 S' K3 J; Y
{
1 o' G8 |0 j6 Y$ T2 c AddChangeJob( nJob );: Q6 | c9 G {! v9 w! H
}else{; F3 A" U7 @7 }+ q
return;
& D8 s' e- h; r }
8 h; X2 G" ?* h( N int nPoint = 0;! \2 t" u9 X( ~9 `4 E$ ?
if( m_nJob == JOB_MERCENARY )0 n1 j8 q7 Y/ r2 {* m+ e
nPoint += 40;
$ {4 \7 \/ C' [) I+ H) ` else if( m_nJob == JOB_ACROBAT )
3 W7 u2 ^! y6 z4 h+ {9 F8 r nPoint += 50;: n5 ~" B& U; [; J$ Z
else if( m_nJob == JOB_ASSIST )
9 z' j) j# M# I2 _% w! k% J nPoint += 60;
- N- ?5 S4 q; N) D) w. h9 Q) ~5 Y else if( m_nJob == JOB_MAGICIAN )
9 V, o/ T2 O- M. |8 f& `7 f2 J* t nPoint += 90;
; ^3 r3 ]+ d/ q$ N1 E" ] else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
1 ]$ `" W. G! ~1 r# U nPoint += 120;: M+ ~) ~# B. V }+ i: V) \
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
, ]1 C$ T$ }8 a) A* U+ ] nPoint += 150;$ \$ M% O' K% W: d
else if( m_nJob == JOB_RINGMASTER )$ X n: D, p( I/ ?; z) J0 G+ n2 U
nPoint += 160;
: R; B9 P" y1 v else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
$ Q6 X s) p4 S q* H, I/ {- h nPoint += 180;" H7 |: Z. M8 u% q
else if( m_nJob == JOB_ELEMENTOR )# ~6 `6 Q) L: f. |
nPoint += 390;
/ Y9 j9 i( Y" I2 A6 [7 D else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
" U) J$ f2 i3 n F; r6 I nPoint += 120;$ p" ~/ I+ d! V
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )0 z0 G4 v6 N* a/ m4 l% u
nPoint += 150;7 g9 _) _/ \4 D Y7 B, p% l
else if( nJob == JOB_FLORIST_HERO )
0 H! z( F0 T3 y9 u( Y% m nPoint += 160;; ]+ o* y8 q" s; P1 K$ i- j2 x
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ). M# }0 N4 F0 b, g) r
nPoint += 180;
2 b( k0 e' p- j) _" N1 a$ b6 A else if( nJob == JOB_ELEMENTORLORD_HERO )
; z* m* n s1 P1 R nPoint += 390;' o& _& Y6 l1 X0 P. a1 L
^% W- K* |1 y
AddSkillPoint( nPoint );& ?% N6 \7 B( a- t
m_nLevel = nLevel;+ C5 a0 N. u0 s- t- n+ K3 J8 g- K% q
! d8 y! n2 F. }4 \# a SetJobLevel( nLevel, nJob );
/ v; L2 r. q4 ^, } m_nDeathLevel = nLevel;# g" ]# ]1 y4 v! q+ l
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
8 _8 [$ o+ y8 `4 \" P3 C4 O if(IsMaster())
; Q. A) X7 Y# O0 }5 S: C" W$ U6 F( ^ {: }6 X1 i" o& p6 W+ N @
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1082 k. [5 {* |$ s/ e! q5 `+ L$ {
if( nLevel > 59 && nLevel < 72 )2 Q5 G A+ }% S1 q% t. W& E$ j Y: Q
dwTmpSkLevel = 1;1 u/ \1 C" o9 Y; Z! P
else if( nLevel > 71 && nLevel < 84 )
& k7 x5 L3 K) d! M0 F# e4 H& u- K dwTmpSkLevel = 2;' [8 B: P2 _' g: O+ `
else if( nLevel > 83 && nLevel < 96 )
6 ? O+ H# t. _, I+ x1 r dwTmpSkLevel = 3;
( i+ S! ^+ V; Q; @ else if( nLevel > 95 && nLevel < 108 )
5 t& ?& m1 O# U, H3 D: d dwTmpSkLevel = 4;2 B7 V. b1 e. F3 M6 E
else if( nLevel > 107 && nLevel < 120 )
0 e4 u3 l! h/ |7 b6 a6 r8 d/ g dwTmpSkLevel = 5;
0 E5 ]5 ]" o5 A) {3 @ for( int i = 0; i < MAX_SKILL_JOB; i++ ) + J# {4 y# a$ m9 A3 c# a1 P
{ / q& {( b8 ?; u& C! b
LPSKILL lpSkill = &(m_aJobSkill);# S- |& N5 W( z' H' ^ `8 k
if( lpSkill && lpSkill->dwSkill != NULL_ID )' `8 b* X6 y3 p4 Q8 ]. t0 P. O1 j
{7 }' P$ y. l% E5 D1 l* P
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 3 Z+ ^* S, D" a6 p. H9 z
if( pSkillProp == NULL ), w3 _# y4 R) |% r! F4 {
continue;
5 w) B T0 v; q% ^7 \7 T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)# o5 B3 I* T$ L5 p% t6 J# Z
continue;
/ k- g' x9 W7 w; A lpSkill->dwLevel = dwTmpSkLevel;5 s2 ?: O# N( D* d
}
; A" i8 @$ b8 p& Q* _ }
& z3 \2 @# u1 P" H }" N+ z# \# s P% B2 @. e; C1 k
else if(IsHero())/ k0 w0 o, [' Y" I/ U
{+ x0 P! O7 P& A! v0 l
for( int i = 0; i < MAX_SKILL_JOB; i++ ) : O4 J# G7 k5 R7 V* `; }
{ ) V" |) _+ f8 I3 [; {# D# t
LPSKILL lpSkill = &(m_aJobSkill);3 }0 v9 ^- S/ I
if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ [, L9 E8 K4 L& j/ q6 g {
# ~& e0 X) A2 H+ f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 P; s7 c t& I, L* @ if( pSkillProp == NULL )# N1 N) D. Y( k$ z. P& n7 q5 F. N1 q
continue;
! T2 v7 I0 i; ~' C if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 [# D: s, ]6 T& }9 [# ~; Y
continue;& b6 F5 [: @2 D* z
lpSkill->dwLevel = 5;/ [4 q! ?* M2 h% P G# _# ?# T
}
' x0 Y; w7 T3 F- C9 ^1 ?8 @! ^4 c- b3 H }% w1 M% V( k# l' Y5 t8 e
}
: C1 a% u& X, a5 N# |* P9 m else if(IsLegendHero())
2 W# A# D* N' s# f+ s {
5 u+ c5 d# i7 w9 A" I! T for( int i = 0; i < MAX_SKILL_JOB; i++ ) & X7 }9 j9 R% J) {4 y9 ?! ]! S
{
5 P Q) C! `' b+ r! F: U LPSKILL lpSkill = &(m_aJobSkill);6 G# C* M# b& c7 h6 e' R0 R
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 j5 U9 A/ R* t6 H! h {
8 k j1 A- i0 a. F& y ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + e9 b; u" V' v( d9 o8 E: v# w
if( pSkillProp == NULL )& }& `0 i' F7 m
continue;
( x- h: }- |7 h; T ?4 C) w# E I if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 f I3 J# ^6 R% d( Y7 q& L8 Y continue;
s& o) f6 ]& J lpSkill->dwLevel = 5;9 G8 ]3 n4 _2 _% s- V- a3 F# F
}8 E1 v; l' j- Z$ M) b2 {4 e
}
" w0 o+ X: d8 G3 Q6 g8 {7 i1 m }/ o" C" u$ `5 G- J9 I* o7 |' C
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) |) a e- u4 @9 { g- Z8 x
if( bGamma )- [3 N# A/ E- l/ X6 }, b
{+ v- @, O/ J2 j6 z3 l$ g* t& C
m_nExp1 = 0;
$ z5 b7 y: K, a0 b% o }
% Y. U& B5 q; ]$ j$ d- A7 E8 W% w7 r& { H& g+ A; A
( (CUser*)this )->AddSetChangeJob( nJob );6 q3 W: n$ s+ k3 y7 M/ y
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );* H m9 F% c$ R% h2 g% M
3 o# s r" m4 [3 q
' N, R. \! t8 h Z) l, q7 B% a#if __VER >= 11 // __SYS_PLAYER_DATA
6 x) N: T, I2 }3 V1 L6 C0 u3 H9 E( L g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
: T* Z& O. F5 @6 U$ }3 L6 x2 t4 c; w( O#else // __SYS_PLAYER_DATA3 ~- M' G4 p! Z# ?: M
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
6 [& r1 a0 {; I g_DPCoreClient.SendFriendChangeJob( (CUser*)this );. ?+ A" d, J o9 {* i6 _
if( m_idGuild != 0 )
5 B5 h, N( s9 [9 `* Q: c$ _# a8 { g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
3 \! h9 Z* J5 O+ c. B7 r#endif // __SYS_PLAYER_DATA: d; d8 |4 j. P% L0 Y& M$ b2 h
SetHitPoint( GetMaxHitPoint() );
( X) s9 a: p2 O4 J7 B2 t4 b; Y. y* r SetManaPoint( GetMaxManaPoint() );3 L* P3 [3 Z* A0 ~- S; n
SetFatiguePoint( GetMaxFatiguePoint() );
4 V. ]& s, {8 x4 `: ]; I5 [ if( nJob >= 1 && nJob <= 4 )! D" S& _5 p/ z" ^4 g
{
4 k5 U/ Y7 ^( h+ V& W1 ^. ~! g m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ Z$ j( B# c y& A. _4 Y% G& v( w m_nRemainGP = 28;7 Y0 J( x- ~1 J# `/ w3 m/ U; W
}2 D8 t# S6 @& w8 x0 Y+ `
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )/ H6 @ H# j4 U: w* D2 `
{
2 B; J6 c2 {1 x$ R, ] m_nRemainGP = 118;+ o/ q7 Y2 S+ m/ }
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
3 M) W8 Z% S4 M, b3 q' x. | m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 R. s9 a( s8 {( \, H }/ I& ?: J/ B3 e! t" e* |$ q& S
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )% E/ K& S+ c# m* z0 F
{
# Q O' o3 u# @+ c CItemElem itemelem;$ F: ]8 G! `" t0 c
itemelem.m_nItemNum = 1;
. c: p9 o- @9 T! b: G! f0 H$ n itemelem.m_bCharged = TRUE;
+ l+ d9 @/ ~) L& U BYTE nID;/ ]: f, L- O* x" K$ A! H
e& q) V# t" d: g, M
if( nJob == JOB_MENTALIST_HERO )
I( R* }+ c& A4 ^6 W itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
7 J7 n# _$ \7 {5 t( e# J( u6 l if( nJob == JOB_FORCEMASTER_HERO )" d5 _! q8 ~5 {: ]+ z% T) y$ @
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;6 F% ^; k6 Z' ^
4 [: }) T9 Z( `9 \! M
( ( CUser*)this)->CreateItem( &itemelem, &nID );- l8 \ Y4 X) a, J6 J
}
" `% u* _1 v: p' x) X g_UserMng.AddSetLevel( this, (WORD)m_nLevel );; m' Y1 x( `5 _. w: F: J
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );/ O/ K2 S( p, l& s% n! ? h0 Q4 r3 S
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
n5 A: k% c/ J# X) z2 i /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );7 O4 `4 i4 u! ~2 Q
( (CUser*)this )->AddTaskBar();*/+ B) N7 s/ v; s1 B. @
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
& ~* T% D; y+ K# J#if __VER >= 13 // __HONORABLE_TITLE // ′Tà? n; v- N& f" f4 z: H) I: ] O/ @/ {
((CUser*)this)->CheckHonorStat();
: r; ^% a5 X# j2 V+ r+ u* L ((CUser*)this)->AddHonorListAck();
5 b' p+ X1 K" Q/ j# x0 ?- y g_UserMng.AddHonorTitleChange( this, m_nHonor);4 |8 d- R& I4 o! Y% f
#endif // __HONORABLE_TITLE // ′Tà?
, M5 a: C; {# G1 y9 K5 k; |0 M }% N- g1 `9 y2 J+ B5 L
#endif // __WORLDSERVER
; |# [1 E4 e0 M- [} . R2 [! r6 ]& S$ S/ {
, ]$ F3 G# x& o/ k. C. x然后你进入functextcmd.cpp并添加以下& U" N* n2 ^' Y, G+ Q1 @
0 n# @7 }' N9 x+ Z1 {/ Z0 f3 S1 t6 [
代码:8 q& Z# j$ ^; F
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
5 C% I* M1 ~6 c下面插入
- X* t3 \# \) `1 P4 `9 X- S* AON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
+ {& z; e+ I4 \7 {" S( A0 [( H5 a7 l$ s4 g: @$ ?
然后你去
8 K W: H3 l! \
9 d. ?/ ?2 g, F, h5 V) T% l4 f代码:
2 O& z+ D- ], U: x! S C7 l代码* ~8 v5 A+ c! |: i% f
BOOL TextCmd_ClearPropose( CScanner & s )4 i7 v& r% i2 m+ f
{7 \# J$ H2 J% k
#ifdef __WORLDSERVER% F, h7 A2 `4 G% s
CUser* pUser = (CUser*)s.dwValue;
! J" W2 W. o9 R8 _. p7 y g_dpDBClient.SendClearPropose();
# {* S. h2 J# [% I' s* K: v5 l#endif // __WORLDSERVER" Y N5 C( i! {: I3 Q
return TRUE;
- F. |' e. z' {% x$ e4 b; e}
- X( Z4 p) A8 Z5 K3 \3 {5 k* G下面插入
6 b% m; G& s) e d& }+ bBOOL TextCmd_rebirth( CScanner& scanner )5 s2 Z0 s8 _& R7 f: e) r
{
! a! W: M2 d1 X' [. k8 M. |; J#ifdef __WORLDSERVER
5 N1 R9 ?8 l: h4 d& RCUser *pUser;6 t0 ~7 U- V* Z5 T# `
pUser = (CUser*)scanner.dwValue;' B$ w7 R) y! [0 l
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
& m$ b; [ g4 {4 Z" G6 {+ fpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);( J% z. {; {7 q2 o. F: y
else
, H. t [# z$ |3 PpUser->AddText("你还未达到重生条件!");# @3 h: Q; S# a6 C P4 x |
#endif
7 B$ m8 y+ {! h+ K5 W& z1 lreturn TRUE;, y6 G" Z; n8 t% c6 ^
}
0 f6 P: D! [( J
d% b* E' f6 u6 x7 A) f+ x2 K$ v! F- A. i9 f* G+ |* O
0 o9 c7 z' }: U) q% G* ?3 j
' f" @& }) j: ?/ W% a: U O |
|