|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel z: }$ z5 \8 x
9 C. @( [4 Y: k D" N/ G1 [; }
Mover.h
8 P# \& Z& b. [* d代码:
9 y8 U o" {1 Q' k. Y找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
# x7 W4 ~4 g1 {# J) n* J: x* V9 d
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ( s, S6 v2 ?; L% T) @9 k s0 E
" ?2 D9 t* }% F9 t
然后你去mover.cpp添加
* O1 i5 f$ \& Z* _- A( l8 v+ n2 {+ {
代码:
1 K4 [9 O% y+ Q* N7 G! |void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )6 c' U# Q; [0 x( e8 `
{
9 q4 E6 M; Z. s* |: h#ifdef __WORLDSERVER) f# |9 D, c$ p! D/ e6 E
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó9 Z0 E& v, \- T; P' H7 x" i9 X- l
MoverProp* pProp = GetProp();
- n4 n& A* t }" n if( pProp )% L$ X- O J" Y z7 V1 s
{7 X( M- \( a# N5 u% |+ W* @
if( nJob > 0 && nJob < MAX_LEGEND_HERO )/ x- i& w& O- N" s4 q9 M* A
{
; o, s) B+ S# p# O; Q AddChangeJob( nJob );) p9 d# m8 Y3 `4 I" P6 o
}else{
6 |% J4 {& p# N$ ]0 x return;
6 t8 Z- d" {& |( O% O4 ` }; n" A3 C9 ]% [4 \+ ?
int nPoint = 0;
' A7 v( X5 P# z/ \! F if( m_nJob == JOB_MERCENARY )
, [2 Q0 S2 J8 J$ R! H nPoint += 40;& K U' q5 z6 H; Z6 [% R# w
else if( m_nJob == JOB_ACROBAT )
1 }8 S7 W& Y3 k8 S, E% F6 I3 g nPoint += 50;
- C3 m* V9 ?3 g& X4 S else if( m_nJob == JOB_ASSIST )
' p: p. v" {$ l2 J. d e nPoint += 60;
, M) j) y: ], u7 a, ?) _ else if( m_nJob == JOB_MAGICIAN )
2 F+ u$ F# R( {! s9 U% D b nPoint += 90;
, A: }+ Y4 F- ^) y else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )5 L4 L$ i5 |, o' y* G5 Q1 V
nPoint += 120;2 m) {# z# ~) a# ~/ `' ]
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ). _: [9 T" V. k
nPoint += 150;
. y9 N' z- L4 z else if( m_nJob == JOB_RINGMASTER )
6 `7 R" S+ T! y8 w( } nPoint += 160;$ o) [ `: k% A4 a0 U V
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )6 i6 x% _9 ^% A( C* [
nPoint += 180;8 C& R+ D: V' t- O% t3 U
else if( m_nJob == JOB_ELEMENTOR )
$ j# |! V6 @' Y/ i5 f% d+ S nPoint += 390;6 Y |) P2 V% l+ E
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
3 x' w6 g8 M L/ M nPoint += 120;+ u- A! i1 n0 R: p! L
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
8 y& Z9 A, }% T nPoint += 150;! [1 e2 ~/ n/ M8 Y
else if( nJob == JOB_FLORIST_HERO )* d1 \5 ~& \) `% {) e& i6 k
nPoint += 160;
# Z; B" N6 a0 S8 Z& d else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
9 ~4 _4 x% S! c4 w: Q) P6 h9 d nPoint += 180;! ]2 \/ ?; G9 I
else if( nJob == JOB_ELEMENTORLORD_HERO )8 I8 k' r& O' c5 ]9 {
nPoint += 390;
+ n' k# M l$ ~4 t) j3 G2 q H( n9 B2 \7 L8 V/ J' Z
AddSkillPoint( nPoint );
" P4 Z4 p- R+ _ m_nLevel = nLevel;, \ V8 u* ~9 K/ ]3 e9 Z
6 H( l7 k1 m- E* j5 O, g; ? SetJobLevel( nLevel, nJob );
- P2 E( H6 m, n2 J3 C2 y m_nDeathLevel = nLevel;: S4 x/ Y8 h& t# \- d8 }' f
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
& C. ? {: c; m9 e if(IsMaster())
, k1 {; ?+ ?* x F- g0 T' e {
& n8 {9 x0 R$ s Z8 x! r1 O int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
4 t8 S. h4 ?7 i& {: a if( nLevel > 59 && nLevel < 72 )6 E6 N! u; D. p( a" _
dwTmpSkLevel = 1;
, ^* |1 ]. A/ } else if( nLevel > 71 && nLevel < 84 )
3 f+ ~* m k) i% a! |$ B dwTmpSkLevel = 2;$ t8 z E/ @: v! }6 ^
else if( nLevel > 83 && nLevel < 96 ) z7 Z J6 u. C
dwTmpSkLevel = 3;' e4 J! @7 U" a
else if( nLevel > 95 && nLevel < 108 )
S( M( O9 z$ z9 e% k dwTmpSkLevel = 4;; T8 q) L8 T& J3 J8 o: J0 X% E& p- S0 F
else if( nLevel > 107 && nLevel < 120 )1 i7 x6 K' K5 ~$ t+ A0 n2 z
dwTmpSkLevel = 5;2 A" v f: @6 t8 s5 D! G
for( int i = 0; i < MAX_SKILL_JOB; i++ )
, @% G9 M t P' d; E { G3 y+ S+ m) }4 F o- _: x! H/ T( a
LPSKILL lpSkill = &(m_aJobSkill);: w: K6 V; u6 D5 d' c" f4 u5 e
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 S' X$ W( F5 V! A+ _ {
8 n6 u3 B. q9 n8 B ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); / C3 N( a# x5 a U" O8 [
if( pSkillProp == NULL )
, s! W# W( ~/ y, y8 B1 D( A continue;1 @ _% |8 G0 C# A6 _
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& Q! }( x5 k1 Z& C: ]% A continue;
( N9 h/ D( o* Q" N- F3 ?7 z lpSkill->dwLevel = dwTmpSkLevel;0 G0 b8 h- h! j U$ X. a
}
+ Z3 J& ?2 f3 Y+ H% h }# e2 J! N6 d3 `" P
}/ q/ u# _: c5 z3 O' k
else if(IsHero())' ]1 ~3 E7 Y5 D2 ^) q
{
$ W s9 D2 i; z& D0 u for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 K! \1 y' q+ F6 R& K* ]! @/ |4 ] {
& J& ^5 M. U. D' N LPSKILL lpSkill = &(m_aJobSkill);
7 y$ I* T8 @( W) h if( lpSkill && lpSkill->dwSkill != NULL_ID )+ E: y6 w, Y+ E# K
{
( }6 i J3 ?# r ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# N- v5 c6 T% h$ J9 j if( pSkillProp == NULL ), o a# ?/ w/ F6 x
continue;
9 }& x/ g: S8 U; \6 T* T1 R if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) R7 S9 I( [8 x( D7 H2 N6 x+ e continue;
% _6 Y$ p# p6 K5 Z lpSkill->dwLevel = 5;
- L7 [" K/ q" A1 W/ m$ K }6 H0 R+ E& `1 U1 y& \
}2 y- z5 y2 X* g) V5 W2 S3 s
}" ~1 \: B4 ]% _6 h0 g
else if(IsLegendHero())5 [5 [. B4 i" T" @8 z5 t0 _: v6 j+ l6 s
{
. g: B4 Q- k" l1 Z5 r1 f for( int i = 0; i < MAX_SKILL_JOB; i++ )
: O9 I. ]( L+ R4 G& H; |# h {
8 @8 L" k3 S0 c LPSKILL lpSkill = &(m_aJobSkill);* ~* n) W) k6 z# i8 @( u, F
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 O/ _% O% k W( y& J9 A8 I) J {3 \& y3 [. }0 v( P9 c8 Z5 U9 ?. H6 L
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 ]7 H/ J% J$ }2 W if( pSkillProp == NULL )
" B, i, ]. t8 @+ o( |3 {$ E$ L continue;! E+ d$ m# G2 x7 p+ b6 v* y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) I5 {, @3 z0 U$ o" M
continue;
: q8 Y/ A* D. _" {' j+ |/ H lpSkill->dwLevel = 5;: W4 c1 q0 m1 c
}
K# Q' S! v, i8 z7 E2 ] }4 k7 f A. M- ?
}% v2 I( Q4 K x7 ~% v: D
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# ^& X4 v |! n4 s j8 j3 [ w if( bGamma )* W# C' C, [: ]) S, ?
{7 s3 D4 n# H& Y
m_nExp1 = 0;, h) }2 [6 Q/ {
}: A5 ?# B: C$ v* }3 i/ l
' p* M/ H) L5 o, g
( (CUser*)this )->AddSetChangeJob( nJob );
2 j& g# s1 C6 v5 [ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );5 T! P4 S/ w3 z0 U% b( [3 y, t R6 }
# }9 Z$ P0 p+ k: H) Y7 q9 \- Y
0 X: d- y; {! y7 O; H6 o#if __VER >= 11 // __SYS_PLAYER_DATA$ U) ]3 K! C d$ N# W4 E
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
2 L, p$ q- M+ B#else // __SYS_PLAYER_DATA
; M7 ^' e# w/ h M9 V* d g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
6 ^2 T. p0 U) O: j6 I g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
. }' b6 P* y7 o3 @ G1 l R7 Z if( m_idGuild != 0 )& ?) r5 Z$ M" j7 A2 \9 E8 E
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );# S: q& ?" k# _1 t M
#endif // __SYS_PLAYER_DATA+ U2 ~% G, u. h6 n- S- D
SetHitPoint( GetMaxHitPoint() );
' K9 b& a* l9 H SetManaPoint( GetMaxManaPoint() );3 l. \0 l% m a0 p
SetFatiguePoint( GetMaxFatiguePoint() );
1 I: ^: A9 {7 m% N; E if( nJob >= 1 && nJob <= 4 )7 t! P- m5 Z( X" t1 H$ d) ^1 k
{
" i3 q) e5 e5 S! c; O m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 T& t& N4 ~5 Y! { m_nRemainGP = 28;
! J* X2 i- R/ M! g2 @& g8 ` } Q D- u) o# L
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
1 p3 ]$ |4 T) z {
5 r7 S I- Z- q. } m_nRemainGP = 118;
' e. \ L" F' ?- T0 B //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
& P+ E8 Q; n) o1 q m_nStr = m_nSta = m_nDex = m_nInt = 15;5 A* N O$ z/ X3 h+ C/ E& z( y5 f
}( `! \) y( Z, m* I7 n
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
6 O- v* d% w5 ]# s {
N. g V3 h& |+ p9 P6 e; d CItemElem itemelem;/ M1 g a, a* |* x0 ? F
itemelem.m_nItemNum = 1;
# I% r" a+ H. I$ }( c itemelem.m_bCharged = TRUE;
: l7 \9 O8 |: f! K- k5 t BYTE nID;0 Z/ W6 F0 I" {! t' q# U
- ? o ?: `: i0 i, g if( nJob == JOB_MENTALIST_HERO )
; c2 x9 T% H) M6 [% ?# s& z itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;9 [+ ^/ ~+ S4 }) E1 q
if( nJob == JOB_FORCEMASTER_HERO )
8 l# k* [ r8 b3 ?6 F! `9 k itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;1 F/ i( K, E6 k, A5 w1 R8 b( e
" p5 }* s. w" m1 x& `# D( j% ~ ( ( CUser*)this)->CreateItem( &itemelem, &nID );# ^/ S9 D: a# H4 @( _
}# z/ a# H- L/ M. [
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );5 F5 _+ i% [7 {6 z8 ?( p
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );+ ~, [0 L* F+ `9 {3 o/ o
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
) a0 @: ^0 o+ _ /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
+ h2 a: ^0 U% i/ p; T! i ( (CUser*)this )->AddTaskBar();*/
4 \& T: [8 o* F$ f, C, r# T R ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
' w2 v* D- ] [- ^#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
$ l# ?# ]3 U8 @3 g* G+ ] ((CUser*)this)->CheckHonorStat();
- @0 w: t" ^5 U3 \ ((CUser*)this)->AddHonorListAck();, V. @; h& E) j) k s, I* s# @
g_UserMng.AddHonorTitleChange( this, m_nHonor);+ J5 @- C" }) w: X
#endif // __HONORABLE_TITLE // ′Tà?4 {+ \5 Z* q- k+ c- o! T5 D: p t
}7 P1 v1 [% @; i: x1 [
#endif // __WORLDSERVER
C% e ~6 f2 }6 ?+ [2 P}
. I A* Q% | k5 c( R% J V$ g/ \
& }: f: m4 [" e$ T; S* |然后你进入functextcmd.cpp并添加以下- S6 O9 y6 B( N
6 I$ o% I. r, o5 b, H
代码:
/ X+ |- X1 J9 ^4 kON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
# O8 T* z; e* ~3 `下面插入( @* h. N- K: @' v, E
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
5 c- d( f0 S% I5 C7 o$ L! f3 |- _
然后你去, h. p+ E3 \: _! G8 J5 s
+ K# |: N# Q/ W! b
代码:; {+ ?3 d" N2 K) u4 {
代码" a$ M& w% l* Q
BOOL TextCmd_ClearPropose( CScanner & s ), Y7 u8 T& \- F
{ [5 g" t3 [ p8 N% o
#ifdef __WORLDSERVER
+ D* M4 `1 y; M/ ]6 t CUser* pUser = (CUser*)s.dwValue;4 W! `- Q/ w8 B2 l8 i0 I
g_dpDBClient.SendClearPropose();
& p' s6 Q9 n+ d9 n. Z! @! W6 p#endif // __WORLDSERVER
6 _1 N4 ~3 ?) O9 J- Z! h9 {; o return TRUE;" G+ N7 [+ |1 b/ `1 b
}* H. e" ~3 i3 X5 K# D7 i
下面插入
- y8 I: E( h$ aBOOL TextCmd_rebirth( CScanner& scanner )
* X# C* ?4 O: E( h3 n7 p4 y# Z' m4 U{
0 P3 {( k7 ?& k6 X# Q7 P#ifdef __WORLDSERVER" |& \3 }; ~! M; H& @
CUser *pUser;
# F! `! x: p- YpUser = (CUser*)scanner.dwValue;3 E1 @" @6 v7 k, i5 D, L. n
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
* T9 N: a7 K) ~/ W; u; e& IpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
0 p c- H8 G% {else4 W8 c% p4 e |' o! R
pUser->AddText("你还未达到重生条件!");9 A7 I: f! [5 I- O! r% x- H9 n2 ~
#endif
X! d1 S# x5 u8 {) {# d# {return TRUE;
5 d+ ~' K1 V3 p}
% z3 x, P, U% @% ]9 w8 J/ e$ _" {/ ~. C" S
. O. @4 G; ]# _" n
* W5 q) y! g4 u2 v. y7 [* W( a# P" N# i( F! c; }$ s
|
|