|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
( P9 q. h7 a. N0 ?4 `- F+ w" H# F4 t
Mover.h
* @, U) g, Y# l5 V( p代码:' E' c6 p' x4 A v0 G
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
. d! b" o, @( d/ G7 n# V0 o' q; u) J* K
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
# q( }; @: N9 Z' Y4 @1 ]$ f: r5 c2 c& o; {% P% n6 O0 a% A, ~' A1 \
然后你去mover.cpp添加
9 L& @- |7 V8 o5 V5 p
! {: N* m- P' E- i) x4 I0 W2 ]代码:' K& J: ]) Y( e. v0 U \* P5 [
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
2 R$ X0 N. o0 A, a( w9 t4 }, X0 P{
2 ?* D5 l- ?4 Y2 c: G7 v1 V3 D#ifdef __WORLDSERVER
7 {# y1 Q* r. z' Q' s // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó3 ~ I/ Y4 z+ l6 V. A
MoverProp* pProp = GetProp();
: v+ |& j5 L% H. `! z, n- |3 y0 `, K if( pProp )6 q/ m7 S9 Q9 r5 ]/ t1 z; G
{) a6 J% b0 V. E
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
, F- d! W; E, h" L9 g! @5 V {
; X( ?; X6 F* M' F, y6 V AddChangeJob( nJob );
% l' ~3 m! {5 P" l; R: e }else{8 \8 v( {- L/ E
return;
, B# }/ Z6 @9 V# @. R5 [! A }$ G6 A$ \8 I; F) t1 `
int nPoint = 0;( p6 @. @1 | I; v l2 p; A
if( m_nJob == JOB_MERCENARY )
0 w- h; z& D+ C, {% Y+ W9 L nPoint += 40;
! p( |0 |/ T* Q. e& P& F8 W$ L else if( m_nJob == JOB_ACROBAT )
0 u& _- ^0 \& q$ Q. L5 u nPoint += 50;
( n% g2 K7 d2 v else if( m_nJob == JOB_ASSIST )
2 u3 h+ [) u V/ }8 l' r4 K nPoint += 60;) y# \ T$ y5 w+ t( ]- K1 r# h
else if( m_nJob == JOB_MAGICIAN )
' I$ n- C& {; ~, z/ J nPoint += 90;
' @8 \. C5 I$ \! q) B else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )3 ^" ~* F1 H, U5 X1 B
nPoint += 120;' k% u* S8 T2 {; n5 W- z
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
) |9 v# L/ I) D! j% t- v6 Y$ K4 A nPoint += 150;
) [( J/ Y( {) ~ else if( m_nJob == JOB_RINGMASTER ) l9 Y" L# K5 {% R r d. ?
nPoint += 160;
' Z ]/ i9 O7 G$ Q2 U else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
+ W( u6 I8 U( i$ l% o Q6 q/ t) M nPoint += 180;& D, O3 ]/ P8 S
else if( m_nJob == JOB_ELEMENTOR )( @7 E' W: `9 A2 Z
nPoint += 390;
8 S; ]; I7 L' R; {; Q! {* } else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )0 F* }* ~) |$ t* @3 N* {
nPoint += 120;
- E N" V0 x J( x3 K2 ?: M else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )- J9 q$ R* E+ D
nPoint += 150;
: r/ h6 L6 d1 [: @4 K' E else if( nJob == JOB_FLORIST_HERO )
! H) R: p( ^* E& e4 U4 v nPoint += 160;) ^$ n$ o0 A6 D' ^& _
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )* m# {1 c6 E, t7 `& n6 I
nPoint += 180;8 r* C, P1 W2 G. R! p9 `
else if( nJob == JOB_ELEMENTORLORD_HERO )
; D6 \ l; l) i% q! ~# [# x nPoint += 390;# F( ^/ L6 w- Z- l
/ x( h& s* Y! i+ i+ C3 T) N$ {
AddSkillPoint( nPoint );
1 @! W, m3 |& f& V# C: |5 O m_nLevel = nLevel;
' ]8 A; U7 C; m$ v. G; G1 Y" j& W, _6 _" S. F0 S: `; }
SetJobLevel( nLevel, nJob );
$ ?0 H7 Y( ~& n7 o m_nDeathLevel = nLevel;" s8 p1 T0 f5 c1 _% B6 |* }/ k0 {
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ g+ S3 K8 U" M# \& c7 D if(IsMaster())* F: t& z- ?' A1 H+ H
{; u3 W! p, I- b" A! D& O+ `5 Y9 l
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 \0 {6 A4 d( x( B
if( nLevel > 59 && nLevel < 72 )
" k! ? Y* |1 d" M dwTmpSkLevel = 1;
2 b8 }0 ^3 M4 K else if( nLevel > 71 && nLevel < 84 )8 C5 @( R; n1 S1 u l) S& ]/ k
dwTmpSkLevel = 2;
1 k0 n: r8 i' J! G0 I. H8 O else if( nLevel > 83 && nLevel < 96 ): }: q( w6 G! L2 S( U4 W2 y
dwTmpSkLevel = 3;
9 n6 c% t" z2 F( ]( U* G else if( nLevel > 95 && nLevel < 108 )
) i" c' C, v7 z- {7 W dwTmpSkLevel = 4;0 N7 o9 ` a5 Z3 X: j/ X# |
else if( nLevel > 107 && nLevel < 120 )2 D4 a; I( a$ s% n6 K l
dwTmpSkLevel = 5;
5 A, |3 Z" A8 c- J, N for( int i = 0; i < MAX_SKILL_JOB; i++ )
% y: T8 m7 u4 s$ o i# C {
" M2 m I9 e5 r3 P LPSKILL lpSkill = &(m_aJobSkill);
7 o- l/ G, a3 W- H, _: u7 x if( lpSkill && lpSkill->dwSkill != NULL_ID )- O2 G: b8 r+ x9 u
{: p/ r2 G% A$ g+ y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 o: C% I' ?- v+ U1 O) ]1 g& Q2 h if( pSkillProp == NULL )
" R1 H% Z7 @4 K- n ?" D* s continue;
2 Q6 a( I; N; b. Q# q, M if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ B' v! a+ T3 y. U continue;
8 z I% L: t, c! ^8 }# Q1 i lpSkill->dwLevel = dwTmpSkLevel;
( ]" `* B# \7 Z. f9 r }4 B9 a) q% Y6 q) \3 |
}
9 u3 e# n. }. D }
3 z7 m3 k) S$ `* o/ ? else if(IsHero())
/ s4 \: U" [7 K5 q6 v6 r, ~5 r {
! k3 F( P4 a, C% E( I4 m for( int i = 0; i < MAX_SKILL_JOB; i++ ) / {* A9 @# w& ~. R/ Q3 i% W r, o7 {
{
! W+ \$ o7 S8 Z: W LPSKILL lpSkill = &(m_aJobSkill);* B- f/ T n: W6 g- g" X, k- u
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 Z& s3 [3 o6 Q+ {" k {/ R8 a8 R# K, d2 A& L, f
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) D1 R3 g% b! q* x6 D
if( pSkillProp == NULL )- v2 [, k1 f$ i- m" L# B# h5 C I
continue;
7 k" j; h M& k; S3 Y/ _5 x if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! I+ o( B+ ~! Q% i/ G1 w4 D
continue;2 K+ q" E* P9 ^! |' p7 o$ [
lpSkill->dwLevel = 5;
g: }; {, @7 O3 S: d' C# o }( F, D% o- }+ a8 D" ?5 G# L, t% m
}* k2 C; n" |6 Y$ M/ [
}0 f; u( r9 Q( U" O" I+ N% F/ X" F
else if(IsLegendHero())
6 k8 u+ {* u+ m. Q- b9 A/ r$ x/ ` f {
- Y. g, x/ } P; U) m4 z7 ? for( int i = 0; i < MAX_SKILL_JOB; i++ )
& H" L2 r7 D) U3 h, H6 }; B9 s {
! i+ _+ |; h. K3 v! ?4 l0 r2 W LPSKILL lpSkill = &(m_aJobSkill);6 |4 b: E, _7 B% O4 U2 \4 s# u
if( lpSkill && lpSkill->dwSkill != NULL_ID )
' J; b7 M5 F7 V6 T. V {
9 M# M+ C/ }( \% g, l7 D! } ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ @* c8 Q& h$ o% S3 S) M if( pSkillProp == NULL )9 C% j! I) F; B9 j6 h& ^/ |& J
continue;
! M; n ] ^5 v8 l if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ |# g. I0 c( Q: c
continue;
1 N6 s* ] z" \3 y lpSkill->dwLevel = 5;& O6 G% o+ F/ y7 }
}
/ F; R. a3 D$ a0 G4 r4 C } \& j, o0 x, v+ k5 n
}. m* t7 X( e V* P. v0 \/ c
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 _. O) b, r" @6 o
if( bGamma )! g! f2 l% L2 L3 s- ^
{
; B# k( @/ G4 V2 l8 ~( f; B m_nExp1 = 0;
& H% t }; R# i: ~. y; _ }
. b+ F! V7 g$ Z; X5 W5 q
& h- R- m! R4 R5 r/ z: J ( (CUser*)this )->AddSetChangeJob( nJob );
: T' [/ D( }8 P) ^ r8 R g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );4 J# X [, z! ?% S5 w* p
* n. ]0 }/ M2 w: X K
% ~7 A$ T- W' u" P5 E3 w( e
#if __VER >= 11 // __SYS_PLAYER_DATA
$ ]' m0 K3 g; C+ y+ h; B e$ M2 P5 f g_dpDBClient.SendUpdatePlayerData( (CUser*)this );4 u! z& D4 m( H; V
#else // __SYS_PLAYER_DATA6 B0 t4 s9 C* j
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );" |! h$ N! M& Y8 F/ [. K; e
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );: Y$ B; v2 S+ w9 j
if( m_idGuild != 0 )
& e, Z! Y& v, X5 X- i) M g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );' ~, y5 L8 E5 E ~) b/ {' [1 ^' p9 y
#endif // __SYS_PLAYER_DATA, C1 ?/ U& w4 [
SetHitPoint( GetMaxHitPoint() );
( G+ }0 E, |* z. n& b; g3 z7 W0 I SetManaPoint( GetMaxManaPoint() );
! v/ R, A" W1 m& B2 K7 ?$ n2 ` SetFatiguePoint( GetMaxFatiguePoint() );
2 a/ p" j3 d2 Q6 d( r if( nJob >= 1 && nJob <= 4 )8 c- b7 h2 D4 `% h2 D
{
9 |$ ]* r# c4 A6 c( n7 } m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 z, o& v7 F7 s) I% `- B; e m_nRemainGP = 28;
4 d# y3 g0 G% x/ {3 I; E }
- Z4 v1 W$ B/ d% L- M8 w+ k if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
, C9 y5 G) m2 _$ v4 s {1 p+ T1 Z: E$ Z% a3 ^- d
m_nRemainGP = 118;
( B( d, ]+ d& i //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;% n2 W" \6 W; s
m_nStr = m_nSta = m_nDex = m_nInt = 15;, B1 c( `& l: f9 o0 Y
}
( Q }6 y" P) r' E if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )1 E9 r0 ~+ @8 C% O* O
{
- |! n, P3 E, y5 B7 X. ` CItemElem itemelem;
( r R3 r" }" R$ |8 {( [. q" ^ itemelem.m_nItemNum = 1;6 Z( d& d4 n/ R$ \- Y6 x* Q
itemelem.m_bCharged = TRUE;
! r# p1 d0 G5 w1 I$ @; T( T BYTE nID;( s$ ^; s9 o' l
0 W0 e [0 K( s7 L# e9 W
if( nJob == JOB_MENTALIST_HERO )+ J2 { B, i, W
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
/ K; s5 g8 s1 @9 O if( nJob == JOB_FORCEMASTER_HERO )
8 _( {! O0 d2 i! |# E itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;0 Y/ v0 M/ h4 z6 d- X6 h
e& @. H& \* f7 Y0 U# I1 `
( ( CUser*)this)->CreateItem( &itemelem, &nID );
) T* B0 X/ M* e: `. z }: A) k) c" j! o% e1 A/ j
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );, f$ M# c, P5 m
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );6 W* y( z0 E0 Z- z3 }. A4 q8 g
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
$ X' y9 ^ P! i6 }1 c; g7 B' p& ? /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 f/ R/ r% l2 c
( (CUser*)this )->AddTaskBar();*/
" l, q1 i* e( E/ j. S) e ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
$ ?8 ]3 U* \# o, T# o6 N#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?1 O2 z- T6 O/ b6 Z/ n R
((CUser*)this)->CheckHonorStat();
7 F' i9 g% L- O) t! F- @2 |5 g ((CUser*)this)->AddHonorListAck();" |: S( G6 D4 z' s! T$ h+ I4 O
g_UserMng.AddHonorTitleChange( this, m_nHonor);, ]5 O, E' z7 i, r# L
#endif // __HONORABLE_TITLE // ′Tà?
3 ~& `# t+ _: X% [/ r }: w& O0 s& N& ~) z5 q
#endif // __WORLDSERVER0 U6 I" {. a% V2 W$ U1 [
}
7 Q/ O4 w: @8 E' W7 e5 d3 s! ]9 }
5 h/ J- _- c) X5 T. c, A* T3 B3 N然后你进入functextcmd.cpp并添加以下- J1 B/ y; _/ G/ e) @- s
( I0 ]- t: X6 s9 z
代码:
1 C. ~" j. }) u2 ?+ qON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 P# o) x2 E$ w. r
下面插入5 d% l8 B: P& |# x" P
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) - v* ]! \; }! I1 ^! ~
/ e f9 |" ^6 g! K1 |
然后你去9 c# @9 c1 g& E/ u' k1 o" t
1 c8 A) T% p5 Z+ c9 [6 i
代码:) ?4 q/ ?2 O% V* u
代码* p) \& J0 g2 {# M! k, U4 f* F. w
BOOL TextCmd_ClearPropose( CScanner & s )! @9 r& d- \2 S! l# Q6 d$ ~* F
{
+ U- U/ s9 ` G A( \" o4 V#ifdef __WORLDSERVER- ]7 q# O& E$ Y. ~, B
CUser* pUser = (CUser*)s.dwValue;, U9 Z7 }" l1 X' L2 q
g_dpDBClient.SendClearPropose();5 b( v2 U* Q- H/ W6 \0 |
#endif // __WORLDSERVER7 g: E6 f5 t% e! v! y w. J4 @
return TRUE;
1 K8 e! y- P t6 C) p( t}$ @2 e( D6 o* t: w
下面插入
# W) E# X$ T+ m4 ?" x% xBOOL TextCmd_rebirth( CScanner& scanner )# @, O6 U& z2 r9 W
{
* U, k/ W, o0 X, k( _+ Y7 ^#ifdef __WORLDSERVER
# v5 X: f P. u8 o6 C: K$ K5 R# lCUser *pUser;
) q7 N& \' R) V" f# NpUser = (CUser*)scanner.dwValue;. R1 E9 S5 i6 A8 ?
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())2 ^+ B7 ]$ c6 p# p# |% R# E7 B# \# J
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
?" b2 p' @2 g: `- `else; \/ h4 W# E5 j& U4 b) e
pUser->AddText("你还未达到重生条件!");
. a2 _; }' _/ k& B& u ~7 e( X2 W2 f#endif/ F* r. c3 q0 W0 l+ Z q
return TRUE;
. E+ G1 {% M. K6 G$ @}
- V0 J* N5 A, O' P- S/ B% \% X
' @7 ^, D U; k) e/ o( l' p% Q l9 i" G" T; M( A0 P- Q
( K0 V( ?; B8 |1 W D: ?
' a" w0 V& Y! @# M9 n+ y |
|