|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel' a+ h3 Y$ [5 Q: s. ^
! g) T* P% e8 u, K+ K
Mover.h: \8 w& C+ u0 \: l
代码:: Q8 }* R+ `( G
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
% }7 Z2 J5 g1 e, k8 _- ]) @
4 i3 }% g0 @# F4 B下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
4 b+ P2 ?; `. t
6 O6 B3 J) c$ j! t( s+ X, I) M5 s2 P5 W8 A然后你去mover.cpp添加* k7 h. s9 l2 J. ?4 O7 j! j
& v- ]) H/ E9 m* g
代码:0 U+ d5 c6 h6 g. ~2 r7 c
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
1 P, |0 F8 S/ b$ X5 r; ~6 F{
- r- @. T; E) w4 e& L#ifdef __WORLDSERVER
- r( L' c w) | // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó- [! U- X2 H- e; F$ v
MoverProp* pProp = GetProp();: E; ^& O- j# y2 b* N
if( pProp )5 {. o4 l5 {% ]' z
{
. c/ n7 e3 A5 A1 {/ m7 L if( nJob > 0 && nJob < MAX_LEGEND_HERO )
& M$ j% x d7 x( f: C) L6 h {- X, p# }- T1 m6 u( t
AddChangeJob( nJob );0 m. S' ~& d: n+ G9 t
}else{# s1 K2 d! V3 \
return;% O1 Y' G& y' q# V# u
}
2 N+ [ P; r; _4 Y* K int nPoint = 0;3 o; a+ |, ~" w6 a8 w/ h
if( m_nJob == JOB_MERCENARY )
2 L# \8 o" J6 g$ g r6 ? nPoint += 40;5 `8 d% k/ X* b0 z
else if( m_nJob == JOB_ACROBAT )
. Q: M! z) x; C$ j3 p6 s nPoint += 50;
6 U" B: X; Y5 F; v else if( m_nJob == JOB_ASSIST )
! _- h9 z- T0 q% x nPoint += 60;
) M6 G7 G) ?) a4 {8 r' V% A! { else if( m_nJob == JOB_MAGICIAN )1 e* k9 G9 `9 X6 p U
nPoint += 90;
3 G9 L6 K8 T% c: G else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
, y% l' b- l8 g* i0 |. M; ?6 T nPoint += 120;
, f1 c: Q, J1 U0 i: {: b& K, j9 M else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: ^) i" y7 X5 p1 F+ z" ]$ m nPoint += 150;4 { }& Q+ J D
else if( m_nJob == JOB_RINGMASTER )9 J; Z7 ~- h* }) X
nPoint += 160;; O$ P7 ]3 a# h, U8 u7 V E% h
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )" I8 w) D( p" e2 l4 }- x$ x
nPoint += 180;3 {4 _* R( ?9 Y/ m' B9 |. N3 Z
else if( m_nJob == JOB_ELEMENTOR )* ~* R* P/ L3 E5 q
nPoint += 390;( V1 J2 g0 e2 `- c( `1 o
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
# R6 G: k& [4 } nPoint += 120;( N- G" p, e) t
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )# M: S5 w4 K/ o$ v; T3 W
nPoint += 150;$ A0 z5 M9 ?9 m8 s
else if( nJob == JOB_FLORIST_HERO )6 W/ l$ O2 q( y) Q5 M4 s+ ]
nPoint += 160;) S; g( N# O5 k. L- I) T
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )1 ^& ]7 x, m4 m7 Q
nPoint += 180;
$ C) @/ X$ F# U: u# e- {8 N else if( nJob == JOB_ELEMENTORLORD_HERO )
: v% @6 k! X4 x9 G2 p6 O) M nPoint += 390;* r" o2 q8 g# }! g" K M
% M: G& V2 B, R
AddSkillPoint( nPoint );1 a2 m2 I. d. e2 ?& k
m_nLevel = nLevel;+ U' Z( B A( W+ [ q" Y
$ [+ D. J* f- Z SetJobLevel( nLevel, nJob );( X6 v" {: ~' a1 O% v
m_nDeathLevel = nLevel;, ~" @- N' @& E2 ^4 X
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 _. M. A2 I9 S! x- V, z7 p
if(IsMaster())1 K' [2 T1 b& w Z
{
1 h$ S4 ]' ]& |1 h! ]1 F3 W; _! h int dwTmpSkLevel = 1;//60, 72, 84, 96, 1085 w1 q( s8 D3 @: a4 Z7 ^" y
if( nLevel > 59 && nLevel < 72 ), A6 E; g' A% v, @ w
dwTmpSkLevel = 1;5 p9 F; p& P/ w
else if( nLevel > 71 && nLevel < 84 )# s. T+ Z8 ]5 Z5 O" F. x
dwTmpSkLevel = 2;& a4 b2 P, C6 `% h
else if( nLevel > 83 && nLevel < 96 )
) g) k+ N( ~6 y O dwTmpSkLevel = 3;
" t' L' i( R1 J* O: I4 z j% F else if( nLevel > 95 && nLevel < 108 )
% [7 [- G- N" u+ H8 [0 g) R dwTmpSkLevel = 4;7 s' l: ^6 g, W$ ~7 @7 q
else if( nLevel > 107 && nLevel < 120 )% L/ U7 ?6 j! Q' q; H
dwTmpSkLevel = 5;# `8 G8 W- X( y' }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 1 t/ A ~$ R' [5 T% U, ]
{
N# I$ |& C Q) S$ Q' G LPSKILL lpSkill = &(m_aJobSkill);$ ^- A& [( T7 |9 W7 y0 C2 U
if( lpSkill && lpSkill->dwSkill != NULL_ID )8 }( ?6 z, \8 \: o
{
2 ~# E& G/ g4 N1 T9 Z7 D ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; f- V" a% S, o& `1 g0 [; v8 M! _ if( pSkillProp == NULL )/ f0 J$ U6 O6 T
continue;
) d5 H# Y+ @& T' w if( pSkillProp->dwItemKind1 != JTYPE_MASTER): o2 z: D3 p/ |( E
continue;
4 A% T/ P6 w; [) A% c lpSkill->dwLevel = dwTmpSkLevel;0 n! I- v) Z" k7 t
} o- N" ^7 t& G+ a6 W
}
( F! [2 Z8 F9 C& K' [7 k& n7 r, J }
% u/ h" `" F0 ^, k: d. P Q else if(IsHero())
$ Z9 ?- v8 q7 K; i6 ] {
* I- Z% p$ W6 i: h- j$ Y# m for( int i = 0; i < MAX_SKILL_JOB; i++ )
( T/ @' G5 K( {0 a1 }! x$ n3 M+ B: g {
2 i: J% R' f' {, b LPSKILL lpSkill = &(m_aJobSkill);2 ^8 |1 Y C7 {% W: e' B- D& Z0 w
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ _$ T* j9 e- N) a' y5 B8 \/ b {% Z' f4 \8 K8 ~ b% r
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 b, U7 @2 x# U8 \6 m0 N if( pSkillProp == NULL )
. h$ q* d+ N7 i1 `$ K# | continue; r V& g9 g; |8 {0 M4 e2 v
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: p* O0 q( g: d- [. [ continue;
4 g1 C- ]1 [% o. E6 Q lpSkill->dwLevel = 5;- e, h+ W% k, L: d9 v! m
}
0 R/ g% Q2 ?. [/ q7 N/ ^ }. d) J( l; J. R! p
}
5 g+ A) r5 r1 |# P7 Q* ~( M/ Z$ t else if(IsLegendHero())
+ ]$ ]2 N) j$ I {( _/ L2 L( `3 r
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 b: Y7 ?, P# V2 i& T' V
{ / m2 A! P" j2 A2 Z
LPSKILL lpSkill = &(m_aJobSkill);
' a/ v" o5 B1 w6 d+ j; e if( lpSkill && lpSkill->dwSkill != NULL_ID )% n) J. u \5 T; ^! @5 I& q2 ?
{9 Y" e4 u( W4 n" H# w; b
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . e F y/ Q' Q0 k% d7 j
if( pSkillProp == NULL )
. T! g) D% y# L6 w* J( |: x: C) ?! J continue;8 t, w' `0 F6 |+ U
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( q$ h4 O* f7 t; n v- u2 c. f continue;
6 p2 O; k5 ]( o7 u- r lpSkill->dwLevel = 5;, k6 y7 P& k) @+ p/ i( S8 V
}
4 Q1 N: f+ q* q2 x& T% G }4 h" v, _: B8 ?9 L: q: |" W5 a
}; F4 X: V8 T( z& H6 B
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 K! l5 r A$ L" P" g# ^1 O6 g
if( bGamma )
) v M9 T4 B: `+ v$ p {/ }6 q5 \( G ?+ H3 n2 R8 G4 v
m_nExp1 = 0;- s4 _5 j; Q# g9 R; g j
}
7 \+ K0 L3 Q6 U7 V$ W R
L' a1 c$ i Q% n5 s ( (CUser*)this )->AddSetChangeJob( nJob );( ?- G5 N9 P4 o& M$ Y% |- }
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
: H/ _( i9 H) ]( I3 \
2 n& E- A$ M0 g5 G ^7 b( D% s1 Z, r7 u) V8 ^
#if __VER >= 11 // __SYS_PLAYER_DATA X& e! b2 j( x+ p& p2 h. ]; W
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );5 Q. ?& A6 w: p
#else // __SYS_PLAYER_DATA) X6 x1 c/ ?" X5 q% e8 e
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
\7 v4 Z, ~% B g_DPCoreClient.SendFriendChangeJob( (CUser*)this );0 E6 ~7 J/ Q7 I. k
if( m_idGuild != 0 )
, U0 i+ Y7 Y* O g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
|7 W% T# V& n#endif // __SYS_PLAYER_DATA& e& b" P7 [' u9 u4 E2 s7 D$ w
SetHitPoint( GetMaxHitPoint() );; D5 o( x; l% L; U' l7 A. N8 \
SetManaPoint( GetMaxManaPoint() );
9 m5 A+ f7 q) ]0 X8 @ SetFatiguePoint( GetMaxFatiguePoint() );; F" b$ s- m' b1 h3 S& X
if( nJob >= 1 && nJob <= 4 )
4 z S5 j! V8 l5 a& f {6 v4 Z" g5 ~% X5 M0 o
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 a4 p$ D8 o2 P8 Q9 w$ j3 k
m_nRemainGP = 28;7 _2 e* k- i5 s% ]
}3 W. L6 J8 J& Y1 W$ e% E
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ). s/ w& Y+ h3 F2 q0 I l& {
{
8 R* ~7 y& m5 H! X; r m_nRemainGP = 118;
8 C% O" X# q4 d) G# _! `8 r //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
6 [6 _6 ~0 N. S m_nStr = m_nSta = m_nDex = m_nInt = 15;, c/ O1 C i# C# L, ]6 M* b& Y8 ~, n/ ^. D
}
% [5 v- s" B3 e, E2 A, y/ S+ s# B if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ): r4 Q3 u2 K# f2 a% C7 I. B0 S
{& ^4 Z" q# f% x+ K3 y* S7 C
CItemElem itemelem;
' L& R" W. f9 J2 `" b# I9 H3 ` itemelem.m_nItemNum = 1;
3 c! C' X/ }3 O0 U itemelem.m_bCharged = TRUE;
* P: w5 c# H' ^3 f6 C4 j9 B( a: N/ O0 t BYTE nID;
( d* }& Y C/ m1 A/ P7 F
. i7 o) j. m6 o$ H( i+ t if( nJob == JOB_MENTALIST_HERO )
& H+ m! n* _2 }- h: p8 C" X itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
% h3 T* a5 |6 N7 A if( nJob == JOB_FORCEMASTER_HERO )5 p) U$ Y1 x0 Q% _' K# V, w4 p
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% W) T: {1 r7 n" l: L& U% Z5 m5 W4 g, z9 \5 U. f
( ( CUser*)this)->CreateItem( &itemelem, &nID );
4 H: A9 N, e1 x* Z4 \ }) _& L' Q$ `4 a6 P. E/ g
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
2 g6 Z" L- f8 } ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
) C7 k! o; w+ \ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );" h1 p6 }" W. n& B! K* Y' z6 h
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
; `3 [& c! F7 l8 z ( (CUser*)this )->AddTaskBar();*/
4 j3 v5 c) u# d# }7 a. Y ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );7 q) A. y, A& s% j
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
6 I- S( [; k% M& j+ A4 ?& s, f$ A ((CUser*)this)->CheckHonorStat();
a6 [* T) k9 h2 E2 s/ A ((CUser*)this)->AddHonorListAck();( J& @+ ~! A" O: Y% O8 {
g_UserMng.AddHonorTitleChange( this, m_nHonor);# t3 ~; l1 O' H
#endif // __HONORABLE_TITLE // ′Tà?
: e% H# H6 d; j; E& e% J }, ^: z8 E5 i, [% Z% Z
#endif // __WORLDSERVER
& N! `: Q4 z% G% g+ e, S; n}
# B3 ~$ K6 t5 x3 o- Z9 d9 j2 q7 C: w+ `# y! e
然后你进入functextcmd.cpp并添加以下
6 a% L- H, }3 N. ]
|- p8 f2 L3 s代码:: b( ~, D# J5 g5 R' L$ t v- v
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )' f" `. ~) p& e8 `* o% }
下面插入
5 X. j% m; C7 h, O) y+ FON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 4 w" D4 m) Z4 G x' O& i" ]
* |( y( ^+ E- @9 N4 n( S: R
然后你去
! z3 _! n; [+ W3 t& E9 ~6 D1 N R% t$ G7 p
代码:2 c; q% s! x) M% Q, T v" R
代码
$ `) K+ b* Y7 X) f1 xBOOL TextCmd_ClearPropose( CScanner & s )
8 N9 o- K/ D" Y# P2 d{
1 X5 P* t6 t# e5 G; ^" y' F5 y#ifdef __WORLDSERVER
1 W. ? `- _0 p! ^: t- ]: u* d& T1 } CUser* pUser = (CUser*)s.dwValue;" P1 O3 O0 H5 @! e
g_dpDBClient.SendClearPropose();
" L2 L- {; B) s# T* k- x# S# h' \#endif // __WORLDSERVER# [& f- C% k: Q0 Q; u3 n l* \
return TRUE;
0 {, ^! u9 X: T' L! i# D}) q, u- A6 U" S
下面插入
4 e1 I% l$ c, R ZBOOL TextCmd_rebirth( CScanner& scanner )! T* z* G+ a" z
{
) o; O4 w+ k: G! p/ Z( `#ifdef __WORLDSERVER
; b/ w, r$ B! S, }* NCUser *pUser;. y2 S/ J8 h4 G3 q* E
pUser = (CUser*)scanner.dwValue;
, A0 m, W7 V) h4 g7 @0 Uif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
: z. Q# S& }$ w0 @pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
9 u2 ~% {" Q3 m, Selse2 b8 T: N( S2 Z/ { _% X% ~. w
pUser->AddText("你还未达到重生条件!");
4 @# L* s% P. g5 S$ V1 ~( E#endif
" B n3 S d5 U6 Mreturn TRUE;
5 g* ?1 |4 t4 b% g}
9 q: u1 r2 Q) v1 i8 g: a- d6 `( {3 m* {7 b% O" f# O3 a0 G
) s m5 {7 M- `- V
2 W6 E2 b. b$ L- \+ D
* w2 i+ i5 J1 M3 { |
|