|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 N9 e. P- I& u3 v
6 n S3 W; F. G+ p5 m3 _% K
Mover.h
9 ]: |! h9 E a* C. e代码: p- E0 A7 y I! ~* V' n* y: Y
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü6 ]4 s& p% {" l: B6 M6 k+ l' I
3 X+ h3 a& D# j2 N下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 9 e3 ~6 u3 F7 s7 _$ S( d5 p
8 y: W3 E7 }/ ?$ X% z然后你去mover.cpp添加
6 G. x& C C- ^6 k8 X5 D+ Y/ d: c$ f/ L5 y. Q
代码:, A) H* B) N i1 C9 O
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ): |0 E5 |5 J& ]' h4 `+ w# h
{7 o! Z1 c( M$ ^5 I
#ifdef __WORLDSERVER3 [) R, j* t) \7 M
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó4 D9 g# G% \7 Z! ^
MoverProp* pProp = GetProp();9 v' A" f) t- w" S- T
if( pProp )
# Y* e/ k" Y6 J# U {
$ d! b+ m# C7 z3 p w if( nJob > 0 && nJob < MAX_LEGEND_HERO )8 z7 n) P" O, J; R
{: n; f0 a$ S6 H, l" P7 Y
AddChangeJob( nJob );
9 N2 m, ?. |# Y }else{
7 d( g% M) d: W7 Y, L9 L" \ return;
3 \' E+ S0 S+ m5 F$ d6 `. h$ z* [/ n }
" X7 S( E# b# h9 [ int nPoint = 0;
. b, ]3 T( k% Z1 n; \ if( m_nJob == JOB_MERCENARY )
& M' d1 c& [- `" I nPoint += 40;
3 O. H( W' P) G2 H; ] else if( m_nJob == JOB_ACROBAT )9 x8 W) l6 m3 }- e
nPoint += 50;
I4 q; _" _' f; G/ C% q, n9 T8 J" w6 Z else if( m_nJob == JOB_ASSIST )4 j' c: g# r( u' q9 a9 N6 g( j
nPoint += 60;/ P, L: {9 P! i% `
else if( m_nJob == JOB_MAGICIAN )/ s& ^1 l2 F# _9 O" {! w
nPoint += 90;/ ]$ b$ g5 t* \" q
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )( k% {8 l1 o- I" p
nPoint += 120;* E3 K' _) Q, y: F) H
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )1 S5 j3 h1 A, s$ ~) K5 m# _9 A' p
nPoint += 150;
+ y# m# \! H# B' {. \: E else if( m_nJob == JOB_RINGMASTER )3 t. G; R# C) M5 L; r- _
nPoint += 160;
1 K3 y P, i$ K% c" e8 B) `# B else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
2 Y" M: Q, i, f nPoint += 180;
3 v* M7 Q+ ^7 y; U! r else if( m_nJob == JOB_ELEMENTOR )
$ F3 u0 ]+ A+ b* g! Z+ T nPoint += 390;
! H2 b( f9 |# F; P' h+ | else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
J6 I& s& w9 ^5 p& @* b nPoint += 120;
" [" N) L2 p9 ? else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
4 x7 v. M; `1 p/ l nPoint += 150;
. B% m$ f' l9 M* E- l) _: U# d else if( nJob == JOB_FLORIST_HERO )
; {! [& f6 W# t nPoint += 160;* \2 m9 f! @8 D7 b% D
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )% w0 G8 t. _5 v1 R$ J V
nPoint += 180;/ K4 B {1 O( P- M, C" ?; `
else if( nJob == JOB_ELEMENTORLORD_HERO )
, _- W' F: C P8 I nPoint += 390;# j/ ~9 a2 M, M' _
/ X7 O1 r; I" p$ c& Y AddSkillPoint( nPoint );3 U1 M; i4 P& r: m0 u! Z
m_nLevel = nLevel;
) a1 z" C0 W2 Z' m7 z
/ P8 Z' [* ], S! d0 o) N SetJobLevel( nLevel, nJob );
: G2 W* r# s0 X4 ] m_nDeathLevel = nLevel;. f" Q" E- f! L1 {% V9 `- U; B
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ A6 F. {' a: {: w( W if(IsMaster())
) T+ Q/ ^7 g& e+ S! } {& E# d( ~7 `6 v2 V& O
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
2 y+ T$ M+ R! F, ^; j/ Q, v if( nLevel > 59 && nLevel < 72 )) K$ `0 x# T# d X" ^% N
dwTmpSkLevel = 1;
' ]& @& ?2 y# `/ @4 A, r else if( nLevel > 71 && nLevel < 84 ), l* @; h6 J( `) [
dwTmpSkLevel = 2; M) [. b c3 T, T. d# p b
else if( nLevel > 83 && nLevel < 96 )
. d. q# e3 p$ k) p1 X" P dwTmpSkLevel = 3; }% U# \. e, }- r5 i4 Q
else if( nLevel > 95 && nLevel < 108 )0 E8 L0 o& e I) r5 Q
dwTmpSkLevel = 4;8 T5 k) j' ?2 D( j
else if( nLevel > 107 && nLevel < 120 )
* |4 [, b. W# h- V K% p dwTmpSkLevel = 5;
4 n9 V, M3 J& h" n7 ]) E for( int i = 0; i < MAX_SKILL_JOB; i++ ) 1 _8 [$ k3 p% {" K
{
2 _( ~( z- F2 Y% e5 V- z LPSKILL lpSkill = &(m_aJobSkill); J ]4 W* M! N" ]2 `) |
if( lpSkill && lpSkill->dwSkill != NULL_ID )
" T6 q) p5 L/ F {% _" @* u1 j- z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! y! N) \, z& i: M9 c$ D/ E6 @$ ^
if( pSkillProp == NULL )
. u5 t+ ], p6 T) ? \6 \. w continue;$ h# T4 ~( b; B4 H8 R
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! ~/ c; ]$ c2 T" s
continue;2 ?7 T5 U& e0 y5 n' w
lpSkill->dwLevel = dwTmpSkLevel;
/ g8 F& z% O4 I, s }. S$ \" W4 F1 Y5 ]3 x1 o6 z
}2 F5 H+ L0 ~2 J1 R T
}" }5 ?0 ^% {& S: Q* `* d
else if(IsHero())
Q" E+ Y1 ~9 b% n {
' E* W0 j3 k. B for( int i = 0; i < MAX_SKILL_JOB; i++ )
. W$ y# R$ L& J. g+ Y { 6 P; U0 {! ?; q1 S& O( B `
LPSKILL lpSkill = &(m_aJobSkill);
& f% Q$ S; f" J2 I if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 R4 _& N0 v/ H+ b; r! H" M0 S {
C$ s; x6 J- x ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( N a8 j5 e5 Q3 P) l5 \9 H if( pSkillProp == NULL )! t% [0 m& g2 w5 k1 F% V _/ o
continue;+ g! h( |6 n% Y) ~
if( pSkillProp->dwItemKind1 != JTYPE_MASTER). {$ A7 O. E# c" b" n4 d1 v
continue;0 ^9 l7 I& r- [8 Z2 U/ t) f
lpSkill->dwLevel = 5;
5 D( `" I/ l2 { }; ?3 j2 T3 ~/ e) c0 [
}
& j* g7 M' F; o }
1 |$ Z9 o j' [" p' j else if(IsLegendHero())
# H- Q! |, W, ~8 F5 A {
6 g# H6 L; U3 W7 a* N# @ for( int i = 0; i < MAX_SKILL_JOB; i++ ) 0 ?' ^3 l8 h+ T, a$ v. k
{ 9 Z2 n# }2 k& d( O) f3 m+ U
LPSKILL lpSkill = &(m_aJobSkill);
7 O' F* D' {. m+ b' h$ E: i if( lpSkill && lpSkill->dwSkill != NULL_ID ) k( H" _, A- w3 a
{
. r* ~* \- o* H& S; t ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + U: r- L; {/ k
if( pSkillProp == NULL )
" ~$ f1 ~5 U% y6 e4 Z' l* G continue;: v: d6 W/ l5 ]; f+ d
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, M) |/ H, r9 V5 { continue;, G$ x& H% H3 ^3 I: Z' V0 N7 y9 ?: j; u
lpSkill->dwLevel = 5;
/ {% o. B; [! g& y3 n ^ }
& ^2 d" O" v9 S( d' O# s }
! L- Y% L i% W4 n& P }4 q$ N" n" q) c5 s
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
* W, b( P/ j: H: A if( bGamma )
8 L* B/ m, L; q$ w: p& |$ e {4 I7 N7 |" B" E' U( d' Q1 V! d
m_nExp1 = 0;
# U# `( V! C$ N2 |6 {8 m }
5 @; Y; R3 j, L F5 Y) B3 O3 S. v4 @9 _! G0 K# \" j6 ]
( (CUser*)this )->AddSetChangeJob( nJob );
3 W) B) |4 g3 h7 a5 a g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );9 Y2 n5 ~) G) C2 h* j( a. m7 h1 A
; a! e( A0 Q* r8 q% S$ u( ]4 \2 H0 q
#if __VER >= 11 // __SYS_PLAYER_DATA
1 _" g% v( o7 Q! W g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
% {. S& r" x* r#else // __SYS_PLAYER_DATA, o: l% ?4 t, {% j
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );+ o N% K6 {4 z9 m7 S; D" Z
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );; D5 P( _$ F3 m+ p
if( m_idGuild != 0 )
& v3 W) Q8 }+ [' Y/ ^ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );1 [# g& Q& f$ B$ F0 a8 ?4 U
#endif // __SYS_PLAYER_DATA
- O$ b* `; Y0 f/ B9 j SetHitPoint( GetMaxHitPoint() );
3 o. P1 y1 i4 a( _" _2 `' u SetManaPoint( GetMaxManaPoint() );/ a- V4 T8 o" n# x& `6 n* I9 ?
SetFatiguePoint( GetMaxFatiguePoint() );: w& d) F' G$ `- U# K
if( nJob >= 1 && nJob <= 4 )6 G8 ?* Y6 b+ r6 A, h
{0 H7 _! q; N- o* v
m_nStr = m_nSta = m_nDex = m_nInt = 15;
! S7 b7 A) J9 C; D" v B$ A; T m_nRemainGP = 28;+ R9 U1 Y' {' t r, T1 R* i' ]7 `
}4 ^4 R8 M* P$ X+ K0 Y" a) `- H
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
; h8 f: m9 J7 g! x W* j! K @7 G { k" g. U8 }) B
m_nRemainGP = 118;
, s0 q7 L i/ R1 g5 ] //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
S5 S, @) T! E+ m# ~ m_nStr = m_nSta = m_nDex = m_nInt = 15;
- ^. S' g' V6 u; u3 [ }
4 c8 F0 h* c& u7 A+ E v if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
8 r) z) N) o8 X* c# Z {
3 L/ Q! b8 c6 u5 B; ]' P& v* ^ CItemElem itemelem;
$ C& T& r3 o. W Y5 y itemelem.m_nItemNum = 1;
& E* H- y% l9 L6 C9 [* i# @7 s2 C itemelem.m_bCharged = TRUE;! Y( d: f+ e9 Z. C
BYTE nID;
. n l, g% J0 g* }$ ], z- h% ^5 M% p/ Z5 H7 a8 v$ F2 d' G4 k
if( nJob == JOB_MENTALIST_HERO )
# a @3 {9 j! r6 E/ H; N% B( S itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
& E# G( v8 x, Z- l: C2 B' S7 g if( nJob == JOB_FORCEMASTER_HERO )
" \2 k0 h% _: Z/ J) h itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
2 f3 f3 b2 `! v8 f' D: p! a% b4 q% W6 i/ h8 c5 s
( ( CUser*)this)->CreateItem( &itemelem, &nID );3 T( f: ]6 F. n( Q1 R! P
}
. L1 |7 H& R3 k0 l1 H g_UserMng.AddSetLevel( this, (WORD)m_nLevel );1 u7 [2 g8 s2 p. I0 }
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
, S3 L! h$ b1 @: f# U ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );7 `- y; ]: }" _
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
, {# Q: Z( n1 N+ E1 P ( (CUser*)this )->AddTaskBar();*/1 A0 J8 E# M- r0 a
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );4 Y: c9 j: x# G: C
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" a+ \6 H6 A' O! w; X1 `: ^# T ((CUser*)this)->CheckHonorStat();$ f" G& {! l( z3 Z! H8 ~* t- ^
((CUser*)this)->AddHonorListAck();& l: C0 U3 G. p4 N) h
g_UserMng.AddHonorTitleChange( this, m_nHonor);) \. b& C# M% y
#endif // __HONORABLE_TITLE // ′Tà?
3 i' S/ i8 p' @5 ~0 Q8 B }, m3 Z. Z+ s. ~+ \3 b; F
#endif // __WORLDSERVER
, j$ Q A0 _9 Q) P9 g* G# X. V}
/ s( X' F; W8 w+ K+ K) Y6 y- M3 }" y2 t+ _& N' S
然后你进入functextcmd.cpp并添加以下
! X: U; }$ [( N" f- r, P, }
: W- A0 L+ U( z% p) I' `1 a `- M$ q代码:3 R' o% x' s7 P. \
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )' h( Z: N% m8 x5 o1 W
下面插入1 ?6 H7 D5 _+ i- C( j- m
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
; d& z% w0 V9 }9 G
% D! @8 Z+ T. z' H5 l3 d然后你去
9 o1 B0 f) [2 O8 P4 v* b
& o9 b, z$ H: }4 _9 w) j" Z代码:
d+ i7 H, V# A) w$ W. _/ L( b, l代码. F% d Q1 V7 q3 p, f
BOOL TextCmd_ClearPropose( CScanner & s )- ^7 @3 D4 X- R' H9 S. Q
{
0 K' @5 S; O4 e' I+ {#ifdef __WORLDSERVER: F( A* b6 G( f
CUser* pUser = (CUser*)s.dwValue;
) }: N; ~# ~& _7 X5 | g_dpDBClient.SendClearPropose();
1 V7 l1 J2 l- G5 h5 C#endif // __WORLDSERVER
0 j( k N+ g. X! _6 T return TRUE;
, U3 W: Q0 |' E" U! ^2 a1 h8 n}) s% l% S/ `' b; Z3 _" X+ w F
下面插入' L) s# z @3 W% @ K
BOOL TextCmd_rebirth( CScanner& scanner )- h4 ?9 ]2 y8 h# |
{0 i1 }7 E h# C; m" x" f- k
#ifdef __WORLDSERVER
% b0 ^/ z* z, A( d0 ?8 |CUser *pUser;
8 y9 c' w2 O! K% {pUser = (CUser*)scanner.dwValue;+ Z1 W+ D8 i6 N W0 H& ?$ _
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())- G4 B) F% a8 j/ @* w1 v
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
! H& k8 M/ P7 x2 S, \% belse
3 j- X; V( s1 R' p: w& fpUser->AddText("你还未达到重生条件!");
6 _7 A% R6 P3 R8 I. Y/ q, m#endif( l K+ U6 D, C4 J- i1 H. {
return TRUE;
2 M/ z* g, Y' j% S" e+ r* \7 G} 9 P9 w% ?* J* o# [. ` Z
, g+ |, h# T: Y+ c' i4 q1 ?, D0 L7 K/ |9 @8 B9 n
3 }, R* W/ o. G" [5 g: w0 S
2 D! ?4 S9 d$ `9 E- I* B |
|