|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel- D- \7 G& O" r
" d0 c$ i- x! }2 F) q
Mover.h
3 \1 R* V! z; v% Y% F代码:9 [8 w" l8 m( X$ Y# w
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
1 B6 [2 g7 w5 C( M K* I1 {
; ~; f" P+ {% h, u下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
8 f2 F5 X1 U. Y/ K9 u4 W4 i
- ]; O6 h6 r5 K0 k% G; T然后你去mover.cpp添加
- f$ v8 R! O1 ~1 k/ p2 p. J1 Q# H7 Z6 t) i7 _( I
代码:/ ]" C6 y8 N7 A# {* e6 P8 ~4 m
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )7 \# _$ ?6 k+ O0 H. x Y: x* ]
{
4 \4 m: a. ~9 F$ c/ t#ifdef __WORLDSERVER
% H. q* _! {- X // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó7 W) A$ {) e, H* t+ y
MoverProp* pProp = GetProp();
1 `* _0 B1 k! ? if( pProp )
+ D( @: l2 `( W {; X$ d$ e% K( q/ x4 _
if( nJob > 0 && nJob < MAX_LEGEND_HERO ). k |3 h4 k% ]/ _" n/ \: k& @& T
{
8 E3 y& S: ? i, L7 H AddChangeJob( nJob );
4 R* V3 ? ~8 _8 G }else{
1 O# j6 a- }( b4 M return;
1 b; x4 A4 C1 K. h/ V* B- a2 }" |- w }
" l9 J0 P- I" J5 }0 _ int nPoint = 0;
, A1 b. @* ]) k6 h3 P0 }* F if( m_nJob == JOB_MERCENARY )' v& U P) y* k+ _" U$ O/ \
nPoint += 40;/ N8 c! P2 Q' _" Z f
else if( m_nJob == JOB_ACROBAT )
6 t$ A# e ^' @% x nPoint += 50;
$ ?: C# D& L) e& [ E. \ else if( m_nJob == JOB_ASSIST )( r! j; v4 L0 x
nPoint += 60;1 \; m" w* V7 K" \
else if( m_nJob == JOB_MAGICIAN )2 B6 t [& }3 a* j* X+ x
nPoint += 90;
V! I- O& t* @# T% O. @! G4 @6 U else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )+ u& {# l* M. D! j* J( h
nPoint += 120;! d8 b7 R* ?, c, Y+ M
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ) t5 ?: D) K, ]
nPoint += 150;; |% j% B) l+ K, N
else if( m_nJob == JOB_RINGMASTER )
2 C5 R8 G' A6 i0 {& [ nPoint += 160;
7 S" Z) m, L! R V else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
q0 u2 p& W4 G; r0 b8 b$ X0 k nPoint += 180;
5 M7 o1 F* L" [& _0 x1 S) Y else if( m_nJob == JOB_ELEMENTOR )
H0 C1 O2 s! K1 T nPoint += 390;
8 x% K5 T# g. V1 t+ T1 p else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
, B3 m' P2 {# k; L/ m0 `) v nPoint += 120;! U8 S! Z" r: c5 `0 H
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )* Q9 D$ P# H z" b$ e; ?" |
nPoint += 150;
5 g+ v9 j0 x- H0 P% h else if( nJob == JOB_FLORIST_HERO )" T0 _7 X7 j# v! l8 N! Z) O" I; W
nPoint += 160;9 ]; v" J) |; H* S# n2 s5 f' E
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )4 u2 B/ U, Z# X8 V6 X9 u% p
nPoint += 180;: B8 Z$ z2 ^; r: R$ C: l2 k
else if( nJob == JOB_ELEMENTORLORD_HERO )
1 z! [* l& p, o' `3 U" n nPoint += 390;
* ? E, {) n2 l9 m! i( o9 U2 @! z( \# {
AddSkillPoint( nPoint );
& b1 @& s' b8 u m_nLevel = nLevel;* x/ H6 Q( M% z" N* P) q
$ C V. l' v& `1 c: m5 b! G
SetJobLevel( nLevel, nJob );- Q1 S! R- P2 I! }/ ~" U: k; G9 ~
m_nDeathLevel = nLevel;
. P* h# U& ?* D, J1 a#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
' p4 m3 w N. x, E if(IsMaster())' T+ A( ]: z2 _0 X
{; d4 i% ?5 S0 P8 y; s* R6 L3 i
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
1 W5 j) c3 T* g, m& K( `8 x; F if( nLevel > 59 && nLevel < 72 )
- X5 L; J9 v! X& y+ _ dwTmpSkLevel = 1;! x( B; ]" u9 O/ w- C
else if( nLevel > 71 && nLevel < 84 )6 J ~) D* ^7 O2 E8 s: |8 V2 i
dwTmpSkLevel = 2;
- X7 e! K: Y: y) I0 X else if( nLevel > 83 && nLevel < 96 ), y9 @. B- v: v) W7 s% q
dwTmpSkLevel = 3;. n, Y. q0 X0 \
else if( nLevel > 95 && nLevel < 108 )
/ v( ]; i: x7 r dwTmpSkLevel = 4;* i! I; I3 d4 H. _
else if( nLevel > 107 && nLevel < 120 )' X$ i/ m" f( L) ]; m
dwTmpSkLevel = 5;9 Y7 n) d/ d; I
for( int i = 0; i < MAX_SKILL_JOB; i++ )
- H4 h" P, s1 d2 y { , e% e1 ^1 n8 s% s9 G0 i
LPSKILL lpSkill = &(m_aJobSkill);
' x7 j# @0 U2 ~. d' z( k! q2 n if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 y2 j a) R& `4 {! f {
8 d$ N8 `3 }; {% i" [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 @; R8 j$ d5 ^2 w& f# i1 G if( pSkillProp == NULL )
+ ^0 u0 ~4 K" Z continue;
/ {6 U! Q# L' s/ u- P, R" N" O if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- J1 K5 B; E& J, ^! u4 P
continue;
0 P8 ?* y3 P3 d: b$ g& @' C lpSkill->dwLevel = dwTmpSkLevel;
1 O$ ?- }, j9 J8 ^ }/ _* A. j4 }+ {
}# R$ ]& Z% p3 ?5 J, s2 \% l* d @
}# l* |. K& j4 I) R, r% W
else if(IsHero())
) E5 h- V! \3 a% B; C- S {
% a6 W3 N7 n# ~2 B W* Y) f; r: e for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 C& [ G+ m2 t7 k {
) x1 J4 C% L+ [* [& |3 V LPSKILL lpSkill = &(m_aJobSkill);
" ^ Q$ c) E8 `7 x) @ if( lpSkill && lpSkill->dwSkill != NULL_ID )5 I' t8 H& I/ B' I7 q7 J
{# g4 o) @ e+ }/ r! u$ y) c$ ~" g& {
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% U3 ]5 h, O! q z if( pSkillProp == NULL )
+ u y% X* a D3 b f! v4 h continue;
1 c5 a$ e, v- M, m( ~4 g if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 S: G |1 v0 B# T v& F
continue;
5 \* Y7 G! z0 q0 ^7 {& R" ?- M* \ lpSkill->dwLevel = 5;
5 w$ L8 N% _7 x7 f i0 F }/ q8 ~6 o9 \$ N1 u+ `* d
}: ~& v1 C# ^; L
}6 O6 A% F: |* B* `
else if(IsLegendHero())5 a( S4 M/ u0 t' Y* ]3 e& \3 N7 p
{
2 ^& P$ `2 l' y$ ?9 ^: F for( int i = 0; i < MAX_SKILL_JOB; i++ ) o! |/ P) n/ l3 p& h" p
{ : Q& r& N6 F. ]. K* d/ \
LPSKILL lpSkill = &(m_aJobSkill);
/ a6 ]2 u4 W6 T; ~* a if( lpSkill && lpSkill->dwSkill != NULL_ID ), O" i0 ]0 K8 j" u" y( U# u
{
# Q' g* r% z/ \7 W( N2 p ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- M" _/ I0 H% \5 ? if( pSkillProp == NULL )
' l0 U1 e# M$ A continue;" ~# ~2 X% F7 W6 J
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 q0 }" u/ b6 s# {( R continue;0 q3 | D8 i$ X. n7 n. C; j1 [6 F
lpSkill->dwLevel = 5;
* J& m m$ ^5 y( j }9 C' R" @1 o! ~; T; J1 A
}5 G8 G, e6 `% g5 b# H6 h
}0 T* s B' v$ G' V5 e
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 |: M _6 r. s8 [
if( bGamma )
1 T3 v+ t) R& F! h6 f {
2 N& y" K6 ~& p- V3 L1 J O( g( z m_nExp1 = 0;$ t. L5 B. p( v* V" W6 J8 G
}- c7 u9 G. V7 c- J, x: y$ u
5 U+ D8 M1 s# _0 W+ a/ R: D ( (CUser*)this )->AddSetChangeJob( nJob );1 S' L1 z- g4 h& S8 g
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
. n: ~; H2 }. h4 d! Z5 k4 l# ?" W
$ `2 u' [5 r9 k1 o
% F$ }5 q" D+ w# f, L: b#if __VER >= 11 // __SYS_PLAYER_DATA- U7 G6 {, k I" ?
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
0 x+ q! O, u' `5 A. G#else // __SYS_PLAYER_DATA$ a8 x& i: x7 B8 g9 c
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );% b+ ]- {- `1 ?( J. s
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
3 ], \5 _/ _" @& H/ Z6 M if( m_idGuild != 0 )
/ \& Y. ]. G9 U' y4 x g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
" j, ~$ ?: M! l- v2 w* R; s z5 H#endif // __SYS_PLAYER_DATA j9 S- ^% ?( C- L1 I5 V A
SetHitPoint( GetMaxHitPoint() );" u& M% E. u- H8 J' I c; [
SetManaPoint( GetMaxManaPoint() );: X0 H1 {6 Y. P- k$ r
SetFatiguePoint( GetMaxFatiguePoint() );% ~0 }, u, c0 l5 u, C/ r4 G6 m
if( nJob >= 1 && nJob <= 4 )
! g. x5 J% c' h1 a5 B3 Q) \ {
' o/ E; P4 Y [+ N: g8 b5 U3 t" E' j m_nStr = m_nSta = m_nDex = m_nInt = 15;
\) h3 Z& t8 M" E G m_nRemainGP = 28;* Q8 s4 ]9 d4 y2 [* _! x* d
}0 U" c d+ \ `- I1 ~2 G
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
: j5 f$ \1 X. ]" r {
4 x B( H9 `: p, q m_nRemainGP = 118;
+ Y' F: A( J+ V8 G5 G2 F; j/ s //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
- l! y: A& V% |3 g# s, `: o( Q m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 g2 }% k/ v7 [' W( H0 j) H }
" n5 }+ X" \, B) \* s; a u K/ i if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )0 A" E* Z* C+ g4 _) X
{1 l8 N1 @5 h. {! `
CItemElem itemelem;, d: Z/ W& i2 ~0 D
itemelem.m_nItemNum = 1;: j1 T/ J. ]& a5 m7 g
itemelem.m_bCharged = TRUE;
# N' C0 A- \6 I3 S D7 M( B Y BYTE nID;
9 G7 G( |$ K1 v: n& d8 s( y! c1 q0 x- B
if( nJob == JOB_MENTALIST_HERO )$ p$ l# e5 N% w, b/ ~: _- z4 M
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;* U# m5 Y, `* l8 k" j* Z+ I
if( nJob == JOB_FORCEMASTER_HERO )
1 C0 z0 O5 \: f t( a itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
7 A: A9 H) ?& S2 j
; Z4 C; V g: Z' Z* W7 j6 u( ` ( ( CUser*)this)->CreateItem( &itemelem, &nID );/ U- p4 [; x# W% K
}
! O: b; ?& N' [6 |* x9 V g_UserMng.AddSetLevel( this, (WORD)m_nLevel );3 h6 W: F* T5 |% G
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
" @9 b2 [$ k. z' A: S' { ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
* g+ M; D, s, |) z2 I /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
$ y0 c- `1 L/ _ ( (CUser*)this )->AddTaskBar();*// F. i9 R- b) M8 O v
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
2 p4 x* ], P! p' O; N) M#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?) ^4 \5 U. j7 X( L0 @( l7 [
((CUser*)this)->CheckHonorStat();/ p( ]4 S) l2 L7 K+ b' V1 T
((CUser*)this)->AddHonorListAck();/ ~ w0 _5 W, x& R* \( {9 Q
g_UserMng.AddHonorTitleChange( this, m_nHonor);1 @0 X1 S$ p0 [5 o
#endif // __HONORABLE_TITLE // ′Tà?
) _( ^3 V0 B3 W8 X( Y }
! ~% ]" ^/ J' q#endif // __WORLDSERVER; S( q! H4 Q1 h% w0 b
} 3 E5 T" C: j; A8 l# t
: C. x6 G5 E8 d- U然后你进入functextcmd.cpp并添加以下+ @- [8 h: Y5 P% M$ s( Z# ^
1 H/ G7 k4 U1 _ w代码:" B M. ^$ a" |0 [
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
+ I$ I1 ?8 [1 b, |$ C D% d) \; v下面插入: }0 j- Q3 h5 s6 f1 ^% R
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
! R8 a, l# y3 T) g2 r( s5 o p; t! l
- N1 @* F3 r1 |- `; k" K然后你去9 W4 {; F2 k0 E
, [) s$ \6 J' ~) Q4 N( W0 w3 n代码:
, U( J6 l1 L4 {5 c- c) h8 i代码9 P0 o( _7 l' \9 T: ^7 ?! @0 M
BOOL TextCmd_ClearPropose( CScanner & s )/ H+ r0 e1 n& y! G& k; T
{$ f2 t' Q+ T; C6 d7 k; a, d
#ifdef __WORLDSERVER$ u; U+ C, ~: I3 Z+ M% e, Q
CUser* pUser = (CUser*)s.dwValue;6 U! a; N6 E4 y: S7 ?; G0 a" T0 R
g_dpDBClient.SendClearPropose();4 a4 C+ T6 S/ ^# P+ }2 D
#endif // __WORLDSERVER
& C ^4 N: l" p2 z return TRUE;
; U7 }+ F5 i! M* W' P6 m} Y; q9 F* H; j; E7 z
下面插入
9 m1 @ ~! c( L# y/ F. M p4 p- RBOOL TextCmd_rebirth( CScanner& scanner )* v2 ]$ F5 L# b
{
2 [2 U$ R- M* h0 z, ^#ifdef __WORLDSERVER
$ e! h/ o; \# ~( Z. WCUser *pUser;) h5 H: l. B. Z. ]. c
pUser = (CUser*)scanner.dwValue;
% H% x2 w6 x5 W$ S& U$ f& Z/ o0 Oif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( j }3 g" H$ b- a5 ipUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
3 j" u- I) K+ z5 g3 _. `else
. _" Y7 a2 d& g+ ?! a; T' U: XpUser->AddText("你还未达到重生条件!");' _" S: J2 F B% I4 m7 q: l
#endif: r$ @ Z0 g4 t# j u
return TRUE;
- U+ [0 ?9 H3 l8 ^} 2 R/ f0 h. B- R$ R" x, b
o" [) n1 Y) g+ d2 ~
' b; h- r! _1 d+ D
. U4 @) e' H% p9 M- S1 j1 P, D3 P7 q6 z [: o; |
|
|