|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
4 A- }- E# G I4 ^: R2 L
7 L; @' V6 f6 ^, J4 YMover.h
: V: c$ w B- @0 J3 F" h; m代码:8 a4 [ _5 f6 p) X6 @7 {# U
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
& N- {# P, ]! F1 u+ s4 j( d0 L" X& @: {& V4 g! X% {8 R5 a; p
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
+ h# B# E$ j' C: p. k2 I! ^- {+ k7 |. V3 V
然后你去mover.cpp添加
* g- u9 b% o3 p1 j) x7 s; [9 g% N" O% _, C" I
代码:! I$ u* C& J& ~' I
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )( ~+ |) e6 `% k% V$ i0 Q
{
: \! {& {, V$ b6 E6 Z#ifdef __WORLDSERVER7 ~8 b# L9 }3 T) D- I/ }/ r
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó. m4 A: j) o3 ?) O8 T9 D
MoverProp* pProp = GetProp();
9 H+ o2 v" a- _ J if( pProp )
6 P: {8 u. `" F+ F {
7 b* g$ A8 j, q9 H if( nJob > 0 && nJob < MAX_LEGEND_HERO )
% i+ A) K- b! g( l1 D6 ~6 ~ {# M4 y* f, i- Q$ X- H
AddChangeJob( nJob );
$ a$ `* b. ^- q& U$ c& ~ }else{) |- Q* f) M$ G# f
return;
4 A- @! b4 ~+ z5 P7 L$ S. A/ D }
& T5 }8 O$ Q7 [1 g- z int nPoint = 0;1 k* ^! K7 t- u" \0 U! l, y
if( m_nJob == JOB_MERCENARY )
; V2 l6 L5 e8 a$ Z1 K. I nPoint += 40;
* ?: B- \* T# u: O% C) J; {$ _ else if( m_nJob == JOB_ACROBAT ); ?( J x3 v& f: {" p4 u% r; I% A
nPoint += 50;
4 \ U, e5 n( ^ else if( m_nJob == JOB_ASSIST ): _5 {! |- D R0 \+ s* i
nPoint += 60;
- c, A8 n2 }; Y' v5 u3 {6 ? else if( m_nJob == JOB_MAGICIAN )
0 }( q& s( {7 n% l6 c9 |; |5 U nPoint += 90;/ S+ r+ n; j. m4 k* i( p
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ). F; }* C4 j; D) h3 E" P
nPoint += 120;
" p% R, B, H4 B) ]( O+ J else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
" h2 ^6 |0 T# o7 }' g nPoint += 150;0 o! y$ ?% x3 w/ h b
else if( m_nJob == JOB_RINGMASTER )
) p" M9 f$ r0 |* H, F- m nPoint += 160;; g- ~4 {) D2 S
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )% \) J% r" W: p/ P& ^8 O2 p. P, c. T. [
nPoint += 180;
Q) I+ c" B1 W9 k# D) `! ~; ? else if( m_nJob == JOB_ELEMENTOR )
, R% I) q) s% l nPoint += 390;
' I: L: P" U9 U" Y" ` else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )- {& D4 i/ ]! {2 ` [- t! w
nPoint += 120;
! Q+ }9 B& }# }8 r else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
9 H; M6 V! d" {2 p1 _. c nPoint += 150;
1 ~' _7 [ T4 c( p; e else if( nJob == JOB_FLORIST_HERO )
- g) e- N! Y% h" q1 U7 g nPoint += 160;6 P; r; L6 H2 z
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
7 ]4 L% M" b4 _+ i nPoint += 180;
A0 F! D- ]. a else if( nJob == JOB_ELEMENTORLORD_HERO )
2 K% H* W; ^5 U& X; P9 \* B nPoint += 390;- l* Z5 A( m% g4 f: o+ C
. i5 K7 m: _% A# D AddSkillPoint( nPoint );
w* W! ~) \) P m_nLevel = nLevel;
6 M3 o1 g% N: Z
/ K" P8 i; K# h2 f! u6 W9 N) J5 I: E SetJobLevel( nLevel, nJob );
% a- t/ [4 [2 h4 u m_nDeathLevel = nLevel;
2 | N2 S) q3 J1 M; w& ^. U" C2 ]: a#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
5 i3 _; ~$ {. J0 u! q) r2 H" U7 m if(IsMaster())
. u C! G9 m+ k) n4 ^3 ^& ? {2 `2 X7 a3 l5 e1 Q1 ?
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108) Z7 k C$ u6 K* X
if( nLevel > 59 && nLevel < 72 )
+ h# W5 J, {, L" V dwTmpSkLevel = 1;
- }. |; c w( X0 G& O" Q: u else if( nLevel > 71 && nLevel < 84 )
: I( y" ?3 Z Z; b1 H* F dwTmpSkLevel = 2;
5 i, b Y+ X+ B' B* o9 V6 o else if( nLevel > 83 && nLevel < 96 )/ Z8 D" \/ o' ^; h& b
dwTmpSkLevel = 3;- M i6 \, r7 Z0 O" v3 [' p( Y
else if( nLevel > 95 && nLevel < 108 )7 b a8 {& V4 d3 Q
dwTmpSkLevel = 4;
* C P$ b! R+ R, B. s else if( nLevel > 107 && nLevel < 120 )
0 K: x: X! A7 m7 [$ M dwTmpSkLevel = 5;" @7 d; Y z X v Y. }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) : f6 |+ F8 h5 C0 N, \ I2 z4 T
{
% A Y) s1 Z/ N8 \3 Y8 G LPSKILL lpSkill = &(m_aJobSkill);) n0 V* w& @3 w M5 B4 q
if( lpSkill && lpSkill->dwSkill != NULL_ID ). e4 I0 Q: M/ D
{
. A$ S9 s0 j& O$ J" A, h7 @# D2 z" A ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 l' z: q+ v; ]% c( z" P if( pSkillProp == NULL )
: [: c& |, O$ _% ]$ A continue;
6 `! H7 L, t$ W4 ?7 X if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& I u* s- @7 i* n0 z
continue;
2 @) D9 M/ q# {" Q lpSkill->dwLevel = dwTmpSkLevel;
: I2 _; X# `$ M6 ]$ a0 H }3 b, E3 @. _( O5 B9 X: S% N
}' r7 Q9 h! L$ A [! [. C! k
}
7 _0 N4 c" f" @! B8 x* F/ v else if(IsHero()). s* z+ E; q* K X" P. ?
{8 ]* s' \0 s# C3 }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) G. S* S6 A& g0 l* v' m1 L
{
0 @3 ], B9 k8 u. c/ Z# M$ b LPSKILL lpSkill = &(m_aJobSkill);9 a# B/ [* ^. Q+ w4 D1 }0 Z' F
if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 i+ T' [& [) [, Q: H* @ {4 D2 ], H9 W3 V' T5 I
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 X9 O; u9 [- s, V$ G- P# Q* w
if( pSkillProp == NULL )* Y5 c/ I% Z; D+ }$ v1 i6 V# b
continue;. Y" O" k9 j2 A+ D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) w2 Q5 s$ W. p+ k( I+ b
continue;, b" G- d1 [& {8 a+ x
lpSkill->dwLevel = 5;
3 A d* |8 _# K* n9 k0 f }
" W1 L4 M3 {) B8 B8 @. c' \1 o }/ t2 W: I$ T0 z; R8 `1 d
}
" R# {6 x% g. u# w7 \( z else if(IsLegendHero())
U1 h9 A+ q4 W: p2 o {
^) V3 o# J8 }# y for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' n" z R# Z) L4 F
{ - e1 s8 I t( E! [9 o
LPSKILL lpSkill = &(m_aJobSkill);# I( Q- c- R5 E' K& d
if( lpSkill && lpSkill->dwSkill != NULL_ID ); `9 R( a# C* l0 q
{+ {' x, j' B7 l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; \/ p. M0 |7 @" S3 n4 {
if( pSkillProp == NULL )
$ p! C8 e. o+ V/ i1 X continue;
! ^; s3 t! }2 F; _7 h9 P/ N! k( V+ G if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, u* ?6 s2 b/ o& \ continue;( ^: h: |* C: z L
lpSkill->dwLevel = 5;1 O4 S. F% v7 ~0 J' Q
}2 K0 I1 {. |3 x ?- `
}
4 z3 O" }$ J' ? }. o' J8 k$ ]+ A8 J
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: _( J; h Q7 Y
if( bGamma )
3 U6 h6 K$ g* j {6 O8 ?/ W& s" H9 J- d: s% H
m_nExp1 = 0;) o [( Q2 r" H9 @2 y
}( \6 t+ I- W( _5 N7 W: u# @
# v' u% d2 y8 \ ( (CUser*)this )->AddSetChangeJob( nJob );
' h! [6 V) |( \; y0 p* G g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
! b4 U/ j* |* O d& G2 | g
9 L# P3 E/ M0 ]0 V' u- L5 Q3 U' \. n
#if __VER >= 11 // __SYS_PLAYER_DATA; S ~- L6 p& H9 P* j
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );9 V) \+ Z# k% a
#else // __SYS_PLAYER_DATA# E9 ?5 }( ^ S b' l# `
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );6 g }# w, W$ _: k$ a8 s% ]7 u
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );/ J& ?8 J3 f: n+ T
if( m_idGuild != 0 )
" k( S- \9 m0 P9 T+ Y `) _ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );3 Y0 T* [' ]+ T4 X8 t
#endif // __SYS_PLAYER_DATA; y8 U8 W+ N; Q# I; N' D
SetHitPoint( GetMaxHitPoint() );2 k/ p R F2 d# ~# S
SetManaPoint( GetMaxManaPoint() );
. g/ H, z+ R% Q+ o+ ^1 Q SetFatiguePoint( GetMaxFatiguePoint() );
+ ]4 O) [3 c0 t+ I7 e6 f if( nJob >= 1 && nJob <= 4 )
! A5 Q; J+ I: V% i, p/ B {
3 }3 N4 z( j" {# \8 e9 s3 J$ R$ G" s m_nStr = m_nSta = m_nDex = m_nInt = 15;
) f3 y( B" l! U m_nRemainGP = 28;; Y$ N/ }" x$ r' M A
}
: Z5 E( `3 D' o* f, D3 t) L% C if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
% l: ~$ e& v% v9 y d" o {
6 ]8 n8 N8 q5 W m_nRemainGP = 118;
6 _9 b8 k/ @5 b! J/ Z //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;- _6 s) a* Y' V8 u) @ T
m_nStr = m_nSta = m_nDex = m_nInt = 15;' N% O4 h# A1 ~( |" ]' F3 Z! x
}! K. }& L3 }8 w) w% P
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
+ p* X/ L9 ^+ I+ Y. J, T2 n& a% B {
( K4 ~/ E$ T1 ~# e7 A CItemElem itemelem;1 g( e% U# `" J& F7 j! Y! f
itemelem.m_nItemNum = 1;
6 Y6 T0 N+ `6 k: ~; D: D itemelem.m_bCharged = TRUE;
. {- p3 A- G0 s2 H BYTE nID;
+ X0 \9 _! Y) k" ?
6 ^9 U4 ^4 Q8 r if( nJob == JOB_MENTALIST_HERO )' M. E* j7 Q& n+ m" ^: q* B; Y
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
% c2 T9 _; h6 q& c! G; e% W if( nJob == JOB_FORCEMASTER_HERO )- Z$ i% I4 d: E J
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;/ `" e* C! A- v# ~' O" A6 P
1 I; f: v1 g; x% Y+ t3 t% c ( ( CUser*)this)->CreateItem( &itemelem, &nID );
) A% e% r# v0 P }
" R- z' Q: N" |$ |9 U g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
; [; h; a. U$ N; p* ] ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
c! G( [8 V& _' ]+ n ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! ~' \" @8 p. s
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );2 J* s K! G( @2 `5 ?
( (CUser*)this )->AddTaskBar();*/: M* J3 T$ O$ _1 x& ~
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );- Z$ Y5 e' x: P9 H: u/ S/ X
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" v1 t7 b% B) X& j ((CUser*)this)->CheckHonorStat();! p4 e) s2 S( D" v5 ?: d& z3 i
((CUser*)this)->AddHonorListAck();
I# ?, S7 }: B, o- L4 a g_UserMng.AddHonorTitleChange( this, m_nHonor);
2 I. q9 @; B' \! p; R& ~1 d7 u6 {4 _#endif // __HONORABLE_TITLE // ′Tà?
+ x# z F8 Y. R, j, s }
; ~, h2 f+ M5 h* f8 P#endif // __WORLDSERVER
4 W5 I. I2 k4 `9 W" |} 1 Y( Z" W% ~# O* p
: o; m' r/ A- n0 E
然后你进入functextcmd.cpp并添加以下7 [0 B" d( X& I: p* J- [# x
$ R4 N" J, N! ~4 k; q0 Y代码:2 z* s, N- z. u; N5 |) \' V& {& V
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
7 L6 @+ Y k# n3 z2 K8 p. _% F0 s# e下面插入
# l" G' V8 h CON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
6 G! w' N% u; i& V3 i$ m9 I; \7 i
然后你去- z. I5 a6 j. ^
1 }4 K9 L5 n1 A4 ~
代码:
. ~ j. `+ m" |& v2 r- J代码. e" Z g- B/ T# q B9 F& F
BOOL TextCmd_ClearPropose( CScanner & s )6 z. t, t7 M) ]/ ]
{
0 x) q( n4 j, n( ^0 A: C#ifdef __WORLDSERVER
6 E# @9 s3 o1 t. W CUser* pUser = (CUser*)s.dwValue;
* B3 K" l+ M- n' h1 m9 M g_dpDBClient.SendClearPropose();3 Q Z! Y% X% c3 d
#endif // __WORLDSERVER
* l5 s' }: |# v- |3 l return TRUE;! a0 ^% U" u8 B7 }+ v; u, }9 R
}
, N2 D$ v# W& `下面插入: }; s2 ?% d X* {6 q
BOOL TextCmd_rebirth( CScanner& scanner )/ K: b# Z; w4 j
{
* D" u4 x& O. ^5 @2 i6 h- @( s#ifdef __WORLDSERVER, m! W# B2 ^% J: M# B; M1 w, `
CUser *pUser;
0 c' \- B6 _, }( u1 q F( L2 U8 b! |pUser = (CUser*)scanner.dwValue;/ Q4 \/ K/ h. `# X y- ]% C3 W: v
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
) u" v0 e8 w$ n/ ?% N' IpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);# o) D0 n2 g, O1 b
else' c9 Z. m. x( v* j, f3 x
pUser->AddText("你还未达到重生条件!");
$ I3 u2 e% A, b. o; B7 D#endif
+ {' G+ c4 i& W- g: O( T4 T3 u4 Yreturn TRUE;: O% C! Q% m( z; e: d* O9 _
} 2 f$ P! W6 I$ h2 O# T$ F
$ F# X( k- F# v, p1 Y, ~ N9 b( r, }: g
( O4 j& ?9 H% B
* P- Q+ p( ~( b3 T |
|