|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel* o0 U9 _! g' n* ^+ X% M; R4 _
% z, W8 J! y) {* H; p4 _2 n% N
Mover.h
5 N- @7 C& u8 H9 p8 F3 f6 I代码:
, H7 W& G- y0 p找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü0 \0 B/ }$ ]2 ]5 ?3 Z+ z* i
, s9 {2 i. E6 D1 u下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
6 w- r' ?) q9 v% U' T% X
% M+ y5 O9 o% {, S0 g8 e \然后你去mover.cpp添加' ~' {6 z; E5 `. i% A
+ @5 S8 N2 O- G' ~( I9 d9 K代码:: J. W2 `; A' X
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
! Q2 E. B) G ~. V" O. x{% `5 `" k! _) U0 I
#ifdef __WORLDSERVER+ `$ N3 H @3 O. t' L9 y6 A ?' N# E- s
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
0 s+ y7 G" T- D2 z/ m MoverProp* pProp = GetProp();
8 \9 w2 ~" a& x7 w3 ? if( pProp )! [" Y3 U4 D3 T% C
{" f& k2 Z' ]8 m P. Z% z$ W
if( nJob > 0 && nJob < MAX_LEGEND_HERO ): P9 d9 A% T4 |+ ]- W/ U
{5 d0 x5 h& }! i5 f4 H7 d( B
AddChangeJob( nJob );
# j ]1 v/ P I. @" H }else{7 S) K6 A5 d$ O3 o" t6 g
return;# M. _* x( u9 ^
}! H- E: E, I; u; A9 R# V
int nPoint = 0;
8 Y' M. B( M5 X( ?) P/ i Z! d3 G if( m_nJob == JOB_MERCENARY )
6 f6 ^- X) d( c! ?1 u4 A9 o nPoint += 40;) P6 A+ U+ p2 ~+ T
else if( m_nJob == JOB_ACROBAT )
6 h! K5 M! N, K+ F: _- n+ X nPoint += 50;
: _( w7 y2 c2 A+ \+ i else if( m_nJob == JOB_ASSIST )0 Y6 W7 n5 z3 M/ t6 b
nPoint += 60;. ]: R9 @* M3 O/ O! v6 M9 z
else if( m_nJob == JOB_MAGICIAN )
1 b0 I# v1 R! \) K5 J nPoint += 90;8 k6 o3 V+ U7 f- {& z
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
9 m* v" f% v& j- ]3 q nPoint += 120;
( ^, u. M% m. A4 i8 [+ s8 K+ }$ X else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )- [' ?8 R, h; b6 l# {5 F1 U* q
nPoint += 150;; Q8 D$ z% v4 R+ A4 [. b
else if( m_nJob == JOB_RINGMASTER )! I) P9 d4 p: W8 ?( H, a2 }. m. M
nPoint += 160;! r v6 @( `$ N8 }1 x; y- D
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
{$ {; \6 E3 U" v# g9 G6 M nPoint += 180;7 {1 s2 j* ~; }# K- x
else if( m_nJob == JOB_ELEMENTOR )( ~8 J7 U1 @6 V
nPoint += 390;
; z1 L" \; j& d P1 j3 `5 H( \ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
$ N% u% ?% @1 Z a( c- ` nPoint += 120;( k5 L5 t! J+ M' P a
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )# W9 E( g2 y! t; y8 `
nPoint += 150;+ g: u. g8 _( \, }" m# n0 B
else if( nJob == JOB_FLORIST_HERO )3 H: H+ L2 e+ w9 f
nPoint += 160;& x0 d, x/ ]) F
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )5 u; v9 v) _4 \6 q
nPoint += 180;
9 u, [# R! e' V) n else if( nJob == JOB_ELEMENTORLORD_HERO )
* L, y9 D0 a! O+ \( B; y! I nPoint += 390;8 _ C& Q6 S& G5 G) H
) b/ G B( C4 `4 r AddSkillPoint( nPoint );5 E( Z. U; j9 e( A) B% A$ @/ h/ X
m_nLevel = nLevel;% q2 ?8 E6 q; {, `2 B+ z
7 L1 h. V" ?: W( A
SetJobLevel( nLevel, nJob );
6 x- _4 i9 `0 B. U m_nDeathLevel = nLevel;
' O( S6 k0 f/ z+ |: t* r- X#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
* W# H0 g7 y; o Q+ g& J0 w if(IsMaster())
* f) S/ l0 i9 X& k {
% ~' d" |5 @# c0 w0 o3 z( v int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
9 _2 H& U1 l( [! A+ m% a& W: L if( nLevel > 59 && nLevel < 72 )
3 o* n# G) U' D) ]2 Y+ z& l9 v, ^ dwTmpSkLevel = 1;+ F: l8 }# W3 o3 H
else if( nLevel > 71 && nLevel < 84 )' B# d2 R* [/ w
dwTmpSkLevel = 2;
/ _: E$ e+ I( ^# k else if( nLevel > 83 && nLevel < 96 )" a1 `! h2 V C- E
dwTmpSkLevel = 3;7 K8 N" |( t; Y9 \! R5 @
else if( nLevel > 95 && nLevel < 108 )
! _5 r% \7 f: E6 i. K6 V7 P5 X dwTmpSkLevel = 4;
8 F: Y: A0 K: W2 ?7 M else if( nLevel > 107 && nLevel < 120 )
5 }+ e0 @7 @- B$ i7 D P. K# X dwTmpSkLevel = 5;0 a' T7 X+ q( w9 _2 V( m/ K
for( int i = 0; i < MAX_SKILL_JOB; i++ )
" _5 _. l7 H1 p4 C8 o6 M9 b {
0 D8 P1 U4 {/ u$ o$ k( x$ M LPSKILL lpSkill = &(m_aJobSkill);
! p& T- K. g) Z3 W if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 [' p! Y, R% i/ D" }) M {
4 n6 j* {0 X4 i: K% H ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % F1 g2 Z( q: B% d/ {, D/ |8 @$ a
if( pSkillProp == NULL )
- C6 r6 U7 H! |! |- _, m# X% ]( y& p continue;
* F, P6 |+ ~6 _& ]& ~# r" f; n2 G if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 V W9 W. K* ]7 p
continue;" p9 W9 I9 n9 z- y# R" o5 N5 T+ A+ Z
lpSkill->dwLevel = dwTmpSkLevel;2 t, `& ~9 q, ~3 ?
}* ~; p+ B& m$ [! ]6 v- b. F: l7 ]
}
" W, d# X% _2 I4 t# c, c }
4 H4 v. @1 W6 ~' ~' {: s else if(IsHero())
$ `7 y. |- U' C4 ~8 ]/ r0 M {
( P- s+ v& h/ e N5 s& ?3 ^ for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ e2 B5 s. M: `( ]& G2 p { 1 X8 V# c" F7 W) K6 k" ]
LPSKILL lpSkill = &(m_aJobSkill);
) n2 j# u! B% K/ U if( lpSkill && lpSkill->dwSkill != NULL_ID )* p% [% m) f# {0 [) _5 [/ J
{5 s, h- a C7 P0 @$ Z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" p2 ]+ {& @$ m3 z# S, t7 S if( pSkillProp == NULL )
/ U' h/ d' g* N4 b8 ? continue; n j& a5 H) x* n
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 l2 c& z' @ ^ _" ]0 Q continue;
: c2 T5 q8 I! {, B/ T" a" |0 d; c lpSkill->dwLevel = 5;
" J, D2 v5 W# v6 {9 y) D4 ^ }, q( ]; ~7 h N3 S% l& `" i
}
7 K& a1 g7 D5 b6 u! I" C) C2 q1 | }( L6 k* I9 y0 z
else if(IsLegendHero())" I' Q- v. u; V8 m1 q
{0 f: k6 A" P8 E4 O
for( int i = 0; i < MAX_SKILL_JOB; i++ )
( [7 e6 a# x a. P {
7 c/ Y% p+ r) G2 Q/ u- A& f LPSKILL lpSkill = &(m_aJobSkill);+ C. j; q5 A5 j- A" [' F( B
if( lpSkill && lpSkill->dwSkill != NULL_ID )
" v8 j# c" R: |1 M# r) V. R% {$ ?. U {, c4 z- L0 q r& g# T/ t' x
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ a& M- {* k6 t% b2 [ if( pSkillProp == NULL ): k9 }; j% M& x8 j( B) O8 \5 Z a
continue;9 D. w% C" P4 G a+ E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER). [$ a" X3 Z9 ]( a
continue;
k$ S4 R2 ?$ K6 z6 g+ @ lpSkill->dwLevel = 5;
$ r7 _1 r+ D+ ~# z* K h1 h }
, o: |; l- k. a: ]; e }
4 [* z l# _9 P5 K# H% F2 i0 f9 e }: h# \; r w4 ^* ?# a
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans o' k# g) l) J/ p, n6 l8 R1 w6 a3 I
if( bGamma )2 S& O4 @3 n7 ~; s$ v$ o
{
! G8 Y8 X" R' J. r$ w3 D. R m_nExp1 = 0;
# w% U7 i. M ^$ `7 Z }
$ G; `) Q2 e" p6 M. e, j4 J
8 y" P/ l9 b! @: E, e$ y, { ( (CUser*)this )->AddSetChangeJob( nJob );
7 `+ u: o5 V0 a: O g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
: M8 g: h! X) V, X4 U, `5 i6 ~9 N \3 [+ C+ I8 C
8 N5 W' y2 V8 J4 e, v" K8 k
#if __VER >= 11 // __SYS_PLAYER_DATA
5 b, R+ s3 w4 t g_dpDBClient.SendUpdatePlayerData( (CUser*)this );( D- T7 |: _* B$ K8 ^
#else // __SYS_PLAYER_DATA7 q. t7 ^( R0 q! x
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
0 _6 u9 Z- f6 h* ] g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( D `/ x" S. E0 W ^! C1 Y6 i
if( m_idGuild != 0 )
/ T! J3 A8 Y# s3 l g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
% C) {0 ?# `$ C#endif // __SYS_PLAYER_DATA3 w9 f3 F1 m% [
SetHitPoint( GetMaxHitPoint() );' ]: Q' ?1 K" x$ {( C
SetManaPoint( GetMaxManaPoint() );, ^, _% F' A ~6 D. c
SetFatiguePoint( GetMaxFatiguePoint() );
& z/ @! M0 L7 H+ N, z if( nJob >= 1 && nJob <= 4 )
8 q9 u7 n. z B: ? {) C0 A- Z7 t5 Z, k* A9 R" R
m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ k7 r( z4 }6 M m_nRemainGP = 28;& s8 R+ d5 c7 m/ a8 q
}' z- H+ a2 a; I, z5 X, o# F! m( I
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
5 H/ c% D& G% R2 t {
- [; S- z+ k6 p9 k1 R( Y! ] m_nRemainGP = 118;* v/ G4 N0 r8 |- l3 v4 r- Z m2 }9 a
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;7 e1 ?) B8 q$ T: p+ L0 |7 A
m_nStr = m_nSta = m_nDex = m_nInt = 15;0 q& W' v% Z+ @: h0 f7 n
}5 p7 g, i7 q8 u3 d1 i* S. `! r
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )1 u$ l0 v6 o: d ?9 p
{
0 Y) c1 O: Y1 a' _- K/ B- k CItemElem itemelem;
; `( K1 J$ Z9 S. L) q/ t itemelem.m_nItemNum = 1;3 n) q3 [2 O: @/ w C! x( ~
itemelem.m_bCharged = TRUE;
. d; w: J7 F) p# ^& ] BYTE nID;3 M9 ~# ^" K4 g
E% k5 r( X6 h+ t9 H. F
if( nJob == JOB_MENTALIST_HERO )" {7 J: F9 ~; G- ]- |/ O
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;9 V- T8 C. M! r6 x% x; V
if( nJob == JOB_FORCEMASTER_HERO )
* j. Z8 y ]: X- t3 j+ P; B itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;. R0 I T7 ~( o w$ Z& H' A& V
- n! M" j, H. O, x2 Z6 f' E
( ( CUser*)this)->CreateItem( &itemelem, &nID );
- x6 D% A- J3 R& \' u5 b- g+ ? }
6 } s) ]* F. n6 u- o2 d* y) c g_UserMng.AddSetLevel( this, (WORD)m_nLevel );$ V9 g! K, ]" U/ j
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );' D, f* D6 ]* z7 {/ E. F" O$ d8 W6 Z) Z
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
' g: j& [' k1 V# R' ?3 K% o n$ m /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
4 J F- j4 r9 Z5 @ ( (CUser*)this )->AddTaskBar();*/
, H- o$ n# b& l& O+ a5 f- X ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );8 T, @, W0 \, X' T0 X5 `! ?( ]: r [
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?. ^2 O" s( _. b( \
((CUser*)this)->CheckHonorStat();
- I) q$ J c9 D ((CUser*)this)->AddHonorListAck();
. i9 V- m8 n0 k g_UserMng.AddHonorTitleChange( this, m_nHonor);0 A- P8 V9 B/ B/ c# q. d/ i
#endif // __HONORABLE_TITLE // ′Tà?
' r' \5 a* W" I }& x7 ^, e4 [( Z7 X* t8 M' r
#endif // __WORLDSERVER
8 r6 J" d4 L$ @, _/ s}
9 W* y9 a6 U7 z; }/ s
# l! H0 @, G5 x* S; F. T然后你进入functextcmd.cpp并添加以下0 C. j5 \8 ^/ Y& ^( C& |. D
7 ^7 t+ z4 {2 b/ L9 [代码:! _0 y. O( T0 t; n8 l# z% k
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )% p0 B/ X2 k _4 ^5 S# |5 v
下面插入
0 G7 ^. k, ]( A- _' vON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
! v r& ?5 C7 I% B: W0 L0 o* w2 g
然后你去
! ^- N9 E4 a) S+ j; S) t% O% ~1 d1 H
代码:% U7 D# [! f' J: Q% c
代码, d* o9 B" z' I* v4 n) q: `
BOOL TextCmd_ClearPropose( CScanner & s )2 G$ S2 o0 b+ b
{
1 X. q! V3 V' t. h#ifdef __WORLDSERVER
/ V' s2 a) u2 ~7 M0 t, W1 k CUser* pUser = (CUser*)s.dwValue;
4 {! z! J# z' R6 v" G g_dpDBClient.SendClearPropose();
+ L. g3 E' e0 t; v% S#endif // __WORLDSERVER% [6 L9 Y5 b6 `) r; d$ ^" ~
return TRUE;
7 X# i9 m+ U& B: g+ m) z}6 y0 K$ a2 w% e4 e9 H" ?% c0 H
下面插入
8 h6 Z8 j) o- [ n D; `BOOL TextCmd_rebirth( CScanner& scanner )
" m' c+ N! T+ h9 h4 A1 ?- r{; M$ v' P! i8 G' S7 _' t4 A
#ifdef __WORLDSERVER. E' E' N7 E& K: J! q8 P* ^
CUser *pUser;
3 D! J4 C, Z" @' d OpUser = (CUser*)scanner.dwValue;
' j3 |. Q2 x) ]# h9 Q) a$ aif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())% V" n& O$ C. F3 a9 L: Y- p
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);8 I5 m' J. M& c) p3 z
else
7 u9 p/ b+ e: |1 d, @pUser->AddText("你还未达到重生条件!");- D2 K" m, n0 N7 W& [8 k e+ H
#endif9 w c; K y0 D1 v- R& E5 ]
return TRUE;
# E, ~1 ` |" q- O} ^% W$ M5 l0 ?, _ y
, ]. X, m5 J0 Z! W! R T h
6 g$ V% ]+ J+ ^- g; ^& X- f! M: u$ P0 o& f2 j5 y* _( {% @+ S
k" H2 y% s) K
|
|