|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ Q# R E8 _; A& |
& C/ j; D |. \ y( _Mover.h
: H/ n |: [2 i8 X. ]' I! t代码:+ y; W7 \9 n7 P, ^5 J3 g
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü! k. c! e, D4 }9 V! n
% ^, x4 M$ K* F
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
+ m$ L( F! j* _
$ j* x: d' R: {1 H# J" F然后你去mover.cpp添加
. J1 F2 ~. i. M R1 u1 o7 F d7 F' F5 [, ] A" c5 a
代码:! M: x- u3 G o2 x# C
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )0 R( H$ z }" s4 |% n! L
{3 s% N( f' H3 j
#ifdef __WORLDSERVER
0 o( P7 q% F6 n3 d1 ~7 Y // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó J+ [4 Q0 G, f
MoverProp* pProp = GetProp();
7 C' m ^' w6 g2 u5 M. l if( pProp )
0 E+ P) N! o* f {7 P3 x4 J9 Q: M- H. b6 O" }( o6 C
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
" i! v: H; A& B, ?! r4 N9 Z1 z! A {
6 c. `# S9 p) e+ M7 A AddChangeJob( nJob );
2 j) S m# k# P2 G. ~ }else{
$ r5 K0 f# X. q return;
, V s$ L% m# J4 u1 ^9 L8 V }4 [: b5 t" N7 C* |; Z k9 L" s
int nPoint = 0;; U3 C! u, X G4 k$ d* f
if( m_nJob == JOB_MERCENARY )
7 K7 i# `6 G! e5 q, R8 Y# M3 W6 M8 c6 X nPoint += 40;
) x* X0 t1 o+ K; q' e else if( m_nJob == JOB_ACROBAT )
. \# E* L' W# w/ n( x! P6 l [3 Q nPoint += 50;; |. P# G" s. \5 w7 m: i" i4 s
else if( m_nJob == JOB_ASSIST )
4 [4 h2 O1 c- e- _7 ?* L; |) E nPoint += 60;% O/ h0 ^5 a9 m( [4 E2 f. i8 f9 i+ m
else if( m_nJob == JOB_MAGICIAN )9 m5 d2 Q; O/ ]' ]. V
nPoint += 90;
* w% x6 v3 S# m( `3 x else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ), r2 a4 r1 b5 ]* r( s8 P
nPoint += 120;3 ^, C' \9 c1 u7 F3 J; Z% q/ Z
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )6 V/ ~+ {7 p* P C
nPoint += 150;
5 O0 Q X' A2 U) H else if( m_nJob == JOB_RINGMASTER )
. S0 g3 }) X: k7 X8 M) @) j nPoint += 160;) t9 _4 o6 y2 k- A* n3 h( l
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
! Q5 C$ `( j% ^) Q& o nPoint += 180;
* r6 N% O0 V7 G) Z0 j else if( m_nJob == JOB_ELEMENTOR ) ?9 G4 S" A8 G! n# F
nPoint += 390;6 Q8 X4 P+ Y: V; [1 u( h* E7 R* @4 `5 y
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )" Q% D" b$ e0 _* U7 ^
nPoint += 120;
. p- A$ ^& J; V1 [" e else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )7 U2 O/ U' D7 \, F/ X& O* j
nPoint += 150;8 E/ W Q* t# c- {
else if( nJob == JOB_FLORIST_HERO )
, J# b/ b! y3 i7 s o nPoint += 160;& C [0 u8 i) ~- r6 ?+ D p, E+ e
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
8 s- P( S" r$ W4 l/ k* ?) J$ C2 b4 f nPoint += 180;
* @* Q9 Z3 P! U else if( nJob == JOB_ELEMENTORLORD_HERO )# U9 B7 S1 t5 T( z R
nPoint += 390;
) V S V' W. ~% h6 h( H. I7 B* S1 m# m' i; t
AddSkillPoint( nPoint );
% S* a% j9 x9 U. e; | m_nLevel = nLevel;% [, _& Q, z* Q+ `" Y
- \0 H9 O# }! `
SetJobLevel( nLevel, nJob );
' ^/ t" m: H( e m_nDeathLevel = nLevel;1 ?3 ~- B' `* y K3 S2 B
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 B o3 E9 ~* k7 B' S6 P2 ? if(IsMaster()): Y6 I# O. ~) r! V% s2 R6 a
{
* _2 M4 [6 n% x int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
- ]% K P5 u) ~+ p. _+ a* ^ if( nLevel > 59 && nLevel < 72 )* ]) W5 D( R& x8 G3 `2 n
dwTmpSkLevel = 1;
- c& ]: t; _6 g1 H G0 w% L) L: d else if( nLevel > 71 && nLevel < 84 ). b4 P4 ?1 y2 F: o# [
dwTmpSkLevel = 2;4 N, R1 v% K- q% Q
else if( nLevel > 83 && nLevel < 96 )! {- {, O7 R$ K" E. l: [ d
dwTmpSkLevel = 3;( V6 d& z3 e. V2 s
else if( nLevel > 95 && nLevel < 108 )/ |0 x! W. `: `6 V x& j" @
dwTmpSkLevel = 4;
4 H0 t4 e2 D ]6 ^4 F else if( nLevel > 107 && nLevel < 120 )$ `& e4 t) G4 f3 i
dwTmpSkLevel = 5;# c: J- X' p5 L8 k
for( int i = 0; i < MAX_SKILL_JOB; i++ )
( C+ G+ u9 q) M7 D4 ? { : ~* B, u+ ]2 K3 [
LPSKILL lpSkill = &(m_aJobSkill);
J! W \7 r/ { if( lpSkill && lpSkill->dwSkill != NULL_ID )+ y# Q6 z3 f; A5 j& W
{
# m( ]6 ?/ H( X0 M! C/ Y4 K- s" B ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& B1 |) P q3 B2 J- q if( pSkillProp == NULL )
* a5 \9 q$ ~: S. X( G' R# M. z& | continue;
) y+ T$ m, s* V7 z8 U if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 G' S# E; s6 a# F U/ t. ^0 x
continue;
' u+ O# o5 O) S lpSkill->dwLevel = dwTmpSkLevel;% A8 n! B% o8 ]0 I* F# S
}
6 {" P; x, m d9 V0 i! N$ p }% J. y& F" B& e/ V- V
}
, i- t7 R. y- \& X, T( c- ^ else if(IsHero())5 ]) U' [7 Y0 O$ l P9 B" r
{
7 A0 D0 j8 u% @; v for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 z. V. _5 l) J) z3 C { ; x9 p$ G$ Z V( E1 R i; x! q/ ^
LPSKILL lpSkill = &(m_aJobSkill);
, M t {/ w! A; ^8 b if( lpSkill && lpSkill->dwSkill != NULL_ID )+ ~6 t/ e# D/ h- Z( P6 O: h; e G
{
$ U- v; [) r0 l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( I& P/ q1 W! K% ~' U/ C" c
if( pSkillProp == NULL )2 C# {0 s7 o# J
continue;! p8 u" L1 C E$ V( a3 B u
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ P$ n" [6 q3 ^) ~! \% C; h% [1 x$ R continue;
" g r' S7 g! h/ G3 s lpSkill->dwLevel = 5;
9 y. Y! e ? I }* a- E2 H7 y; B9 s" f
}. S# W5 L- E) {5 O. _! j& @5 L
}
3 P3 J2 K* f9 \! U! a7 c else if(IsLegendHero())1 J7 b. F0 [$ t ^
{
3 j! J8 {& D, x8 }' b6 C8 f% T- n/ v* n for( int i = 0; i < MAX_SKILL_JOB; i++ ) * Q S \. U! t, Y: V8 O
{ 2 y3 ]7 n; O0 B0 H
LPSKILL lpSkill = &(m_aJobSkill);9 M0 s& s9 M5 r6 X
if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 \8 z; S8 V% b' o+ J+ `& D {& t) N! k5 d" J* ?4 _$ L) E
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 n W" G2 \* p) R/ i J! O4 R
if( pSkillProp == NULL )
4 T ^- o$ P4 E, |( ~0 { continue;
- \) G0 M# _/ i. r if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" ]2 e% n% L" H% N9 t: `$ t continue;: t$ `, E. Y3 t- `- Y% m: z$ V% a
lpSkill->dwLevel = 5;8 D7 f/ {: C0 G* L
}
: y4 J" i6 J! R+ z }' s. {* h$ o% ~& y7 G
}. ]3 l0 f# `0 e2 q
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. i8 J5 W8 l+ s, c+ u; A% h- w if( bGamma )
- w9 p; u9 u, E: u4 _% \/ I6 d {
$ d s# e* K2 [ m_nExp1 = 0;5 j, Q ]- }: E
}
) r- ], J) p$ @& {( {( }0 R% E8 S0 }- F, W2 i2 s
( (CUser*)this )->AddSetChangeJob( nJob );6 t$ H* e: }. S' u$ F. H4 A
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );' F+ e$ V% u" f. a
) ~7 T ]4 ], P8 p, w& T
2 W# [- p5 W6 j# E1 | r- S#if __VER >= 11 // __SYS_PLAYER_DATA
: H6 x' c( g: ?0 {3 z( @ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );# G \3 S* W- y; z( w
#else // __SYS_PLAYER_DATA( J w& z( b; _/ ]5 Y2 U5 X
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );6 o7 |4 u B% s ~( o/ T
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( r) o9 [& o0 o1 _8 m& @
if( m_idGuild != 0 )
$ X/ ]8 u. ]# E6 n% }/ ~9 |2 ^ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
4 _: ~) _+ @0 L5 G#endif // __SYS_PLAYER_DATA
! Q7 b" T$ x' t8 F( @ SetHitPoint( GetMaxHitPoint() );6 G' a) O! u1 `+ o, d9 S
SetManaPoint( GetMaxManaPoint() );, c" v% m Z) y# p/ i1 ^7 Z+ [
SetFatiguePoint( GetMaxFatiguePoint() );
# n, E/ _# k" g, r" s if( nJob >= 1 && nJob <= 4 )* B t+ i# N6 K$ [: [5 o5 J
{
5 `+ c A$ W1 F) z$ p m_nStr = m_nSta = m_nDex = m_nInt = 15;/ u5 i+ r( v$ w$ L/ k+ J
m_nRemainGP = 28;: X! K. q l# t
}
" ^. Y5 O1 d( _0 F if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ): y7 o- l1 n& \% t( S/ D5 R! e
{
, W1 {1 {8 F0 ~. z# S& w8 m# q" v+ q m_nRemainGP = 118;
2 z. c4 ~- [0 V g //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
8 {3 b( u( {' p1 G* e m_nStr = m_nSta = m_nDex = m_nInt = 15;
% z* I/ g! p! v! m }
2 L; K) a; W$ E1 i$ p' _: v if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
& L6 k6 {6 V) n3 M) s& v {
: I6 v3 ~* [$ ^ V. ~; d, n& ` b- i CItemElem itemelem;8 o! l; D, W( D$ a* h |: r
itemelem.m_nItemNum = 1;
?( r5 m, x1 C1 R7 H5 E; ]5 J itemelem.m_bCharged = TRUE;( O5 q9 h' i, O4 U
BYTE nID;
; I2 f: m' u/ L2 h( A+ X: J& Q9 d8 k
if( nJob == JOB_MENTALIST_HERO )
# ?- r! H( |% i M' E P7 L, K) v5 z5 M itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;- ~1 y0 Y1 ^1 Y$ P p
if( nJob == JOB_FORCEMASTER_HERO )' {* w4 ]" V v' @
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
( l# s# h+ z% z" m% q3 ]$ [ g2 l) Y4 o
( ( CUser*)this)->CreateItem( &itemelem, &nID );# X3 Y8 n, p0 U% C( Z- n+ O5 n1 v
}0 ^4 P }+ B. F! z+ H I9 p9 Q
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );% I3 W- P- U9 _* C
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );# D$ ?3 w" T. O1 B/ E2 e L2 F/ o
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );3 N" N1 ]$ I( ^3 u; T1 \0 A
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
2 D, ~1 p" S5 v2 s+ s6 c) B. i ( (CUser*)this )->AddTaskBar();*/
; M7 y9 I/ W6 A ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );9 H6 Y% A. g9 @: Y
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?' P" o: [# u; B! b4 v: `
((CUser*)this)->CheckHonorStat();
) E3 R6 I( W% K& _) u4 | ((CUser*)this)->AddHonorListAck();) [! N, P( y- ?7 B0 T6 Z% z
g_UserMng.AddHonorTitleChange( this, m_nHonor);7 E [7 r s7 u; `7 Q. C
#endif // __HONORABLE_TITLE // ′Tà?- _% t; D) O9 i; ~) w, B Y& r% q
}! X5 j0 P# J( d# C
#endif // __WORLDSERVER
" I- R; E7 c- v) A3 N! o! G} 6 I; }4 B% p) q$ J# @
+ J5 `2 W2 d7 s" _& n: E) t
然后你进入functextcmd.cpp并添加以下$ @' k) R# o/ d$ z, \/ T
5 ?+ @$ r/ h! K0 a& r- J7 G. {
代码:
7 K5 @& s* k3 v5 I$ P8 DON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) X/ I6 K. Q+ k7 L9 }6 [+ {3 j下面插入/ b+ H: z4 D/ w3 {1 F
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) / D( x, O) ~7 m# n0 F
7 Z6 b+ n: k6 v2 h! \5 Z9 G' j然后你去# [0 [( V: G8 I$ n% J
) X7 Q# b8 j9 I* E7 s( S+ h代码:0 O0 d& I5 S6 {! q
代码
3 K$ g) ?& p9 x& z' XBOOL TextCmd_ClearPropose( CScanner & s )
7 u9 H# l( Q1 \$ ^5 Z, f{! P# i: @$ V" ^2 ?& ^
#ifdef __WORLDSERVER
" U9 [8 P, S5 [/ F2 H5 w; z- W/ Q CUser* pUser = (CUser*)s.dwValue;# K$ @" Y. \- g5 x* U6 i
g_dpDBClient.SendClearPropose();( S( r2 p# e, M
#endif // __WORLDSERVER: ^% Y+ a) |" |2 { h. M' t4 O
return TRUE;& ~" z) _$ g" Q& m7 `) {9 |/ K
}2 q0 z0 S1 m# V7 H+ A
下面插入
+ R* u$ T. e8 H$ t* g- `BOOL TextCmd_rebirth( CScanner& scanner )
! h! v# c+ V$ ~% v/ R5 J{8 t$ w+ X. P/ v& `9 W
#ifdef __WORLDSERVER
) L7 t2 X$ u! U, {CUser *pUser;
- V: M3 }7 X+ ^pUser = (CUser*)scanner.dwValue;
0 | }. h5 r* q1 i2 sif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())$ Q, ?6 I+ H; t6 b' R! @8 Q
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);4 E2 K( p% v o8 I2 z' L5 p
else" E% m! }; e* s. E9 \, h
pUser->AddText("你还未达到重生条件!");
5 A. Y4 I) O5 Z; g9 p- N#endif' t5 w6 |) |6 F d; q: a6 F
return TRUE;3 y( T) t# p9 E2 b
} % s9 u* ^3 a5 P
( W: U4 v, d3 a9 ?
) k; h3 v1 m7 J; F$ L
4 x8 J9 A$ R6 t2 O6 i
+ F# V% V7 |& ]" \
|
|