|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel+ _* e* F. R; g
5 A# |$ ]: B8 f; {& |! R* q" e
Mover.h) a& w5 N2 w) l7 a: x. R7 P" Y
代码:: u- `/ \; M# x$ \- B
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü0 } S9 [ T n% a+ R8 E4 `
3 f4 Z; b8 l( }下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
8 z4 ^6 T2 O& F c; |& y/ ?* p; }/ x5 i" @
然后你去mover.cpp添加% k" y+ |5 t1 x% Z. N5 a! q1 O
- u( {4 `: W6 s3 w, v
代码:
. Z4 d2 _8 E/ {9 k* Ivoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )5 N: R3 L+ d9 P4 C) p; X) h
{7 v8 F2 _9 f- s( A
#ifdef __WORLDSERVER4 Y1 ?# `5 r5 v8 M: L
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó* ]0 K' ^8 c" |! A
MoverProp* pProp = GetProp();$ _! c. Q- s: y5 P% Q
if( pProp )
% A8 i$ j+ a& e {/ h! S6 Q- M# K' E+ t& t: _# n5 r+ B: S
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
( y7 M- E! |5 K" x {6 L1 {: {5 R/ T1 o7 A- k
AddChangeJob( nJob );
! M+ `5 B5 K0 G! K }else{
/ R" ~/ ^$ p5 ~$ N9 A& A return;
$ \. z, O; y7 | }* d/ W/ E% A) |
int nPoint = 0;1 y( p3 T) }0 c( L) ]- C
if( m_nJob == JOB_MERCENARY )
, N, G- w8 n+ \* @% y J% i; R0 G nPoint += 40;+ U! I0 `: N M2 P, U
else if( m_nJob == JOB_ACROBAT )& w/ y" I3 T- X& m1 \
nPoint += 50;
: q; A$ ~0 _0 k" C else if( m_nJob == JOB_ASSIST )
, e5 b& C5 C2 s1 A/ `; L. x nPoint += 60;
0 X$ o' ?+ q: ?0 `* c else if( m_nJob == JOB_MAGICIAN )- _% e1 [8 A+ j/ s7 b+ Z
nPoint += 90;
/ B$ X" R2 W: D& }$ R, x% M3 E& d2 P; r else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )" ~5 e: p% }3 I X
nPoint += 120;
7 }% s8 S* G5 U( ]0 E" l else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )) b' u5 y$ g! M
nPoint += 150;8 I, K2 h) m* Z) G! f
else if( m_nJob == JOB_RINGMASTER )
\+ C$ ]7 M% f5 y nPoint += 160;
1 E6 O* T5 C: ^1 w else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 V! S: }( X% C* x0 S
nPoint += 180;: x/ I& I5 g( t# O; c! f/ w7 H2 Q' h
else if( m_nJob == JOB_ELEMENTOR )+ P8 d# k `. d" c1 k7 }& c
nPoint += 390;, y a! M/ G/ M. I& x' c
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% ^6 k* P5 E0 M' f
nPoint += 120;
: r& r4 V4 `2 f: b4 ^; N( ` else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )5 C( z2 L. U9 P4 H
nPoint += 150;
J) v9 P. s* c2 \ else if( nJob == JOB_FLORIST_HERO )
1 o4 }! G0 N6 ^0 D& w+ O: w# s nPoint += 160;
; A3 f1 z1 w6 w: [/ o* i+ [- } else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" J9 v' [; @7 F: y* r6 } nPoint += 180;/ c R% i( @7 L' q' @
else if( nJob == JOB_ELEMENTORLORD_HERO ). w* r- M" K/ N V& k
nPoint += 390;
5 c' q& }" X+ w$ n/ I3 n- _2 j/ _1 a( {' s, M( g* O1 X
AddSkillPoint( nPoint );
. f4 t" _4 U, S `- B8 ?, R m_nLevel = nLevel;
9 Z+ k% ~4 q$ l" n+ v6 b+ M4 j
; o8 ~/ B, ~9 {8 W! t! ]$ h+ U SetJobLevel( nLevel, nJob );2 k9 i, a1 z: \, E+ M
m_nDeathLevel = nLevel;( J) L. N$ ~3 c4 W. o: C5 N7 Q0 B5 N
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 A8 v$ N$ Y6 i; k if(IsMaster())2 _' ~# C( o* R
{
% s$ B/ H6 M* N" r, E9 { int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
( [3 X( ?" n9 o0 f8 g! K4 r if( nLevel > 59 && nLevel < 72 )9 M! @( y4 h) {- G1 @& K5 ?
dwTmpSkLevel = 1;: I4 O' b5 l0 S X4 n
else if( nLevel > 71 && nLevel < 84 )
0 D% t9 j" b8 }! _( i6 _# ^ dwTmpSkLevel = 2;( |5 Q9 `: {' k0 E+ k# x
else if( nLevel > 83 && nLevel < 96 )
- T; o% p, c, w5 i dwTmpSkLevel = 3;6 l6 Z9 V, H* c5 j+ F/ L0 E9 q
else if( nLevel > 95 && nLevel < 108 )
# t b- i) p ~; X* T dwTmpSkLevel = 4;
& M2 r, I! g5 z; z9 V else if( nLevel > 107 && nLevel < 120 ) j& C" g6 M5 L% S6 k7 \" B1 c# U
dwTmpSkLevel = 5;
) ~9 F& B. B }, }8 s! ?8 p for( int i = 0; i < MAX_SKILL_JOB; i++ ) / t4 k* y0 W# n' k2 E Y
{
$ U/ |! O/ Q5 i6 Q, g! T2 i, R \ LPSKILL lpSkill = &(m_aJobSkill);7 @4 \6 `2 i( Z8 }7 |4 C
if( lpSkill && lpSkill->dwSkill != NULL_ID )% p& A3 X4 h" C% |% c/ u/ R; o
{
6 ?, V4 D* l/ q, d4 v ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # U" a. m; b7 A" k! }
if( pSkillProp == NULL )' l1 F+ o& J1 c$ i
continue;% Z& K8 w3 C' x+ _ g0 _5 p$ |, X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 _+ J E1 J" O0 ~3 ]" b: L1 E
continue;
, x6 Q4 f% S' t lpSkill->dwLevel = dwTmpSkLevel;9 Y; @& e( [8 ]+ ~6 G x" r
}
0 j6 [( P3 j1 i0 [' J5 R }
% Q8 k6 E1 K/ W: _! ^! t. y( ~ } D' q) H5 a3 p7 R1 Y. y. `
else if(IsHero())
; W) T: H- l% {6 F2 n0 ~, i& E2 o! Q {" Z d U1 g7 E2 i, l+ q! h
for( int i = 0; i < MAX_SKILL_JOB; i++ ) - h5 r E4 V7 u+ E! f1 {1 b
{ # Q7 q5 I! l9 v" J
LPSKILL lpSkill = &(m_aJobSkill);
+ N1 r, U' t# e9 k. F9 x9 H if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ O- K4 {) v3 ~/ O {/ p- r' _) p* ]1 o/ F- R, o
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " l4 S) e f( L* J# |+ A5 B0 l
if( pSkillProp == NULL )' v- x* i* O( j/ P3 q2 X
continue;# s# k h# O6 ^8 G
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)* H0 k0 u& }8 u; J" }" C
continue;
! Z. z6 S5 n5 {6 j lpSkill->dwLevel = 5;
& B' g! i! B8 l3 O; w. V$ m }
1 Q; ` R, [% v7 v" {4 I7 d }+ V2 m1 C1 m l& @
}- k3 C: B& T# [7 b/ g# w
else if(IsLegendHero())
% { ?9 t+ Z* |( I5 [3 R {- [( @, i/ @7 {9 W5 Z% `9 A3 M9 T
for( int i = 0; i < MAX_SKILL_JOB; i++ )
5 O1 i. l7 ?8 n9 V2 }8 ~ {
' a1 C8 N7 a9 f) f" v9 N @$ v9 ` LPSKILL lpSkill = &(m_aJobSkill);
! O. D; `% }/ V; i/ R, X- c if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 J5 b" `/ J4 p3 q { D; |5 {4 V0 Q H* Q; E# H
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ M0 k; Q+ ^6 q6 b& t+ f. ^: l if( pSkillProp == NULL )
" j+ p% I" Z: x" H' d( x continue;
0 ~; a, r7 N) F! q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 [! f/ R9 h7 Y7 }* s+ |5 |
continue;) F( |1 V& x, j% j4 R
lpSkill->dwLevel = 5;/ i; n+ G, r6 N" {, q5 l& R
}, t$ d2 U" B" b
}7 F; @' D6 C; u& j
}/ H: F9 A @9 r9 n! Q8 T7 {% K
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" u p) Z/ }% \, e
if( bGamma )8 H/ D" x a7 d( x6 k" p! y' j
{
9 j% O- v* a/ c1 |/ b7 i1 [9 I m_nExp1 = 0;
* w7 M" b3 }: A5 Y$ G' y }- ], B1 y1 z/ m7 ?, F) P
6 B( y, l5 C" C4 Z- \, b5 n h1 ^
( (CUser*)this )->AddSetChangeJob( nJob );
/ `# E6 P, m& N1 h g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
$ v- W0 x; ]: J- o2 n3 E' r
: V9 K+ f; N) {. G F2 m- `0 T6 b5 @' [2 d4 i& l+ n# m( }' W6 I
#if __VER >= 11 // __SYS_PLAYER_DATA# _" }5 o# |9 F5 Q4 b
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
0 k1 j3 ^8 |- V' a6 \# }#else // __SYS_PLAYER_DATA- u& f! \ n. n2 L+ @$ r& r
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );8 q' |7 I3 {; x5 X
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );6 @9 }4 ` Y3 L* e2 F
if( m_idGuild != 0 )
. b3 H7 ^0 P6 J g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
6 x# N. D8 S- @6 P( h; q! b#endif // __SYS_PLAYER_DATA X; h: n4 F: A$ J1 ^4 ^5 ?) V
SetHitPoint( GetMaxHitPoint() );3 @. V n2 s& g
SetManaPoint( GetMaxManaPoint() );
4 t0 `: X' x1 `: A, y4 b5 G SetFatiguePoint( GetMaxFatiguePoint() );
- V- Q y3 U- i$ [& B: r# {8 L' G* A1 l if( nJob >= 1 && nJob <= 4 )
! ~) l9 \- Q b& x( \! Q) o {* ^2 i. f) s# c8 D B. _* i
m_nStr = m_nSta = m_nDex = m_nInt = 15;
) u4 A, U; M% i( w4 Q m_nRemainGP = 28;) U: V/ g1 K ~1 z& t
}9 K+ E% ]! e4 d$ J; x
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )$ U. p( J3 l# A
{6 o- n1 G. Z, c9 f5 G. C. |
m_nRemainGP = 118;
A9 }$ T9 A6 O! K `2 a S$ C //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;& `1 z1 p2 t9 a0 S
m_nStr = m_nSta = m_nDex = m_nInt = 15;
6 x$ V) A1 c+ C5 N }1 P. }0 X$ ~' {/ `1 W. k. m( ^
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )& B) c' l4 \, T1 u
{
9 B o% E* L/ ]! P CItemElem itemelem;
& E6 W! }& [/ | @- L6 c itemelem.m_nItemNum = 1;: g8 s9 T& r- `# B% e- V- G( ]6 @2 I! I
itemelem.m_bCharged = TRUE;; r- a- f* ^5 k( `
BYTE nID;
. I& u o" k2 Y, E1 {1 A1 D
i6 D' B8 g6 }' z- @2 c if( nJob == JOB_MENTALIST_HERO )
. @4 ?/ S3 K9 L$ V- b( X7 W$ b itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 q$ E3 V/ F1 n7 m
if( nJob == JOB_FORCEMASTER_HERO ); X5 s1 a( g4 B7 K, f% R" j
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
. h& c8 O" n* J6 ^) g3 Z& _; J- @7 ]) v5 B$ Y9 s: c+ s
( ( CUser*)this)->CreateItem( &itemelem, &nID );
0 ?6 h5 w2 ~# X& E) l8 a+ i }9 V2 _, a% D! g2 z2 w4 I
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
: q5 I+ b+ X6 U, U; | y6 x ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
+ V# B% q9 U, y3 @ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
$ o( M5 w. A" n4 z9 x( Y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
* Z- A7 r$ }0 z3 R0 l ( (CUser*)this )->AddTaskBar();*/
) [' r* u6 M0 ^( j5 ^* D- t ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
+ O) W- Y6 ~: U* d, I& {1 d#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
# B, w) G3 ~$ k5 \1 T ((CUser*)this)->CheckHonorStat();: {+ W$ ~: ]1 K) E- R3 ]
((CUser*)this)->AddHonorListAck();6 \! t3 h3 ~4 U
g_UserMng.AddHonorTitleChange( this, m_nHonor);
- k* C* n8 o! Q! N( v; }, j, W#endif // __HONORABLE_TITLE // ′Tà?
( `/ W/ r/ _) {/ d" z7 q4 p }6 o' O4 r2 y( Z* r
#endif // __WORLDSERVER5 ^) S5 f6 _% y) ^9 R5 h% N% S: t
} , K" N& f3 Z2 M# J* Z7 L( }! p7 o; ~
. D; v0 ] P6 ]2 d2 J
然后你进入functextcmd.cpp并添加以下7 Q- l9 u5 Z% c" `# w6 A
9 y" a& s; F( ^! X- [7 v" z4 _! O
代码:$ H9 e! w' v& |2 g; B8 C/ \
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )3 @! W, e% M9 y" M7 H! e
下面插入3 W8 p/ I, q$ q! }6 t+ i+ O$ ~
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 4 n+ l, S; C" u
6 N0 s& ?! B+ ?$ a) c! |# c
然后你去( h* c( o7 p" }
$ N1 B* \% b, C- K6 T! l" s代码:: E8 d* Z$ p" |2 G. {* K- J$ }
代码
, }; L9 S/ B9 R9 HBOOL TextCmd_ClearPropose( CScanner & s )" X3 p) D/ z+ l" ]2 {2 d
{
" Z M" g4 |9 f: u2 |1 ~2 {7 V#ifdef __WORLDSERVER
/ T. Z) x. P4 O/ L: f+ P$ ?" k* Y; w CUser* pUser = (CUser*)s.dwValue;1 @4 w/ k3 ^' L$ f/ U# ^3 ?1 J
g_dpDBClient.SendClearPropose();. E( }: G6 ?* ~
#endif // __WORLDSERVER B* A4 U. V: M( r$ F
return TRUE;" T( G) g% ^" G5 P# U
}0 Y7 V, E; R# W* H2 D$ r& `
下面插入
2 r2 M# |4 b3 ~4 u' a" g, ]BOOL TextCmd_rebirth( CScanner& scanner )4 w/ ^. L( [, D% D7 _# ?$ p( o/ z
{- N- C, x& L; V- @+ J* T
#ifdef __WORLDSERVER3 n7 k9 m( Q' O5 e) \
CUser *pUser;" \8 q# B6 r7 i2 ]9 P8 N
pUser = (CUser*)scanner.dwValue;# x( ~$ `3 h8 ^& k; s' {6 f8 F
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
, e' J0 i. r1 r8 W/ m7 FpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);$ Q% T+ z/ u) o
else
0 l S, Z! W6 s% K% \pUser->AddText("你还未达到重生条件!");
5 u# L0 S; a3 L9 b9 Z; L#endif- V& a! _6 `5 G8 o$ R( [9 l
return TRUE;; }' o9 S% W' s" L& T4 A3 P! \' w
} ! I4 N& x0 ?0 j, l( o" e
! v( w+ |2 [6 f- X) j( r& _" I' f6 f4 ~8 H% p9 d
; [% x, i- i, |9 s6 r% d$ \3 {% H
$ ]& a. q) d7 W* b& ? Q( V" c |
|