|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel) g' l( B5 u' ]/ P! ^: m
& H! [$ M. d" s, L: @* _Mover.h
2 p+ I* N) S5 P+ d* I代码:
; n5 i& ]5 W" c3 J$ D1 I: |( q- V$ S/ w# l找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
_. c' n" }# D x S2 T3 t5 C$ f( ~8 F4 |; r, h
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 4 c; Z; c! f6 L% p2 f
; f8 J* S) k% G7 W% ]/ u9 N. q然后你去mover.cpp添加
. R9 v4 |! a" n4 ^ h% u: _# L, E6 d7 Z8 z
代码:
l! @6 `1 y+ C0 `void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); o/ m% Q# i& _0 f. @# `0 |; D4 F
{
5 k, R4 S% H$ N% W' O#ifdef __WORLDSERVER
$ W4 |7 ?, W9 [. w. F x // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó8 `) b9 v) w3 O. A
MoverProp* pProp = GetProp();
; X4 i! m2 u7 r$ ^+ p if( pProp )
2 Z# K+ e2 Y! Z7 Q: F1 B! m {6 j. o5 U1 }4 F; g+ Q' D, t
if( nJob > 0 && nJob < MAX_LEGEND_HERO )7 i8 U, _4 ~$ m/ l' U! R
{
. F# b: }8 [% w+ F _ AddChangeJob( nJob );$ l5 j& ?+ ], ^% K
}else{
3 W2 L7 i) ^+ R x& k return;* R/ F+ U/ i }/ K
}
$ n c: X- W5 x7 _/ p int nPoint = 0;/ I2 k( I i! h* f! X
if( m_nJob == JOB_MERCENARY )
8 v) e! } w2 Y0 L+ _ nPoint += 40;
Y7 E& d/ i9 Z8 A+ B else if( m_nJob == JOB_ACROBAT )
9 a9 g- D5 E- m4 ]/ m nPoint += 50;
4 G# L4 W7 d. k5 w4 t6 O9 Z else if( m_nJob == JOB_ASSIST )
# R; f3 X0 E# u. a9 b$ k nPoint += 60;% k" o7 Z9 ?/ i8 K3 _
else if( m_nJob == JOB_MAGICIAN )
5 j& x3 y; q/ M$ M/ Y$ D' L nPoint += 90;
, v" S, F- g& @! p: n. N& P7 M2 B else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
) a W' m z0 U' Q% t nPoint += 120;# F8 O2 G. b. o' Q
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ), y0 H$ N2 T3 l/ |* r/ `' F1 [0 ~! y% Y
nPoint += 150;2 y |1 h' z' i; ]# p' p! F
else if( m_nJob == JOB_RINGMASTER )
# O" N" n& V. M4 y2 L% t nPoint += 160;
) N* F' W2 Z1 l9 K. L6 j else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )+ a1 z# u! a2 i
nPoint += 180;
/ V% z% ~. u2 _ else if( m_nJob == JOB_ELEMENTOR )
R& n: o7 R' q nPoint += 390;/ s8 Z( N6 p8 o; ^! R- q# s& D I
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
) {0 K n- F9 O! p: x9 n nPoint += 120;/ J* `# C z$ D4 b' Z# Q. i
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )& o" z2 [% [! F% V
nPoint += 150;
7 @% e& K7 T$ Z/ u% R/ v else if( nJob == JOB_FLORIST_HERO )
' j/ z7 n$ I: W6 j! h' B nPoint += 160;8 W+ v. D' [. a
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )1 E7 t6 c9 u8 m" A1 E" [! \( b
nPoint += 180;
) I. L) a$ \& y& `0 X' w5 U else if( nJob == JOB_ELEMENTORLORD_HERO )
( q+ w+ p+ i! T7 \+ m nPoint += 390;
0 \+ x# |# i) A8 N2 }. Z5 G% k
: N, O9 `! F* N: i/ f AddSkillPoint( nPoint );
: g1 S# d0 a3 f- v m_nLevel = nLevel;( M$ g& E, x) R2 \6 F0 ?5 F
( E0 Q' m1 [4 F SetJobLevel( nLevel, nJob );0 b+ L, W3 v) i. r) ?$ Z. O
m_nDeathLevel = nLevel;
0 N8 T) O4 U2 f+ k# p#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 X" j( l f. @$ g if(IsMaster())
% P( r" L7 ]8 s! H {; ^) s) ]% j* i) ?# T
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
- M9 c( @" d6 s" ` if( nLevel > 59 && nLevel < 72 )/ [" s# ?* e- i7 d& ^
dwTmpSkLevel = 1;- S& E/ Z5 {" n, n6 _2 q
else if( nLevel > 71 && nLevel < 84 )
7 C4 Y( i) G* G. w4 a: k9 F6 B dwTmpSkLevel = 2;
8 z W! }9 j0 H! H! g V2 w7 { ^; j else if( nLevel > 83 && nLevel < 96 )5 E6 R8 E: ~2 \7 y
dwTmpSkLevel = 3;
/ o8 H7 Q( {4 F else if( nLevel > 95 && nLevel < 108 )9 W9 @+ s+ a! B* g
dwTmpSkLevel = 4;1 X9 A, c5 v$ R4 B+ F) [ P
else if( nLevel > 107 && nLevel < 120 )
5 M3 P" J' L0 f0 _4 h dwTmpSkLevel = 5;
$ y: b( m( _) y& W/ o! ^; g: } for( int i = 0; i < MAX_SKILL_JOB; i++ )
2 h% o; E1 f" e { ) M7 f" u% T) R8 X4 y
LPSKILL lpSkill = &(m_aJobSkill);( k7 |' Y8 Q! d$ _
if( lpSkill && lpSkill->dwSkill != NULL_ID )- F# ^% x+ e/ a( q1 Z1 n
{
; o j: U2 G8 D+ [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 N. C0 U6 p% c: l; ` if( pSkillProp == NULL )( [: }0 R+ l; B4 Y/ ~2 s* u! {' M, \
continue;% ?/ X9 s& \" m* t0 s# I
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" y5 w0 V, r1 f* E# v
continue;
! e) P' E! q9 H, l lpSkill->dwLevel = dwTmpSkLevel;
9 n+ a8 N$ H1 a& |6 r$ E }) g) c: Q$ k* {# w [7 Z
}
$ }6 n3 o5 d% [ Y }: { g' g8 U! t% q! M
else if(IsHero())6 s7 z! s. X! l" y+ q
{
- Y; L6 O0 s/ W for( int i = 0; i < MAX_SKILL_JOB; i++ ) . p+ J [6 I7 \. J, n) e4 V
{
1 a/ r0 w* w8 M# b+ r+ u- n LPSKILL lpSkill = &(m_aJobSkill);# a, v/ K( G: z% S( n4 @$ s0 c
if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ U& O) U7 y! C2 N! B/ ?* c1 B {/ `$ @; }! A1 ]) h4 _* E
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 @- e4 s& W1 q5 P* s0 l$ u if( pSkillProp == NULL )# T2 T5 d- D( e) P
continue;
! B3 W8 V) h. A( W; R/ x if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ l9 D& }) {% u- O+ G U. u; ^ continue;" y& C. b+ {" G& s: r: s r
lpSkill->dwLevel = 5;
: F: P3 c% z9 N* x5 w# | }
9 F# Z6 z; y9 h! m } W: j) F3 ]6 P& M) X
}
/ M% L8 C4 u. k' k1 v- e1 ] else if(IsLegendHero())
& ?$ R7 F" j/ V8 w p {
6 j' `( z* [2 k9 c& c* w% e for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ t; {- U% Y& [) Q2 L/ z \
{ 9 t- Z0 O4 z* v2 u& e, u
LPSKILL lpSkill = &(m_aJobSkill);
8 R- z, ? }" L9 @% T if( lpSkill && lpSkill->dwSkill != NULL_ID ): t! I. x2 [# K" d; A) O* Y
{
, X0 r* [" A1 B ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 e$ T" |3 Z) V3 y6 ^ if( pSkillProp == NULL )
6 ^/ k: \5 z" A continue;5 Z" j' {, ?$ P4 G+ Z3 o
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ K( I f5 x! y9 s/ V
continue;8 F# P: I! w* ?% Q/ V
lpSkill->dwLevel = 5;
# r6 t1 n& t/ B* ~ }( J) t; V! u \2 [
}; W& |1 n' i) [& `+ r
} L/ j0 y' \+ T
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 K, _, L# w+ f y8 Y0 [
if( bGamma )+ z4 {+ L& C: G* Z, X1 x
{& k) |% d; ^( C
m_nExp1 = 0;9 ~9 d1 F! N) Y# G0 ^
}7 e) M- a X$ V7 H" P/ d- x- h
& Y# q: m x ]1 P9 a! ?
( (CUser*)this )->AddSetChangeJob( nJob );
: _4 K4 |$ V4 J# F) m- z8 k g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
' n, e) G# t* b
: ]. s: J6 q. t" F- Z3 D
?1 F/ F8 g! X1 t#if __VER >= 11 // __SYS_PLAYER_DATA
# y( M$ G& ]! F. O- z* ^: ]1 g& H g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
+ F0 J5 E6 }+ ?0 V$ L#else // __SYS_PLAYER_DATA
' ?7 [+ I" ]5 \+ \1 X5 F/ x g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
5 k" d& E) z4 D# j$ r g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( ~: z5 [) r3 d
if( m_idGuild != 0 )
! d0 |" [9 c7 c; t% X g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
: B9 k( j" K b' v3 E8 ^3 I#endif // __SYS_PLAYER_DATA5 H" @: f# ]! S
SetHitPoint( GetMaxHitPoint() );/ [9 A% H/ k- ~# W
SetManaPoint( GetMaxManaPoint() );
& A! o+ T$ k: r: D* g SetFatiguePoint( GetMaxFatiguePoint() );
" g: Y/ Z- z8 P, N |9 r( N if( nJob >= 1 && nJob <= 4 )
* T8 X/ n! |- r* N. v+ @. i( R9 \ {
" s- }! X9 S+ b, ~( b: @. d m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ k: A2 s; D0 T5 O# d m_nRemainGP = 28;
% A5 ]) s+ ~4 c3 x }5 @" ]3 ]: |, v+ `& ^2 |
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )7 v& @: `# G& b- O
{( e$ X) L e4 d7 C* W
m_nRemainGP = 118;
' k; Q. M+ h4 J g: J //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;+ A+ |: q0 b" a$ e7 q8 X" K
m_nStr = m_nSta = m_nDex = m_nInt = 15;, V- d7 p4 {: T; T
}( M: F: z3 v; I- b2 c
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )- i" |3 B y' f, p
{
! }, g# x( ]: P CItemElem itemelem;
9 t3 {* e6 _7 |" E7 b itemelem.m_nItemNum = 1;7 N- O/ s& f6 L0 b, W& Y0 ^
itemelem.m_bCharged = TRUE;
4 i) | m$ O, i. y# Z BYTE nID;
9 k- Q0 T- m& \# e- H- _% N6 _% U) O- a
+ g; t/ [( {/ R0 v2 \ if( nJob == JOB_MENTALIST_HERO )
. {) R- R3 X4 W8 A itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
6 \6 c5 G0 ~9 K8 ?) |/ y# K if( nJob == JOB_FORCEMASTER_HERO )
7 S' a; h* X7 Z itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;7 [+ I" |6 @' W Y$ d; D% x
; o* f$ W1 ?& T) Q
( ( CUser*)this)->CreateItem( &itemelem, &nID );
. i* u5 r/ x7 O0 X }5 e2 o a2 J! x4 Y y/ p: s
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );0 {5 [1 u' M% a. u
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );' n) R+ M6 a& x$ D8 L$ x
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );6 Z" a% }- t& ^. Y8 q
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );/ C' g$ I! V: F
( (CUser*)this )->AddTaskBar();*/, {0 V( {9 l/ c! V
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );9 J, |( b9 r' t
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?3 K- `4 ^; o1 Q C/ O# b
((CUser*)this)->CheckHonorStat();
. O4 `( r( S6 t, T ((CUser*)this)->AddHonorListAck();
, g7 B$ |2 z9 u g_UserMng.AddHonorTitleChange( this, m_nHonor);
, e4 S- N/ ^+ \+ W3 h# {. B#endif // __HONORABLE_TITLE // ′Tà?5 ~1 x# Y5 b& Q$ B
}
1 e' O# d% U/ P. H: l# e8 v* k#endif // __WORLDSERVER9 Y8 |8 R1 l) _2 ~
}
: s! d7 u6 {2 @- w1 q2 q7 v; P+ ]) G* @
然后你进入functextcmd.cpp并添加以下# T& M K- U M' g( |
( _4 y! [" m1 ? k代码:2 f+ B, Z$ Q2 c3 l- k
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
6 L' ^# O5 |9 m下面插入
* ^+ W0 ^, r% X8 b7 b" U( WON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " f9 Q: l3 ^" T; c5 u
5 O- r4 \) ?. T然后你去, k" X! @% ~$ S3 q k' J
% R( p% M- N- x' x L
代码:
& t/ |6 {2 Z1 ?; [; A代码6 X) E6 |$ B; x* l! x
BOOL TextCmd_ClearPropose( CScanner & s ). K/ s7 @& C# ~ H& ]
{
: G& C3 |7 P9 o: H/ b2 V#ifdef __WORLDSERVER* C- f4 Q5 h/ Q5 u7 f
CUser* pUser = (CUser*)s.dwValue;
" R; M9 U8 ^3 G# C g_dpDBClient.SendClearPropose();
/ K& g6 Y/ ^8 e" [ k, M#endif // __WORLDSERVER" x5 L" Y# t' @) I; U
return TRUE;
% u; z+ n+ `+ p( b8 V}4 I; u9 G( }- M( M
下面插入
# H, y3 m7 }4 f/ A, ^BOOL TextCmd_rebirth( CScanner& scanner )
3 p! _. q$ F8 Y& ^% @& A8 Q; d p{! d0 Y9 ]' X- w7 ]# {' N" g+ f
#ifdef __WORLDSERVER- h$ D+ q& ?6 }2 ~2 T1 p0 {
CUser *pUser;
. U$ a- m: f; LpUser = (CUser*)scanner.dwValue;
( H7 B5 N: C3 h( Kif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
, S8 c4 _. ^& t+ v, V1 _) A ypUser->InitLevelPumbaaa( pUser->m_nJob-16,60);. }7 m, u" r M5 q9 ^; s- ^
else
7 a& O9 ?: i" [ Y8 apUser->AddText("你还未达到重生条件!");4 M- Q" [1 n( t' p0 Q2 R1 v
#endif
- e5 ^) {" H( I9 o/ B* i2 W) creturn TRUE;2 [4 E: F+ g; @: ^$ j( z. F
} # A& y; Q) k$ X% u$ ~- ]
: M! Q( Q! ?' h4 [( D, B3 n
* S {: F2 q5 y9 C! P
5 N! D' v S% I$ \! }. _
4 S- Q) G. c+ d P |
|