|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
7 u7 _5 O. J3 `2 H6 ^0 f; E6 [$ W% V, p. V$ n- X/ j# s. G- Z' P
Mover.h% Y4 [* ]' F- i: D0 V
代码:# O' e5 J6 O- m7 _1 E
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü2 Q. G* }. Q$ H5 u R" K% X; m& F8 p
* J7 X; Y, @. {8 M; v, n, R1 B下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
4 Q9 l) B" u1 }+ ]9 N
: i: G' B C* Z' d( c% e然后你去mover.cpp添加% T; A+ c# ~3 ` h; k$ v
% e) {3 e9 Y2 z0 l; I4 G9 H
代码:- ]) l) F4 a' [% B/ o
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); u. r- _7 N# n* B0 g' F
{
' @ q" u! m* u#ifdef __WORLDSERVER% D# |- m# x. x9 m+ p# E, |
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó8 F m8 E, c+ L4 q Z
MoverProp* pProp = GetProp();
; T4 d, G* v7 i- }! ^4 a8 s) i+ x if( pProp )
4 e* b2 @# Y; U- z {
' |) O) P* l8 y( U: L) o if( nJob > 0 && nJob < MAX_LEGEND_HERO )
& b% K- y- T% L, _" _6 U {- P8 g( N; j1 I/ c3 k: m
AddChangeJob( nJob );8 v# k$ Z, q7 e( O9 [, ?
}else{
# C, [ l I) Q' v return;) K4 l9 i; O7 z0 {
}/ X: r Q" J6 r
int nPoint = 0;
) m) }/ R& M9 Z1 v) t if( m_nJob == JOB_MERCENARY )
6 d7 w W& k- P6 Q6 l nPoint += 40;
6 Y% @. L7 s. N0 `" R else if( m_nJob == JOB_ACROBAT )
, p& a5 L/ i" h nPoint += 50;
7 u/ T( k. v$ X+ A% y" c else if( m_nJob == JOB_ASSIST )+ }& t! a' m8 h/ V! ?
nPoint += 60;' J, ~9 a5 P% F+ \9 \2 v% t
else if( m_nJob == JOB_MAGICIAN ): [1 `' q+ U( }/ R5 T4 U# U
nPoint += 90;
6 B: [- l' Y, [, @$ h else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )+ @* I4 k8 ~5 `0 m) P
nPoint += 120;; K* P2 |( y0 z
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )8 g% E G' ?# o* ~; j; o, c4 n, T
nPoint += 150;
) \, S- n4 j" I% W0 U else if( m_nJob == JOB_RINGMASTER )9 v# Z6 l: r3 b* d4 @
nPoint += 160;
! Q0 x0 Z8 ~5 Z# r5 ^* f else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ). v: N) F) I7 W* F/ Z
nPoint += 180;0 ]3 ?" S3 ~' R% q4 ]) A
else if( m_nJob == JOB_ELEMENTOR )) a$ \3 e. y1 ]
nPoint += 390;
4 O. f% S, k6 Q else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& P3 Z0 e9 p8 l8 @$ l
nPoint += 120;3 t& ?" v' T' X2 F
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )0 N4 G4 ~: _" E; B/ U" C* w8 X
nPoint += 150;
; l9 c' a$ x" I: ?, j$ q else if( nJob == JOB_FLORIST_HERO )$ Q) z/ n v+ ?+ [# t% |; u4 P; A
nPoint += 160;
& g7 v$ P& R8 B& S6 i8 o else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); N" I u2 w' v; e& K8 q ^* Z0 l. ~
nPoint += 180;: ^, X# I; i3 T9 i8 R+ F: r% n* b
else if( nJob == JOB_ELEMENTORLORD_HERO )
7 e7 Z! o" R4 v nPoint += 390;
. ~( |% N8 k$ s
% R1 N3 A( R+ j AddSkillPoint( nPoint );2 x7 ^# h/ P" ?8 U7 E
m_nLevel = nLevel;
! N, n9 B) A5 ?) _, Z2 `4 U5 W# _4 z; `
SetJobLevel( nLevel, nJob );" Q% ?8 o8 {" q6 H6 ~9 u
m_nDeathLevel = nLevel;; y5 t" W0 C0 }
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& z" l- S" ~ p1 [* e. v" a b3 W
if(IsMaster())) C, Q$ C9 h7 `1 W: B0 F: E
{
! i; I+ p, M; B" d) U3 @6 k U int dwTmpSkLevel = 1;//60, 72, 84, 96, 1085 y5 p& f) I& y: h4 F4 W0 S
if( nLevel > 59 && nLevel < 72 )! a& Z4 C: |# W5 ]. S( C# f% N+ x
dwTmpSkLevel = 1;
! g2 e3 M9 s% [5 L% X# @# d1 H& ? else if( nLevel > 71 && nLevel < 84 )% D6 `9 @. V) }
dwTmpSkLevel = 2;
7 d" b4 o7 ~6 V0 @ else if( nLevel > 83 && nLevel < 96 ) t5 l& R( L \) j, Q. n2 n+ H1 f
dwTmpSkLevel = 3;- q* O6 X/ D( M& v& Z
else if( nLevel > 95 && nLevel < 108 )
$ V( s: s5 I( f3 K) \. J1 G dwTmpSkLevel = 4;" Q; z# N$ }: K- M: k" r
else if( nLevel > 107 && nLevel < 120 )
& O" Y" U, N K# S+ G4 M7 i dwTmpSkLevel = 5;! B/ s" D' ?7 G' ]2 y1 a
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 W( u- T' c: p3 x1 h4 o { 1 j, Y) k/ V! e
LPSKILL lpSkill = &(m_aJobSkill);
5 p/ E8 ^: X | if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ |% b& R: Q1 C {+ d% p! ?' c J+ k, r
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 6 |' i" P7 Z. ?5 W4 ^' t- [
if( pSkillProp == NULL )2 r, m* |7 L) X
continue;. X# B$ V( j3 g8 W" ~( M6 C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) A+ A4 A( C4 i/ B, j6 {
continue;0 J K/ a: a% G& O5 u
lpSkill->dwLevel = dwTmpSkLevel;# L# ~' H$ y6 x. M) x+ h; {( t
}
$ r* L5 S! p8 D% C9 A }
! { f o( O4 k! f& T. a+ h }# j; [5 ~& ^- A
else if(IsHero())
( }) g# m( }7 A" E {
: H: f- [5 o, K% ]% i for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( c* I h5 _3 j- j$ m
{ % D4 h- ]9 V5 L2 y0 s$ J b
LPSKILL lpSkill = &(m_aJobSkill);
) k0 }1 \' U) d! Y+ _( |0 V if( lpSkill && lpSkill->dwSkill != NULL_ID ): G, f/ u* n% M! u# y0 T5 U
{
) m. |( \1 _1 v ]; f9 q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- n) ?/ M% b+ J( N/ ]( S1 k if( pSkillProp == NULL ) ], q( A d& G7 y. a$ M3 f, u" k
continue;" P; A+ ?4 E6 V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' s* x' c% {9 s continue;: h7 `4 w. l" }
lpSkill->dwLevel = 5;
* p1 G! @$ @8 F8 v }
9 ?" a, C; _4 A/ V }
" u; M& @0 s1 c( U+ a4 o }
/ M( G! T+ O0 a P/ O4 j else if(IsLegendHero()); C+ a$ m7 ]; O; M5 J8 ~
{+ Q/ L/ m; Z: G
for( int i = 0; i < MAX_SKILL_JOB; i++ )
/ A/ Z* O2 X* e) X4 `2 A; a, v { 0 ~/ `: h: M2 E3 w: \/ u
LPSKILL lpSkill = &(m_aJobSkill);
. I2 y4 b4 c% d' u5 d2 T; J# ]0 ] if( lpSkill && lpSkill->dwSkill != NULL_ID )
: D# j8 g) Z1 G. g6 b$ s6 j: v {
0 @ d2 o- i' e, `; l* p& ^4 y9 a ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. H) \! H4 O, t. D6 E if( pSkillProp == NULL ) v/ w: x6 x! `* V$ D5 E' V* q
continue;
0 D. P! f# K" D$ Q S2 t' J if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" [# a" M9 m6 j0 @& [% o continue;, y4 i5 n, G( E3 `" \3 A
lpSkill->dwLevel = 5;! q# P& n7 U& s: l" Y+ x/ J
}& @6 i# R0 ?' t8 {
}! Q- y, ?( m- P/ e U
}
0 t0 U! Z+ z) e#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 J+ g! m8 h* g, c7 Q2 Y if( bGamma )
) Q- H/ P; L" L0 t0 k {0 p/ p3 O+ p- T
m_nExp1 = 0;/ O: S) |- e4 x3 M5 ]' B' u
}0 x& f7 N8 d& l1 `' G& ~1 s
% \# e8 B. c+ M1 o
( (CUser*)this )->AddSetChangeJob( nJob );- }2 |: D5 `) F5 }5 l, Y/ @0 p
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
: m/ m7 D. w$ A3 v8 k9 f4 g
; V; E+ d+ f- L8 Y# T# B# l0 N8 R8 C! I$ c) _/ U" l/ ]% r3 r
#if __VER >= 11 // __SYS_PLAYER_DATA$ [/ d- Q0 T7 i5 A8 n
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );' |& N2 u3 ?/ D- ^4 l( x% w0 \& h
#else // __SYS_PLAYER_DATA3 E$ K, [! C* x1 h: a; K" u
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
1 ], X" V# i" m; O2 R3 o7 ^ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );1 x- V0 F8 h' A1 ^$ j) \6 W9 `3 v
if( m_idGuild != 0 )
3 @2 _( ^0 n% R6 _' h$ ~7 ` g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
% G2 ]1 l+ ]; N' }8 C7 ~5 N#endif // __SYS_PLAYER_DATA) ?9 i$ Q& k% j3 V: a/ V
SetHitPoint( GetMaxHitPoint() );+ i, P3 F# R# Z$ _1 ^+ W1 H" L
SetManaPoint( GetMaxManaPoint() );
X! Y; [: d6 r* [% ^ SetFatiguePoint( GetMaxFatiguePoint() );! G0 O0 q7 q. Z- y# ?
if( nJob >= 1 && nJob <= 4 )
" f* Q# L( B3 O {, w4 ] h' v! _- x( m
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 c( l. @* r. q$ m1 U
m_nRemainGP = 28;
' C5 r. m! h, B% d }
& E; n9 _1 ^+ L$ G if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )+ q. u1 E3 k y
{5 T) w: D2 k( K
m_nRemainGP = 118;- p9 {4 q. ?5 ~
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;9 H/ H3 P8 t) ?( R2 P
m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 r& o5 r& @( E" b# q }
5 w8 [9 |; h# Q! C$ D1 O if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
k% p- ^% e) D2 e U! O1 C8 N+ K3 T {
: Q- h- C) B0 u( K: s/ b) m" ^8 { CItemElem itemelem;- n+ z0 ] w# o6 [
itemelem.m_nItemNum = 1; q5 n" c o X" t
itemelem.m_bCharged = TRUE;
/ B$ k# S# U; y7 f4 F/ q BYTE nID;/ t& t9 f* U4 D3 y
- l9 f# A% ~1 ^( a2 l
if( nJob == JOB_MENTALIST_HERO )
5 q6 h7 `$ L! x4 D2 i( s itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;' J, q) e# N% s, o3 w, y
if( nJob == JOB_FORCEMASTER_HERO )' W( ~: v2 O1 b
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;5 Q$ e9 [; [4 ]; B% C" Y
0 |& M, P3 N6 d! D; G ( ( CUser*)this)->CreateItem( &itemelem, &nID );
7 \. |/ A4 s1 b5 @ e. C' G }5 W; c8 [7 E$ H/ i( M y2 b5 M- n: n9 a
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
9 a& {$ {# ]$ Q+ D9 V6 [& H- [' J ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
/ A" F* ^- S, W' L" R ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );2 f% H. X* N& V
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );7 y0 [/ R8 K$ m" V' g8 S
( (CUser*)this )->AddTaskBar();*/% z, ^/ H/ f" F9 G" B& @
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );! I# w7 Q! l4 |2 _
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
& Y& f4 Q% a# A0 j ((CUser*)this)->CheckHonorStat();' }/ H. @2 g$ @
((CUser*)this)->AddHonorListAck();
8 ]/ V; ~; M9 `% Z g_UserMng.AddHonorTitleChange( this, m_nHonor);
: c0 n- I2 y2 s: `8 ?1 ]#endif // __HONORABLE_TITLE // ′Tà?; u6 B7 c, c4 E h( p2 F
}
8 J$ w' h3 u0 y2 t" h#endif // __WORLDSERVER
) j, p# B+ ~. p( L, R: ]) ^} ! A7 E, o* [% k" z* @$ G1 Y% h1 }
0 {4 R |# ]" V, z' k% m然后你进入functextcmd.cpp并添加以下+ _) }. W# U0 E: |/ a5 p
& r* M! z0 c+ q8 M; ~
代码:: @/ L7 t6 w+ \3 Y. W5 E
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
8 x0 B3 N# C' O3 C下面插入8 S, M% `0 a/ N2 B2 O
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ; S9 F3 |; f& K3 c7 @& U2 }4 k+ m
, G( t' ^" a4 s$ O! K; _/ M然后你去
: {! c+ h4 u7 k( L
8 f, b3 z% U0 y* I1 C代码:
p' m# ^4 n( S' b# O代码: y6 {, d! u3 S# |$ H5 C
BOOL TextCmd_ClearPropose( CScanner & s )
# m" F9 ^. W* T9 b" \4 s9 I- j# M{# j# v2 q; U5 D) _' w
#ifdef __WORLDSERVER
2 z" t( t$ a9 E CUser* pUser = (CUser*)s.dwValue;
* e( S% J" _) W9 ]4 x. M8 M) w g_dpDBClient.SendClearPropose();- r" q3 Z7 x3 n0 J* V \0 y' x
#endif // __WORLDSERVER: L& }8 j8 R6 C
return TRUE;* \" J) c8 f6 ^/ h- g$ L
}
3 `8 d- k2 n9 Z: E& C下面插入: T2 y' q6 e |) E4 W
BOOL TextCmd_rebirth( CScanner& scanner )
+ W( R* O( |7 K1 G{
4 c9 P1 B$ q: N#ifdef __WORLDSERVER
# i6 W! i, \) K8 yCUser *pUser; |7 u5 p/ F5 `$ `
pUser = (CUser*)scanner.dwValue;
# o8 \, P6 ^- j" Jif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())7 M" i% {9 I: m c e
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);$ X; \ ~+ t, h7 u6 C
else1 p2 u$ D$ F# B5 |- ]
pUser->AddText("你还未达到重生条件!");
; T B5 [6 s7 E( {% e. ]#endif
3 b# f t# F. wreturn TRUE;* }/ e: y# x1 |8 A5 H
} ; z: p3 [4 Y& e9 ]# o d0 N
9 l0 i9 Q, \/ V! W
0 S {$ }" U7 ?, M) @7 `8 d s9 m! [: |/ R3 G4 ?# Z* z- }6 z8 X1 j
+ v- e+ W; G7 B |
|