|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ d0 f+ A8 o4 ~/ K; i( W0 K- P2 I. S ^! D
Mover.h
9 h* R* j* ?; ?) V代码:
; A$ Q+ W) y" d. M找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
% w$ Q1 G9 M d5 h1 T
, J) a y7 f' x: P- g1 ^下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 4 v9 w3 t& Q* |- C G7 @% V
4 t9 X. j% s/ P$ L
然后你去mover.cpp添加
5 v# J6 r) X" }4 o2 S3 @- \& @ z* p8 I2 o
代码:
+ t( `9 G% r6 k4 w0 y5 ]void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
0 \4 L! `/ K6 q2 ?{
2 U2 n5 c$ E, M& ~) ?#ifdef __WORLDSERVER) e( } P7 L* U* y. e6 G
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
9 M2 Z4 c, K" C MoverProp* pProp = GetProp();
5 u6 @( s5 f! G, @ if( pProp )* Q. s5 G F' j+ v7 f7 X
{$ t" |+ l: i! R. N
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
, N( s; g7 s1 O {
; B$ B6 Z% w! M1 K7 e AddChangeJob( nJob );
2 M! z( q. J- L }else{
$ K7 B/ g# S; q+ P; _ return;
- H' s9 O( K a1 H* |# B }
. R" F/ x$ i0 k8 M2 K) X5 {9 q int nPoint = 0; G+ G0 `/ E2 A9 e3 L2 N9 C
if( m_nJob == JOB_MERCENARY )* K- z4 C$ M+ x) s; q
nPoint += 40;0 j* L" `8 J! {6 p8 Z; r+ U
else if( m_nJob == JOB_ACROBAT )' h1 t: S5 `% J* e" e
nPoint += 50;, b# `) U7 `8 Y5 J; M2 \
else if( m_nJob == JOB_ASSIST )* \: d2 @' Z& M, s: n" Z% v! N3 z
nPoint += 60;( f3 {; {! s8 a' y; D4 B
else if( m_nJob == JOB_MAGICIAN )
0 W% i* j b/ V: l' T! a, k nPoint += 90;
/ Y! I- u- j7 o( i- {3 Y" L else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
. h; E; e& u5 A' Z$ @- A: B nPoint += 120;
* p9 L) B2 n7 G- ~2 A; l( ] else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
9 y' K2 t" J, q6 \ nPoint += 150;
0 f5 U8 s2 i7 @/ r& d else if( m_nJob == JOB_RINGMASTER )5 r/ p6 b4 w9 i( M2 ^$ Y4 @
nPoint += 160;
/ W; b# X/ H* r& n3 e; g else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
/ ~8 U* a/ M5 M b* q, C0 s4 f' w nPoint += 180;2 L0 X5 v; H [% A/ }0 J, M( Z
else if( m_nJob == JOB_ELEMENTOR )6 D& n, V( B- s* q9 I
nPoint += 390;
8 O! e6 S( y) Y! j- [( ^ F else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )3 r ^, ?* J+ e7 k; V* X; Z2 e
nPoint += 120;, [8 m- Q: y0 ?" U7 _7 N
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
. R- I0 ?& H8 b2 N5 |' O& x1 o nPoint += 150;
- f/ X5 g: t `# {5 ^; G% z else if( nJob == JOB_FLORIST_HERO )
( ]0 j; y3 R* \' m& [& |$ o; X nPoint += 160;/ a/ M0 _ p. Y6 ]& l! X4 Y
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )- Z5 Z- b7 r; `/ p# N+ b* b
nPoint += 180;
1 b9 [6 n3 e0 _) u; z% N' v; H else if( nJob == JOB_ELEMENTORLORD_HERO )- n& X+ T, f& d2 ?7 F& q$ W
nPoint += 390;% O5 P6 i& Y% e9 |; n( |
9 c+ l( ~9 c- E8 Y% ` AddSkillPoint( nPoint );
4 C2 h6 W2 t! b6 Q' z. J m_nLevel = nLevel;
% u5 Y" L% v% Y0 C6 x' {0 N/ q0 Z/ V* l' [ j, g1 B
SetJobLevel( nLevel, nJob ); j! H4 _$ D' t
m_nDeathLevel = nLevel;
9 [8 R {6 [+ p/ ?. f& l0 o" [#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
7 a9 R: M5 t- i! C if(IsMaster())2 a$ g7 W$ H. n
{
! R5 R' W ?& r9 u6 f int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
: w0 o8 s2 Z& Y4 }" N/ R3 o8 e8 U! j if( nLevel > 59 && nLevel < 72 )
% v0 \+ K# s% V0 t% C8 Y" P- J f dwTmpSkLevel = 1;
3 s# Y% E' E. I% ] else if( nLevel > 71 && nLevel < 84 )
o J( |+ Q- f; x9 h% q dwTmpSkLevel = 2;9 e$ p- ?( s# d2 t# p
else if( nLevel > 83 && nLevel < 96 )
- n' K1 K# ?7 R" l* ~" A dwTmpSkLevel = 3;
3 B' ^/ j/ k- T z( e- Y else if( nLevel > 95 && nLevel < 108 )
( I! n; O3 S7 D2 U- x1 z8 @; y dwTmpSkLevel = 4;
, V6 \8 r i4 I9 p, {, L8 K8 n else if( nLevel > 107 && nLevel < 120 )
5 t! a" _2 `6 R4 `! p. j* k dwTmpSkLevel = 5;
5 j b2 H% T5 x) | for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 j$ r6 j+ t- c9 Q2 D; N8 o1 G {
1 P+ z5 @, |6 K# g, ~6 V& k9 w2 | LPSKILL lpSkill = &(m_aJobSkill);
n E n) h8 l" w. F6 i" W4 @ if( lpSkill && lpSkill->dwSkill != NULL_ID ). |; @* v7 M! U3 [6 q1 `
{
6 m$ u6 B" C9 X7 g% v% \4 s; f$ _( U ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 Z/ H* u) w! m+ y8 L. \& T if( pSkillProp == NULL )
W9 i( u/ p5 G continue;
' p) I- N& \* L if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( F6 M* z. _5 e& o# y continue;
& d/ F* L+ E+ Z' D. z- C' A4 I lpSkill->dwLevel = dwTmpSkLevel;
8 B# k/ s4 U: x. o! N' l }# U) T4 O& V( ~' R9 B
} _9 T6 b0 K; y" N$ h( Q
}& z5 |4 c; A$ h
else if(IsHero())
9 a8 \% h: c$ W, n4 M0 v$ W% g0 a {& C" v9 a! |/ N4 ?2 {, p
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; p+ g- T! m# S9 w# ^6 {# J
{
' {3 e) v) B7 g1 b0 Z LPSKILL lpSkill = &(m_aJobSkill);
, c6 N# {2 b5 Y% e9 F7 J- ^9 M if( lpSkill && lpSkill->dwSkill != NULL_ID )' }3 @( c9 A4 S" n+ n4 G, i
{+ P3 f% E( w s4 P/ w! Z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) ^6 H; o, z4 L9 X* F0 c7 y0 | if( pSkillProp == NULL )
* m% o/ ~$ }; h continue;
1 `$ M4 [% \) J if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 E. D: Q( g! j" F+ U2 L continue;
) g7 M- D4 w' g1 Q1 r: U lpSkill->dwLevel = 5;2 l9 L, ]- {: m1 [; _" I6 J1 y
}8 Q$ }8 ? `/ c/ @ \
}$ G7 \5 f9 I- K: y) s
}! M4 p3 l; t* e/ r$ ^
else if(IsLegendHero())
! Y# p$ l1 ]; W2 R3 T {1 Z* ]; J2 I: {
for( int i = 0; i < MAX_SKILL_JOB; i++ )
: c% S1 I* G7 g' g) A$ V0 f {
& Q0 F9 J7 f! ]2 \) d h" I4 ] LPSKILL lpSkill = &(m_aJobSkill);
Q% O4 C0 m. k" o if( lpSkill && lpSkill->dwSkill != NULL_ID )0 }' X1 ^$ g2 O
{
5 a! [* L/ f ?0 v# ]% f; W. ^8 O, V ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! a2 m, f( p% O
if( pSkillProp == NULL )# c' d5 A6 y4 L# k* m
continue;* o! y/ a" @ ^3 ?4 k8 E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: V0 y, P l9 Q continue;7 ]$ a5 n _/ J3 `: ]3 Z6 C3 Q6 r2 P
lpSkill->dwLevel = 5;/ j* F/ g4 j, O. {9 ? p+ m! l6 V2 \
}
1 {2 j0 f0 }, O- l. a4 N }
a! U* a/ o2 B+ @1 D. v }( R7 X- y: ^) {* a5 \9 B4 |
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
" B$ Z! R' u5 y- X, S) }: O if( bGamma )& _6 m. |, b$ {
{, i, Z" ]; k( Q) y# U
m_nExp1 = 0; n5 _: }# P" J( o8 r; N/ m
}* @# R5 P/ z- i
. S8 t; K$ ?( _2 [2 u/ O ( (CUser*)this )->AddSetChangeJob( nJob );
7 j0 t& T' U) H g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
5 e% C/ o- E# a; c7 }0 P
6 Q$ V8 A/ Q& v- X4 @7 s
- ?4 ]& o7 V3 r, O8 D/ J#if __VER >= 11 // __SYS_PLAYER_DATA! f U* H( ]8 C$ Q
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );9 n- H: x- ?5 Y+ n3 K; C
#else // __SYS_PLAYER_DATA# G/ z/ e) A& D0 A
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );( I) V% @, T8 B D. g1 V% D$ K
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );+ A$ g; x# c& y5 X t( ~3 _" T; r
if( m_idGuild != 0 )
+ }7 D3 J- L; y g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );+ r/ k( c) _1 Z4 K. e) ]% T
#endif // __SYS_PLAYER_DATA
+ I: ^# e4 q5 p1 d% D SetHitPoint( GetMaxHitPoint() );9 G, O# @3 ?% Y) x' J* a& b5 {/ r
SetManaPoint( GetMaxManaPoint() );7 @3 Q5 D" _# u& F, t# |: P* C
SetFatiguePoint( GetMaxFatiguePoint() );
4 v k+ r# [( f+ q$ a$ Z if( nJob >= 1 && nJob <= 4 )
9 B& U- G: I- H; k' O3 H {1 F" e2 Y# c. ?" [9 Y
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 X1 L5 [- P: K/ u4 I3 R- y
m_nRemainGP = 28;
% D1 K( U+ G0 f! @; g ? }' k" t: d) e. t* f
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ); b p& H" t1 M+ [' O% Z7 o
{
/ e4 D+ S+ F V8 h# N3 o; D, o m_nRemainGP = 118;
1 ?% h e& J! t; @* q. B! H; t //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;' @6 W6 L4 Q) {9 [1 m/ b, N
m_nStr = m_nSta = m_nDex = m_nInt = 15;
& Q1 Z) Y5 i% { }
+ k. t0 e% k I9 f. b" D0 o4 x; h if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
g* L+ ]# ^5 k$ P {2 t! O. Y( X: Q+ L3 P0 ~
CItemElem itemelem;" p, B4 ]) @* v# d/ c( ^* B
itemelem.m_nItemNum = 1;
) P: m$ A! C J0 }% Q1 Q itemelem.m_bCharged = TRUE;5 L! o$ _! k( ~
BYTE nID;
4 w7 q7 _) Z# w% D- O3 H2 @5 i# y9 B$ B9 y9 _6 G2 I/ K9 Y
if( nJob == JOB_MENTALIST_HERO )0 N- r1 L2 R u1 |, I! N6 ?
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;4 |( p/ y: D- l- K9 ^' M
if( nJob == JOB_FORCEMASTER_HERO )" v! z6 W8 j% J/ _' S; X8 B
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
- v4 X9 {' r: J6 ~; U
# w8 q9 v" _ L ( ( CUser*)this)->CreateItem( &itemelem, &nID );
) _3 F9 b2 |* _7 { q( O }
$ y6 i. G/ P" ?5 q1 O g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
6 D2 z' O$ c* U' ] ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );9 n- |. ~$ H9 N5 f) f
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );7 z3 d6 c4 P, y% I4 f! g
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
$ p$ z6 B- }) M9 y( C ( (CUser*)this )->AddTaskBar();*/
+ ?' B* \% G) g" _8 p ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
s0 `9 ?0 x _9 u) O& ?#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
5 ]8 T+ O' J$ Z; N" p0 f ((CUser*)this)->CheckHonorStat();
1 K3 w+ f$ Q Y, g U4 @' L ((CUser*)this)->AddHonorListAck();8 o4 `* R( ?4 k7 o5 Z" E+ X# g
g_UserMng.AddHonorTitleChange( this, m_nHonor);8 m/ \9 X; y) V; R* X
#endif // __HONORABLE_TITLE // ′Tà?
3 x# F B1 x g6 T* G( N/ M }
# G5 P; M+ a0 B#endif // __WORLDSERVER7 v: j( H; t; n1 J$ y+ C, J
}
0 T+ a/ l+ U" G9 `% q5 e. h$ n5 N7 m* \
然后你进入functextcmd.cpp并添加以下
9 J8 t G$ ?; o. v* q' P2 N2 Y8 p7 a* p6 V
代码:
* h4 p/ j, @/ F0 ^: |: A: CON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
; C+ x8 o& \0 O4 P下面插入
6 x o6 M! G5 T5 y( cON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) # f, J% ^& K5 p8 w) v. H; J
2 {$ C2 \& @5 j, M2 K
然后你去) n# A3 p/ u) a, k/ w
5 N9 K& {4 P8 [
代码:9 j3 \6 i% C( r' p
代码" o0 i, w5 i" K$ y: {( n
BOOL TextCmd_ClearPropose( CScanner & s )$ P& H9 y/ R6 v8 z+ U6 I2 B
{2 p& g/ C5 u2 w6 O7 x* q$ ^
#ifdef __WORLDSERVER6 m, `8 n( R: h* T6 ~
CUser* pUser = (CUser*)s.dwValue;
$ [+ h# r7 c% z$ _, Y0 K# o g_dpDBClient.SendClearPropose();
8 M+ r# d1 {2 f3 F$ @5 ^#endif // __WORLDSERVER) w8 X; C, a$ p! e( H% ?
return TRUE;
2 L ?9 ?: v& c3 c7 ]# b} T3 K9 T0 F. J: y. @4 |4 ^/ c
下面插入5 R8 K6 M- ]" m6 V# R
BOOL TextCmd_rebirth( CScanner& scanner )
' E1 a0 B( r3 |{
0 J& s9 X1 _+ L! F' p9 }- M#ifdef __WORLDSERVER7 ~7 [; q6 u3 Y+ u% Y
CUser *pUser;( L# y% e. ~6 L3 t7 J
pUser = (CUser*)scanner.dwValue;$ @( X& Q2 }* A0 q$ @2 U! u
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
& n6 C6 A. @6 ^! \+ ?9 l. j+ DpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
1 l9 k! n6 x- ]/ W1 [6 `else
8 L. g3 c! Z3 C/ v- K8 @' }pUser->AddText("你还未达到重生条件!");
$ w5 T; e# n% J4 J' {" C#endif% b/ y3 W* ?3 D8 l N X
return TRUE;
. J% w3 I5 Z5 K: @3 T" {} 0 v! |& F1 ]" q% ~. [/ A
: J8 o' E- w7 i% i \- G6 l# d0 |% x6 I J4 `
6 {( `! E8 a5 N4 p+ G
2 c- h/ x) g9 w/ O% W |
|