|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel2 w1 g: n! b2 N0 `% G+ n
1 K1 t" S; \, a5 b, L1 m" O
Mover.h
3 I" J; y8 N+ @7 `1 i代码:
' f/ c) O% C3 c; H) |/ ]5 L! W找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
# x3 U- x: Z& C; j8 N, Y# d6 O, e
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; + @" B8 f2 N/ s; @5 {2 d& w' U
6 e& a9 S$ I* q4 u$ j然后你去mover.cpp添加
W0 `# M/ L1 c% l f0 w6 n) y2 F2 S4 V% y. }
代码:# F+ } X9 N0 o3 ~/ ]
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )% ]) @% h3 [' ?
{3 `. [$ r- T2 B- r, G) p1 N5 }
#ifdef __WORLDSERVER
: @+ G' ^( W! n% |* S. s' [3 a% n // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
2 @' h, o8 l7 R+ K& C; R MoverProp* pProp = GetProp();# Q$ o5 t2 w' u' m
if( pProp )
% r7 [5 q# N3 w- [7 y/ p6 J {5 \( w4 [- G1 E) g
if( nJob > 0 && nJob < MAX_LEGEND_HERO ). Z$ Q! N: N$ S
{
4 A0 D9 p* T8 _; \ p4 ?" G/ R y AddChangeJob( nJob );
" e' V6 m5 ]) a7 ~ ~: H' o }else{1 g6 M5 x! n4 V) N& p
return;" a9 @% ~0 p5 i' d$ C3 n( h" @
}; L1 W z3 d3 D
int nPoint = 0;
2 P& A; D! Z9 K. d6 I) J1 [- ] if( m_nJob == JOB_MERCENARY ); I' W/ H: a" H
nPoint += 40;
) Z3 V1 K% X; G else if( m_nJob == JOB_ACROBAT )
' S4 o7 k- L6 ] nPoint += 50;. m3 Q. L6 ~6 {# ^* ]! A$ _8 a
else if( m_nJob == JOB_ASSIST )
2 h9 X) i) f) P9 `$ c/ M nPoint += 60;% I r! M. c( s
else if( m_nJob == JOB_MAGICIAN )
& ~# x& l* H% y2 a+ s4 _0 h( | nPoint += 90;
) w* P% t; Q9 ]4 K$ X else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
& C. a! r7 @1 c: h9 X nPoint += 120;
' [2 E. Y6 O4 ]8 W; p1 o* T else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
5 X! S% c$ d7 i5 S nPoint += 150;
! n3 q3 ^0 F4 w; T, l/ u else if( m_nJob == JOB_RINGMASTER )7 E( k' b' S9 J+ z/ T- V
nPoint += 160;
, x9 r& W/ y2 @4 e u1 ~0 w else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
- t7 [, A/ x- d0 T0 N nPoint += 180;
! z6 I2 m6 J6 ~. z8 B: a else if( m_nJob == JOB_ELEMENTOR )% ]6 U# p |8 H: x
nPoint += 390;4 X, A3 e. v5 g6 u& R, R& d8 P
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
, q) x7 \& E9 i. Q5 L& T& _ nPoint += 120;
8 G4 T1 V. q& b& ? else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
, F) d4 \; @ | p' x nPoint += 150;
8 b1 q+ C+ j0 \6 G: n0 [: @ else if( nJob == JOB_FLORIST_HERO )
. M( h V- r3 O1 u+ w nPoint += 160;
7 r7 T% e* `7 r* s0 c; m else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
3 O& M6 H* V: s1 X" F: X( | nPoint += 180;
, L+ t4 G0 K4 v0 Z% h else if( nJob == JOB_ELEMENTORLORD_HERO )* P2 r+ c8 U% h7 [4 W* t) f
nPoint += 390; C8 m; C$ V I, H0 A
0 ?8 c4 d/ G& ~ L% C, \% d' i
AddSkillPoint( nPoint );0 j, \* w. l6 p7 V) H4 G0 L0 f$ J
m_nLevel = nLevel;% q- k$ [# O& U; F6 t1 z& g
, U' ?' I2 @& }& K
SetJobLevel( nLevel, nJob );
! S" Y. ?- f4 V: [5 {+ d m_nDeathLevel = nLevel;
, \ \+ A5 ~$ Q" l0 \' a/ I/ J" ?#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 H; t. O) N" I. W5 D, e
if(IsMaster())0 y2 m! u6 L( u; Q F; T* ~
{9 g+ o6 J$ I" T" t# U) H7 @& g9 U
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108) l5 y2 x) O- q/ X3 R( U
if( nLevel > 59 && nLevel < 72 )
! Y) O5 Q$ ]. `% Z! U- \1 q( v" A dwTmpSkLevel = 1;
& P& `0 s9 C; Z else if( nLevel > 71 && nLevel < 84 )5 J# w% a: i' |
dwTmpSkLevel = 2;
5 N, H4 n; d5 B: m+ C else if( nLevel > 83 && nLevel < 96 )* e6 U X: ^& W5 u# f
dwTmpSkLevel = 3;; Q ?9 W9 {2 O2 L4 H( e' N% X
else if( nLevel > 95 && nLevel < 108 )9 M5 ?& i# e/ y
dwTmpSkLevel = 4;
5 _6 I9 c+ X2 o- _ else if( nLevel > 107 && nLevel < 120 )8 E& W, s- P/ Q7 u* Q5 _( X
dwTmpSkLevel = 5;8 u0 I% B% e R
for( int i = 0; i < MAX_SKILL_JOB; i++ ) * o) j3 Z& v( n
{ % G+ f7 p/ d4 u0 i% I
LPSKILL lpSkill = &(m_aJobSkill);4 e" \) q+ A6 V
if( lpSkill && lpSkill->dwSkill != NULL_ID )
( h8 d; \# p. T# ? {) h8 l/ E; Y8 A4 ^; a& z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 M7 V2 k. A& s: U& ] if( pSkillProp == NULL )7 o8 I& ]9 [7 j5 E* F; H' ^4 k6 b
continue;1 ]) l5 \9 y: C/ b- R( P0 Q
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 Q0 d6 ^2 k9 b9 g; J continue;- z% v- }& C% i( Z! l+ S# ]
lpSkill->dwLevel = dwTmpSkLevel;
- j( V \+ F) b; I/ y# Z( F }# e$ `& B! H0 h, W6 H" [+ X8 E
}
* W8 z. a! l, h7 g& Q6 }8 |$ s" t }
' I8 o% l$ s, a |/ `: O$ z1 K- H! B else if(IsHero())2 }3 y5 a% r1 x9 X
{
; Z' c. v& N# Y for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 f1 C2 U# z& Z5 p, o6 M {
+ r* ]- k' l& ?5 Y LPSKILL lpSkill = &(m_aJobSkill);
) y9 g+ ^- Z, d2 V6 g if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 [. T6 o1 M8 b- ^+ C3 p% c {
! i2 u2 I+ ?: n, d7 O7 R6 W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . ^7 j. ^" H C! S X {9 a
if( pSkillProp == NULL )( W. a+ n4 s/ r1 w }
continue;9 v6 ]4 |. |2 p. I$ _) f
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 K- w# f }, Y1 s" v$ _$ } continue;
, I/ L' y3 a* d: B! U! `& U) T lpSkill->dwLevel = 5;! a' ^- l* d4 O! V( e
}. ? a9 |. H/ P, k9 z0 o
}
' _0 |; r5 W% Q/ V( V }& n1 s7 S \' [6 R* m7 a3 q
else if(IsLegendHero())7 r- O& W* |. q2 B9 }, H- u6 R7 {
{
2 A \& ]3 y7 l for( int i = 0; i < MAX_SKILL_JOB; i++ ) j, l4 B9 d) w0 R9 {" C$ J0 N
{
9 \% V! u$ R# s% U6 V LPSKILL lpSkill = &(m_aJobSkill);
0 P- `8 z! r2 C- c7 _ if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ i, R# E1 y7 y6 {; t- k3 D {
' G% A5 X2 K& }4 f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
0 n) k' q! U/ Q; |: _ if( pSkillProp == NULL )
0 q0 [( Q4 B ]- {3 W) Y& g0 F continue;
) ~0 f( l; i0 f; F8 N- |8 j. Y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 n" O7 O, U9 t" { continue;+ G, B" d, I' c4 c, }, o m
lpSkill->dwLevel = 5;# b7 O7 l8 | J: d6 C
}+ |5 O# w$ a) S6 s! b
}+ i. w+ h3 N3 O# q
}
5 E3 q1 ]% N! [! t#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans* P P5 l* O7 u3 s2 f
if( bGamma )
; s2 m* ~! t8 v2 P) F8 w {" O' F, u. E& R( [8 A' }: U% X7 Y
m_nExp1 = 0;
; U1 M0 H. @3 ~' E' v }- l- `, M( s5 ~2 D: \. J
* O5 o7 {5 ]' H. P, ^9 U
( (CUser*)this )->AddSetChangeJob( nJob );
$ w8 U8 D4 V0 ^ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
" a/ f/ L( e9 O5 f8 ]: w$ s+ |- s
$ O: K/ ?/ \! v/ K' {& B- n) `
6 e: u Z4 A: c" ?#if __VER >= 11 // __SYS_PLAYER_DATA
* u- ^& k5 o8 i5 S! R# F2 Q$ } g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
3 l2 `3 ? J; h1 t7 L5 P#else // __SYS_PLAYER_DATA" s" O4 \. g" K# d( k
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
7 r* Y' Y* ^6 p g_DPCoreClient.SendFriendChangeJob( (CUser*)this );& ^8 B3 b' k. ^! C
if( m_idGuild != 0 )
1 j/ O# r. q7 P5 L! m g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );) h d* G! d5 B# s" ?7 M: Z
#endif // __SYS_PLAYER_DATA
, n g: @, _) j1 U" v+ K SetHitPoint( GetMaxHitPoint() ); i$ B5 {' z; L6 e2 ]
SetManaPoint( GetMaxManaPoint() );
% b+ W5 q5 }) E- _; V. B SetFatiguePoint( GetMaxFatiguePoint() );' O2 c! Y3 K: {" v
if( nJob >= 1 && nJob <= 4 )
: j1 \. P/ U, }6 N8 }* } {9 e1 e! l" j' a( c+ L1 w9 l3 A4 d+ r
m_nStr = m_nSta = m_nDex = m_nInt = 15;
& R' f, s+ g1 I- P5 Y* G* l m_nRemainGP = 28;
0 `: j. E' t# M* s. C4 @- \5 e }5 |3 Y1 U9 H; a4 u0 f! B) y" p5 `" ?
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
- x# H5 ^* ?+ n! h* d+ y {
, n& f; [% N& D0 K m_nRemainGP = 118;4 Q* I2 w* k. c- [. ]( {; _% l
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;+ _7 W, u" t, R7 r: e
m_nStr = m_nSta = m_nDex = m_nInt = 15;8 ^9 X, g' `4 b/ N6 S! V& ]
}/ ?$ Y- q2 F7 i% o4 n+ h$ U
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
) U+ e Q) w" u5 M. Y {
' M% |3 u" w" r2 P: }" J6 \4 q) j CItemElem itemelem;
, b7 \3 J+ r- X1 ~' y itemelem.m_nItemNum = 1;/ u4 j6 K$ K- N x. u0 d3 O0 x) F# K7 B
itemelem.m_bCharged = TRUE;. L! a& r6 _( b/ ^
BYTE nID;; Z2 } j* [% F$ y
% j+ J" \, S9 s if( nJob == JOB_MENTALIST_HERO )4 }6 E4 S; V" a4 q; J; i+ u
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;# y0 c" ^' F, Y! R
if( nJob == JOB_FORCEMASTER_HERO )% P" _. c# j4 O0 d) y. o
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
, M7 X% V6 B4 a3 `$ V! c3 k: R' x, x1 m+ C- e' b0 V2 I/ r
( ( CUser*)this)->CreateItem( &itemelem, &nID );
* P% Y" b* x4 t) O }
% \. w1 q6 F7 } g_UserMng.AddSetLevel( this, (WORD)m_nLevel );4 |. s! Y+ m* T B- H3 I
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
3 d' W& u6 |2 ?4 `& ~- M! D5 y ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );4 `6 z, X: n, C( H+ ?" l
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );1 |1 v, y/ Z) H/ D5 _
( (CUser*)this )->AddTaskBar();*/& X6 h* n, l* R4 k0 V: n% q* I R
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
8 N* k/ b. O9 l; S- M7 h3 I( V#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?' x- g3 D2 X1 c X. c2 y. u
((CUser*)this)->CheckHonorStat();. w: F; U' ?3 ]7 {: u
((CUser*)this)->AddHonorListAck();
" D4 T# b. k1 I: d g_UserMng.AddHonorTitleChange( this, m_nHonor);( z$ ~$ J! K8 }/ F& q
#endif // __HONORABLE_TITLE // ′Tà?
* x* \8 q. n0 t }$ c" u& p) N, B0 C3 j" n& b; y* {
#endif // __WORLDSERVER
" K% s# z; m% G2 O' S \}
: [' L. f4 E8 }" [" ]* ^7 e: _$ M2 P& N# K K
然后你进入functextcmd.cpp并添加以下
N7 f* U( Q' d5 w) S; r! |% ^; Q
' Y6 e q, S& K' S代码: B5 L: f5 W3 {; Q1 k
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' c, O$ [& L" V9 D下面插入6 N# i6 }# T$ V
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) / C; n) m: B' O2 b
q8 N6 H" J' L7 i然后你去
% ~, k! n, f8 A( V1 C8 ]5 a0 U' G- r' K: ?; `* g+ _; s
代码:4 u0 [7 \3 z$ {9 S3 {5 T& S8 y& ?
代码" x) f- O9 S" f8 }, a$ ]
BOOL TextCmd_ClearPropose( CScanner & s )
3 n( X$ n% ~) O8 z& q# e0 g{
# I7 Q+ [' F* `* D#ifdef __WORLDSERVER
, p- N( @4 A3 b CUser* pUser = (CUser*)s.dwValue;
8 a5 |5 N9 S4 `* d g_dpDBClient.SendClearPropose();
+ e) X X# {( @3 X- L/ \ j#endif // __WORLDSERVER
/ t% y c2 U' t% @( @ return TRUE;
7 |9 w( g( K1 a+ U) M7 c1 W} l8 s* c' k2 j8 |- v
下面插入: Y1 I* M; f2 S; o; D8 W
BOOL TextCmd_rebirth( CScanner& scanner )
$ x8 Z& j" H7 X7 n$ d9 i9 d{' q* B! _; z$ \ z" c+ j7 ~
#ifdef __WORLDSERVER
7 N5 }7 ~. p' A; q) e t9 NCUser *pUser;, z- c0 l5 E$ X2 K4 ?
pUser = (CUser*)scanner.dwValue;
% n o% f1 d$ o: ~4 D" Xif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( V+ n% z5 Q. \4 A* P QpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
0 f& t1 d, H3 F9 W" Celse8 K& i& k" S. c9 f2 L
pUser->AddText("你还未达到重生条件!");
3 U u- t9 h; E. R8 T& N#endif
. j: p& P: F& U$ o' O/ A8 f; Nreturn TRUE;
) }/ ^! g& z( f( T/ P}
8 r! j: x) Q, U& |, R- a$ H9 K6 }
, W+ [; B) v8 f) |6 x8 L( n# p) D+ i" ~1 a& G0 j" V: m8 t5 `
1 |! X+ a& t6 H |
|