|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
7 s3 S- o9 g4 F! q( Y
3 [, S! ?! s3 n& b3 WMover.h2 A* ?* L8 V, T! m, g0 R
代码:
; Y: T/ q( O5 L G* e找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü# S2 H& u2 |9 r8 Z: o7 m3 e
* f# ]8 i, s! \5 }; i9 F
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
0 G1 G) c" s! L& v! g
2 Y6 a9 i* v) s X+ g7 |/ ~4 N8 ]然后你去mover.cpp添加
1 y: o0 {' V; i4 Q9 W) w' _2 E- X3 v" F3 \) h; F3 W' I+ j
代码:7 w' ]+ u6 Q$ {2 I
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ ~' g0 G/ Q6 u9 z{; Y4 S! s. P! Z
#ifdef __WORLDSERVER
4 a: P' ~) @& ^% e% w- E/ {( \0 u4 c8 | // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó: A) |; A% e+ O
MoverProp* pProp = GetProp();
4 w) y0 f4 S7 [- z( T4 u) u" \$ w if( pProp )3 E% q) v4 ]. n5 G1 s! p
{
+ B7 j# O: P6 i1 k6 [6 a if( nJob > 0 && nJob < MAX_LEGEND_HERO )* C2 `. G+ U6 p/ w7 Q; x; {
{
A; Z; e7 c& L AddChangeJob( nJob );+ E: {) m- ? L. c# Y1 l
}else{
9 u. o5 U8 h& \- ] return;
# j1 Z& C+ w5 X( \ }
/ G3 X B+ y5 V" h int nPoint = 0;
0 Y3 X" i% y$ f$ x1 ?0 w( f if( m_nJob == JOB_MERCENARY )" ~: x9 _/ a3 O# v f
nPoint += 40; y" y# G2 M, p( N, w" G$ _# S
else if( m_nJob == JOB_ACROBAT )( [ F& b) }; i- M
nPoint += 50;( v" x# c5 O- d& Q& ~6 n+ A* u
else if( m_nJob == JOB_ASSIST )0 I& L/ @" ^$ z0 A
nPoint += 60;
: F, n( y6 I4 P+ d9 a else if( m_nJob == JOB_MAGICIAN )
0 u# |1 A8 Q5 H1 s) W% b nPoint += 90;
3 ~$ n$ Q1 B' R; k" |" [3 a else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
7 F' m( D) M9 y' Q9 k nPoint += 120;: o" e: q' U; v! O9 g) D
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
1 s* s8 C7 f# a8 l' w; q! a3 V nPoint += 150;9 Y7 U6 U# H& I
else if( m_nJob == JOB_RINGMASTER )( ?# n5 t# n( X( S- U# J$ C
nPoint += 160;/ H! G* i# |: H, b8 s. G7 S c# Q
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )' r4 ]& j0 q Q; }0 f! D9 F$ R0 w
nPoint += 180;# y! Y" A3 f0 w2 A9 w: g
else if( m_nJob == JOB_ELEMENTOR )
& o! t! H, c+ X$ X' r nPoint += 390;
& m. V& v- l2 o7 r$ b else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )3 l+ D" V, Z. |6 ?5 x; S
nPoint += 120; o) y# I& u! O" H9 ^2 V% j
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
* `3 ~! D+ z9 p/ L+ U% e nPoint += 150;
* `" g0 q% m) V# A else if( nJob == JOB_FLORIST_HERO )
+ S, R4 t' K7 \0 G/ |4 ?5 L2 \$ _+ m* Y nPoint += 160;* n# }0 C2 ~3 A. r, r3 N; _: r
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )3 y2 e) ]& C" r4 g
nPoint += 180;9 C5 T, \$ S, @( J9 K/ U
else if( nJob == JOB_ELEMENTORLORD_HERO ), S* I! N! u" K5 y' W! M
nPoint += 390;
0 b1 J4 f( m1 q
8 ~6 h) l7 M+ [9 ^& U! N9 l$ J# K AddSkillPoint( nPoint );
2 |$ Z' U) O4 B7 [ m_nLevel = nLevel;7 `& O; ]9 {0 X. |9 \- t1 M" v
- v5 V: O- L7 j- S3 r+ P9 l
SetJobLevel( nLevel, nJob );5 F( `$ Y3 O3 u6 \
m_nDeathLevel = nLevel;
) u6 F7 S- A8 [1 D' O8 n2 ]' O#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ s% P4 y |- J! N2 Q. e5 v
if(IsMaster())
/ C8 l3 m# h4 S8 | {! {7 }; I$ @9 x$ g G% {
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 V/ u! \: l. U+ R1 c% u if( nLevel > 59 && nLevel < 72 )
# y& W2 w. R6 R- j% w( p' U dwTmpSkLevel = 1;
: R1 V5 v4 s: q! m% ^ else if( nLevel > 71 && nLevel < 84 )8 N$ y* A! l9 q
dwTmpSkLevel = 2;
$ \' K) U" l% L5 p! W else if( nLevel > 83 && nLevel < 96 )
: ~: P# E( T. K( _ dwTmpSkLevel = 3;# F) b% |0 H: v" @+ L# B( E# r
else if( nLevel > 95 && nLevel < 108 )+ a7 H8 }0 i7 y1 [6 E
dwTmpSkLevel = 4;
# X X: [% T5 c$ x: m+ v else if( nLevel > 107 && nLevel < 120 )
* r) h& F- Y# q dwTmpSkLevel = 5;" E! r; j) T D/ \0 k3 ~, ~
for( int i = 0; i < MAX_SKILL_JOB; i++ )
% b. z7 p! p( e7 `! z E: N, K { % j4 W2 P7 u& l% u) a
LPSKILL lpSkill = &(m_aJobSkill);: l; E/ L, l9 V) w, N
if( lpSkill && lpSkill->dwSkill != NULL_ID )* ?5 o! ~6 N: Q- n2 K5 M
{7 B' V! [1 ?8 n3 K, P
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 j7 M8 t$ p0 [+ A5 |0 t/ F if( pSkillProp == NULL ); R6 K# R- V) k9 z4 A9 F6 s
continue;
5 F0 w1 p1 {/ l3 o$ _( t5 a! M if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ h$ X' B/ g+ @ J continue;; s- Q, |0 B; }0 P
lpSkill->dwLevel = dwTmpSkLevel;
0 h2 F/ p3 R# b& ] R% s" n6 f2 h }
2 ~- ]4 v2 Y C1 J# o. H) {8 u }
+ _, [9 e# `; U# _& X9 z! F3 o6 L }
2 R; c+ m0 L/ ? else if(IsHero())$ T2 B# C. x! _: @
{" T6 @0 c/ d2 o
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 A( S6 r' J: M, X
{
2 p1 Z) u$ F( q% {8 i/ K0 Q LPSKILL lpSkill = &(m_aJobSkill); V$ e V& r& ^5 ^5 }! b
if( lpSkill && lpSkill->dwSkill != NULL_ID )8 \& Z4 o! p, x. f
{
& r: {! ^5 B( T5 u# Q7 F ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* h& ~" J5 K$ i& |% {6 ]0 ] if( pSkillProp == NULL )! f7 M$ i# X* F/ v) @- V* c
continue;
" T6 B+ z% M) i9 v3 X9 s2 r if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! F! A( v% q: D- C& U$ F. A, K3 J continue;1 W! l5 |/ w% Q
lpSkill->dwLevel = 5;
/ L$ a+ U* [6 ?' |' }( P" x+ ] }
n9 H' N1 S3 ?( k( L1 C# P! q! w }# V; ?9 {, w n
}/ j/ K2 m( k0 N1 D* F
else if(IsLegendHero())6 \$ J0 ]) t' g' v1 q" `8 u
{0 l/ W+ n- g6 H8 T+ y9 o! c3 X
for( int i = 0; i < MAX_SKILL_JOB; i++ )
% e* ~" T, X) I3 j {
3 I. `1 g+ K/ ^0 L& o3 S ^ LPSKILL lpSkill = &(m_aJobSkill);# }; p' w5 O6 `+ M3 A7 J, i
if( lpSkill && lpSkill->dwSkill != NULL_ID )6 |7 E- A% R7 ^
{: q3 U) J! V9 O/ x$ S, B) x
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 D# }! W1 y! U R if( pSkillProp == NULL )/ E# I: ~! c& m9 f2 W7 U- T, c
continue;- \/ i% H6 t. S8 V1 g2 V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: L. D; i$ m7 t4 C8 [ continue;
1 k7 V( \3 l5 \5 [ lpSkill->dwLevel = 5;( a" w' R' [' x) z* o% Y( f/ u5 X3 z, D
}- b9 t# G+ I2 M) t( h L
}) h5 G1 }+ E+ B8 n" T" c
}+ k, K0 g" c2 t. j0 G7 v
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
; V# S$ d+ D; L7 }( ]' w if( bGamma )
9 [8 o9 a5 |" e0 S7 K {
1 w) A% r5 u- F& p4 R* J4 }1 I m_nExp1 = 0;
7 U& Q" c9 v; p; ?( X$ [ }' z/ i5 R; [; \; p; o! J
. P! {+ M8 P' N3 Y ( (CUser*)this )->AddSetChangeJob( nJob );
]- y* D; B; ?$ ^$ t g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );% L8 J6 y- L" u# y* x3 x
# @0 |$ x! T$ I1 X
) s: f4 U2 M$ K# g0 `1 ^0 O: {0 n) }
#if __VER >= 11 // __SYS_PLAYER_DATA: u, u, u" Z1 U
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
; |$ T+ F% X* [4 V#else // __SYS_PLAYER_DATA4 O1 B2 d6 i f; L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );0 p% @5 x8 @' j- R# b6 V5 N
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );4 ^) Y% J# d4 r4 {. T$ K( C
if( m_idGuild != 0 )5 P' L, _5 H6 N- ?
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
2 @2 f8 W1 `' ^- Y/ p( [ _) |2 G#endif // __SYS_PLAYER_DATA
' R4 w7 ~4 g% V, x* v" L( j5 u0 J! Q# u SetHitPoint( GetMaxHitPoint() );6 B6 w: j. Y% ~8 H! o
SetManaPoint( GetMaxManaPoint() );
/ T( r4 O+ A% a" w- \* F4 r# a SetFatiguePoint( GetMaxFatiguePoint() );
9 l' u7 c0 H8 I' d8 h |5 v if( nJob >= 1 && nJob <= 4 )
3 N5 o" O" r. d) J {
, R, G3 p3 X& S, l4 I m_nStr = m_nSta = m_nDex = m_nInt = 15;$ ]& d( T( b; Z" g3 H" u
m_nRemainGP = 28;
: k9 U$ r* L% N' a }
; p3 Q9 b5 }& z8 X if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
4 T& x5 N% x N+ j) f' L/ b { W5 H9 \5 J* v- L' Q, I
m_nRemainGP = 118;
+ @0 f) Y2 F) S //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
$ Q* I( M# g- v% [ m_nStr = m_nSta = m_nDex = m_nInt = 15;
* v* b" o& y/ { }
! v* p9 c: n$ ~" X0 t( h5 a if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
# X$ R j s0 m {. I Y- H+ G+ _! M% j8 g
CItemElem itemelem;
- d; _, l1 d% Y" s; G itemelem.m_nItemNum = 1;$ k; K9 }4 p9 g* X
itemelem.m_bCharged = TRUE;) u. O( F- R% z4 }& [
BYTE nID;
: u5 }+ g& x/ K j- c
; W: W+ O- o/ V- A6 w2 P( J: u$ Q if( nJob == JOB_MENTALIST_HERO )" t) x6 O; q9 K+ L8 l, [
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
) G! N. P5 M! Z7 J( y if( nJob == JOB_FORCEMASTER_HERO )
6 u3 ~9 g) U) C5 N, _) R0 v itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;' `7 N8 m0 Q! t/ W! T
6 \' U0 H- O( j) P3 U
( ( CUser*)this)->CreateItem( &itemelem, &nID );6 n& [7 W d( y2 I3 [% \
}
+ a' q+ y' w& W- E# j g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
6 {( w3 [* e6 R6 L$ d0 x M ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );8 f& y/ a* J+ P
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
! A# e7 u2 P" { /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
# X4 c: b8 o+ c ( (CUser*)this )->AddTaskBar();*/
9 H7 r& F% {, h4 { ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
; J) S& M% \0 \8 {#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?2 z% U& k4 p0 V! T( R
((CUser*)this)->CheckHonorStat();. j9 v& W8 Y8 u" N9 C
((CUser*)this)->AddHonorListAck();
$ c5 p) i# q" _" X- L g_UserMng.AddHonorTitleChange( this, m_nHonor);
. V& C$ V. G2 l$ a: N#endif // __HONORABLE_TITLE // ′Tà?1 r; z t1 \4 L# x. i/ V
}
( g0 B l# D6 \) P: w#endif // __WORLDSERVER, g- q3 Y z% E9 K5 v d
}
; J: D7 z6 t* z* W% [+ Q9 B" E5 J
% [7 D) W/ i$ ]) J6 m8 Z然后你进入functextcmd.cpp并添加以下: |- S% i+ K) n' a+ B* g+ ? X) T
- |5 ?( n1 o* e. l$ b
代码:
f6 a# @5 G& \* jON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )3 [; T4 T1 Q% z2 {! `. j q* j4 s& v
下面插入1 Y" P6 s5 {9 L% q4 g
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " {& Z' t- N) _0 @# A1 @
; O& x: ]- c2 o8 }
然后你去
6 D4 k( q; R. E/ S% g
3 h# T& s! s0 Z8 I; c0 o9 e代码:- J' O+ v/ g' ]" {8 c" l! y0 u' U( u f
代码5 }1 V5 u8 H3 z
BOOL TextCmd_ClearPropose( CScanner & s )2 @3 _! M5 S6 b5 i7 `0 M, e
{
* ?) `' q1 w; m6 N- j#ifdef __WORLDSERVER( F) c2 l5 T4 V/ l& l; w6 E
CUser* pUser = (CUser*)s.dwValue;5 g8 ^# o$ ^' ]
g_dpDBClient.SendClearPropose();
6 U s5 h: R, v' ~: y#endif // __WORLDSERVER
8 M! `7 ^5 g( l3 X) P, A4 Y. U H return TRUE;) M0 C% Z% x$ J+ S& }/ e
}
; p7 l- c& A# a0 c7 ]; X- a6 X下面插入
- j( S0 V+ Z' k$ c& QBOOL TextCmd_rebirth( CScanner& scanner )
' {( ?7 q& {% w. X$ s' T5 C: y{2 n) E5 e5 b; Z# ^, [
#ifdef __WORLDSERVER
" u; E. r2 E3 ~# C( k5 cCUser *pUser;, u5 O# L P( U8 w7 ^
pUser = (CUser*)scanner.dwValue;
$ d" C& f, }4 r# Z' e9 i0 X5 x0 mif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
2 h! _7 c2 ?5 P5 @: U1 O5 ppUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
+ {' Y% j) {$ ?4 J& pelse
) k* D" Z2 t" f3 i; O l; W4 vpUser->AddText("你还未达到重生条件!");
+ T& b* v! Z/ H1 G r- {) p" L( l#endif. W& T: E7 ^3 S& ~6 |
return TRUE;
! C- {. ~3 X* M5 C3 s} - @# A( J0 d% M6 m3 ^
5 q* ]! |6 j# q& o q( H- X
9 v1 k) j" d9 u
$ Y( H! |7 ~/ [5 r* `, J' {: D
D4 [; \3 z1 v, b3 q |
|