|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel) i- e& k7 U! z8 C5 I& A
5 r# x7 t$ W( v! d' H# C9 d2 Y
Mover.h k. K/ t) `) L
代码:. I( @( U1 K$ o& O
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü& D/ j T8 `) c& L. `# o; `
* n. [" t7 j. N9 Q% _. s
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
* g9 B) I, E3 o4 t$ E0 [$ l/ t; H6 v; R( r. A
然后你去mover.cpp添加' U L1 W: U7 x+ W; M3 E9 b
+ O* r+ \) e( J
代码:
Y+ ]/ M* V- c7 \' p: v3 `void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
: y% u& a7 e/ U6 ^* g{
& K3 w: N3 e/ C* Z1 q9 ^#ifdef __WORLDSERVER
' d! L% K& K G3 d: T/ p // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" d0 b+ a) v- H/ f, ]& m1 p" u MoverProp* pProp = GetProp();
7 e2 i* s1 {3 k. j if( pProp )
" U/ q4 o W. q$ V$ g7 |* E2 j5 l {
' V& H j T% T# k% d if( nJob > 0 && nJob < MAX_LEGEND_HERO )6 |1 _/ B' C4 x$ K
{
! R& p/ j! ~- w0 V( C0 a AddChangeJob( nJob );
5 c. i8 f/ ^+ p }else{
2 `# G: r- y% U; R% ~( W C2 x return;
2 D+ W0 u. J# L }8 q5 T2 J0 R- c9 ~' |3 t# k
int nPoint = 0;
2 `9 E8 Q* K8 j: H5 ?( }; c if( m_nJob == JOB_MERCENARY )" D* X2 z/ o# b
nPoint += 40;8 u- }4 e% u2 C2 z) {; a
else if( m_nJob == JOB_ACROBAT ): g! i p8 D4 V6 P
nPoint += 50;
5 O$ [7 P. `& ^% u7 V; @ else if( m_nJob == JOB_ASSIST )0 K2 H2 J+ ~5 H3 I
nPoint += 60;
: e7 W) L0 }8 {2 Q" J. g( D else if( m_nJob == JOB_MAGICIAN ); ^3 D9 {1 O% Y1 v( @* R4 O' s
nPoint += 90;* |" @4 P& X! O$ r& |
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )+ w r' R- P9 O$ v
nPoint += 120;
6 J0 |. ~( G8 X else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )! J# k) o3 M" c$ m8 R; h
nPoint += 150;; A4 S' v5 Q# x7 P L+ L& g# v
else if( m_nJob == JOB_RINGMASTER )
' x. p% B' P7 p9 H7 m8 ]* f% r nPoint += 160;
- ?7 ?4 D8 N' M2 m else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
v. i7 ?% [6 D; {( w4 ?% U4 V% X nPoint += 180; Y& p' }- H; v% X" I) \+ J: h) i% T% Y
else if( m_nJob == JOB_ELEMENTOR )6 J7 b+ Z, G, E6 l/ c% q3 ?
nPoint += 390;
" i! Y ?# E' a- v/ K3 Z else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% B6 ^; C, y+ n* s; S% U8 x; i* M$ ^
nPoint += 120;
; [; a7 M5 Y$ e+ r) @! M5 y else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ): G, ?( x* h b
nPoint += 150;& _/ G: `- c. U
else if( nJob == JOB_FLORIST_HERO )
. i' k; o" o' U( J nPoint += 160;
2 K1 a. l1 j& o8 P4 Y else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
: k9 S2 B* z* ~6 g8 u5 a' o3 m nPoint += 180;4 j( G$ b) Y/ M/ K6 q
else if( nJob == JOB_ELEMENTORLORD_HERO )9 q- R3 D# s5 b, \, ~" l, ^
nPoint += 390;
% p6 Q$ I1 P7 a" A" B# @" Y5 G/ c4 m; s- U( |; p# k5 V
AddSkillPoint( nPoint );
3 X' h. y7 ~% [ m_nLevel = nLevel;
0 P4 q" S* x' y; X& n
3 I; T5 u$ b9 t- O2 p: Y/ ? SetJobLevel( nLevel, nJob );2 n: z4 S& W) }% g6 A1 e
m_nDeathLevel = nLevel;1 g& H# ]; ?- g2 N, B
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. A) v9 C) i! p/ B3 a if(IsMaster())
0 {! Q( b h; R: r7 }; Z {1 O/ ?1 P# @) C) `) G
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
; G f/ j' j( f% C$ W! T# n if( nLevel > 59 && nLevel < 72 )3 T; V; n- @ Q) s' j- X! @. p$ e Z
dwTmpSkLevel = 1;
7 E, o: A' H% G% P# Z$ L. W9 V8 f else if( nLevel > 71 && nLevel < 84 )
, {* O0 `+ o4 i% c, ^! ^' v dwTmpSkLevel = 2;/ F6 d C$ W' |! e" M" w
else if( nLevel > 83 && nLevel < 96 )* E$ a! {& ^4 V6 S; D
dwTmpSkLevel = 3;
! R- j* ]# v3 I# ?, f( w else if( nLevel > 95 && nLevel < 108 ) x# \# q) Q$ k2 d; |& P2 r3 E7 [
dwTmpSkLevel = 4;$ f, Z: S' X' i( F
else if( nLevel > 107 && nLevel < 120 )! _. w# d0 j% @% j7 M0 U
dwTmpSkLevel = 5;) W2 r' L9 c# z6 }
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 Q. ?, N; f, ?- \" S% m6 {- t {
9 w! T& [& K) T6 ]( e8 h l9 | LPSKILL lpSkill = &(m_aJobSkill);
; z- |9 f+ I7 U: N if( lpSkill && lpSkill->dwSkill != NULL_ID )2 [- t6 y+ ~1 s& p0 j# q% i
{2 s' M; r3 \: d+ `
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + ?- u3 A6 L6 ~" t
if( pSkillProp == NULL ); C9 F$ |$ D' F( x( ~
continue;
# a9 h3 {) F( I' P8 P if( pSkillProp->dwItemKind1 != JTYPE_MASTER)( {' }, X. ^5 R" q2 A }
continue;8 V, t$ u _2 r$ p+ ~ G- B
lpSkill->dwLevel = dwTmpSkLevel;- G2 {( m D+ \7 w/ G
}6 [5 H S S5 F. X4 F( W6 w
}
8 ]0 i) l. o: p) h: X. j% L5 j }
1 x; M) p: ~4 [9 S else if(IsHero())
2 n" J( \% a4 z( U0 ?3 f. D" f {( }$ V5 m! C1 f5 b
for( int i = 0; i < MAX_SKILL_JOB; i++ ) + l) [; o2 n! H( S3 b1 t
{
) ~! I5 z' |+ ? LPSKILL lpSkill = &(m_aJobSkill);) v( H+ P! K8 |
if( lpSkill && lpSkill->dwSkill != NULL_ID )
* b$ d$ ~6 I( H5 x: l' j {
6 t4 a" u4 q1 P ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) `2 _9 C6 Z. ?( t
if( pSkillProp == NULL )
0 L/ ^1 Y+ {2 o2 s# r2 e# T continue;) h$ _# X( i# {' V O' a& m
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: H* D6 k1 q* u continue;
R+ [% v) g8 J( i A lpSkill->dwLevel = 5;
Z [, V5 x* w; w# i& a2 j }* A/ q9 Y/ O' u+ H1 c# Y
}
: S R5 w' G; x" w }+ [2 O- A/ U# y& C! ]/ v
else if(IsLegendHero())
+ @# G$ P* i- P v) { {
3 Q% V7 U& \9 r% e' _* |& m2 v9 D for( int i = 0; i < MAX_SKILL_JOB; i++ )
- d, M$ _5 v7 b, t8 F" m1 s {
- L# R7 ^1 ?( d/ ] LPSKILL lpSkill = &(m_aJobSkill);5 S* ]1 e5 i+ P
if( lpSkill && lpSkill->dwSkill != NULL_ID )' `' v& M* s* V" g3 h z' w* K/ a
{8 u3 d, v# P( b- b" N
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' ^) n) a U5 J r$ f2 c
if( pSkillProp == NULL )
q& Z0 ^; _( z4 d$ l0 w3 ` continue;
. f2 L" n' H4 Y2 h( G/ ?4 i5 ?: {% B if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% L& a- Z5 a+ K+ I* Y continue;+ U+ g+ B$ I3 n5 e, m
lpSkill->dwLevel = 5;2 S5 @' v6 B, v9 G% c0 h
}8 [$ v4 L, }+ e! A Y
}% R' O' {7 k* s8 T
}' @, G- _, G9 @, v+ n
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) E. w2 v0 R( A& u8 P
if( bGamma )/ h8 P, c6 q) Z* J
{
9 G. j. J4 d0 X m_nExp1 = 0;
& M6 H/ }1 n/ C }- ]. v: m! L/ Z
2 a+ V- X9 k7 W6 O7 E! b! X ( (CUser*)this )->AddSetChangeJob( nJob );* A- J1 j! r" p* a
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
+ O5 @2 O' X+ B$ o
* m& g; q% X' C, N1 Z. M3 O; J- r& Q5 ]" a& Q) O
#if __VER >= 11 // __SYS_PLAYER_DATA: p* G$ m, C+ }. H8 ?% `( c
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
; c8 m' ]4 q+ \7 \) j4 D#else // __SYS_PLAYER_DATA
' F4 V7 M( Q! \4 g6 G, @ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
) O, R) z& i% F! b) H- A' a0 i g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
/ X/ Q) T" ?$ m& f) j! A if( m_idGuild != 0 )/ w$ O6 N% b2 i' W$ d
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );$ e1 I* {6 [) @! ^0 l
#endif // __SYS_PLAYER_DATA) x! A+ C# ^8 k( \" Z' b5 O
SetHitPoint( GetMaxHitPoint() );/ A( q' _1 ]4 K1 {
SetManaPoint( GetMaxManaPoint() );
& d2 H0 ?- ]2 E8 b SetFatiguePoint( GetMaxFatiguePoint() );/ @8 v x- c2 g! x) ^5 V
if( nJob >= 1 && nJob <= 4 )
2 L. I- |0 I& ]- z( R {$ q+ s3 e; t$ c Y: S
m_nStr = m_nSta = m_nDex = m_nInt = 15;0 P, v% M) R, }! Z* W- T+ R5 J
m_nRemainGP = 28;' ^, X, t: }1 v1 l) O' i
}
- k& I3 c8 I! ~0 ~ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
' A. j# C. U2 B! T& W; _$ C6 `5 n- p- | {5 K# m& f) @- i4 z! O3 R! G8 P n
m_nRemainGP = 118;
* x, A8 A+ j# ?/ n& l& N //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
5 y5 x7 D+ n6 C- g' N8 \) t( V1 g m_nStr = m_nSta = m_nDex = m_nInt = 15;
9 e9 }4 a* Q$ ^1 T1 E }
* {) N) B( M7 S* q if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ): J1 L5 u5 N4 l' [
{
) x' c. M3 A- O2 v, s5 m, D5 s% w CItemElem itemelem;+ ~3 X( @6 Q1 w4 p; B
itemelem.m_nItemNum = 1;- b2 ?3 x$ F' ?/ ?+ H; L
itemelem.m_bCharged = TRUE;
/ Q) ^1 G9 M. }# g BYTE nID;( P" {# _+ m( {7 T, H8 m
5 a3 ?0 m j% v1 u if( nJob == JOB_MENTALIST_HERO )
+ y2 l% F8 M z3 u- W itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 p& X6 T8 Y" ^7 I/ x$ v
if( nJob == JOB_FORCEMASTER_HERO )1 O7 X8 J7 L0 a& H7 V/ s
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;2 g/ g" N2 X# C; `
, l) Y* p+ M) T) q! E8 J% r$ T- W ( ( CUser*)this)->CreateItem( &itemelem, &nID );
, w/ F- E3 Q% }% `8 z }' F9 a7 }; X3 w* m: F9 j
g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); @3 b; v/ L$ Y; q/ ?
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );$ N" s3 b3 K( B! o1 l0 b
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
" E( j% X/ Y1 o; A) O1 |8 Z /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
3 l# u5 K* m' d& u ( (CUser*)this )->AddTaskBar();*/
1 i) U+ B1 F' V% }4 f, { ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
4 g6 K' {( p$ V7 C5 O#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?" F0 Z7 T# C' ?+ |
((CUser*)this)->CheckHonorStat();
! z. x M2 H8 |9 y& b8 S V9 G ((CUser*)this)->AddHonorListAck(); E4 u5 `" z9 d6 M$ R1 ~
g_UserMng.AddHonorTitleChange( this, m_nHonor);
N4 `! r5 W+ A& p; k+ x, k#endif // __HONORABLE_TITLE // ′Tà?% m/ z6 p9 p, d9 E$ V
}4 |# b6 @; E1 e* i
#endif // __WORLDSERVER4 j- y) X# z$ i5 V. J" k% [* v P
} ) W# j) L* q9 n8 Y0 Q+ j& U
! U6 E+ u7 Y" u/ T. ]) U然后你进入functextcmd.cpp并添加以下2 {! T* T: t# b- ]4 _& [* s. F. O
% z0 b+ a( |/ f$ @代码:+ k1 {& H" \8 k2 v# i/ k
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 V9 V6 n4 I$ J
下面插入
$ n3 M4 P7 ^8 C) Y5 K! {0 o( e: BON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
& {& C+ o1 f, o# b- p( w5 }$ Z6 r
然后你去) x9 t+ \3 Y9 K/ q# |% q
: r; r$ a6 P! T& Z" {4 w
代码:- U1 U* Z/ A8 o4 M
代码
. W& l: M- n. o; IBOOL TextCmd_ClearPropose( CScanner & s )+ ~, ~8 Z5 I# }9 _( g. w
{
4 j" I5 a* B* L: h$ b( C) l9 X#ifdef __WORLDSERVER
. `" Q% c8 r, P6 j CUser* pUser = (CUser*)s.dwValue;
: r3 e" b9 v8 l! T* X& C; r g_dpDBClient.SendClearPropose();% V; X! N. h/ w: h, n- B
#endif // __WORLDSERVER' O: F" g- a9 }& |
return TRUE;, t+ H/ k* X, N$ ?: y
}
7 U/ t& F) ~' }7 o7 f下面插入( n0 _6 g( w. M. ]
BOOL TextCmd_rebirth( CScanner& scanner )
8 O W; v$ }8 s0 s/ }# p{
. T7 S" l. } ^) T#ifdef __WORLDSERVER6 x+ ^2 N5 I% u. e0 e
CUser *pUser;# P% a g7 g; `9 Z- g0 y4 Y, ~: u
pUser = (CUser*)scanner.dwValue;2 C4 r& M2 E+ `* ^: Z; R, x( F
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())0 H) L2 z$ P( s$ d0 C7 p3 v" X
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
; K& v5 |4 T0 k- Q4 aelse
+ R" S3 d! Q1 U; |0 upUser->AddText("你还未达到重生条件!");
. [% Y. _1 t4 m#endif- X) S6 z4 E5 f, \% j) T
return TRUE;
" n) W6 C/ G+ k+ s' H}
5 f6 P; D& | d: O8 f, q7 S* a- [
, l* I _, N4 L+ l+ |
' p* S4 ^" G& d( s
6 g) A, K/ k6 Y0 I3 a
; h9 e/ F2 h! q& c% S! w9 ~3 P0 K+ A |
|