|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
( h& j5 S, D2 @0 }- e3 h. G
- ^4 n2 i5 f3 vMover.h8 ?2 m: J; b) W4 h
代码:5 J8 k. R2 w. N/ O- b1 Y
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
+ k- j6 b+ G* j
- B \ [6 F: w2 I下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
8 L* k1 C* D0 V4 |" T& _ ~" C4 ^- r& ]+ S0 T0 ~+ L3 z9 ?
然后你去mover.cpp添加' c3 W6 f% S$ ]7 d6 p
( K% r% t& l" j9 Q0 ~3 Y- L4 r
代码:
# c% h" U$ G$ F+ svoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ w1 w# m5 X4 R{
3 {# }: X6 h4 Q. z: r#ifdef __WORLDSERVER7 D! X! E0 ]/ ]
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
! M$ q' R* Y5 {9 e k" ? MoverProp* pProp = GetProp();" T2 S0 P3 e1 D- G- j
if( pProp )$ p Q: P3 B+ I, g4 V5 t& z
{$ ^7 }. \! ]: B) X# M. T
if( nJob > 0 && nJob < MAX_LEGEND_HERO )6 ]% C( C9 F* {: x
{
2 T; [7 J7 |! ?4 S# M! e AddChangeJob( nJob );
, T7 J4 }' ]+ Q! `& f4 U$ n! {- Z }else{% o0 [8 Y. o* A( F0 [, K
return;5 V, d8 K! ^1 u% t H$ Q
}
9 `7 K% L# I6 [2 I8 C5 ~ int nPoint = 0;; h1 o4 A0 \6 T" b4 Q( o! \
if( m_nJob == JOB_MERCENARY )
0 S0 ]7 g2 d# x! I nPoint += 40;
1 h; _9 @, _1 `( U0 h else if( m_nJob == JOB_ACROBAT )
, S4 l( b3 _ k nPoint += 50;0 }$ Y+ t, x' o( n
else if( m_nJob == JOB_ASSIST )
0 d( C( [4 k! F$ D4 o- L( O2 N nPoint += 60;
2 n& f z3 w1 d: ~3 k else if( m_nJob == JOB_MAGICIAN )
3 k4 Y2 a* v. D* \ nPoint += 90;' o1 ?' V) a8 N) G- ]6 w5 F# M
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )# \ g4 a' L! G9 T# \8 q' ^
nPoint += 120;9 U6 o' [* v1 j. B& c
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
! a' F8 T$ M6 w nPoint += 150;8 \3 X5 ^- I; T! k
else if( m_nJob == JOB_RINGMASTER )
1 T7 [" s8 T" w4 d( {0 ? nPoint += 160;# x" l8 [ U' t5 F/ G
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
: h/ V/ B8 i; d# n- E7 B+ \ nPoint += 180;
2 \6 \4 w! r# e+ N3 B7 h2 s else if( m_nJob == JOB_ELEMENTOR )4 A" {& M1 A1 A; d; t, l
nPoint += 390;
! H; t j' D, ?; f& n, s% d$ E3 X else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% \4 C: X7 z* Y" `7 W6 T
nPoint += 120;1 B9 m: @$ V% d7 n9 S1 K) X& u: W
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )" z& V% S) I8 _9 I1 M
nPoint += 150;
* ? w* C s3 L4 L& n b else if( nJob == JOB_FLORIST_HERO )
: }% O2 U+ \% F& s5 V nPoint += 160;
8 P' ~+ ] R3 Y9 t" J/ k, s else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )! j r- C4 Z8 R4 j! ^1 D* p
nPoint += 180;7 Q0 n" ?6 Y5 f+ K/ j0 s
else if( nJob == JOB_ELEMENTORLORD_HERO )$ D7 M3 F- }7 B8 b
nPoint += 390;
- x' d: s3 {+ b8 w( x; m2 n+ q1 K% }; _5 O! D) y. W
AddSkillPoint( nPoint );
3 H/ z3 M/ s% f+ |& |( H; M m_nLevel = nLevel;
2 e+ _' E7 t3 L# `5 a1 H+ i/ A" s+ T6 A+ ?# l# d
SetJobLevel( nLevel, nJob );' t- @+ m4 p2 e& n
m_nDeathLevel = nLevel;
4 Z: E& h2 |# T+ W" a; Y#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& x% W2 a' J5 z, ]: l( I) t7 @& f
if(IsMaster())
+ ~0 R. G, E5 M% i8 _$ G# g% U {
# }+ H; g. y/ i: F9 K int dwTmpSkLevel = 1;//60, 72, 84, 96, 1083 ]6 m- F l( K
if( nLevel > 59 && nLevel < 72 )
/ c9 k% I6 ?, D# o& k dwTmpSkLevel = 1;
9 x8 S9 ]5 g3 B# Y else if( nLevel > 71 && nLevel < 84 )' G" w3 R X4 ~% C* o: F8 ]
dwTmpSkLevel = 2;
6 Y& C% V4 Z# l1 q' D, u else if( nLevel > 83 && nLevel < 96 )
3 o# S' J, K) R/ v4 v dwTmpSkLevel = 3;
( C0 p* J6 M" u; Y8 @# K# ^) ~3 I else if( nLevel > 95 && nLevel < 108 )3 N* Z( M; |" ?& V! _. N
dwTmpSkLevel = 4;& k. ~' Z2 A& w5 L* `- ~
else if( nLevel > 107 && nLevel < 120 ). p: F8 g" o N% W! [$ K5 W0 k
dwTmpSkLevel = 5;
, \2 I- R- r; k" O for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 Y/ ^" W5 D0 w2 D6 W$ J6 a: T7 G
{
3 ~- P) e+ E5 L0 N+ z: f* a v LPSKILL lpSkill = &(m_aJobSkill);* V0 I) }- \- W- ^( N/ Q$ ^) d
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ X. p1 }+ a% T6 f% N {
# k2 o% D* [, C( g( ~ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% d9 D/ m1 t7 K e: X: Q if( pSkillProp == NULL )' a, Z4 {$ L+ l" L1 x7 {
continue;
0 d# D# S2 x4 E+ _2 \$ n* H9 [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER), X- S. I4 v1 y5 K( k2 m2 g* L
continue;
! H& s; A9 B: B0 h: d lpSkill->dwLevel = dwTmpSkLevel;/ L7 |0 w0 ~. R% y& D
}
5 s# k: N& s; _/ u# Z& w( V }
0 b7 c/ h+ M5 g0 P }
0 p# I* C6 C& L2 i else if(IsHero())
2 ]* C6 w" p2 @ {
7 r0 Z" t' h* j! g for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) K$ |2 w# ]( O
{ & w2 z: \. x2 \$ `; h& t
LPSKILL lpSkill = &(m_aJobSkill);, c) D, N5 {- T* w
if( lpSkill && lpSkill->dwSkill != NULL_ID )
# t H5 [5 ?* D3 H- Y/ R' R7 v {
+ l' n4 t! X( q. [ S ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 B8 W2 K$ u, w) ]% P# t if( pSkillProp == NULL )) o9 B' O8 g) n, K* W- r
continue;+ I3 I( w9 T+ T$ J6 V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 g4 W7 a2 Y5 W' e) j& P# N
continue;" j$ T( n. W6 R# T5 M
lpSkill->dwLevel = 5;
" D/ q; H- J5 A6 Q# ? }
! M- J j: Z: l7 \ }; d+ j. [$ t. y1 G1 L K* @- c$ |
}* X C. j- d+ z9 T
else if(IsLegendHero())0 e; l- y" J; W7 Z, b8 o. a
{7 Q' X0 L6 `& d S: y$ P* {8 \% r
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 k B; j R4 S2 \" p4 u
{ {; j c1 d' h; S9 i! O0 k( o
LPSKILL lpSkill = &(m_aJobSkill);5 T) E& `) @! ^& H
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ n4 i. w8 j) |
{
( n3 x" n5 g( m ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 R- t- z7 B' s if( pSkillProp == NULL )
( O1 q( N6 A8 i continue;: K. y6 @5 ^/ x# \9 q6 ]: q
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 T0 Y+ z1 A9 R5 _
continue;
& u$ X5 ?4 I4 K2 D2 D lpSkill->dwLevel = 5;3 |$ Q8 o8 a( l6 O- E6 c- K$ K
}
- p9 u6 _0 S) g! K% ] }' t) H/ Y' r9 `/ r
}
- ^" q# g3 @9 N/ R#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
5 i$ B$ j, q L' e( S if( bGamma )
: T6 \1 J2 S* U {7 B0 e5 t! v- a/ [ k: c+ {! u
m_nExp1 = 0;
. T* l2 x |: S; B- ]# S }
! L9 A' Q3 J- {9 O* ]
- j# q0 N1 e) z, F; w ( (CUser*)this )->AddSetChangeJob( nJob );) M: m, w$ b, F. v( r
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );* I6 f! T5 h, ]7 l$ X2 g/ | Z
& E" v7 W9 x$ r H/ w9 O9 ~; N. Q9 Y# t+ B- [! A7 q& v
#if __VER >= 11 // __SYS_PLAYER_DATA
5 o" Z. p8 P( I7 }* M! ` U g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
" M. Z+ W, q/ q& K, q#else // __SYS_PLAYER_DATA
3 _3 O2 W: D0 e/ f6 i g_DPCoreClient.SendPartyMemberJob( (CUser*)this );9 U% n. X: l0 P
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
9 A- `1 i# a5 A, C' d if( m_idGuild != 0 )
6 ]$ k+ g, O/ L7 M2 Q/ v g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );5 b3 n5 T* |$ \% ~* f
#endif // __SYS_PLAYER_DATA" @; Y6 ]+ G' C$ m: I' W5 |
SetHitPoint( GetMaxHitPoint() );+ ~6 X* k" T1 o- v& T1 e, u
SetManaPoint( GetMaxManaPoint() );
1 `" [' q: I1 _& G- Y- h2 Q SetFatiguePoint( GetMaxFatiguePoint() );
2 {7 ^; `; D2 s1 p/ t! f if( nJob >= 1 && nJob <= 4 )
2 N: w- \" X! R {
- a8 h, O& W/ p6 o m_nStr = m_nSta = m_nDex = m_nInt = 15;
0 y' ^3 T, q2 ~7 Z: |3 ~( T m_nRemainGP = 28;
4 g6 d0 T7 h8 N" \- p }
* R/ i8 R$ [* ]+ N8 I' S; N if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& Q% E- F) j2 O5 O2 m, v
{8 h3 r9 K9 S7 h l
m_nRemainGP = 118;
+ ^& K+ D# K! v) r% W( z //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;2 \) c! B& o/ r" a, ^" |% t
m_nStr = m_nSta = m_nDex = m_nInt = 15;
/ W' `! @" W% r0 f6 t( R: [ }
7 B8 B! {/ ?- x' k8 E if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )9 n+ g3 \9 Y0 G: {
{ Q# q% f1 m4 c; w; ?$ [/ L
CItemElem itemelem;
6 W8 |2 j+ t2 n- k- q, R: P itemelem.m_nItemNum = 1;
/ Q+ X& }; r# ]3 f l- e9 j( o itemelem.m_bCharged = TRUE;( ^) l- T L; F0 T% \2 O7 N
BYTE nID;/ L W' i4 f# R: I, K; C* e
+ Q/ V2 C$ s7 m; Q$ { Z& e x if( nJob == JOB_MENTALIST_HERO )
, ~- F5 x% |" j/ I' i itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
$ p* u v. v2 I& j9 k1 j l if( nJob == JOB_FORCEMASTER_HERO )) P& x3 u) U7 O! P: p8 l
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
" Q5 a: ?6 V8 Z/ \* X8 e1 S# I; r# R, V- d' g9 t" k: s
( ( CUser*)this)->CreateItem( &itemelem, &nID );
0 h1 l; l, |# L* E1 { }
% _- X0 `4 M) h8 b g_UserMng.AddSetLevel( this, (WORD)m_nLevel );! }7 _' h6 Z* @
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
& U( ~# u" `& B! ~6 f ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
3 C3 g( ]) m2 K6 [ /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
+ y% E/ O" r+ ] ( (CUser*)this )->AddTaskBar();*/
4 s! J! }0 W( _' a* L ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
' B0 v( ^9 k. j! A7 Z#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
3 n0 H, ]7 A5 o# o; e- P$ I ((CUser*)this)->CheckHonorStat();+ z0 d5 n7 [7 [! U8 e5 g
((CUser*)this)->AddHonorListAck();
- H& v/ V! P0 `, e g_UserMng.AddHonorTitleChange( this, m_nHonor);
. m8 { Y/ \2 b5 [, P* ]$ ^5 s- i#endif // __HONORABLE_TITLE // ′Tà?" q: e9 T! h# m# h1 }! y! r% a
}& t; b5 a/ b1 d$ E# X! ]
#endif // __WORLDSERVER- d4 b! A I& k$ u% i2 n+ |
} : L3 ?% [+ O* w+ G
7 j6 Q$ u7 C ^/ j( m5 T3 q1 ]然后你进入functextcmd.cpp并添加以下
2 ~/ W" a& i: s2 L. Y7 T
2 }8 [0 `: h% A: i5 R! u/ T# X+ j代码:4 y) w v* Y4 D1 {
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )* G! W2 [3 \, @+ k$ G. N! x
下面插入
+ v a% j! E: _6 k# m ION_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
* O; \) R# F" X
% F( `: A1 Q; _1 [然后你去
# k; S8 G6 n* d( |- |
) D9 Q4 c3 H* M5 @/ j; P& j代码:8 ~/ @" E J& s
代码
- K1 }5 Z$ H( ?BOOL TextCmd_ClearPropose( CScanner & s )* u. p. u B i2 V- ~6 R
{
- } x7 S2 r% u/ w; b" ^' e6 U#ifdef __WORLDSERVER
! d5 e+ c0 H" H( p$ \ CUser* pUser = (CUser*)s.dwValue;: W8 v3 L0 I" f; U
g_dpDBClient.SendClearPropose();( W$ v) ]% z' Z" ]% d. C4 N
#endif // __WORLDSERVER2 `( b( E, A0 C8 f- r( ]; J
return TRUE;2 h, v; o0 D& ~7 k3 E
}6 p& x4 ?* {7 Z/ y+ W) x% o* v( L
下面插入1 h4 U1 L5 N2 f' W' ^2 }( Y
BOOL TextCmd_rebirth( CScanner& scanner )
, s' ]! t; ?; F7 ?{! G- s, I( P6 q' U( v1 g
#ifdef __WORLDSERVER5 b: ?% }( `& Z- J. c
CUser *pUser;
C8 U D$ @/ T" h1 u' b* m" wpUser = (CUser*)scanner.dwValue;
8 R, A$ Z$ {2 Z" @: N2 [& A1 `if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
2 J3 ?& W, ^9 V2 H* FpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' E1 |1 A! i4 h( E# Zelse
3 `& D |5 v, n' p* G( ]pUser->AddText("你还未达到重生条件!");
9 h, ]# M. `* n# X; m#endif
6 y: w4 s; `6 y3 b$ |- lreturn TRUE;. q. A' X/ k6 g3 H1 w1 v$ i
} 8 R M8 I. W7 T
S/ B+ K8 |3 R# z, v7 \9 G! j* X$ Z c8 ^7 c3 n, Q7 @; w8 P( `
6 A8 W& X: e& k0 b; u1 j0 e d" R; ?
|
|