|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 ]( |6 _2 h; `+ ?
; i: I/ [0 a+ d$ y
Mover.h0 \! L0 B) F5 [
代码:( I4 L! v5 J N* U
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü) _3 b- S; f G1 i* W/ X9 ^7 z
$ a1 F1 ^5 @; r1 S' s8 _下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 5 ?9 r7 l- F+ R* K
& K. I; |$ \: T+ `
然后你去mover.cpp添加5 A/ G+ G& B6 [8 F
r! U+ K; R1 J8 f* h8 b
代码:
! h$ Z4 }+ u% e6 k6 S- Kvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )3 o3 y. ?: c( X% E8 m. U J
{
: I8 m1 w* I! U( }#ifdef __WORLDSERVER4 I3 g* y0 v# O8 p9 _7 d5 U' g
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó; i3 e$ O5 k9 L: Y q
MoverProp* pProp = GetProp();
# t! H& w3 q! N; A) B- ~6 y if( pProp )4 e* J$ K7 U4 f! R; _5 s) M
{
9 W3 a% {- T: y0 u+ A if( nJob > 0 && nJob < MAX_LEGEND_HERO )1 R8 N! D ]; l( q' z
{
, W" ?1 r$ N2 j& }" Z AddChangeJob( nJob );
2 ~# @9 l; N1 H. ?! j4 d }else{
/ D; r5 E7 D5 n: \4 Z8 j8 W return;% J+ ^6 \1 s- h" G
}) [! O' t6 Y9 g/ I! r& R
int nPoint = 0;
3 w" s! p% J9 F b if( m_nJob == JOB_MERCENARY )4 h: e/ m! D2 e" b% D Q
nPoint += 40;! |! q ] h; }$ c, }% d7 K
else if( m_nJob == JOB_ACROBAT )
d2 b" A; M( d7 `$ s nPoint += 50;/ y! ~6 a2 D7 P* m. b( B* I
else if( m_nJob == JOB_ASSIST ). ~) i! l X7 z9 b
nPoint += 60;6 F) V# i+ Y, F3 e
else if( m_nJob == JOB_MAGICIAN )
) L+ y. ?) z, P7 ?. w4 z$ X nPoint += 90;+ r4 E' I% E A" R7 z; F
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
# b; p% D; K! X4 W( X3 a. p nPoint += 120;3 h0 C. W& m3 v* J
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ). c a3 x, M* {, A3 a+ y
nPoint += 150;# h) o! A, ?1 ~( K/ ]# l) A5 B/ T
else if( m_nJob == JOB_RINGMASTER )
) b# q( S7 L: Z3 h. i nPoint += 160;
3 F9 K& p5 K2 D- s/ W. d else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )* ^' l7 G7 e% j) {: @+ j. s
nPoint += 180;
% `8 y% d- {" n" W else if( m_nJob == JOB_ELEMENTOR )
. L/ Z. V* h! |3 | @4 }" z5 q. V nPoint += 390;
. j8 o$ d; p# { else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )3 y K1 d1 i$ b9 P4 ]5 H
nPoint += 120;4 v0 R- o) B' O% }) L( A# B
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )1 H( J# j% ~1 s
nPoint += 150;: J8 [1 P- J* n# v
else if( nJob == JOB_FLORIST_HERO )
0 T6 `9 q; v% F nPoint += 160;5 `) b, t# P' o9 D
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
2 @7 N6 ~: u s w: I nPoint += 180;
2 T% W& o6 \9 C: O else if( nJob == JOB_ELEMENTORLORD_HERO )& ^7 E2 T% N3 J! Q4 c! m m
nPoint += 390;# H* c5 d- G0 D, _* A
G! l* \- i) W7 C
AddSkillPoint( nPoint ); j9 p& P& Z6 _0 {
m_nLevel = nLevel;& Q0 w( r7 D- H
; `+ T% `: d: S: \' R3 \ SetJobLevel( nLevel, nJob );
$ n) T8 S# r; p2 @ m_nDeathLevel = nLevel;
: G* D' _ B8 F0 a" j#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. k: ]& M/ u2 v4 V7 O, j if(IsMaster())! O9 {# s9 s$ b- U, y' G
{
9 p8 k* J! w. V- W' Y5 C4 a" h int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
4 z- O. r6 `. C4 n% V2 O: t8 e: e if( nLevel > 59 && nLevel < 72 )
( P; X3 m1 Q; @6 R% ^ dwTmpSkLevel = 1;0 `$ y8 x* r, r- Z# H
else if( nLevel > 71 && nLevel < 84 )+ A+ \& |: f( q( E! B
dwTmpSkLevel = 2;
* K: h& h e, B else if( nLevel > 83 && nLevel < 96 )0 ~: m& {, v: l9 ^# f
dwTmpSkLevel = 3;: ?9 e. C: D: A8 y! F
else if( nLevel > 95 && nLevel < 108 )
( B8 f0 }. h4 {2 ?# e+ `+ ` dwTmpSkLevel = 4;3 T, ^ n# l7 [4 T
else if( nLevel > 107 && nLevel < 120 )
8 B! n4 P2 N) [2 d6 x dwTmpSkLevel = 5;
# {, g8 ~& _: Y; h$ q7 E9 H8 D9 ^ for( int i = 0; i < MAX_SKILL_JOB; i++ ) + t& a. O: I) z! p
{ $ J& Y! |# @2 O! i ~0 Q
LPSKILL lpSkill = &(m_aJobSkill); t8 j) e7 o: K) K
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 c5 L+ i+ k. F% F* n4 s {
, n3 c7 l& s* V2 y3 P+ ` ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - G8 m' y2 L; G
if( pSkillProp == NULL )
$ F7 C: t# H/ a% Q6 S continue;' |) N* v) y$ t
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ D* y( s, |! p% P# U
continue;& X- m9 i5 _9 R. W6 F O; ?. l
lpSkill->dwLevel = dwTmpSkLevel;
& a" r7 L% z' L/ g9 J }
& ]& j( g$ {6 s6 e& m }
/ \5 t! G g9 k2 @; v' Y: a7 t }
: i% o& g) I; Q. h, u+ u' m else if(IsHero())
; k. y9 ?+ W! `! ^# P8 v4 K {% j) a5 a5 a7 b, [5 v3 X
for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 X4 l. q' z3 f: E' T2 |" j4 b {
3 t4 o. B, M3 c8 u6 H0 |9 a LPSKILL lpSkill = &(m_aJobSkill);$ q6 ~0 H6 z* E+ V, g) n& A
if( lpSkill && lpSkill->dwSkill != NULL_ID )/ {! S2 C# p0 r' D$ [/ c
{
/ {# }' \8 e9 X, o4 ?$ z ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 L( Y _- X: [. Q5 [" e& R' O+ e
if( pSkillProp == NULL )0 \. |9 X0 r( J' t+ B5 v
continue;, s' ~' ] ^( [8 u7 A, |1 R5 g) D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' U6 o6 e( Y4 P0 o* z continue;% q4 |! @0 ?/ V7 D, W2 F+ H2 c
lpSkill->dwLevel = 5;
1 W# R) B: `9 |1 Q3 P/ z }
: p3 b$ \) w! d. g3 ?' \: l( o }) a% c! `- D S6 ?3 T4 w
}
2 `) `0 B; P6 A1 L, H1 ^/ | P% ` else if(IsLegendHero())
: ` Y+ q! G' n( x {! r2 O8 }$ y, T8 m
for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 F6 w) X' C( Q {
7 o% P ^; d' I LPSKILL lpSkill = &(m_aJobSkill);
& }( E& p. @+ L$ i! n* k if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 |" O, w M& Z( d# Y {
! J! {' ^) `) ~+ e3 X6 F ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); |2 j: C1 Q# x7 i4 L( s* u
if( pSkillProp == NULL )
5 v- G* c8 Q; C/ U/ c! d' b1 O0 {) c continue;( C; K0 f* W6 c3 {9 g$ C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
X4 s! n$ e. ?1 Q4 _" e3 u continue;! q1 L Y f6 F4 j) v" d+ P8 O9 Y
lpSkill->dwLevel = 5;
' [4 F# e$ l6 b& a3 e' ]/ t* \, g }1 v# s1 {$ D7 N" u r6 d6 I% W
}. z! C7 H+ T0 l. h2 O9 w
}
7 l+ @8 R5 b3 i* M#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ D4 D- v+ k: T6 | if( bGamma )$ }) X8 F3 f7 O/ Q$ R
{
9 W! r3 y" g4 h/ }4 V, t: ` m m_nExp1 = 0;
3 e* a6 P# j$ U0 D }
6 D+ [/ A% P. O5 M/ Y4 o0 j4 M6 q. G
( (CUser*)this )->AddSetChangeJob( nJob );" D' ?+ E% {+ z' F( C9 s# s7 W
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
}0 e/ d$ O. c, i; |; `9 ~
1 M, ` p) u: D" W3 V8 C
/ L1 l R R( }$ J$ k#if __VER >= 11 // __SYS_PLAYER_DATA
; q$ `- [3 }- {$ h# O8 U g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
7 Q7 R; F/ T6 l#else // __SYS_PLAYER_DATA
% J$ Y1 }/ o* P/ N; a3 J' E g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
$ Q3 V5 I% j' m7 i3 h' Z, h: h g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
* c8 r+ D; p& ~1 \$ `2 @" z if( m_idGuild != 0 )
& g) H" A5 h3 l8 X g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );3 B- H8 N4 {0 l4 _' \, Q/ U
#endif // __SYS_PLAYER_DATA
, G, {$ W( U7 P SetHitPoint( GetMaxHitPoint() );- L) o) Z5 P/ l `
SetManaPoint( GetMaxManaPoint() );% H2 ~7 _. c- f0 v& C% p+ z
SetFatiguePoint( GetMaxFatiguePoint() );
, P8 X7 O! V$ R* o2 ]! z5 ~ if( nJob >= 1 && nJob <= 4 )
* q, H3 s: F b1 z4 j {& y2 e0 E6 P% S" K; [/ K- R
m_nStr = m_nSta = m_nDex = m_nInt = 15;
) a+ F& f" G2 X4 a$ D m_nRemainGP = 28;8 [+ P5 h" `4 n/ ~
}
$ C8 I9 x* h: U if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ). |6 o+ t( Z# M8 {7 D
{
* b1 e' N9 T. l) |2 C" ? R m_nRemainGP = 118;, N% M$ p a0 M* U) N
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
# C6 ]7 a1 a5 f" m! V1 K m_nStr = m_nSta = m_nDex = m_nInt = 15;) o8 |$ W8 h' c# E& b
}
, w" ]5 z1 t- O* F' r) Y+ g- r if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
1 j w3 G7 V+ |# z! Y {) |4 T$ B2 l2 `
CItemElem itemelem;& O! H) e* m3 P) F
itemelem.m_nItemNum = 1;$ M% k) R& w t% I! U9 P' w" M
itemelem.m_bCharged = TRUE;
/ s( C7 u. k/ |$ n$ r' t) f$ k2 d BYTE nID;8 Z# E& t. j9 t- U" q
! P4 s) K- R0 D" D; M$ h1 @ if( nJob == JOB_MENTALIST_HERO )5 ~4 j, ?! l( `' V+ o8 M) E0 d
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;) Z& m, p/ U7 U: n( k
if( nJob == JOB_FORCEMASTER_HERO )
5 h: K' z- c: A4 { itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
9 W3 b9 M3 s' F8 x! Z/ {5 `% K% q1 H. u
( ( CUser*)this)->CreateItem( &itemelem, &nID );
: A0 x7 l/ n& a0 L4 j }
: Y& f% B0 X) h* ~( |3 K* i" c g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
' e, E4 l1 K, }+ V6 n; g ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
+ \8 f0 f3 x' w. [" o9 v9 H ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );# N3 X( _, g. | \9 B8 I
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );7 Z) _; N x8 e5 v! _
( (CUser*)this )->AddTaskBar();*/
% L0 Q0 ` l! x4 B* b ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
( N! q( f0 d6 y3 i9 X#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
4 K" G: ?: P/ z+ j ((CUser*)this)->CheckHonorStat();
/ A# H* q& n5 v. \+ S# d ((CUser*)this)->AddHonorListAck();% A/ ^9 T! W: y- p% } i
g_UserMng.AddHonorTitleChange( this, m_nHonor);, X5 E' W: v% X
#endif // __HONORABLE_TITLE // ′Tà?3 q# N+ b7 X2 p7 R" g
}
) C* W% z( y/ l5 \2 m+ ~#endif // __WORLDSERVER
( E% G+ }1 W6 O. [} 9 D6 N2 v# J: C2 W |& i
- j: e8 T _! J. m) }2 @; O
然后你进入functextcmd.cpp并添加以下
1 H3 G7 q7 e O3 w7 ?
$ d- p% _* d$ Q5 h代码:
" k; |- N. O0 R( CON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
4 u3 l4 @' j8 U; i( f0 l下面插入/ u1 }( l9 Y* m! l
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
4 S' p5 [2 U3 F. _# W2 ~ N* {) t, Q; R3 z
然后你去
" b: f. k& t; w# o
, o5 n/ k, I8 T# Q5 n代码:
8 D* t: R6 G- J0 Q代码
; z4 F. G3 L6 [& _3 JBOOL TextCmd_ClearPropose( CScanner & s )
* B o% z( f) T{
. v' \( W2 P2 t! m* u( ]( O: x/ ]+ C#ifdef __WORLDSERVER
/ z: l' |5 G Z CUser* pUser = (CUser*)s.dwValue;0 C0 J+ [6 v( _0 S: h
g_dpDBClient.SendClearPropose();5 l5 [0 B( e5 R
#endif // __WORLDSERVER
$ h' h7 A" ~6 W3 B! X1 k9 {% K return TRUE;
) {. l7 `: @9 O}. A% y w0 f/ x" l
下面插入
2 I. u( v6 c- gBOOL TextCmd_rebirth( CScanner& scanner )7 ~, x; ~& J" B6 W" b
{
' k3 ` Y" f* \5 k/ t5 O/ ^$ }#ifdef __WORLDSERVER! v, c% k1 R' a% r" E
CUser *pUser;, \, e+ q( K; B8 L/ ~2 b: |' ]
pUser = (CUser*)scanner.dwValue;) E( d8 G5 L2 ~3 g4 W8 n, |
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())0 h: n% ]. o5 _' ~4 f9 R& J
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
* Y8 F, ?; E9 {else
& D, R. I+ E% u, |9 fpUser->AddText("你还未达到重生条件!");/ Z. q+ [; e7 W4 C* }: U. {, S
#endif
: B" q. w& I2 a# m6 C# Kreturn TRUE;% \# h* j9 K/ c/ P$ z% N6 ^* h5 v, r
}
; V8 y4 \0 \% h- x
8 @. \9 N( A, Z* C( v$ G) K: G) y
7 A A# A! m/ u8 D! \& W7 P
% B6 I6 P! ]# g. h* I$ \' K6 i0 Q
( d. v) y2 X4 m7 ]2 Z. m |
|