|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel+ T) Z3 j' Z7 m7 k3 x6 M
$ _2 V. k" F1 r8 n8 @3 p
Mover.h. K; i8 ?' Q1 E* Y( V) X, s, y' i
代码:
" U+ W6 w1 X2 x* j# F% G: H找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
( `6 q. u8 F' R# J
. b) z v0 u& ~# K下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
( c# H7 {% ^" R
: ~' ~) s( R, D9 D1 h! [2 L. W然后你去mover.cpp添加+ b/ _. A! E! |8 ?9 ~' `! X) w7 Y
/ j" y+ \) g3 a9 r8 x代码:
0 F% l% T! h! d) c2 uvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
9 B8 {1 w& q H4 K5 Y{% W1 N# t" ^: F2 _' w- S4 K
#ifdef __WORLDSERVER1 v' i6 L/ w" b5 \1 Z5 w
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó3 H% R4 S5 X! f4 O+ I$ s( W
MoverProp* pProp = GetProp();
- g9 f; n% u3 C) D! M) V ^! { if( pProp )2 I- [$ w+ m( L* {4 V
{' `, K: I' p! \
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
# l2 X* W+ p8 g {0 X% }' w" }7 P9 v* n1 D5 Y
AddChangeJob( nJob );
) W3 m- w9 C9 N( s( b! R' a7 }# o$ N" C }else{: z1 }% d0 T: @* q
return;( {! ?6 a7 {* g4 ^( v% l4 F% W
}+ W# }6 r; f' L5 V" k
int nPoint = 0;
V7 \' U% f$ G9 g7 ]4 g; y if( m_nJob == JOB_MERCENARY )
5 q9 \2 ?( K: P/ f% b7 I# H nPoint += 40;
% \( v) e0 P! U else if( m_nJob == JOB_ACROBAT )
5 o$ |/ s' f1 D* G nPoint += 50;( |! v4 m' w' L5 L( p4 e" w: Y# M8 v- N
else if( m_nJob == JOB_ASSIST )" w/ p1 ^) w6 S3 c: C
nPoint += 60;
8 P% B+ N6 _1 N N V# L! Z+ f else if( m_nJob == JOB_MAGICIAN )% ^& r1 H% n- C! N
nPoint += 90;
& t5 q4 Y* n/ m. |' m8 F; O else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )- q/ D/ j) ], S0 k
nPoint += 120;6 F( R# Z. ~- u8 O) v
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
# C. F$ R/ I9 k/ M" s; G7 T# U) B nPoint += 150;
. `5 ]/ e; D3 Y) E5 I* n. n else if( m_nJob == JOB_RINGMASTER ). F/ H* t" k$ v' D" t* c
nPoint += 160;6 U/ ] s: L9 J9 i
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )8 |' Z, f4 f" ?- b
nPoint += 180;. V/ ]% Z; r- ^. m- o$ V
else if( m_nJob == JOB_ELEMENTOR )
1 h, y* H4 F# f0 l5 W U nPoint += 390;2 ^0 j# l: T" c' `. v( Z
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )5 w7 q5 J7 A* Y3 |# v
nPoint += 120;
) U0 a. ~ G5 S3 V1 n else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
, Z9 I5 [( [( C1 D: e0 ` T nPoint += 150; X; d7 k5 E! e4 Y6 @* Q0 Z
else if( nJob == JOB_FLORIST_HERO )
3 R4 X1 N+ I$ V( `( X nPoint += 160;1 \, t6 r \+ q- u2 |. L/ h
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )( l6 W& _( t l
nPoint += 180;1 z1 E6 x B+ x1 m* t2 ]& N: F* M3 i
else if( nJob == JOB_ELEMENTORLORD_HERO )
: D$ ^+ }+ v6 H; E, M5 t nPoint += 390;# k& M' t; D" }( S$ M0 a
. b3 E, I2 C- |1 o9 }' q; u
AddSkillPoint( nPoint );5 L8 z; h# I3 ?! A$ P" K0 p" {
m_nLevel = nLevel;, G$ r0 ~4 \, z& B
' ~- m- w# q. |* A4 R5 j' |, k$ C SetJobLevel( nLevel, nJob );. a7 F* W! y% `8 q7 u! z
m_nDeathLevel = nLevel;
7 @8 u: v" ^& ~5 ]1 l8 D# E9 ]2 W#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans5 i% k% b# Y6 t4 X
if(IsMaster())& \( {8 X9 t/ J0 B
{
5 _" D6 \* m, b) P int dwTmpSkLevel = 1;//60, 72, 84, 96, 108( U: x0 u1 G, B7 x1 E5 Q2 V% }
if( nLevel > 59 && nLevel < 72 )
$ v9 H8 z" h8 V% L8 M( X, ?) F dwTmpSkLevel = 1;
8 I2 T: ]( R6 d2 q6 v else if( nLevel > 71 && nLevel < 84 )
" a1 k8 ?! P" m/ n- f! G$ w dwTmpSkLevel = 2;
# g9 b8 Y4 V' M& c& d1 V! e$ T& }, \ else if( nLevel > 83 && nLevel < 96 )6 h+ L9 x$ O/ e# A+ Y; }
dwTmpSkLevel = 3;+ N( z: \+ h# B& }3 @4 O2 c, P7 \
else if( nLevel > 95 && nLevel < 108 )
9 \' Z4 o6 K: s2 V dwTmpSkLevel = 4;
% X3 g% G& l$ `# D else if( nLevel > 107 && nLevel < 120 )0 c; y$ K, g" ^& q
dwTmpSkLevel = 5;
) _, s$ G- U& X0 e: V) G1 y8 X for( int i = 0; i < MAX_SKILL_JOB; i++ ) % W/ i9 h: Z' M) ~: T
{
! Y9 T! B6 E- z7 f! o; a LPSKILL lpSkill = &(m_aJobSkill);
9 E3 ?4 `/ H. r if( lpSkill && lpSkill->dwSkill != NULL_ID )9 s5 y2 k6 x1 Q/ H8 E; }, i5 R
{$ }2 p: r9 m% {% V, D2 g# L
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 M8 x- G$ J1 c
if( pSkillProp == NULL )
9 n5 ]8 j8 F# F3 O continue;
9 i; N, C" L* \ G5 X1 v9 { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 i7 | Z2 B% d% } k2 r) C! N continue;5 d7 G& h( V: s3 g) j. N
lpSkill->dwLevel = dwTmpSkLevel;5 B; F) \4 A. Z
}0 y9 E! p( I! W2 h
}
5 k8 p6 y B& P9 T }
# ^" ^; g3 c! \6 L9 @0 Y else if(IsHero())$ n) P L. @/ q* Z
{6 h8 L' G7 L0 A( @
for( int i = 0; i < MAX_SKILL_JOB; i++ )
5 w* q) R+ d1 s4 B# m {
7 x& }* z7 a- i LPSKILL lpSkill = &(m_aJobSkill);
! T* ^1 z) ^) ~% L, W3 _ if( lpSkill && lpSkill->dwSkill != NULL_ID )
& |. M$ X( d5 q {3 U$ D5 ?/ g2 |2 O" Q# D3 ^$ k. h
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; ^5 q+ B" \( v& k3 z* o9 p. q7 d& q. E if( pSkillProp == NULL )
" v4 f2 ^/ t7 V( t" b# C4 G8 ~$ ~ continue;
! k7 W. Q! U- A3 i( u/ G6 @0 Y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ n. q- D7 Z0 U. W3 m! n continue;/ _7 F5 Z4 p m* z' S# O4 P; P0 m7 L4 [
lpSkill->dwLevel = 5;5 Y2 B- }9 [* U. h/ @2 ?
}
- \; D* v& q( A- T, q& r; d }
) x" a2 L& l% \& T% Y [ }
+ C1 q" i- a8 ?4 Z; e, } else if(IsLegendHero())/ I, Z8 |$ ]7 J k% O8 ]( H( t0 E/ i
{
3 I" @8 E/ |* P& p4 R& m# H for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 T% ^/ q2 v* q) `* Y4 g, M: S0 d { 8 p6 g c% f8 |0 `# S9 g
LPSKILL lpSkill = &(m_aJobSkill);
0 W1 g! M5 k1 t) c3 M if( lpSkill && lpSkill->dwSkill != NULL_ID ) c) i% W, X2 \; }) U1 ]& {: N {6 x
{
; c4 u* c. X! @0 ^; U9 x8 m( k ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 M- t# E9 f- X- Z# a$ u if( pSkillProp == NULL )0 R& C5 |" L0 t! x
continue;5 e; c/ [1 R* h- T1 ?( n1 H
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) Z5 `, W. ~: H& }# j2 S
continue;
; ~4 u2 Z: ?6 W) ^. H$ h# I) b lpSkill->dwLevel = 5;' U! r3 I R; m* f5 }2 [% `6 H' W
}( h0 w: x. e; [ C9 D9 d; l
}
2 y5 L7 W4 B9 \# ] }
; {$ E9 v. [9 G. k#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# B* l. I6 {' v' t- a if( bGamma )+ c% z% I" @1 G5 ~: D
{9 k3 ^5 Y% i' `7 T1 @
m_nExp1 = 0;
1 {: M; O. ~% m }
6 i5 j' g( V+ ~; Q5 T- Z7 T- U' B+ |6 p$ _; m1 }: m9 \" E& r
( (CUser*)this )->AddSetChangeJob( nJob );
% A8 ?4 s5 {2 H# _) e0 b' a9 h g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
/ V& _4 y \6 o5 ]6 X' t3 u/ }0 g9 a+ |: Q K1 S
' {) R5 @$ ?$ l) ]#if __VER >= 11 // __SYS_PLAYER_DATA' ?, a. Q0 \& e: G. o
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );, N! g$ T9 L* U, \
#else // __SYS_PLAYER_DATA% r9 ~3 [& Y$ h0 s. C
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
6 |$ Y) j- ~- Y; R, x9 s; s g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
$ c; s4 A: j" X {2 R9 q+ ` if( m_idGuild != 0 )% t; [6 f) a! f+ |
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
/ @) s/ T, }; q" @0 @#endif // __SYS_PLAYER_DATA, g, a" Y2 a2 p' N- m9 m6 }
SetHitPoint( GetMaxHitPoint() );
. S4 i9 W+ w/ V SetManaPoint( GetMaxManaPoint() );, m6 B: s7 Z( C) U2 U
SetFatiguePoint( GetMaxFatiguePoint() );# k- E/ z: c/ I! \
if( nJob >= 1 && nJob <= 4 )
( M& J5 f, a' J$ {4 r {- h4 c3 y8 X* b( {
m_nStr = m_nSta = m_nDex = m_nInt = 15;- x* E' k2 G F% R& A& b+ c6 i
m_nRemainGP = 28;
; I# q4 e7 u9 _9 ]( ^9 z) ` }# o1 _" h+ |, i+ W
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )$ W! x1 u$ f5 y
{9 s7 o+ |/ Q6 T, F; [3 n- G
m_nRemainGP = 118;$ K4 b* a8 I' m7 K1 l+ ^9 }3 c
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
; K4 F( d4 a% V5 V) A9 z m_nStr = m_nSta = m_nDex = m_nInt = 15;
. L. {% B. L0 s8 x }, K2 N6 X4 J) Y; C4 m0 s
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )" n( v1 a R m9 W4 {
{
, H) A; M7 D: M$ [) ?+ n6 j CItemElem itemelem;
) a. T/ }. r1 S8 A' Q( R/ N7 w% o itemelem.m_nItemNum = 1;0 ^$ M0 Q9 q/ C* y$ P9 p. z/ {
itemelem.m_bCharged = TRUE;
) ], h' T Y& N9 Q BYTE nID;
6 \* I! x$ v* p/ R
, v2 m0 |6 t& Y1 i" J0 A" f if( nJob == JOB_MENTALIST_HERO )
# }' e$ L' m* s+ d, \ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;) R Q. r* _: \( B" v
if( nJob == JOB_FORCEMASTER_HERO )
5 L+ }2 u0 z+ [- v' P itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;1 y e* C+ J4 f' V
! A+ s6 z: v1 c; c1 q* [- i1 V! s) J
( ( CUser*)this)->CreateItem( &itemelem, &nID );
1 Q% ?! t' k. ] E# w }8 F# d0 j% h6 p* n
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
4 d |: V% S, Z$ T; w$ {) ~+ d/ q4 q ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
% n E9 c- `9 K. H( b. m* Z: M ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
$ l, {4 y" L$ V& h! ?. E _ /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
' h$ A% H: `9 o' u ( (CUser*)this )->AddTaskBar();*/5 D( U; F5 C0 N
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );5 c9 ^4 s; [# ]4 G' c8 T
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?/ P) o( T0 @1 `; d0 n
((CUser*)this)->CheckHonorStat(); c2 {: P! L7 s3 a3 a: d
((CUser*)this)->AddHonorListAck();: m% m+ J4 K4 @& T* K7 m+ Y, N0 t
g_UserMng.AddHonorTitleChange( this, m_nHonor);$ z M$ G d. Q/ J( {
#endif // __HONORABLE_TITLE // ′Tà?: ?* m/ }7 Y: Q/ k
}
' O8 h6 \1 C6 j$ S9 c X5 W8 ^#endif // __WORLDSERVER5 d' |4 o$ \! F3 T( @& ^7 U* b
}
, X( K$ ^- r8 t+ t* R! `; {3 d6 }/ D; Y( Q5 Z
然后你进入functextcmd.cpp并添加以下
Q: [# c: |# c( M6 F, [. D' c4 t" Q
代码:
& z9 o: w+ ^3 h4 O* ^ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )) X5 Q2 [1 I) i3 j+ I% v6 L5 i# L
下面插入
3 q. q, T7 r+ Y& k' x1 k5 S9 CON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) - @, K/ w" i1 o! u( M( D
! I" F1 D) E# {+ |! K然后你去 @$ Y* p8 V# s
7 ^1 p( y# e7 G/ q+ E
代码:
7 `$ C1 U1 V* S5 P$ l+ C$ C代码: B. n, M2 [3 I7 f) J3 u( |
BOOL TextCmd_ClearPropose( CScanner & s )
, Y& X5 @7 P! u: e9 D{* K* G9 y2 [' m7 M0 X- h0 E
#ifdef __WORLDSERVER
) F7 N0 r% `, g( V CUser* pUser = (CUser*)s.dwValue;0 Q+ w8 m% ]( \+ E" H
g_dpDBClient.SendClearPropose();
5 a+ z: G$ U# T" b: G ?, X#endif // __WORLDSERVER
# B* S- T- N' V: b return TRUE;' G4 Q t, o$ v, l" K
}( ~# J& j$ J; T. r. g
下面插入
" y; r* Z4 Q+ @$ pBOOL TextCmd_rebirth( CScanner& scanner )
1 M. y- l) U( |6 @. C0 b2 B/ u{; b6 d5 _6 C' Q5 Y( b& w. {
#ifdef __WORLDSERVER
- \7 Z8 s( y' r- {7 p3 j) oCUser *pUser;1 M; R0 E* k4 @4 g( U; ]
pUser = (CUser*)scanner.dwValue;! i u4 x; {, G0 L' x9 Z
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())# ^- {" h$ v/ T
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' ?$ S( l2 U2 C, n) Z; a- |else* A1 p( _; Z% D( O, f# [
pUser->AddText("你还未达到重生条件!");
& c( y) b( R* W. ]1 k& F#endif
! u% @/ J) D5 A3 ~! \/ x% Greturn TRUE;
/ R) J- l& k2 D}
* C" C j6 T% o" t# x$ @
" v3 N* ?: D) S% v# f: f
@4 [- Q, p" O$ W: H5 |9 `+ e2 O5 Z+ [$ Z
O6 ~% X1 w6 M' m
|
|