|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel* y3 r% f+ n! U- m$ G) y
# _" u( B; X0 L- Z- S) uMover.h% r0 m5 S0 _; t2 B9 a! v, r7 ?
代码:7 J9 R, X) z q2 m: b! ^
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü# k7 g* g6 ` M# Q$ p( L6 L6 E, ?
# ^- |3 w+ ]( C3 j4 E. L& L2 Q2 [
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
' m6 S0 }6 l. Y, J5 B! T) \/ b: ?, o* |
然后你去mover.cpp添加. x$ a- I: m9 i a
( ]( |! s& c" G% h/ O$ b代码:
" i- _; i+ \/ A1 m4 z) I& l8 ~void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
, e! K' ]. {& v9 a{
. q( D. q% x+ B#ifdef __WORLDSERVER3 `( G1 ~5 h* w! j; q- L' G
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó: Y6 o! O/ J* d; h
MoverProp* pProp = GetProp();$ b& i5 r3 B2 U) w8 q
if( pProp ). F9 D# k, q/ D3 e
{% \; n5 v8 Q- G; I, w
if( nJob > 0 && nJob < MAX_LEGEND_HERO )# z0 i% w5 R7 d8 w
{6 R3 a8 X( J9 p" A. S; J2 Z
AddChangeJob( nJob );6 ?2 H8 A0 [- j; D* s" n1 F
}else{( F4 O) L: b0 [. Y7 `
return;
3 Y1 z$ s/ E' w( J) y }
; x) _0 N+ E/ d int nPoint = 0;( t- a, o, q$ y% J
if( m_nJob == JOB_MERCENARY )6 p e P4 f0 w' R# H
nPoint += 40;6 |2 j+ p) z5 ^! ?: Y3 o' |' x
else if( m_nJob == JOB_ACROBAT )! s. O4 N, ~8 @* h; n
nPoint += 50;
% G3 U( ~* U, W) V else if( m_nJob == JOB_ASSIST )
1 C( e9 H P0 }8 B, C* e) { nPoint += 60;% A$ ~% D0 c# @' P1 W
else if( m_nJob == JOB_MAGICIAN )
5 F, e4 E/ Y3 q! n# I: E$ F. l O+ h0 y nPoint += 90;
@3 ?1 F& I$ l) p6 n- k else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ) W9 n0 q- M3 A0 r8 t8 p( v
nPoint += 120;
, t/ u! o, ~9 D6 ]: a% R" p else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )+ n8 V' s; Q( V1 a1 P1 k
nPoint += 150;6 m+ o4 m; a/ }8 |0 }
else if( m_nJob == JOB_RINGMASTER )
0 o+ a- ^6 Z. K! X$ E nPoint += 160;
1 g% d0 S T8 t else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
3 V8 b+ X( o) u/ { nPoint += 180;
. N& J s) H- B) P% p1 A. T6 _, V, W else if( m_nJob == JOB_ELEMENTOR )
: ]3 Z9 P x3 R7 t9 X' d d nPoint += 390;
\1 m* A# Z' `; i else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
: W* c. ]. w% r2 u nPoint += 120;
! }/ y( s1 o/ }& v: s, J6 t; H else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )7 M& U4 o: t# F, P
nPoint += 150;- E- o/ J8 h% W( Y) q
else if( nJob == JOB_FLORIST_HERO )1 V, w' p$ A* S" z3 t( Q
nPoint += 160;; Z% G/ m9 U+ I
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
6 y% w5 E h: B) K+ ?& t) P nPoint += 180;
8 P- x2 |- a: v else if( nJob == JOB_ELEMENTORLORD_HERO )- l \+ W" Z0 s4 X) [7 I
nPoint += 390;
8 t' z) t9 r! ^% ~) ]0 K0 e* P% B' O/ J, c3 x2 G
AddSkillPoint( nPoint );' ~0 b' @6 q: t; E8 g2 U2 S
m_nLevel = nLevel;. O4 m% |; e: M
: d% H+ G" g. r% _+ Z) { SetJobLevel( nLevel, nJob );
9 C- k6 z$ m% ? m_nDeathLevel = nLevel;
7 b$ T; v3 \8 |3 e; M. x- X- ^#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
- ?# l1 z+ \( M7 Q if(IsMaster())
! ?# e9 x5 B+ j {. l2 }; V$ k' Q Y
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
, m4 O7 f6 H: s2 H if( nLevel > 59 && nLevel < 72 )
6 [8 i/ B9 d! C& ^" F7 w5 Q! W dwTmpSkLevel = 1;
% a8 `$ Q6 c$ I else if( nLevel > 71 && nLevel < 84 )
* u8 r, G. O6 h- i7 y dwTmpSkLevel = 2;
6 E6 n# l1 X0 r6 G3 b; G) X else if( nLevel > 83 && nLevel < 96 )9 g( D4 \% R/ y% R
dwTmpSkLevel = 3;, Z) [; H8 {% M. q$ `+ T3 d
else if( nLevel > 95 && nLevel < 108 )
; f5 }/ t3 e' B7 Q4 r dwTmpSkLevel = 4;# m, m( q# V. d* C6 Z5 F' ^0 M
else if( nLevel > 107 && nLevel < 120 )
# p& ^3 t) k, G7 h. d, ~ dwTmpSkLevel = 5;
6 R1 `8 k3 }" x }; t for( int i = 0; i < MAX_SKILL_JOB; i++ )
) g# X- T: ^/ V9 B0 i {
8 R; H" M4 @% w) S3 I: c7 j LPSKILL lpSkill = &(m_aJobSkill);1 P+ o4 _' I& E% X# |! T) |& ?
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ J0 _) F7 S4 i8 m+ x; w
{3 w9 C6 _$ Q2 [( ?/ ^- ^' x7 u5 a
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , J* R% o4 j# r
if( pSkillProp == NULL )# d5 W2 @6 ^7 S4 \+ U; N5 X4 \
continue;$ r) R7 H% M( i6 ?
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)* o7 B& i# u- M; ?# J& _% M* @9 X
continue;
. @( `9 p4 D& p# f4 m1 K lpSkill->dwLevel = dwTmpSkLevel;8 y: X" ~* v1 `, i( x: x
}
# D/ b# w6 s8 n } J6 w! _( n6 a1 E0 N6 R
}- n& ~2 z3 {8 ^2 P* D1 \9 {
else if(IsHero())% p2 A; g- i. b7 v
{
; Y+ W3 y, v7 L: o: L! u D for( int i = 0; i < MAX_SKILL_JOB; i++ ) 1 E5 [, f' f# l5 y( ]* y( V" b/ U ~
{ X0 j; L( V) n4 a4 |3 C
LPSKILL lpSkill = &(m_aJobSkill);
9 v, t0 r) e# | W if( lpSkill && lpSkill->dwSkill != NULL_ID )
, v& ]* \+ I' ~1 ^9 A: M {1 B2 r$ r2 y( W7 ^! U# m3 W
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 i+ q* {* m$ }5 z, x if( pSkillProp == NULL )
" e" q, ?! I1 F6 G+ _) @! y3 U9 H continue;4 ^2 |) C& {# R
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, n& u0 V$ B. d6 `/ O6 ]- I$ o continue;5 g& U" e D5 d6 m5 I4 U8 S
lpSkill->dwLevel = 5;, y- ^9 n+ }( u5 x& z
}
5 X/ j8 r O% r0 ^* U }
; m7 S) |2 h1 `. E }
& T0 [; J! E8 J4 t1 x) X: ^6 u1 g else if(IsLegendHero())
+ ~. \9 p3 X$ c. p {: y- S; e4 }- I) N# b% z1 E
for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 a0 p% A3 O3 F: [( V0 ? { 4 f. o6 t. D! v( ~! b9 [( V9 V
LPSKILL lpSkill = &(m_aJobSkill);
- f8 b4 M4 l( V+ V: ~$ H if( lpSkill && lpSkill->dwSkill != NULL_ID )
% v/ B) K8 \! s4 l) b# `! W {1 l0 ^" n {! A2 `9 r
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % r8 h3 c( U8 V8 L" y0 H( z2 S7 |
if( pSkillProp == NULL )! J* r1 h& {6 E6 e: k0 B) }
continue;- l* f) X' g) S4 E: l" r: \& i
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: q* g8 ^" D4 n; S% s continue;
" o1 g0 w4 m% {' d9 ] lpSkill->dwLevel = 5;
5 j c# \ d( Z5 @4 X }
4 ~* K2 }" J @! L d4 u4 h9 e }
. \4 c/ B2 l- E O }
+ j2 p9 {8 b$ E# U+ f#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 F' q/ [2 ~! ^& c& ~- y! c
if( bGamma )& ?" a; L) n) |' v
{3 Q% [' J; z( v- M- U5 G
m_nExp1 = 0;
: u7 u; Q- M% |. A! c, m }# v1 |, x+ Q/ ~, p+ y! {% R
1 {2 P- p3 l! B ( (CUser*)this )->AddSetChangeJob( nJob );; R$ y, B2 L; V8 a8 ~3 [$ X" I7 e( v
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );& M9 W4 m: L) a0 u1 Q% i
8 ]7 ^) W4 Z# X% K" O: ?* m) J8 ^ A& C9 c% F/ e! [
#if __VER >= 11 // __SYS_PLAYER_DATA
/ w; y4 |2 X7 P2 A8 o, w1 ~! R% w g_dpDBClient.SendUpdatePlayerData( (CUser*)this );; ]: \! w h$ R
#else // __SYS_PLAYER_DATA, _- F+ Y- @" y5 \
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );; e/ j' r; k+ k2 Z. D
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );' r% }5 O3 R/ z
if( m_idGuild != 0 )
- M, @+ c3 R3 F+ `- n1 [- Z g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );1 Q! v: B7 o# A2 B6 z: y; R
#endif // __SYS_PLAYER_DATA
" y6 V W; f8 M* x SetHitPoint( GetMaxHitPoint() );# [6 _# \, d' f! Z; X1 b
SetManaPoint( GetMaxManaPoint() );7 h# p5 q: y4 {
SetFatiguePoint( GetMaxFatiguePoint() );4 i7 T/ D# G6 c) D
if( nJob >= 1 && nJob <= 4 ). b5 U3 i7 T) W/ s- Z* G
{
o. d) l1 s0 z0 K, T7 b m_nStr = m_nSta = m_nDex = m_nInt = 15;9 }7 r3 x0 u, O+ U1 T
m_nRemainGP = 28;8 M( [( {5 U9 D
}6 \7 K& c+ X; n5 y) i( c9 F0 C" b) s
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
; Z- y3 ]$ q/ B; e+ W, Z {
4 F: I. W3 I7 m+ s. r8 n. } m_nRemainGP = 118;6 Q! n5 h; S" p$ [. ]4 e
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
. X. K# {9 x/ x" Z5 C m_nStr = m_nSta = m_nDex = m_nInt = 15;
! L- F2 f4 i4 F9 \/ h% I+ Z- f }; H7 d/ W- p, w
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )+ d$ ]. x; j% ^( c! [4 ]1 r
{0 h, n8 S& u$ H" u0 m. v) d5 W
CItemElem itemelem;7 W1 A% t/ ^7 E9 E
itemelem.m_nItemNum = 1;
+ O* g/ _) a, T' [) O+ A itemelem.m_bCharged = TRUE;7 t5 n* ]7 h1 |: t2 Z
BYTE nID;9 ~5 b9 Y1 P) G$ l
% Z$ m# |2 N3 q) y4 i2 W
if( nJob == JOB_MENTALIST_HERO )
2 F9 m }" J) x# o) ~. E itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
; \8 u; r6 n) Q7 x, P if( nJob == JOB_FORCEMASTER_HERO )
- K7 _8 b) g/ u/ B# W2 a5 x itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;# x+ y% ?, l& o1 q
0 X) l5 K7 K. @7 r ( ( CUser*)this)->CreateItem( &itemelem, &nID );
0 I, W1 Q6 U$ z T* I }* x5 L" r% r8 \9 a, p$ B
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );, |2 K: J1 O9 X5 p& b
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );1 R! |" E) ` E7 n# G
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );6 k- \& l# B9 N- U) X* B' [% m
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
' ~: I# S: z* _3 t5 X ( (CUser*)this )->AddTaskBar();*/" r/ _1 @3 \5 |/ S: _, }0 a- v
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
6 D: h+ Q1 H' _1 O/ h: c: U#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
0 u# D4 _* X" e Y+ B& g" i ((CUser*)this)->CheckHonorStat();
0 q7 S5 U: d. `/ l ((CUser*)this)->AddHonorListAck();* S! Z! F8 k' I2 B
g_UserMng.AddHonorTitleChange( this, m_nHonor);/ V0 w! E! q/ w0 X
#endif // __HONORABLE_TITLE // ′Tà?1 q& e3 z( E- w1 R
}5 Y! Y$ W' A. s: o" P
#endif // __WORLDSERVER
* _! u" K1 X! Z- Y0 G} : R# T: S; O$ P0 C
( |6 i9 \- S5 X( ]6 H( `) r7 A" Z
然后你进入functextcmd.cpp并添加以下9 M' {1 v; v* P7 I6 _
& M' \1 ?5 y% t% G( [. T6 |- D
代码:
$ R1 I! _) o/ m1 t$ l6 h' X8 HON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 {! E6 D0 Q( L# z
下面插入
1 e/ U( h, A' T/ v4 W. TON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) / s3 W4 g( N" W
; m) v0 }8 H. f; I8 ~. i
然后你去" O% o6 A, t% W" B) }8 }
; q' _2 j) D8 ]% ]7 O; a, s8 e
代码:
6 B- M$ Y- C$ p2 P! H: o* D' {代码" {% z- @) y' J, R8 N. Z2 N/ i
BOOL TextCmd_ClearPropose( CScanner & s )
$ V4 C1 [5 `% y- R{% N4 r/ `6 I) q* h' T! {0 Z; Z
#ifdef __WORLDSERVER1 R g3 a! r3 Q2 V$ d: @5 {
CUser* pUser = (CUser*)s.dwValue;
4 x' w& {' @& E2 b( K$ F4 B; j' l. ` g_dpDBClient.SendClearPropose();
* e" Z, K. w5 S2 e#endif // __WORLDSERVER
! V# X U$ W$ j! b8 Y3 X, w9 J3 e return TRUE;
2 @* P6 I' q5 D! X+ Y4 x/ `}
, R: w. C; n3 ]0 ^/ e0 F& p' t+ U# U8 ~4 {下面插入
: f! D- P6 }) g0 m% VBOOL TextCmd_rebirth( CScanner& scanner )
0 K( g' {8 @* x4 U6 B. W# U{( b. l! y* \" F2 U8 c" c# K! ]
#ifdef __WORLDSERVER# C. O/ n+ X( D6 q7 P- g
CUser *pUser;6 a7 _5 h: ]7 y$ Q i0 e
pUser = (CUser*)scanner.dwValue;! W) E% K' j, M* s, T9 T) C
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
2 `+ P. I% b9 W: g7 Y/ S# F! o, ApUser->InitLevelPumbaaa( pUser->m_nJob-16,60);9 E: O3 V4 k% f9 D) K
else6 K& X- o5 A& e
pUser->AddText("你还未达到重生条件!");/ C# x; z& ]6 H0 E8 U) u9 N. X1 z
#endif. B* U+ J+ X1 V: s( L
return TRUE;$ ~) |+ \/ r, Q6 ?
}
( I$ @: u% w2 j5 n! z% B
5 N7 |% `* j$ s2 _1 G5 n" ]! O' R1 H
% [! ~" F. Q! s" z# q6 A" X
7 s1 s/ @$ {5 |1 X |
|