|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
8 z) B, f! F' J9 r8 \' } f. ~' n1 F
Mover.h4 g: a$ z& |# ^9 E2 V( j( c6 s
代码:' b5 {9 X5 _. f3 M
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü3 D8 X! _2 O/ \3 E
- C# Q+ i/ d6 k3 q/ Y( y5 H% D下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
& j7 y+ B& @* H+ C/ r& z9 k6 l j
3 w/ P! S4 |4 P3 z然后你去mover.cpp添加/ Q* |: ^- T: t0 @, v
2 ^1 R' Q8 d7 y$ j4 o; }4 l代码:
0 T/ P$ f7 q4 S2 u s: uvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )$ L+ j U3 s1 M: P$ a- T
{
+ `) V. `9 t" j#ifdef __WORLDSERVER
2 o8 [' a& A( I/ n r# Z/ \2 } // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó! P# Y1 ?$ r1 h: Y
MoverProp* pProp = GetProp();; G4 b8 Y) T3 |4 H" i& {
if( pProp )
# h7 ^+ O' U" c3 w2 Z {5 u7 g6 E8 W0 a
if( nJob > 0 && nJob < MAX_LEGEND_HERO )2 P7 w& N- N. k, E# s) y4 @* `
{
9 v- R9 l2 H e AddChangeJob( nJob );
# ]7 g3 P; ?8 h+ n& ]3 ^* [ }else{
/ |3 c. q3 F6 s( S5 \! c; f return;
+ {& b: F8 {) O# R3 z# K' W }
0 w1 j! z7 T5 A' g( u& e int nPoint = 0;5 l b% j- d" H! G s
if( m_nJob == JOB_MERCENARY )
7 F4 S A% {: ?9 \# ]* W1 A3 ]2 B5 S" p nPoint += 40;
. i: A- j% K5 ~7 ` else if( m_nJob == JOB_ACROBAT )+ S' x( [6 q C& {8 E
nPoint += 50;. e. L3 ?4 }" i9 B9 [; H1 e% B
else if( m_nJob == JOB_ASSIST )
! N8 a8 W; O8 _/ B1 t4 J/ j nPoint += 60;
$ q2 T; f G& V c, j else if( m_nJob == JOB_MAGICIAN )4 g, E7 B8 j6 _
nPoint += 90;
* C# ~% Q1 J9 @ d# W else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
! `% U6 K+ Q* A; l0 B: n# ~4 g( v nPoint += 120;
" U0 i6 U& X$ X( i R( {, O else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )8 ]7 _' s6 G: {2 q" T% x
nPoint += 150;
2 ]+ b' d) U8 f! j* K else if( m_nJob == JOB_RINGMASTER )
1 M6 f/ i% a, O$ `; i nPoint += 160;# \+ j. q$ O+ k c! K9 k/ o9 J
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), l6 y c: |; R; Y
nPoint += 180;
6 t: d* k9 Q6 c4 `) O. Y2 B# i else if( m_nJob == JOB_ELEMENTOR )! K2 h" y/ D: |2 `, }
nPoint += 390;
$ h* a: j( ~7 h else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
7 _! f' R7 ~! l/ f nPoint += 120;7 h+ l- n0 v# m- F5 E4 X
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )) z1 R6 {5 w2 S, E) R
nPoint += 150; W7 p) x) }4 z2 u. ~0 }* j: G
else if( nJob == JOB_FLORIST_HERO )- t) R# ~2 u- _7 ]
nPoint += 160;0 K# T0 v) g+ `; e, _
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )+ j2 X0 K; [0 n: h; y4 [$ r
nPoint += 180;( I2 @1 O+ p- ^9 F- t( {' i
else if( nJob == JOB_ELEMENTORLORD_HERO )
8 ]1 ~. r$ f; _' G) ? nPoint += 390;
: c6 w) ?' j9 o1 d" n7 O2 v8 j3 g5 k) ^& S$ R$ X3 I" D, l: _
AddSkillPoint( nPoint );$ Z8 L* n ]: t' H! o, v5 r* {
m_nLevel = nLevel;/ X0 f, ^9 ] W" g) v1 ^4 v
; A& {4 ^) p+ x SetJobLevel( nLevel, nJob );
6 ?! E9 I) E( Q m_nDeathLevel = nLevel;9 w7 B" s2 H6 ~
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 d5 }* A3 O" i G0 f if(IsMaster())
[' w n" n# _1 l& `# A {( B: J$ ^; {/ i2 t
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! P9 r3 T! w" B/ f1 E2 e9 M' b, r
if( nLevel > 59 && nLevel < 72 )/ s- b f( E; V! x8 x
dwTmpSkLevel = 1;, Q' F# B6 e- R6 X
else if( nLevel > 71 && nLevel < 84 )
( e5 r5 q! w6 G dwTmpSkLevel = 2;2 t- ]. w+ @* m! v& D9 z/ j' ^
else if( nLevel > 83 && nLevel < 96 )
" }( Z" Z# u9 M+ X$ i0 S( j$ F! C dwTmpSkLevel = 3;+ {( J7 V- R+ }/ b- v7 q
else if( nLevel > 95 && nLevel < 108 )! t+ V6 @, g0 c, E
dwTmpSkLevel = 4;
5 c8 [) ^. y6 @ else if( nLevel > 107 && nLevel < 120 )% N" J5 [# {' S; N+ y$ X$ d+ a; ]
dwTmpSkLevel = 5;
+ |2 R8 ^6 R1 s4 m& y8 f. T for( int i = 0; i < MAX_SKILL_JOB; i++ ) / w- |" Y( @% H4 v
{
* h6 R, b3 \' V/ l LPSKILL lpSkill = &(m_aJobSkill);$ n; q" L' b0 Q8 \0 ^
if( lpSkill && lpSkill->dwSkill != NULL_ID )" k8 w+ Y) G m% i
{2 S( w2 A5 i' z. m# g H4 | F
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : `7 `5 x+ @) _9 d9 Z: F! o
if( pSkillProp == NULL )1 q. K% t) H5 T2 v! c; [
continue;
3 L7 j: n2 \8 Q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ O/ r! P" ]" w; T
continue;
6 u# [: X2 `7 W7 ?7 q lpSkill->dwLevel = dwTmpSkLevel;4 f/ f; Z: o+ ~; C) X4 g
}
9 Q: A& G; b) {0 z }
" N9 p; \" a: P; H3 U, T/ J' { }' m+ X) Y+ A- m
else if(IsHero())
& U* j- Z4 [: M; C9 W {1 K3 ^4 ^+ j" ^9 B" I1 x% ?
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 M K8 k- t+ ]6 T' j, k, y
{
7 K& }! B, R- |& p0 z/ i3 s LPSKILL lpSkill = &(m_aJobSkill);
( Y' ]4 K0 g) c: H4 u if( lpSkill && lpSkill->dwSkill != NULL_ID ) {$ @: C& L! V0 {9 c/ z9 Y
{
. o- P9 i' I1 F+ a7 H ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 j- h4 g0 R" U' N if( pSkillProp == NULL )9 G7 N2 G5 n4 a; J' _- H
continue;/ G" V- }5 P' a/ s4 ?' J/ f9 `
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)% S" ?4 }, J5 O y
continue;0 Q* A% x1 h7 I) O
lpSkill->dwLevel = 5;
' n, O$ Z+ }# i" ]0 {% j1 ? }* M- `& g+ x- I. X
}
! N% R/ b" H" ]( ~% n' F9 [; L7 b }
1 t7 p" w, Q3 i" N else if(IsLegendHero())$ A: T$ u: C- p% y! R) {
{
- o, q- R2 U7 e4 G8 S6 d for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( s4 k$ M1 J7 l% P
{ 4 q# K: v0 y7 i- u& _
LPSKILL lpSkill = &(m_aJobSkill);
2 `( h, |- K- q0 D3 A1 T* U if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 {$ ^) t# A5 L* n; e {
* j) u# M/ C) b( N ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : s, ^1 m$ V, n! t1 s3 Z
if( pSkillProp == NULL )
, r2 F7 c4 `# W, N9 ~' {) C; M0 W continue;2 L4 O- |' b. p
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) @5 ]. r) \* ]
continue;6 P. T7 N2 G4 d- K- p
lpSkill->dwLevel = 5;
- x. G" Z2 _9 V+ w; C0 G }3 L: V, |2 @" R; w) z" H
}
( M+ `( {, S* `; l% E, ~7 K, v }
& ^0 _' @7 ~! j% ^, M% ?#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 A+ S( s8 L, o
if( bGamma )
! n8 y4 c/ _2 F {
/ d5 [1 I' W, K# w. R' c m_nExp1 = 0;
7 m( X" U$ z# U }# J' r# U5 R: o. @# V
, @' M; |& O0 L" i5 f% y3 p8 d
( (CUser*)this )->AddSetChangeJob( nJob );6 K ]. y5 V: Q+ h
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
+ L5 V. x! k3 K$ X0 N; Q9 z$ z1 t7 W# v4 R, U
$ q+ t5 x- D( t- I$ _; u# d
#if __VER >= 11 // __SYS_PLAYER_DATA# }7 }& R8 q- Q* h2 ]
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );* Z% \7 u6 S+ {' ]5 @* o- V. L S
#else // __SYS_PLAYER_DATA2 `/ D2 p9 Q# d3 D
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );7 B8 }& I/ | ^
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );: {! L0 B! X: _' S4 g% q
if( m_idGuild != 0 )" V; L% M1 l& P" n, l
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );* I" M6 @- `( ^: S- p- X# d
#endif // __SYS_PLAYER_DATA3 k3 H5 J! x3 M. }0 P
SetHitPoint( GetMaxHitPoint() );
2 t; Q9 z/ F# p' I1 J% x5 K2 Y SetManaPoint( GetMaxManaPoint() );! ]5 }5 W# `2 i2 ]
SetFatiguePoint( GetMaxFatiguePoint() );1 c. O$ }/ P+ ?" v6 E2 G
if( nJob >= 1 && nJob <= 4 )
: J: e7 v h9 B$ b {+ Y7 D, P1 N, t+ _
m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ S" ]# {/ a/ a I% U1 [* t& p* M m_nRemainGP = 28;
G+ I: u9 @5 S) y5 B }
; i {" G& U# C if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )4 o. a1 }; Y! r; m) o
{# H/ F2 E( d" r6 h
m_nRemainGP = 118;: p% p! L# [* T$ V# Q I3 @
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
! }- j7 @& _3 z+ m" [& s* o+ o m_nStr = m_nSta = m_nDex = m_nInt = 15;, c. D, W) [/ Q
}
# h1 O$ r( D4 Z2 w$ C if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )& o- U8 ] i: y+ i# B% m1 E
{
X0 f$ j: }7 {' A) F CItemElem itemelem;
- I0 |+ E* P2 P3 w itemelem.m_nItemNum = 1;
J5 W d2 k5 A, k$ b itemelem.m_bCharged = TRUE;( z4 f/ c+ S- |/ W
BYTE nID;
3 u. l- h# w/ K4 w
4 Z) B& K1 J7 J9 p, c if( nJob == JOB_MENTALIST_HERO )& e0 c2 Z* p+ C6 e# g
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
$ D1 z; g7 y) } if( nJob == JOB_FORCEMASTER_HERO )% E$ y* C, \( y( t
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
, e! l8 Y+ P- B; i$ z* E* k' _: a! r A
( ( CUser*)this)->CreateItem( &itemelem, &nID );6 t$ f/ \* c! B: Y" N, f% r, ~
}
# k' u: M$ [- j: I g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
- I$ e g* R/ Q8 N$ ?2 |- g ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
; K- N& [9 @. Q+ S/ a( |" C ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
3 A. e' e8 k9 ?$ T' d9 q& U /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
. b5 t! k+ ?1 m5 K; ^0 n: H: M ( (CUser*)this )->AddTaskBar();*/
! P/ `& G1 @. ~ ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
4 {) u) K" ?; W+ X1 J#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
1 I1 ]. T/ y m) k! }" I ((CUser*)this)->CheckHonorStat();# [5 P7 A* X: w: j8 w! _; a
((CUser*)this)->AddHonorListAck();
* d8 {; a0 ]3 P g_UserMng.AddHonorTitleChange( this, m_nHonor);" E: A* c# T$ R, C. W
#endif // __HONORABLE_TITLE // ′Tà?0 ?+ {. Q2 L' c( u
}2 L# u# }# ?8 f; P
#endif // __WORLDSERVER" ]4 O& K, P1 F/ n( F2 r* [
}
- g; k% `7 m- g! G. O) z0 {1 A( R8 u2 s4 Z: `" D) k
然后你进入functextcmd.cpp并添加以下: x; F0 h, k5 @* l) u
3 E) Z2 F+ T5 o: D- {% V
代码:
/ b) [- n% q/ _& J2 _* nON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
2 H7 s- q5 F* L6 [7 D4 `# w下面插入
% _" D. F0 n& Y- m7 b( }ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 1 v( q9 M& @/ c; d, F @
8 `3 c5 p( K5 S4 n ?然后你去
# T5 L; w7 @; P5 O6 P
0 }$ V# l u2 Y, O+ U' A; o$ |4 K, H8 K代码:
9 [! c0 W! s) m! @代码6 D* |# |6 ?1 Z$ z
BOOL TextCmd_ClearPropose( CScanner & s )
; f+ Y2 p% V7 N0 x{2 c) [. B5 W$ u) A1 ~
#ifdef __WORLDSERVER
! F( R' ~ G( r- ^7 C! }$ ?' T) c CUser* pUser = (CUser*)s.dwValue;
2 r/ D% N4 i* s s$ Y g_dpDBClient.SendClearPropose();" }, b4 v' L0 B) m7 i/ I
#endif // __WORLDSERVER7 M9 K4 P9 N; i4 I* A0 F
return TRUE;, A. |6 j% m, J) ~' {; a
}" e6 g- J+ ]0 w( v- }1 Q3 `
下面插入
$ `: S, s$ K, }* F4 e; o# i" hBOOL TextCmd_rebirth( CScanner& scanner )
+ i( e, y. N4 ?{- `6 v, ]* f1 ]6 T
#ifdef __WORLDSERVER
3 R9 h0 }! Q3 ~4 b/ p2 T9 F8 MCUser *pUser;% X' K( p2 \6 H* P4 R0 b7 g: [
pUser = (CUser*)scanner.dwValue;) P# d2 D P( ?2 a. d: B6 a2 z
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()), m0 b0 \- C0 X
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
3 ?* j1 W5 K7 @3 h! jelse& q! ]; C( J0 v, g, l# Q8 h7 \
pUser->AddText("你还未达到重生条件!");. \) U1 d/ [9 I! n* D) R
#endif
- l7 y# m" X2 x; k" lreturn TRUE;
: |; I; j* n" J* ` z2 V# n i}
, u+ g7 |3 e" M. n3 a6 a) \! ~+ S# J7 ?! s; h8 t0 D; E
4 G, H+ ^ S4 C: B2 \& v9 R7 B: C2 q' d$ S( `
1 Q }; H) A0 m( }8 v" G
|
|