|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel' `: c) f7 `5 H- I
l5 L: n U! h* B# d* kMover.h* X' g2 g" s* T7 G/ V7 t5 ~- V
代码:
/ q9 ]9 x; {* V n2 J% F找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü- h+ @1 o9 |) Z1 n8 a% g" U
8 c' F# L; X( q. t' z& H! y
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 4 C2 T8 ?0 I# H0 s5 C
3 w- c$ ~0 f/ x; Z0 w0 F5 p
然后你去mover.cpp添加0 y" C3 d. @! z8 R
/ n% |" A4 Q( x& q' B( ?3 ~代码:
/ B7 C. w' Q2 F7 u$ Y: y. [! ]void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )4 i; t y1 `9 q! h2 P
{
1 Q- U7 n2 \/ g! |: [$ M) ~#ifdef __WORLDSERVER) M! B/ B* f0 G. s0 J
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó" Q# [9 l+ F( s6 k! w7 u
MoverProp* pProp = GetProp();( z5 o6 k+ z5 J4 Q5 a6 m' ]2 ]
if( pProp )
" f' L# O* H$ W {% g3 M4 [7 ?9 u; \
if( nJob > 0 && nJob < MAX_LEGEND_HERO )- F* H. Z5 c9 c# \( F% e; b9 M
{, J: s3 G8 |7 x+ ]: G
AddChangeJob( nJob );
3 E* |2 o7 b g2 I2 n }else{3 G6 _8 u' r6 n
return;
: k7 }. V$ d. y5 r0 `+ y9 [ }$ W5 y/ H5 F6 B9 h- e, M
int nPoint = 0;; c0 c L, t) V8 ]
if( m_nJob == JOB_MERCENARY )+ T ~9 J6 r! s% j
nPoint += 40;
$ J6 s$ n1 p* F: Y! Z9 C2 j else if( m_nJob == JOB_ACROBAT )" p6 w1 d! C9 K6 C. Y
nPoint += 50;3 g4 M# C* C4 O
else if( m_nJob == JOB_ASSIST )
& M" H/ _$ F) z( T) T$ u nPoint += 60;, a: {8 h0 p9 A
else if( m_nJob == JOB_MAGICIAN )& j( l6 c+ y/ p% G0 j* q/ [; S
nPoint += 90;: p* n* S4 Z( y8 v2 B
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
! t6 g# V" y$ w: c nPoint += 120;7 E5 F& y6 m5 B; r* I
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
* W" y! c2 Q) p- N. f nPoint += 150;
$ m. b' U7 @2 j; ]2 _ else if( m_nJob == JOB_RINGMASTER )
" @5 t) J$ U# N* }( F) N nPoint += 160;
l+ o f# }# e% r; a8 \ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ) Y5 v [1 F" ^
nPoint += 180;
0 l/ p+ f' z# N8 z9 x4 M6 ?, h2 Z else if( m_nJob == JOB_ELEMENTOR )
+ U3 F0 A5 w. b: v4 B% D nPoint += 390;# R9 }. v! R7 r5 u1 U
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )$ D9 n, t5 _1 `: O; d, x& Q
nPoint += 120;
2 G8 S1 B) i" {8 ?8 d else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )5 ^/ A4 `; z/ u( S$ k+ }0 G
nPoint += 150;
# Q! p' l, f# D9 P% J" y& y; {4 z else if( nJob == JOB_FLORIST_HERO )
, d& y5 D3 H* U) m5 {4 [% P; g nPoint += 160;% r- U v8 q( G
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ), h7 \5 b7 [$ y c/ r/ _
nPoint += 180;
9 x4 u- \7 K9 N3 d$ @) A else if( nJob == JOB_ELEMENTORLORD_HERO )
, V8 W h3 ~2 w. ^6 k nPoint += 390;" q* y! u9 J8 B1 |8 u, t" U
8 ]* \# N% F$ R7 F* R
AddSkillPoint( nPoint );
9 \2 s3 Y. `8 u9 \; m7 f0 a" l" h m_nLevel = nLevel;+ A+ R. C9 n$ g( f' \1 {9 ]
# h7 ^! ^2 U3 x8 {7 {0 a4 `" k
SetJobLevel( nLevel, nJob );
. y2 {% \$ |9 p0 c m_nDeathLevel = nLevel;
" A/ R$ R1 r- n" Z4 ~ O5 v#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; m) C6 z$ `( E9 ^ \6 t
if(IsMaster())
5 r# X2 U: O" u {
+ b o# k8 i/ _ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
( s9 S% R' _9 n if( nLevel > 59 && nLevel < 72 ) q3 d8 z8 K1 P) T
dwTmpSkLevel = 1;. i" f" h, u2 g
else if( nLevel > 71 && nLevel < 84 )6 |( \! K5 O/ `/ F
dwTmpSkLevel = 2;5 W/ D$ d$ A) B) I3 r
else if( nLevel > 83 && nLevel < 96 )% Q. b' i T& ~/ I {; {
dwTmpSkLevel = 3;: Z# T: R: v! h/ e. P7 D" D: D
else if( nLevel > 95 && nLevel < 108 )
8 ^! I0 h# q4 D# f' [- m5 A dwTmpSkLevel = 4;
; n$ t# ]% E! q: `" l4 {, d# A! m0 V5 T else if( nLevel > 107 && nLevel < 120 )
1 X% r2 x) k3 D* ?7 N dwTmpSkLevel = 5;( J4 R# v; r3 ?
for( int i = 0; i < MAX_SKILL_JOB; i++ )
- P4 }- A7 v! a$ y {
& ~" x- _1 p7 K5 Z! s LPSKILL lpSkill = &(m_aJobSkill);6 \, V: k+ p% ]- D5 b; C& B
if( lpSkill && lpSkill->dwSkill != NULL_ID ) X+ ^5 y9 X7 }
{* q- P- \, D2 J. o/ s# j
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 3 V1 [; Z; m6 K, b1 M0 [: R
if( pSkillProp == NULL )# x' n. l0 Q4 I+ Q5 U
continue;9 h+ I% w, h$ E: {* C, Z( ] A8 M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% ?& x7 e+ A4 h6 j0 g. G continue;0 ` b+ e7 |0 q! e
lpSkill->dwLevel = dwTmpSkLevel;9 Y8 ?. u6 L/ d7 Z5 P5 k
}
6 q" l0 k* w* s0 e2 d& f8 c }, D; A" N8 w1 R+ m4 x
} |/ L' O. x3 \! j! _+ ?) c" O
else if(IsHero())% \0 J6 F1 H4 \2 O. w# |9 \) |
{0 [6 I8 s% I: k% B) G
for( int i = 0; i < MAX_SKILL_JOB; i++ )
# V6 o/ a! W3 M) J; `% y {
# _) b) P4 [3 k. w& F LPSKILL lpSkill = &(m_aJobSkill);) ?/ d; `$ t. v% z3 `$ i/ s, N
if( lpSkill && lpSkill->dwSkill != NULL_ID )% r: z! T- F7 b4 W. T: R
{# \; a) S7 U( @/ [; u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
' H" M! k! s3 \5 V* j5 r if( pSkillProp == NULL )
% C, g5 G w- d2 \+ B continue; _# J! |! Q( @3 e, I0 M- H# a
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" W# O: R& q9 o" M5 j) T' M D7 f continue; W$ }9 D( e- }" U' ^' @0 [
lpSkill->dwLevel = 5;3 o$ _6 q* E0 a$ ]" f- L
}3 S; |* x8 Q8 v. M1 u! T# _
}
6 K3 W, B$ ?( o8 ?+ V }8 j: d( n3 D% X7 s- n6 ~; o" G/ n
else if(IsLegendHero())8 @9 h. l% ?; n4 u/ o" k* Y+ F5 a
{
; K r6 |% s. x& e' P( Z for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 Q. O2 _% i+ S& R' O4 N
{ : L; W6 @2 R- W6 x% Q
LPSKILL lpSkill = &(m_aJobSkill);6 |; q! E7 g* C' Z2 ]3 Z9 s4 T, @7 K
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 u8 D2 y! _( S- | {
8 `/ B$ Y8 Z0 ` l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; z- Z/ g' A0 I( {. g if( pSkillProp == NULL )) Y* E: D! ?3 d6 b4 G
continue;+ v. [4 y; D5 T. N0 e. P
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- ^/ u$ b6 S' g- c) ~8 ~% j7 s
continue;4 b( E$ u# [ c1 v% v/ ~+ q" S% q
lpSkill->dwLevel = 5;1 F* I4 i9 Y6 j' e
}
! ^1 [2 G w5 u! r# g }' v+ B: V, w7 ]3 n: v% Y0 I7 x
}
7 k. u/ Z) T4 }; u; S#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans% d5 E* r" A+ x3 S
if( bGamma )! g; u/ d7 m# S1 p* t5 z K7 n
{
8 `9 V: s, B0 E- x L8 m, L; m1 H m_nExp1 = 0;
8 ?! v3 f- [# l0 u- C+ B" k }- O- ~8 {* j, ~$ x* G$ H
+ j) X4 P- A3 p9 ` U, r
( (CUser*)this )->AddSetChangeJob( nJob );5 a. n7 Z! x+ `4 Z0 T
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );3 q5 N6 e- R! e# `' l0 W! Q
7 B9 I. ?" A8 Q) |
% p+ k! j4 d- y1 m6 C8 S5 F! v
#if __VER >= 11 // __SYS_PLAYER_DATA
% e, A2 i0 v# q P0 h, T g_dpDBClient.SendUpdatePlayerData( (CUser*)this );/ \) U1 _: z) u3 U% ~) u! c
#else // __SYS_PLAYER_DATA& z+ X7 E' g4 Z1 b, r$ N
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
, }) V. [) r4 \3 Y0 `$ ]: z g_DPCoreClient.SendFriendChangeJob( (CUser*)this );: m2 M; w+ V! C" \5 v6 k! v/ ^
if( m_idGuild != 0 )
! }7 l! p: P5 n g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
+ f8 e3 T; s4 v( C" b) B#endif // __SYS_PLAYER_DATA
& q) `2 h2 k2 M; L. s+ k7 I SetHitPoint( GetMaxHitPoint() );( I$ q* K0 @. u% d c+ p
SetManaPoint( GetMaxManaPoint() );
. u( @% i3 V- _& b# q8 I& I SetFatiguePoint( GetMaxFatiguePoint() );; u. Z' e! x$ j/ a4 r/ R2 r D* b$ k
if( nJob >= 1 && nJob <= 4 )
$ t$ N# [- v* x {9 [' a2 J8 f# Y
m_nStr = m_nSta = m_nDex = m_nInt = 15;# H/ \ | I* B+ S/ L/ P( P3 V. W
m_nRemainGP = 28;4 U2 e f; o: _6 i
}0 y3 S, M3 \4 N9 u3 v, W9 N4 G# i% w# S
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
8 x# w3 n+ d, F4 L {7 v" R0 j6 u/ O- G# X
m_nRemainGP = 118;3 m7 I$ F: [$ w( w6 {
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;, S! B; x! a4 q$ g+ K3 Y8 _3 Q) n
m_nStr = m_nSta = m_nDex = m_nInt = 15;/ O3 q0 F* ]. u! h
}
9 S0 r2 w, g3 {+ c7 Q2 r if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )- A* I4 J$ S: D* A
{0 F, L' ~* Q6 P3 z+ }
CItemElem itemelem;$ n0 F e4 d0 Q) |' |
itemelem.m_nItemNum = 1;
/ m1 O7 C m3 E! L7 x! c itemelem.m_bCharged = TRUE;
9 F( E: U8 t$ B4 Y5 f2 E5 R5 J BYTE nID;
" p) ^, {" `' e, y: _' y/ ?, L M
$ y1 y0 l2 x- M. i2 Q' V if( nJob == JOB_MENTALIST_HERO )
! h8 R J) c7 b itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;0 Y1 i* Q- A- l" C
if( nJob == JOB_FORCEMASTER_HERO )
8 ~7 t Y" y/ N itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;+ D! z$ O0 o4 `' R9 v4 L) l
2 c2 ]; B( Y4 P9 E/ e' d
( ( CUser*)this)->CreateItem( &itemelem, &nID );
* C9 s- @# C2 M6 ~6 [" j) C }, w* Z f/ V6 V! T; s; B H8 \
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );3 x. E" V+ d9 x" ~- j
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );5 ?4 N4 h3 u6 X5 b6 E
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
" y$ V. J5 A& m9 o5 o% x3 F& x /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
4 A! M2 s0 j; [: I1 v( x ( (CUser*)this )->AddTaskBar();*/0 `0 d7 b2 S- l1 [
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );/ b' T% l/ d$ k. P5 R
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?7 B6 R5 g) b( k/ W: F9 O
((CUser*)this)->CheckHonorStat();
I( R. e$ b$ p ((CUser*)this)->AddHonorListAck();
+ f! t- v- L. \2 @/ Y g_UserMng.AddHonorTitleChange( this, m_nHonor);
( l( ?& u- g) K3 x/ m#endif // __HONORABLE_TITLE // ′Tà?. k- {) F8 K W9 v
}
2 R% A/ S' t$ O2 P. D7 s#endif // __WORLDSERVER
+ H7 }* c- y, h) Y5 v4 c3 ]} ' ]7 i' |4 U) y3 U
! p! Q8 J! Q1 [! h: S5 \* w3 m
然后你进入functextcmd.cpp并添加以下
8 W' F& M4 r; n7 H" r4 w p0 v
7 F0 G3 [) m' n0 {3 U3 X9 f代码:3 \' s4 H+ ~' {" w$ m" \
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )4 _. o' B0 W0 B. P$ A: T* P
下面插入7 n1 [5 {7 P6 e' j/ L( {
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
8 F! k, m' S" [$ f) z
1 w- O4 s2 O" M3 G然后你去
2 q, ]' k( P; `- O% c; Q5 D
( |- u; ]! s- E5 R" `; I代码:
; t B- R% \- v* I代码
' i% T3 ^- |, R4 Z7 WBOOL TextCmd_ClearPropose( CScanner & s )! \- v& X# U: m9 P1 u
{
: Z0 s0 W P% b#ifdef __WORLDSERVER
# {1 w! t* g# m% \! l% E+ l CUser* pUser = (CUser*)s.dwValue;2 T8 p1 l7 A* K6 R5 t* R8 t
g_dpDBClient.SendClearPropose();
8 ~1 A, d2 F9 E9 U#endif // __WORLDSERVER0 F7 Y n+ c: m5 ~" |" g
return TRUE;
7 ^% y- y/ D. [6 H, X}
. d$ O9 Z! v/ n0 C) N% c, L下面插入
# ~8 [, c B$ b8 b8 r) z5 Z IBOOL TextCmd_rebirth( CScanner& scanner )* h* X& p* |' l" q0 U6 D# y3 [ X
{
0 j9 z, }- r# Z: Q1 R$ i#ifdef __WORLDSERVER3 V# _. S5 h8 Y2 X w* B( A! h" Q
CUser *pUser;
5 ]% ?. C$ D4 X- j R) IpUser = (CUser*)scanner.dwValue;$ l$ E& ]! s; B/ ^0 j# c. M
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
: \" n* [+ B6 z/ CpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);% q% W' L3 d/ }9 }+ r. a) g
else7 z+ d6 A; S8 L: Q+ l$ z
pUser->AddText("你还未达到重生条件!");2 L3 I2 R6 S' O) \# u
#endif
# | v/ c' B# g/ mreturn TRUE;/ `9 V O0 y' T/ O
} p+ G( L+ e) c
! r- _2 Z8 E. v: e
) w( O6 j$ k8 [1 I4 }: ~7 j3 s/ }% s6 s# ?
- l2 p" m/ L0 R; _6 D8 |, l( ] |
|