|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel8 z- M1 V0 S: L y- N& I
! z! @7 u- A0 t& @4 p8 u
Mover.h1 _% u" z/ |; R h6 d1 j
代码:+ }9 v3 |! G& ?4 r, u
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü3 \# U. D" b6 u& m8 X
+ A* s7 M: C1 F5 Z4 f
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ) t& X8 e: V+ @4 o7 ]" L5 ^9 Z, O
# C! R7 O3 G7 ^6 G+ K+ n
然后你去mover.cpp添加. B1 F) x6 l8 t7 ^$ P8 o
+ ~3 @1 f7 h: M" K代码:5 X( J/ U0 n. L9 {
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )6 ^% N4 I4 U# a6 ^' E* f3 i
{' v& b* P4 C) ~$ ]* n. v6 k" E
#ifdef __WORLDSERVER
4 d" ?6 V, x. b3 k6 h ~# t // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
, y; E: a& s I( p; x2 ^6 T0 S MoverProp* pProp = GetProp();! ]/ k u2 p! T5 v* E8 v- F, @
if( pProp )
7 g! G: e' O+ g- Z C9 h {; r8 o0 m2 ~3 }8 z. I
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
" W2 X4 k; ]7 g) u2 V {
; @2 q6 ?' G' v$ x! r9 u0 Y p% ? AddChangeJob( nJob );/ q. d+ s1 X& G
}else{
2 [5 `" W& s) r1 U2 i0 G) l return;
7 _- L5 U( k+ N3 r8 X, K }
. P4 }) w4 Q* V" \# S2 s int nPoint = 0;3 U: h& y% r# a
if( m_nJob == JOB_MERCENARY )
+ ] N0 k A- F( a+ D: H nPoint += 40;
2 `& V; R/ q+ v9 q! W else if( m_nJob == JOB_ACROBAT )! P x$ x" w, m2 Q! x4 ]1 w
nPoint += 50;! x6 B$ ~5 k8 m& |4 G( q4 q2 l# o# B$ {! ^
else if( m_nJob == JOB_ASSIST )& r4 z! u, ]- u
nPoint += 60;
& y) q9 C/ n3 U: I! Z+ ~# _: A else if( m_nJob == JOB_MAGICIAN )
3 |' z/ f/ b) i% g6 M0 [3 [# Q6 ~ nPoint += 90;% j* D- C- }/ w+ D; I
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
; |+ e8 B/ c: o6 ~$ ~ nPoint += 120;
+ C. B: D7 }. ` {8 ^. L else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ), W2 d& l0 C/ Y5 Q$ q/ R3 g! G
nPoint += 150;
" r4 B1 N: y0 R( D/ S else if( m_nJob == JOB_RINGMASTER )8 T+ l M( ~& C9 ] d
nPoint += 160;
+ F) ~- i9 m+ X else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 z0 _1 N! {% }- b9 ?
nPoint += 180;
7 r: ]. ^6 Y! X else if( m_nJob == JOB_ELEMENTOR )
8 M- C; ~# Z2 h" S nPoint += 390;
: ~" m" w) V7 F( Q- n/ a) ?$ [ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& v3 P6 S/ ]+ I9 m4 E8 Q
nPoint += 120;! e; ~$ n0 z7 d9 D! q% |4 ` f! t
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
0 b. h3 P9 | t4 U" R7 p nPoint += 150; q8 |$ f& K8 H
else if( nJob == JOB_FLORIST_HERO )
8 U1 D+ w% c7 T4 \ nPoint += 160;
' g) z( L6 m8 C0 i else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
/ Z/ A; @. ^2 C9 ]3 a2 }. `) k nPoint += 180;
5 c, G2 e: Y# k) K7 d& b' c else if( nJob == JOB_ELEMENTORLORD_HERO ) B* A7 f: w% C
nPoint += 390;
; F7 j' q% Q6 a5 N; U( Q v8 v' b# b" H1 l
AddSkillPoint( nPoint );
" T5 m& r: L7 ^ m_nLevel = nLevel;! C& V! t6 o" r" ]; E, ^6 p$ Q
/ K' e( `. G/ y e; S) P3 [+ ^
SetJobLevel( nLevel, nJob );7 V+ r3 ~0 \3 J" m. I9 k9 t( q0 n' A' d
m_nDeathLevel = nLevel;0 u: O$ P( \9 j$ d7 P y
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
' n- x4 V# t8 I2 ?- _ if(IsMaster())$ {& C! J' O+ C: L3 Z5 N/ V
{9 u' V: q7 R6 f0 Z& P( i
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
$ a$ J! F! H! o. k6 E8 X, Y if( nLevel > 59 && nLevel < 72 )8 _- }- H0 F' D' ` {, N$ T
dwTmpSkLevel = 1;1 R1 G9 Y# u( U% y* ?% m
else if( nLevel > 71 && nLevel < 84 )1 t8 l' l$ X5 r" B" Z* L) j
dwTmpSkLevel = 2;
2 e j f/ ^7 g- b& s9 b else if( nLevel > 83 && nLevel < 96 )2 E; P8 b( w' f: a( G+ p- C
dwTmpSkLevel = 3;
) B" B% t. r$ Q/ s else if( nLevel > 95 && nLevel < 108 ) h0 P$ {0 i% m) v: E7 Z
dwTmpSkLevel = 4;% ]& A: ?% m: ~- n: y$ j3 @
else if( nLevel > 107 && nLevel < 120 )/ w0 x0 Y, [+ }( }) w b$ P( X3 S
dwTmpSkLevel = 5;! s" Q0 D' f+ m' P; V
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 1 t/ B8 {! {4 \# t( V
{ - U6 T3 T+ T7 |
LPSKILL lpSkill = &(m_aJobSkill);( Z! R8 W) t& |: x7 P- N0 X
if( lpSkill && lpSkill->dwSkill != NULL_ID )* P* A/ S& S2 n8 e
{
# ^2 K! ?- j: G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " R7 |: v# |5 X* J& M
if( pSkillProp == NULL )( P7 G+ b( t" b3 M g$ T
continue;1 k) P" A! ~1 m! H
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! _, J5 r; h7 s' Q" T, h4 g/ c
continue;
5 E8 c- u& W9 S! ]* M; ~ lpSkill->dwLevel = dwTmpSkLevel;! v& b1 `& Y( k
}( U; P! o0 d) K
}
9 b D! @- }5 w, Z- _ }* I }, u, S! S0 b# y3 O6 z
else if(IsHero())* k. W- _ l, W, E
{
4 }& P0 f% t: ^ for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) M- O+ Z8 v% h! D
{ - y3 V; [) ?! t) q
LPSKILL lpSkill = &(m_aJobSkill);
1 K$ A0 c9 \$ S: w& ]3 h% S" d if( lpSkill && lpSkill->dwSkill != NULL_ID )/ h7 M& F' O2 z* E
{
! k( N" c( Q1 T5 ^ V ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # M7 p9 s: q* Z$ W% z9 {
if( pSkillProp == NULL ). y$ \* d+ B/ Q3 Q( d7 l4 r- l
continue;
& ~0 J1 C6 A6 g' A" k9 U if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 s. j0 o8 T% w3 N- ]
continue;
1 o, d& P+ {$ b$ w5 V$ F4 q% N" O* | lpSkill->dwLevel = 5;. X. Z1 t" H: {9 G5 Q
}& p6 K1 I* x7 {! n, s/ O
}
$ v% g: P4 i5 d8 G5 L% r) q }
: |% J6 b5 d3 X5 c1 k$ ]# F else if(IsLegendHero())
~3 X7 j' M3 B7 ]' N" Y8 ]' [ {
( O2 A) p7 W: O" Y. S x: C! w' x for( int i = 0; i < MAX_SKILL_JOB; i++ ) , x/ J8 O7 @- _% V( {( O( d
{ 3 D r5 e" w" _9 [5 o
LPSKILL lpSkill = &(m_aJobSkill);
& F. v8 I4 t$ U" D' x; ~. I if( lpSkill && lpSkill->dwSkill != NULL_ID )! m: a& s" f- e7 J" X1 d& ~
{
1 r2 T/ r9 D B9 J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! J" x$ J0 k" l% G$ l/ A
if( pSkillProp == NULL )- \8 ^' @! ?+ X/ J3 k! J% @
continue;- W; a2 B; S" H* o7 E7 K0 Z* q: C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 I4 F' q* n! v+ t continue;
! v; K$ Q% L0 b lpSkill->dwLevel = 5;2 {: Q4 x n& B) L; ?) O2 F
}& x, X) k' R o% a& T
}6 W8 m7 q8 t5 i) Z0 c
}
/ C% @2 |' A1 I% X* J8 W! ^, O#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
) V7 F+ Z, v+ b9 ` if( bGamma )' L% S) B* F! v& S9 x4 d8 V
{
! J( J5 _! N- D1 T# B0 E m_nExp1 = 0;
3 s# [1 @9 R* g \. d" ]' |3 z }
% T4 D& r3 b7 B$ }6 F P+ f) }/ l% Y" Q
( (CUser*)this )->AddSetChangeJob( nJob );3 D5 y3 s' y: I2 s7 V
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
5 _% W6 }1 |( C- u ~* o [: U* v* f2 G+ o) c1 X# j
) }7 J1 |8 l" b0 S* ^
#if __VER >= 11 // __SYS_PLAYER_DATA
% s% ]2 `, J+ v* |* q8 ]5 u g_dpDBClient.SendUpdatePlayerData( (CUser*)this );3 j8 O l) S$ q
#else // __SYS_PLAYER_DATA( l+ k2 C* h& _1 s; {! b
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );- \7 m! e& g9 k6 D9 s1 l
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
# L3 c% j. f* @4 b9 q) _ if( m_idGuild != 0 )
/ {7 \: |$ Y- ^- Y' J8 A; e8 t; _ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );, X6 q9 _" S* ]2 T
#endif // __SYS_PLAYER_DATA
) j1 I) C9 i4 B7 j SetHitPoint( GetMaxHitPoint() );5 U8 x5 [6 A) l0 [6 A9 [; U
SetManaPoint( GetMaxManaPoint() );& c; k# V# \, F8 x. O ~) e
SetFatiguePoint( GetMaxFatiguePoint() );
" o) w. p S2 W k if( nJob >= 1 && nJob <= 4 )! T% X' E/ F# Q% w0 c
{4 \4 J+ F C6 f+ c
m_nStr = m_nSta = m_nDex = m_nInt = 15;
& V3 h/ w% C9 E- H! @8 H m_nRemainGP = 28;0 T0 ^6 g0 c, J4 D) _1 m
}
' a/ p$ X% ~7 q: K$ r: L if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- F6 c( b- n7 a! ]4 b1 |* r3 l* b
{
5 n2 }# {( }2 B; s( r0 K m_nRemainGP = 118;' H( |/ H' ^8 `5 @2 a' o8 H% E
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
3 s$ J+ o+ C6 c" C9 e m_nStr = m_nSta = m_nDex = m_nInt = 15;
5 U: i6 O* r7 ^% K: \0 c& { }- N' y) j6 z$ z- h' X
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )( q8 h0 d1 y" b( Q5 `
{
6 C S+ a; G% T CItemElem itemelem;
/ h( |- N% N8 g/ q& r8 k1 B itemelem.m_nItemNum = 1;% K- E# W2 b& _( V; U4 x% d' f6 Q0 o
itemelem.m_bCharged = TRUE;) ` C! A3 N7 b0 E S3 ]0 E
BYTE nID;
9 w' G8 [( I3 \' b" \5 p# H6 E4 l' _( c! Q
if( nJob == JOB_MENTALIST_HERO )! U! C& Y2 B) m+ Z$ Z( n) G4 k/ \
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
2 u c+ r/ z5 Y; ` if( nJob == JOB_FORCEMASTER_HERO )) [0 x+ Y: x- F2 R0 }
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;2 [2 a1 `9 f! f; ?! ~
4 B0 R1 a% ^/ ?. v; g
( ( CUser*)this)->CreateItem( &itemelem, &nID );% s# s7 e- N- N! Y, r& R7 P
}1 [. F) _2 G7 T! C( i* ^
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
" C D7 H; Q \" j5 k ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );! k- o0 O( x( R4 b3 P! Z$ |8 d
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );4 I" e# h( F8 u7 x# e$ C* ]
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );) s, U( I5 C2 K1 ?$ O, b p+ p
( (CUser*)this )->AddTaskBar();*/6 T7 M, a* ? B' |- R( k2 {+ E h
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
# i7 l0 s' q: T$ |#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" g5 ^7 W: e1 H+ j: A ((CUser*)this)->CheckHonorStat();
4 G$ _% g) u7 U4 D8 J* | ((CUser*)this)->AddHonorListAck();
6 T" V' V! {5 c1 Q0 N g_UserMng.AddHonorTitleChange( this, m_nHonor);
& m4 o' Z t4 L$ y' X7 D#endif // __HONORABLE_TITLE // ′Tà?1 c+ P' \' I/ d( j8 W
}
' c9 v7 }( R- Q5 s) A6 b+ E0 r#endif // __WORLDSERVER
3 x" L, W {- k; m' W% e6 P: i( K$ Y, w}
: p% U: ?: X2 o: \+ e. T5 _1 W9 Z, t5 {$ G. x
然后你进入functextcmd.cpp并添加以下
( x; U- L% n7 D) |/ \* Q+ H! v. L" b! N8 h7 @
代码:# F/ U0 v: W" i
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ); P$ \4 q2 {2 U4 R# g" z3 T7 _ F; l
下面插入
6 b1 E& x5 d- J! @2 j4 HON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
! E6 C# m$ t) u1 t4 v0 n ~( f8 x! u; @7 X6 m" y$ S3 K( K: _1 G
然后你去
: }1 y( o5 Y. X' V4 @2 x' _6 n; @& ~- x% l$ D, l1 E2 ?
代码:, g F5 M4 }5 O1 m, E8 m+ W
代码
1 o% w; n+ f! G4 C; tBOOL TextCmd_ClearPropose( CScanner & s )3 }7 J- H, S/ ^% \; I) T% l; w
{
5 k/ H' e# Q# K0 }2 ?6 m! o$ N#ifdef __WORLDSERVER
, G0 C) |" N% n% P CUser* pUser = (CUser*)s.dwValue;
0 g: t: j8 b5 l& C g_dpDBClient.SendClearPropose();
% Q* D( @! O' a. x3 B: e4 s#endif // __WORLDSERVER
9 V) D- J* P3 x( a2 d. E9 n; V* | r return TRUE;
, t& A, C* Z) i}. i- ?) E1 ^* _# b/ p) h) y
下面插入, z" v' p2 j2 R* M6 K
BOOL TextCmd_rebirth( CScanner& scanner )5 ^! Q8 Y$ N0 t2 D
{. j! K" r' w7 |( I. H
#ifdef __WORLDSERVER- L, j8 E2 f, ~; ~% P) P
CUser *pUser;
) _. g* C" F5 [0 `6 VpUser = (CUser*)scanner.dwValue;
' ^' i0 |/ {# q; H! b# X3 rif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())* a2 K8 D1 ?) t% E8 I
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
2 z9 `: K4 q& c/ m: Celse
$ A: f8 ?0 W, b% c. I a5 XpUser->AddText("你还未达到重生条件!");
$ K: b$ s, W4 f3 T- D9 ^7 \#endif$ X" I% v. X. ]6 k* B6 L
return TRUE;1 N5 Y \. }( x* N/ j
}
+ E, E% V2 a+ l) }3 x/ B1 a' A, V
5 D1 S- _! r0 ?4 H
& r3 p4 N& G9 `1 i+ x2 V, s
, v) H4 D9 d, k
|
|