|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
/ }8 T3 |3 G! O( F4 J: b4 S
( |6 S5 B# r& rMover.h* |$ @) W9 v0 ^9 j
代码: |5 r* q# \- E" s; z6 F" r
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü0 H& o9 f2 k4 N: V7 G; d
6 }! n! u$ [" A/ j$ @下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; - c& K- L6 O% [. t7 T( R; ^# s2 d
. C' @0 N7 [! K1 a, W
然后你去mover.cpp添加
4 S- Y9 R& E8 o( @7 d+ N B
: y- B$ a2 \! m8 t, s; p8 P代码:3 ^5 w# x6 Q1 m9 t7 g$ ]
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )! u# T$ a. F! R( L3 O# ]3 B
{4 q5 l9 K$ U# b2 r9 G
#ifdef __WORLDSERVER
9 A: V( w: G8 g$ v: i+ P# W' a) P // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" H8 K2 k0 v- i E MoverProp* pProp = GetProp();
$ d; [8 @3 ~4 |1 |5 e4 z+ v if( pProp )% O; d* ?6 f3 [8 j% x b& x& }: M4 ~
{8 ?' j( ]% r& N
if( nJob > 0 && nJob < MAX_LEGEND_HERO )4 O4 x0 t) N4 [6 V$ j/ d
{' D; Y- c# M) L- q# }: Y
AddChangeJob( nJob );
# `0 n/ y& l* b$ n, F }else{/ \: p( F* p$ j0 L9 S( J' L% V
return;
0 {4 q' C+ \! q }( A Q1 _$ s7 F7 c4 m
int nPoint = 0;/ }4 ~" i( |* p V z
if( m_nJob == JOB_MERCENARY )
i3 Y; S' F0 g( Z U2 d9 q% G. I% C" Z nPoint += 40;$ @+ A7 E d z+ \; \, b
else if( m_nJob == JOB_ACROBAT )
, z# N3 b5 K: i; F5 U+ v nPoint += 50;
- z: u; B9 d2 p8 k4 ~ else if( m_nJob == JOB_ASSIST )
6 D% S q6 j3 Y% P nPoint += 60;
8 o3 D. O, Z' r, P$ E else if( m_nJob == JOB_MAGICIAN )* Q8 v; ^9 v% Q8 T! K
nPoint += 90; t5 x3 u! ?+ |( ^ {$ i4 b
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )( V& E4 R- ]( k. J/ Q1 Y
nPoint += 120;
' b3 U. a9 r) I! o) o* A& X else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
- T5 D7 s9 r. c( @# {! t nPoint += 150;, G$ s# V0 x4 ?' }' e* F
else if( m_nJob == JOB_RINGMASTER )
8 l# J8 g; L) x( a9 p- ]2 u$ m" E nPoint += 160;
9 P' Y" F4 D3 A [% ^9 [ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )- l3 x! {8 v0 r% Y7 {
nPoint += 180;2 x( R4 L$ V: C0 B; v% t& `+ z
else if( m_nJob == JOB_ELEMENTOR )
/ B, d1 b4 ? }, T1 t8 d nPoint += 390;
1 h8 X1 j7 y' Z7 H else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
?! b4 g# P) s t+ I nPoint += 120;* @9 S. t1 m# ^6 |
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )( p5 C7 o' U) ^
nPoint += 150;
7 C# {+ g) L6 w' p2 m% r else if( nJob == JOB_FLORIST_HERO )# |1 z: \3 d# j4 h2 U* h
nPoint += 160;
9 D/ T9 c/ k7 ]) P: W+ a( w else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )& O T$ E+ @8 @' ]/ H$ f) }
nPoint += 180;6 F2 [+ d: J9 _5 W+ P) l; W
else if( nJob == JOB_ELEMENTORLORD_HERO )3 k* Z6 T$ o! q( |' r
nPoint += 390;3 f0 ^$ |0 T( L, d
7 v3 V+ C1 q/ X% E
AddSkillPoint( nPoint );
$ ^6 V( a/ q/ C$ Q$ O8 F1 N m_nLevel = nLevel;; K1 _* v/ u- O. O
0 l. U m% D5 {* t# g4 \ SetJobLevel( nLevel, nJob );! `1 Q ^ T% C' l2 j b
m_nDeathLevel = nLevel;1 j9 P) ?1 Y5 b
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 [- X" k- U* p% d8 W1 P- o6 S0 C/ a
if(IsMaster())
! n8 l3 }& R3 [/ @5 ~9 z. f9 g {
9 I: O* w [ n% {* k6 ? int dwTmpSkLevel = 1;//60, 72, 84, 96, 108% g) h/ E( a; V% O2 _+ f
if( nLevel > 59 && nLevel < 72 ), s' j1 [( \3 n: u" t" Z3 `
dwTmpSkLevel = 1; j1 R+ J+ C1 E
else if( nLevel > 71 && nLevel < 84 )0 f: c5 x( Y& a h
dwTmpSkLevel = 2;
! g# _0 m9 T+ m: n8 D& G else if( nLevel > 83 && nLevel < 96 )
& d5 J6 R" h& N dwTmpSkLevel = 3;* a& D7 h! Z$ {* Z9 T# `+ b
else if( nLevel > 95 && nLevel < 108 )
$ ?6 O* F: }4 p/ C8 P# c, \0 s dwTmpSkLevel = 4;
% A6 ~1 N: m0 {5 n0 @8 d, D# q else if( nLevel > 107 && nLevel < 120 )
$ y% m, ?5 T7 C) o' W6 I* p dwTmpSkLevel = 5;- c" T" J9 W- Q- `* }4 x# N0 t
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 ]6 t G" k( Q
{ 3 \, O$ ~8 x3 c
LPSKILL lpSkill = &(m_aJobSkill);# n( P; e* g2 q% O# h# n% B* b: i+ P
if( lpSkill && lpSkill->dwSkill != NULL_ID )- U& z; M1 D k, p% \
{
, p. r/ s* T# H& P6 j ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 O7 ^1 h* o3 N
if( pSkillProp == NULL )
0 [! @$ W4 t: H3 D m continue;+ W+ @8 V; R5 P& c6 R- M) o
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) @" z+ n# U: m+ @& h
continue;0 B7 ?+ c* i1 R- w7 P% n7 b* G+ ]
lpSkill->dwLevel = dwTmpSkLevel;0 D8 k/ S7 K" r( I4 t* w4 \
}* P# P6 p3 @& ?$ F) G1 f& j
}' s% @- u J# ]$ v5 F. l# e
}
% }2 h! R0 X" C' P* i' e else if(IsHero())
! |9 X, l) t1 ^$ a3 `% \ {
) [$ S) e& F9 z. n) T A7 [8 U/ d for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ t/ i6 [- [* M" K3 j/ M { . t7 w+ [- y6 ?
LPSKILL lpSkill = &(m_aJobSkill);, A7 s9 q. m9 @, @% B+ D/ G2 _
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 j6 l1 f! E9 \% z {
' y: h9 D. R1 X- }, E! C l' \0 o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ q" F/ C9 y8 o! c: C
if( pSkillProp == NULL )
+ h- @6 p7 P( a8 s. t/ W/ Y continue;7 S6 {) v5 L4 L! @2 y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) i$ H, o; J( H3 x
continue;; m( Y2 I3 j0 {$ y& E
lpSkill->dwLevel = 5;
, `; F- a# G; t! \8 ^* i. k }' i' r* ~$ Z0 b
}5 J* |2 b) Q1 v1 I2 @3 g
}) R9 ~2 n* ?0 C- V8 v2 j$ h' z& }4 N
else if(IsLegendHero())
! V: p8 E: z1 d9 n {
: D4 v4 @9 W! ~' p; D! _ for( int i = 0; i < MAX_SKILL_JOB; i++ ) * o2 V5 \) R) ?
{ 1 x8 a5 S% P3 ]: T+ } {* G0 E
LPSKILL lpSkill = &(m_aJobSkill);, s: u5 `( J" _- |* {0 A
if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 A- i- g6 [, A {: Q2 D' p9 T- E/ c6 z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 J1 C: x' N( T# f1 |6 E* k if( pSkillProp == NULL )
' W) S+ n" n8 k( d1 `0 Q: }8 e continue;$ E* |! s/ X+ H* z) i) r
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 x$ {! g' j& E& h! f
continue;* t+ U, }% A) t( G u' f @
lpSkill->dwLevel = 5;
. Y& Z1 z1 F0 J3 s, P }' O( ?! K4 C$ s/ R
}. g4 B5 C6 ~$ R
}
; x9 U9 [! O- }/ K/ j; g2 _#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
; g o) o$ |( C* S# o- F) \ if( bGamma )4 S( Q: q" M" }# j
{" X5 m0 g K; Q) K1 s+ T
m_nExp1 = 0;
+ ^* T% s5 k }7 x% e; R# _ }
/ Y+ u, E9 N+ ~; l3 i' [! `% X4 B
, Q! y) ?8 `' ]. z! D ( (CUser*)this )->AddSetChangeJob( nJob );" h5 y% C- Y5 y( C7 B
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
- U5 ^0 N- z( H3 u- K8 [
' X9 D: j% w0 d! d" F. Y3 I
/ p% ]9 {% H4 p- b#if __VER >= 11 // __SYS_PLAYER_DATA
8 F: y7 H$ \9 h8 D+ w, u/ r; F7 Y g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
: F* Q' `3 D. J: G" O/ Z#else // __SYS_PLAYER_DATA
& q' S) R1 b- U4 G g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
* E3 {/ z6 o; [% K5 a8 \$ K g_DPCoreClient.SendFriendChangeJob( (CUser*)this );' ^ y! H9 ?2 g7 ?/ ]
if( m_idGuild != 0 )# ~; P( g7 ^9 D
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
2 r# c5 L0 p+ L8 D#endif // __SYS_PLAYER_DATA
/ k( _2 g& ?$ a( W& [ SetHitPoint( GetMaxHitPoint() );- Q$ J) N# ^( R r3 H* S% h
SetManaPoint( GetMaxManaPoint() );
0 U+ Z" h5 Q- H9 l# K SetFatiguePoint( GetMaxFatiguePoint() );
$ H' F) s+ m# e! O8 i+ a4 t( B if( nJob >= 1 && nJob <= 4 )
' h v$ B- w3 _/ r" E+ N2 J {
3 F+ @1 ]: a# G5 ^" i3 h m_nStr = m_nSta = m_nDex = m_nInt = 15;- s$ T9 b" t( W, }
m_nRemainGP = 28;
+ @1 q+ K# @. E/ e5 p; n) }" _ }0 {( R% f: I0 r7 T+ u
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )% A& b4 j; F" @, |
{* F( _* J! w/ e6 w" V
m_nRemainGP = 118;/ ~4 f) ~2 }' ~: B* k! r, O
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
. L% P6 `! X& T' ^2 G/ M m_nStr = m_nSta = m_nDex = m_nInt = 15;/ E4 b3 t" X/ {
}
" |6 v% J" F5 E0 l! @6 ^6 _$ u0 C if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )# t6 @& N3 a& g- |0 _; m
{
2 Q) O5 }5 F; ^) W CItemElem itemelem;. i" z( ]" s2 h6 z' H. I
itemelem.m_nItemNum = 1;
]+ a4 Y, [9 J% G2 o8 Y1 f5 I itemelem.m_bCharged = TRUE;
8 a' B8 c# C5 n; {0 q8 V3 i3 P. u BYTE nID;6 z" U2 E( \7 o4 H% ^' U. y
" Z1 u6 b# L# {9 M( h a5 c
if( nJob == JOB_MENTALIST_HERO )
& v5 M2 \) R( G7 l itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;2 w$ ~$ S: X# @( z I* t& m0 N! X# J: ^
if( nJob == JOB_FORCEMASTER_HERO )
: z: {) m( n* e/ C5 g# j1 _ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
' j: \, s, Q( h/ x: A4 a% J- x' u& u
( ( CUser*)this)->CreateItem( &itemelem, &nID );
5 g$ o& @; e8 q }
- L, C% f b$ A/ j' t9 ?. c g_UserMng.AddSetLevel( this, (WORD)m_nLevel );: p3 T7 _! N6 ]! O, s8 F( X
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );0 b; v' D' {2 f! B, [
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );1 o) Q/ x/ B$ |, z, Z5 W/ h
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );/ ^7 q9 d- L* B( s$ C' G
( (CUser*)this )->AddTaskBar();*/! }! ?/ f* g$ R* l5 F' T
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );# I* C, x" [9 M# b2 g1 F! k4 h' ]# T8 i' _
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
8 v2 q: C3 ~8 E5 {0 o ((CUser*)this)->CheckHonorStat();2 B" ]. q7 i+ \+ r5 x, r
((CUser*)this)->AddHonorListAck();) m. k6 a- [. {; l
g_UserMng.AddHonorTitleChange( this, m_nHonor);8 v; e' n8 j: C1 S/ Q) {
#endif // __HONORABLE_TITLE // ′Tà? W" e4 ^. H* Z/ S I1 ?% U. }
}6 v0 h7 }/ W S2 Z
#endif // __WORLDSERVER3 Z; L# J$ D7 w
}
R$ C s/ ~3 t( E4 h
/ L& b0 Z2 s) Z+ ]! r. t# p# q然后你进入functextcmd.cpp并添加以下
+ B2 [& o, ~( n' c, c, g% ^9 h$ D+ i g2 n0 u+ D- f; F4 p9 [
代码:$ A4 w2 K5 L. V5 o i: m6 c
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
! `1 S7 z5 e6 f& P! B下面插入9 d3 l' T4 U& A/ V j! g2 X; H4 d
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
9 g; |+ N) w1 t8 [$ y
0 A8 f+ l o- Y8 c9 {然后你去! p5 K. ?7 j" O7 T3 v* r& b; E; u# x, y
p F# S; N E7 J- e- V5 H; o
代码:
2 t B: I; ] S代码
2 ?3 y$ j1 s8 A4 \9 aBOOL TextCmd_ClearPropose( CScanner & s )
) i; |* _5 m0 g0 b9 \: s$ b{
l7 k8 e, c( ~7 y/ o- ~#ifdef __WORLDSERVER' X1 |0 E, M' e2 w; h; O
CUser* pUser = (CUser*)s.dwValue;
3 y3 u" U4 _4 M6 y4 a! V3 I g_dpDBClient.SendClearPropose();
1 q( T& H: V" q" G% p3 u+ L#endif // __WORLDSERVER: c# I9 Z1 `& X; Z
return TRUE;4 m- |/ N3 a1 q" ~
}1 j" L$ D( p% p8 p' x
下面插入- f s9 c9 X+ f. u2 @) n. O# B
BOOL TextCmd_rebirth( CScanner& scanner )5 R Q$ u$ R) L% p g2 h
{
# @. e8 ^$ C& \, |5 @2 X9 [. p#ifdef __WORLDSERVER/ a$ F* U$ w" f: W: u3 q
CUser *pUser;
$ Z8 d. z) {, z9 N% v6 |pUser = (CUser*)scanner.dwValue;
. c; B* V# T4 Qif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( H9 d) Y3 y, v. A S& l# RpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);7 K4 G- g" {) Q: Z) C& L! n- ] H
else. K, c' K+ J5 D# z* y: }, N% E$ F$ i
pUser->AddText("你还未达到重生条件!");" p0 X( I o: q. z" C
#endif0 X2 H( g o4 D! e
return TRUE;
- n3 B* @# m9 k% q( @' ]} 3 G1 |. V8 M2 |, X
0 {/ V$ @ e: g, D, m
, z! t* I9 F/ D& [/ W, m6 W& V+ D. _/ F, B( x( z& n$ z: {
, V" _2 _9 D2 w; B |
|