|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel( P+ K) W. j; u) F7 D3 i6 x
" h4 u# f& u* K$ I& t
Mover.h$ J" i5 t& D+ W8 v4 J# C2 Y
代码:
5 b3 v8 B0 p( F$ u9 u! \找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü$ M; p' Y; a- M) v& M
8 J/ m2 E/ L W" E4 J7 v8 w0 B$ M& s5 a
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
3 z- P- W3 Z$ m+ P6 j- V P! w
|/ e& l' l- U: R然后你去mover.cpp添加3 W4 `4 K6 r3 M j. V" d3 B
: q/ J6 O4 Y# x i% {
代码:, d! u* J) {0 O2 s6 z
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )3 M5 v/ a! ]1 t
{
' I) i: b7 T7 i( b5 y& J) f: V#ifdef __WORLDSERVER
% q7 e2 {3 b; m3 f$ ?) k9 q // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó: f/ H5 g* G" U; i" D w: u
MoverProp* pProp = GetProp();$ p- _' z% P2 h4 Y t
if( pProp )) o, k: K9 y s; z# V; j- X$ }
{
5 o5 d: a# d2 q if( nJob > 0 && nJob < MAX_LEGEND_HERO )! s$ @- p1 [, ^* T3 \% V: O
{
+ G. Z3 O4 O {$ i' v+ g4 s AddChangeJob( nJob );9 S5 U/ @0 O W
}else{2 r1 ]: m+ Q# ^* v
return;
( b, }- y; q9 c( X7 I7 N9 s }
, ]. B9 d' [7 Q$ `' Q: s0 ?6 U* ? int nPoint = 0;
' e/ o2 r. E4 y7 z7 u0 u if( m_nJob == JOB_MERCENARY )% Y. \# n' u4 W: Q
nPoint += 40;
1 u6 B0 g3 c; I2 |) Y else if( m_nJob == JOB_ACROBAT ); M( H H0 E0 J/ v# h) H* [& P
nPoint += 50;6 s* S' P4 x. D! h! I4 V9 t
else if( m_nJob == JOB_ASSIST )
" B3 i! w; j, l0 Z nPoint += 60;
. E7 S, i7 v2 c- d" M, G, | else if( m_nJob == JOB_MAGICIAN )
1 b8 d9 W$ P' l nPoint += 90;1 b: U3 u. Q5 ] {7 l* u
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
8 a5 m2 D7 [- M nPoint += 120;
9 Y# f' g) R$ O2 t$ q+ }! x( { else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )% y1 j) x. J" L, \- u$ {* n7 D0 q
nPoint += 150;
/ X. N1 V* u* q# [ else if( m_nJob == JOB_RINGMASTER )
$ y2 V- N6 U$ X0 C E" q) F& v nPoint += 160;, v) z" B2 s, \4 f
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
! R4 y4 U L$ |! z8 Z3 h; p nPoint += 180;2 y+ V1 ], i: P8 G6 M0 F
else if( m_nJob == JOB_ELEMENTOR )
) J3 E& A/ G& W4 [0 e nPoint += 390;2 E4 @4 |. C' j4 Q a! F' y
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
' ~0 f1 b0 _2 s" @ z6 [ nPoint += 120;( _+ L8 t! _# u) k
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
& Q% M' s' ~/ R% k+ ?7 J- Q nPoint += 150;4 Z m0 e7 ?3 M/ @4 V% g5 H% C4 k
else if( nJob == JOB_FLORIST_HERO )
j& C6 q9 V# c T9 m nPoint += 160;( H0 `/ F8 _( s
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
7 o7 G O3 v6 ]7 @" s8 u* G J nPoint += 180;, x! Y: z ]# `& F
else if( nJob == JOB_ELEMENTORLORD_HERO )8 D- Y4 Q9 [3 N
nPoint += 390;
: x4 D$ u0 A3 y0 W j9 o9 l+ E: l3 U- ]4 X7 k0 }! n& Z( ~9 ~: Y( m
AddSkillPoint( nPoint );3 N7 |! R8 Q, r1 n: j
m_nLevel = nLevel;+ z# ?6 S/ C: @1 d r8 S
6 k" A/ S) S# l V( ^- Y2 R H# m& ^ SetJobLevel( nLevel, nJob );
0 r+ \) V* F& s1 A5 D9 Z. \) {9 c' |. u m_nDeathLevel = nLevel;
/ O# h: C& t0 r( L5 H#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
5 L7 j; K1 c/ G* c if(IsMaster())
1 N- A4 c0 P$ C2 b# m0 r9 ^ {
1 t1 A; _5 W C" t# w- J int dwTmpSkLevel = 1;//60, 72, 84, 96, 108# Q0 ?! P F% [+ |
if( nLevel > 59 && nLevel < 72 )/ i% K: ~; Y- \7 e7 G# W
dwTmpSkLevel = 1;
* Z* S; P$ m' G; g$ Y2 |) B else if( nLevel > 71 && nLevel < 84 )
A( p/ l1 d {7 [$ q$ F dwTmpSkLevel = 2;
# Z( R2 w5 ?& S4 R else if( nLevel > 83 && nLevel < 96 )
3 _% ~4 v- ^# V9 K8 {6 g& r) w dwTmpSkLevel = 3;9 A. v7 }) I" R5 e
else if( nLevel > 95 && nLevel < 108 )
9 {7 o/ M$ l- H( ^2 K. f dwTmpSkLevel = 4;4 @3 I7 C2 t2 o5 K3 ^9 X2 d( v. e$ s: Y3 `+ \
else if( nLevel > 107 && nLevel < 120 )7 Y# U/ q6 Y( I z2 z( ?: N& _
dwTmpSkLevel = 5;$ t, @: r; t5 C. |2 c5 d R$ H% } B
for( int i = 0; i < MAX_SKILL_JOB; i++ )
/ [" j: r2 `3 G8 u, ` {
6 U1 Z# {3 V# t* A# f# k, B9 V LPSKILL lpSkill = &(m_aJobSkill);
+ n4 r* Y/ o1 V) O4 x) U' [/ ` if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 `5 y; p ~: `% @9 B1 | {
7 V& H% y& u0 j D! B ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' d7 `* B8 t$ B
if( pSkillProp == NULL )' Z& @' O; v- G# c+ N# n2 w! h
continue;
8 R; q x8 C2 N$ x# Z! k if( pSkillProp->dwItemKind1 != JTYPE_MASTER): o0 L3 ^4 }0 @7 g
continue;
) s: Z" j% ^0 u# o) Z lpSkill->dwLevel = dwTmpSkLevel;6 s ^4 d* @; _8 r9 A' r3 m3 j. h
}8 \: a" Z. u. [* k% K2 T: B
}3 V9 d- h4 C1 j( Q
}+ P9 W2 O# X& K# e# p- s
else if(IsHero())
; }; k6 L& \) e5 Z8 f' S9 I8 Y {. _( i1 j: E/ ?3 v1 `( Y
for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 N' k# V5 a o0 a$ O5 |5 q {
6 p0 [3 M" R& ?3 G4 M3 }7 | LPSKILL lpSkill = &(m_aJobSkill);
2 w, K- }, y! D1 g if( lpSkill && lpSkill->dwSkill != NULL_ID )+ J! q. g, z: h
{+ _2 S8 u3 v3 l, f/ n- w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 6 D% n/ _, ]7 c
if( pSkillProp == NULL )& n4 J: ~+ @" `2 o8 Z. s
continue;4 y8 O: H9 I! e6 T
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
- D+ p; J' |) ~6 ^3 y continue;
' R6 u7 [$ X( ~6 o; T lpSkill->dwLevel = 5;
" _1 w. U4 b/ m4 j$ o2 j' K }
& |4 ~% D! k3 F7 |6 r) A# C& N9 Z8 T }: y3 H& I: @* c4 U& y/ ?
}6 r d/ l, N' R, e" P, ]. b8 l3 D! I+ J
else if(IsLegendHero())
3 O$ A+ ?, f" h. k {0 ?* D6 B) f/ }$ I
for( int i = 0; i < MAX_SKILL_JOB; i++ ) + s& z% B$ |- F9 j0 k4 ]
{ 6 V+ O9 B; ?2 a+ j, K
LPSKILL lpSkill = &(m_aJobSkill);
* O& }' x5 J B- ` ?, d if( lpSkill && lpSkill->dwSkill != NULL_ID )1 L* c7 w. U5 J+ [: h# h z
{- V, {, {7 {3 \; t; _- X
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ u6 U3 R' I# e- E" @2 ~; v# \ if( pSkillProp == NULL )
& f6 o2 j3 v! h" e# u+ Q continue;
" g% q# @0 ?- N1 C$ m if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ n- z- u1 @- ]9 {* }2 P
continue;
: W8 k4 Q" F4 c2 o. Q; N lpSkill->dwLevel = 5;7 N, n% d. k; H+ J. J. @
}* }* C, P; P T
}4 @! E% {- h: ?( s
}
* o- v/ c! d6 J4 I#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 z% J# b+ v+ @/ V2 L if( bGamma )' H- P7 h0 D3 C6 M( }9 R0 I# _0 E
{. H& Q. U6 C [% Z
m_nExp1 = 0;' E; J: |5 v" t7 `& [! W
}, w3 z! l* a% A1 D+ I2 M
) U7 Y9 n; D% `! v3 S, A
( (CUser*)this )->AddSetChangeJob( nJob );; A M7 r1 f* n, ~
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
5 m& O7 b; |6 t
+ q. t' l; t* A3 J1 ]4 E
9 b. i0 V% @8 W/ ^8 F0 A# o+ g#if __VER >= 11 // __SYS_PLAYER_DATA1 y/ h% u* j4 F) G$ x1 e1 H
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
+ I! u" F# j+ X0 |1 V#else // __SYS_PLAYER_DATA
3 v! Z* A3 z1 ]1 ?4 g5 M g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 M* K! g$ l0 s) X& H
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
2 N5 @$ ]/ u7 r* H if( m_idGuild != 0 )9 K3 w" e }+ h" ?: a9 b3 {1 y5 t2 K; i
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
- {9 J4 x/ Z8 }1 {2 \7 \#endif // __SYS_PLAYER_DATA6 A% H7 h# ]) K4 U
SetHitPoint( GetMaxHitPoint() );
1 C0 j* H. p# D( Q. h SetManaPoint( GetMaxManaPoint() );7 W: f/ E4 M3 D
SetFatiguePoint( GetMaxFatiguePoint() );
. J" B, p- |' x2 j" t" H# x0 Q if( nJob >= 1 && nJob <= 4 )
; [1 S1 T- Q. K$ k; j3 R {! A, R9 Q! ~0 H) E6 k; ~% v
m_nStr = m_nSta = m_nDex = m_nInt = 15;
) g( J) P# _: J) u- b# V% n$ b m_nRemainGP = 28;
! c1 ]$ y N) |" J+ d1 K) ] }. \- p1 v w! ~9 y4 U% @( L
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
% x1 T0 y" W4 s1 n {3 u( a! N0 f2 J9 \0 J6 V3 s
m_nRemainGP = 118;
" X! A+ T; y8 H g //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
" ?$ s9 j5 S9 Z# f" {2 r m_nStr = m_nSta = m_nDex = m_nInt = 15;( G: _& l- J K A2 u0 C+ @
}
' p* _/ _* E: e ] if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ): m# L6 q: i2 p, Q6 _& d
{4 n8 g( x+ m, y) M
CItemElem itemelem;
% ]7 R4 {3 H @+ A- U" |3 }# X X2 ?$ C itemelem.m_nItemNum = 1;- K" C' e- q' D: U
itemelem.m_bCharged = TRUE;
( N1 {( d* F W0 o BYTE nID;
1 g; E# m4 M8 C0 T4 t
, M; p0 o% U, X+ m if( nJob == JOB_MENTALIST_HERO )) y4 B; ^* Q7 ` F4 @7 K
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;' t) n8 Y8 ?3 b0 R% u( [% `% r
if( nJob == JOB_FORCEMASTER_HERO )
* |+ Y8 A0 _" A itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;; ~3 O; t/ p3 P$ X( h* \, I
' }; ]% W8 c5 C8 Y: g ?) c+ w% |
( ( CUser*)this)->CreateItem( &itemelem, &nID );
% K3 w; h V' S+ N }$ w9 S0 y# r3 E. ]: S5 h( v! w
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
9 o) ?' i( l9 M! |" d8 n: i7 Q" b( W: b ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );2 x* G1 ?' z( i4 n
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
0 M5 y2 l1 P- d% w* l3 m /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );; e7 O& `/ ^! Z6 R) n7 t
( (CUser*)this )->AddTaskBar();*/
Y3 m% g, S7 A \+ A9 b ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );6 ~ }6 I* V& \$ P/ v1 Z
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
8 L: G2 X* C7 q) `; j9 j. t ((CUser*)this)->CheckHonorStat();; e% r$ W9 y" a+ \/ ?
((CUser*)this)->AddHonorListAck();
" i! Q$ V6 W! w2 o6 V0 X g_UserMng.AddHonorTitleChange( this, m_nHonor);: J! g# V9 k A0 O
#endif // __HONORABLE_TITLE // ′Tà?7 m) K6 Q K7 x( ]
}
4 d6 }- c$ h, t" G; N#endif // __WORLDSERVER' ?3 P: l8 V) n9 v
} 7 v0 G( [3 h( _. f
+ R2 i, X0 p/ d8 d然后你进入functextcmd.cpp并添加以下
0 T# `" T& X/ B0 ^7 b: N
9 ` k. l+ T- G代码:# `# W: O, c$ _9 ^( d8 w+ e' i
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
" h4 j+ ]# v0 \9 w+ B! r下面插入
7 M1 f" i. v0 L: i) }9 fON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( A b7 z0 T% U0 ]5 g1 |0 J6 P& ~2 f* Q
然后你去
2 Q( n7 ^" M. {, d- s3 f
9 Z3 p7 w) e& M" E8 Y8 p6 z7 ?代码:
7 ^0 v. {1 j4 x5 y- [& G代码 j" _2 Q( n7 F) [! e: S" I/ @
BOOL TextCmd_ClearPropose( CScanner & s )/ o$ o& Z, c+ P3 G
{
8 r! _2 A) t1 @#ifdef __WORLDSERVER: G; o, z6 ^3 ~( D" M1 e$ B
CUser* pUser = (CUser*)s.dwValue;) a2 f+ Z* a; H9 m) ^8 ^# L1 X
g_dpDBClient.SendClearPropose();3 k6 t4 o$ T& C) Y9 ?
#endif // __WORLDSERVER
* x2 j7 p8 Y6 D* N2 b return TRUE;
( i: \( q& b, D% G}$ y$ ?( Q$ \/ n- R$ }+ m: A, b q3 Y
下面插入
' a) @4 k, c; h9 h0 S3 S$ aBOOL TextCmd_rebirth( CScanner& scanner )0 C8 ?4 E0 a2 {# i. b
{
1 f. |# U/ E9 T2 r0 A: F#ifdef __WORLDSERVER8 ^- K# b _3 y# u" f0 w
CUser *pUser;
) O ^: U# Y" M% W7 f0 @( ?) x; gpUser = (CUser*)scanner.dwValue;
3 t, f; f$ j; P0 V5 |4 Nif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())6 Y, [5 z. ~$ T2 O; E5 q
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
& }3 g+ C% A# s; c: {9 Uelse
" ~& B1 G5 j2 J9 HpUser->AddText("你还未达到重生条件!");
5 Z9 j# j2 k& a. o#endif& a8 s3 s5 f2 O' D \
return TRUE;
6 {! V" y1 j4 c/ ~0 C} 3 `% h$ Q5 Y1 a! h% f
: q Z# W2 j3 Y/ @
' R5 a6 Q1 i6 ~7 f/ K' q* J& R. S P# A8 t' b6 K! L2 X! T
G: _' {& J. m4 ]
|
|