|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel1 p0 W3 ^3 c$ }* R' X
4 P$ ?2 Q( I+ }% ^& O, E AMover.h$ V8 J0 Q) p- a
代码:% C8 z5 `. f, i( F. D
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
# i7 v) \! X: r2 Y8 x: M4 Y, P8 D q
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; : I5 }( o; N2 ^8 ?3 t/ Y" z
: M! z- F" o- q' M2 v& e/ v3 l6 }( a然后你去mover.cpp添加+ w8 v+ ?* ~: J. T
% c/ Q$ l9 H" c代码:/ `9 J, T$ @) t7 [- j- O3 d0 b
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ p% j* [/ L }5 u+ _{
* {! V- N4 U6 S+ }#ifdef __WORLDSERVER8 J; ~1 n+ l# e- Z
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" k. N n0 n2 V1 }. N, m3 a MoverProp* pProp = GetProp();1 ]2 ?7 m1 J; p+ \( L" u
if( pProp )) G( r0 M! n6 N# y; ^, F
{9 A0 E) d2 d2 o
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
! ~# V# h9 z% p {# K3 ?3 l! K6 m: M3 M
AddChangeJob( nJob );
! ^/ p. [' ?5 Q }else{
, U% ^4 @; i, G j4 F return;, f8 F3 f# V; ~ f/ c' b
}# B0 H( `$ Y, N; o8 |, v; t
int nPoint = 0;
9 X$ e3 J% ?$ J, @ if( m_nJob == JOB_MERCENARY )
1 Q9 u; Y+ F/ B3 `9 v nPoint += 40;
3 X V; v: U4 F9 B9 ?- b else if( m_nJob == JOB_ACROBAT )
6 m1 F$ j0 p1 [1 C nPoint += 50;
- B0 k" @3 E! a0 |4 d+ H else if( m_nJob == JOB_ASSIST )
2 U$ k5 g" z: ?. }0 { nPoint += 60;/ A1 G3 ^ s# Y- f
else if( m_nJob == JOB_MAGICIAN )
. ]( }. M" d1 O5 q nPoint += 90;
; [2 k8 H9 ]# |, u( a8 S# w else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )# X+ w8 A) T! `6 W; e! h" X, s% a
nPoint += 120;
1 C6 H9 r3 B$ z; c6 m% y4 m else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )) k% a, E7 H% M9 T" w
nPoint += 150;
' n8 T+ ^+ L; I$ z C/ @4 e5 | else if( m_nJob == JOB_RINGMASTER )' \0 [2 ^% n; H, o+ A6 v5 B$ {
nPoint += 160;
) O5 g# V, d' g# v8 a5 q. q else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
. X* B7 e: H0 Y5 N. G" a r nPoint += 180;7 |1 C& B8 a* h% |3 E6 |
else if( m_nJob == JOB_ELEMENTOR )
2 o- ^' {* `' A' f) {, [# I: b nPoint += 390;9 E1 {" I' M( {% [
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
0 j2 `( S8 N- h nPoint += 120;) [1 g8 _7 N& p7 i
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
. ?; Q; Q, |! R& m( J/ W- Z nPoint += 150;) [8 X) C# \ d) k4 F4 v8 E
else if( nJob == JOB_FLORIST_HERO )
1 ^5 d" T( i& @# S2 J: K7 ^ nPoint += 160;
- X6 \; l7 }: K- m else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )0 E: t* |) q. V
nPoint += 180;
. k- t! B- h" G1 [, E0 t, z7 ]2 G$ D else if( nJob == JOB_ELEMENTORLORD_HERO )
! G; ]5 b S9 o! W nPoint += 390;& E) r! ]/ G, \- f; d
6 i0 A% y+ ^1 L3 X; D% o' o9 I
AddSkillPoint( nPoint );& b/ _9 a* g' ^8 [ ~# @
m_nLevel = nLevel;" i2 | P5 Z" V K% A; q: X+ x+ V# n- }
+ F9 i8 Y7 U6 |6 f. K2 Z
SetJobLevel( nLevel, nJob );; V. U( S V; l# {/ N+ m
m_nDeathLevel = nLevel;8 U& j( G4 F6 |$ g" u* a5 x
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
$ e7 k1 K& v6 s. P% W4 U if(IsMaster())' I) y( c3 _5 H0 R
{' O8 f$ V" U# P5 k" h
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
9 o A3 D: _( z if( nLevel > 59 && nLevel < 72 )8 Z4 V n* F1 ~8 ?
dwTmpSkLevel = 1;
$ A/ y7 Q7 d( R/ ?2 L4 v7 c else if( nLevel > 71 && nLevel < 84 )
& U# P* O7 x I2 C' f dwTmpSkLevel = 2;
5 F. V! m4 O7 l6 z+ Z. o- [. a else if( nLevel > 83 && nLevel < 96 )# J. T+ N& k0 y- }7 Q3 F
dwTmpSkLevel = 3;
5 G# j6 j% x2 {/ M6 S. G O8 M else if( nLevel > 95 && nLevel < 108 )
5 B% @' Z1 h8 l# D0 z$ P' q7 @ dwTmpSkLevel = 4;+ q; g, \1 d3 V1 W! E# O$ g% E4 [
else if( nLevel > 107 && nLevel < 120 )* p* B' E" X" O8 i% _
dwTmpSkLevel = 5;
6 B( e4 M% T# X* A+ w4 h, k9 Y3 s for( int i = 0; i < MAX_SKILL_JOB; i++ )
/ K9 Y( r- q' @$ o { 1 o: G" F4 r, h6 v, w* R3 c
LPSKILL lpSkill = &(m_aJobSkill);, Z8 M1 f3 S& A2 \+ H
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 N! a- `' J& Q* J {
0 ^4 x: j; m1 C, }% |4 K ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
' f; I+ D, I$ m' R if( pSkillProp == NULL )! e) I- M3 {! x
continue;" Q# f8 D, \, ~2 K5 v( J3 A
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 R8 d( i, D& \' `
continue;9 c. T1 y$ Y/ Q9 v
lpSkill->dwLevel = dwTmpSkLevel;
6 W+ j7 O& o8 I d4 ^$ h }
/ w- |8 ^: s7 q+ V }
9 q8 _: k3 _" |% o7 U. d; D$ {2 f$ o) m }
5 M- J' Z/ d1 D/ z else if(IsHero())
( x$ E% K$ V7 r' ?! E# ]# U3 s {/ T, m+ [$ w' X0 ?5 ?
for( int i = 0; i < MAX_SKILL_JOB; i++ ) & r7 {" l; k( T; i
{
4 [) F9 I9 o @4 ~7 ? LPSKILL lpSkill = &(m_aJobSkill);1 P8 }) }4 }* {. M* u3 @
if( lpSkill && lpSkill->dwSkill != NULL_ID )/ G* W7 o r4 X3 R
{/ A0 X }5 s! h% L i
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & e! {% J: s( e8 [9 a
if( pSkillProp == NULL )$ \0 r8 B3 X4 G; g; M( T( `5 L
continue;
+ b( P* j0 o! k9 n$ R if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 _2 s& {# m6 g _. z
continue;8 b& N5 x- O$ }( n& W9 f5 v
lpSkill->dwLevel = 5;! P0 f8 v/ Y* `' d; D
}
. C' ^; F2 A$ p }. i r4 C; k/ b- C) x- _$ e7 v/ \
}3 Z6 F% E3 S% S5 n) r4 U/ f
else if(IsLegendHero())
# p' F1 L* ^& l @6 b1 t* J {
' b' P% S$ o0 Q% N/ F for( int i = 0; i < MAX_SKILL_JOB; i++ )
. V5 D3 U( r+ N { ; J, h2 Q! P: W; _/ l, \
LPSKILL lpSkill = &(m_aJobSkill);
) ]4 q4 V$ @( k: w- f if( lpSkill && lpSkill->dwSkill != NULL_ID )3 ]3 M6 ~+ a* T1 V' n( M% z
{
9 e; Q- n" V& j/ n2 U. o: d ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ a# e+ A- A$ J0 d, X% w
if( pSkillProp == NULL ): Q) B5 O) u" |; I- ]
continue;5 U$ T4 x) e3 G) D: B7 w* [2 [
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- `. x8 D6 `8 Y k0 e5 E
continue;9 ^, _2 z8 k& x4 n
lpSkill->dwLevel = 5;3 B; _3 M/ d) [( Q0 V* F
}
+ D% E( o9 i( m }
2 }" d2 V0 F" f3 H2 B }6 [0 b+ q5 G5 l& y" X9 l0 m L
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 t% v( Z/ d. F8 \! K
if( bGamma )% J$ ^$ N/ P$ y0 q
{
, m2 y% ?$ G( M9 b: U" R6 _. @8 m m_nExp1 = 0;+ O W1 p. a4 ^% Y+ r% Z1 ~' F+ E
}
g: X! M) h( E' t- I
% Q7 u* Y, _8 w$ r, @3 m1 p7 e ( (CUser*)this )->AddSetChangeJob( nJob );& A4 C: f6 I! Z, G3 C
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );) `' B4 r" s# `3 S: q- o. ]
8 s' ?2 R q) ]3 Q1 b1 ?3 N
5 w1 U7 x+ q( a6 a! E5 N9 a#if __VER >= 11 // __SYS_PLAYER_DATA( ~! o, ^ | j7 P: r9 [( V
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );' H( W. D/ e% w! u; Q
#else // __SYS_PLAYER_DATA3 ^6 C9 S6 H% R8 Y
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );+ L+ w, w+ c# m' h% a2 M
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
& A3 z$ |9 b! Y3 l# v if( m_idGuild != 0 )
( A8 |: A7 L# S g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );1 U) ^# Y. w0 X" t$ t! ~/ p+ A
#endif // __SYS_PLAYER_DATA
9 i. Z+ E* T7 E( R SetHitPoint( GetMaxHitPoint() );( \* D; I4 ]4 ^" i+ ^8 L9 Y
SetManaPoint( GetMaxManaPoint() );% V2 g1 x) A1 E+ Q# O& a
SetFatiguePoint( GetMaxFatiguePoint() );9 S; s: [. b( ^, ^% {% Y
if( nJob >= 1 && nJob <= 4 )6 M; c5 g+ D' e9 J9 l5 C3 u) I
{
1 c5 l6 ~1 F' D4 C# x3 O. T m_nStr = m_nSta = m_nDex = m_nInt = 15;' |8 y/ T, v7 O' a5 Z) u0 Y
m_nRemainGP = 28;" W6 o2 r: [/ _$ J8 @; W
}1 p1 `+ F3 a, |; v& s$ i+ _
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
& _ V i; T2 T# B {4 X; Y# ^' v) G& l2 I
m_nRemainGP = 118;2 } L, p' x1 t/ `
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
9 N, m" j7 G4 d @" j& { m_nStr = m_nSta = m_nDex = m_nInt = 15;( E* W* Q' g; [0 t' U* T
}
3 t$ I- ]# q& K if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
7 q. E, Z# N% { {5 t' x* ^/ Q6 P5 w) A8 j
CItemElem itemelem;3 R. K0 B" I* J$ p
itemelem.m_nItemNum = 1;
2 ?. s% I$ n; m) ? itemelem.m_bCharged = TRUE;8 T1 _: Q. k8 j C: i/ N
BYTE nID;
# ~! s8 f& D/ e9 y+ A) r
- n8 `+ h+ r6 `1 a3 G if( nJob == JOB_MENTALIST_HERO )
2 w" Q1 Q6 l* U( [% o3 V itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;: H) N* g' w) o+ e6 K
if( nJob == JOB_FORCEMASTER_HERO )
2 \3 \8 n/ j( Z- ~- C8 \ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;/ H+ H; G" a8 l8 f. }4 M* ?$ v% d
& n$ v# s% r) X2 Z" I# K4 b ( ( CUser*)this)->CreateItem( &itemelem, &nID );# V# j* K$ b- W( j3 @
}
" q8 S+ f. z" ]$ q g_UserMng.AddSetLevel( this, (WORD)m_nLevel );0 G- B3 ^+ g. C9 w* q$ H4 c; |
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );5 `8 b; _ {- _
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
k, s6 ]4 v/ ^2 w* ? /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );8 x4 }) E& S3 A8 A3 D3 C
( (CUser*)this )->AddTaskBar();*/7 t1 V3 ?# N. V" L/ v+ d2 u) x& J
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );: b- M% {2 r, r$ O* v, p: q9 o7 Y
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
# t: R& \3 W5 x* B) \2 y: {1 U ((CUser*)this)->CheckHonorStat();# H5 O, [1 c( s9 d1 o$ ]
((CUser*)this)->AddHonorListAck();2 |6 r" F; S- @4 V5 @# F& y
g_UserMng.AddHonorTitleChange( this, m_nHonor);
8 |* n6 e5 m. S e#endif // __HONORABLE_TITLE // ′Tà?1 V8 b; L) ~% j* i; _! J( Y
}
5 r: G# l5 `) c- E. o: h#endif // __WORLDSERVER4 ]$ F& A; E4 I3 w3 P' q1 G7 i" s- u, W
}
' r# Y" U& w- p* U R! Z, N: k( V9 ?
然后你进入functextcmd.cpp并添加以下
5 f |, e' m2 d6 y' v
* p+ V ^8 ]- B" D; I代码:
o. U( e8 C: nON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
4 X3 O7 B& F' n* B5 K9 R Q& W0 V0 H下面插入% A+ I! Q1 I2 ? g9 u9 [; n% F
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 3 c3 \# h8 t1 ]5 _. {
6 j- r# A# i$ G5 p) A6 H( W然后你去; ^* x2 V/ R; N# I/ H5 N) e
) ~7 E! D- x# n代码:8 p. H+ D8 y) z# O& ?% ]1 h
代码2 {" g; G2 k/ P' p, h4 P$ n8 K1 j0 q
BOOL TextCmd_ClearPropose( CScanner & s )
% V! j6 d( q, Y+ I# J{
: H0 d+ |- A# \1 V" v- Q( m#ifdef __WORLDSERVER' z" U8 x) Y5 N }- x4 _1 `
CUser* pUser = (CUser*)s.dwValue;3 Z# D; k9 e5 o( R3 T
g_dpDBClient.SendClearPropose();; |; Q% U/ I5 H* _5 h
#endif // __WORLDSERVER
: U, G! r! t) g; U( e% N% B return TRUE;3 {7 g8 O+ `+ R7 Q$ a
}' O/ z. a5 a( X0 a1 R! |
下面插入) `* E# s" m$ @* _
BOOL TextCmd_rebirth( CScanner& scanner )
) G2 Z9 c% s5 T+ P# u2 q- E q{( S+ w: N& f- e# x. P% N" i
#ifdef __WORLDSERVER6 m. g, B) {7 b( }) M& ]
CUser *pUser;! @% }) N9 z w9 Z4 \
pUser = (CUser*)scanner.dwValue;1 ?9 s0 E3 I, w) N) S
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()): b, s/ @5 i9 q3 u7 ?
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);, c2 r5 x4 C, f z1 u1 ^
else( p& U, y5 ]$ u0 r0 {5 d) Y- z0 Y
pUser->AddText("你还未达到重生条件!");: C, @ T8 y, i! u% X6 |
#endif/ m4 q- k+ k% v9 y* y; i% ?2 t
return TRUE;
# p, k' E: x& p: W. ^, n}
/ O8 V7 _2 T& Q4 `; ]0 Y; N
: x: V' x* b5 K. Q
; w# \' m. A8 C% c9 |
1 P5 r. \4 {- n5 Z1 t; ^/ o1 y4 Q0 J) v4 I( L8 l
|
|