|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
) G$ H$ L2 p/ T2 J+ k9 H
' h3 w- o7 c* c2 V( D9 FMover.h9 ?5 R6 c9 i8 K5 M! a/ y; J
代码:
$ v) O. K9 m! w+ ~: T+ {找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü! S/ a; B% }1 [( C: C; G! T' E
2 k: `) b; R1 G' e- a" ?下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; " p# y9 u# }, g; E8 x
1 R' a7 o- @1 G% j; t+ P; H, b
然后你去mover.cpp添加8 {7 Q' B$ u# j" J$ b/ Y. S" f# Z
4 o6 x! M( b3 d+ Y# @
代码:6 I Y! R o: b1 {
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )5 w5 q( m% O% B) @% Z% P+ U
{
9 a g o. ~6 r#ifdef __WORLDSERVER9 \9 n3 }) o3 j! w* N) I8 P
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
8 x" \7 b1 F) ]3 `8 ^" E5 x8 n MoverProp* pProp = GetProp();* K) e& G! A( P, T2 O1 `1 A
if( pProp )
% m/ D) Y, ~& J9 a9 H {
- D" j; F" S ]1 ~) F: d if( nJob > 0 && nJob < MAX_LEGEND_HERO )2 j. j X& X9 ]7 w
{
& G! g! y' W, }1 z$ C( i* ] AddChangeJob( nJob );
, L8 e! n2 i, q3 p2 d% ]/ R }else{
' e1 K8 M4 |. | return;
, M$ e1 R$ ~ q7 {) M$ f7 _9 s- A3 |! U }: p8 }( I. n9 {: ]: ~
int nPoint = 0;, ~$ x3 R+ h# t
if( m_nJob == JOB_MERCENARY )4 ]; V* M5 x) e+ C/ s c
nPoint += 40;; R9 U) a& m1 H. F( o! L
else if( m_nJob == JOB_ACROBAT )' i5 ~/ @! [/ O$ u
nPoint += 50;
& `+ \( L# G* v7 m6 D* Q, K else if( m_nJob == JOB_ASSIST )6 [# x" n* v0 a$ l/ {2 Y3 @
nPoint += 60;. _( }- z- [ a. G7 w! S: R8 G! q
else if( m_nJob == JOB_MAGICIAN )
$ M. F! {' b* K3 Y2 R nPoint += 90;. I8 B! G9 l& h* g2 m
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )2 {6 A+ j) i2 J/ v
nPoint += 120;+ D+ U( {$ B! `# ]
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )7 |! h7 X4 f2 d O7 s# C C$ v
nPoint += 150;
& Z; d' k7 g& X* w else if( m_nJob == JOB_RINGMASTER ); t+ [& \8 O- ^# [
nPoint += 160; _- h: l9 v3 Q: q) l; f
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
6 S1 _0 p! X+ r* T( q. { nPoint += 180;
5 b- _: Z) Q7 e4 N; T: N5 V& b+ w else if( m_nJob == JOB_ELEMENTOR )
0 w8 N8 t. W7 a8 G& W9 ]% a- U nPoint += 390;
6 [' t7 t: X! J, Y9 ~0 K) b6 @# t8 d: ]4 ` else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )% Y& I) }* q5 n1 j' v7 s Q! G& @
nPoint += 120;
5 \# N5 e8 A2 J5 d+ j: E1 k else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ), }5 f9 i" Q( I; _
nPoint += 150;
3 Z; m! i j7 n* l; t; { else if( nJob == JOB_FLORIST_HERO )
4 ^1 s( ~' y# e! M2 m s) y nPoint += 160;0 T3 W$ Z, w( s$ o, {2 B& u
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
7 l3 v" ^2 Z, [- ]; n2 v$ q nPoint += 180;
3 x- [6 e0 {2 V* [' \ else if( nJob == JOB_ELEMENTORLORD_HERO )
9 d4 K& w2 q! `* Y' B7 ?0 b" ^ nPoint += 390;4 e9 j! ], ^7 w/ }1 n4 Y- `% |3 a
2 P1 F+ C! x9 M" P+ ], b AddSkillPoint( nPoint ); K7 p9 U) V; D2 v2 F
m_nLevel = nLevel;
5 w5 p! p' n2 k" O+ c2 {' F$ w- C: f, F/ w/ E/ @2 g
SetJobLevel( nLevel, nJob );7 _& T+ E E0 N' ^4 P9 H5 T% R
m_nDeathLevel = nLevel;
* ~' r# [3 ~8 a/ b$ ^' y' S+ R#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 q8 z4 t3 w0 Y if(IsMaster())
7 L1 X/ q: j1 k5 B5 k {
( k8 w0 [8 M- [/ o* N/ |, x int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
. G9 B' m/ i, T7 a2 [% A6 ]4 u: _4 p if( nLevel > 59 && nLevel < 72 )9 D1 F6 i) `. a6 r
dwTmpSkLevel = 1;
, V5 N v$ \8 L. o; H else if( nLevel > 71 && nLevel < 84 )
' C" p+ L. x& z7 y0 m( y: l dwTmpSkLevel = 2;
0 o9 o. n2 q0 K0 ^6 \ else if( nLevel > 83 && nLevel < 96 )
% ?0 t5 C1 a# p2 u" T" v; _ dwTmpSkLevel = 3;& E# d; R4 I+ u5 a- p8 e* y
else if( nLevel > 95 && nLevel < 108 )
: Q! x$ x/ l6 T dwTmpSkLevel = 4;
L; w1 V. y2 a- R0 \7 r, N1 Z else if( nLevel > 107 && nLevel < 120 )& w4 K: p1 B" |
dwTmpSkLevel = 5;& K* Z+ Q) x4 D
for( int i = 0; i < MAX_SKILL_JOB; i++ )
; |' {) {* z* R; V' m3 r {
0 u& y# n J1 w& s6 v1 d LPSKILL lpSkill = &(m_aJobSkill);
$ _, j4 {% K9 {1 G( Z if( lpSkill && lpSkill->dwSkill != NULL_ID )
, w6 i, e7 K( H0 ?& B {
9 N: J1 p- n/ V9 |8 w/ N1 | ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 h: F% g2 t3 E0 r* x) x% D. b
if( pSkillProp == NULL )# w' u5 d9 Y$ B' \: a& z
continue; G0 R+ h9 D( Y1 e6 Q
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 ?/ k# H) n7 V continue;
& U0 g4 F- e6 B lpSkill->dwLevel = dwTmpSkLevel;' ^; _2 Y+ T7 z h4 r4 `
}& d: X9 e$ ~) n7 K& T2 W
}
0 J( I \- u9 B. L4 w3 V- E( M, N6 h }( Z& T0 L. |! w! ^) Z9 v
else if(IsHero())- V3 O* a9 ?8 h$ b9 L1 \; e) J
{+ D I1 | N+ n6 X
for( int i = 0; i < MAX_SKILL_JOB; i++ )
" S7 u( o3 Q5 a& }1 o, E {
' z) s% N! j9 r* u( H LPSKILL lpSkill = &(m_aJobSkill);3 X0 @0 y$ V2 T4 f) f" c
if( lpSkill && lpSkill->dwSkill != NULL_ID ); T, d8 m& e# ?0 n: O
{
3 F3 R) S! E7 `- u3 R ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 z! Y. d% o y2 l if( pSkillProp == NULL )$ D% C( B' d; A' V5 J5 H- K
continue;
8 o/ P6 P( q' A if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ F A3 X7 X7 N" \
continue;
! l. f. Y5 s) f, V5 O lpSkill->dwLevel = 5;
/ e4 X. V" p: e }
$ P% y) h1 F( d! q2 O+ s* X ~ }0 o6 A, [2 y8 ^8 R g4 P8 c
}- O+ v9 _9 H' X1 P: S L4 \
else if(IsLegendHero())3 S+ k0 y0 l4 s9 ^
{% D! x. N: C& r; j3 g6 }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ z1 U" n0 a0 O/ s% m/ [. F
{ & z& O5 B8 J/ s
LPSKILL lpSkill = &(m_aJobSkill);' x7 g; b$ S3 v, v* W1 q
if( lpSkill && lpSkill->dwSkill != NULL_ID )' B4 W! s/ j: M6 W* y, R4 V" N
{
& ?- @6 I; B( g* k, I: z8 B; r ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # o. o ] y# J
if( pSkillProp == NULL )9 L+ q, b- C# a/ x9 ?. r
continue;
7 N7 c! C& P( ? if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 |1 @) v7 p( ~0 R- V continue;
; K# r3 {0 e z. k# v lpSkill->dwLevel = 5;/ {5 ^6 z: Y/ q3 ]$ H( k+ w! x' T3 i
}! s" a) I# \* {# ?7 w- I
}
; Q4 j0 Q; S T! ]5 c$ @ }
# J$ V) L; A5 L! N# {' X' y" u#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans2 \% z4 B6 H5 B1 P# z2 v Y) |
if( bGamma )0 o5 `$ W* K# B1 |$ }" @# C9 A
{
, I# Q4 l0 ]* a m_nExp1 = 0;- j, n' {" v, k0 n( J5 y6 a
}, b, k$ ]- a+ Q$ c- f; _% B5 {2 P+ W
" n' v" K* c1 a$ H% O2 ]
( (CUser*)this )->AddSetChangeJob( nJob );
) Y/ l3 _" n8 z W+ s3 s- W/ ] g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
" H& y- y! x7 J# z$ \
; u4 _. S5 Q9 G! `0 w2 r% R1 b5 s! `1 `. X. |' T/ h! o
#if __VER >= 11 // __SYS_PLAYER_DATA
6 h: }: @' K2 t4 u# f7 @; K, S g_dpDBClient.SendUpdatePlayerData( (CUser*)this );! l) S0 }5 t5 }9 v: z, N+ }0 C
#else // __SYS_PLAYER_DATA% D+ k! \$ Y& v3 \0 Q4 t
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
" B1 c% q8 R1 w5 y5 t/ F5 s5 a g_DPCoreClient.SendFriendChangeJob( (CUser*)this );# M1 m m+ z9 ^( `' u: c% [
if( m_idGuild != 0 )
# R2 y" f& u2 S( W g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );) Y$ y8 w( ~. s, N
#endif // __SYS_PLAYER_DATA! ?! m5 V1 H! r6 t
SetHitPoint( GetMaxHitPoint() );% x. x+ A' ~9 Q5 B& \9 S/ w
SetManaPoint( GetMaxManaPoint() );9 e4 R7 N' l. m: q, z5 b. j3 f/ J
SetFatiguePoint( GetMaxFatiguePoint() );% \9 L5 ~+ Q) e9 f1 q' A/ [/ Q! I* z
if( nJob >= 1 && nJob <= 4 )5 A: Y7 h& p- U! R. k+ [
{
- K# ]# {, Y6 _3 r1 z2 ]5 E- B m_nStr = m_nSta = m_nDex = m_nInt = 15;$ T2 V! \1 A6 m- _0 ]
m_nRemainGP = 28; C- i7 s& R$ {' B3 M- F: A+ M
}% i# a, l' X( M. m3 I- \8 }5 o4 O/ K
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& \2 Z0 [7 Q( `: f6 s- c" z
{
1 Z+ t- @: n4 J6 m8 @ q- w9 D% ` m_nRemainGP = 118;6 _3 {4 n; e0 ]
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;0 z g5 k- s+ Q( h/ g
m_nStr = m_nSta = m_nDex = m_nInt = 15;( _/ s" i: V, C4 G
}
7 P# X! j! \, w- D* f3 F% \. k if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )5 S7 J0 V8 D# U
{1 s7 {, Z# a$ B5 m; \8 T. j# w
CItemElem itemelem;
5 D. h& ]. j1 b s itemelem.m_nItemNum = 1;
a# R5 b- S. O' U9 D( H9 }4 k( F itemelem.m_bCharged = TRUE;
3 q- Z, ~2 t6 M8 o/ n* B8 w, b BYTE nID;
) M/ G2 ^0 Q7 ~8 D0 c2 X
$ M+ a+ B9 s. Z) E if( nJob == JOB_MENTALIST_HERO )
6 b9 J" F: F j8 {! X( [ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;/ Z+ ^. c8 f# e4 x7 B
if( nJob == JOB_FORCEMASTER_HERO )5 S0 q; Z8 L: d
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
* _) [) Z/ Z/ [8 A
9 u; d) \6 n- [- S! ] ( ( CUser*)this)->CreateItem( &itemelem, &nID );
. n# s( E& s3 R/ |* G+ r, b6 ] }0 `- I" S" _4 E; ^. W
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
5 I7 p. l, U" L. w, x ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
& w c& N. @; p. d ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );. [, |7 y; r4 \* ^
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
! ?" n; r* \8 ]; j/ A7 z' u ( (CUser*)this )->AddTaskBar();*/( x6 X0 Q1 s/ g# `7 z% U
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );- n- E% }* v! _% Z
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?' S p& E( y+ W( j
((CUser*)this)->CheckHonorStat();
8 {. b, u: e/ D t ((CUser*)this)->AddHonorListAck();, N$ z: h' j4 r
g_UserMng.AddHonorTitleChange( this, m_nHonor);
+ \2 ` G! n' ~, R4 v W/ s, h& h w#endif // __HONORABLE_TITLE // ′Tà?6 _* M( w# w7 q$ ]
}
3 d, Y4 Y" R1 {; ~! ^#endif // __WORLDSERVER
* V5 `9 I( l" i1 ^- F1 P2 z} 0 `+ t$ F. V9 m7 C( b: O
" V3 C3 A, O9 t( C) D- i
然后你进入functextcmd.cpp并添加以下
- n6 \* ^) P0 n1 w2 Y, S
2 L4 j7 d9 @! w0 g6 H代码:
/ Z8 S* W* t) S' F0 ~+ }ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ): c; R; ~: c3 x( k: s! f' `
下面插入3 p! K) b' j4 `2 p( r* ]
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
0 n. X; q: Q+ u+ f8 V
/ A0 j* z% h3 m! j, J5 V) ^0 Q9 M然后你去0 q* c& w( j, z4 ?6 d# y
- v( t/ _9 J% K7 g代码: w% H+ Q3 K! T
代码
2 G3 _4 C" v8 j0 A- d# F7 }) I4 {BOOL TextCmd_ClearPropose( CScanner & s ): d/ @: M; H6 o; Y+ Q5 I2 U) N$ d
{
* |9 l) c# {. ?! A1 ^; ~, M#ifdef __WORLDSERVER
3 N( Q, _5 p h: i# k CUser* pUser = (CUser*)s.dwValue;) j: f' Z1 R0 ?8 A
g_dpDBClient.SendClearPropose();
7 ~8 i: K# y# J5 u3 _9 c#endif // __WORLDSERVER
+ D$ z5 |1 [% j8 f return TRUE;
. o. n8 q! }6 b+ ]5 U}2 N. S2 G( v# {8 ~7 ~. K, d
下面插入
h1 M, z4 [$ b t9 r, m+ n# }; rBOOL TextCmd_rebirth( CScanner& scanner )
5 q! E2 Z2 A4 B/ v{& u5 |: K% n' T6 U. e O& m; o9 ?1 t
#ifdef __WORLDSERVER
5 H! m+ g, \' H/ `CUser *pUser;
0 l W p# b2 r) F% \, ^pUser = (CUser*)scanner.dwValue;8 G7 V* x3 `- H
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
' h3 T9 r, I% ^6 VpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
( s+ X5 B1 `" I4 l6 ]2 v8 ]else
`) w+ f! G' @! spUser->AddText("你还未达到重生条件!");
5 d4 h8 n7 q e; f- W4 y#endif
9 H" B6 `; ?7 }! Hreturn TRUE;: O Z; Z7 P$ k. `5 N0 Z
} / P1 r/ _+ Z5 @8 A9 f
/ I5 z0 N8 q) l
! o5 N( s% O# i# j; _) A- G6 F, f; Q- u! @
" q# k# `/ x- m" \; t' | |
|