|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 D- ]/ f8 Z$ T$ j
: C4 L8 e. W1 V, ~Mover.h
* n# b' w D& F: ]% B6 y/ c代码:
6 |6 K- T) H6 [5 ]( Y4 D找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü; v/ n, S6 U- r; U
# C* p v4 a# k4 [6 V% \" [下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
9 E* f# N2 J8 e/ n+ p5 t( c; N; C' s
然后你去mover.cpp添加
# [/ k5 N3 I- ^" \1 [
9 Q7 b5 w, t" G# P代码:7 L( G' l7 b" i" _& c2 M, V
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ g% C, m ?& {5 M, ]- f{+ J/ f% R5 l/ J
#ifdef __WORLDSERVER+ |. c. G. u1 n1 z3 ~9 ?
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó2 X$ W, d# {7 k. A" D, x
MoverProp* pProp = GetProp();
* K; [/ E# F( f if( pProp )- ^& ?; s6 U' x" ~) I
{
( S) B- n9 \ O* E5 g1 v if( nJob > 0 && nJob < MAX_LEGEND_HERO )
/ ~0 { H7 W3 l3 V6 |* [: s {
9 G3 ?, S1 \' l) u: r g' a: b u# N AddChangeJob( nJob );
) i7 n S# i; [. x }else{- }' {: Z9 q0 g' f0 A7 _
return;: Y; X% j; J" |. O ]* ]. z
}
) p9 ~& E/ t2 `2 x4 G- ?* \* ` int nPoint = 0;" R. d- w, F3 C7 j& N
if( m_nJob == JOB_MERCENARY )8 v! b2 t: U4 j8 c* F
nPoint += 40;0 x' N( ~9 w" m+ Y" t
else if( m_nJob == JOB_ACROBAT )
; f6 ?- }1 f D9 _. P nPoint += 50;
( \7 |- _: w( [9 \4 p4 ^& G1 [8 H else if( m_nJob == JOB_ASSIST )
& c. \. w4 m: O0 l nPoint += 60;
. v9 _8 ^- N) d4 j) W2 T& s% Y else if( m_nJob == JOB_MAGICIAN ); ^% A0 \/ r7 Z: `: v
nPoint += 90;
0 i) _) K+ @& M else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )! L9 K( [- M; }" p( M- J) Y
nPoint += 120;
3 N; c4 K5 T) ] N1 E k else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
; }- D+ `9 b) H* p3 O' y nPoint += 150;
$ V7 a2 e2 u8 I! x! Y else if( m_nJob == JOB_RINGMASTER )- h* l8 f+ {/ R# q1 J! |4 I9 X
nPoint += 160; r/ r) R2 n0 |" l
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 _3 q- }# d+ q7 u. L
nPoint += 180;
/ i! z+ C0 `5 @4 b( ?: P) W- | else if( m_nJob == JOB_ELEMENTOR )8 p$ w. u" p% h& p+ w6 K
nPoint += 390;
7 u& i) D5 U1 d4 H else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
' J; R$ t. j6 R8 w* c/ ~ p nPoint += 120;( R% E6 M" f, u
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
; ]* D" R' r* J5 }4 x) } nPoint += 150;' C* Z* `4 V& s$ X+ Q
else if( nJob == JOB_FLORIST_HERO ), l- Z. q) u& ?1 c. y" z8 ~1 l
nPoint += 160;
; w& i' \' M4 y, e else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
8 L- s. j$ ~0 G8 J5 s nPoint += 180;4 W) k' y( ]) z; Q/ ?4 _5 ]
else if( nJob == JOB_ELEMENTORLORD_HERO )
" ?/ K: A5 E# w( U- I3 G nPoint += 390;0 m+ D# D* u$ m3 Z2 ?
' P" K# P' `) k: q' L% ~) l- {
AddSkillPoint( nPoint );
4 x3 f% Q0 }) f m_nLevel = nLevel;
& w9 ?: d3 t' Y, [5 k0 ~! Q8 f4 n; q
SetJobLevel( nLevel, nJob ); D9 a. j, A% t9 } a9 D. q+ @
m_nDeathLevel = nLevel;
8 \; V. S% g# D; X* f#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans5 c5 z5 s9 f) r$ l: m
if(IsMaster())
* X { O1 V2 M8 I {
+ H6 P7 ?% S" T1 x3 } int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
) `- E4 r% B* a* E6 {1 S* s' V9 J1 b if( nLevel > 59 && nLevel < 72 )$ p7 P% `0 S; O2 Z
dwTmpSkLevel = 1;% b0 ?, ?& p' w, i r2 o1 H4 L4 G8 C5 j
else if( nLevel > 71 && nLevel < 84 )" I- l9 T1 r" T* J: Q
dwTmpSkLevel = 2;
0 @# Q7 [2 X' L7 f# {. K) i else if( nLevel > 83 && nLevel < 96 )" K& b9 t- I/ M3 c
dwTmpSkLevel = 3;+ V* `) s6 e9 C& }/ Z' m
else if( nLevel > 95 && nLevel < 108 )
. G8 z- W; o1 j4 D8 Z; L4 C j dwTmpSkLevel = 4;
" m( Q" d5 t8 D" h% z else if( nLevel > 107 && nLevel < 120 )+ F/ r2 R2 z9 A, [
dwTmpSkLevel = 5;$ W: k' u5 c' m9 x" r }6 F
for( int i = 0; i < MAX_SKILL_JOB; i++ )
" r1 L3 |4 _) W {
r' ^5 b) Z g6 Q: h. [+ n LPSKILL lpSkill = &(m_aJobSkill);/ P6 ]; O3 I# h8 S- T+ X/ z( K$ ~, Q
if( lpSkill && lpSkill->dwSkill != NULL_ID )
: C3 V @3 [" E* Z5 } {5 o8 z9 C* @0 }0 D. a3 \
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
b# C7 K; m3 H if( pSkillProp == NULL )
1 e& o0 f3 h% y2 q continue;$ m) @9 c$ p+ C; k' n( z# r, W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 w2 O2 W* I* F( L( ? continue;
5 m5 B3 V _6 ?* k S% ?1 [ lpSkill->dwLevel = dwTmpSkLevel;
6 Z& ?. e; n# J6 Z% a4 t4 n* F }- n" ^* S2 J6 }8 ]
}
$ q* X2 s( o& w! N; K }# F9 s1 a/ o* W& w
else if(IsHero())
% f( Y8 e% N/ _% |! G: r9 R; m0 k {
8 T P2 Z; ^- K; C Q9 l/ G$ i for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( z6 S+ m7 `6 R) A0 K
{
. j# ?7 Q. w' l. \, a) y- k9 y LPSKILL lpSkill = &(m_aJobSkill);
, g" B& h# f( k- }2 L7 ^ if( lpSkill && lpSkill->dwSkill != NULL_ID )" x7 x$ x9 i; q4 D; U4 l' \7 X
{6 L( z4 x/ O& O, a" @! ?: {+ N8 B- E4 {
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " v4 z5 u1 g, m4 B0 \2 w l
if( pSkillProp == NULL )
: p) G$ H5 U; X/ s# C3 X& P8 V continue;
5 _9 R: V; k( i! Y2 y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# o2 o2 E5 R6 D" O0 Q+ Q continue;
" z9 o- u( e$ v. a; t N% C lpSkill->dwLevel = 5;
# Q+ q7 W6 K9 e' K1 b! ] }4 \! q# w7 ]# @1 E
}
]$ c" ^! A( F2 B0 l- H }
9 H, W) Q D8 v else if(IsLegendHero())
& Z; X6 T: L5 m, G. f {
4 ?/ t% ?/ ~ ~( t* H$ U( ] for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' ^( S+ l6 a. ]$ O# [; f
{
" C' u1 L: @" _ LPSKILL lpSkill = &(m_aJobSkill);; p* h/ w. X8 U
if( lpSkill && lpSkill->dwSkill != NULL_ID ). U c7 C: w7 {
{# u& X. h% y" P; y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 g9 J7 S& n# ~$ A/ \ if( pSkillProp == NULL )5 V0 c# t9 X/ f4 y- D2 v
continue;
$ ^* X( |" @8 s" _0 `' l if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 u6 m' F1 S# t5 c7 Z6 E
continue;( I0 \- j w( d% Y* Q/ R
lpSkill->dwLevel = 5;
7 ]+ N3 S9 i; `; p, o3 ?7 w }
$ S& S) G1 t+ x U _4 e. u/ I }
* S2 S% T) e8 t }+ i n1 ^! L% m/ H6 h5 ?/ s( }
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; D! V7 R1 p9 X8 D0 t
if( bGamma )
; \, f6 U9 D& P9 {' a6 i. b {! p2 `) m* x1 ~5 s' b) ]
m_nExp1 = 0;
, k* T0 W7 L6 K }# d5 L4 U" v9 F/ A* e# E5 {
+ w; L% W+ R/ b) G6 G$ [
( (CUser*)this )->AddSetChangeJob( nJob );% ^, k+ `& r: Z: I/ w2 j& L
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
9 Q8 v$ H' M+ x$ J; L$ b5 n, r/ I2 r+ s6 J+ y
2 I& Z8 f6 G; Y7 y, H1 s# k#if __VER >= 11 // __SYS_PLAYER_DATA
6 @" o! M0 a) R; ]- l& x2 S& r g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
5 r; b. n, g% {, K6 L#else // __SYS_PLAYER_DATA
5 H6 T' q* `0 l- ?# a' r g_DPCoreClient.SendPartyMemberJob( (CUser*)this );; ?3 o% v1 K! r7 T0 Q
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );3 ?9 h7 o0 t& j8 z
if( m_idGuild != 0 )
: p) L# H5 I: E; a0 g: `+ Y! Q g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
$ {' B; J3 Y" E: ~#endif // __SYS_PLAYER_DATA9 x* @( p: k) R8 b' {
SetHitPoint( GetMaxHitPoint() );, \, F4 }% z+ y
SetManaPoint( GetMaxManaPoint() );, \, ~( {5 q1 F9 `& q9 p: Q0 j6 @ @
SetFatiguePoint( GetMaxFatiguePoint() );
5 X X( B1 o' | if( nJob >= 1 && nJob <= 4 )2 z7 N% A! E) D, B5 H9 A
{
/ R# |: v: b d! F m_nStr = m_nSta = m_nDex = m_nInt = 15;
9 K4 u$ I# q6 O1 ~; _ m_nRemainGP = 28;# I4 \6 X W1 }9 H
}5 Z1 H. e+ y2 k1 y. x1 r! C
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )0 D% B( v& T l F+ h! V
{
. \3 G5 ~+ p- s) Q/ q m_nRemainGP = 118; ~5 `' ?3 \, x0 c( p8 I
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;, q2 f, H" R/ _1 f+ P5 z2 c E
m_nStr = m_nSta = m_nDex = m_nInt = 15;2 [7 Q- u8 f. T: q" r) W& O
}
/ D; E& T9 a( v0 c. O( I5 e# K# ]: c if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
M3 Q F- G+ _- _) M. Z {( A( e, k+ K0 w
CItemElem itemelem;
1 w _* }2 R8 n/ K% c itemelem.m_nItemNum = 1;
6 I6 _& g# m x- y itemelem.m_bCharged = TRUE;
) ~9 R+ Z# `$ u f3 M$ w BYTE nID;# i8 v) U5 A' }' g/ B l9 t
) ~ I: Y7 p# j9 U1 Z# s: x* M9 t
if( nJob == JOB_MENTALIST_HERO )- j" H5 f* P5 D5 f1 I! ]
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;- ^) P; \4 l4 \2 @3 t
if( nJob == JOB_FORCEMASTER_HERO )
3 F5 T6 E$ U0 }9 i/ i itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% l, O: X' l$ S# R* {8 D! t r: J
) J3 F. a' M, s
( ( CUser*)this)->CreateItem( &itemelem, &nID ); ~* f! O5 T8 S/ F
}
9 Q2 D7 P, E. v9 V g_UserMng.AddSetLevel( this, (WORD)m_nLevel );1 a* V: P) U; `
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );8 Y2 O, V' f7 d9 K6 ?6 J
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& J6 c& ^5 Z! |6 A( h /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );& \. C5 `" V' D; _7 d
( (CUser*)this )->AddTaskBar();*/
8 _, t4 ?) J! n1 j u1 b% H J ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );* Z" ?0 g: l- M5 x
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?6 s. w1 T. A9 [3 N$ u
((CUser*)this)->CheckHonorStat();5 c) s4 {" j" k6 t5 y6 G/ \& P/ B
((CUser*)this)->AddHonorListAck();3 y! s, n1 S2 J. W J
g_UserMng.AddHonorTitleChange( this, m_nHonor);
, h8 B' U- v$ U* c; j! O7 _#endif // __HONORABLE_TITLE // ′Tà?# N2 ~9 z/ \0 e, V) w3 c
}3 V- z8 G& O! X2 [5 o
#endif // __WORLDSERVER
4 {! g) ?( m' {3 L3 |} O# u3 D$ w0 L4 I' N8 q
$ l) s4 Z( v( V+ Q/ l; g& |. m6 O5 H然后你进入functextcmd.cpp并添加以下
2 F) [9 ]/ L+ ~$ N$ F
$ S4 U2 h8 }% ?- F. r" _9 _0 U代码:4 {$ g% Z) V+ t/ t: R, |+ I
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )4 }. N ^4 j1 }' y( Y
下面插入0 r, }: j2 W" N. N
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
c8 V& Z. h5 K* C. `
) H, w: K; ]- b然后你去$ ~3 R1 U" {7 v g3 h) V
5 C7 o3 G- i& Q% t. r
代码:( u0 [7 c% T. Q$ E
代码
8 M: l {- \8 k5 W, l) H; MBOOL TextCmd_ClearPropose( CScanner & s )/ v4 f2 h7 N/ A1 l
{6 K+ F; r- E5 v
#ifdef __WORLDSERVER
1 l1 W) N9 ^ t- U6 [* } CUser* pUser = (CUser*)s.dwValue;) u. d4 |4 Z0 E* w4 v
g_dpDBClient.SendClearPropose();
/ o! C8 {: ~' F) ~' Z# b c; \#endif // __WORLDSERVER
3 @# C% ^2 h* ~& Z return TRUE;% x! _5 c3 T5 I4 Z$ I
}/ n5 R! K' [7 f' I8 [ u
下面插入6 ~$ u* y2 Y" w' r* X
BOOL TextCmd_rebirth( CScanner& scanner )" D8 d3 h8 {9 Y, C( ^
{3 D! K* D2 r ]3 U
#ifdef __WORLDSERVER
7 r/ u0 x2 `3 ^8 {% RCUser *pUser;
- n6 h' Z8 F* \$ P' L- P+ DpUser = (CUser*)scanner.dwValue;- c! P& v% o& |* J, s3 ^
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
5 m* F2 ^2 v3 \pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
) j9 N- Y6 e9 H1 ]else2 Q( ^5 h) g& q4 V1 P
pUser->AddText("你还未达到重生条件!");1 @0 }- D- |; j7 E* j
#endif5 U3 j: i" z2 Q2 S+ N" J
return TRUE;( q; i& \- y1 p5 e
}
N# x& T; z5 R. ^( u- D$ e& T
1 U/ w5 S2 h8 S& |1 w8 c3 Z2 Y8 y$ ~- o& O/ t! _4 U# O: [ ~+ P
) O1 \9 O( I" x9 a! g* k7 d$ T& E |
|