|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel7 X+ z( ^0 E3 O+ Q7 h
, }- M1 x7 `8 v) e3 n
Mover.h
% h" T: C, X% C" Y代码:
+ D& O [! J u6 C- L" H# B找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
; m1 \3 U4 B, t# G. \( T( D7 ^" Y
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
" x" { C6 g. C( k1 n& b$ v) d! o- Q( \
然后你去mover.cpp添加6 v. K, D* l! @ t! ^5 {
5 Y b* R3 L, t5 J- d# X& s7 @代码:. l& Y2 c; O1 \
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )' U, q/ ~3 p2 ?$ Q; S
{
. O5 P. B/ j: c. d#ifdef __WORLDSERVER9 U9 D7 [! K5 v
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
( D" n! h5 g% }' \ MoverProp* pProp = GetProp();
5 J& p) ?- Z/ T) ? t9 t# p6 f if( pProp )
3 z( y3 Q& \# V0 ` {
6 z$ q% B0 @# P& a! J* T- z" y if( nJob > 0 && nJob < MAX_LEGEND_HERO )7 [" I% f$ ^* i
{! \# v& u, `* W( d8 v3 p1 Y
AddChangeJob( nJob );
, g$ o: m; y2 R0 o3 D% M. N( z }else{
+ j. O: @; ^$ r; S; d return;( ]& `7 T! P+ Y1 G/ y0 q* O5 g
}
! l8 {7 H: j! b$ G- X$ U# d int nPoint = 0;7 w( i; O1 P! E
if( m_nJob == JOB_MERCENARY )
5 Q( p+ s6 z. G* G1 c nPoint += 40;
. q9 o; \0 s+ C1 N5 I1 } else if( m_nJob == JOB_ACROBAT )
2 N2 y; g) m7 i nPoint += 50;
% J- A+ L6 W% P7 B else if( m_nJob == JOB_ASSIST )
6 n9 d* r, ?9 H5 l# z nPoint += 60;
1 o2 m& c8 H$ i! N else if( m_nJob == JOB_MAGICIAN )
& U1 P+ h9 w: O- E8 p5 h nPoint += 90;
/ e. _9 c- J8 m: M, j' z else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% m5 t6 T: j0 Z- Z2 Y nPoint += 120;
/ _+ o' h) p3 x1 f" r" Z2 O& T* I) n else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ); a9 z3 U/ t& Z' _, E- h$ V3 B2 W
nPoint += 150;( H& r7 G# q3 E; m4 r0 Q# T
else if( m_nJob == JOB_RINGMASTER )
# R- r' i! R5 |5 }( R nPoint += 160;
+ ^& x0 J, q2 \8 [' s; j else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
$ O) P& }1 T4 G5 N# B' V nPoint += 180;
2 Z4 Y! a& A( k. S5 x Y& J else if( m_nJob == JOB_ELEMENTOR )* H% o4 }' \8 M5 {3 u
nPoint += 390;
/ K1 |- X- M2 O% C( z) U else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )6 h0 c! B1 L8 y( x+ t: h' z
nPoint += 120;4 A7 f5 d% U: e& c9 h, _# z3 S, U
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
. t5 \/ Q" A' s% T. L$ A" G nPoint += 150;
]. ]6 ]5 U" X else if( nJob == JOB_FLORIST_HERO )
8 g4 C7 p" O! `6 V' I$ m0 s nPoint += 160;
- D5 u, F7 h3 v else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 p8 G8 m1 q( n3 W% |& f
nPoint += 180;
' z# J" C$ y: }+ z1 E7 z' D' y3 \0 g else if( nJob == JOB_ELEMENTORLORD_HERO )& F9 W) B/ h. S; r) {5 i
nPoint += 390;
3 z. n6 A0 C5 h1 O+ g$ E& a7 R
( u) H/ E" F/ W2 z% ~9 z" N AddSkillPoint( nPoint );, @0 r! C3 Y9 s- V) `6 e t
m_nLevel = nLevel;, J; m% f. p, [% C
& P' U0 w# `: Y9 c SetJobLevel( nLevel, nJob );
P* T& g1 K( d m_nDeathLevel = nLevel;
! }- i" G1 C4 N" ^! b#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 F- K0 @. W z/ f
if(IsMaster())
/ L/ A, T4 a# t; ~% t! _ {' z9 } B2 @9 S! S
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1085 d! D+ W7 s/ F+ q' |2 e N
if( nLevel > 59 && nLevel < 72 )1 @( r+ E8 S) q0 }
dwTmpSkLevel = 1;' Q. T9 d5 l% ^2 u/ ~! W( H; t
else if( nLevel > 71 && nLevel < 84 )
& _/ A- j3 P! ~' c/ n6 e dwTmpSkLevel = 2;
) U1 g5 o7 W* Q2 {2 T else if( nLevel > 83 && nLevel < 96 )
" ^; Q' x2 o1 j' @. O q dwTmpSkLevel = 3;
" K/ g E4 P c else if( nLevel > 95 && nLevel < 108 )
7 H& g0 U' `% }8 x dwTmpSkLevel = 4;# Z) D) d! @( D$ g3 }- q0 i* K
else if( nLevel > 107 && nLevel < 120 )
+ R5 |$ X4 ]9 h. P" R dwTmpSkLevel = 5;, [: {& Y9 t$ s j
for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 G2 ~, i1 Q3 Q2 m% U {
. e& c/ k3 B0 n' z LPSKILL lpSkill = &(m_aJobSkill);! d6 }7 C- l0 s! w5 {' ?
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 ? l# Q; S# D+ @ {
0 u5 V7 c0 s' C# Y$ C ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& r0 C$ _0 o7 _" ]: [# \6 G/ J S if( pSkillProp == NULL )& k- W. Y/ a: c. W
continue;
8 b- e2 J# _* ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 B2 j6 B+ @0 n/ j8 X continue;
6 @( |7 j* n# z# W; b W } lpSkill->dwLevel = dwTmpSkLevel;1 s) z7 Q8 Z; \4 h
}4 l: T; G$ K6 p+ z3 j1 z
}
; J$ i1 D7 R; g( j( v% k+ M }
" j/ g; M/ Z1 \; ^ Z+ g else if(IsHero())
9 ^+ t5 x$ y g- y) @0 a {
$ p& [' ~6 _& ~0 |1 H7 K for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) o3 g2 K( m) A' ^6 ^* X3 H
{ , W) z$ {( z1 t' O( T
LPSKILL lpSkill = &(m_aJobSkill);
% \0 |1 p0 \# S2 @2 ^, c if( lpSkill && lpSkill->dwSkill != NULL_ID )% Z+ e' S' M. |+ F* l# L, B; J/ a
{
% `0 y' e1 F1 \4 U2 i$ w: ~ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ z- c" f8 {0 r' f" L5 s- v# V) L if( pSkillProp == NULL )
) |2 I9 e# [% F; w% k# k! h* k continue;
( f5 H/ v! _, F& @ A: \- m6 O if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( A& y3 y" h. P. V+ ^9 R/ H continue;
; w5 `* P4 W- p9 f lpSkill->dwLevel = 5;1 P1 ?$ f+ G# i' v2 d7 E
}5 b' b& D0 @: d9 m! S# q" Y
}
5 d, q, X" m) R$ q1 Q' k }
4 W, E' G6 `+ k+ h else if(IsLegendHero())0 M" ? B+ E4 n. ?5 J0 I( R6 I
{
e7 N+ i2 @' j# L! f; i for( int i = 0; i < MAX_SKILL_JOB; i++ )
' D3 ]. D4 M p$ Y# j {
! ^" W0 ?! X6 |; u0 f LPSKILL lpSkill = &(m_aJobSkill);
! ?( K' U2 ?" C: P: F J: _ if( lpSkill && lpSkill->dwSkill != NULL_ID )( w) R: I% b. x" d
{
& M2 \ S, T0 O- G* K' E0 r% m! G9 ]) f) p ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . r8 F* d5 @- s7 G+ P
if( pSkillProp == NULL )
' o1 I9 O4 t8 k& W5 w continue;
$ P! ?- Q' J1 t J( c if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' e: n R. j! K continue;
2 K. r0 H9 Z. S6 y b0 i5 T+ u. d lpSkill->dwLevel = 5;
' Q) p, S, V4 M }
9 _' V9 G; C) ], h% u3 P$ [ }; _" I6 z7 b6 ?' a& [0 ]) W
}
8 H8 e5 e/ t5 B+ ~* I3 w7 J#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ Z' x2 M% l7 D1 }7 ?
if( bGamma )( O2 N5 }5 r' Q5 R4 E
{
8 A) u; B# _; _% J/ @ m_nExp1 = 0;
' Q- P) K" [- ?8 z0 \( f }7 P0 a7 h' x9 X% P+ i
) _' R4 j" ], k5 v1 @) Q1 f( k
( (CUser*)this )->AddSetChangeJob( nJob );& O! Y# h7 I1 Y. B( \0 W5 B
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );+ B) c" L% ~ C5 Z& G
4 z6 N: q7 Q' [( Z/ l
0 z, f' T$ m( G6 V7 U
#if __VER >= 11 // __SYS_PLAYER_DATA
/ @! ]+ ^' X& u g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
( d6 d3 c9 o- Z; y% F1 o#else // __SYS_PLAYER_DATA6 R& N! Q- t9 x" K& c1 s! G
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );* m# Z/ e3 \% Q+ J& \! G1 g
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );2 s4 W0 C5 a3 b6 u, `
if( m_idGuild != 0 )
5 z, z9 u" C" y! H+ t9 y g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );2 ~4 c1 ^" r* Z
#endif // __SYS_PLAYER_DATA
- D6 x; \& U4 Z0 F+ }3 X9 C SetHitPoint( GetMaxHitPoint() );0 N& [ y' b7 X7 @5 c
SetManaPoint( GetMaxManaPoint() );
; c+ A' S* |" H5 L1 I/ @ SetFatiguePoint( GetMaxFatiguePoint() );
% a0 d: l# D4 {3 d" ? if( nJob >= 1 && nJob <= 4 )" r) Y/ p( p, B# H0 W8 ?# x
{4 D. l# F3 N/ A2 c2 Z
m_nStr = m_nSta = m_nDex = m_nInt = 15;
5 i6 [0 F1 x( r; ? m_nRemainGP = 28;
, N- [6 R/ F' Q) `3 U* A/ ` }
4 l0 F% I0 b' G; H if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
" d8 q& g; T' v. W7 M4 [ {
6 h, A$ e* G. d- s/ z m_nRemainGP = 118;) A, W( N0 @/ G$ y
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;' P6 A- V6 m6 a9 J3 S" x- f+ g
m_nStr = m_nSta = m_nDex = m_nInt = 15;
4 K- D" W: ^, Q6 D& z2 W }1 W2 q$ k) E; P8 k! Z6 U
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
9 }( C8 k' g B M% u, ^ {
: j$ K; t7 A2 R: ^ CItemElem itemelem; A* B# b, Y! G4 a- B4 Z: A
itemelem.m_nItemNum = 1;
( _0 r8 \$ e: y. J: }9 t0 K& p itemelem.m_bCharged = TRUE;
1 J' _. I, E1 a f4 q6 ^0 L BYTE nID;
5 o& x- x1 n4 q" y; [/ F1 ~7 X2 f) y% O7 Q+ v4 P
if( nJob == JOB_MENTALIST_HERO )
; ]5 i. H, d& N+ O itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
* L5 l7 R- L# ~; m7 H7 C7 P8 S v ^ if( nJob == JOB_FORCEMASTER_HERO ), J i( J2 A. k( P
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
+ o, H/ r7 N" U' U, J9 m
, [" S8 L4 k3 I- j* R ( ( CUser*)this)->CreateItem( &itemelem, &nID );
$ U/ U/ T; Z* s I4 k. p% t }3 y) G- c$ a- X2 W8 E; `, C
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
1 r8 ~/ Z% J+ v5 z" w ~3 f3 { ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );1 f4 ^, d) e9 n) R
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );. `; \* X9 D A8 e
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
! L* x$ u. J6 C6 h6 N ( (CUser*)this )->AddTaskBar();*/* N7 C0 W. I2 r' v. F' S8 \( k9 i
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );/ u8 p( w) o5 S- l% c0 ~
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?9 ~2 `) s5 \. x- U0 {9 O
((CUser*)this)->CheckHonorStat();2 M8 h; K, e/ F+ n
((CUser*)this)->AddHonorListAck();* H! M( {' g9 c
g_UserMng.AddHonorTitleChange( this, m_nHonor);. s' N: @- C# r0 g7 C
#endif // __HONORABLE_TITLE // ′Tà?
8 Z* }1 T2 B/ l o }
2 l' Z: c6 L1 x#endif // __WORLDSERVER
6 O/ a9 W' @7 K4 P/ N}
% T: T/ l# D) O
+ U1 N8 I; N8 v9 S! O. p$ @% K7 k, I然后你进入functextcmd.cpp并添加以下( q; M( a# A7 K5 E u9 ~
, h, [2 e: ]. B% G- l* i7 b Z代码:0 r, C" x. k; ]4 |
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )3 x* V& A4 A6 T/ Z
下面插入/ U# f3 ^% G+ @2 ^9 x* i
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) $ Z5 P1 [ n0 d( t2 ^+ m# `
; W. C: E4 B+ v8 y$ C$ d9 g
然后你去
" O7 E H/ O% b2 i0 A |) }2 H5 C1 k: Z9 k9 `. k
代码:
}; j* s: p: u0 a代码
. m( @" X. ~1 |BOOL TextCmd_ClearPropose( CScanner & s )
" S8 W; a5 P% H* }{9 K% T9 E4 [) B% h" r
#ifdef __WORLDSERVER2 j0 i& a7 B8 {: ?7 B& R
CUser* pUser = (CUser*)s.dwValue;
' r6 l6 K1 w2 q, B. k& d9 }' a g_dpDBClient.SendClearPropose();9 Z( B" p3 r7 J8 C
#endif // __WORLDSERVER
) J( B9 s2 r" k1 z0 e% g return TRUE;
4 ~8 b. d$ H( T# L. U- N}
! i% Q7 r6 e3 l下面插入2 d+ l5 N4 ~) ~; e2 u r
BOOL TextCmd_rebirth( CScanner& scanner )
8 u1 X6 V/ n2 W& D{
2 L) Z* L- D1 T1 }" e1 C9 } g#ifdef __WORLDSERVER* [. I& b, R5 L
CUser *pUser;9 c% Y9 ]" s- F
pUser = (CUser*)scanner.dwValue;- J0 e+ A! A$ e" N& a
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
% z e, z& ^/ n" s6 f" cpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);$ R0 w. F# a0 F/ W
else+ i3 Z6 P1 J6 o7 l. n8 b
pUser->AddText("你还未达到重生条件!");
7 J. o9 x" R* n5 K. t5 a3 O* S- |2 ?#endif: ^( F7 T0 \; V
return TRUE;
& Y1 j! \4 V; O3 E5 W}
4 S% e1 f+ k. v* Y2 ^$ b( R
J/ k7 H* t( _+ v; a
: ^" s7 S" p7 h+ {
+ h7 V( ]7 ~. S. @2 {5 `1 ?! R6 t# Q
|
|