|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel8 c8 C. K) e4 ?+ q" ~! J
# x+ f5 O' v8 _' c3 f
Mover.h( P/ u; V$ {! ?6 B6 T, B
代码:& U: e0 {! A7 q$ b% t
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü& v/ Z4 C& ~) ?* Q, y, P _8 M4 W
; Q9 e! D$ u5 l7 U下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; : q: \' g8 m, E' }0 c
( N/ n% @# s* ?* E$ a
然后你去mover.cpp添加
) b! r% d& H2 y- T( ^) p9 l% D p, L' A
代码:
. S9 ]; J7 W( S* U/ wvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )& V6 n7 H x$ z& }) a, E4 N
{% W- B2 K# ?! J: ?, t6 y
#ifdef __WORLDSERVER, R0 F/ |7 Q+ x7 p1 R0 Y7 \5 {1 R( r
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
+ o) |4 ? V8 H+ X; t5 B. d1 c( o MoverProp* pProp = GetProp();* G8 P% T% h& J$ _5 N+ O
if( pProp )( G( i3 k5 w# m& h% x) o
{
. ~; i# P" d! l& B4 D: h if( nJob > 0 && nJob < MAX_LEGEND_HERO )
% g+ b* V, p: b+ p/ ~ {
- B; p! b. I( _' p! k AddChangeJob( nJob );
: \( D5 [* R l9 W* w) u }else{( u) b7 f* {1 ~9 s
return;
. a8 @# B7 v4 z, l% b } E; o: L( N5 l+ O
int nPoint = 0;
( z* o/ b6 D& [ if( m_nJob == JOB_MERCENARY )
4 C2 N L% l: n; z7 F1 L4 c nPoint += 40;) J1 v( |0 v7 S; x
else if( m_nJob == JOB_ACROBAT )
. W9 {* r& L! H) k; _ nPoint += 50;
" g8 O7 |8 ~" t7 m# F+ Y% ]: C else if( m_nJob == JOB_ASSIST )
+ z4 q; S7 A' V" q$ i) P# m7 K nPoint += 60;
2 S4 ` h4 w1 A( U' M3 Q- h! K else if( m_nJob == JOB_MAGICIAN )
7 j/ `: ~. ]8 i nPoint += 90;
/ R7 m/ F! Z0 W else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ), ]% f/ n5 d, {8 C( T3 q1 J
nPoint += 120;
+ d. l' |0 V9 A else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )& t5 @# B! n, B5 p
nPoint += 150;! H. s# _$ }/ W4 X) C: \
else if( m_nJob == JOB_RINGMASTER )
, }3 O& C/ D' M' Q nPoint += 160;
+ R$ t" N- `" }0 T. x) @ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
# D, p1 D4 x7 ?+ m; i7 T; c% v nPoint += 180;# x x5 k- d9 R6 M; K6 h/ B6 A
else if( m_nJob == JOB_ELEMENTOR )
& o! G7 B. ]. C nPoint += 390;( i! M8 s2 G& W& E6 v7 H
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
M* z5 G4 w$ H6 S nPoint += 120;
W7 L) J6 l6 S u/ ]( m else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )+ z' e) E d) o/ L+ y" Z6 r
nPoint += 150;3 `+ P. A/ d5 k) q( n7 |8 C7 h+ ^
else if( nJob == JOB_FLORIST_HERO )
" F. H% A) b& O: u# c" L2 ^# A nPoint += 160;
# S! |3 p$ i$ p* F( A1 {; W' I else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )2 ~# F2 o8 O1 r. T+ n: }
nPoint += 180;$ w0 |5 h& T- J! b9 h' W
else if( nJob == JOB_ELEMENTORLORD_HERO )
3 N$ G& b; M* [ nPoint += 390;
; C2 E/ v4 w. d) R/ i2 u3 _4 d' p2 X# K6 F6 v4 u! y
AddSkillPoint( nPoint );' @" C& o2 D; n7 u8 e
m_nLevel = nLevel;$ N" c. U O% d
8 Q( T. ?, c% }/ q
SetJobLevel( nLevel, nJob );
: R; e, K) Y. X9 k% F m_nDeathLevel = nLevel;
9 |5 h+ a6 F G: J8 [$ K: H#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
; z s. A6 P0 n) r; ~ if(IsMaster())4 F( q5 i5 v1 h. I, T/ f
{
8 `2 x/ x" o9 Y8 s3 U int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
. ]# Q$ k8 A6 Z# L9 O if( nLevel > 59 && nLevel < 72 )
; H! o' `2 y' o' R. @$ E3 y dwTmpSkLevel = 1;
5 Y- j0 E) X2 v; X4 { y else if( nLevel > 71 && nLevel < 84 )+ W! {. k' E- d* m0 } x
dwTmpSkLevel = 2;
3 s; W' p' L9 j8 j else if( nLevel > 83 && nLevel < 96 )# J2 ^& R6 {7 J# F+ O& \
dwTmpSkLevel = 3;
+ W7 x- _* X' Y( a' v7 m- `; | else if( nLevel > 95 && nLevel < 108 )2 W+ ~ L- ~& ~' ~2 q5 I' {
dwTmpSkLevel = 4;( T7 y, U% Q9 k$ h/ V5 t* T
else if( nLevel > 107 && nLevel < 120 )
5 V& b& Q% _0 u' S" R7 y dwTmpSkLevel = 5;
8 S# t/ y& d/ }2 p for( int i = 0; i < MAX_SKILL_JOB; i++ )
& F R: W& l8 u8 [7 b { 2 Y. n6 Z' K5 O$ `
LPSKILL lpSkill = &(m_aJobSkill);
) ~6 c, z! J: L. k# m( h5 n if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 _4 H) Y" c% U {
4 e. s3 `9 w" b, ] ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 K$ N" ~6 Q* q# e if( pSkillProp == NULL )2 k5 N& H7 g0 W; V9 T T" ]
continue;
2 h) N; ]2 i2 c ?' ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 F+ P- e2 U6 @
continue;3 U# Z* o% l: E3 _ |2 u5 u9 O
lpSkill->dwLevel = dwTmpSkLevel;
! K( Q' i# Y' o0 i* n. V }% m/ u" I( y9 u! C
}
# N: q: T: m2 r& m }9 t7 H# S5 D7 ^! W" ]
else if(IsHero())
# {/ `0 ]! W- P6 A {9 b( a3 Z+ s j: m: ^
for( int i = 0; i < MAX_SKILL_JOB; i++ ) & A# D1 B1 |2 K
{
; r" w" x0 Q6 Z$ n! N" V LPSKILL lpSkill = &(m_aJobSkill);
; l4 j1 }9 h" o if( lpSkill && lpSkill->dwSkill != NULL_ID )
% Q' _) {: ~3 h {* g4 S5 \6 U( I$ i) X2 R' Y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 s8 O, {5 d- U' Z, o3 T
if( pSkillProp == NULL )8 \8 q- m+ ]/ c0 A
continue;; F. L7 u3 [8 a: Y5 m' H
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) ]) e) w, e! G/ t6 a$ |
continue;
/ J) s9 I( K- B- u1 G2 B lpSkill->dwLevel = 5;# s8 X" c3 d9 `$ z+ T1 e% E
}
* w# o5 \# b+ w# j }
; G+ p1 z9 v7 H7 n/ @; P }# c4 q" u; m$ R2 r! b# F5 o
else if(IsLegendHero())3 H. B# U- j3 ?0 L# M* y
{
3 z6 N/ E5 U6 W& @ Q) A for( int i = 0; i < MAX_SKILL_JOB; i++ ) , D1 ?/ x: R9 Z) _& p! y
{
2 w4 Y- w! x! j: U. r! z/ i P6 Z& |# X LPSKILL lpSkill = &(m_aJobSkill);
( ]* O/ A' v; v0 G' S- x7 {# l. f if( lpSkill && lpSkill->dwSkill != NULL_ID ) K5 ^2 M/ ?5 F$ e; l. ?
{
! w9 s2 i; c0 b; }% q6 I ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 e. A7 {5 G6 t) [ if( pSkillProp == NULL )
& z! W4 Q h; m3 z p6 c: ?6 a continue;
1 a { o5 c. B; {9 `5 x" V: r4 m if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! Y8 q7 h$ t. M, v. p
continue;
f0 J& t6 s1 r& w; j lpSkill->dwLevel = 5;
7 G4 `9 w0 ^/ T( U0 C% o }
1 U. k) r) E1 T' c/ f' c; ]0 o8 r }
7 b+ c5 W! s8 }8 b }
" ]& l6 A: D5 F4 }7 X( l#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) J& C/ Z$ I( z& b0 W
if( bGamma ), j+ c" c. P2 j( g' Q7 E
{
# |$ A( C1 D' R( l) ]. s m_nExp1 = 0;
- m' U3 [/ c, t$ G }5 l! n- j) o5 D; x* s" I' E+ L
/ @+ g2 D4 Z/ H; G
( (CUser*)this )->AddSetChangeJob( nJob );4 _( z2 ^* E" O6 E2 `, E' E
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 B7 E: E% {8 }' g: m
, V$ ]* o" H$ V" v1 j
6 a; `( |8 G- I
#if __VER >= 11 // __SYS_PLAYER_DATA( j2 u+ w! P/ \2 D* X. b
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );4 J- Z) u1 t0 B3 H
#else // __SYS_PLAYER_DATA2 ]' l' k/ M7 T9 X3 ?
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 F, f" Y' |. T$ w2 n
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
/ y/ T9 L! u" |! o6 C- U2 C2 | if( m_idGuild != 0 )
" {4 E+ Y$ b* ` g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );9 g7 Y5 Z6 P8 |: m4 S5 O4 ?" W
#endif // __SYS_PLAYER_DATA1 W! D+ v* p1 b$ S L1 K: U# W
SetHitPoint( GetMaxHitPoint() );
" j n/ @0 f/ w& w0 _ SetManaPoint( GetMaxManaPoint() );
1 d2 u8 H9 v! ]7 ~: C: l SetFatiguePoint( GetMaxFatiguePoint() );+ {1 F( e- @8 N
if( nJob >= 1 && nJob <= 4 )
$ I$ m6 a2 k Y, C, ~ {5 i, h) K; L/ R- ?9 u$ d
m_nStr = m_nSta = m_nDex = m_nInt = 15;' r4 D3 t' m8 E% D# W
m_nRemainGP = 28;" I: |- I3 r9 ]) ^
}
5 u N7 Q: @$ P5 c; a if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )1 X8 e+ W& }# b! b" M7 h
{0 h$ N6 c7 x" ^/ F& p4 E5 P
m_nRemainGP = 118;
* A& A' [! w# W" p* R% ]& G //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;. U$ B8 i, U% a, X* i, L
m_nStr = m_nSta = m_nDex = m_nInt = 15;; A' k# p7 |' ~1 z" P6 c
}7 z2 s" X% N$ Z E8 c! z2 P
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )" u t8 e8 |8 d! Q
{: k% T9 B. }4 n/ [+ U. r
CItemElem itemelem;) R0 [0 {( ~$ T& Y2 a
itemelem.m_nItemNum = 1;
: d. H p2 P: J" ^$ ^ itemelem.m_bCharged = TRUE;
& v. x3 n ?7 |# |/ F BYTE nID;* y: Y7 Z0 F- W; d) {8 a8 ^
' \. x. E8 }$ G' M" P1 T/ D9 ~ if( nJob == JOB_MENTALIST_HERO )
( y* c2 z) ?4 w' b2 D% J8 l3 v itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
5 c$ ~; P. j5 M* J9 I3 k# @ if( nJob == JOB_FORCEMASTER_HERO )
8 \) e, t# T Y9 T itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;5 @) s1 n, g \- B8 ~1 w: w5 e
) U! A3 B/ I; B& K7 i, S ( ( CUser*)this)->CreateItem( &itemelem, &nID );
7 n8 f2 h1 r( G) c% }' { }* O. r- t& y7 x8 g. B; g
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
* u7 ^- d& [% Y ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
& x- M# K$ ?: S8 i/ i, A ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
/ r) k/ d8 K: B6 x7 a9 O1 A- e /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );* {' Y, W+ ^3 c$ ~
( (CUser*)this )->AddTaskBar();*/, [! N1 }, \$ Y4 U+ u
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
. w. Y. ^. D" K& O6 @$ e#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
4 L8 d) P* x7 [) v$ P/ }* h% t( E ((CUser*)this)->CheckHonorStat();. i& _' J z U5 n. n5 E; S
((CUser*)this)->AddHonorListAck();2 B# k. Q: u8 P6 R' o5 C
g_UserMng.AddHonorTitleChange( this, m_nHonor);
4 C N5 y+ j" u. J" M) W#endif // __HONORABLE_TITLE // ′Tà?- c! m/ S% X( U
}
8 f2 @) o/ }$ ~8 j/ z1 Z. E! y#endif // __WORLDSERVER
1 x6 u+ O2 D: I! A2 y( Z( |5 u; b6 b}
3 L+ ^: r4 J7 |; }, X8 v0 a4 j# n
然后你进入functextcmd.cpp并添加以下
" }* Z A1 |0 N% X9 o& S0 [9 B5 B+ C& R
代码:
! G+ K" B" l% z& ^ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
! O) t' j3 p c. Q% h/ A8 Y下面插入# X C: H! [6 p
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
6 a+ |9 A& h$ Y$ u2 i! |2 v! X6 t C6 j" y/ j/ n
然后你去
& S v* K8 ]* d6 W$ n. B( d1 D; N1 I3 y9 A$ D" S
代码:
. o; C) h8 f# C& R代码
2 ~3 ], v; x1 w/ t% X9 LBOOL TextCmd_ClearPropose( CScanner & s )
: D& e: l6 P3 G5 A{2 R: G7 j% x: h# x. a1 S! n
#ifdef __WORLDSERVER: E. Z0 e4 d+ }5 n" C5 f
CUser* pUser = (CUser*)s.dwValue;% c; U( y! {/ G
g_dpDBClient.SendClearPropose();& s1 {1 @9 a) ], T: O& i
#endif // __WORLDSERVER1 D' \( i, @- X3 }5 w, P7 R
return TRUE;3 T4 m- W- x# G% L: B- j0 W" I1 |
}$ c* A4 [* [- q" z3 L/ n, y
下面插入! U) d. O, u6 F$ S" U4 ~
BOOL TextCmd_rebirth( CScanner& scanner )
8 w7 Q0 s. O, Z4 u0 P{
. r" F" ^6 c' S' O#ifdef __WORLDSERVER
z8 E% W; z. ]/ {7 x9 O# M; PCUser *pUser;* ?& D( V9 u4 J+ _, Q3 a
pUser = (CUser*)scanner.dwValue;5 v; K6 K) w& j* O3 }
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( u- g( U, F/ N7 S/ V; R% e R3 `
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' b- e2 ^7 f/ s: ` F3 X* Q3 J& Yelse+ i h6 h$ y" f) F# |0 U8 e! C
pUser->AddText("你还未达到重生条件!");
% C" m8 k1 Z5 y ?$ I#endif
! s; R) k) p$ H6 Y4 ~" [return TRUE;
8 r: p' u f4 |$ j} : T" B. i2 {" O* W, @% ]& y
/ b. y$ q0 p. ~- Q' l' f
+ D: x0 ^: M8 F \
- J7 H& s# j! u; E* i
8 `4 Z6 G1 _: P% a |
|