|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel$ `4 r$ D0 K9 c4 ]
) f$ e; Z1 S4 l5 e- vMover.h
* K+ _% P" O( {- W- L7 F7 I' L代码:
x% W" z; L+ o/ e找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü) e r6 y" N+ H1 W! Y
; E, n, `- G5 \
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; & c! E" T6 h) v3 g5 P% { M
3 [' z* a9 p& X
然后你去mover.cpp添加
+ n9 {$ i% ^0 z8 w
7 u T+ A+ j- ^. c& A代码:
8 D; C: P2 a7 p+ u) ?9 Kvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )1 K5 z& ?3 i6 n9 V8 a
{
# ?5 J5 I& T3 X( e' u5 m5 j9 y6 e#ifdef __WORLDSERVER n7 t2 I/ y) M" }
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
* a, M8 M- D/ v: a; ^8 ~ MoverProp* pProp = GetProp();
- U4 _: y* R r4 N6 _% Q4 k if( pProp )
) `: R! s% Y( s! p6 o( W3 Z {
g- `7 {1 W! d$ b* d; ? if( nJob > 0 && nJob < MAX_LEGEND_HERO )
\4 X$ u' Y0 Y7 Y+ R$ P {
* [: s' n0 `8 O$ x AddChangeJob( nJob );
' o* I: z G) a. v/ H r- [ }else{
; j. p1 C* B! F2 E return;- c) G& e6 x- a: o
}
' `) s. e" ]+ A. o9 f: K/ v int nPoint = 0;9 X* ^0 } w$ K$ F4 a
if( m_nJob == JOB_MERCENARY )
% a$ [- w( H5 K* g: ^5 ~ nPoint += 40;
# Z c8 C, X# D! w1 o8 w else if( m_nJob == JOB_ACROBAT )3 V$ `$ m _- \( Y5 `) B! C
nPoint += 50; z6 }2 d# V4 J8 y# w
else if( m_nJob == JOB_ASSIST )
+ Y7 h. g+ h0 a3 g nPoint += 60;# T7 m7 ^3 I4 {4 A* p
else if( m_nJob == JOB_MAGICIAN )- `) y% c4 |. U. K# K8 }/ i
nPoint += 90;* i: m" Z9 J5 y$ e# U6 Q( @. N) n
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% _! M5 `/ u4 x nPoint += 120;
+ I3 q& t5 M- O, r( A+ D else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )" t1 Y: S1 P- H3 ?
nPoint += 150;
3 a& {6 Q. H$ W" f, G else if( m_nJob == JOB_RINGMASTER )( G, a& V7 ~8 b% G D& \8 Q
nPoint += 160;
; {7 W' n2 r& m& `9 u* S$ B else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )& S0 |' l2 c+ g" Q# o: ], r$ p
nPoint += 180;# |. {5 w7 V' v" d
else if( m_nJob == JOB_ELEMENTOR )* U$ N! x) X1 u" L
nPoint += 390;) z; k* s3 S$ |6 N7 O
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) A1 y3 b. q5 h+ F( Z
nPoint += 120;( q2 p3 S' G7 {6 }, l$ j9 ^
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )) m$ ]7 D9 l, p" V8 {, {5 A& b
nPoint += 150;# q5 @: ~% t4 I7 [% n
else if( nJob == JOB_FLORIST_HERO )
% d! y6 f- p; X7 k8 Q- q0 A' s nPoint += 160;$ q) B7 T. _ |9 q' j
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
P+ Q' t# l5 | _( t' D nPoint += 180;! n( b4 g8 O2 o# P1 _4 p( P
else if( nJob == JOB_ELEMENTORLORD_HERO )
6 q6 S! _' j0 C( F& s nPoint += 390;: n4 ^0 w+ v9 w W" e7 r- U% Y4 O' c
0 x1 G( I2 Y/ E, K- J1 H: W) |1 K AddSkillPoint( nPoint );0 Z: I% }* Y" s8 Q1 D9 L' D
m_nLevel = nLevel;: K+ h. T: U& R* F8 d" S' |
! ~" S: h# \! G SetJobLevel( nLevel, nJob );! P! C4 B4 _. S7 S" o- H
m_nDeathLevel = nLevel;
, N H* A a2 g" ^9 N9 c#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: S9 C8 C J1 f/ r1 ^
if(IsMaster())
. k3 |' @* `$ D {
d$ X" E. h0 _1 P+ D- E int dwTmpSkLevel = 1;//60, 72, 84, 96, 108& d& d/ c& y, S
if( nLevel > 59 && nLevel < 72 )! q! @* @$ m1 N! }" y; t
dwTmpSkLevel = 1;
( f* }# D8 _ D* Q4 V$ H: W else if( nLevel > 71 && nLevel < 84 )
! g) ?7 H5 Y1 z" c dwTmpSkLevel = 2;1 R+ j8 r9 A4 s4 x7 E
else if( nLevel > 83 && nLevel < 96 )# S7 z. I5 k: @ p) e$ J
dwTmpSkLevel = 3;
% h* L: P; C$ y P9 B$ x else if( nLevel > 95 && nLevel < 108 )
% T" S, h: i; }4 Y: r dwTmpSkLevel = 4;0 `, ~: `% L+ e7 s
else if( nLevel > 107 && nLevel < 120 )3 M& ]2 ~# j" q1 `2 w! a; x4 @
dwTmpSkLevel = 5;6 x0 E- _: T5 T" h9 F$ a
for( int i = 0; i < MAX_SKILL_JOB; i++ ) # J6 V$ ? J! w6 F5 ?0 m
{ + D# z8 Z5 E* |
LPSKILL lpSkill = &(m_aJobSkill);
; B3 H% M( C' t" h0 N, a if( lpSkill && lpSkill->dwSkill != NULL_ID )% c1 D% u' |- b
{0 n3 G" }3 c! a% ^- C% z8 M
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" V7 l: x$ n2 K* k. { if( pSkillProp == NULL )8 ?' g3 \; s) P2 Z0 E
continue;6 c @) S. a' y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 x. @$ H! J/ Y3 K continue;$ K, N0 T9 w7 r) X
lpSkill->dwLevel = dwTmpSkLevel;
6 k' e( g6 l( e- X }; a- B( E. D+ p$ e) p
}; Q( G& u. c) K5 h- {
}4 z+ j# ^. a% r$ Q" p {
else if(IsHero())3 L% j' H6 _5 l# D
{5 P- e2 F" I p" g/ m; q
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 L+ [4 [+ i' ~2 |4 c" b/ p
{ 6 l# ?; V; X2 ]8 a1 j
LPSKILL lpSkill = &(m_aJobSkill);
/ [9 G) {# O, P if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 {6 r2 d% U+ ?* F0 w3 O {
5 F9 I- L+ ?& D$ U8 U. y ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ v0 _9 s4 I# _3 R2 J if( pSkillProp == NULL )
" P1 A7 R$ Q) r& ]6 U5 k( c continue;
5 ]2 U2 n2 E' Z. Q6 ^1 p4 k% l if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ u+ Q) S) ]3 @4 Q1 ]' c
continue;7 N" p+ n3 b6 j; `2 v, S1 K
lpSkill->dwLevel = 5;2 W3 D' u+ G0 _
}/ H. G! S F( F1 D) s8 q
}
3 d* X0 V! D6 c }
% a' z# Y; b5 \5 V: [; l; X else if(IsLegendHero())8 U% { W; J/ _5 b4 x
{
1 i. c2 A; P) ^, l- \2 i; W for( int i = 0; i < MAX_SKILL_JOB; i++ ) * H+ r; Q A6 _ V1 S7 W
{ 6 T! x$ \" D. v) j0 T* B4 j
LPSKILL lpSkill = &(m_aJobSkill);# L. W& Y! B6 e* B
if( lpSkill && lpSkill->dwSkill != NULL_ID )
: V4 {7 t+ R7 V {7 p9 R6 H5 V8 w" T
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 Y0 ~4 `0 @, ^! Z4 H# I7 c8 D
if( pSkillProp == NULL )8 H ~1 D# Q. v$ i- u
continue;
# | t2 Z' C, ]* Q( ]. y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 ~1 W" s0 P) }) z6 V; o
continue;4 i$ u* F- _3 U8 v! G
lpSkill->dwLevel = 5;. I: p' s$ J, M! P" j1 T
}: W, j8 s, y8 X" O
}
* ^: e) g# g$ w) Y" n; c$ u+ E }+ ?3 W! C# ]3 l, ?3 M& I
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 \3 _% t8 Y1 z0 _* {1 W if( bGamma )1 w8 Z$ Y- a: A
{
' I* G' _' R& h, h: _ m_nExp1 = 0;9 G8 Y; X& Q6 i
}: X) S4 n( d% H8 v, U
, p# f; p* Q: D3 \5 g4 w ( (CUser*)this )->AddSetChangeJob( nJob );0 Q: I ^( j- ?# [! {
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );0 W* [7 l' h X0 Z
8 m1 ^ F( z9 R" w
0 a, d ~/ R3 ~1 C0 A4 {+ ?#if __VER >= 11 // __SYS_PLAYER_DATA
9 r7 X2 E$ @2 p# y' F g_dpDBClient.SendUpdatePlayerData( (CUser*)this );; M; K) H [7 h9 y! F9 n
#else // __SYS_PLAYER_DATA( r$ C$ V5 a) k# I N- n
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
$ T5 V8 t/ [% [ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
, I0 a( d* [/ S. F4 |% i8 q* Q! a4 ` if( m_idGuild != 0 )' B3 ?- b& |, X* w- W
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );2 L& o+ ^- P4 e a! U0 ~
#endif // __SYS_PLAYER_DATA$ l* Y6 L8 z$ V0 L5 W0 ]
SetHitPoint( GetMaxHitPoint() );
( a: ^+ s8 s0 r SetManaPoint( GetMaxManaPoint() );$ s0 z0 U9 F( ]6 z" ?7 I
SetFatiguePoint( GetMaxFatiguePoint() );
; p3 I, [7 ~) V if( nJob >= 1 && nJob <= 4 )
' V7 O8 A: C* }4 g {% z5 ]6 N6 |& F9 A+ O1 b
m_nStr = m_nSta = m_nDex = m_nInt = 15;; S3 z A. `7 Z
m_nRemainGP = 28;8 D9 t1 J( C9 k L3 I
}
6 @$ @0 H: {; O( P if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )5 P, y/ |# f. |& K/ ?* p2 C5 L
{
- a- ~ Z. B5 j* _ m_nRemainGP = 118;
9 B; Y( y, `, K: g //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
! T6 P6 N3 b1 w2 Q$ R m_nStr = m_nSta = m_nDex = m_nInt = 15;
; R/ {0 \" ], |) h e, | }
2 a' I6 m+ f4 _ if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
# r( }/ @5 o# j {- U" ?' K# p. C( C, P0 G
CItemElem itemelem;
^7 @' h* K$ B* G$ x itemelem.m_nItemNum = 1;
+ ~/ X% R% o+ G! h/ c7 M( a itemelem.m_bCharged = TRUE;$ y# f! ]0 g. Z; u+ o
BYTE nID;0 L5 l" J% X' f+ i3 t$ ^0 b6 q
5 o6 u# S7 Y5 {
if( nJob == JOB_MENTALIST_HERO ): x3 H* a% _# s3 l' ~8 K6 s
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;( X+ I9 Y% U2 }
if( nJob == JOB_FORCEMASTER_HERO ); y& q# F M1 ^' W' P. e$ u
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;# f/ H! O5 n/ C8 f* U2 K$ G
4 _. c9 [/ P* y/ O9 U ( ( CUser*)this)->CreateItem( &itemelem, &nID );* s4 ^4 [6 O! Q' d8 `
}" s9 [3 d5 S- H, F3 ^/ W/ W6 J% S5 _
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
* p. n$ e& g" G6 R ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );6 y# y5 u1 @* j9 Q- W
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );& D' f/ X4 {# q' e# z# H; [3 b
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 \0 g' @0 J1 X" d( Z9 S
( (CUser*)this )->AddTaskBar();*/
* ]/ S9 [+ ]7 V* A) L, t1 b, i ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
) Y9 S$ d( h- n9 {% P# r#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?0 Q5 w+ @* _. K
((CUser*)this)->CheckHonorStat();6 Y: C0 [$ e6 H. U6 Q# J
((CUser*)this)->AddHonorListAck();
% i( m4 x- [5 M/ y; c. H7 U$ ~ g_UserMng.AddHonorTitleChange( this, m_nHonor);5 b5 ]5 H- o$ S3 @! I
#endif // __HONORABLE_TITLE // ′Tà?
7 y7 b2 V% g- ^7 `3 A& y }
5 g% e: `3 N3 i8 a& T5 X# E1 X#endif // __WORLDSERVER
8 X2 O' `3 |& Z) M# p5 `! z}
* \' o& P* v3 l V2 g I0 _" S- ^. \: w: `* j; s, c
然后你进入functextcmd.cpp并添加以下( q& u9 u- [! ~/ C' p
" v. Z. N3 y' V1 e- u5 {; S+ C代码:9 v0 X8 j/ r" U% b* k# c1 b
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
1 O5 [# c0 z% h' h8 f4 H下面插入% B2 K0 [1 o3 ~: [( C9 |
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) }6 Q; b+ A& J
h& H! G% w2 u/ N' t: |
然后你去; j% E- h$ r0 r( w# }* k
$ G9 X, z* }4 d% ~4 A& C
代码:
) E o, _2 O w2 k8 P6 N代码
) Y; ?# z, [( n' \* Q9 PBOOL TextCmd_ClearPropose( CScanner & s )
/ _$ D7 t( B( H, Z/ V. ~& M{& f" }' A. |# P- v( r
#ifdef __WORLDSERVER
; `5 |, Z9 a& Y8 R. r' O0 ~8 E/ E CUser* pUser = (CUser*)s.dwValue;
1 u8 ? V/ _. q- C& p) } g_dpDBClient.SendClearPropose();" L5 r9 W' ^- |2 f
#endif // __WORLDSERVER
5 ]4 l7 | g. g2 l8 |! [2 O. \ return TRUE;
' B6 X* a0 M# U5 r9 z}7 Z9 o# H/ I- ?# X1 m4 w5 k
下面插入
( e. Q' {9 o$ ?; R. wBOOL TextCmd_rebirth( CScanner& scanner )
5 w5 P3 R6 G( d$ j' m" X% h. o% b9 B{4 }! v& S( q7 \# Y% q. S4 ?' _
#ifdef __WORLDSERVER
+ i+ b- J9 w$ o/ g5 Y% _CUser *pUser;
: I0 H. @5 P6 Z. Z2 fpUser = (CUser*)scanner.dwValue;2 w/ l# | F- F% \. i- n# P" A2 e
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())3 h, ?& r- K. Y9 O! b5 d
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);/ k4 c9 s; O% e, x+ v
else
# ?' }; `& y( BpUser->AddText("你还未达到重生条件!");
# `% n+ _1 |. A3 v#endif0 A4 H( x: C9 t! P$ \
return TRUE;+ v; o4 D5 s3 c1 x9 h) y
}
; l* X0 |8 H+ i4 @$ p
% d0 t3 W r- d2 t3 B6 n$ F
$ Y8 O8 z1 e b/ }1 b* X
6 R& }1 x: J+ |: i+ g' L
) N) B! d3 i! L3 z& Y f, [ g |
|