|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel8 K! q8 v5 ]( t
' x6 i; V$ C, G1 c, a- CMover.h
& P( v* }% ^( G. {代码:9 k- q/ d% L/ o$ f+ c/ `& P
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
H6 L' j- h0 U, h" R2 `% w" P% F. E3 R7 Y6 g$ c8 C' i
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
+ p- [1 b6 t( n4 Z J9 R; p& O' ~' B- f8 ]# C; i! B
然后你去mover.cpp添加+ r. `1 s/ e/ D# P' E8 b
& M3 t! W" Z$ o: a/ ~
代码:8 A4 {4 L/ p0 e
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
% ]. x1 @# ?# q8 s{
$ ]' n. f. d P( h3 T6 n5 D+ P#ifdef __WORLDSERVER' h3 l9 M6 W2 V: \8 R( x1 n4 {
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
$ C/ Z- @/ f4 `6 Y4 A MoverProp* pProp = GetProp();; \, F" Q2 I! L0 b
if( pProp )! I+ g$ o% }& H, w8 K4 D0 M
{
+ z3 }% N& h0 o% z if( nJob > 0 && nJob < MAX_LEGEND_HERO )0 O3 Z: ]/ X) H; M7 m# Q
{+ d! k9 P7 d) F, q: B4 g* V
AddChangeJob( nJob );
# ]3 C$ F2 u% Y% ?: N1 H$ ? }else{
/ c4 y6 \" P% g8 S P) c0 k: m return;# S. T+ p9 ]' @9 K* @2 y6 p
}4 a% k# d! I! x$ R+ p& U2 N
int nPoint = 0;. n: F, {* B( ^+ I* @' I
if( m_nJob == JOB_MERCENARY )+ G; `2 j6 n- ^- J
nPoint += 40;
; v8 B0 x3 v' O. v" a5 W else if( m_nJob == JOB_ACROBAT )& Q' c3 [6 n# V
nPoint += 50;
0 i* K( M+ [6 _- ^ W$ p; T else if( m_nJob == JOB_ASSIST )% v% O. U3 R0 A) Q0 Y
nPoint += 60;
* c: Z& C, |" ~) g4 C else if( m_nJob == JOB_MAGICIAN )5 u0 S! ]3 O) @* M& \
nPoint += 90;9 y6 x/ p. d7 P2 j: Z' W- J; Q/ H
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
# u) d5 ~+ R8 U2 V% d nPoint += 120;
' ^) f* m1 B0 u E2 `, m else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
6 Z2 U% ^9 u' k% y. x2 Y/ B8 b( b nPoint += 150;
2 d3 g6 {% s& H else if( m_nJob == JOB_RINGMASTER )
# M) s7 Y- E% \+ { nPoint += 160;/ y( j+ f F& \5 F3 S C
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )4 J. D" L% i+ w1 b
nPoint += 180;
" a& c$ W$ n/ ]0 U( d else if( m_nJob == JOB_ELEMENTOR )0 E8 ]9 R7 y4 W8 H8 D6 s" P
nPoint += 390;
2 @. v5 w1 W2 A5 E' L0 m else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
7 R9 d+ Z5 V% z6 s7 C nPoint += 120;+ a! x. A2 q+ x0 ~9 b) O
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% u( H- R+ K8 i% `& L nPoint += 150;. M( y/ S& p8 H7 {6 J, B
else if( nJob == JOB_FLORIST_HERO )6 c- ]) B. S+ T \! q
nPoint += 160;! r+ O6 P1 K: X2 B" s) m
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
' _ w8 M+ e" a- `9 h( \3 ~. v nPoint += 180;
! {4 a; I' Z: T else if( nJob == JOB_ELEMENTORLORD_HERO )
' @9 A1 o5 J# [2 E$ d& n5 m# ? nPoint += 390;/ n% N; f7 [! v1 I
+ \; b! D) Q& G" [' e ?9 H7 m
AddSkillPoint( nPoint );3 }: E9 S$ n7 H( a
m_nLevel = nLevel;
8 a. w r# @1 N: h$ q6 }9 A7 p! G* H/ ?6 g
SetJobLevel( nLevel, nJob );
) y5 C+ {4 S5 s, _8 H m_nDeathLevel = nLevel;
+ n3 A8 Z$ t+ l, b, M. I. ? ^" e! v; N#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans A2 @, \: r9 H' N
if(IsMaster())8 ?6 S7 h* M3 k# K0 H4 p/ a9 R; q( E
{
: l; e+ l6 c/ ^ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
" m0 F% z7 F! d# S. d, F if( nLevel > 59 && nLevel < 72 ), q6 x7 X A( Q* @ H0 t* a2 l
dwTmpSkLevel = 1;
- ]/ l# J' F( c' b4 O' v! f" _6 K else if( nLevel > 71 && nLevel < 84 )- q9 s4 l4 _- M" r" A5 c: ]4 d# v
dwTmpSkLevel = 2;- I5 q' M4 N- e& d1 d# V
else if( nLevel > 83 && nLevel < 96 )' o" V0 T' T6 m+ {0 d0 S/ i
dwTmpSkLevel = 3;
. S8 E! J' ^; I1 _ else if( nLevel > 95 && nLevel < 108 )
+ s# R3 G4 h. G/ g" `. L dwTmpSkLevel = 4;; K+ d/ ~) d1 l4 x
else if( nLevel > 107 && nLevel < 120 )' a& H: Q; ^5 m; P9 }# k8 C
dwTmpSkLevel = 5;
2 ^/ N! f+ H' V5 @) u3 \; m, T for( int i = 0; i < MAX_SKILL_JOB; i++ )
& H( e; c- l: Q. u3 Q7 Q% M {
) [" O8 |4 x/ y4 O# b1 r LPSKILL lpSkill = &(m_aJobSkill);
l/ m) ? p7 ]: H if( lpSkill && lpSkill->dwSkill != NULL_ID )4 ?1 a" K/ e8 |+ [
{
3 `4 G5 w. l0 E ] \2 Q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & S Z/ ?6 T0 f; j. W3 q `% T' W4 U
if( pSkillProp == NULL )
- c, T7 R7 Z. ~3 S1 J: a0 e6 T: h. b continue;
6 H2 X9 Z! j8 w if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 B2 |* C: @7 P continue;7 E6 j) Y4 F, L5 [1 K$ O
lpSkill->dwLevel = dwTmpSkLevel;
4 v& s" d$ S( O5 G8 e }
0 [) m9 K7 W+ x3 D2 g }3 [' Y" B' D% C! T# q' M; G' _4 r
}
% Y+ n# o2 f G4 o else if(IsHero()). w5 }1 V* E& ]- r6 ], Y
{
4 S5 {& T3 U8 v1 N1 l- u' w! A T7 B. y for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 H% J% x5 s! Q+ @9 R% X {
$ B3 s7 S' O. @2 S2 U+ R, V, | LPSKILL lpSkill = &(m_aJobSkill);
- A/ V5 J8 v6 l3 y if( lpSkill && lpSkill->dwSkill != NULL_ID )+ Q: ] H- B5 K3 ?7 B: M7 z0 J
{/ u, W- P7 E: j; c' {3 r( ]
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; ?; v: i3 v9 z [" q! o, \
if( pSkillProp == NULL )
& }3 l* A$ G, ` continue;/ `, q! B8 a. @; A9 c
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" t, C* @! M8 c$ s2 c continue;/ j& z( g( `0 I: [
lpSkill->dwLevel = 5;: y' r' \ I0 ]/ t9 Z
}
6 _+ ]7 o( d. x1 f }. F) W! Z5 }5 L$ ?) @
}$ @! @: r+ I1 \# \* ]
else if(IsLegendHero())
/ s- x) |: j2 D1 p5 h3 z2 r {1 ]! q" C6 @* [$ k0 j8 d0 h- n& o; [4 V
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( L/ I D- }( S* J$ O$ B
{
% H! f4 `4 m7 c1 w7 _ LPSKILL lpSkill = &(m_aJobSkill);6 \4 L# Q6 ]: G. T
if( lpSkill && lpSkill->dwSkill != NULL_ID ): E0 ^# j7 T$ C; |$ @1 r
{
' h9 S" E2 R$ F9 x. N0 x6 w: o; z ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 r' _' `: y& W5 K4 u if( pSkillProp == NULL )
) f' j: l$ I5 m; w6 o continue;: t `. I1 T" {- Q2 Q1 c9 q
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ c3 j/ S3 f/ K continue;
! S, O; A% C2 L9 E+ E4 K6 V7 q; { lpSkill->dwLevel = 5;
; }& f4 K. T3 d. ?; {% a }: f; L. N' b, j G B$ w
}
, ~+ H# d# b, F$ B5 W. j- J8 T" W }
5 j s% @8 f1 V7 b! [0 Z#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans8 T. K" d- Y o, _0 e; n* t/ Q; X
if( bGamma )
6 a# k: |$ z& m; ^9 { j* ` {
1 i) K2 @7 \* R7 o m_nExp1 = 0;
* q9 T7 Q# j, |& u5 a& p }- I! u, H/ L5 A, @6 [
, a9 w& Y9 o) j8 {* c* ]! e4 U ( (CUser*)this )->AddSetChangeJob( nJob );4 P, Z2 m, ^& K7 B
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );% I( R6 A1 K; R* q: D, C
+ L( K3 Z9 @; h
t ~0 A; C- y/ {4 T) r3 X#if __VER >= 11 // __SYS_PLAYER_DATA- L) B$ M( W6 s: [* Q
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
4 [3 W- \* ]' `$ c" R4 j* t: `# W& _#else // __SYS_PLAYER_DATA
& Y) H( |$ c& F) T2 [ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );# R* J/ M# f; }* n1 v6 r! v% J7 j# Y
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );# ^' O5 G% b8 ]/ o* D$ N9 h/ ~
if( m_idGuild != 0 )
" v5 @: U2 \5 \) ^+ i g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
# T3 h& Z# p# z& X$ e, Y$ k#endif // __SYS_PLAYER_DATA
9 o7 n4 V' z7 O' i* G+ @' x0 K SetHitPoint( GetMaxHitPoint() );
- X- `- ]" O; P" W9 q) [ n SetManaPoint( GetMaxManaPoint() );- ?3 x B5 z- c% F; D, V
SetFatiguePoint( GetMaxFatiguePoint() );
3 I$ A) S' G S4 E if( nJob >= 1 && nJob <= 4 )# X0 ? H! k( A! {' {, J+ l/ K/ w
{) V$ P7 k8 m7 R( g8 _4 s! T
m_nStr = m_nSta = m_nDex = m_nInt = 15;& P% g0 T) {, I, A% E
m_nRemainGP = 28;
# b) Z) |0 ~7 b: C% _4 I0 | q1 H }
/ Y( `, k' z: \ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- ?) j% ^7 z4 [
{
' i5 c3 l! L9 @$ g( b( T m_nRemainGP = 118;
1 T! M0 S4 E. e6 @( q //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
k1 r% I, m0 Y$ C m_nStr = m_nSta = m_nDex = m_nInt = 15;
9 w) @. Z+ W: C+ K7 v n5 d }8 J; W# O9 {3 H7 `
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
1 g/ J; g% z* w' b0 B {
5 p! C' W% V8 d CItemElem itemelem;
+ o, c% j% t+ U/ ^0 N itemelem.m_nItemNum = 1;
( ~" I; C* }2 D itemelem.m_bCharged = TRUE;. B( N& Z+ `2 o' k1 S6 N- M
BYTE nID;
1 }1 h. |+ f8 V
8 C$ o" v2 Q& c [/ U2 M if( nJob == JOB_MENTALIST_HERO )2 F' R( s% z, F, H/ Y
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;1 i# ]" L/ N1 c# p$ ~
if( nJob == JOB_FORCEMASTER_HERO )
: H( F+ o b* x6 i! R7 Y itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;# y9 a0 g- h2 R! D* D1 i5 T
4 q: K" h! w; R3 L i2 z ( ( CUser*)this)->CreateItem( &itemelem, &nID );1 h; U6 r0 v& n6 {. g
}) s6 P, ]# ~+ M+ E8 n6 r3 k
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );& b3 u# J& K% ?
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( R+ U5 R v, P6 { ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );) Q0 n- E( A! k9 J7 U7 Q9 K
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );: y$ t0 Q, q" _# S5 @
( (CUser*)this )->AddTaskBar();*/
6 j! v9 j7 d6 b ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );+ `5 Z* y1 _) Q& p4 \* a
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
7 [! ]% o& q+ c. j ((CUser*)this)->CheckHonorStat();4 Q: b# s( h: X
((CUser*)this)->AddHonorListAck();
1 s7 ]8 R. T" m; c' x W V g_UserMng.AddHonorTitleChange( this, m_nHonor);
' U6 }% r$ o: F#endif // __HONORABLE_TITLE // ′Tà?
2 N9 \ F" X$ V+ k, @0 j }& m e- _0 M) T: ~
#endif // __WORLDSERVER( n7 w4 Q4 ~* z, N5 K
}
/ W3 A/ ^6 ?9 ?; T6 p5 B z4 d2 i% M. T
然后你进入functextcmd.cpp并添加以下
8 }% O6 i; N4 b! Y- @# ?/ h" U6 R7 T2 j7 t) P
代码:- \: K- s+ F L3 s
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ): O0 D: [6 j: [1 W9 o
下面插入
, l" K5 [% K7 E% VON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
$ c4 D S7 b1 s) a, z: `
. B1 j5 o+ j# l% t% f, H然后你去
# @1 U ~7 {$ c+ J
& J9 ?& [9 v8 s/ a1 L7 e8 g代码:
; a4 l0 L5 N# `4 w+ \$ Q1 N5 n代码- w0 u/ J: A& g- b$ N( ]( Q: f
BOOL TextCmd_ClearPropose( CScanner & s )& l. I; z4 B/ }' a9 |& X% e+ R
{
4 u/ Y+ g. {& a! S$ s#ifdef __WORLDSERVER
# ?7 c6 _: J7 m4 Y CUser* pUser = (CUser*)s.dwValue;
, `0 e- {: D) a. I g_dpDBClient.SendClearPropose();' a/ }( g# |# { k) ?' }1 F
#endif // __WORLDSERVER
! m9 }& L a) {7 Q* k$ b return TRUE;
: Y3 p- [' H$ m. g1 I}
G* Z. p; [1 ^1 D _: n下面插入+ k4 P' }6 v$ q
BOOL TextCmd_rebirth( CScanner& scanner )
$ S+ G! ]0 c* o' \4 L1 D{
0 U$ u1 W" F, f& \/ u& W' T#ifdef __WORLDSERVER
) s/ O3 q: C1 h. g( C4 MCUser *pUser;
+ r8 A. l; X: Z* R# [pUser = (CUser*)scanner.dwValue;( t2 z1 M g; I# d/ A3 @
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())2 x7 \" _$ O3 \3 t
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);/ ^% h& g7 E/ C0 O4 Y& Z
else* l/ l3 B0 w5 r9 C$ \3 J/ E+ b: `
pUser->AddText("你还未达到重生条件!");
1 K, @6 H% k( r#endif* H7 \$ F. q# Z: F/ U
return TRUE;
, Z) f3 S. G8 W! a4 z0 b} , K! x: k* ~2 H' Z+ x( G) d( @
7 _: r Z- T8 N: ^) v" }
, f( O! n H5 ]# e
) O) \, j8 D9 ]6 s/ d
# d* s, A4 {: X% d* I |
|