|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel6 m6 _% q' }1 P5 K2 H
: o H, q+ R8 U+ s6 h0 N
Mover.h
: s: l- x' a z& P, A' m代码:+ X: M1 Y4 W1 u0 r' U" b& h
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü' A: F: F& V" B! O+ @) j
1 L4 d/ f* V5 u( n
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 5 K, r+ Y! [- a9 A% {
4 y+ |2 J* o. ~. H1 K3 |( J然后你去mover.cpp添加, K# l! ~ W9 z/ O6 W* U
3 p% m2 `! A) a, P/ P4 i
代码:
' {1 O! G6 Q5 @6 [void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )( g* V3 {5 U" u4 |' R: P( I
{
/ k' L; j, ^" `5 @#ifdef __WORLDSERVER5 K3 Y9 ` V' f8 c1 I3 L
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
9 g+ i9 N; O+ c$ `* s7 ^ MoverProp* pProp = GetProp();4 B' s( M# C+ K
if( pProp )+ ~/ S; [# e0 D c7 W9 V
{
: ^% G! b5 X, u& Q7 I; U$ \ if( nJob > 0 && nJob < MAX_LEGEND_HERO )
b! X+ P/ a& o$ b$ S {% p+ J5 |1 {) l; V7 e+ H
AddChangeJob( nJob );. O) F" q0 ?6 t2 s+ w" O
}else{
8 S, e0 L0 O0 B3 f- n! q& k8 N B0 f- e: c+ q return;* W- c6 f; d! c: ]: z
}
% {8 J* q. h9 H1 O, |( B$ q int nPoint = 0;
' e! f, ]" A1 I1 [. Q6 E if( m_nJob == JOB_MERCENARY )$ X7 x5 v0 W% s8 ?+ |& i! Q
nPoint += 40;
" h8 }5 I! I L1 d else if( m_nJob == JOB_ACROBAT )
, @ j: p2 `" G4 l S1 { nPoint += 50;: B: V' g0 \' ]5 z7 U
else if( m_nJob == JOB_ASSIST )
4 M* ?& r- G" I1 c% E: @: l* F6 ~! v9 U nPoint += 60;
4 X) H' g8 H) Y else if( m_nJob == JOB_MAGICIAN )3 a! P1 f+ P- M" j
nPoint += 90;
7 h, c& k& W' L" N& ]; u: a else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ), R. d" h7 ~, r* J
nPoint += 120;
% O; c' A+ F, R1 [ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
4 j0 j' c. s6 f; o nPoint += 150;
+ ?& o% t1 m! v, t else if( m_nJob == JOB_RINGMASTER )
0 w: j2 e, i$ U, F$ c1 ?- j& G nPoint += 160;; H- N+ T, U' M# C
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
G7 f1 e. O- f( l: A nPoint += 180;4 ]4 k7 Y" v3 R2 D6 i1 D
else if( m_nJob == JOB_ELEMENTOR )4 j9 I4 c( v& J% @
nPoint += 390;
) K& v' O; g# u6 p& [# [, q else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )- a( H8 a7 B2 @6 z
nPoint += 120;6 Q' x, q0 n8 w: l j1 r0 e* x. l
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
. u, ?8 w9 |+ X% N5 H0 @& \( E \; \" R nPoint += 150;' z) s7 {; K' `; S" N
else if( nJob == JOB_FLORIST_HERO )) u/ C- Q' O8 Q7 P7 T; ?2 Z
nPoint += 160;
0 M) `+ n( B) y else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
& n+ L/ F$ r) q; i. d nPoint += 180;! D- F o# r" e6 I: z: A1 Z
else if( nJob == JOB_ELEMENTORLORD_HERO )
: C" u0 s$ M' Z7 o" P$ P/ X nPoint += 390;$ p7 _ P6 f* ^: r1 J* j6 X, v
9 N. x, {9 n( ^% N( ^
AddSkillPoint( nPoint );2 d7 z9 d8 {. r. }" B) H
m_nLevel = nLevel;
( Y! v: @2 k1 p! g( n( k# {3 I |# u( n
SetJobLevel( nLevel, nJob );/ c% n# A$ U+ I3 O" C q
m_nDeathLevel = nLevel;
7 ^; q' Q' y @5 A9 q$ R9 v K#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
- l, @1 A0 p, i) { if(IsMaster())6 H. [: I6 U: G, M
{6 y/ {! h5 Y3 p* N
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! o# i, x0 m W' O! \1 @+ O# j% o# U
if( nLevel > 59 && nLevel < 72 )
& Q7 i7 D* \6 N/ V. p& J4 X4 m. f dwTmpSkLevel = 1;8 A: e- Y. g8 a' |/ A1 k0 O7 v3 r
else if( nLevel > 71 && nLevel < 84 )
$ R. @) X0 J. K dwTmpSkLevel = 2;) I6 W% d2 ]4 j4 Y% I s
else if( nLevel > 83 && nLevel < 96 )* h- ~+ y3 v3 s; r' @- I
dwTmpSkLevel = 3;' q ?, F8 d9 g# K+ X9 R
else if( nLevel > 95 && nLevel < 108 ) E( r2 C6 ~9 r9 ^, | `
dwTmpSkLevel = 4;
# J1 C; S$ y S1 f- G else if( nLevel > 107 && nLevel < 120 )
2 a5 O0 t: n+ w. M dwTmpSkLevel = 5;; O* V4 M. h/ G3 b8 S3 r9 B
for( int i = 0; i < MAX_SKILL_JOB; i++ )
; G$ g8 {! y1 f) n$ |- l { # n4 Q: Z8 F2 W% q- O6 W4 a. ~
LPSKILL lpSkill = &(m_aJobSkill);9 `- l+ M' b* b8 y1 B1 M. M* ^1 H
if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 @# z1 G+ [2 e% Z1 ^& }% @& c {
) |) Z9 N1 v7 D* F$ g4 m ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# S! g" f" ^$ f) `( J$ u if( pSkillProp == NULL )
5 H( t1 j; ?9 f/ l" `0 l continue;
6 _ J) W! e( Y8 N# \2 F if( pSkillProp->dwItemKind1 != JTYPE_MASTER): m# a+ l9 G' Y7 b# B1 x- v
continue;$ Z# T7 W; G3 `: r* S- c, n. X
lpSkill->dwLevel = dwTmpSkLevel;% W) @$ b2 d9 a0 P, Y' c
}" O( Y6 X6 \" x1 z) y
}: Q( k0 o0 ^2 ?' p
}9 I8 Y' ]0 v0 N
else if(IsHero())! P/ Z" @$ ?' ]
{
U0 t% [ `5 ?0 J9 P1 d for( int i = 0; i < MAX_SKILL_JOB; i++ ) 9 [( t& _* e$ {! W$ E$ h% y
{
6 h) O) e9 S1 E8 `# |( d LPSKILL lpSkill = &(m_aJobSkill);9 [4 X- m8 T& f+ n* U# z$ _/ i# r
if( lpSkill && lpSkill->dwSkill != NULL_ID )
y5 e, H1 l+ q, g$ Y {
5 v; F. p: u5 v3 ^/ W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, J. \9 b2 B6 @% z' v if( pSkillProp == NULL )
* V" q# d) P/ [5 E$ i: n continue;1 `! U% B6 b, {, X0 v w2 W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 E2 [. \; P3 f" i" Z" F: p) r3 U
continue;
: q% g# _) g% G3 I7 g o lpSkill->dwLevel = 5;
+ x- u" W# F/ w1 y% | }+ g. C: j* r5 ~8 x; c
}
" C7 ]9 p+ f- R9 ], C; b4 a! r% ]5 ~ }5 {8 i7 _' w* a$ Q
else if(IsLegendHero())8 t3 x/ ]2 T! q& X8 i: N
{
; g8 o1 Z1 S* m" X for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 w4 l! s& K7 ~ {
' h- |2 o% ]: K& R: o p6 m LPSKILL lpSkill = &(m_aJobSkill);7 g! R' e i* b9 H# j5 H) u& G
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 Q) @4 q8 R) k; b- R {# O2 z4 P+ j# a! X( ^5 @
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # d8 Z" U& H! x3 m" a$ i M" `; h
if( pSkillProp == NULL )
' ?. Y, Z9 [- N7 S continue;
- X& A! ~8 g x4 L) B. Y1 ` if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
O" ]4 F h" p1 s. ]! { continue;
3 n1 m( ^: {4 G0 i, k: E9 e# l; a/ J lpSkill->dwLevel = 5;! n% y. k J1 w5 Y! Z2 r" w' d
}
; v1 u/ d4 \% D }+ A, u* i6 \5 e5 R- C E
}
^6 d) p, s/ f) F0 ]! S' g- b#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans* U: P/ ~6 `7 e5 [
if( bGamma )
! U0 b. Q+ C* X2 b4 Q, x- d6 a {4 C& i9 l5 c* r8 L( [9 q
m_nExp1 = 0; U& ?3 x) y0 h/ m5 I1 k/ t# n
}& v- N4 Z; _! ~6 o7 n" K& x: x: S
* e+ G' b7 g5 y
( (CUser*)this )->AddSetChangeJob( nJob );
/ d# H {) h. `8 j f/ S; Q9 z6 _ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
7 ?0 u8 j2 c! u- ]: @2 ^" z6 r P) c( ]5 ~9 b0 ^8 i
. f! p# B0 H1 {3 h
#if __VER >= 11 // __SYS_PLAYER_DATA$ Q1 m6 m x% U/ l3 h% k1 a. s8 ?
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );8 D" v+ H: _0 k$ ]: `
#else // __SYS_PLAYER_DATA
# M0 M+ h" ]$ g# e8 D6 I( d g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
$ z Y( @! J+ s2 M. p2 \; W; ^ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
6 R+ Y, h! H4 p# [2 S; G if( m_idGuild != 0 )
6 I/ Z( _; H$ H8 d g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
+ P. R0 F' N( n. W#endif // __SYS_PLAYER_DATA
+ n1 y1 R! r" h, V0 Q- F! y5 O SetHitPoint( GetMaxHitPoint() );* q. s9 q% t* Y( j: u
SetManaPoint( GetMaxManaPoint() );& k& @* f3 A7 @" r. `. V1 B
SetFatiguePoint( GetMaxFatiguePoint() );2 p; d6 e" H$ G; w& i3 ]( Q$ w" p( _
if( nJob >= 1 && nJob <= 4 )2 b @: |& o, l( e& B4 v2 m
{ k* t' ^/ B! [ y
m_nStr = m_nSta = m_nDex = m_nInt = 15;
% N" `/ f" B0 u' [7 N$ N m_nRemainGP = 28;
7 k! x8 _9 G3 A( ^ }! P3 C" H1 ], n, G( M( O
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
$ Z# v% t% W, B1 @4 V {
7 I$ S& e( W2 @* G' z" J$ ^* A m_nRemainGP = 118;
8 U$ ^! A( v# y. g9 B //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;* S- q Z, l) y7 b/ ?; c3 @5 r6 O
m_nStr = m_nSta = m_nDex = m_nInt = 15;! X( M$ ?( D9 x: A
}
8 `' O" y j! A+ ~, j if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )& m1 n; B- c/ m
{( f d! v( A+ |0 ^# [" N2 N. ?
CItemElem itemelem;
: b3 t' S* d; G. ?: _ itemelem.m_nItemNum = 1;. G9 u: j, E1 r5 z. p
itemelem.m_bCharged = TRUE;
# q( J* C& |* J3 w# y, t& f7 j7 n BYTE nID; `9 o$ I! v: K; y- \, \
8 b# L2 l2 j# T- m' X: v
if( nJob == JOB_MENTALIST_HERO )
% B8 H' C6 [: B/ I { itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;. a5 i) l- D# ]
if( nJob == JOB_FORCEMASTER_HERO )9 C5 s" v) z" F1 E) K0 T
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
6 o& l4 [# J) o9 A/ w2 Y* p/ @8 c/ Y) f1 z: H3 l
( ( CUser*)this)->CreateItem( &itemelem, &nID );6 I ]3 l4 d7 x! g# D& U
}
' E3 `- y2 B" I) @. `/ L$ ~ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );8 q, s' c4 b1 P: Z7 a0 `) @
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );) p9 n6 W. l! M2 J7 g* c
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
( K- i" H) X8 g# i& U. m4 G /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );$ c' y% V$ X( z. ~5 c
( (CUser*)this )->AddTaskBar();*/, |+ `. _3 O1 w$ S5 h# a. R
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
$ @- o/ c$ o& `1 X3 a2 w#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?; p; D, Y/ B; \
((CUser*)this)->CheckHonorStat();
Z( k f1 Z" q# a: D* h! H) e ((CUser*)this)->AddHonorListAck();% F) B5 [% _. U, n: e7 t6 N, z2 ^
g_UserMng.AddHonorTitleChange( this, m_nHonor);& D; e5 f0 s$ t/ d) f
#endif // __HONORABLE_TITLE // ′Tà?7 V" h0 s1 w4 k' h6 j" ^ p
}
! E o( v' m' e; d @5 n# f2 k#endif // __WORLDSERVER* j2 R8 \4 V# [0 A, R, @
} 1 Q, M7 O1 F. w; z2 o4 H
- H! v5 F [3 l1 C! {: n3 G
然后你进入functextcmd.cpp并添加以下
! F* T! w3 K# {4 O& c7 w
. |5 v, } |9 M( }代码:$ u$ M) S% x+ ^6 N
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
7 ]+ W( Y2 u! y( r; O下面插入0 D, ]/ o1 V. `8 u
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
+ |# j; i) b' \1 P0 x& |, P1 b7 J. j' _6 D7 R* W! G, U
然后你去
/ |" j0 ?2 |7 F4 N* H+ Z" Z/ d& k6 _# V+ c! k
代码:3 \7 B4 B5 b) }
代码
% b: Z0 h! ]0 S/ S) y. E+ BBOOL TextCmd_ClearPropose( CScanner & s )
5 q% B8 \( g0 j; n) |{
M7 E3 I* e7 v- _7 N7 J#ifdef __WORLDSERVER0 q [; T8 C% |
CUser* pUser = (CUser*)s.dwValue;
8 n4 P8 N* Y, {8 d7 e' q$ M g_dpDBClient.SendClearPropose();
5 t$ w2 c( ^, y; L#endif // __WORLDSERVER1 L! m1 e5 e+ ]' X# B) T
return TRUE;
# W& G! h5 i) y3 \0 R$ a}% S( P& x5 u0 M g, E0 j8 V* y
下面插入
7 D( s8 S I6 r+ }; Z: CBOOL TextCmd_rebirth( CScanner& scanner )
2 f- Z3 j# l0 G6 J{
: E H- O; p" m7 H! N+ v#ifdef __WORLDSERVER+ z+ |8 @. v/ \+ j
CUser *pUser;
# }9 f) ]2 @" W* y% I) cpUser = (CUser*)scanner.dwValue;
/ @' M* h1 @! [# X7 i; ?; p% r8 }1 Pif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())+ K( _( \0 A$ X) Z
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
9 n% E* j; Y( Velse
7 J, X8 p6 q, B8 ^) E3 [+ EpUser->AddText("你还未达到重生条件!");' Y/ c0 ^) u+ O, c+ C# e3 u
#endif
4 N. ?/ m* T& U s* xreturn TRUE;
! F6 j' e' }2 l5 K4 N+ O' E} ( _: p- c7 b8 [+ C
* J& X5 R& o/ A& V4 q- O
0 q# N+ j! r1 x8 N
- n; M" [; R" l: [! Y8 F( C" C8 B$ ^" o4 Z* f
|
|