|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
K% i: U+ {* A$ p I3 N/ ?% e4 i5 U# s5 g+ b6 m
Mover.h% j" G! q/ b5 K
代码:5 ~. E0 x5 E0 t
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
% p9 K2 v7 x+ h2 _1 P) y) n3 q
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; & I+ x- j' R% I6 i
I, B! X, S6 l9 a6 l
然后你去mover.cpp添加& J6 \2 B( t# w) o
3 X& I" _ T6 I& e0 \+ \代码:
4 ^1 `! x( S* r3 C- v* t: cvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); Q1 ~/ I$ V! U$ X- [
{
! E* B0 l7 }/ z1 Q* s/ W#ifdef __WORLDSERVER
) X' p z8 Q6 B // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó7 w0 ^6 x$ ~6 U5 u$ U
MoverProp* pProp = GetProp();
6 C) H8 M* p$ N/ l; c- z if( pProp )
c5 u+ T! ^% V; x$ u5 i; F5 t {: X% a' u% g" e0 ?$ q
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
) }1 @* ~6 d9 `( K) ^6 _ {
' r$ z1 D# v& Y( J) ` AddChangeJob( nJob );2 X) p) S& Q2 q5 a1 @3 u1 V2 f
}else{
+ O1 W$ ?% ?/ ` return;
% @" I2 M/ {9 ] }
* F3 j# s, P4 F; S" Q int nPoint = 0;+ Q1 q3 a! n+ V3 x; n* V
if( m_nJob == JOB_MERCENARY )& n7 x. f& V0 M5 J) M" E: @
nPoint += 40;0 \+ z: [* M* s2 W# [
else if( m_nJob == JOB_ACROBAT )4 `+ z) i1 B, _7 J% C8 b* a
nPoint += 50;$ }% O1 ]( T, ^8 X4 w" E
else if( m_nJob == JOB_ASSIST )
4 J7 d) o6 L" y% @3 U) r2 k/ G nPoint += 60;% J0 v/ K& P" u$ U0 O. ^; x' x3 ]
else if( m_nJob == JOB_MAGICIAN )" I: M. k7 A5 k
nPoint += 90;. l- a0 H3 f: S, ~
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
2 c- ~- E$ L, d6 w6 H nPoint += 120;
. X0 K$ e& R$ r! k( R# Q! r0 v& t e9 d else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )- I( ~+ ]1 _/ x' t& @
nPoint += 150;0 I# P8 w) p* i; Y& S7 w( ^6 p, a
else if( m_nJob == JOB_RINGMASTER ): b! N% M3 t0 l8 K. @5 y
nPoint += 160;
3 Q9 m! Y. }3 \- e5 w else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
: p: ]: H. s) B @) l2 O! J( y nPoint += 180;
* t* h1 y; Q) [6 b5 V else if( m_nJob == JOB_ELEMENTOR )! B2 U: F$ u- N o/ E+ Q
nPoint += 390;
, U+ y3 U" Q4 Z# a) Z: r5 C, z; Y3 f else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )0 k+ z/ w+ [: O0 y u+ e
nPoint += 120;
/ o' t1 Z! y+ _, Y7 ` else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
: _' r8 F; c2 Z& m/ ^ nPoint += 150;! s9 v( Z; E/ L1 _& B q; v; B
else if( nJob == JOB_FLORIST_HERO )
3 z: K2 I/ I, Q% s* w' \ nPoint += 160;
9 A0 d0 d7 J0 b else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 F% c0 E5 P0 d( H" G
nPoint += 180;8 ?1 W- g3 j7 L4 }' i
else if( nJob == JOB_ELEMENTORLORD_HERO )7 O) L8 m, e/ y( H- y; G
nPoint += 390;4 ^: z8 l- i' b9 h+ C( y/ K" p/ z
# A4 X! J, g! a# h9 [ AddSkillPoint( nPoint );: p6 [* g# H& ]5 F+ S
m_nLevel = nLevel;
$ N( G$ Z; P' M, G0 T8 W& z* V. {# L! v$ Y+ K$ J4 V) A" q
SetJobLevel( nLevel, nJob );. ?% S) x1 C0 G
m_nDeathLevel = nLevel;
1 R3 S K% M ~- y1 s#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ b+ n0 l' Z6 D+ y, l if(IsMaster())
% k2 a1 Y( }: ` g9 d L' k0 k. R {
5 F0 F q" V, j# t# c7 g int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 D! {3 c0 x6 M; P0 u7 d& d' M/ I
if( nLevel > 59 && nLevel < 72 )
* H7 u$ b# [' ]6 K4 y( ~/ _) W dwTmpSkLevel = 1;
* h" t9 V9 `% g7 i else if( nLevel > 71 && nLevel < 84 )" v( u$ S% @( Y9 m B2 ]
dwTmpSkLevel = 2;
$ @ `: C7 P: H; U } else if( nLevel > 83 && nLevel < 96 )
$ w4 C( l& w8 m: W dwTmpSkLevel = 3;5 g9 H& }+ W& e9 `" a
else if( nLevel > 95 && nLevel < 108 ): {5 R% w2 w L
dwTmpSkLevel = 4;* u# r& Y" z3 {6 Q& i I m
else if( nLevel > 107 && nLevel < 120 )
0 h8 p4 ?6 U; e4 H/ c4 K/ C dwTmpSkLevel = 5;. E$ k+ j w) E3 \
for( int i = 0; i < MAX_SKILL_JOB; i++ )
: i2 f5 _- d) k& a" [ { % D1 S; t6 d3 E5 E- W" }; j$ P
LPSKILL lpSkill = &(m_aJobSkill);3 J0 z ]+ S) e4 x1 W: h
if( lpSkill && lpSkill->dwSkill != NULL_ID )
( G. T4 H7 F: A6 k9 }$ N# i3 Q {5 d* E" c: r. m2 Z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 o: f. a7 K0 N& l) M4 \ if( pSkillProp == NULL )
& K2 L& f* ~6 o5 Q continue;
! O c1 U# H6 \" x if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 K2 q3 y( c% @( s
continue;
! L2 [7 N4 }7 ? lpSkill->dwLevel = dwTmpSkLevel;0 G1 m6 e- k0 n) X1 f) E- z( y
}) o0 E2 h/ m5 V1 i4 z* n
}, c* d% G x! i9 D2 q+ f! N
}
- F" R J1 k' Z# g6 z% s( o else if(IsHero())% G1 P" L. a- f5 y/ A) K! q9 t
{; ]; e+ {/ @& t7 u f
for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ V$ w0 x9 U- a1 ] { 2 c+ _8 x" ~# V! C4 d
LPSKILL lpSkill = &(m_aJobSkill);$ ?8 c/ v5 e- l
if( lpSkill && lpSkill->dwSkill != NULL_ID )
& [4 ~# l( j4 Y: q5 p, s v- ]9 Y {* C, t! C& A( P8 R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' G3 Y6 @ \0 v" [& E
if( pSkillProp == NULL )
! r4 a" n7 N, \# e continue;
/ W5 @* N( y; g/ O. n8 W if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! R% J2 h+ F* G7 X' A continue;. ^5 E* j; H6 u2 I" u: y- ^
lpSkill->dwLevel = 5;
/ [9 m6 Q p; c3 D }
) J& }6 D5 U2 b9 K" r }
# j* e4 i% ^- e/ |) G }
6 w" v$ T% i5 R( r: @/ h2 H8 Y$ x else if(IsLegendHero()) o& G8 O, M% k+ G! X: c6 e" g0 p
{5 r1 ?: G ^7 M. m
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; e2 }% W9 I3 k- s& q% d ]0 @1 U
{
+ H) B9 T* O( f' q( P2 ^7 U- U LPSKILL lpSkill = &(m_aJobSkill);9 Q( |9 h$ m/ v6 I& t
if( lpSkill && lpSkill->dwSkill != NULL_ID )! c. }4 ^8 t @+ @3 r/ ^0 M
{
* z. w$ N. Z1 g- {5 ^ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& L* A' L9 d+ p2 b: Y if( pSkillProp == NULL )9 q- _8 h K, z" S3 w; F* W
continue;
. N8 `, Q. K) A% E if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 m- ]3 {: m e
continue;
6 f% S" D( o6 L; o, N2 O lpSkill->dwLevel = 5;7 J% p4 c- t L0 Q. e7 c
}
1 e M# J( h8 n* M/ n }) a8 p- W- @" {/ d Y+ J2 f$ ?
}9 j8 z! Q! k& e7 `8 j( e! e k* H5 n
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans, G' C( o0 ~. L2 S9 h
if( bGamma )2 I: m( M+ R3 N O( l- T. t9 v/ p
{+ g$ ~$ }! g9 q
m_nExp1 = 0;# H* K+ n* i- Q$ @" u3 H; ]
}
: H7 V% |+ x) K/ M! V; T# h/ ^6 s; l) T) s6 C
( (CUser*)this )->AddSetChangeJob( nJob );
8 ^" s) X$ Y7 W g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
" t$ B6 P$ ^, ]1 @2 @
9 o) }+ r, ^4 _; ?" j' W/ p Q- E$ L4 Q+ c7 m5 e \# a5 T% a' {
#if __VER >= 11 // __SYS_PLAYER_DATA, N8 }% s# p# u4 H7 A( O' ^
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
; R \8 E+ J7 a& F( w I) A$ @#else // __SYS_PLAYER_DATA# P5 Y8 X" L' u, V+ {3 I
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );* N; O7 O+ {9 W5 u9 C) c3 S7 d& p+ a
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
1 n" f1 m0 a6 C6 {) D if( m_idGuild != 0 )
# _$ ~& l; l6 x% q ?/ @' { g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
8 e( l9 w. Y# R$ M#endif // __SYS_PLAYER_DATA
5 Y% E) r/ z! `8 k- } SetHitPoint( GetMaxHitPoint() );+ O" [1 @8 R; F/ ^6 P+ l0 I
SetManaPoint( GetMaxManaPoint() );
" G! p, R- ]' C: B7 a, P" K$ w0 Q8 k* B SetFatiguePoint( GetMaxFatiguePoint() );
0 F% _) O5 z# }' d- N+ j if( nJob >= 1 && nJob <= 4 )
& w# `: D6 m( k {
% k7 O1 S" ?$ D, R) m m_nStr = m_nSta = m_nDex = m_nInt = 15;3 n5 V7 P" [5 Z
m_nRemainGP = 28;
/ f% ~; O4 y, I6 \ }
/ F. e8 g* A/ o1 _8 N' g, b7 T* N if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )$ U0 Q; |0 J" z( m5 P% `
{: Y1 q7 f% M1 r
m_nRemainGP = 118;3 t2 u( S0 K7 a
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
% N( \/ }2 J& J/ e8 w$ [; q m_nStr = m_nSta = m_nDex = m_nInt = 15;0 T- [( Q% w8 y) _( B
}% [2 k, X: A0 o5 [+ I
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
, W1 N7 Y' S2 P8 K; P+ [6 u {
, g" Q' v0 }9 Q CItemElem itemelem; b# G) A$ t* N) S
itemelem.m_nItemNum = 1;
: t8 j F9 p5 D itemelem.m_bCharged = TRUE;
7 Q! H m7 \! I' f8 @ BYTE nID;1 ]% p1 c/ k9 k* Z* V4 C
3 h% \' S6 J5 Y$ N
if( nJob == JOB_MENTALIST_HERO )
: a0 Q& v! J3 ~4 j8 z* _* u itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;2 D% i H" R) \$ l) P
if( nJob == JOB_FORCEMASTER_HERO )
" R7 U! Z; k( n S3 ^7 b itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
* z6 I0 |/ d2 l! p+ Q1 L( f# q7 w5 q5 D( e. T
( ( CUser*)this)->CreateItem( &itemelem, &nID );
. @. F3 A# z, b9 @, q f: p }# @0 r1 N w" z8 Y# ~: d
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
; o K$ c6 Z, S6 [ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
4 {6 p7 w# h; Q6 s ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );/ T- d( H9 ], Y
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );/ i" n1 X6 {( c- B
( (CUser*)this )->AddTaskBar();*/
" [0 y. d6 p4 |/ s) Q ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
2 F: I- t2 J( P! g+ o6 {#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?2 b& X4 u8 p8 n$ j' B+ H
((CUser*)this)->CheckHonorStat();0 H$ I' ~7 b' K [3 W& d
((CUser*)this)->AddHonorListAck();* f* F+ L) b6 H* Z
g_UserMng.AddHonorTitleChange( this, m_nHonor);
+ A+ d: k# y! d#endif // __HONORABLE_TITLE // ′Tà?
, f1 e. p7 j! v7 O. U }
* S* t! d3 L. e4 g$ r1 L2 K#endif // __WORLDSERVER) u! K/ T/ A! V5 v, M
} ; u1 a! ~- |: d( h2 _
; p! r/ g: G3 p6 J然后你进入functextcmd.cpp并添加以下
$ f0 Y) D `# ?: m# z7 ~4 M
! A( w" C9 e: p3 G7 Q, w代码:$ n* x/ M4 F d b
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
5 `* p$ J( [1 m9 ]% Y2 Q' u9 m2 ?下面插入
5 k! H8 x: z1 f2 FON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) # G" k9 M' l" l8 O+ y
$ T0 C: z) Z9 `
然后你去- f6 w& }$ w9 Z
7 g5 ~% ~) ^! o. r代码:, Y9 D& H. Q# c0 {* N- E
代码) C: _, f6 ]+ s r( y K
BOOL TextCmd_ClearPropose( CScanner & s )) v" `! u/ |5 P' V
{
- Z8 P- T. O4 f! G }* H. a#ifdef __WORLDSERVER
/ g; l+ z9 U. q! `9 c8 F CUser* pUser = (CUser*)s.dwValue;& `, H" f4 r- h2 I7 V* m5 o2 i4 N
g_dpDBClient.SendClearPropose();
7 d& c; Z, A _' l- R#endif // __WORLDSERVER% f6 ~$ J; D/ L4 K
return TRUE;- g4 q6 Q7 W( P* Q
}" l2 G5 F6 T& X
下面插入
% W5 |! C& Q. mBOOL TextCmd_rebirth( CScanner& scanner ), F/ R1 [7 Y; z: i+ p
{
0 Y. A7 ~: X- d$ Z#ifdef __WORLDSERVER
- D" ~: Y! S3 o1 W+ q" M2 E8 aCUser *pUser;
. V/ x4 x0 [8 U" q7 i! S9 z+ BpUser = (CUser*)scanner.dwValue;
/ E) Q c% d" Q2 `. A, pif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())6 a" u9 {: W0 _& c) {* t
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
; D8 A' O4 e4 q- W5 Q6 gelse4 u% {7 i. S9 }! D0 d2 K
pUser->AddText("你还未达到重生条件!");
) W6 U) V" Q. z6 O9 X#endif/ ~# e' E! X4 h$ {
return TRUE;& J! f- z# f6 Z/ A
}
/ E# W! W H; k4 O* Y$ ?
Q0 c) e1 d' u( q3 t+ W x7 x% K% C+ O& ~- K, f, |
$ n- D8 Z; s, i. u
+ b1 \6 s: T: D% S2 k |
|