|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel0 E7 c( T: k2 ?' x
6 p% d" Y0 Z& e/ RMover.h( [ C# e% R8 ]
代码:# m9 l. q7 j/ t! U
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
% r) Y- g3 m' K( @* a6 x
# q- o9 `7 C1 M! e# J1 Q0 w下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; # y( _% B6 A5 H* I# @1 O" t
; }. J, o, U" m) \6 @
然后你去mover.cpp添加5 ]6 e+ o6 x2 n# N7 M7 t
8 n9 B, {8 f6 P2 ]0 L. @代码:
! T6 n7 `4 P% g1 C, S mvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
- {9 v; j3 o1 s9 Z# r( h{
5 f5 f( W! b, \( ~( Q2 i) X1 E#ifdef __WORLDSERVER
; j$ r$ r4 y: ~7 s( R; ] // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó' T) R1 ?+ w, f1 [6 Z/ z8 M
MoverProp* pProp = GetProp();
/ D. w" D3 j. s. A1 h if( pProp )( `! Q& H- L( i3 v
{
* I% E9 s* K) u if( nJob > 0 && nJob < MAX_LEGEND_HERO )( P" _ z' h$ C( D% [
{
0 q* b$ K1 L, y" v) }* s% \ AddChangeJob( nJob );
" W! u7 k% \! z4 G& f }else{+ Q$ c, X# s7 |( B8 d; m1 L
return;
8 g5 H( h1 f3 J3 d* u# A }
& e# \( K5 ]/ x5 e3 R! C8 |% L; q int nPoint = 0;! E; }- g* J& d* b
if( m_nJob == JOB_MERCENARY )
% }& N, J7 C- M: _6 t nPoint += 40;7 @6 B) s7 X6 L, \! R# o. p
else if( m_nJob == JOB_ACROBAT )+ H$ X0 q% y8 B2 _( r& _
nPoint += 50;
) b7 @, X4 [3 \ else if( m_nJob == JOB_ASSIST )
4 z1 b- f2 b0 j% v" d nPoint += 60;
, J. i+ F6 q$ r- Z1 \$ Y else if( m_nJob == JOB_MAGICIAN )5 O' r6 ?7 ^0 a9 r8 P" l# W
nPoint += 90;
& X7 w% x* J3 o3 T0 W" Y+ R2 R2 | else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
3 W+ m. Q1 A5 V- L nPoint += 120;' M, c( u; s" d$ b) Y3 W, \: }
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )2 Y6 o- o. a0 r( A
nPoint += 150;
/ ]1 J; ? }- K. @, ~ else if( m_nJob == JOB_RINGMASTER )- ^9 O8 f3 V: T0 M' |1 u
nPoint += 160;$ Q: Q2 j8 B2 L0 I- b g- q& ~
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
& x+ v/ L1 p8 Q! v nPoint += 180;
0 L j2 f6 i+ _4 T$ U& v$ n else if( m_nJob == JOB_ELEMENTOR )
- {& N2 V" i4 E% \7 `# L nPoint += 390;
- F7 ], C3 T% B$ K3 `/ T else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
3 b2 l- F# o" r nPoint += 120;
9 y9 \9 s; o4 t+ U" p4 u7 m else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
8 J! @( W1 G9 G7 S3 ?4 D7 x3 f nPoint += 150;
. k, L; D5 w; S. ?( } else if( nJob == JOB_FLORIST_HERO )
% ?& E8 V1 }+ b4 v nPoint += 160;
: Q0 Y/ t/ }9 G8 ~" `( Z% ^ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 Z+ P* U0 f7 ?0 @" F P5 l
nPoint += 180;6 n2 M: x) I0 w! I- ~3 ]4 t% b
else if( nJob == JOB_ELEMENTORLORD_HERO )2 s' E1 i4 c' D/ N z0 n1 k5 ?1 m6 G
nPoint += 390;
+ S5 \* ~) r) V0 k: @, H4 c" }% T( N$ g7 j
AddSkillPoint( nPoint );
; T0 I1 C! v7 [! U# t m_nLevel = nLevel;$ E* C& G- K' J4 m% M$ D0 v
$ p6 L% }9 i! I/ d, M" \4 s
SetJobLevel( nLevel, nJob );
7 d! t( @ D# ^( V' r Z- j$ a& T1 i5 r m_nDeathLevel = nLevel;) p1 d3 Q5 m0 c& c& z
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans o8 K# i2 m/ ]- S1 {. ]! J# j6 @
if(IsMaster())# p5 b2 m# `; ?2 H5 F+ {* ^" {
{
6 o; v; g& O, d# l int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
9 O2 d# s; F# n) I! k+ b2 x if( nLevel > 59 && nLevel < 72 )6 q5 Z) K- c1 |& n
dwTmpSkLevel = 1;
; V( H9 {7 W, c9 p( F2 U else if( nLevel > 71 && nLevel < 84 )7 c5 u7 g8 w! v) O- p8 R7 o
dwTmpSkLevel = 2; k8 a1 x- q8 h
else if( nLevel > 83 && nLevel < 96 ), q9 v+ b& P2 y
dwTmpSkLevel = 3;
' p4 {8 f# E2 |- k else if( nLevel > 95 && nLevel < 108 )8 S. y) ]9 {: F: l+ n- E+ P/ h
dwTmpSkLevel = 4;; i7 o i( B; `: N3 s! R) |
else if( nLevel > 107 && nLevel < 120 )
6 n' d( W4 ^2 ` dwTmpSkLevel = 5;
2 k7 h+ [4 x' k/ x( a( ] for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; b" w; r# f0 J! i, ~/ y0 c. U
{
d7 a& q- x$ [! y; m& T LPSKILL lpSkill = &(m_aJobSkill);
# N- P2 q1 f+ B$ @ if( lpSkill && lpSkill->dwSkill != NULL_ID )' C+ s" c7 y! z* R0 I, s3 m# v
{
5 M" a: ^ g9 f3 f/ \: ?; E: S ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
0 W, r5 p0 O+ W6 K3 A( e! V; [ _ if( pSkillProp == NULL )
' |, r" Z Q/ E3 j3 m" g$ E continue;- d- x* f3 j) v8 y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 i( V# U. H" c3 I1 }
continue;
. n4 ^2 b; E% F j0 N lpSkill->dwLevel = dwTmpSkLevel;
' p9 y& h# A% L$ H }* p. H# G, _/ V# _7 g
}* K% o: h4 I6 C& O' a8 Q# u. G" h$ X
}
) A: x$ T; x* o8 [' h# O else if(IsHero())
/ q- g# F& O: _" K6 m) W% e! v {1 _0 f0 W5 h( w* i( Y6 }
for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 D: u( g- @. o' \ { , L$ i( t# y5 M( ^ x
LPSKILL lpSkill = &(m_aJobSkill);4 R$ j7 R- w' K d( Y) u1 _
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 \1 c( v) x7 b- Y; @ {
* o4 V- Q: |& l, M ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, I7 w8 t! l0 u% j9 w/ L if( pSkillProp == NULL )
' ?0 T( {5 N# C j T8 ` continue;" C" g9 I5 X2 p) b
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 b9 A( @& H6 ^+ ]3 l; ~# s
continue;9 h; j$ M- Z8 F# k; E& o
lpSkill->dwLevel = 5;) a0 s& f* x, B/ I8 ?4 m
}
' p, s' F8 T3 x1 d }: E9 Z- N( i$ ^1 K
}
$ x& [6 @% X' { D0 q% c else if(IsLegendHero())
# X0 m J1 h8 y) K& t, a {
- S( d% d C- H2 Z for( int i = 0; i < MAX_SKILL_JOB; i++ )
, a! Y6 |5 Y* Y, M" p1 G7 U { # X r% k0 b; D8 \# t9 B3 a
LPSKILL lpSkill = &(m_aJobSkill);% W! a' w) ~) n5 l8 U. k7 M
if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 f3 ~& X, _$ o% k3 m) `, {9 A% S {! ^# C- u1 } p a9 _
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ ] e1 c0 M0 g: v1 p( S I if( pSkillProp == NULL )2 |( W5 b2 _* e( k
continue;1 }: r$ w# n$ f7 m" b. D' U
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 }6 J% v2 B0 C* q) `+ I6 L8 q
continue;0 R4 g7 I1 L( j" O9 E# Y
lpSkill->dwLevel = 5;# f& A1 X% }$ y5 ^
}
) F* w. f' b9 [9 X: y% I }' I% K5 Y( O: v" A5 ?) H- y* h
}* e; p" _ C3 N2 e! G$ |, Z) _& m7 c
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
; X3 J* O; S8 l7 Z) @7 R; F0 x if( bGamma )
7 N9 b* C' ~5 D* a- L8 W2 h5 \# T {
1 q: ?: j4 c( T1 @ m_nExp1 = 0;
0 J, w6 m' k0 [) |' f }
: h" P1 d. Q: X- v, P/ |7 E% D' x; H3 }$ y1 v; A
( (CUser*)this )->AddSetChangeJob( nJob );
9 k8 k \% b8 o g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );5 U) o* A( Q; |* R
$ N5 ^$ d1 F4 t: D
# X) D0 Q- h* @#if __VER >= 11 // __SYS_PLAYER_DATA) I- g) r' W! i% _
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
+ T: L% ]9 V, z5 }9 x' Q4 c#else // __SYS_PLAYER_DATA
/ g5 }6 M% K2 e, v# J g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
* a3 U4 r, e. S1 M* l/ {! } g_DPCoreClient.SendFriendChangeJob( (CUser*)this );# J$ p1 o4 j0 ?' {: E0 D2 w
if( m_idGuild != 0 )( J$ F7 o8 u Z) ]( F" Z9 g" ^
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );- `- D5 h: p5 L* ^- K8 \
#endif // __SYS_PLAYER_DATA
- Z% @6 C5 N3 h. g! p) A SetHitPoint( GetMaxHitPoint() );
* y: z7 v) G( O' ` |4 W7 P3 \ SetManaPoint( GetMaxManaPoint() );
b$ o! W. k' m8 o, ^ SetFatiguePoint( GetMaxFatiguePoint() );
$ t, Z! ^4 I B6 o) a if( nJob >= 1 && nJob <= 4 )
! D/ e8 Z* {; b9 H9 R& |) y" V- y {
4 B6 L# H2 `! k4 L4 \ m_nStr = m_nSta = m_nDex = m_nInt = 15;7 q* |( z0 {* r2 `* |0 R
m_nRemainGP = 28;% B$ V' E W6 ]
}0 [! X* E; ~1 {7 {: |+ ?5 p
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )8 D5 X: C, ^$ k( j' o0 [
{2 Z2 f/ K9 l0 U
m_nRemainGP = 118;9 |; s# f7 M/ G) Z @$ k; R
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;$ P i: [/ o1 U* \! X" f
m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ L* q3 @: S. {. L }$ n" i: w1 D8 q6 ?4 _) ~$ |
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )9 g8 ]4 V* V) ~7 e2 N0 S+ G; x
{4 k" v; I @5 o- s* [" O
CItemElem itemelem;
7 y6 j+ Y+ W& T( H& [: t9 C itemelem.m_nItemNum = 1;/ ]9 f d1 K( D" i. O. P
itemelem.m_bCharged = TRUE;
0 \9 u6 f; w1 d, b4 x BYTE nID;% ^$ d5 @) K! h8 K% S+ A
7 y; a4 p6 P/ u1 p" M* u6 Z# J if( nJob == JOB_MENTALIST_HERO )( `: f7 e; y0 N5 X& M* Y' ~
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN; i j2 _8 a# J8 \: W
if( nJob == JOB_FORCEMASTER_HERO )
# f1 C+ W, e$ A. H" ]0 f itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;0 f* y. ?- n+ x# h( O: `; z% S
, x( [: P! ?& ^$ G0 @0 H+ E
( ( CUser*)this)->CreateItem( &itemelem, &nID );% `( s% P4 ~0 E$ v! d1 U
}
% h# }( z% y3 x0 \/ s3 |% p g_UserMng.AddSetLevel( this, (WORD)m_nLevel );# d* f/ q) O$ r4 d( N3 a& A# f
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );0 { b6 w4 f8 K( D S) s. L
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );6 S5 i3 v& a* } R8 D: d- `2 D( l
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );! `% V& O: u* K1 i2 _, a* }, d7 G2 b
( (CUser*)this )->AddTaskBar();*/
$ G% F$ |/ A* @) G' s' z8 _ ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
% O( A" j: [0 k0 m- o, u#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?8 D4 N) f; W/ E P( v5 A) N
((CUser*)this)->CheckHonorStat();
$ M. _7 @: p8 x( e2 q& v2 Y9 z ((CUser*)this)->AddHonorListAck();
9 Q& a6 w6 z- u. n g_UserMng.AddHonorTitleChange( this, m_nHonor);* D; _! j" J( @5 K" V6 k+ G) b
#endif // __HONORABLE_TITLE // ′Tà?& ?. A- \( |. x, Y1 q
}0 n: e! H( C8 w/ p
#endif // __WORLDSERVER
% E; W- i1 D2 L% m1 E} 8 J1 W5 |4 ?! w2 \8 Z9 {4 ~
6 C- m* i/ H) A9 h6 e
然后你进入functextcmd.cpp并添加以下% v4 W" X9 z( A! B3 e7 G
! u# d+ H6 v& D2 _- m: c6 ^代码:4 s9 K L& q" W" t9 D
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ). M6 [- [4 n9 {. L$ L
下面插入4 N$ r; a8 Y& z4 o/ B& x
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
- u! c# Y2 l9 \# h# \: ]3 t8 T# x: W# M3 Y8 i3 Y; F
然后你去( C5 w# a9 [2 Q z$ u
" y3 m5 Y8 c. `8 E9 l代码:
5 F! y( z4 i8 [ J7 e& J0 z) ^代码
9 e( j2 R3 h/ }) V |- _2 IBOOL TextCmd_ClearPropose( CScanner & s )! l7 Q7 d; h+ F$ A
{0 q& [7 e" X0 Z4 A3 @1 T
#ifdef __WORLDSERVER
4 Q; ], [3 g/ [* z* i9 J CUser* pUser = (CUser*)s.dwValue;
% w; M" Q$ x" c0 \ _5 x g_dpDBClient.SendClearPropose();$ i+ P4 b# n! F' q9 b) c* V$ q
#endif // __WORLDSERVER
4 I- Q6 M1 I- w# l1 ~% b return TRUE;0 p( b9 |& j( [5 ^+ j3 M
}, E( U: H; o( [: p' s* I( h* t
下面插入
' B9 n. Z' ~ |/ n% g$ F3 r) E/ zBOOL TextCmd_rebirth( CScanner& scanner )1 O& I, e! k4 F2 ]$ s* D1 b: m
{
0 p; t# U5 G9 G9 a+ V+ B \#ifdef __WORLDSERVER9 I7 E5 }6 t, ?1 q' a8 E6 E4 k* J
CUser *pUser;+ H$ m% `2 ~, N! N" L' A
pUser = (CUser*)scanner.dwValue;- c! y& S6 E/ \4 k5 B2 |
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())6 r& `# N3 P% Z7 M# K+ z( g
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);0 l5 Q9 e1 X! |* N+ y1 }
else" M: K& J, @( Y* q1 ]- }
pUser->AddText("你还未达到重生条件!");
' d2 q* n- N0 R6 v$ B' J#endif9 p* A6 X7 Q/ T+ p# b5 T" b) @
return TRUE;
6 O- D }2 \! i} + u2 X4 p. C7 R' x
6 i1 \8 E" n0 `% ~' Z2 y5 c, y" l2 Y/ [- y, `
5 N4 u$ Q, {/ {5 L
' g7 K, H5 \& G1 ~ |
|