|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel& M7 ^) O# @% I$ o) C: B- R. K
y; g% j+ `: a# l3 l) H" u
Mover.h0 H( R0 J E7 [3 n
代码:/ a" c/ S( `$ t& q p
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
% C+ H* V+ R- ~+ @$ H0 @7 d( N6 t# I* ?& a. d5 s. D
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; . |1 v. e% f3 l; b
T) }) s P/ L* ]8 ?/ _6 j然后你去mover.cpp添加
2 d! C/ O( ]5 o J6 C m7 u" U4 c# b8 I* ~2 N8 j/ H
代码:. ^+ k5 ? e [' {" e7 I
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )4 `0 Y5 P! f+ Y7 ^
{
: E: p& D1 @* |! F' @1 K#ifdef __WORLDSERVER' [6 l5 l0 ?+ [& E4 s4 t
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
# |0 ]. S ^6 i3 A MoverProp* pProp = GetProp();
" X8 G! N) X: |* ]; S; b if( pProp )' S \5 M( [9 J2 b3 t1 P
{
6 A0 f- V" S/ G8 S% o6 x2 | if( nJob > 0 && nJob < MAX_LEGEND_HERO )9 T [& m9 U1 v" j6 w
{# S( H" b- L; A) C! Z" V2 C
AddChangeJob( nJob );
; `( Q2 D2 z3 `2 W; C9 h4 { }else{
, u* B1 `9 ~: p& x' x- L% k* [4 J return;
8 z. B, `8 y5 d% @ }4 n" u6 F( t7 C9 R0 A% T( Z
int nPoint = 0;2 Y) |+ i; X. x6 @% h. V) r
if( m_nJob == JOB_MERCENARY )/ t$ I- {. {/ k- Z8 g5 R9 g5 F
nPoint += 40;7 D4 n( S* r9 A
else if( m_nJob == JOB_ACROBAT )5 a, D" i! R7 q U0 ^
nPoint += 50;
6 Z! ], f5 t" k else if( m_nJob == JOB_ASSIST ): Z' ]1 A: z) N
nPoint += 60;
, f \5 f( J# N7 M else if( m_nJob == JOB_MAGICIAN )& |3 \( q4 v7 ]( j ?9 Z
nPoint += 90;
& s, h0 Z! d0 \& p2 a2 w1 O: x else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )2 g; u; P2 o- X. V
nPoint += 120;$ x. ?3 X7 @% Z
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
! p, b; }6 p8 R* g, @ nPoint += 150;$ M2 P5 d+ D/ W F, z: M: [
else if( m_nJob == JOB_RINGMASTER )
! y5 U( Y, r( q- |" G3 x9 q nPoint += 160;" a2 }. h+ ^" _; i
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
0 W3 l& T! P; B3 t0 i nPoint += 180;2 \$ Y2 [9 y, b" C1 F
else if( m_nJob == JOB_ELEMENTOR )0 d9 A# ^/ c7 U# l0 t3 S; t2 B
nPoint += 390;
2 u( C# Z, n% u) S) ~0 D3 n else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )5 F* K8 j0 N# `" C
nPoint += 120;
, W% h g, b; @& A$ `) c else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
! I9 d, ~4 q/ O4 G0 t J- ]5 _ nPoint += 150;
- P1 {, g% k4 P2 m0 p else if( nJob == JOB_FLORIST_HERO )
) i. y" b" z d/ [6 K/ t+ j: z nPoint += 160;
$ N0 [) I! R. F! D1 j" F& n else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )% ?1 ~( n# e w4 D" C' L. v, e
nPoint += 180;2 M0 F. H0 Y! r7 x1 Z, I
else if( nJob == JOB_ELEMENTORLORD_HERO )
4 W8 k% C' _. A, C nPoint += 390;
$ O8 O1 z6 i0 R5 G0 b
7 R8 I( Q0 ?" A AddSkillPoint( nPoint );" ~) j" z) [( |7 F, i6 n
m_nLevel = nLevel;
6 @9 ~% P y6 p- X$ e, E
+ h, o1 C" R: Q4 c' Y4 v/ d C SetJobLevel( nLevel, nJob );2 _7 n2 K8 B" U" o: z8 p6 ?6 g
m_nDeathLevel = nLevel;+ h) p* T$ |, v2 x7 C: |2 Y
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# G; r2 S( |3 ~; l8 p* y if(IsMaster()) y- H7 o( V- y! F
{
# |' ^! w9 f+ Y int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
( O+ c: d5 n f- }4 z2 ~# y if( nLevel > 59 && nLevel < 72 )
/ t! U P b7 B3 L9 ^# e dwTmpSkLevel = 1;
$ a/ t) e* A0 E7 H1 M A else if( nLevel > 71 && nLevel < 84 )5 F! j* z9 F: n+ d. a% |( f* R* s8 D
dwTmpSkLevel = 2;
. M( Q% B& s5 d7 k' J( P else if( nLevel > 83 && nLevel < 96 )% S) {9 A+ M& g4 _
dwTmpSkLevel = 3;, G8 L& b6 \1 l" E
else if( nLevel > 95 && nLevel < 108 )
$ h5 _: G4 J/ N( } dwTmpSkLevel = 4;
. g* [- ~! @& G! ?3 U else if( nLevel > 107 && nLevel < 120 )
& j- A& s6 F" e V* G& i1 K" t dwTmpSkLevel = 5;- Q" F/ u2 L( e; C
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 k) `+ V% e' G: Y" U, Q
{ " M+ \8 L0 ^! @3 a$ j
LPSKILL lpSkill = &(m_aJobSkill);1 Z1 i, \, d9 P8 m/ i5 q
if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 x% h- O4 u' Q* H# U- @& F {) ^8 j( I5 E- I
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; Q0 D7 N- I2 D5 @* v) U/ b
if( pSkillProp == NULL )% J; R/ d) O9 Q$ M% _+ M
continue;
/ w& e- ^6 y# T) f2 @ ` if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: ?+ m% \5 Q( W! j continue;9 ~. k& Q) O! \/ E' \' o
lpSkill->dwLevel = dwTmpSkLevel;
" p# g5 q) \: H. p$ l }
- f: ^/ Y( R) e4 D6 j5 F4 N, j }
8 o, O; W! n: n! K. }: P }( K9 v3 ]! l- @1 T% L2 w/ X2 o2 x
else if(IsHero()): b/ y |# t) ?5 O9 } L; I
{
2 d$ z2 j& J8 {% y" K; l for( int i = 0; i < MAX_SKILL_JOB; i++ )
; I' j+ [9 s( {7 Y( j {
, {2 h+ c1 I5 x2 [* |- F LPSKILL lpSkill = &(m_aJobSkill);1 i6 }8 }, g6 g( c$ Z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
$ @7 n* W: ~# x+ C- @& ~- o {
2 Z [+ B* o n, `8 O ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + @( b5 r J) [9 y! S3 ]
if( pSkillProp == NULL )1 k8 j& s! B! c8 E; |
continue;# `! d; h# i/ F. l$ x. ]
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! v7 X7 g; I( e
continue;& O ? e; p; u0 e6 \5 c0 _; v* f/ k
lpSkill->dwLevel = 5;$ ]: e3 A* \: i n" Z* z' @2 V9 `
}
1 a: ^' C" G! z$ Y( G! \8 {1 m }, m/ A# V& u' T
}1 ^7 w1 q9 t7 F7 @' I
else if(IsLegendHero())0 P% |, ^7 k, w/ z: V
{
2 D6 E; X5 J( v/ P for( int i = 0; i < MAX_SKILL_JOB; i++ ) / j( w2 {/ T) `2 V9 B) H- B
{ ! A; b/ N% v% K$ G% _
LPSKILL lpSkill = &(m_aJobSkill);
3 D m, y3 G* ^$ t8 n! l if( lpSkill && lpSkill->dwSkill != NULL_ID )
: p4 f5 K/ ~* A5 b! v! D' T C {; Y( j7 P1 |$ E: r% q
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, k, W8 }" i) u. m3 R0 k5 x if( pSkillProp == NULL )
- X! C6 B7 [$ ^ W8 q4 o continue;; u# ]0 J5 ~1 v l, h4 d3 ]
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 ~7 R% S- B) |4 ^5 H) k, t" g2 k t
continue;; d( }& ]/ ~2 K8 K( p1 k e0 j# ~
lpSkill->dwLevel = 5;
" A$ t2 e% Q8 q& | }. H7 W$ _3 P9 n$ {! |; x! m9 D4 ^: M
}3 D5 {) t; N& \3 O$ t
}! k; G# s+ A! }; z, I# T( E+ [( }
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans i+ e) U$ X, b
if( bGamma ): Z- T- \1 d) U; L, ?* }
{
% |$ o7 t1 \2 O' \% ~ K- | n m_nExp1 = 0;
8 X: w8 L g- C7 o5 k2 v. \ b }
9 e0 N3 z8 H. L$ `' g! L
9 c8 M' b7 n1 t0 [ ( (CUser*)this )->AddSetChangeJob( nJob );
+ [. g% ~" x% G+ l I& G) ~ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );6 _- u: e# [% Q1 I0 Y
" c8 P; K) E) \1 r" H7 S' ^ g! j
- o. Z2 m T' q8 c v7 U
#if __VER >= 11 // __SYS_PLAYER_DATA
% q) @4 r& g u1 j, _ B g_dpDBClient.SendUpdatePlayerData( (CUser*)this );+ L4 u$ B( t% ?. E& f7 [: I o6 j# Y
#else // __SYS_PLAYER_DATA4 B+ \8 [) G+ i: A# b
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );7 p* Q i. X$ f" d3 F$ r
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
$ @- ~2 t$ @1 j$ V* } if( m_idGuild != 0 )/ q3 y' q8 E9 c$ d. L3 x
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );; `3 e; d2 d# N Y7 h9 K. t
#endif // __SYS_PLAYER_DATA" |& n- C! ^1 [; e, d/ P
SetHitPoint( GetMaxHitPoint() );
# @) B/ ~9 P! G SetManaPoint( GetMaxManaPoint() );
! |, L0 K/ Z, o# u: S SetFatiguePoint( GetMaxFatiguePoint() );
7 A- G: `5 z% H# Y- d- O if( nJob >= 1 && nJob <= 4 )
6 x. S' G! I; M# D {! A. _9 H/ q1 v: W9 |% K" Y9 A
m_nStr = m_nSta = m_nDex = m_nInt = 15;
: S' r- ~, f _" T2 d: P' J" Y m_nRemainGP = 28;4 |' M% g1 P6 m# {8 M8 c
}1 V- ~& i+ I" z! H3 O$ j" U1 Q( q+ |: @
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
/ T- e' u, k( O# I" [1 K {
3 q' d U) F& b8 @( k, m3 Q/ U m_nRemainGP = 118;
' g% ^# I; a, z! N! c //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;/ X) X4 u- _1 \2 D/ c
m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 J+ F' H5 Y) I# f0 | }
5 s" I: M$ P' d; F$ d# S8 b0 o if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
( V, P! W3 i; J; o/ J( m0 q1 [% E {, ]2 x1 V' [9 J. w9 E n
CItemElem itemelem;# C8 N5 H9 P1 a. L
itemelem.m_nItemNum = 1;5 l2 f8 [# l l( ^) x
itemelem.m_bCharged = TRUE;! t' y3 T7 ^8 Q$ C
BYTE nID;& m/ r4 v8 Y- b% v: O9 u
6 Y4 x# g4 W8 F
if( nJob == JOB_MENTALIST_HERO )
; Y% l1 |5 N' f; \: w, T" [- Z itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
; n+ r4 B+ N2 c4 }9 M if( nJob == JOB_FORCEMASTER_HERO )
3 A' B* t, q& l: p6 w3 a itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;- }' } f: B& d0 d7 e$ [9 D
, s! C; C* t4 O; k4 Q0 c) p# E
( ( CUser*)this)->CreateItem( &itemelem, &nID ); B6 C! l& D0 @5 U4 t
}
) c" f5 n- h, b9 x' f4 k: @; r g_UserMng.AddSetLevel( this, (WORD)m_nLevel );; j' X5 v$ e, r. r: H3 j8 c
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
" z& i+ p7 y. @; Z ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
9 `! F3 d0 [5 c$ }4 r) O5 c/ k /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
+ C6 i/ d* L, y( E7 | ( (CUser*)this )->AddTaskBar();*/
* A1 x/ P) P" b* _ ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
8 d- _! y }4 n7 T. J( S3 N$ U#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?* [3 S) P0 b/ ], F
((CUser*)this)->CheckHonorStat();8 v8 P; T0 r: B- C1 b/ w( a. F
((CUser*)this)->AddHonorListAck();
& S% |0 R! {2 Q1 s* n g_UserMng.AddHonorTitleChange( this, m_nHonor);
7 C, O' q4 p5 g$ Q, r#endif // __HONORABLE_TITLE // ′Tà?
! g8 K* l* f1 d$ M7 e! X" m! x3 t. f }. e9 F. d0 D, p! u1 v9 Z
#endif // __WORLDSERVER
, r9 R2 v1 I0 p# Z}
$ A" }1 O6 h5 n/ q, o
1 L# |0 S1 T# k. l+ d# N然后你进入functextcmd.cpp并添加以下
* \7 h/ K: y8 b* l+ @* Q G
# j3 U& K2 \8 b/ v5 g代码:
9 t4 h! n5 ~% i nON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )' q) T# ^9 Y% w" Q
下面插入
2 }/ p" X4 ~! [3 JON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) : o* k. H) U: A$ w8 t' A
( a: ~$ g1 A9 Z
然后你去# B8 e, q! ?& W2 [
* T6 Q6 z* I- `" b
代码:
' f7 `$ v- [( n8 L+ R代码/ `( W5 f9 B1 Z2 z2 {4 n
BOOL TextCmd_ClearPropose( CScanner & s )# D/ C7 f) c! e' B2 c; C. S* P
{
, d' W) f& n2 Z. m#ifdef __WORLDSERVER% d) x. q- o* I: O4 p
CUser* pUser = (CUser*)s.dwValue; o1 x4 P0 l) p
g_dpDBClient.SendClearPropose();
5 x# K0 t: {4 |; u) h#endif // __WORLDSERVER
" ~) E/ e9 d' c) L9 Z return TRUE;
) g G5 M+ P, B/ c; y& B( M}
1 Y% u9 @: i3 |( S9 a下面插入
, [" ?) u" C* G, b0 I( s0 rBOOL TextCmd_rebirth( CScanner& scanner )! L5 D" [# V+ Y& A7 ]3 X4 y
{
$ g1 g# M# A2 _1 H# z. [#ifdef __WORLDSERVER! w5 s. E* ~1 l6 {. _5 `4 v( y8 T7 z
CUser *pUser;; R4 R: g# q9 I- ~ S' ]
pUser = (CUser*)scanner.dwValue;& N% e( c* ?2 i2 i( r
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())& t. w; q8 G& A0 b6 _ f U
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);" a' A5 L& |1 r( R
else+ o; n8 Y% T. e* \
pUser->AddText("你还未达到重生条件!");3 M8 f# o6 ~" K! A
#endif
" ]1 a3 Y, u, a' A9 O" Lreturn TRUE;+ g# O3 P0 ~6 O6 D2 _
} , F) O3 M5 B% X
6 a! O- Q# S: w; P! q
t9 r- i! ]1 X, h9 {
9 ?2 K4 H5 c7 E o
& m* _$ H5 \; i3 u# Z# h
|
|