|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel3 S, ~, P7 G# b0 @0 r
" Y9 U% L% I: l4 ^Mover.h
' E Z; t9 v. S# c$ T/ E代码:
; T- j6 |, c" x$ A8 ^' T找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
, q- h/ z4 j+ g3 F1 n9 | q
5 Z4 q* g: i, h2 {& w下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 6 j) o8 [7 t2 C9 S$ ?. W3 ~ |
5 [: g4 a: a1 A然后你去mover.cpp添加% u) i6 M4 }% s' ] }' L# b% G& M
- [8 q% @: U2 N, B
代码:
" A v1 {1 |+ hvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
. N3 Y' I6 w% n& [6 @1 Q{$ Q' J6 m! K9 d+ }2 o4 p
#ifdef __WORLDSERVER
2 I0 E# T& c0 q# O* h3 _2 W // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
5 j5 v/ O$ f) H+ O MoverProp* pProp = GetProp();# |' Y: v1 w% T" d% l
if( pProp )) V( o9 o6 M2 y
{5 R8 r* \4 m1 U; d
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
# o: J8 K7 i. q5 I {8 Y7 `7 E" D; r' V" l; F
AddChangeJob( nJob );4 T- d1 {" B }
}else{
( d& ^! H: u; d x# a return;! [/ A* Q( g7 H0 q; f/ v6 c# H2 n) t; w
}
8 Q: b% }8 [2 ~# a) V: @, ~ int nPoint = 0;
, ], t! x+ a4 A& b% o if( m_nJob == JOB_MERCENARY )' {! {/ b' M6 O' m7 i1 w7 ?3 ?
nPoint += 40;4 Y" I5 f" t0 m9 ]/ ], H* F
else if( m_nJob == JOB_ACROBAT )6 k) v1 n0 L& _( \+ J: `
nPoint += 50;( e3 ~9 o+ K- e
else if( m_nJob == JOB_ASSIST )+ _- x0 R" ^; U- M1 j; o, A: Q
nPoint += 60;
" s' N: r3 ^6 b s else if( m_nJob == JOB_MAGICIAN )' j V' C; I8 x7 j9 U
nPoint += 90;
8 G$ C1 w! d% C9 h else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )% t4 x/ T8 U) `6 X
nPoint += 120;3 {1 i/ C; L" M' ~ b M
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )9 i' C% T) |3 s* n v
nPoint += 150;
2 F( r( a2 B( e2 s9 d else if( m_nJob == JOB_RINGMASTER )
* o+ \, c: _! j; `6 j H/ ] O6 j nPoint += 160;
# b3 [; b/ c/ j, W else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
- m9 k1 U8 T+ s, O; m nPoint += 180;
1 f+ C$ X# @8 H7 z$ w) F) s* T* Y5 B else if( m_nJob == JOB_ELEMENTOR )/ y0 S- |, d9 V" ~! o
nPoint += 390;5 P& z+ ?" z z' a) v6 A
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
/ G' @& x6 D6 @) J- a nPoint += 120;
% G! O" E/ K' V2 D2 u else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 D+ j/ W0 p2 v) K h. X2 c nPoint += 150;# E- W2 b- J! I8 K" p. U! c5 u
else if( nJob == JOB_FLORIST_HERO )
1 ?: v1 c' Q9 A6 u3 p- s+ w+ ^1 o- | nPoint += 160;
' c( I. O6 ]' F' j9 `3 i else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
4 W5 u3 Z' C/ E# r7 r# K1 e) b nPoint += 180;
8 p% k& L# d+ T4 V3 k- J else if( nJob == JOB_ELEMENTORLORD_HERO )9 D" @! a0 U3 A4 j, o
nPoint += 390;) m2 Q; e7 M2 n3 |1 Q7 j
7 ~# l5 ]2 b2 i: d
AddSkillPoint( nPoint );' }. V: E3 v% ^# P( l5 _ ?
m_nLevel = nLevel;4 o, T; ^! l8 {' W" ]: v
" M% ~) r7 C0 M1 s5 C7 ?
SetJobLevel( nLevel, nJob );& t' a5 O ^7 U0 k9 M
m_nDeathLevel = nLevel;
( I, H! G% n+ C, H0 p! p" y4 d#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 t2 E- k' T2 r
if(IsMaster())* p- ~. t' y h0 ? N/ p
{4 G8 K& | ?' G% i+ c+ y) y, e2 H% N
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
: S5 U4 _# n* T" g if( nLevel > 59 && nLevel < 72 )
; @4 U3 a2 B3 g3 i. ^" c" `* X( s dwTmpSkLevel = 1;
& G* S- c, u* R. Y4 s" q0 v# R# o! a( I else if( nLevel > 71 && nLevel < 84 )4 ]- s' J2 y$ [& r1 O) z: ]) n5 A
dwTmpSkLevel = 2;
0 w- p& e% S9 x, A; Y/ N else if( nLevel > 83 && nLevel < 96 )
+ J) e, r6 L6 A) W4 c H dwTmpSkLevel = 3;
D% R& |( N8 Y) h else if( nLevel > 95 && nLevel < 108 )& j0 v/ V% P$ J! z
dwTmpSkLevel = 4;' N% ]7 B: X- }6 \0 H6 N* s
else if( nLevel > 107 && nLevel < 120 ). n1 Y8 ~3 G. Q4 @
dwTmpSkLevel = 5;
0 d6 u5 L* g$ w for( int i = 0; i < MAX_SKILL_JOB; i++ )
! i: ~5 \- e! x" I {
4 ]5 v, ^" N9 ]1 }8 Y. [ LPSKILL lpSkill = &(m_aJobSkill); j3 z$ P6 U1 g! ^
if( lpSkill && lpSkill->dwSkill != NULL_ID )& k; n: X- S) c4 y
{9 L7 ^2 n8 f9 y+ C& T. c
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) K R7 x3 r* Q6 T7 `7 D2 G' ~ if( pSkillProp == NULL )
5 B0 F" e8 K8 j+ X" W# R continue;8 h! |& T) D; b+ g: J' _
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 _4 T, g# u. R% |) s continue;
c# t6 N/ e$ M3 Z lpSkill->dwLevel = dwTmpSkLevel;
; a) N1 {; }/ V9 M$ Q8 H, h1 k }* H& X4 S( N+ U0 Q" n
}* M. R) [* O+ ]+ b. u& k/ k
}
7 q& A# u" I0 l9 g# k% N; f else if(IsHero())
$ b2 |( u$ N1 Y" r6 }% a9 ] {! m' o N# I0 U! p7 u( }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) : H8 d1 T9 {. J4 ]4 ?& ]
{ 1 f+ L& ^7 D( z/ ^6 R! l1 s
LPSKILL lpSkill = &(m_aJobSkill);' m5 g2 G+ M3 l
if( lpSkill && lpSkill->dwSkill != NULL_ID ); } c1 ~( q b3 {/ b
{
/ O0 f* O' `+ j- W! V- b0 m) o: J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* E% N9 E4 u. ~ if( pSkillProp == NULL )% H, V% E3 m+ N
continue;
2 _5 u! t% x. u" d* q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& u! h0 R- F# M6 A& O0 x F1 H" {
continue;
; t* @. q$ Z7 |1 _ lpSkill->dwLevel = 5;
/ j; Q/ H: J# I( e1 N) P2 U }- X! r; _) S0 ~ E7 J6 c# |
} c* o# h% o9 f) ~; J
}4 u7 {1 A' p/ ?3 x$ q
else if(IsLegendHero())' w- l' j8 f7 Y) P V! O
{
$ ~0 n$ x, J- F/ z W7 K4 { for( int i = 0; i < MAX_SKILL_JOB; i++ )
! L5 c) T& `0 g {
. X" G& Q0 e1 O0 m LPSKILL lpSkill = &(m_aJobSkill);
[& \' z! o) r7 r if( lpSkill && lpSkill->dwSkill != NULL_ID )
# q6 {5 p. s2 p2 x& R {
1 G. _7 O+ d, m/ i% w4 W4 y$ I ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
0 A3 \5 M* t& W$ j! b2 k if( pSkillProp == NULL )5 W' q3 i1 R* n3 D- w
continue;, s. T+ G& b, T- u" D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& J9 a9 t+ y0 d; w( E: a+ p/ X+ u5 `' m continue;9 k0 U( C6 t( P% L
lpSkill->dwLevel = 5;
! O+ B( m7 m8 D, ?. L }
! j/ b) e' ]6 f; j" O0 ] }
3 z3 o7 u. c: {# T5 o7 @! _ }
1 d* ?* [& k. g+ s( n* |#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans8 N- f2 I' n2 f/ x9 W
if( bGamma )6 V$ p; a# B' u+ p
{( S- T4 ]- r1 m
m_nExp1 = 0;
2 G% k, F2 A! q" z. i }
& N6 w/ A; g9 Z& ^1 D# R5 w) }
( (CUser*)this )->AddSetChangeJob( nJob );' ^+ w( W. {+ g8 `' M0 L
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
. g7 C5 ]1 c: Q! i7 n
0 U- f2 d6 k; j' I8 s8 a7 S- G9 Z! n1 N- m( i
#if __VER >= 11 // __SYS_PLAYER_DATA
y+ K. Y9 h$ @- D6 l g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
o( v* H& N* \- M#else // __SYS_PLAYER_DATA. A5 X: E) q7 O0 P
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
1 p a+ r2 K: _1 N g_DPCoreClient.SendFriendChangeJob( (CUser*)this );2 r9 V. k& Q& Y1 b0 i
if( m_idGuild != 0 )
5 T5 R! ^, s# k5 W+ g/ M g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );2 W W2 q+ ]/ y/ }3 B# V
#endif // __SYS_PLAYER_DATA4 X1 }# X+ [: z7 e7 G; i/ h
SetHitPoint( GetMaxHitPoint() );0 V3 o: }* E+ W/ N5 ?; Q, {! E
SetManaPoint( GetMaxManaPoint() );* X, t; w( M9 y" y! z
SetFatiguePoint( GetMaxFatiguePoint() );4 \4 b; J7 w" t& G! O
if( nJob >= 1 && nJob <= 4 )
5 S4 h1 W) O4 a8 ^1 u1 x n9 x: B {; a- n4 C0 |1 e& u$ P( [3 A
m_nStr = m_nSta = m_nDex = m_nInt = 15;
! j; u" }! u& m; g8 }6 u J* x m_nRemainGP = 28;* @0 c* M! m! _7 X( V' z8 S- [5 {8 y8 K
}
" [2 V* _; C: `0 c, W, B4 i; Z0 q" Y if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
# D, p0 q# y8 b$ q9 t: t0 y; V3 r {
' m2 o( a# y8 k; ^" o m_nRemainGP = 118;
. I9 A- E& @# Y6 A) S8 g k //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;6 ]/ M0 i6 _6 f# ~
m_nStr = m_nSta = m_nDex = m_nInt = 15;. }3 }2 }( z6 W3 g) w
}2 v* y. ?+ z3 Y3 @9 J
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )) k9 G8 p# p3 p$ E' H
{
' n+ T) t% p9 h CItemElem itemelem;
; s; W) [4 T( P itemelem.m_nItemNum = 1;
! H/ O7 L+ F1 |' o, ?7 z) W/ D' a itemelem.m_bCharged = TRUE;
; D; V t* w- H BYTE nID;
1 j4 q- U, \# L
/ N" [: I9 H$ g& b, E$ o if( nJob == JOB_MENTALIST_HERO ), U; I7 |7 _" A" v+ y7 Q. [
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
% W5 y. ~' ]& v+ D5 w4 _" I if( nJob == JOB_FORCEMASTER_HERO )2 y# I2 r9 Y6 e
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;) h }/ ^5 O% ^2 l+ D( ^* q& E g
6 c, [6 x9 r0 d5 o1 U" { ( ( CUser*)this)->CreateItem( &itemelem, &nID );7 O& ~9 u1 i0 H7 ~* H4 N1 ?6 s4 l
}6 K4 V! q9 x+ s+ s7 e
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
: s. l; g) |' X) x ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );! u3 n. H* J# E2 B
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );" `! L/ g' q4 L+ ^
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
, z! A5 Y1 L" J! t; C S ( (CUser*)this )->AddTaskBar();*/
5 z$ T6 k' ~8 c! E( \5 C% I ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );& {/ g5 ~' c* ]/ o6 Z
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?+ l# O/ v- K& A! z& {) P' D E
((CUser*)this)->CheckHonorStat();
) R" Q9 c( \' [* J; n ((CUser*)this)->AddHonorListAck();
/ W' y; r% U2 L3 V! U1 Y, C g_UserMng.AddHonorTitleChange( this, m_nHonor); x, g, C+ A' s" F! x
#endif // __HONORABLE_TITLE // ′Tà?! z# P/ U3 L' {
}
) h$ Q, F. g3 z1 k1 u, C. M0 b `#endif // __WORLDSERVER; {/ k( y% h- e
}
. R( a; W& s' c% {6 ]% S7 t
9 k, z/ t% H1 D然后你进入functextcmd.cpp并添加以下 m1 c" K5 G9 L8 c, Q2 F
' u# Z9 b! h9 I2 K代码:
6 q7 ^; p& x1 zON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )' B; V( }4 n3 L& }' @
下面插入
* I5 B p- B4 \1 T4 h! wON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ( V- m/ Y7 ?; J
; V3 B D2 D% [& Y然后你去" O- O% I, a+ i9 C
' u' q% Q! w: o; E- q* K/ r
代码:- K8 k7 u$ N1 U) C
代码
. ]* a# H3 ~; n; U: zBOOL TextCmd_ClearPropose( CScanner & s )
% ~# ^& ?' u5 h7 Z" j" S4 h{
, t5 L& Y3 x' v2 x#ifdef __WORLDSERVER3 ]. t+ X7 V3 x4 W
CUser* pUser = (CUser*)s.dwValue; l4 u8 w9 Y& W' v( Y. `0 v5 N* z$ E
g_dpDBClient.SendClearPropose();7 ^; {7 R9 k' F# m% M! m
#endif // __WORLDSERVER
0 o9 y& C# |6 `( g }$ p2 [ return TRUE;
1 z- V. ^0 d9 @+ ?0 s$ c}/ P" l6 P; ^1 q
下面插入1 C5 K: x7 \: a; A) }4 D
BOOL TextCmd_rebirth( CScanner& scanner )
* H9 z' b0 A, p% o9 Y, P* R{
; v* a5 a( r ^& Q9 S#ifdef __WORLDSERVER, ~. H1 E0 R* I$ i. X- [( [
CUser *pUser;! J- y# n: ^' T' g0 {' I9 M) s
pUser = (CUser*)scanner.dwValue;
! A) I# l* M" ]" d9 uif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
! d0 S, f2 p& E% Q( q# z. A+ jpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);+ L Q' Y' @" }& d2 e3 k ?
else: y' s. S: G2 m) B& A# d
pUser->AddText("你还未达到重生条件!");, ~ g# A8 H, P& h H
#endif$ e6 k# w" e3 E0 }3 k
return TRUE;( Y% F" e4 I, ]! \
} 7 M+ k- O! |( B# C; a
4 D4 C/ }! F1 s
! b4 ?) ?* @5 P% y+ ^+ F9 O% p- j% F. k* K* i7 W
, }; c& \9 S2 V. m2 O$ B
|
|