|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ J/ h& I4 }$ Z8 N% a* Z9 m+ u, i1 {5 M* O4 o5 b; U- }0 y
Mover.h2 {! A! a& H* @# I+ G- t
代码:
+ _9 h: Q( ?' F" n9 v找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
) x) S# p, n4 i( q0 }9 T8 n! C: h! |1 L9 t) M1 V7 i4 v2 E* o
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ! U5 j2 {6 |, O1 U4 ^- L3 k! ^
+ y i1 _ Z% t' m7 O( u
然后你去mover.cpp添加% x' B3 K4 F* u) R/ F" M6 ?( V
5 Y: A! b$ u: @! i `3 ^5 P2 O代码:& }) T. a. z. D9 j5 L! q7 u
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
2 X# z7 h! d. R9 x* q, a3 ^{
) C/ r8 s7 r* W, y#ifdef __WORLDSERVER
/ ~2 k; U$ d. Q% [" c // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó! @4 [% B7 F9 X3 j
MoverProp* pProp = GetProp();
/ I1 l. `" y0 ]: a$ y if( pProp )
7 B9 y7 T8 } ?* i, ]- F# U {! B* q& d1 ]9 e: c: H
if( nJob > 0 && nJob < MAX_LEGEND_HERO ); k* d& ]! ^" {9 K( v8 ?
{ M' w, C3 J# z2 E4 ^, n
AddChangeJob( nJob );
7 b! [& p# R% { T4 s* ? }else{
5 @* M8 A# W( o- d4 q' Z return;
6 P4 P- }' E/ {+ A5 j' Y5 f }% R/ [; L" j" l, j) G0 g7 @+ s
int nPoint = 0;
3 T4 K5 A6 @0 W if( m_nJob == JOB_MERCENARY )- \! H1 ~3 Z4 N# [# l o) p+ W
nPoint += 40;+ _ b- q+ Z% a; u
else if( m_nJob == JOB_ACROBAT )
4 u7 I- k3 W; b. f nPoint += 50;5 X7 {/ G8 e- y% B* y/ U! P' @
else if( m_nJob == JOB_ASSIST )
" l' m1 _- y" x$ Q: j% R nPoint += 60;
: O8 g. T, a! u% n# z" w# g" A$ @ else if( m_nJob == JOB_MAGICIAN )6 Z, k+ F% p! ^7 L
nPoint += 90;; t0 E; r6 \0 l; Z+ T$ M" p& L- }
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
" j2 i# h7 |* u- o nPoint += 120;
: S' u9 Y& b7 T2 g' M8 R4 F3 S else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
* ?3 K7 z- M& p, K0 l) S9 _! ` nPoint += 150;
3 V" P# A! I( s/ t9 Z# X \2 a else if( m_nJob == JOB_RINGMASTER )- O, r/ ]5 |, A
nPoint += 160;% v Y0 `$ t( V J% n
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )! G) r: t; I( h# Y1 F) Y0 s
nPoint += 180;
. T% B/ V7 n. {) o else if( m_nJob == JOB_ELEMENTOR )' a# O9 K# _/ g2 \ C
nPoint += 390;
# a, ~9 e5 z3 w9 b- d5 K: e else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )5 J& v% L6 {: r7 {& _5 h0 i
nPoint += 120;4 {1 A6 u7 x* `& F; E; k! n, W
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
, M8 |$ q2 A1 ?& [, Z nPoint += 150;+ l9 K* c" A" m4 S* g
else if( nJob == JOB_FLORIST_HERO )
. b6 Q( d% F8 w$ k nPoint += 160;
' \- C4 j" p0 q, c! R5 q else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
9 v2 P& t9 j; m# B' s) G% w* _( ~, k nPoint += 180;
% T- w3 p( _8 S; X else if( nJob == JOB_ELEMENTORLORD_HERO )9 ?4 U8 \% l( K) R4 B$ q4 Z1 F
nPoint += 390;: B* h& }& f! s* j- I; I* ?2 l: P
1 y5 Z7 r/ h! E8 G; L d3 f AddSkillPoint( nPoint );
6 y' l$ O' @% F+ h: ~1 k m_nLevel = nLevel;) z* Y# ]5 c; F" k4 B% b
! _1 W( i, L% A) G, p: A
SetJobLevel( nLevel, nJob );6 e* ]3 ^# ~9 P# _+ U j# r$ I
m_nDeathLevel = nLevel;
0 z# a0 n% b) G8 A- }#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( E# N& L j7 ^- r) I( m! J if(IsMaster())
' \ K: m4 I8 E, R4 j {
1 X! S, \% j! l. o int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
# Y& y6 k* x' W5 t if( nLevel > 59 && nLevel < 72 )8 O( h M+ N2 D
dwTmpSkLevel = 1;1 U" h N ^! u; z7 B3 O: n5 S, L
else if( nLevel > 71 && nLevel < 84 )
4 P% h0 N* C5 ?' J$ L* } dwTmpSkLevel = 2;! ?& a0 X! C- I8 g$ a9 Y
else if( nLevel > 83 && nLevel < 96 )( l4 j2 [. I) X
dwTmpSkLevel = 3;3 U/ g3 W* n: \6 g ~* Y; f
else if( nLevel > 95 && nLevel < 108 )0 W/ ?# z( g, a, e9 i) y
dwTmpSkLevel = 4;+ t$ v2 T2 }% K* _1 [1 b
else if( nLevel > 107 && nLevel < 120 )0 j/ m5 B; q2 Z& r9 L
dwTmpSkLevel = 5;$ |/ B# g% d$ D8 x
for( int i = 0; i < MAX_SKILL_JOB; i++ )
# v5 V& N+ n6 }6 F$ a {
$ H5 i: s/ y1 ? LPSKILL lpSkill = &(m_aJobSkill);- f% v/ Y1 U \6 b# r
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 G1 ~0 X4 u9 [. Y% r5 T5 c' L
{1 l- y. P. i0 s) |
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! i* w% ~1 m: b8 F! H8 k
if( pSkillProp == NULL )
% }) \/ r, P. O! w* l continue;2 h9 B: G8 N1 f O2 j; P
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 b9 R5 v* T9 f, G1 j& _9 z: J continue;* ~4 Q% j+ |; ~; a
lpSkill->dwLevel = dwTmpSkLevel;
: C7 r0 f! x m& }5 d; P }" X' F* n' D. `3 I
}
* H7 W [$ M* `) Q }+ @0 i) R, c) Y/ C9 K# [: V
else if(IsHero())7 Z4 J8 z8 T3 g6 G. `
{* F. z" F! _9 G* ]9 }- q% _
for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 r( g1 J" s2 Y# {* \) K: `% }. D {
& z% J$ l/ g6 a" V9 F$ Z" j LPSKILL lpSkill = &(m_aJobSkill);
5 w* k' P& ] D- e6 y# ]0 ^ if( lpSkill && lpSkill->dwSkill != NULL_ID )" V/ H5 i/ ?; N, E# N: N, N
{5 N1 n9 ~* I! K+ y) V; S: \% ]
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! ^: X* X0 j+ B- b5 B, i7 ^) w7 U
if( pSkillProp == NULL ). q5 B! @# o) F1 `
continue;+ C: a# x& @6 s, ~$ O/ j" \
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 G- u4 O# r( w) J1 y- a: U continue;
5 L6 N/ y) G8 `7 \6 U+ u" |( K lpSkill->dwLevel = 5;# O+ \: e$ ~1 T/ Y. b# O
}- B- k8 p, U- r: i: x. Y! p/ K
}1 U! G$ O- E2 e2 u
}
) B! y. Z* Y1 B2 x; s else if(IsLegendHero())
. r: j& E9 G' p% y2 I7 K8 g& A {5 P5 E/ a- e8 [5 {& M& H! K& M
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; ?) M3 i/ b5 P& A& c; Y
{
+ N4 M2 p: x! r. t6 ]; s LPSKILL lpSkill = &(m_aJobSkill);6 R `. K" x6 J8 v' A, t
if( lpSkill && lpSkill->dwSkill != NULL_ID )8 ^$ Q4 L2 V; D/ s
{1 K. y/ v0 o" P+ z4 N, i5 H! p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 \! `! h9 f" s if( pSkillProp == NULL )
0 {2 q7 T! p4 Q/ R N0 c7 _. _ continue;, Q( l8 M( I) W3 x# W) S4 F
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
L9 _# Q: V( E( [ d) _ continue;6 J D/ N5 l- C/ W! Y* s( S1 }
lpSkill->dwLevel = 5;
t' H; q% i q w3 T9 B }
" f) a& d* R/ }8 ]) ] }
: A+ z. y$ y4 d. P9 k* l; ~ }
0 E1 F" k7 n" T#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% h# l6 D; G8 }" {: o3 j( b if( bGamma )
( _5 A: P# y# ~. U: T- v {
8 J( z+ m3 J$ B m_nExp1 = 0;$ p' ?4 @) _" U
}6 H: P8 Z" w [& U6 u7 G( x
5 N" d) W, ?2 q% i5 R6 C; g1 S ( (CUser*)this )->AddSetChangeJob( nJob );
7 W, J. \' ]' c6 e g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
. F. M8 x, [! |4 A% A9 B o. {
5 p5 @# Y- ~; Y/ @6 D#if __VER >= 11 // __SYS_PLAYER_DATA
8 @; V+ B& o0 |+ f% ` g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
& m% C8 @1 [- X0 _' d/ i#else // __SYS_PLAYER_DATA9 j+ f0 O# l6 s; _
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );( v7 Z8 u o# q$ S
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );' L; K, c0 X- a/ T
if( m_idGuild != 0 )4 r+ y( } V, ]: \8 r2 Z
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );0 C7 H" [! ^$ D
#endif // __SYS_PLAYER_DATA
: m* M' }0 L- G* o$ o1 ]0 C SetHitPoint( GetMaxHitPoint() );: |4 u, E4 j2 F3 |/ j3 u
SetManaPoint( GetMaxManaPoint() );
- m* {5 t3 g+ V% B; F; j9 K5 a SetFatiguePoint( GetMaxFatiguePoint() );
3 T/ Q, m% j& u& ^& u+ n* x if( nJob >= 1 && nJob <= 4 ) O7 z- |7 b: Z+ D0 j! Z
{! h0 F$ P( K% ]( Z& z8 ~2 F
m_nStr = m_nSta = m_nDex = m_nInt = 15;
0 p& ~, s+ M7 t! o m_nRemainGP = 28;+ f. B* a+ T+ g4 [8 \5 h: ~
}) ]2 I. m. [5 G
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- K5 h$ x* b' p* e- [
{
1 W* Z! }1 G2 m& W, O+ A) t m_nRemainGP = 118;
* m/ Z' P2 g3 x% y6 x //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;- S- M2 O% ^* c; e. e3 e
m_nStr = m_nSta = m_nDex = m_nInt = 15;
/ T$ l4 Z8 G+ {" B# } }
+ z; o2 [& `& ]! x$ j$ E1 [ if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )( j: o( ?; B) \- n
{
; {0 E- U" [7 j9 P CItemElem itemelem;8 I/ n5 D, H/ C- R
itemelem.m_nItemNum = 1;: t% G0 z6 \' n, g( \/ i$ d, @
itemelem.m_bCharged = TRUE;
: `1 c1 ~. d! R4 d2 ]0 m" v BYTE nID; ^1 a4 ?- F' f/ `" i! |( w
) |. A1 F( B6 g; R9 j
if( nJob == JOB_MENTALIST_HERO )) ]+ }) y" O2 V
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
3 Z- w% l/ ^1 x9 D if( nJob == JOB_FORCEMASTER_HERO )
. u4 Y& p2 n" ? itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
' v( ?- r9 h/ Z. E$ H0 T; P' W; y: Y! Z/ H& U9 \
( ( CUser*)this)->CreateItem( &itemelem, &nID );/ D9 l9 O' V4 h* k$ C& B2 [
}
6 O: W. c; W: E. B: C g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
5 }5 m, s0 {7 H9 Y* A4 g# J/ \ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
' [- o! H9 p# ?8 ^ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
+ \, Y. A0 l# v5 U7 X /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 G% x4 L5 ^" N6 J- ]. r
( (CUser*)this )->AddTaskBar();*/
0 ]2 E) e3 B, b$ ` ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );1 T0 A. W. l+ c9 X
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
7 l* L5 g5 ?/ n) [$ i; ] ((CUser*)this)->CheckHonorStat();
! ]- ~; \( b) J6 o ((CUser*)this)->AddHonorListAck();* u$ _ ~9 K: ~: M
g_UserMng.AddHonorTitleChange( this, m_nHonor);3 p u6 j* q( |3 D( J4 m
#endif // __HONORABLE_TITLE // ′Tà?
# q0 T% q7 k6 T3 @* @6 \) U: H }
8 R* [ a4 c. H, s1 {4 ^4 ^3 w3 \#endif // __WORLDSERVER
, {; D& R% N$ i8 w, |' h, A* [6 H} ! s: F1 o) Y- R$ Z& m) T- c- L. Y
# M3 {! v9 P+ @4 q5 I! q& ^* h然后你进入functextcmd.cpp并添加以下
v8 S, j8 }, m; [) ? L3 a2 r& Q
9 d W4 a* K' l. A+ `/ n7 Q. J代码:& d; d" w: O/ W0 m1 p
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )6 _7 p0 Y# r' O, A7 f
下面插入
% B' e9 L }3 q6 u2 [& o* @; [% g2 WON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " S( W( I o7 m* Y' J' B
4 i- {9 U& r* _ W
然后你去
, V1 k( Y. g% f% o- d; D" [- S9 n4 O+ }2 ~. [
代码:
% s) n$ Y6 O. M1 R, P7 x& Z代码0 l c% X/ ~+ E$ F5 T; e+ z$ R
BOOL TextCmd_ClearPropose( CScanner & s )
2 M A4 m3 q. Z' t9 A{7 a, }; {/ S/ B0 U! c; f
#ifdef __WORLDSERVER
8 o& m& W' A) n9 Z) E7 I; n' [ CUser* pUser = (CUser*)s.dwValue;
+ T3 p/ Y3 w0 X8 e g_dpDBClient.SendClearPropose();
; O- }5 A, Y4 `#endif // __WORLDSERVER
$ n& J6 o( F# r A; \0 }1 w+ D! e return TRUE;- D9 b! z" g, o: F& g' R- |9 i3 C$ E' l
}2 R% f& X4 p' A8 c. O% P
下面插入
; E) |+ w) z# L4 u1 S, ABOOL TextCmd_rebirth( CScanner& scanner )% Z& U+ {5 m6 H3 d" F0 @# q
{) e8 O- I; }% ^0 y. Q
#ifdef __WORLDSERVER2 Q: B i- g8 `1 C2 w
CUser *pUser;# R8 y" N* V* b# q
pUser = (CUser*)scanner.dwValue;
# \1 x! @* ]3 {: k+ r7 k; Tif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
0 U1 G5 ~& p, J/ }5 U: @5 opUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
; [2 X- O0 `7 O. K2 Y. nelse( B3 H- M* e, g2 \' H$ p* [$ T
pUser->AddText("你还未达到重生条件!");
& }) _$ N5 z: S! {5 v#endif
, Z/ J1 q' L: S/ rreturn TRUE;
2 w( T( F t' \% u& Z' H% X} % S! o; r( V0 U# w/ j* `" g
3 |1 j4 ]8 _/ r" ]( Q' o: [
3 N% L1 ]8 P- {9 z6 Z; U! o6 V4 L L1 \4 Q
$ ?4 A7 P0 V/ O _3 [ c7 M; X |
|