|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel" P" D! h) F; ]
1 j+ u% p7 {( n0 P1 w
Mover.h
# E; \6 l8 _7 ]7 G6 d代码:
8 d; M+ k, y/ u6 O( `, {找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
1 z# N1 g" }# |7 _/ z" T
7 v! s' e( a9 i2 Y. ^下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; , Z. M( {4 R1 `. g3 D0 h1 C
* U; v4 ^$ p U0 X6 J3 b
然后你去mover.cpp添加
1 b: R" k( A/ a; G" D( m2 E1 [) J! F1 A
: I8 O6 v0 r% D7 h/ d8 T代码:
& ?$ W/ d, _+ L- X! x Cvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); P0 R4 w7 F a
{4 y, \; Q6 _9 J* B
#ifdef __WORLDSERVER x8 e3 ~8 ]$ h& j1 D* l9 ]: z& m: B
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó" c! ]9 p( U# _! S' v( g; p
MoverProp* pProp = GetProp();
4 q' I/ `7 Q5 t* z: q7 d* @ if( pProp )
# ^- h/ ?2 f- u6 { {
0 |6 L) c" f5 T! A2 T0 A if( nJob > 0 && nJob < MAX_LEGEND_HERO )' }0 R( C" \8 H
{
: {8 l3 S/ d3 p8 v2 I; z AddChangeJob( nJob );
9 f: U6 [2 M1 l: _/ h, O }else{
$ S t* C4 z- P return;
% M9 o( ?# T8 l3 o" q6 i }
/ r- T; A8 o' @3 p2 Y% A* z int nPoint = 0;/ k3 J; ~, A: x Q' O. g& N
if( m_nJob == JOB_MERCENARY )
$ O" p5 @2 a( v& F4 M nPoint += 40;: P- f4 m- X3 Q
else if( m_nJob == JOB_ACROBAT )
3 }6 E2 U) y7 b" x2 P nPoint += 50;
6 {4 v$ g. @6 b* p$ c% D else if( m_nJob == JOB_ASSIST )% C, w$ E1 _1 }
nPoint += 60;" O3 Q0 i+ Q6 d
else if( m_nJob == JOB_MAGICIAN )! D) F* D. r c
nPoint += 90;* c+ M( Q; r/ ]$ X9 [
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )# \9 G! M5 }5 ^, j, U- B
nPoint += 120;+ n7 d2 \/ o) A' ]& y
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )) `% z! D# x5 j" [) m x" Y
nPoint += 150;
; K; H. _1 F" M0 z2 z else if( m_nJob == JOB_RINGMASTER )* C& f& P. M4 d: U
nPoint += 160;
6 z8 R4 R0 l [. X; C3 q3 m9 I2 ~ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )- O& f' Q' i' k/ e3 V- m
nPoint += 180;
3 }% Y; }( G& C1 ?* d' o else if( m_nJob == JOB_ELEMENTOR )
8 E5 p$ u! J. C0 M! f: E nPoint += 390;
4 r! \- U3 ?/ ?% [; x/ s6 Y; g* | else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )$ N ~' G/ {) r- b6 _6 g
nPoint += 120;3 \, }! }0 k) q$ D5 V* ~
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
/ V/ R9 [% x2 L% v4 t: L7 R, ?' b nPoint += 150;/ T0 W# q: d1 ^4 A1 G
else if( nJob == JOB_FLORIST_HERO )
$ @9 ^" y' J1 }2 v+ [ nPoint += 160;+ h" d! c& \. S) s% Q7 Q
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )/ {& `" o- |, x% m! c
nPoint += 180;
* a% p, Q- T6 L& q4 W# q else if( nJob == JOB_ELEMENTORLORD_HERO ): M# J, g: y% U) {
nPoint += 390;: ]0 q. [$ O/ K4 Q" g0 w
: w; Q3 b" z( V; l3 q AddSkillPoint( nPoint );
' S" U U0 w Y3 [, t0 B2 a: F m_nLevel = nLevel;
3 J: R/ ~1 r7 i3 O U& }# n! E# q% D# d% V3 R6 Z
SetJobLevel( nLevel, nJob );
- h. H2 L/ d. y: d# H( {; w; e& {5 u m_nDeathLevel = nLevel;0 k, \8 q# P" \0 m1 u9 C" F2 _) J
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! E* _( l; w& j9 i9 q3 a; R
if(IsMaster())
5 w; @8 L$ z1 L' U0 R+ G, Y# M {
+ l; v A- J# @5 r. K7 B int dwTmpSkLevel = 1;//60, 72, 84, 96, 108, N: f7 r+ s3 a0 X
if( nLevel > 59 && nLevel < 72 ). A" a9 H. t( a' D* K
dwTmpSkLevel = 1;0 L" v+ W4 ^9 B C
else if( nLevel > 71 && nLevel < 84 )5 _% S) M# {8 C, g
dwTmpSkLevel = 2;0 [: h! Z- e2 y6 k% B3 e
else if( nLevel > 83 && nLevel < 96 )
) o5 r$ d5 j7 Q$ w- K) b dwTmpSkLevel = 3;$ h* p7 Z- O% s/ ^+ e
else if( nLevel > 95 && nLevel < 108 )
' x% I: }! p$ U9 o2 I* u3 S dwTmpSkLevel = 4;/ b( N, L x _0 F' Z( }+ u
else if( nLevel > 107 && nLevel < 120 ), { ~2 |. I0 S! l6 e% M
dwTmpSkLevel = 5;
1 n; x7 Y4 `' C( s; X for( int i = 0; i < MAX_SKILL_JOB; i++ ) : C" k6 u1 e, |; @" @$ H. {
{ 6 N2 B# F9 B3 y3 X6 f
LPSKILL lpSkill = &(m_aJobSkill);; ?- h8 ?' R k) V2 x1 s
if( lpSkill && lpSkill->dwSkill != NULL_ID )
& L3 n) O+ q% m* q# J0 K$ e {7 t8 t4 @& p6 ]! o; g4 C: q8 T7 p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 ~% ?2 q& S! O& \( D5 O2 X* v if( pSkillProp == NULL )
; I: _5 D A& y( w& j1 c9 w; J continue;
7 p: n& W7 y% C- u; V' } if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 y- e' X( }1 e8 T9 G5 k
continue;
# [' q* D" J! p& ` lpSkill->dwLevel = dwTmpSkLevel;
* R5 W/ v7 b1 z* V3 p6 e8 f% } }& b* Z6 a# A: [% E' x; s
}
: @3 E! b( X" Z- w' b }
+ d. m/ G4 B3 \ else if(IsHero())
9 ?( D. g# ?7 j) G; t/ t } {3 A' J- M" g1 i
for( int i = 0; i < MAX_SKILL_JOB; i++ )
: u& K2 `6 Y3 p$ e( b {
. }8 R. O0 V f7 h" e h; H LPSKILL lpSkill = &(m_aJobSkill);5 b! \* x& F2 r" G6 \5 c
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ Y7 W! ^ q5 x, w {
c" L1 H; F5 _ G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 m! u6 g/ i, l+ @5 X1 ~: y* f
if( pSkillProp == NULL )6 G0 C# r! g+ G. J/ K# ~" |3 l; P; J0 O
continue;9 s# L- I3 @ v7 j! W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% E( r- z: Q1 C! M9 E continue;3 C' d0 M* \) [8 c
lpSkill->dwLevel = 5;" {$ m* M! W! W+ t
}7 T' I0 \( R) Y8 z
}+ q3 m& g& B0 R& P0 G% W
}% F; y; a, w$ j# _
else if(IsLegendHero())
- Z. j% x" [* `7 U$ G Z5 V* ~7 H {
; t! V* M' K1 W- v! [0 u for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 [3 X* a1 `( o9 b0 u {
$ a' h3 T! T2 B$ R) p& q) t LPSKILL lpSkill = &(m_aJobSkill);2 L; }1 D+ Z, Y ]
if( lpSkill && lpSkill->dwSkill != NULL_ID )4 m* x3 E' d9 ?5 ?: D3 @/ a
{
t/ T% t* r; \) Y% v% |! o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , H: Y$ S- I" E$ I
if( pSkillProp == NULL )" U; v) u4 p; }, x
continue;
' \: F: {- t9 ?* ?2 ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: P: z) q& Y5 x; g* d: T continue;
% w1 `" [& N y# L0 B, m lpSkill->dwLevel = 5;
1 T% _) R" `- N& [8 J+ @ }
* s4 P% Q& _0 ~- \ ` }
3 W( r, r8 D9 _- d }
3 E# V7 r ~! ?/ @7 a#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 [" O5 ~5 g @; ]' l if( bGamma )3 U# `4 |! i/ @" N- g) H, i
{
' `* s0 _8 a* r3 g1 e m_nExp1 = 0;: J4 G3 k* m5 Q3 A1 f7 d
}! ^ F L; u4 B% @' d& R' }
+ p% P7 A2 H/ s6 @5 k( M! {
( (CUser*)this )->AddSetChangeJob( nJob );2 v& U/ ~3 d r* @& f
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
) }7 Q( R; {9 z5 C' j
* L" Q d: w3 n0 _4 o
\0 O- I4 R9 }! H: U#if __VER >= 11 // __SYS_PLAYER_DATA
{: d& m5 c! y: c g_dpDBClient.SendUpdatePlayerData( (CUser*)this );/ B. G) L5 G8 p
#else // __SYS_PLAYER_DATA2 o1 H( |! p3 [# A& r L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
u; a) s/ K6 ~! q3 b g_DPCoreClient.SendFriendChangeJob( (CUser*)this );) I3 h, |' n9 u2 z9 _
if( m_idGuild != 0 )& F. _$ A8 }0 }1 z
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
- u2 l; ~- \5 U! l4 T* k7 M#endif // __SYS_PLAYER_DATA, o) h6 }8 D" d. R) r
SetHitPoint( GetMaxHitPoint() );
/ }5 k3 R+ w4 Y \ m SetManaPoint( GetMaxManaPoint() );
- A8 _2 u1 }) q0 z: { SetFatiguePoint( GetMaxFatiguePoint() );, E: c% Y- o$ w
if( nJob >= 1 && nJob <= 4 ) B0 i. v. E3 I9 u
{
9 T- G/ N, W/ B8 k( @ m% N m_nStr = m_nSta = m_nDex = m_nInt = 15;% O* ^1 r/ c8 j% m
m_nRemainGP = 28;
- U8 x" [4 M" Y' S7 G } B% b7 l5 [ d% G( e
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ): Z" E% U7 U$ O }8 S
{& R% f G6 c0 B0 J" R
m_nRemainGP = 118;" Y1 P" M/ L4 ^) ~0 d7 I& f
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;* N5 q) G( |7 H2 ~5 B
m_nStr = m_nSta = m_nDex = m_nInt = 15;, x+ c+ `& T1 O9 r7 T% q
}
$ T/ @0 \: N1 k3 g if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
- c0 C& a& U3 \. w {- B- q/ D3 c0 i' X( o0 C T4 C+ e" M9 s
CItemElem itemelem;
+ @) k! j; e- [ T+ [ itemelem.m_nItemNum = 1;
( G/ Z4 h0 p' V+ O itemelem.m_bCharged = TRUE; h8 m, u, W: D2 }$ \$ X# ~
BYTE nID;2 b$ P# b* I c2 T A9 h! J
8 B" h6 j' a& W* Z( a" E4 g if( nJob == JOB_MENTALIST_HERO ): e r* c8 J. D( |9 |: v( [
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;! p% ]& o' y2 h. a
if( nJob == JOB_FORCEMASTER_HERO )
$ J/ q/ Q( n) P6 v" D itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
7 c* j) h2 O7 U% ? @6 a# X
+ \- X9 N2 A1 M- C ( ( CUser*)this)->CreateItem( &itemelem, &nID );, A$ N* f! `* g; l% r
}4 [) i0 p* w. l* A/ m4 V% c
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );) j( b! p& [, |
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );6 l7 k, }, B) F5 ?1 K* v' _' L
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
3 ` B9 ~" P- w! E4 j# p) V /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );# f6 |3 t9 b$ U1 m
( (CUser*)this )->AddTaskBar();*/
0 X, r% ^1 o( l" y+ F. P ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );1 Y+ Q4 n) G# n; l
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
, f8 W1 ^# m6 |! a) T+ t; l ((CUser*)this)->CheckHonorStat();' c$ U% ^6 v- C3 o4 s$ o9 K
((CUser*)this)->AddHonorListAck();/ c# b- l6 z/ ?9 J
g_UserMng.AddHonorTitleChange( this, m_nHonor);
7 x- H/ L5 a f2 c( i6 Y#endif // __HONORABLE_TITLE // ′Tà?( \9 O d" J- Z, ^
}
* u9 f. o, y* y) v, s/ Q" c#endif // __WORLDSERVER1 }- L3 ]' s/ T- r5 V/ r$ g5 [
} . Q0 o% c/ W }& }9 J6 D& N2 `
; ^0 W+ U) w: E- r
然后你进入functextcmd.cpp并添加以下
) T; _5 w: {9 q) @. _: c& u* S' z& m; d; s* ~
代码:
: }4 Q0 L' Z3 Y c$ H) |8 U1 ?ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
$ M* T. l( H( q; B7 g下面插入8 M4 R" Y; M9 v/ @; M
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 0 e* h7 |- I" o. ?& `
6 J+ }# {7 Q; o然后你去
6 ]; {- m4 @# ^ i$ [9 `8 {2 ^% d5 T+ [+ Q" Y& X6 c
代码:# k: O% x5 W) R6 S9 G* {/ ~9 a
代码
- C" c6 `: y! S! k. M% _4 }. ^BOOL TextCmd_ClearPropose( CScanner & s )
' y. @# Q0 q7 H" E- i{
' A& t8 T, _9 w. l, |0 t5 V#ifdef __WORLDSERVER
( s; U2 l- V! _! u, x6 G CUser* pUser = (CUser*)s.dwValue;1 y6 ^% S! `* |% Z. h$ k
g_dpDBClient.SendClearPropose();% z& o" Z- j4 z! ]0 r
#endif // __WORLDSERVER
" w* z+ a! \/ I return TRUE;8 Y2 i( {8 @1 a( N% H: b" [: U6 p
}
9 E. r* e" p+ B: {下面插入
8 g; s/ |, A! `7 b( P2 bBOOL TextCmd_rebirth( CScanner& scanner )
l" V5 l3 Z+ z: f7 z{
% f, E+ z9 x2 S) R4 K+ ?#ifdef __WORLDSERVER9 d+ C% V3 A9 }
CUser *pUser;, i! W0 Y7 q( x6 l
pUser = (CUser*)scanner.dwValue;9 G% V+ H6 x5 S( b6 H( h4 e7 {
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())% x& `5 q2 Z# Y! V4 H; w
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
+ K5 j$ X9 q5 r+ } X- x* Xelse/ E B, f! {2 K7 I4 ^) Z9 Y
pUser->AddText("你还未达到重生条件!");
! ?9 Q5 W5 m$ O( o3 r+ I" M f1 X#endif
1 I4 c5 x' t7 m4 W6 e2 Dreturn TRUE;
% K# U2 F# x1 d7 T( w* W} ' }6 v7 n/ U' j6 V) a6 \! a
$ l; X4 W/ P c# k: y% i* w- @6 m8 H: l) k
4 Q3 `8 P/ _- V) c, ^: h# l! M7 A- n- j* `1 @& c6 [* I
|
|