|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel; L+ \( n# Z, {2 z
+ q3 Z' E& G8 S9 y, AMover.h: t0 e$ s7 c4 n+ x' e$ d/ z9 j
代码: [* z' d1 m$ G, a. C
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü$ e j7 B. S* ^* @, p; \
8 K$ l7 ^6 b& _) L
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ( G$ ^" G" B+ F- O& m1 v
9 B0 L) S6 q. K- Q; J% O/ a然后你去mover.cpp添加( A* K1 B3 ^: }/ |% R; W
' T5 ^4 j5 L4 Y: C代码:
& `6 d! h, S# a1 ~* k% j2 ?' dvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )+ e7 F3 r9 H' ?0 d5 r; l. |
{# V4 J U8 }7 u" A9 X* U2 l9 E
#ifdef __WORLDSERVER
% X/ Q. U/ a+ L1 d2 f! T9 g // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó7 e) s* E. @5 {" ~; @0 M+ |( K: V/ Q! D
MoverProp* pProp = GetProp();
6 m$ p1 N& _9 [" j* g if( pProp )4 E8 w# Y d" Y! E* L+ f% ^
{# h$ B& y5 q& \9 \% y. P H% V1 e8 w
if( nJob > 0 && nJob < MAX_LEGEND_HERO )9 l3 ~7 F9 f+ w; H2 U4 k; t7 @
{3 z8 {# m1 U7 Y" i. y1 R
AddChangeJob( nJob );
2 U8 ~& ^) ?5 b( \ }else{7 _. R" a' M7 P3 v B
return;* `) A# J4 @. y# w
}
4 ]& P9 s" e& a8 J* a6 ?& V- w' b3 N- l int nPoint = 0;
$ K, |* d+ x$ E( ` if( m_nJob == JOB_MERCENARY )0 `4 p: ?% v. h: E( i! \* G" {
nPoint += 40;
( F* `3 M' d% i, y1 R else if( m_nJob == JOB_ACROBAT )( I& L- ^5 y$ x9 ?6 }
nPoint += 50;8 i a! T; J6 D. U
else if( m_nJob == JOB_ASSIST ) x0 ?+ l3 F5 }: y- V
nPoint += 60;
9 U( G% ?' K. e( V% x" Q else if( m_nJob == JOB_MAGICIAN )* I0 b8 X6 O6 @" s
nPoint += 90;8 ~+ c0 E6 ] N' H
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )7 z2 c2 G' C& {# B( d0 j
nPoint += 120;
( `2 T4 a( ` [; _ b else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )7 r \( I# _* r* ^5 }, O4 J
nPoint += 150;+ i! R' ~9 P3 Z& W6 h
else if( m_nJob == JOB_RINGMASTER )' j: d+ |- h+ S, k& P: y
nPoint += 160;9 H* Z, v! m. L. o: w) L7 z
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
6 \( c% u& a) @* @6 l nPoint += 180;( W! N1 x) H2 |, N
else if( m_nJob == JOB_ELEMENTOR )
0 R+ T W# b( b" c+ n nPoint += 390;
, v7 V. q0 G$ A1 }* m6 x# K else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) c& M$ F2 u; I; C3 V
nPoint += 120;' C$ E2 S2 D/ w! Q# g# Q
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
5 G9 `. m# S5 w6 A# p nPoint += 150;
8 S( Y8 x+ ?0 R8 f. J$ S else if( nJob == JOB_FLORIST_HERO )
, L/ L$ @2 l7 S4 t+ C0 f# y nPoint += 160;
$ n; F* z; f! G! k' { else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )# m% l( }: k! Z
nPoint += 180;" I. M4 j+ G* ^% @
else if( nJob == JOB_ELEMENTORLORD_HERO ); p5 p% S# Y( F# Q# U( ^ B
nPoint += 390;
6 w9 `6 r4 S- d% f9 [/ \9 Q* s( { w5 v& a% W: [, L
AddSkillPoint( nPoint );3 s: n$ z9 ?( J) y8 `) A$ s
m_nLevel = nLevel;
7 i4 z1 g% B$ C# I9 d a6 e# _ q0 O7 p* g$ N
SetJobLevel( nLevel, nJob );1 S2 o6 n+ U8 q1 i4 o6 N
m_nDeathLevel = nLevel;( q) O' i, }) R4 v7 t* D9 }/ _
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans8 X4 V( i+ V P" i$ u: k
if(IsMaster())
* D# X- {& d0 R$ K/ j" X* ] {
& Y: ^3 k: t$ s5 _$ A int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
) D, y8 L i& ` if( nLevel > 59 && nLevel < 72 ); A0 f' E4 C" u
dwTmpSkLevel = 1;3 |" m$ G- z2 c% p+ r& B! K
else if( nLevel > 71 && nLevel < 84 )
/ [% _/ ?& S0 E& z7 L4 ~ dwTmpSkLevel = 2;5 Y* X# |2 e) p1 k: ^. F- t5 I
else if( nLevel > 83 && nLevel < 96 )
+ U5 z' a8 s; }6 E5 z0 V dwTmpSkLevel = 3;
) K0 X6 E: N' p5 ^9 o else if( nLevel > 95 && nLevel < 108 )
. r9 K( c% b3 i, D0 X- @# N% l dwTmpSkLevel = 4;
/ N- H- P& |0 y; V, T7 g else if( nLevel > 107 && nLevel < 120 )+ O* H; X5 Z+ e' k- g1 P; B- u
dwTmpSkLevel = 5;
+ Z% t F! K1 h( a1 J4 I& B for( int i = 0; i < MAX_SKILL_JOB; i++ )
) q z7 f: ~4 }, R9 E {
! c; Y: V b, U- q, I LPSKILL lpSkill = &(m_aJobSkill);* n+ j3 A6 R$ |" z. ]( L' p
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ W2 V0 S+ w' [ {1 [; ^7 Z3 v5 n+ y# y! ]
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 3 I1 n9 z& k* ?: ~* X. z5 _/ s
if( pSkillProp == NULL )& W) ]. l' }% a- Q
continue;
3 ]: p, H1 Z8 D6 e if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ k" @0 p0 k5 Z0 N7 h8 r0 g
continue;" V( a, M0 d& z; H- I
lpSkill->dwLevel = dwTmpSkLevel;
# d, U6 B. S, t# B1 } L9 T }
( r" l# }5 v$ ]: P. a3 u }
" h3 }4 j& G* v7 {3 G+ x }
% D. s# E9 c% @! o5 b1 V) A6 U2 u else if(IsHero())
3 F0 t8 ?& t9 B _" V/ F; I {
. R4 x1 c4 ~& p9 H1 J for( int i = 0; i < MAX_SKILL_JOB; i++ ) % A- Z2 W' b4 }
{
$ [( X) Q: O, u) h LPSKILL lpSkill = &(m_aJobSkill);& b5 ?7 j5 P. j$ s6 Y0 F; A
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 U; m8 V8 E- f8 e {
4 Q4 o* \% c$ n$ x% U ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) p8 C6 W' Z0 M( i P; R2 O3 R
if( pSkillProp == NULL ): k( S$ T/ A: C2 D3 A& j
continue;/ \( _2 z) e3 w+ s0 L
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 b2 [. b W+ Q1 A$ a( Y5 z/ p continue;
( n- N$ d5 f, a6 i3 a! x lpSkill->dwLevel = 5;
+ b, [- t/ @4 v, X }
5 ]+ T5 ?- z9 l" G% N- J5 j }
/ j% W) }+ L2 A3 v: Z }+ @ n5 G! m( w4 s' V- ^
else if(IsLegendHero()); l: Q, z2 F0 e
{
+ u) @( ]5 Y3 `% O' V. g9 g# y for( int i = 0; i < MAX_SKILL_JOB; i++ ) `! b: O5 t9 f; b' F2 y, g
{ . G3 D$ I4 P, g
LPSKILL lpSkill = &(m_aJobSkill);
1 g' f% d+ S; X; N' ~; H if( lpSkill && lpSkill->dwSkill != NULL_ID )
S6 m3 x: ]2 p& A {% h+ T* W8 i- _' a5 b- I; J# `
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! r6 E* Y$ D3 E9 \9 d if( pSkillProp == NULL )7 K1 W( m/ X* Y& r/ f. }3 C( ~
continue;
: c6 z4 A5 h4 h1 t# B if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 I# x" M/ d: |% L% ^
continue;
. k6 `; d! K5 A* ^" e4 Z6 v lpSkill->dwLevel = 5;/ M4 V1 R4 c4 Q; s
}( z9 H' r, y- t# {
}$ n0 F n' |, `$ l8 o4 J6 }
}' R+ N# H& s ?; x i( ~3 G# J0 H$ [; n
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" N, n" F0 C0 C. j* d1 v
if( bGamma )
u5 B- T' h; P {
% f$ G8 ^$ d! `1 P; x1 J m_nExp1 = 0;2 a# i$ V+ G# S6 H l
}
# z+ ?, b1 i" w9 N
) D+ | Y/ H' Y X( K% G2 Q K ( (CUser*)this )->AddSetChangeJob( nJob );; u" B" h, D' A( k& h1 ~6 _
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
, i( i/ }! |* ?/ A7 J0 Q" ]) R2 X/ z
1 t3 c' H: H; F2 X2 i#if __VER >= 11 // __SYS_PLAYER_DATA
( y# v2 O: ~+ ^ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );2 ~9 s! g I) \" u) t
#else // __SYS_PLAYER_DATA# N1 d. G6 E u, R$ h
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
8 D) ^+ H, ?: O- B l g_DPCoreClient.SendFriendChangeJob( (CUser*)this );9 [& a4 A2 D9 w3 N U' }
if( m_idGuild != 0 ), L p$ ~# t- Q4 c, _6 `
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
/ S$ f1 ]1 @! q#endif // __SYS_PLAYER_DATA
. V: |: s7 ?1 J' y SetHitPoint( GetMaxHitPoint() );7 y- H: P' i7 w+ M& _
SetManaPoint( GetMaxManaPoint() );1 [$ p, m6 [: ~
SetFatiguePoint( GetMaxFatiguePoint() );
n6 J7 Z8 i& p% v j! k4 Q) A if( nJob >= 1 && nJob <= 4 ). B2 L$ G* C! R6 X1 [' p2 D
{0 r4 \) L. X7 [ e
m_nStr = m_nSta = m_nDex = m_nInt = 15;
( X& D6 ? u; X! m$ L m_nRemainGP = 28;
. l8 B4 O H% p. c7 s# Q! F7 H } z" K ?* j, V( H2 M
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )8 }+ A' }' _# l
{9 j) @4 Q% I9 S b" V" Q' U
m_nRemainGP = 118;
; }! u1 y9 h5 q# x( J //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
, U5 {; a2 U* s% R8 e8 B m_nStr = m_nSta = m_nDex = m_nInt = 15;
9 F4 B t Z' x }
2 k% N$ _2 `% o ?! S! Q2 m7 r if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
+ X1 I( l# ]& z0 h8 O% e' t$ D {& `# x. M! ^5 z0 s' [ G
CItemElem itemelem;
' w- g! p8 h: h itemelem.m_nItemNum = 1;& a+ ~; f3 Q' q9 |, h8 A* p9 Q5 N1 f
itemelem.m_bCharged = TRUE;7 g" H4 D1 I i* O" Q
BYTE nID;
/ _) v/ v8 k) u7 U% o+ k# B, [. {( B
if( nJob == JOB_MENTALIST_HERO )$ b- t# j6 F7 L" A# y- ^
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
, `( u1 S8 J1 ?+ F% ~ if( nJob == JOB_FORCEMASTER_HERO )3 ~5 _6 E0 o) X1 r' w( F2 R# X
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; m: \6 c3 L) u( m+ _: s
* ?) X+ ?: w) Y& M5 v
( ( CUser*)this)->CreateItem( &itemelem, &nID );
: x. ~+ {( d' Q) x% K2 Q }6 \0 U7 ~2 X; b& n
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
3 |" M6 N/ g3 Z2 @ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
. ]# W! h# Y& |+ v$ C9 V ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );) Y- w( m X/ w9 s
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 {3 A! i+ m" \! Y1 c$ ]
( (CUser*)this )->AddTaskBar();*/
% Z# s R, J& o8 R. o& Q% H4 f! E ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );. I/ F% J. R/ B% E
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?0 P2 ~: D7 v" D" D( J
((CUser*)this)->CheckHonorStat();
# G1 ~: ? @7 |. a0 M U; c. u ((CUser*)this)->AddHonorListAck();2 [ h) L' ~4 G& ?, f! s
g_UserMng.AddHonorTitleChange( this, m_nHonor);
; K( A% U. i! B" e& J#endif // __HONORABLE_TITLE // ′Tà?
, L( q6 f; R" y D6 q( } }
/ l. _: ^7 J% y6 f. d$ G#endif // __WORLDSERVER$ ^ A5 P9 n2 W' o
} 7 z) D& E# R3 Y4 u" `
* U+ N/ t! s* b+ P ^4 ^然后你进入functextcmd.cpp并添加以下# d: S2 _! y. h( g
2 v7 r9 \5 p4 J0 H
代码:
. I3 W! z8 y% |7 J* l- i/ g6 hON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
4 y! R. e. `# m1 m' \$ @4 {& t5 f下面插入2 ~0 l4 V& n0 E( ~
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
5 f5 f& s) c% P9 |
4 e2 r& O8 Z* ~: F# I1 ^( a2 [# @然后你去! J! H) }$ V2 w2 S. l; T
H3 H( J# ]* {4 o% y6 P P
代码:
1 d) I: M9 ~* o3 Q/ A3 o代码
5 G- F. q2 V6 W B* s8 x, lBOOL TextCmd_ClearPropose( CScanner & s )
& \) Z3 m+ D1 h7 ] K2 G- |/ q{( s, n9 { p( x# t" P. m
#ifdef __WORLDSERVER
( l* C4 q3 q5 r CUser* pUser = (CUser*)s.dwValue; T$ b- T9 h: Y5 P- A+ y9 A+ F
g_dpDBClient.SendClearPropose();- F! t) o2 R2 v
#endif // __WORLDSERVER
0 ?5 I; e T) Y7 l/ |, R return TRUE;0 k( N4 o& f# [/ w
}
' a+ n- I# S8 r9 |$ Z下面插入1 `( a# G) l! Q! E
BOOL TextCmd_rebirth( CScanner& scanner )2 B5 j7 B3 L: b5 ~8 W) A$ v3 i
{9 r9 e! ^& w* v1 D# k
#ifdef __WORLDSERVER3 \/ d$ `( p$ g" y. X
CUser *pUser;
" V& o! D+ t& O6 C9 _pUser = (CUser*)scanner.dwValue;7 G: D/ V1 H2 L4 B- k4 M' q; Q
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
8 d- W" U, `; E/ S1 h8 RpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);' \2 V" u) B! [- ~) U
else! o+ T5 I9 B. Q4 v$ \, k
pUser->AddText("你还未达到重生条件!");
I5 M( J" x O* _! x5 F1 v6 X#endif
8 z# A* w% _, G3 _return TRUE;+ m2 i) w+ Y6 i& j8 C
} ( E% U0 l( _5 W
1 D4 |, O0 a: ]* Q
$ [! T0 @0 i" Z: k& Z
) k. j8 Q9 w* t; h" e* b0 [1 t
, p0 Q7 }" O$ `& ]5 L
|
|