|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel3 \' W) t3 E& d; g. N* g
. n& \3 V; @+ g4 X* _0 Y) _Mover.h6 z* `0 {) c5 B2 N; \' T l2 |
代码:, z/ H0 L) x1 ~
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
}1 g: ?* ~) Z, @
- q2 M+ ~9 z' F5 X* w/ M下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
# W3 G P- a3 P+ _) _: r! X- Q, s+ S3 X* g2 `3 P( p6 C p: z
然后你去mover.cpp添加
* l4 _# |2 i- u; J4 t3 D: z, r. f+ z& } Y) z. u$ ]9 z+ T
代码:" Y6 P/ b8 ~+ M: D8 u( q
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
. [$ M: B& f, R( N' i5 d0 X' o# G, q7 @{( j' Z( E1 _0 D0 I* e
#ifdef __WORLDSERVER% B% U' e1 s( h- e1 A. |) r
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
1 m) [4 j- j8 K1 Y: B; e MoverProp* pProp = GetProp();. |5 S# B! \, G4 o
if( pProp ). G! \1 F- J0 `. @, {% C2 ~
{
7 c8 T7 Y, `# ^% V" g if( nJob > 0 && nJob < MAX_LEGEND_HERO ). H. E2 Q0 ^! P8 o7 n7 t- k: {
{! A2 [4 s' o$ R2 V* G6 G( O$ N
AddChangeJob( nJob );
+ T; z) u. Z/ m) s6 o7 g }else{
# G$ B3 V0 N, s7 Q$ C return;, A5 @( A; F7 r2 l! i
}% B/ y l6 x3 [' R/ @0 p$ L$ ~$ G! A& J
int nPoint = 0;' c8 p0 O5 d, [3 ?) ~& ]
if( m_nJob == JOB_MERCENARY )' f! e. Y- ^1 }" t: ?
nPoint += 40;
& P8 c+ x+ P* e9 E2 [ else if( m_nJob == JOB_ACROBAT )
( D" ]# \5 n2 T F. J nPoint += 50;0 `: l# ]" h( B2 ~+ D
else if( m_nJob == JOB_ASSIST )
/ B" L# \8 R& W$ }" t: s nPoint += 60;( {% {/ l8 q9 U& H; N0 y
else if( m_nJob == JOB_MAGICIAN )0 h& V9 ?2 E: I# ?" c8 a. G/ E
nPoint += 90;
( U; c2 M3 o/ U, o else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
8 i: s5 e! E) a ^* H# G; J nPoint += 120; a$ Y7 [, D- `
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
" ]3 t& h# ^8 U7 z5 Y% ^/ c# f nPoint += 150;) y2 x a5 a8 e7 B+ A2 L& j; d
else if( m_nJob == JOB_RINGMASTER )5 J0 O" q! @) t0 f
nPoint += 160;
6 a9 c8 U2 g+ } else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )4 z4 l+ |0 {: u9 Y& E8 z' Q4 \
nPoint += 180;
3 ~/ C: @" K3 H, {- {, J# L else if( m_nJob == JOB_ELEMENTOR )
$ F5 p2 Z4 o% ]9 V# c, v' g8 X4 x nPoint += 390;
( _, a9 \4 h/ P, ?( U7 ] L- j* } else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )8 i4 I$ [4 @ i' g3 h
nPoint += 120;
/ v2 K, p5 J$ c) h3 p else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
8 M9 N1 M4 L5 z nPoint += 150;' v' m$ ~, c" V& H5 }. r
else if( nJob == JOB_FLORIST_HERO )8 `, U" A2 A+ n0 c' A( N
nPoint += 160;
( B6 K( U7 q! T# \ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )+ d4 ?6 D* y% h
nPoint += 180;" E+ a" E+ z9 n8 X" ?; I+ E8 Y
else if( nJob == JOB_ELEMENTORLORD_HERO ); }, f( R1 v6 p5 q! n) V3 n
nPoint += 390;2 B) y3 Z+ u4 U6 C& C% L/ |
, x/ c+ A4 y, l4 X( D
AddSkillPoint( nPoint );
3 S$ k" y4 F9 g2 E3 J { m_nLevel = nLevel;
% }1 I1 ~& i7 G- s
, c% j. n9 v% H9 B s! c SetJobLevel( nLevel, nJob );9 N/ _- m8 `. v$ Z
m_nDeathLevel = nLevel;
( E$ m' t3 z2 b# O#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 J8 h; a' B: A/ z; W' b4 D6 w0 r ^ if(IsMaster())
& n, h9 f1 t- L t1 n1 J: ? X3 k& ] {4 J3 [/ c" b* q1 O0 E( C( p
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108, _/ @' |% B& A. l) i" \
if( nLevel > 59 && nLevel < 72 )0 E; x) a0 b: j8 Q0 [
dwTmpSkLevel = 1;" n8 p4 K$ J4 q1 V6 ^2 z
else if( nLevel > 71 && nLevel < 84 )) N( Q/ }+ }) m4 @0 t3 h
dwTmpSkLevel = 2;
4 G& \3 k. t! [* W else if( nLevel > 83 && nLevel < 96 )+ F; \) j% v7 s+ f4 _7 {* F
dwTmpSkLevel = 3;
& t0 o! ]2 N* Y3 M6 D1 W else if( nLevel > 95 && nLevel < 108 )
! _/ \7 A/ I$ o' X% V+ K) A B* y dwTmpSkLevel = 4;( a8 N! u+ M# ?; }* b% J6 ~
else if( nLevel > 107 && nLevel < 120 ) w w- ]) Q }
dwTmpSkLevel = 5;
( V! l& ^6 @) k$ d! F; t for( int i = 0; i < MAX_SKILL_JOB; i++ )
n, t% B) l% e- I/ \5 K {
) i- g# b- @+ n6 C* J LPSKILL lpSkill = &(m_aJobSkill);
% b7 \6 }7 o$ v7 | if( lpSkill && lpSkill->dwSkill != NULL_ID )8 p) G' b3 q' B% U, N8 D/ G. d
{8 _3 j2 c# Q8 V* G9 V3 j+ N
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
: z: s8 P& {( [& A if( pSkillProp == NULL )
3 Y0 C& a/ ]) `( A8 |, [1 N continue;
/ `3 f* q$ s+ g" t4 O" H if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 h: i9 g+ Q1 d- Y+ Q( V' F
continue;
9 H( ]8 d6 n! T' H, e! s4 I lpSkill->dwLevel = dwTmpSkLevel;
2 {7 O' r* x3 I' k. M/ l$ f }( a; L7 L+ U0 z: w
}
+ R8 L8 \7 u" g+ H* h/ L0 A8 E }2 e9 R; N8 x1 y
else if(IsHero())$ C" P# b+ R' B" \7 B
{
" O0 t& L, j; N: a; ^. W for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 v" O4 A+ t) D5 f4 x3 j { J" G( N+ g0 J: H# O. o9 B: I
LPSKILL lpSkill = &(m_aJobSkill);
( |, L7 B( q9 L+ @8 ?# ^ if( lpSkill && lpSkill->dwSkill != NULL_ID )
' }! d. [8 Z4 k5 Y. ^ {' h$ a" q' l' p0 h
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ o5 k3 H# z9 ]9 m. ?
if( pSkillProp == NULL )
6 l# t/ M1 H: b4 M- X continue;
1 `4 I+ q. A r if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- _4 C( |9 m! h; C. o
continue;
8 v4 c; Z! B3 c! ^ lpSkill->dwLevel = 5;
$ w/ p8 W8 b& |+ F }+ L8 o1 B/ o# G" r( |0 S- z5 T
}0 M' _9 ]0 ?2 A! k. E) ]$ O
}2 ^$ U9 Q7 i' z: c- q2 H
else if(IsLegendHero())% h4 i$ o f ^/ T- l7 n
{
4 z) ~* C0 Q: ?! E for( int i = 0; i < MAX_SKILL_JOB; i++ )
& \. e) G: D/ d6 L9 T {
I8 f% n! G- P1 g LPSKILL lpSkill = &(m_aJobSkill);
& X# ^0 r# v, w+ n if( lpSkill && lpSkill->dwSkill != NULL_ID )* d( k' w6 q: N s5 L) t
{
, m! ~) x" [! ^+ |: Q: w ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . y1 o, C/ w( m) z/ K
if( pSkillProp == NULL )' b# ~9 j" ^1 }& @7 T+ z
continue;+ \3 o4 g! x+ E* t& {" b1 d
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 I/ o; _4 @8 S- G continue;
( U! a) C/ {. s3 Y" n9 c% a lpSkill->dwLevel = 5;
% y6 d4 T3 v8 N. I }
8 s- E# n# M6 x, w% s8 j }
4 y: G8 l7 p! Q( h }
8 Z2 O b6 C, r8 z1 @0 N#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans r5 m+ m8 ]' i- }
if( bGamma )
5 C$ v1 p/ R } T {! Y, }" ^' f; ]+ P9 Y+ \/ o
m_nExp1 = 0;
( x" R9 V4 v+ { }
; i1 f; g2 n4 `5 z' J4 R8 O2 O' i8 i; t7 p- j( I E% _' K
( (CUser*)this )->AddSetChangeJob( nJob );2 ^- H c! H! Z. r0 ~: [2 n1 K8 }
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );" }" U6 x1 t% h! A; U, S8 M( u* |
! x. F1 f. u$ v) ^
: s0 N7 _0 @$ Z" x* y* }#if __VER >= 11 // __SYS_PLAYER_DATA
% ~: \2 @, W2 u" U g_dpDBClient.SendUpdatePlayerData( (CUser*)this );- X, `* e7 I8 E* t' x8 r3 \
#else // __SYS_PLAYER_DATA
- |- G M9 ^* H2 r7 f3 L7 J g_DPCoreClient.SendPartyMemberJob( (CUser*)this );0 \+ A4 X3 ?8 c6 _$ l }& ^
g_DPCoreClient.SendFriendChangeJob( (CUser*)this ); M' V2 c4 v. [' n+ d0 B; k6 h9 x
if( m_idGuild != 0 ); r9 w) n# U e H# n N
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );& b/ c Z1 c* p) S+ g
#endif // __SYS_PLAYER_DATA
4 D0 j/ D$ @. {0 K5 H" _1 } a) Y SetHitPoint( GetMaxHitPoint() );
" G1 S6 M) r0 S SetManaPoint( GetMaxManaPoint() );
# v- h' G4 P3 R4 k9 J: K& R SetFatiguePoint( GetMaxFatiguePoint() );7 d9 K1 F9 H, A9 v( u$ k, o
if( nJob >= 1 && nJob <= 4 )! a7 R7 ]2 L0 l0 b! K7 Q* m: [' W6 C
{
1 _. ~. a8 P4 E5 @3 ^ m_nStr = m_nSta = m_nDex = m_nInt = 15;. v0 k1 e: L- L9 R Y3 @
m_nRemainGP = 28;
2 ^" H! ^/ u3 p U: A' _ }; O: T2 Q" I3 v/ t
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )2 {4 H9 M1 ?% h- k3 }8 F
{/ h/ f7 G6 h4 _# e" l
m_nRemainGP = 118;1 s6 S! ^# O# t% `. X$ h
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
: z/ p7 ?& k. I) l/ f$ i m_nStr = m_nSta = m_nDex = m_nInt = 15;# z. |. `7 {" e5 N
}
" Y/ j% Z8 {5 \( \, n( c; K if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ), H. K7 u$ {7 V' F
{5 y5 g( q" n' m
CItemElem itemelem;, A6 {; v w$ E1 P( j5 M1 T: n
itemelem.m_nItemNum = 1;
+ `: ?3 [0 }7 @" j! F) w itemelem.m_bCharged = TRUE;4 a" H* `% V6 y" V5 ]: C$ x
BYTE nID;2 c0 W$ S1 ?; {5 s9 p2 R, N; d
& L/ f, r5 w4 I
if( nJob == JOB_MENTALIST_HERO )
8 u& L/ J( V1 Q; g) Z3 ? U/ p itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;, U, W! p4 \( x+ N$ A% P5 m
if( nJob == JOB_FORCEMASTER_HERO )
6 p- a3 q1 `/ k+ B5 Q$ n itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
9 P# V' x6 t5 l" k1 w. t H
& r3 o- w& W& ]' H+ T ( ( CUser*)this)->CreateItem( &itemelem, &nID );
% L. F& S/ R8 B: w }
& @5 o( A/ S& U% f/ }8 V2 z- T9 m) m g_UserMng.AddSetLevel( this, (WORD)m_nLevel );& ?# R( D$ `! }0 j# j) h6 X- o, ?
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
9 w% _* |7 g8 z+ S1 {: m, I9 L ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
7 Z9 M9 I4 e/ D" k /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
$ c `; X) ^2 X2 C+ q6 U- w/ Y ( (CUser*)this )->AddTaskBar();*/6 l; ]# Q5 |$ I) }3 \5 Z4 ^5 G7 E
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );0 x1 \, \8 {: c+ t6 \( m$ ]4 D
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?3 H2 L( h' t' I; j7 B
((CUser*)this)->CheckHonorStat();2 t/ h( l" ~/ ?# b+ v
((CUser*)this)->AddHonorListAck();
( d' u% M+ k/ M' n g_UserMng.AddHonorTitleChange( this, m_nHonor);
! P A. ~- R2 Y+ f( A#endif // __HONORABLE_TITLE // ′Tà?: w: G* {/ I7 R- b1 f1 ?% S
}
2 Z1 R0 i: o3 V#endif // __WORLDSERVER
* W4 K7 h9 K2 R: B) x}
/ |' ] q5 a% c K' g8 y+ H2 t) Y8 A6 h$ p1 _. ~& j1 P
然后你进入functextcmd.cpp并添加以下
/ `5 |1 H* G9 D# ~! w/ g
, I, Y! o; L+ h' ?* M) X代码:
% v% l+ q; z) _* c" ]: CON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
C2 d4 T e* s1 b下面插入- [) ?& u& R9 t3 H
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
8 n% L+ a. {( M. h' ?: y! z& z$ S. h; D+ G1 o
然后你去+ a: r9 ]! T9 c. {' s! W+ H
5 l0 z2 f- O. M, t; G5 Y' E
代码:
* f Z8 G0 ~) l' A) `; ~. u2 K代码0 o. h4 r% Z! `- U! ]; Q
BOOL TextCmd_ClearPropose( CScanner & s )2 {: m) N' Z; q& C( O# `, Z
{
# S" c$ I, y4 T w: t5 X2 v#ifdef __WORLDSERVER& r! a: J; a8 W3 t5 \6 H" l: V
CUser* pUser = (CUser*)s.dwValue;
2 T% M5 B: u7 o7 q: X$ O0 `+ p g_dpDBClient.SendClearPropose();
# B2 w, A" `0 L' P9 I; I V( A#endif // __WORLDSERVER
$ g. b- o. A% ~: ^: j1 Y+ N: g4 A return TRUE;0 v3 k1 J4 R" O' d/ M- _4 V
}
! H0 g- d/ V& ]6 m: ?" H) [下面插入
. d: _% Z& F8 [- E7 x C- nBOOL TextCmd_rebirth( CScanner& scanner )8 D; F4 }. d% V X
{+ t* F2 r( j! c3 l
#ifdef __WORLDSERVER
3 a% z1 |3 ~* [; N; ]CUser *pUser;/ M: J& E5 J7 i9 Z3 P
pUser = (CUser*)scanner.dwValue;
7 X7 Y( {7 T+ `8 ~if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
7 h; x" a7 ~3 B, p9 a- B2 hpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);$ B9 F: N% D/ z: u8 W$ ~0 m' |
else0 c& O$ M, R# p, H$ X+ N) A
pUser->AddText("你还未达到重生条件!");
3 A1 O: m, f7 {#endif+ {. \( C$ a p" B/ w2 @
return TRUE;- w8 ]6 M3 K1 w/ l# M5 O7 e. _
}
8 y% y! p' S( t# d0 }" F2 a" Q
! t; u- h% D# P; g j7 V* _) D6 k
0 g8 M3 i' I4 c# `" _* i8 t |
|