|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel6 g7 R# z2 q% h- D
2 G7 M$ O' D: G: M# nMover.h& K7 Q( l3 K; H4 Q
代码:/ m6 F' X) ^1 K x& ?: N
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü, S# e7 y( b5 z7 g+ r# k: U
& `' t6 @, y# U+ z下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; " V* w3 V) Y" d+ }9 `/ ]. J
% s$ ], z9 L; s! a$ z8 ]# Z
然后你去mover.cpp添加$ E u2 M+ z' k) o
' v: k' F0 ]% G- V& o! A
代码:+ b q( m0 O+ K N
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
0 M) T2 e2 u! G{
2 o" Y& m3 k, L _) s4 y. v#ifdef __WORLDSERVER/ m8 m- b6 f4 |4 ~9 c( O2 ^3 a
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó2 { O; h' B* f
MoverProp* pProp = GetProp();( p, X7 e. c* q$ ~+ ]: ]6 b8 [
if( pProp )5 |) ~* j8 i$ ~( \6 |$ f
{# A5 F9 y3 ?' v1 O4 }0 _# ~
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
2 @% ^' ^ J/ K8 t4 b( A& T {+ L2 V! N5 i- m$ h& H, ?( a e
AddChangeJob( nJob );
2 P1 Y; `. }/ i$ n! m C9 F }else{
0 s: t! @- ^$ H/ u; i) r( P9 V return;
( l O+ A$ J- {7 l* |$ q( z }; f8 ~* W K7 s+ {2 F/ B, C
int nPoint = 0;& E; }9 V0 e# x& v9 M: { V; c, h
if( m_nJob == JOB_MERCENARY )
9 t! y9 X3 X. Q% P* v3 O5 R- y nPoint += 40;1 l: v2 s$ L; t. g
else if( m_nJob == JOB_ACROBAT )
! B5 d# s# x! T nPoint += 50;" R' t: n4 V' |2 f6 o
else if( m_nJob == JOB_ASSIST )& P% s# g1 X* Q, n
nPoint += 60;1 w( }! m+ S) z+ H4 d" \
else if( m_nJob == JOB_MAGICIAN )
9 E( _6 ^6 ^. Q4 h nPoint += 90;
/ P! k4 U9 l% q% t2 ] else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
2 c+ l! l7 j' u" _9 D nPoint += 120;
3 k$ F% [/ ~0 b' m: P" ? else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
( Y8 S, u8 }; f) B) E. q+ I nPoint += 150;
5 E' x4 X3 ?2 m1 I else if( m_nJob == JOB_RINGMASTER )
: Q: \3 R% q2 e% D/ [: U5 I nPoint += 160;# C$ A% H+ O4 j1 r( l- [
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )* X# j; ~' X' f/ ^& l
nPoint += 180;
2 T, J8 O1 w) ~4 u$ q4 Y8 r else if( m_nJob == JOB_ELEMENTOR )$ n& ~" l% v9 I% L- P+ G
nPoint += 390;
) d% b6 t) Q' n; T6 ^/ W" q else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% M4 F, s- S, }6 D! Q6 p0 R3 y, n
nPoint += 120;9 y4 H, Z: P" B
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )3 F- o5 I( M, @9 S
nPoint += 150;
- h9 | X# f7 q. z else if( nJob == JOB_FLORIST_HERO )0 _* ^' L" Q9 J6 o. T+ g
nPoint += 160;$ k* \2 l( r' G
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
3 l$ k9 G3 m; ?; W2 G nPoint += 180;
7 s X; w0 r+ @& l else if( nJob == JOB_ELEMENTORLORD_HERO )
% o& @8 p; l8 e5 q7 l nPoint += 390; \ X @# {+ ~
+ [+ g J1 R; r; \+ ]
AddSkillPoint( nPoint );
: |8 J1 u/ L0 H5 t, }: b m_nLevel = nLevel;
4 c4 ^5 t2 z* p
5 t3 F' e4 \+ s3 m. G SetJobLevel( nLevel, nJob );! J7 h; ?# N$ r2 Y# ]5 i; ^9 q
m_nDeathLevel = nLevel;
: l; `6 Z9 W9 ~, P: q#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# |+ N$ {$ K" G- H$ A$ q if(IsMaster())
, ?$ @/ }) Y% w+ y/ R4 A {
& q/ K* `; b' `( J2 i$ ^' Z6 g& e+ s int dwTmpSkLevel = 1;//60, 72, 84, 96, 1089 O5 M4 }/ m" T. j) c
if( nLevel > 59 && nLevel < 72 )8 K7 X( n. m/ i
dwTmpSkLevel = 1;5 v% s5 Q$ Q1 E+ l# s7 ~
else if( nLevel > 71 && nLevel < 84 )
+ J! p4 E2 v% z3 o n5 l dwTmpSkLevel = 2;
i( l$ m" X& T- L l5 g' }. [. V" G else if( nLevel > 83 && nLevel < 96 )7 c5 i9 j& {3 K; s% w+ f) z e
dwTmpSkLevel = 3;
) {3 F! B; t: @/ a4 J- b* ^ else if( nLevel > 95 && nLevel < 108 )2 @7 O; O+ Y. T* ^
dwTmpSkLevel = 4;
9 O. @! W0 T2 _. O2 W9 B else if( nLevel > 107 && nLevel < 120 )
! V8 J/ ^9 y6 r( q dwTmpSkLevel = 5;5 I A1 ]' z- t, o3 e
for( int i = 0; i < MAX_SKILL_JOB; i++ ) # j2 |$ _. C2 g/ H! j
{
+ Q. T0 q" t, | LPSKILL lpSkill = &(m_aJobSkill);
* N+ e$ O9 S2 O3 q5 ~2 z# i4 Y" C if( lpSkill && lpSkill->dwSkill != NULL_ID )/ B" |+ h c; [5 B
{3 m5 s3 F4 x$ P! d2 f1 o7 K0 l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + ~# Q! o: S7 j+ Q9 \! V
if( pSkillProp == NULL )) J& a4 x8 L: w4 ^7 i$ [
continue;
2 H+ R7 B; Q |+ { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ H3 ? a/ B$ X& W! a continue;
7 E; m0 [& q4 Q; m lpSkill->dwLevel = dwTmpSkLevel;
$ s1 Z& S' M3 N1 `$ F" O( Q9 C# } } ^( e2 `* {# c" k0 z z
}
5 T7 j' u/ X7 i* K }
! V4 q8 U7 [1 E% t: c, ]" T else if(IsHero())2 J' A# e8 r+ R" `6 t2 ~
{
/ G1 A: r8 M0 M( K3 i for( int i = 0; i < MAX_SKILL_JOB; i++ )
, C2 e- K) a. ]# F+ C* b {
; q d( M/ k( K1 ` LPSKILL lpSkill = &(m_aJobSkill);
; }% }* [) r" S! M. l if( lpSkill && lpSkill->dwSkill != NULL_ID )
* Y4 ~+ C+ L2 A {$ I" U% ]( D- C, H4 ?/ {! W- y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% P' y; ^/ G/ c. Z( k7 y if( pSkillProp == NULL )
, Z: ?4 Q" N) V) W" v continue;
* c+ Z' |! N6 F% p9 f6 L if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! q# T! J! m* L% R! l! _ continue;, S6 f q6 B6 K
lpSkill->dwLevel = 5;
6 u( ~4 V/ L' u0 s. b+ u7 x }
- }5 t5 b' Y+ O: h9 n. h O [ }
9 X2 N2 y' J& p! O- h }
2 m- b$ E, [9 m3 S& Z- S$ F( { else if(IsLegendHero())1 d+ p: |) X, c: ~0 Z$ J; s/ `
{
4 R) O6 _) B2 Y3 W' ]" e s for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 T5 E9 O# {# i
{
* v( T) e+ M$ @- b LPSKILL lpSkill = &(m_aJobSkill);# Z8 [) j/ `# \. @5 J" V% N
if( lpSkill && lpSkill->dwSkill != NULL_ID ). H2 t% N! s$ ^1 c# ~7 o8 J
{. v* I1 p' i: l" G" q) L8 V
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 t- |, d* D' M7 X8 ]
if( pSkillProp == NULL )
' c1 e4 _0 l4 E _- N$ ~1 w9 v3 _ continue;2 P+ ^. M" z3 ]9 y9 H, K9 D* f
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' {8 f% Y3 y6 O) }
continue;3 a. ~( K3 H$ }
lpSkill->dwLevel = 5;
) O( y3 i5 |6 m( I g' z }
' Z, X4 T" L) B+ H+ C% ] }
4 |# H* ^9 N: u. ]/ ~. y }
4 J; [0 {' T+ C. }7 Q3 J) A#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans U2 L1 A+ M6 z$ d' G G8 o
if( bGamma )
/ L' a4 n& T) r: ] {2 d0 b3 I9 o ~! c( Y! J
m_nExp1 = 0;: e1 \: ^7 L# A9 o4 D) n K% u
}. ]3 F: K% t. f( n, v+ `# }
) v9 G$ Y. J2 r Q# c) M1 k ( (CUser*)this )->AddSetChangeJob( nJob );/ W* p2 g" M0 `' n+ G$ X# @
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );# |% a3 I1 M3 G% p6 c' R! ^
9 u0 L0 v) s2 Y: y0 U. ~! H
$ n' C) }* w5 m3 N1 L7 k4 A
#if __VER >= 11 // __SYS_PLAYER_DATA+ q; u7 P4 D6 M# I4 q, l/ }* i
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );$ _% D7 w7 O- o0 I( f
#else // __SYS_PLAYER_DATA# {( L* |2 c+ ^2 l6 u E- A
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
; r) Z+ v( g0 R2 v3 _) O, S g_DPCoreClient.SendFriendChangeJob( (CUser*)this );1 w2 n4 f: e% T% V! S) e( P
if( m_idGuild != 0 )
) Y! y7 Z: b, H: O g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );/ z: U$ n' v Y
#endif // __SYS_PLAYER_DATA
6 o: a! o( l9 z# u, E SetHitPoint( GetMaxHitPoint() );
0 l- W% ?, V1 H; R SetManaPoint( GetMaxManaPoint() );
/ a) w, L2 @8 G% f: w SetFatiguePoint( GetMaxFatiguePoint() );+ b; B9 t0 |$ Q, j0 }2 c: d& M
if( nJob >= 1 && nJob <= 4 )
, A) d4 g( P6 a, J: I {7 G) P' C3 u0 E. q
m_nStr = m_nSta = m_nDex = m_nInt = 15;1 t( R6 ^7 Y2 ^; t$ p( k- M/ t4 a
m_nRemainGP = 28;
: B5 o( d' a5 w0 [. X+ e8 r/ {' k }4 J K# r% }0 Z) m0 B7 b
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
9 C+ C+ ?% g# S {. S$ U7 p6 E) T9 i, L4 u. h
m_nRemainGP = 118;* f0 x+ s, ]$ e! F2 V# Z
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
% B% x% n- z" J) Y" f2 H2 _& V m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ M( F) D5 [ `0 L% ] }
5 w5 {# P% e4 R7 J if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
; J* X4 W+ p3 h Z {! ]* z4 ]' G- R% E& ~" ?
CItemElem itemelem;2 j% q% s# O$ U7 n
itemelem.m_nItemNum = 1;
8 _; T: J. n* u" v' H2 N- T$ P itemelem.m_bCharged = TRUE;
N5 d) E6 n; N/ | BYTE nID;1 e* X+ T2 o% u( z6 k/ v& W% E
+ N: A1 S7 Z g
if( nJob == JOB_MENTALIST_HERO )
2 ?" H) q$ A( D itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;! }3 S$ G7 ]( u; L5 t
if( nJob == JOB_FORCEMASTER_HERO )
4 \9 X$ Y) U* H; i$ A$ e itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
, C! f0 ^5 _5 Z- K5 ]
, U! m* R; |1 N/ c ( ( CUser*)this)->CreateItem( &itemelem, &nID );: \% B% x! o; }4 l4 Z
}
" y, U) S% c7 Q! r& ^ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );" K0 l5 ]# ?; Z, C
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
# S" i3 i4 E& x, `) \( ?) ]0 c ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
7 J5 y* k1 h" l i7 K( P2 U% V /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );2 ^6 |9 H+ b) B! }$ f+ K6 W
( (CUser*)this )->AddTaskBar();*/5 k. A- s- e. e1 d
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );. k8 k4 X+ K7 d- R1 w0 W8 c3 Y
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
9 I0 h9 ~# Z: u3 X ((CUser*)this)->CheckHonorStat();
& O0 H- \# r" t/ G& { ((CUser*)this)->AddHonorListAck();; W- d: j9 c. `% q3 j
g_UserMng.AddHonorTitleChange( this, m_nHonor);! I. ?9 p% s# W8 J' U3 T3 h3 e: h
#endif // __HONORABLE_TITLE // ′Tà?
" j7 @8 w0 F" K0 d$ f; Y: o. [6 |: t1 f }
7 C8 a5 w, U$ P4 l* o R7 j#endif // __WORLDSERVER- G8 }- H8 c/ n5 G: p( b
}
! i' z( G5 h3 e3 Z. F- S8 U( ^, v2 r3 |3 z7 J
然后你进入functextcmd.cpp并添加以下5 ]/ _1 p8 Y: s1 N4 n$ \/ K$ O
9 O: q! j* a8 p- d代码:% z& M, e4 a. L, ~+ j
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ). w- I9 z8 _" X! X' h3 a8 ]
下面插入
! G. H" [* E* D. BON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
2 D; I. Z2 _% c* v. V8 v
" N1 D: ~3 c2 e: [- l然后你去( c; j5 R$ M. P2 G7 Q( i
2 [! S1 T4 d, H1 v. @/ r& d代码:. Z L2 B2 V; B4 {/ B. H
代码
7 B3 K9 `; O4 G/ F2 ]" }) eBOOL TextCmd_ClearPropose( CScanner & s )
# |( P+ ]" W' @3 s1 }6 ^' H# a B{# C% W. _2 S% Q0 E+ V
#ifdef __WORLDSERVER) b: I/ r/ l. u7 A
CUser* pUser = (CUser*)s.dwValue;
. }: k! B. m+ J; F7 D g_dpDBClient.SendClearPropose();+ x) o7 \6 ]' V; `
#endif // __WORLDSERVER
3 v# N/ F- g! a3 S2 L$ \0 \) S return TRUE;
+ ~8 j9 \) U) ]+ g7 {. c7 Z}( |0 ?: B0 c% q E
下面插入5 z" k$ B, I' c" L
BOOL TextCmd_rebirth( CScanner& scanner )
9 j+ \- @3 u1 h' I) D{
0 z8 @- R, @# F* Q' Q6 |#ifdef __WORLDSERVER) K' a% L8 b' _+ d
CUser *pUser;
( }) x( v, d+ }! bpUser = (CUser*)scanner.dwValue;5 R; b9 ?4 E& p9 w( k8 B1 c$ A
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())* l3 ~& A" M5 _0 Q. x0 p0 A
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
5 [/ I1 `, u) `& Melse: R1 T1 _ h# s; l& f
pUser->AddText("你还未达到重生条件!");
7 Y' Q& W; ], n+ u#endif
/ u( @3 e3 ]0 X% C6 d! Z2 dreturn TRUE;5 I; ^0 t j5 c: L* b1 F) ]- g
} ) R! r. _6 d6 O# J
" b( z! G7 O1 o* |% @% m" t5 u6 H @6 h
( ^# o0 L. g* \1 u9 x$ {2 Y6 V g8 f% i# R V
|
|