|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 P! j) ]( [8 a) e Q6 i9 G P0 }
0 l) f) j6 i, y- N8 K
Mover.h) o1 w9 s( h9 q, Q9 D
代码:
4 E" \. y. s( \' A找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü$ J9 P) u/ T* ~
0 h( u' n- u; e; B- O下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
% V8 ~: t+ {/ b; Y/ l* {, c. C, r) P
然后你去mover.cpp添加1 `. Q( h. S3 Y/ ?+ n
% W5 W6 b4 `8 D4 B# ]7 ]* ^
代码:
$ T9 o( Y, {- ^* c% o) Y; ivoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
! Q9 H7 {9 O& f7 I2 z{$ i; f7 U. S% C8 E2 K* e# P
#ifdef __WORLDSERVER
2 Y# [/ {- `; d // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó% ? u [; R) B9 ]6 u% D; W% h+ V& `5 u
MoverProp* pProp = GetProp();
# Z- O- S$ K1 E9 c& o! J6 L8 U if( pProp )
! p6 x. P' ^( g% h, G1 C" ^2 m2 S { T, h$ c) F/ t' P' a1 O+ Z% \6 {
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
+ o# b1 l* E S8 h% |6 |: f/ z {4 J8 a8 A f ~/ _5 n. Z" F3 I0 d
AddChangeJob( nJob );
5 r; `6 T7 u5 R0 s. o }else{
4 V+ E( V5 F$ H* b% O; B; b return;
$ S# N' P* T9 V4 j, q0 Y# k }$ L" r6 M0 [* m0 v8 v& y `* ?
int nPoint = 0;
4 ^$ y. i f5 S4 p. o if( m_nJob == JOB_MERCENARY )
% E4 c) T0 V% r/ z- y' I. ] nPoint += 40;
+ g- @" H1 `/ ?4 L3 _& z. a Y else if( m_nJob == JOB_ACROBAT )
2 c: f H4 m, Y" ?' b7 a- N nPoint += 50;3 i( q& Y, p5 v3 t
else if( m_nJob == JOB_ASSIST )* u! G# m4 T& p5 H5 p( ]
nPoint += 60;
6 f: H! f- r$ I' z Q+ s/ K% _ else if( m_nJob == JOB_MAGICIAN )$ h1 v9 O6 x5 g2 J) y3 Q6 S/ D/ v# Z
nPoint += 90;" ?2 R7 g' o3 p4 U3 n1 p
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )0 X8 t: }: D! U$ h2 H9 V! [+ \
nPoint += 120;
3 d4 z9 T1 w# G4 O7 [! a else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
! p( v$ x1 L5 |7 L: o0 z nPoint += 150;
/ K5 O1 [. k9 z+ ]9 Q else if( m_nJob == JOB_RINGMASTER )
* k$ ^) o( F9 U9 B E nPoint += 160;. c* {0 Q) P9 \+ u& w3 c3 n) `9 N
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )! h- F/ S: d6 |
nPoint += 180;
/ p3 y* [4 d; \- ]! Z* M else if( m_nJob == JOB_ELEMENTOR )1 B3 M. ~: g9 \ ~! U
nPoint += 390;
3 S0 B P- T: h else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
/ U/ w( y" L6 i. l# `9 ~ p r4 ? nPoint += 120;" N$ Y$ F/ F) y: B4 J
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
" q" A. C, @- p+ E9 Q/ @ nPoint += 150;( m! `5 }- i9 q! V/ C/ `
else if( nJob == JOB_FLORIST_HERO )
0 B) D' g# C% z' L5 o0 F nPoint += 160;
% r6 K, H+ M# E else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
; g2 o' u4 W, ]. C1 O! v0 ^) N nPoint += 180;
2 N, n# i3 {' R3 V# r else if( nJob == JOB_ELEMENTORLORD_HERO )4 q$ y& z1 U$ x
nPoint += 390;" ~2 ]: U% w* K
3 T9 Q' v: S* k+ ~$ m# |
AddSkillPoint( nPoint );* o% z4 C5 e) s) v+ B- b u
m_nLevel = nLevel;( C, M) A& x8 p3 J
0 I3 p1 g1 P$ ? A4 t/ a SetJobLevel( nLevel, nJob );
+ `& m3 `4 s1 L! H2 i m_nDeathLevel = nLevel;
. q7 p) [# f+ W4 _$ n \; L#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& ?" P6 {/ q/ a' h% ]
if(IsMaster()) n$ {- ^* a; H* c5 Z! \
{' n4 t/ a4 m0 J1 Y; V+ M7 R; A
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 U0 w8 ]2 S! B5 u/ X% P/ F- |& M if( nLevel > 59 && nLevel < 72 )
( S, I6 J) u" e5 s% C+ V; e dwTmpSkLevel = 1;- V* v8 S+ Y% r, }9 R; k; C/ o+ V
else if( nLevel > 71 && nLevel < 84 )" n7 s( ~& s# R3 o. D
dwTmpSkLevel = 2;0 g3 u/ R, |4 z0 v
else if( nLevel > 83 && nLevel < 96 )
* N, q" F* w; E; c" [ dwTmpSkLevel = 3;
( E5 B. ?, `( \7 H3 j0 s: v else if( nLevel > 95 && nLevel < 108 )1 f, |! y" N+ h
dwTmpSkLevel = 4;
: x. X' C& M- O# L+ ^7 C else if( nLevel > 107 && nLevel < 120 )6 t7 A; m$ g' ~
dwTmpSkLevel = 5;& F Q7 C/ a( q
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ t$ L1 b* _& B
{
' l- o% V- Y0 t LPSKILL lpSkill = &(m_aJobSkill);. x7 p3 O2 w. Z" D( x2 V
if( lpSkill && lpSkill->dwSkill != NULL_ID )
J/ m% h% j: `9 k2 ^ {
. x f$ |: q5 Z {9 l" S6 P/ ~ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( _# {6 t+ X% i3 M2 u' t! S if( pSkillProp == NULL )8 b7 m& |/ i. H# C6 q) J8 }
continue;
" P' Z6 X% H& q; g- t) Q; o& L6 R4 p if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 F, q1 D. e6 I' r continue;
' m+ ], H* K8 D& n$ W" v lpSkill->dwLevel = dwTmpSkLevel;
6 v% W$ k! e6 w' E }
2 x7 b" o! k$ j# e' b }
, }: ~$ v2 e d4 z/ j/ l }
: o8 R; l1 t3 a0 k# x7 B% a else if(IsHero())
1 }& a$ }1 J2 k# v# ? {; }* W: ?* z# w( m( a Q; H
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 d0 a9 u3 `- _ z* t
{ - W6 ]: `7 V# o
LPSKILL lpSkill = &(m_aJobSkill);
3 ?8 }) n3 U: k' e if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 {$ y/ w% g7 F$ p6 N: S o {
: v0 V; O X2 l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
5 C0 {" V& C2 j9 d* z. o9 | if( pSkillProp == NULL )
; L. |9 ~9 i4 K8 G# G& }) \7 h1 R continue;( \- T/ \/ M9 |3 a/ Z9 q
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" ?# d- C1 m/ f2 Z) q6 I- m4 h4 e
continue;# v; P! U3 [( K( l C" C8 C
lpSkill->dwLevel = 5;3 a2 R! }6 C5 F% s
}
4 z. R" r6 c, } }' J" C7 {1 x" G/ s4 c* H, N
}
' h' Z/ d6 w E& @8 F else if(IsLegendHero())5 A$ f, J+ x, S% ], r3 \$ ~
{% `6 X! ?6 |6 |( n, V% Z. {) i
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 O- K! B6 k$ E7 s! C& z% v {
. ?, _1 ~9 O. v LPSKILL lpSkill = &(m_aJobSkill);
) T$ _) X8 d9 ^ if( lpSkill && lpSkill->dwSkill != NULL_ID )
" c1 o2 i5 B" s& l( D" e+ `- D {
3 [; R+ b# [$ S( t- o+ z ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ c0 M9 s, _8 ~5 ]/ n if( pSkillProp == NULL )
) o: z- `1 |! s) |8 @- u continue;
6 @( z3 Y0 _& V if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 g0 a, V* r: r: `
continue;5 k# [0 m$ f7 X' m3 i
lpSkill->dwLevel = 5;
! _5 I* G) j- N* O* s }( u( p0 D ]8 h3 ?) q
}
6 U; f; ^% l0 m4 C8 D2 ^* O9 } }4 q$ w. [* @$ }! p5 T- \
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans' ]. |4 C7 ?9 @
if( bGamma )
# p3 F9 [4 I+ P {* t V; n3 u* c1 }
m_nExp1 = 0;7 s2 H8 g! @7 L! X6 Z( B. v+ N0 u9 U
}% S( q, N* n9 v
0 X: W- O& }9 S1 R3 M/ ^' l2 S/ A ( (CUser*)this )->AddSetChangeJob( nJob );+ m$ ^' [3 H5 b3 |- N$ `# p% ]
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
% J4 i2 D' c3 b8 G8 Y
. C: V/ H) N( h5 B! m( J1 Q6 y' \. u: B$ s5 d, W
#if __VER >= 11 // __SYS_PLAYER_DATA4 t3 H; i3 O3 i- Y. `# @
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
, E* K3 I& t1 U# v. ?1 n) m#else // __SYS_PLAYER_DATA# F% D1 v, W/ o" R! F, j
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
- d1 C, m# T G' p) n7 S3 P4 v! ~4 } g_DPCoreClient.SendFriendChangeJob( (CUser*)this );: w; G0 a! F9 A: \2 u3 I
if( m_idGuild != 0 )8 x0 \' U o% d2 [" i2 `
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );, b+ h" q& u) n2 m1 A! `4 u- h3 p
#endif // __SYS_PLAYER_DATA0 m* Y9 K: M" o2 [* x# l# C. x
SetHitPoint( GetMaxHitPoint() );
* Q8 l5 i% V6 z% G# S1 C! S SetManaPoint( GetMaxManaPoint() );+ D* p. r; Z2 r3 Z! t. X
SetFatiguePoint( GetMaxFatiguePoint() );
: r7 g$ S+ k( A if( nJob >= 1 && nJob <= 4 )) o R, K$ Y; e' _7 f% O) l& \. r
{
, @; M6 l2 [5 r- p! W- k \ m_nStr = m_nSta = m_nDex = m_nInt = 15;9 X5 D% w% Z* e& b, S+ b' ?3 I
m_nRemainGP = 28;
2 N! m. ^. C) @4 \) H }
$ U5 p0 c/ `* l+ N2 V if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
4 }$ a3 I( z( B5 G% F {# g$ R) r0 r4 D' f/ F0 j
m_nRemainGP = 118;3 K- e( `- k1 |
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
/ `. V% p0 ?# s- ]; h% n m_nStr = m_nSta = m_nDex = m_nInt = 15;
( ^) X8 o" t9 [; h }
( F- C. q! t: [- R2 M3 _+ p if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )7 k, q: v. G& C5 z! C
{& U: j! l# f% D1 B1 Z% C
CItemElem itemelem;; d/ [; D. s& |& J+ ]
itemelem.m_nItemNum = 1;
( f9 I2 d6 _$ Z. M$ N/ p& B itemelem.m_bCharged = TRUE;
; Y: Z; T5 O& M B$ U5 A0 Q BYTE nID;' j% R9 P# T# w5 O- `9 _5 k
+ k( b# Q* d6 z8 M: w
if( nJob == JOB_MENTALIST_HERO )
# H$ y1 Q0 c: I+ w) ]0 b itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;* b3 [" n$ F5 e/ G& m/ S' \
if( nJob == JOB_FORCEMASTER_HERO ). w5 }! D1 Y" L5 U
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
# l( i) P/ ~0 Z/ e2 p, Z
& U5 g7 a' b- k$ V) o0 f ( ( CUser*)this)->CreateItem( &itemelem, &nID );
1 B. Z* c6 Y7 b3 D4 {; d }
) F+ W9 D' W. c* J0 M+ d6 j. z g_UserMng.AddSetLevel( this, (WORD)m_nLevel );6 @7 W/ j3 d. }+ u" I- S; ^
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
/ S0 ?4 b N1 p- z ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! h5 W- K2 M3 E' F9 T$ ?
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
r% V+ p1 H0 P: H4 _ ( (CUser*)this )->AddTaskBar();*/7 C {# v" y4 j& E; E
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
: q/ R* ~' ^" L: g2 L3 k0 L) u#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
v0 {0 c- _7 b6 C, o: J ((CUser*)this)->CheckHonorStat();
$ g: N; q$ p0 r) Y! b" L% f4 H( f ((CUser*)this)->AddHonorListAck();
5 U8 h/ T" s: n g_UserMng.AddHonorTitleChange( this, m_nHonor);% l; l. t9 C. ]$ X) h9 e# U. J
#endif // __HONORABLE_TITLE // ′Tà?
, L& X0 p+ G8 Y4 n6 X }
% Y- q4 k$ X: K. S) N#endif // __WORLDSERVER- K+ c8 l: H( y7 [: A
}
9 u/ P; m# \6 z/ w- J1 r
7 l, \& v* m5 Z F' N- d) x4 }然后你进入functextcmd.cpp并添加以下
7 ~+ i2 g# O3 y1 e: B r4 ~/ x5 I+ [3 v9 r, y. |5 g
代码:# d% Z( _2 {5 F6 v- r; u
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) F3 ~) t1 s) m/ U0 s$ Y下面插入( U; v% F! W, Q: Y# _: \2 ]
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) * C0 Q5 E8 Z; w6 l; p
( [. e ~9 U& i" }, p
然后你去: x' ^9 b3 e4 p% n; z( {
3 b! P- Z3 U7 w- l! x1 X$ ^
代码:7 W( Y M/ O: X0 D1 F, t
代码
' S- ] z9 m% R. }BOOL TextCmd_ClearPropose( CScanner & s )
1 r0 Y3 x( s# S/ e" o6 B{
. t* b# k% W: h! u! G# p#ifdef __WORLDSERVER
, p1 z- E1 V, Q: I0 y+ @ CUser* pUser = (CUser*)s.dwValue;
2 g9 l* y: e, j2 ] g_dpDBClient.SendClearPropose();
1 d' b. s a. X$ O3 P c#endif // __WORLDSERVER, l) G( X' G, |* R4 [5 p0 k5 q
return TRUE;2 B% y3 Q: O# Y9 j! e* x
}
6 [" r' L8 l. c( A下面插入
9 `) _8 p9 t5 A+ kBOOL TextCmd_rebirth( CScanner& scanner )+ C, j9 }7 n7 C4 O( S+ ^. z
{
7 Y: | L6 ]& P( U H/ G, h# W#ifdef __WORLDSERVER
* h/ m8 `7 o! C% |3 \- @2 eCUser *pUser;
+ C. u8 N9 f, M: XpUser = (CUser*)scanner.dwValue;3 j' k1 {8 ^1 [' l: J& C7 ]
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( R9 h* |. u3 [) |pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' H+ _- y% j5 s0 m- R) F' j7 celse
) |- }. c. F3 l9 V& s6 jpUser->AddText("你还未达到重生条件!");
- X. d; H- k/ O" }& K1 T, t#endif
% O8 s8 w, n6 @0 Freturn TRUE;
' d" }+ |1 p( O- o: P% |" U}
! \- o+ f' V" Q8 [5 @" C
( L3 C* T; z- [. o
n9 v! b0 D( v E8 o
) j8 Q4 c* T% Z/ v. L7 p' [9 [' V( m) n8 K" ^
|
|