|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
1 d: z! q1 H6 y+ J# x7 j
& e& y. n) H6 u [( `* }& u, F% DMover.h* d( ~! z7 n! A/ \1 ]: S
代码:) w& Q4 I" x, q1 H
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
& M, u( x; o' N6 L3 q
- h" m' o, w1 r& n下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
& z+ g$ {" y* r
6 ^) F/ [* {, w* ~$ V; z" F7 ~然后你去mover.cpp添加8 h0 E r% r3 N o' W3 M& \* b
; A: E& r5 F: i7 @) S% g# M2 v
代码:
6 J! K; [9 F7 i9 v6 q) g6 p2 n Rvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); G* V& e d. |2 @
{
" P8 x& [( j# ~, k) Z1 N#ifdef __WORLDSERVER
# n) e2 X% w" G5 C" A // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
$ J' }" o: \* @5 f* `7 j. Z MoverProp* pProp = GetProp();! ]1 i* `4 L5 V. l+ |" u
if( pProp )& z: _; q# [- W8 S) n7 G* F
{
) y* I" T. @4 B3 a' G if( nJob > 0 && nJob < MAX_LEGEND_HERO )" Q: `; c. C3 D
{
% s! `% J, n4 i AddChangeJob( nJob );
9 F7 h( L6 z8 f }else{
& R* W8 S* C6 j* q return;' ~5 `5 E; f2 f6 A0 d+ Z% v; z
}
% W4 g) G) A* B int nPoint = 0;, n$ D: E! Z [- S4 d
if( m_nJob == JOB_MERCENARY ), V- c+ N6 ^$ X0 O
nPoint += 40;! u! z% f0 Z/ V4 p$ s+ Y
else if( m_nJob == JOB_ACROBAT )5 W/ _& C; [ h. x/ ]3 Y
nPoint += 50;0 u/ @7 u# \0 u4 U
else if( m_nJob == JOB_ASSIST )
( V) a" ?+ }( D. ^% F# _ nPoint += 60;6 Z! i! h m! P
else if( m_nJob == JOB_MAGICIAN )
3 F) {4 h ^: t z nPoint += 90;1 G& p5 F/ c( [2 o! I
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
! [9 g& D1 j0 m2 N. w( r W nPoint += 120;- I# l" o4 Z# ^
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
) s4 Q) {$ G+ q: x: U) f$ r" @ nPoint += 150;" ^7 @" S3 ]7 M0 k, h9 `
else if( m_nJob == JOB_RINGMASTER )
% }$ \9 X( u1 n nPoint += 160;
4 U' }7 v7 ~& m1 V# i else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
- r. O/ U0 V( o) a nPoint += 180;1 @$ M5 R: ~9 V
else if( m_nJob == JOB_ELEMENTOR )
1 z0 Q% R) q% y1 B; _ nPoint += 390;
( s6 p! d2 B% C: ~) A else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) Z! n& R9 E0 {; s1 p: `9 E% P
nPoint += 120;2 v' c0 | `4 _" q, U' g
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )0 [# T! ~/ q! h7 q7 V# S
nPoint += 150;" @' o8 Q& f$ t1 a- @
else if( nJob == JOB_FLORIST_HERO )
7 _1 d: `9 Z* N/ J nPoint += 160;
# }" p5 O: C" O else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )# Y0 A, p6 h& p& F5 @) z. M
nPoint += 180;
- y* r* c2 u0 ^4 y2 Z+ ? else if( nJob == JOB_ELEMENTORLORD_HERO )- v; `: ^3 U1 u7 d6 i
nPoint += 390;* k: U; F4 T8 g5 \9 \8 m
6 |+ U' e0 t8 R4 E! E* V& w AddSkillPoint( nPoint );/ M7 g* Y" X2 ~
m_nLevel = nLevel;
* i* j0 Q) j3 j8 z3 d" P9 w4 z$ W3 h9 a7 s3 D
SetJobLevel( nLevel, nJob );
6 r: w+ F) h; C6 O m_nDeathLevel = nLevel;
$ a$ l( L1 [2 z5 x. Z8 R, ]#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& c# k" z% b1 j3 M: P. ]* ~( a- f1 E4 j
if(IsMaster()), \4 G) m( x, ?5 B$ [# N+ c+ k
{' U# u! |# a# }
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
9 c/ R$ L3 n2 x if( nLevel > 59 && nLevel < 72 )
$ u/ I$ u- n' I7 n1 X5 R# N) [ dwTmpSkLevel = 1;( W( M. K3 r6 q+ F; B% N, J
else if( nLevel > 71 && nLevel < 84 )- T( B' o& u8 J( u* A" p! t
dwTmpSkLevel = 2;
0 ^" v" O& R" U6 m$ q else if( nLevel > 83 && nLevel < 96 )
5 {4 Y/ H0 [( x' @! H( ~0 j dwTmpSkLevel = 3;
2 V8 o) u. m: U0 Q else if( nLevel > 95 && nLevel < 108 )
& @* E R" E& K1 i, d! y dwTmpSkLevel = 4;2 n8 B H' I* K* f
else if( nLevel > 107 && nLevel < 120 )( s4 o( I& Z8 S1 Q$ I) U7 B
dwTmpSkLevel = 5;+ d* j0 k. M! T4 x$ |0 C' W
for( int i = 0; i < MAX_SKILL_JOB; i++ )
& b' G; ]# Q$ d5 j _ Y { * |% b' s$ |$ N/ X- `7 A
LPSKILL lpSkill = &(m_aJobSkill);2 n- j5 g- r; f* d+ k
if( lpSkill && lpSkill->dwSkill != NULL_ID )
# D6 E$ L; N% ^ {
7 q: ^/ t8 P r9 N! G0 \, |6 r& P ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) d* \5 _+ j7 R if( pSkillProp == NULL )4 g: h1 Y2 x0 W+ ?
continue;
8 z# E# m$ V' l5 V. _ ^& w if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* x e; `# X, g4 ?( } I' T" G( d continue;
# c( h: O& [3 I p+ h& g* T lpSkill->dwLevel = dwTmpSkLevel;- B% K! O2 a& ?
}
5 L" o9 [! a7 c0 V! [5 q }
! Q- R; C2 w4 J4 t }3 @+ Q& {' J* {$ A2 v
else if(IsHero())- O$ `+ W8 }1 r" t
{
; W$ a4 A& `) W3 k for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 U6 ]7 v4 x3 z# ^- | {
% ^) A0 m. B( z/ `8 q LPSKILL lpSkill = &(m_aJobSkill);0 X# A3 `/ o/ D. v2 h1 f
if( lpSkill && lpSkill->dwSkill != NULL_ID )! s! {$ @4 E" ]* o% G5 J, K
{6 A* y" }8 R" I9 v4 w) j) |0 b0 Q
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & _% B5 [* }3 e
if( pSkillProp == NULL )/ z7 P7 o: g! v X) K+ @. c: M- k
continue;
^; x1 J L2 o E6 J, s' s if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! E* i" Y/ H& r7 j continue;
; G8 d# o8 s& t+ @8 u$ l lpSkill->dwLevel = 5;
* d: k* k5 z, x, |, q }/ z1 v6 S1 j' O6 q
}: g( b' s! E2 O, h. p# b* w
}
' w# E5 S- i7 M; k else if(IsLegendHero()) ]1 U: x0 P0 b! A% U8 x
{
1 ^ c0 _/ ^, I for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( J. X1 W6 u) J4 ?' y
{ 4 @ ?- ^# q+ p3 A% r2 P' q m. v
LPSKILL lpSkill = &(m_aJobSkill);$ d5 B3 |) [! N& u; }6 e
if( lpSkill && lpSkill->dwSkill != NULL_ID )
" _7 {: T p' @ {7 Z* @5 X" h( d7 N1 X, t& y3 W6 B
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 d; N7 ?8 g4 I3 Z7 ?
if( pSkillProp == NULL )
4 U! l2 G: |+ v6 x' H* e$ Z continue;( e- V' g6 f$ K6 F% E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 O) ` Q2 F$ e# ?' v0 f continue;
; d$ s) h, ~0 B( D1 `/ y: N8 D6 x lpSkill->dwLevel = 5;$ A. A/ s4 [- T
}9 R5 D! q3 K' e# X
}& B8 m$ v8 o4 O/ ]* L* x i5 e& z
}/ ?) y) u9 x _# \; W. c2 e8 n
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans3 G" B8 `# Q) | K: i7 @9 V2 V# f
if( bGamma )) c) \$ Z8 B, ^ b
{; c; o7 y" c+ n# H
m_nExp1 = 0;
5 d6 y$ G4 |3 z }
# a. l4 G$ x0 b$ Z' S& I3 J6 ~$ I
( (CUser*)this )->AddSetChangeJob( nJob );
9 {/ [& x. i& G, }7 Y' a g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );5 h$ p4 w- r3 e% W& ]+ ?
: u( G4 o9 f2 \% c, v0 c
0 U, l2 @- \/ ^#if __VER >= 11 // __SYS_PLAYER_DATA& c$ k' ^% A* g* @" S( A' V
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
* G- e# A# f# U#else // __SYS_PLAYER_DATA2 L) y7 D, o' ]8 J
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 d; Q4 \4 @1 r7 y
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
( w- }' T4 w5 \- \, f7 {- ? if( m_idGuild != 0 )( h, v3 m n; a) i9 S% C, u
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );, y$ q" u( v3 z9 d/ h# |% O
#endif // __SYS_PLAYER_DATA0 q8 I0 y- A0 A- @0 g" \
SetHitPoint( GetMaxHitPoint() );
, J( S. e, c ?$ t SetManaPoint( GetMaxManaPoint() );
$ O: a% Y/ L1 E$ U' m SetFatiguePoint( GetMaxFatiguePoint() );* z$ o C* n& q' y8 i. i
if( nJob >= 1 && nJob <= 4 ) x! [' A) j' r3 F! e( {9 X1 C' G
{
7 z3 \: s; I; U- ^ m_nStr = m_nSta = m_nDex = m_nInt = 15;; u6 v6 i9 g7 y' R$ V- Z7 T
m_nRemainGP = 28;
& R- S$ W4 H$ \) N }
/ o/ [1 o, K ~/ f/ Q6 T1 a if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )/ b: f1 L% x9 m# q( v' D
{
% |5 N( {2 N: c8 [* {( K8 a m_nRemainGP = 118;
& w" M& W+ I8 J% b //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
% ~2 H: ~* L- m m_nStr = m_nSta = m_nDex = m_nInt = 15;% [1 F4 Z* d( t6 Y- q" m( F
}
7 U8 e) S2 X$ \ if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
) o! I$ }- p4 Y9 D0 X5 E: ^1 H( Z$ C! [ {2 f- C* ?; F, o( H0 \
CItemElem itemelem;% J I4 E& F9 }: C' E( y8 x/ R1 S
itemelem.m_nItemNum = 1;
: Q) C5 d6 [/ w4 L4 A% T+ m itemelem.m_bCharged = TRUE;
7 m v1 u7 D) Z8 D' h BYTE nID;
. Q9 u2 P& Z( s6 B+ u' O4 j$ [- K, ?+ @" [3 y. }- j
if( nJob == JOB_MENTALIST_HERO )8 Z4 Q( v c6 N
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
- u$ g5 f1 c* \! d5 |, f if( nJob == JOB_FORCEMASTER_HERO )
% P' s' x- }( S itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; o$ L" U; |% A1 d& }/ y$ E
; y4 O, Q! c. H$ a5 f
( ( CUser*)this)->CreateItem( &itemelem, &nID );
. t' a( A7 k7 Q! t; C }
( h; Y* P. \" G5 s- J g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
* m5 V( ?% O+ L6 x ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );% h+ {4 u, U0 ]1 V. V, a
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
" o. G) }; l) \4 t /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 z! {: v Z5 ?5 g/ c- J; D) C) l ~
( (CUser*)this )->AddTaskBar();*/
% d+ b: \' J3 f6 o6 S& f$ M ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );* l' H+ Q: G) o/ X
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?! ?) C9 u- O& x8 B) r$ l( Y; J
((CUser*)this)->CheckHonorStat();" ^ n8 I4 g' N6 m& d( y/ G
((CUser*)this)->AddHonorListAck();
& C9 U* }+ c1 I* q* e' r g_UserMng.AddHonorTitleChange( this, m_nHonor);$ _0 D+ \8 k4 P/ D
#endif // __HONORABLE_TITLE // ′Tà?
' n! X* [/ |3 g& ~8 }: g }! z, o1 m- v% ~0 y Q# Z
#endif // __WORLDSERVER
9 d( X; g- E: i( u. a8 b}
& `' t9 T) x S
/ b% z9 c9 k3 b- u; U c, d然后你进入functextcmd.cpp并添加以下
, A# H. k4 C ^/ B4 A
4 p$ P9 O3 B9 E+ N6 [2 Y* l代码:
! o* R1 C2 _4 S* m$ hON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 Z: ~7 t* u3 @1 Y9 X+ i
下面插入- I+ @# r* ^% O2 T, m/ ?
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
7 g0 o6 ^% j8 \- i2 w& z
# m; D6 ?, O) k: R. e然后你去4 z7 t7 s7 l- D4 T# R1 B. c
! D" R: y/ x' {) \9 u! S& R代码:3 R# c: [, {4 s5 t9 l
代码
( U c% {( ?* j" H% uBOOL TextCmd_ClearPropose( CScanner & s ): k8 @$ @( P, J2 i* g! ]1 I
{( Q8 s* C) D5 {1 D1 s
#ifdef __WORLDSERVER/ y/ |1 X2 x/ u
CUser* pUser = (CUser*)s.dwValue;
9 Z2 T/ a6 j# {+ U7 i1 j+ H g_dpDBClient.SendClearPropose();
5 Q4 I! P: T: a/ {#endif // __WORLDSERVER
9 f3 U4 |( h- a4 H" T. J, V return TRUE;
9 q7 j+ W$ {* [- s- b* t}
) `7 o3 f" K2 Y; _+ I& P+ ^下面插入3 X7 i* p! U# j
BOOL TextCmd_rebirth( CScanner& scanner )) g: [% `# g, D) u2 H
{0 m! I& t2 W0 z
#ifdef __WORLDSERVER
$ U; V( @0 X/ t" K4 j) H* [CUser *pUser;; S: x, d# c3 Q; o4 V! S
pUser = (CUser*)scanner.dwValue;
' ^7 B( ?' X2 L( M" q- v2 _if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())2 @# \5 ^* \5 o9 X0 `, H
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);9 r6 H) j W& T- M' V! f
else
- V6 q( R7 ^' G1 vpUser->AddText("你还未达到重生条件!");
! j0 R" e% y, A) o: w#endif
7 O! W% [$ m8 [- f8 F3 [# D: creturn TRUE;
8 C2 c( w$ Q8 M- g0 H% }) W" T} 4 n( f' `2 Y Y# `. r1 }
6 s9 n$ M. J; w2 o6 u' F$ Y* t* q% W$ S9 }: e2 x
8 g8 t/ L8 L l9 ?: W! Y+ k+ d: Z$ C
2 z. [* W. q; p4 X3 P4 ~- @( H |
|