|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 p% Z1 x/ m8 q4 ^4 m
6 ?% |5 _# |+ A; \" X6 l/ ?Mover.h. S" h9 R8 U$ F, k5 m! N6 r
代码:
7 M$ Z9 {8 O" F9 \找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü) y- u" K* P; U, C1 o: P0 s
' ^# C9 r) c. A3 S$ J
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
: e# f' c! F9 G+ b; }6 j. |4 S6 p7 X3 M2 A2 `
然后你去mover.cpp添加" D# B" T% x: G$ C
* e% J/ h Y7 b! D# f% I
代码:; c: {2 w8 N8 P/ N( ?- g
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ Q+ y. n, X# B8 W) P1 t( D{3 }6 n1 q& `; n8 q" I( e7 ~
#ifdef __WORLDSERVER
/ M: a2 R, U% W! y* N& O/ _/ `. ^ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
' L( D9 c/ D2 ^2 n' r MoverProp* pProp = GetProp();7 U1 S2 }4 N \
if( pProp )- W8 r, p5 `& T0 l5 R$ a
{
+ x- v1 G0 }. j% t* n5 ^9 i9 h if( nJob > 0 && nJob < MAX_LEGEND_HERO )
Q0 E1 V: q( j& z% m) l. ` {
/ l, Y* A) r( R# X AddChangeJob( nJob );. T) {5 S4 D# O/ M* d( s
}else{! k. b/ S+ M! T) |
return;
* d$ G) v. d0 B% f }
. G- @) D) J0 {4 j int nPoint = 0;# i( X2 ]! T% A% I/ S+ S, B
if( m_nJob == JOB_MERCENARY )
& l& U. k" J: L" w# O nPoint += 40;
5 Q1 s$ `1 v: _# ^ else if( m_nJob == JOB_ACROBAT )" P4 f6 @. l+ m% L. s( x
nPoint += 50;
# Q; s0 J {, y H7 e else if( m_nJob == JOB_ASSIST )& C- h. S- K& g) f; w
nPoint += 60;
( P) o8 D# L; q8 F else if( m_nJob == JOB_MAGICIAN )8 w, C. ^1 I/ K
nPoint += 90;- |- X0 _' D$ Z& ^4 K- {0 ]
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )/ N j! b+ ^% `* o) ]) X; g% \
nPoint += 120;
8 F' A. J# G: N else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )# h M0 H1 d+ Q- j$ V, L
nPoint += 150;
, I* S: x. l6 Q: ^& w else if( m_nJob == JOB_RINGMASTER )) F l4 t" J6 S: Y
nPoint += 160;
, m& k$ E4 W2 T* y! ^/ K else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ). i2 r! C$ E0 |9 e7 C
nPoint += 180;8 z0 R% B+ N% S' n# _1 R7 {
else if( m_nJob == JOB_ELEMENTOR )* G' u( Y4 p4 G- L0 M% M4 S, S) d
nPoint += 390;
6 F3 `! b0 ]* a- r+ d0 S! E else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
# V* b o) S f5 b, r6 _ nPoint += 120;
5 o" R+ h J+ A( v else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% n/ U% X4 l: a7 q3 _ nPoint += 150;
+ i0 q- x% g# O8 N4 _ else if( nJob == JOB_FLORIST_HERO )
7 B0 _) c# l2 d/ M4 k) d nPoint += 160;
1 {+ ] S/ ^* g% R0 g9 d else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ). W2 A: E w- E$ f3 j5 t
nPoint += 180;& k' W+ g/ T( U; E$ p
else if( nJob == JOB_ELEMENTORLORD_HERO )) k5 D0 b$ L2 K. Y' n, A% P: H
nPoint += 390;
) K( t/ G% t* q% C8 ~0 N
/ Z" t7 Y; a$ ?$ A/ N8 Y6 f AddSkillPoint( nPoint );
+ u3 `5 Y: M }" L m_nLevel = nLevel;6 i }( ?! `3 K% x5 u
; m% b) t) `% F3 f& l
SetJobLevel( nLevel, nJob );( I, ]. T2 S# ?: ~8 O
m_nDeathLevel = nLevel;
2 x. D* o1 M+ a#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans. l) [4 ?! L0 i/ y6 P
if(IsMaster())
. Z+ X" b0 h2 O1 ]7 F- u* e {1 U2 O0 B: r# k. o0 z
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108, g- X8 q' D3 w3 F V% {% a
if( nLevel > 59 && nLevel < 72 )
5 V- p8 z* c6 a Y& J dwTmpSkLevel = 1;
7 S/ \& c& g/ \/ f o else if( nLevel > 71 && nLevel < 84 ); H* O* j, v; I: L/ U
dwTmpSkLevel = 2;
; [" Q* Z3 q; X- d& a' H, I else if( nLevel > 83 && nLevel < 96 )8 K/ Z( }7 e+ O
dwTmpSkLevel = 3;
- @5 S: o+ P8 ^) r$ R1 M7 j else if( nLevel > 95 && nLevel < 108 )% N% X9 Z1 Z' s( g6 E, P+ u: M
dwTmpSkLevel = 4;' W, B9 `4 d" T
else if( nLevel > 107 && nLevel < 120 )
! `0 i X2 J3 `* C! ~ dwTmpSkLevel = 5;7 d0 f8 w4 _" i; u* `9 T
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! [" ?/ Z* C& I+ D& U8 f
{
% Y7 E' z$ J: |9 F; \% d LPSKILL lpSkill = &(m_aJobSkill);
+ ]& p" L. N% q/ L5 M if( lpSkill && lpSkill->dwSkill != NULL_ID ); P' ]8 i: z0 N+ D- n9 \
{
3 v/ P' L @3 G" S( ^- e4 P- o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ f" t+ o( a! J) C if( pSkillProp == NULL )! a) a o% H& A0 A* O ?
continue;& q! N- y0 W- T. M+ \* o/ M+ v) t4 I
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" P/ i8 W- ?" t& j" r continue;2 G% c5 h0 `3 L/ f4 R9 Z9 l
lpSkill->dwLevel = dwTmpSkLevel;9 F: A4 x! Z) g
}2 O. A! n+ r) B% o/ V) A: B# z8 ` c
}4 _6 o0 ?, r/ O+ a8 i- p% H
}6 R y3 ~1 B/ R# g3 Z! d
else if(IsHero())4 s+ ?* P9 j5 S0 a/ Z
{
0 z$ q* M) z5 `5 ~. G: g for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 p+ A. f7 \+ C& Z) b h
{ ! G; l `' p1 X5 M6 }1 t
LPSKILL lpSkill = &(m_aJobSkill);7 k/ r3 H4 o" I
if( lpSkill && lpSkill->dwSkill != NULL_ID )' f1 t# f" x }/ k) B$ X) h
{( v* _' ] ?3 s6 u/ g$ ~8 t- G
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & Z! M8 U; w9 I9 n! ]* q p
if( pSkillProp == NULL )
0 M6 y: p. x2 Y# k$ f* } continue;6 |% ~" H# X- {, [/ y5 u* B; E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. @( ]0 A# w6 O( @% Y continue;
' Q. R M. v' k& L) l0 I! q' @* e6 ] lpSkill->dwLevel = 5;) ^3 Q6 k5 v6 ?1 q# v
}7 s2 h. _- w$ ?4 f( E
}
5 f( E) Z& f0 L }2 j1 z" R6 J- M9 G) r9 k8 J
else if(IsLegendHero())2 m# {5 P2 v7 ^: U( o% {: U
{( K/ Q& U) A3 A; l
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( Q5 W7 U5 d. T7 k8 Q( S
{
! W: Z" O. S! \7 L% U( K& V/ T/ C LPSKILL lpSkill = &(m_aJobSkill);
4 z; f/ z/ L. R if( lpSkill && lpSkill->dwSkill != NULL_ID )
! ?2 U; h: | R- A {
6 o# [2 a/ m, l3 J# v. U ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. f! a$ _/ T) } if( pSkillProp == NULL )
! Q& w# T# B+ U& c# N1 A- q) f continue;1 \$ {0 w D0 n6 M# ]9 s
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 x+ X8 u1 F# `* p continue;
# Z/ M# e1 Z$ j3 H lpSkill->dwLevel = 5;7 H& W; f9 m7 D* Q8 a* l
}
1 R0 @" ^+ R% E, E }
$ x# f) y* R# I; ^% g! h }
3 `9 |' k$ {, O7 b a" d#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 `$ `9 z: N' t e* d
if( bGamma )7 \; W: K. X/ Y/ H+ j3 o
{
1 i" D4 x/ U# G+ k m_nExp1 = 0;, ]" M: w9 ]- b6 W+ ^; n
}; [. m: g9 q# G/ Y% L6 a, h8 d1 v
7 e! R/ U- H0 C! e) L& q2 R8 _ ( (CUser*)this )->AddSetChangeJob( nJob );6 S2 Z& y" y N$ u
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );/ x0 `0 `8 v6 {
: y1 t Z$ ]% I
" d9 {0 p2 [5 M" _# y3 A8 V#if __VER >= 11 // __SYS_PLAYER_DATA
1 V( R" l6 L8 o0 P# k g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
; C8 [0 L) {( U! b& U#else // __SYS_PLAYER_DATA) y6 f) b T' N8 j( v, {5 V% o$ ?
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
/ S& R, {5 l, G7 \1 t3 f" } g_DPCoreClient.SendFriendChangeJob( (CUser*)this );7 b6 N. e0 `9 w
if( m_idGuild != 0 )
8 ^) \4 r6 Z1 A0 d; D g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
5 S: w- s3 _* y0 O2 W; w ~: b! v#endif // __SYS_PLAYER_DATA7 g& B7 a9 k( F, e- f8 Q( A
SetHitPoint( GetMaxHitPoint() );# M: H' A3 M) N$ l* `$ ^3 ]
SetManaPoint( GetMaxManaPoint() );
5 x4 x+ I; m3 W/ k SetFatiguePoint( GetMaxFatiguePoint() );
/ W% j ]9 @8 I* x2 w if( nJob >= 1 && nJob <= 4 )
8 t) w2 o; ?- o9 t D7 m {
4 H$ @; q" i* k. z2 v" } m_nStr = m_nSta = m_nDex = m_nInt = 15;
" X+ d% U4 D4 Z1 J m_nRemainGP = 28;
' J+ v4 K) W$ n6 G" d0 r }
' s/ j! n4 F: t4 ?6 `# z" h2 {* R if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
2 f/ y: S0 N( R: t9 J* P. s# X' g6 L {. q1 m8 d& e0 u
m_nRemainGP = 118;* y# s/ B4 b) `& M! D, N
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
! a- r Q5 m: f7 s% K% y/ c m_nStr = m_nSta = m_nDex = m_nInt = 15;" O3 \1 ^0 R$ U! J0 e
}/ s0 K1 G0 F& L0 g" l
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )* u; w, N/ f" D4 f0 n( c& ^
{
$ U! s$ ]' f" V8 j+ p+ S! a6 `) r CItemElem itemelem;; c. l$ _* a' e! W$ x
itemelem.m_nItemNum = 1;
. n" g+ Q7 R7 G itemelem.m_bCharged = TRUE;( a. [/ `$ j G1 x2 ~
BYTE nID;8 k/ `! _. S7 E+ W% k# l( i: t
; }, Q, S, E5 G- A if( nJob == JOB_MENTALIST_HERO )
9 F8 E3 A$ \ E7 o* m5 ?1 ^- R itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
6 }/ o5 d6 J' U! W& x! ?* b" s; ] if( nJob == JOB_FORCEMASTER_HERO )
8 N" F! A5 `; [; {: y, _/ ? itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;+ q* H8 n# v2 O c
3 v/ {6 c- A, F* z& b% ]
( ( CUser*)this)->CreateItem( &itemelem, &nID );
" _( }6 x% `; T' C4 g }
$ g$ j- `; _( V! K g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
* a' h* o5 N* d1 J ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
3 E% i2 S1 Q; }* y) } ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
# |( b: d$ N9 C; |4 p; J: N /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
( |# b+ Q6 b( O( i ( (CUser*)this )->AddTaskBar();*/& }. g5 X+ K: }# p- ]6 C
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
5 ]* D+ y6 j9 b#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
4 s: B- h- n+ i ((CUser*)this)->CheckHonorStat();! p' B+ Y6 z+ P
((CUser*)this)->AddHonorListAck();
/ X9 c( ]" z7 \% b8 ?$ H) G g_UserMng.AddHonorTitleChange( this, m_nHonor);
) K( E6 k; r, {% T#endif // __HONORABLE_TITLE // ′Tà?3 @* g& D$ J3 i7 A. D
}
! L, Q1 v% Z X* J#endif // __WORLDSERVER" z% D9 `& y8 o H; ^+ c8 |
} 4 H. }, B2 k3 f6 |3 u4 y% R
( O3 X: Z9 I- W* {- N* C0 \9 V1 f然后你进入functextcmd.cpp并添加以下
2 [/ c, q( [7 `! Y5 q! j V
2 K0 M. |; U" ]" U6 D1 z) `/ G代码:6 T! [, K0 ~" {7 Z* o) a4 d
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )3 |# i2 N5 V' A) s
下面插入2 w# G. _: A" S% H
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ; K5 g4 ?8 X# \( `' h7 v/ R
; y6 U3 {) J4 L+ R( ^' v8 T然后你去/ K2 j9 Y* p4 W; w
( Z( i! z; s0 W" a6 }$ M2 j代码:8 J3 S9 ^7 A- D, A1 ^2 p
代码
! n+ N+ k; S' @BOOL TextCmd_ClearPropose( CScanner & s )' ?& O( e6 N. @4 K4 q( V
{& {0 O5 l) y9 @: j
#ifdef __WORLDSERVER
5 u+ O4 t4 K8 L7 n: X; d/ v CUser* pUser = (CUser*)s.dwValue;$ H: R. c$ O7 I$ |& x( y" j
g_dpDBClient.SendClearPropose();
) h, B7 v8 ?1 ]#endif // __WORLDSERVER; Q. s; y1 x# W0 a0 W
return TRUE;
4 [0 v' W: q6 ]. i" k' I}4 H% o/ \3 ?* k% Z( j3 V
下面插入! K! _* S2 [& J- k0 d
BOOL TextCmd_rebirth( CScanner& scanner )
& m- s: l" p& r& w( L{: f. W: \ W, r: r: V" E
#ifdef __WORLDSERVER
- f* \1 ]4 \) X; D: d ~- |! nCUser *pUser;
' }& R. d: g7 N3 m! o3 x; ApUser = (CUser*)scanner.dwValue;" @/ R1 P1 B% w' l0 u m K- B
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
% X2 K% P& C' ~+ Y" NpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);6 v. A9 f+ K- ]+ F9 g5 b
else
1 T0 a* R; m! z# u5 A# ?$ `& WpUser->AddText("你还未达到重生条件!");
( @6 m- A a& M7 E) [* t/ c5 k, z+ x#endif
1 d! E8 |1 Z5 `5 T# P% preturn TRUE;
0 H9 w9 f% T* R8 A# [: m}
% N) R0 ^# b0 \+ z. S
; \$ i9 w7 l8 R' R% J/ T" y* t0 X& o. N- r ^: G7 i8 g
' n3 u, {% o% ]1 d8 C8 v& ~
7 s! z; V0 i2 ^: a* r% C2 G |
|