|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel0 z3 V K, F9 ~( P! s2 x, S
( |3 S% F* |2 O8 }
Mover.h
! d; \+ |/ h2 w4 n代码:
) z/ H, e0 ]) j5 V; I& U% I1 e找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü0 n) t# @6 y) m, x0 C, Z
+ u; `* ^/ U) i5 x; d3 P
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 0 H& }6 c$ S5 P
+ [7 V. J; k! q3 ]然后你去mover.cpp添加
/ \& s/ Q2 n% X# g- P3 h9 J) n9 m+ J' n6 v8 V
代码:
7 Q8 }6 U0 p- F$ `' Nvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )1 U- h \+ |7 G. j+ V
{; d5 @5 i- e# @% X$ z5 |# ~
#ifdef __WORLDSERVER, u& B& |* U8 f2 Y$ R5 m4 c. ]1 E
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 ]/ M; }3 W, B* W5 P MoverProp* pProp = GetProp();
9 q6 [- V6 \* u if( pProp )
) x+ j' ^: D9 d8 Y4 J {
+ Y$ M, o1 y5 B3 j) n if( nJob > 0 && nJob < MAX_LEGEND_HERO )1 r3 c; ^# K1 e5 [: O
{" ]# j+ v, O" S9 N0 r4 n
AddChangeJob( nJob );
5 i( ~9 _' A0 {) L; @$ P/ E }else{/ }- _. E! n- u$ T4 ?9 B' K
return;& C4 @: ], f8 ~+ H. x: B! \
}9 B4 C+ t3 x( o) C
int nPoint = 0;; Z H: ?6 u. r7 J
if( m_nJob == JOB_MERCENARY )
2 G# h/ L! k" T6 m7 R nPoint += 40;
; ]- {, M% t" B' O! }* R else if( m_nJob == JOB_ACROBAT )- a$ {. t1 }; G8 v2 Z
nPoint += 50;
( D+ l7 o9 w, ?: ~5 C# c( q else if( m_nJob == JOB_ASSIST )
3 G6 v0 O2 `8 x, K0 `* A nPoint += 60;
: O1 a1 E# l, q* `$ Y0 j+ @ else if( m_nJob == JOB_MAGICIAN )1 d; t6 ^" m2 d5 d$ R
nPoint += 90;7 a0 i7 X0 e* [" a! y% W
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
; N! o/ \- S, Y# c! J# I nPoint += 120;+ |1 m1 x% Q, e! @" C0 ^
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
' j8 X1 R& t0 { nPoint += 150;
( b2 X3 i$ ? P, U" r3 o else if( m_nJob == JOB_RINGMASTER )
1 T( c4 k% |8 A4 Z, G nPoint += 160;2 P) d+ f6 g, k2 p. Q' _6 F! A
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
# X( K& Z, ^1 h4 s+ p G( K" S, {% b nPoint += 180;
6 u. T5 d% H a4 K5 @3 d else if( m_nJob == JOB_ELEMENTOR )2 B c- P' ?; e0 f
nPoint += 390;
2 n: r- n8 |2 b else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
# x# Y1 o" b7 N, [4 m* B8 A nPoint += 120;* p/ D& k5 U$ M9 |* j
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )4 R! ?( R, U' l# J4 B
nPoint += 150;
2 J0 S7 Y( t, m else if( nJob == JOB_FLORIST_HERO )% o4 U8 F/ V- J7 [% U0 o* n
nPoint += 160;
. z, E6 x; h& n6 s else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
* E2 v1 P# V& S/ Y nPoint += 180;
9 C+ o! Z5 L0 ]$ S else if( nJob == JOB_ELEMENTORLORD_HERO ); u0 T2 o9 L4 o* B h& y
nPoint += 390;
2 e# C/ r+ u, x+ I! W2 S" c( H" b5 w
AddSkillPoint( nPoint );$ U# \1 L0 s0 i& U' S
m_nLevel = nLevel;' ]# C9 Z1 c4 [% z4 w- u1 N
! k' {# @4 N' ?9 Z8 Z9 _* { SetJobLevel( nLevel, nJob );* I2 L" k7 S0 \' S; v
m_nDeathLevel = nLevel;2 N7 p9 ]4 N, H' p
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) N, k2 }( J B1 Z9 w. @# X
if(IsMaster()): E0 x1 b, B& u
{
" U; q! Q. N+ K% a1 D* o int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
7 Y! j Q+ r6 w if( nLevel > 59 && nLevel < 72 )
. o& q; \6 p0 C6 F7 e dwTmpSkLevel = 1;2 |7 u. ~2 s+ [! H8 {! e& ]
else if( nLevel > 71 && nLevel < 84 ): R# o+ D, K: r! q" t3 T; W: G4 W
dwTmpSkLevel = 2;9 `7 V$ n- g6 M z9 [7 r
else if( nLevel > 83 && nLevel < 96 )* l1 f" K2 y/ z% p( h& |
dwTmpSkLevel = 3;+ O: z/ V9 J. _& z6 m! F
else if( nLevel > 95 && nLevel < 108 )% t) ~7 _ I" \. h, w
dwTmpSkLevel = 4;, H8 ?" F/ l9 O L. i
else if( nLevel > 107 && nLevel < 120 )
# Y& [& @& Z) N0 e. Z- N dwTmpSkLevel = 5;9 m4 w8 M. Q6 G8 i6 R1 @8 a
for( int i = 0; i < MAX_SKILL_JOB; i++ )
- p. Y# z8 O, M, A {
& o: x1 K* G2 a$ i LPSKILL lpSkill = &(m_aJobSkill);0 |5 l$ q% }5 ^
if( lpSkill && lpSkill->dwSkill != NULL_ID )$ R# c' D. R; O( k
{
9 F: x! q9 ~9 o: U! `8 d$ l/ w& E1 E ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : O* x$ C% U3 w1 J
if( pSkillProp == NULL )
- V+ x) c: ` `# P: G! `: M continue;
, Z2 X$ D, E# O% P K7 ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER) ^9 n1 k1 y/ b- V& O
continue;% [3 D: C/ a& o' _' y* d
lpSkill->dwLevel = dwTmpSkLevel;; h6 c- m G3 y+ c) z
}
2 \6 S3 b1 e: Z4 d! g% y1 V* ?) M }4 x. o2 w9 j/ |9 p
}
# h9 A6 c& j) |0 s: U" Q+ x- H else if(IsHero())5 n: W2 {' `2 ^7 j$ M+ {+ K9 b
{
" a" b0 Z* |. y6 j: `/ R+ p for( int i = 0; i < MAX_SKILL_JOB; i++ ) . N# G5 t+ U$ N1 `- P
{
9 L5 A* t; D/ W* ]* M, Z1 w LPSKILL lpSkill = &(m_aJobSkill);
+ ? G' n: a, N) ^; S* w+ U$ G if( lpSkill && lpSkill->dwSkill != NULL_ID )% S$ ^9 q$ r. [8 O; A
{
4 l2 _, l8 ?6 d4 J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 g" O. p C( P
if( pSkillProp == NULL ): c7 O8 [3 V0 ?( I
continue;; M1 h3 J- d1 y- y+ I& v' K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 O5 k2 F- _. q, e0 g
continue;
' ^7 R2 v7 B7 X lpSkill->dwLevel = 5;. M" B: y3 \& E3 G$ x( \) g
}
3 O4 W, {- B, M, c5 k6 L1 G }
. d: n Q( W+ ~) H% d: q }
! u: E z5 h! l; y2 n else if(IsLegendHero())# ~4 t& n5 O& B- f3 E3 Q5 R( k
{$ f! l, q; e \/ z2 L1 k# Z4 `; p
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 w. p. x# I: H& p4 U9 S' @
{ 6 i. E! X k( |3 G
LPSKILL lpSkill = &(m_aJobSkill);4 x: f9 a0 \/ }, A' Q8 ~
if( lpSkill && lpSkill->dwSkill != NULL_ID )
# A, c7 f8 A4 ~) d {0 K/ g* Y6 w- A) D
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 [' w0 X, H. A, h4 n; I$ F if( pSkillProp == NULL )
' C+ L) Q* `. c$ Y) a) f2 k continue;
9 C2 C E3 c0 o7 j4 ^ if( pSkillProp->dwItemKind1 != JTYPE_MASTER): u- C4 U7 X5 |. b
continue;$ f) y0 @; V6 ]: E% ~
lpSkill->dwLevel = 5;4 v1 l0 a' H1 G$ F
}0 G k. c8 m( b. ?$ w
}
1 ~" u% @7 |+ d! |8 C: y }
. H- r: \& Q! g4 G+ H#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ c3 ~5 f% z S2 M7 y if( bGamma )
' g1 n k" @; t9 ~3 Z$ f {
# i7 S+ y) F \( a' S m_nExp1 = 0;
8 k9 T/ W( @# h6 [# D8 B }$ q. H; K0 z J
7 g* o* M2 J1 d. Q) ?4 b' t3 y ( (CUser*)this )->AddSetChangeJob( nJob );* d6 w% `2 _6 @9 m- |' n; C: n7 E
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
5 O0 d6 Q9 x# e+ U; O% \1 x6 f( Q$ G, m N
% o- ]" l$ r; J
#if __VER >= 11 // __SYS_PLAYER_DATA% R; i4 D0 ^% B* g/ @
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
$ v5 j* x+ q; o5 u& W$ U#else // __SYS_PLAYER_DATA
2 N% Z2 {* Q) P, F. e. C8 U g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
! L: ~! _% N5 [9 n4 G g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
2 r2 C. a3 Q* c- G if( m_idGuild != 0 )) B) @6 H) o3 ^! W' S! C
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
- X7 y9 s! F/ X#endif // __SYS_PLAYER_DATA" I% o3 y/ r* s8 t; ]
SetHitPoint( GetMaxHitPoint() );
; h2 W" U' c* N* j0 k0 z1 B SetManaPoint( GetMaxManaPoint() );. q; B4 J( M" `1 K
SetFatiguePoint( GetMaxFatiguePoint() );
7 `0 c- Y0 @- d6 o& r' N. A if( nJob >= 1 && nJob <= 4 )
0 m$ o, R0 t0 L+ M, p {
: C1 U9 W: o* q: y/ C: y. r6 B m_nStr = m_nSta = m_nDex = m_nInt = 15;5 l8 w! l# _ [4 P5 z+ k* l
m_nRemainGP = 28;
6 ^0 C. w9 _" p; \6 I }4 z' @# q1 E$ Y- q) f; V. U# ?
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )1 F5 m+ m: f: t- Q# @, G+ p
{/ [, a8 j7 o, v" }5 y
m_nRemainGP = 118;
6 c- ? G3 q' o$ H: ]/ k //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;% l# [1 a8 t3 i$ r! Q' m
m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 Q& _6 I y8 b; ~2 d0 H }
5 P* h4 f; j: @$ N! V& Z if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )0 C/ X' a1 v# ~( q# J1 s
{, H( ~$ p7 {! \. |" y. F$ q0 ]
CItemElem itemelem;
% j6 }1 X5 P7 z' \9 Q8 x6 G+ s( S itemelem.m_nItemNum = 1;
0 y r/ E" w2 |- U7 V4 v% f+ F itemelem.m_bCharged = TRUE;% c% p9 o8 D' h% N
BYTE nID;
, o. n) L) c+ f+ S$ V- O6 d& n9 Q1 @& {$ P! g) ` [; \
if( nJob == JOB_MENTALIST_HERO )
8 f$ Z* y) H/ z. a# @0 t0 a" Y itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;) y" x2 `5 B. p% Q
if( nJob == JOB_FORCEMASTER_HERO )
4 m) N4 s9 b" S2 ?$ v itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;: m! v9 i& u) F+ o
+ N. O9 l% _+ d& n
( ( CUser*)this)->CreateItem( &itemelem, &nID );) h8 B7 W( a& t6 g8 l9 Y
}
9 D1 J/ Q" \/ M g_UserMng.AddSetLevel( this, (WORD)m_nLevel );) o4 Y! s, _! z4 Z) ]
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
" R7 \3 U9 Y' X+ ` ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
9 g: G6 z( k. n* X( ] /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );3 K. ~2 m; V- e. }5 ]
( (CUser*)this )->AddTaskBar();*/
: D/ P V' C2 Q- G$ { ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
7 [- J& N9 }1 ?: B- A#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?' r" e @" }2 q* Z+ J. B9 {" E
((CUser*)this)->CheckHonorStat();
l# q; ~+ D7 K5 ^5 D ((CUser*)this)->AddHonorListAck();
4 o* c- G' q, Q; l g_UserMng.AddHonorTitleChange( this, m_nHonor);) P0 S8 V6 |; w2 z4 L3 P
#endif // __HONORABLE_TITLE // ′Tà?
5 m A9 }$ A; Z }- v8 S; ^" C& ?! r% X* A
#endif // __WORLDSERVER, [& ]: v. |8 G) F' T
} " G& \( M. M* X+ Z5 S
0 c1 x9 z% s$ I* }/ z" e然后你进入functextcmd.cpp并添加以下
+ a, {2 r' W4 D
. p8 A; @3 M7 z) V代码:- o. M7 k1 \0 h0 Z
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )! w0 m3 T9 I \
下面插入
) f9 e2 X% W6 u/ {6 p9 lON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 6 P [4 i, M4 X2 ^0 I' }. N& o
6 [4 g' V1 m0 V2 a& N! S然后你去
" V b( R0 s# d( i$ N2 g, o; d1 K- p2 n* Q" Z& n4 p) L9 i
代码:
! L* r, y: A: h# f. z ~代码! X- r% v( A, k5 f0 z
BOOL TextCmd_ClearPropose( CScanner & s )
. A% x: H$ Z' @% Q0 ~{ t+ f. k. K5 S- c+ T
#ifdef __WORLDSERVER7 D# O$ Y# f- j8 P: [# R
CUser* pUser = (CUser*)s.dwValue;
6 ]1 b+ Y2 g1 j; L/ x" ?+ s g_dpDBClient.SendClearPropose();
: t9 l2 U! P% H7 P: G$ m#endif // __WORLDSERVER
- y7 Z7 ?. p9 r9 f9 O$ ` return TRUE;
, h5 C8 l9 v$ p1 s) z4 a- _8 y/ `}
4 i+ o& n; n8 a& J下面插入" t& K7 o, Q7 [2 {8 M: ]2 I+ N
BOOL TextCmd_rebirth( CScanner& scanner )
e% Y# g9 K/ b( C# d! m6 P# |/ \{0 [6 u) W. {; c' S1 E& r0 k
#ifdef __WORLDSERVER
" t" Y [/ Y: J( ~+ _CUser *pUser;
! k( {9 ?3 ?# o" D( n* d9 cpUser = (CUser*)scanner.dwValue;
, O: z4 u4 t0 H- e9 U- M% o: ~ B0 Aif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( p- R& [4 _0 B# QpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
/ b2 A$ L3 C" V+ ~else/ N1 ?/ V- {( p6 u3 r" R2 ^$ x* Z
pUser->AddText("你还未达到重生条件!");! c) t( f+ m0 x- t" s3 G' P/ X
#endif3 I/ @. C* I# w& [2 \, [
return TRUE;
5 j; D# Z6 q+ @, c}
! |, \! b+ [3 m v
, V. P, g1 _# k6 k+ t2 k
0 b+ A3 d2 ]% v. x
/ T9 e' P+ W; |: Q, w* N
; ^2 [) w: |1 ~' N9 w5 U |
|