飞飞世界论坛
标题:
搜索公会的功能
[打印本页]
作者:
admin
时间:
2016-1-10 03:38
标题:
搜索公会的功能
对于那些谁需要它 - 谷歌缓存FTW。 :
9 D, x g0 p: L7 k/ G" ?6 F3 k
如果我鼓掌纯粹是我复制错误时,D
l+ O) e1 c% q* S3 \
积分当然Pumbaaa。
9 d- n, k- p: |( \, ?$ A
! j$ }% j+ f* V$ I
FuncTextCmd.cpp:
& r: V( r' D! i. m5 l
' M6 e$ Q* j0 U0 ^, ]8 M3 A
代码:
/ B) n2 Y6 a% U, G L
#ifdef __PARTY_FIND
% l' ^/ o0 o8 m( v& }6 G" G
BOOL TextCmd_getparty( CScanner& scanner )
" N; \3 ]( v2 z( T$ H3 ` T0 a( i7 F
{
) v B, y! J0 K; j$ ^; T* m
#ifdef __WORLDSERVER
! f. z% f1 G5 q* v
CUser *pUser = (CUser*)scanner.dwValue;
) H! v4 N; R) d/ g. Q7 d4 ~* s
if( pUser->m_idparty > 0 )
% z- l1 v& g* g! `$ ^
{
$ U, o. s7 U, b
pUser->AddText( "你已经加入一个公会。" );
! o" e4 o. ^& u4 v: l" O( d
return TRUE;
, ~+ N7 B% z( M0 k6 K- q7 m
}
( e% g, ~8 J& S, t, g
CParty *pParty;
$ {/ t1 ]/ ]+ d! {( }
pParty = g_PartyMng.GetPartyFree();
4 V3 S$ a2 `% z" p0 D) j2 _
if( pParty )
8 l& n( ]. |6 q: D, g1 G+ d% y
{
# r2 \* y/ H5 e3 J, P: T
g_DPSrvr.InviteParty( pParty->GetLeader()->m_idPlayer, pUser->m_idPlayer, FALSE, TRUE );
% {* C2 i; o% C
}else
3 ?8 W; G# V2 O. Z. c8 i' B
{
5 B; p/ v( o2 N2 k) [4 Y% z: x
pUser->AddText( "抱歉,这里没有任何一个公会。" );
4 y2 Y: ?. M E4 _9 L
}
- e A* S1 ]( h
#endif
. Z# _# B" R- m1 W, j
return TRUE;
6 p& C: _* L! ^# x6 f
}
' t5 W7 o4 j& [0 V2 C
#endif //__PARTY_FIND
; {3 o. S' t2 ]/ b/ u$ \5 `3 p+ H
4 D: z4 w; [9 i9 K
代码:
, l0 w/ }: J: p
BOOL TextCmd_PartyInvite( CScanner& scanner )
; p6 j9 _% o2 q# J2 A$ z" u; Q
{
$ F1 g8 ?% q& y# a/ p# A' I
#ifdef __WORLDSERVER
/ E4 q& I( o9 \5 F9 m- e% f
CUser* pUser = (CUser*)scanner.dwValue;
; q# C% b( V# I* O; J! X
MoverProp* pMoverProp = NULL;
+ G- R6 r3 ?% \5 q6 s5 y
scanner.GetToken();
; e' @. k- }- f* u) b/ L; E
#if __VER >= 11 // __SYS_PLAYER_DATA
* Z( h3 X+ U r% M- @
u_long uidPlayer = CPlayerDataCenter::GetInstance()->GetPlayerId( scanner.token );
- a' q6 r3 P; }6 A
#else // __SYS_PLAYER_DATA
6 y; a1 v3 ?7 x6 D5 M5 J9 ]! M2 r
u_long uidPlayer = prj.GetPlayerID( scanner.Token );
* w& P* ?% D: S4 B7 [
#endif // __SYS_PLAYER_DATA
, w3 ?# [+ C" L$ B; o8 U; l1 a
if( 0 < uidPlayer )
' z7 z6 ?3 j/ t& k3 P+ j9 ]
{
* O' x5 N/ A' Y2 O5 I+ K# {
CUser* pUser2 = g_UserMng.GetUserByPlayerID( uidPlayer );
( J' h, t8 Q! `2 @6 U! z! V1 `
if( IsValidObj( pUser2 ) )
2 h' ?$ s3 Q2 n0 E. j. w- S
#ifdef __PARTY_FIND
; q1 ` H' b4 ^/ v9 u6 x
g_DPSrvr.InviteParty( pUser->m_idPlayer, pUser2->m_idPlayer, FALSE, FALSE );
# J" B& {8 P$ j; z" y' I
#else
5 W ^: Z) t/ W" J
g_DPSrvr.InviteParty( pUser->m_idPlayer, pUser2->m_idPlayer, FALSE );
$ w0 k8 [# Q7 |0 y2 N
#endif //__PARTY_FIND
) j: K8 y- K% P; N6 W' p# N$ u
else
. v' b, v# D, x! Y
pUser->AddDefinedText( TID_DIAG_0060, "\"%s\"", scanner.Token );
" Z# g: x$ q" \3 }' H; b
}
% L; H3 E7 |3 ]1 ~) U* ~: V. l
else
9 Z0 Q8 _2 k9 D( c$ R
{
{2 r: H+ U& K7 ?) T X
pUser->AddDefinedText( TID_DIAG_0061, "\"%s\"", scanner.Token );
7 n# C7 Z6 E& y& D
}
6 h) A- Q. Q5 b; R4 v' m, D
#endif // __WORLDSERVER
3 x* B4 R. t) }9 @
$ H# m1 t: [4 d3 ]/ @% `
return TRUE;
- \5 i' W; k$ m4 z
}
; i6 }. `" v' K. n
( G( H/ U' [# n% G. W) v& r
代码:
* W% e: |7 B% y; x8 M
#ifdef __PARTY_FIND
. ~* @1 r. O8 C3 r+ _: G2 C
ON_TEXTCMDFUNC( TextCmd_getparty, "getParty", "getP", "", "", TCM_SERVER, AUTH_GENERAL ,"" )
7 X- L3 [ Z7 M/ [
#endif //__PARTY_FIND
% a/ b3 r, S0 i3 u
DPClient.cpp;
6 G. k9 F- S& a- o$ X( `( U* o
Code:
6 G6 @. A H1 t4 H% H. k
void CDPClient::OnPartyRequest( CAr & ar )
$ p: w8 T, R' ?2 F
{
9 P9 h4 R% ~, R/ y; r" ^4 Q
u_long uLeader, uMember;
/ Q( H0 T# h6 J8 n' D5 L, f# {4 u
4 `9 D7 m6 }+ R) f: U3 g d
BOOL bTroup
6 J. Y4 l' G' J, h
#ifdef __PARTY_FIND
0 l N8 u% W" e& t' s
, bPartyFind
+ t. y: N* j* [" u/ N" A
#endif// __PARTY_FIND
0 y1 f- @( u! U$ W& ?6 |; x
;
, _6 e& ?. E2 |) n6 r8 c
LONG nLeaderLevel, nMemberLevel, nLeaderJob, nMemberJob;
9 o$ t8 E( I$ {& g+ p
BYTE byLeaderSex, byMemberSex;
* |* \" p8 W% Z+ H
char szLeaderName[MAX_PLAYER] = {0,};
6 C9 W% t G; B! n
ar >> uLeader >> nLeaderLevel >> nLeaderJob >> byLeaderSex;
^2 I: Y A! S, a5 S
ar >> uMember >> nMemberLevel >> nMemberJob >> byMemberSex;
, a+ j, \2 M n
ar.ReadString( szLeaderName, MAX_PLAYER );
: D+ E. x: N- p! a" E- t' v
ar >> bTroup
" n, L- j: L9 Q. ?" A
#ifdef __PARTY_FIND
6 }" @- s7 k% K J' y' G$ Z
>> bPartyFind
* W9 T8 q- N9 r+ Z* d, ]
#endif //__PARTY_FIND
6 K9 Q3 O% {; A' j f
;
/ Y6 l4 R+ ~: g) a# u
, p) G6 [1 u B! _# \" N7 T
if( g_Option.m_bParty == FALSE )
7 a( h8 R: I8 S- u
{
; X0 {& W2 C) u0 l5 q1 ^
SendPartyMemberCancle( uLeader, uMember, 3 );
7 I' v) ~5 Q/ h
return;
6 U/ c: z9 e5 Z
}
9 u `- J# `7 ^5 O/ n* a
1 |- b( d6 j( s, ~: o1 S! h# X
#ifdef __S_SERVER_UNIFY
4 O7 i1 e- l+ a* u$ d0 q& ^) t4 |
if( g_WndMng.m_bAllAction == FALSE )
9 M! |0 b+ `+ Q5 D) C" y- }
return;
& N" A" {9 E/ S. J5 ]* M) p
#endif // __S_SERVER_UNIFY
6 n* R0 Y7 l. W# J: x6 \
7 u! G: Y _' J# D; f
CWndBase* pWndBaseBuf = g_WndMng.GetWndBase( APP_PARTY_CONFIRM );
& g7 F1 I4 u/ _# t
( X8 u* l2 z& M% R
if( pWndBaseBuf )
5 e" Y# `5 y J
{
9 D2 D8 T2 j" C. j% _2 U
SendBlock( 7, g_pPlayer->GetName(), szLeaderName );
. S; M4 d$ i' D+ K
return;
# Q, G H/ \; J" }6 v
}
- i( ]' L4 T1 u `, i; [4 P
#ifdef __PARTY_FIND
6 v- g" w- U8 W( |
if( bPartyFind )
) p6 T+ x# C6 `- A+ O! _
{
" Z, s2 q6 s5 @4 @! M; I
SendAddPartyMember( uLeader, nLeaderLevel, nLeaderJob, byLeaderSex, uMember, nMemberLevel, nMemberJob, byMemberSex );
+ i" S+ V, P" K$ J/ R2 z5 d* @
}else
" e2 Y( g. Y1 d3 }* L0 H
{
9 C9 ^$ p! I& M2 E6 C0 m b3 x
g_WndMng.m_pWndPartyConfirm = new CWndPartyConfirm;
( ^2 E0 _$ j$ x: a$ q" H
g_WndMng.m_pWndPartyConfirm->SetMember( uLeader, nLeaderLevel, nLeaderJob, byLeaderSex, uMember, nMemberLevel, nMemberJob, byMemberSex, szLeaderName, bTroup );
% [9 z8 t6 J, z2 M& K" C L
g_WndMng.m_pWndPartyConfirm->Initialize();
; |- n% H6 t' C% G! @4 _2 G! Q
}
3 l- Y$ Q; C# Z. r+ |
#else
/ n/ {+ D) X0 U9 D. C
g_WndMng.m_pWndPartyConfirm = new CWndPartyConfirm;
5 t. b% u. J% c; |6 P+ z
g_WndMng.m_pWndPartyConfirm->SetMember( uLeader, nLeaderLevel, nLeaderJob, byLeaderSex, uMember, nMemberLevel, nMemberJob, byMemberSex, szLeaderName, bTroup );
; l' X+ f5 |7 t6 a) x" T& U3 E
g_WndMng.m_pWndPartyConfirm->Initialize();
9 P1 D. |# O/ y- O! o! p. m7 G" X
#endif //__PARTY_FIND
+ h# {& g: v+ o7 |
}
+ X( s9 k" b# X
( x v G W. o m; R
代码:
+ {- x4 ^8 U* |9 a% v- b, e! `
#ifdef __PARTY_FIND
, Z; S5 G% V- @+ Y: z) [, |
void CDPClient::SendAllowParty( u_long idLeader, u_long idParty, BOOL bAllow )
7 O7 p. Z5 x4 \1 J s- b4 U* K5 b
{
3 z& f$ {5 f" @7 ]
BEFORESENDSOLE( ar, PACKETTYPE_ALLOW_PARTY, DPID_UNKNOWN );
% X1 c. o2 \) ]+ K& [* G. g g& r' x
ar << idLeader << idParty << bAllow;
* t w4 M p7 Q
SEND( ar, this, DPID_SERVERPLAYER );
Q5 c1 G& O5 w% v2 p
6 n" |$ m+ B) w, L* }- K+ h
}
# W( k8 w, K! }) P5 P2 v. E" f
void CDPClient::OnPartyAllowJoin( CAr & ar )
3 I! J9 O) ]7 N* o3 x5 E( I. C
{
9 c2 ?; t5 b1 U( Q& a9 b" y, S4 D m
ar >> g_Party.m_bAllowEnter;
1 y5 W' P# A# P Y# X
}
* c9 m% J) R3 X4 V8 j2 h
#endif //__PARTY_FIND
% F* v1 d/ s) P# t' }& c8 p/ F. D: n
Code:
8 Y9 h3 d3 A/ _! l) U. P
#ifdef __PARTY_FIND
) E: d6 r& s4 u5 I7 w5 l2 E) K
case SNAPSHOTTYPE_PARTYALLOW: OnPartyAllowJoin( ar ); break;
* T, E% p0 l/ R3 ]8 b/ a" x
#endif
) M: J$ A m+ y' ]
( v4 C" B. N. ]& @0 S
party.cpp:
7 X* R7 P. }9 L" U1 B: L
代码:
~: n3 [7 W, u+ x& L& @
CParty::CParty()
6 s5 i# L% ]# S+ Z5 d* @* ?
{
+ n8 K9 R% j ~4 c* _& r9 J- T
m_uPartyId = 0;
, j+ }+ s8 o" U) U2 d& s; w
m_nSizeofMember = 0;
9 G4 o; i; F) z5 v: o% F2 z4 _: c
memset( m_sParty, 0, sizeof(m_sParty) );
/ O5 s/ c6 b9 ~. b
m_nLevel = 1;
- Z- S% q2 [* G( `! j: _
m_nExp = m_nPoint = 0;
1 Z# Z3 Y( y, Q+ ^' L
m_nTroupsShareExp = m_nTroupeShareItem = 0;
$ ~ A1 N# j' a6 s! _; r3 _
m_nKindTroup = 0; // ????
, o1 J: u8 k0 b. S
m_nReferens = 0;
7 |6 I8 h4 _; a6 A. j1 Q
m_nGetItemPlayerId = 0;
, n2 q; U# u2 o4 S# M' _
#ifdef __PARTY_FIND
# B5 }' \8 }0 g% N
m_bAllowEnter = TRUE;
0 x4 R. c/ n' E D0 w; Q: d7 z
#endif //__PARTY_FIND
3 A4 Z$ g6 W% a4 N( O) ?
for( int i = 0 ; i < MAX_PARTYMODE ; i++ )
+ Q& x, V$ K# ^2 {! \
{
, E9 d$ ^6 Z* H$ q' ^+ E3 O
m_nModeTime[i] = 0;
) B6 G1 j$ H# D( V; q
}
V$ i7 V# p1 f& p/ F
m_idDuelParty = 0;
+ N: `7 Y# c; B5 w" S7 @) Z
#ifdef __WORLDSERVER
( E. w: ?+ g2 C: b! f" z0 u$ Q
m_dwWorldId = 0;
# N0 [7 T% j. f
#endif // __WORLDSERVER
4 `3 c/ [" u) |# \/ V
}
/ I4 N% s- Y8 T% z2 e9 M' F
代码:
7 k1 w c" f5 z# g. k
void CParty::InitParty()
9 s! y9 s1 e" G
{
1 `8 F! {, E$ e3 i d
m_uPartyId = 0;
! Y' U4 b! w4 F" e
m_nSizeofMember = 0;
6 x1 z4 C: B2 s$ r }" t1 O
memset( m_sParty, 0, sizeof(m_sParty) );
' Z/ H3 p8 e3 w+ T1 G, c. z, l) X
m_nLevel = 1;
5 `1 c1 z' P i7 f! b3 L1 U& U
m_nExp = m_nPoint = 0;
& O5 l* z" g/ e2 p5 Y" k5 E
m_nTroupsShareExp = m_nTroupeShareItem = 0;
) P9 y( Z& d2 q
m_nKindTroup = 0; // ????
5 h2 p# U. B1 n
m_nReferens = 0;
0 m; y! X+ | a0 ^; ^
#ifdef __PARTY_FIND
7 ]: z. I8 W& P& |7 c- B
m_bAllowEnter = TRUE;
3 ^: |+ N1 ], D7 ~
#endif //__PARTY_FIND
$ S& V7 F" o5 p" V* U
for( int i = 0 ; i < MAX_PTMEMBER_SIZE ; i++ )
4 @% u# m3 s1 v* z# r- S7 l
{
8 C2 D/ w. A; T7 i( \
m_aMember[i].m_uPlayerId = 0;
( b3 }/ Z: [! M
m_aMember[i].m_tTime = CTime::GetCurrentTime();
% g" O t* P5 d% N: N! u
m_aMember[i].m_bRemove = FALSE;
" u4 H9 z. w0 N. u; N. M' S0 ]
#if __VER < 11 // __SYS_PLAYER_DATA
. o3 M1 u: W# m# i8 z5 R
m_aMember[i].m_nLevel = m_aMember[i].m_nJob = 0;
3 R6 ^! n( {: s# x3 ^0 j
m_aMember[i].m_szName[0] = '\0';
. c3 z0 _* t$ P
#endif // __SYS_PLAYER_DATA
D/ p! Q- E" h- }0 d3 L
}
" v& q m* ~5 M" @& I) N0 n
}
4 e' x: O5 ` z$ w
代码:
' }# f& U/ F' ^4 q
#ifdef __PARTY_FIND
( t7 {* |: X- `# u
CParty* CPartyMng::GetPartyFree()
2 W2 j$ ?7 t1 P$ S: }' F, h: E2 m
{
: s# ]# ]% y' B; a T& X
CParty* pParty, *pPartyTmp = NULL;
1 r/ T/ k o/ K0 j
if( !m_2PartyPtr.begin()->second )
5 ]. { A! } I1 Y
return NULL;
: M; c; K1 T' q, `- l! X' q
BOOL bRan = FALSE;
, w9 z q$ r9 G8 f6 v% q A) ~, d
DWORD dwRand = 0;
8 ?- w$ ]) o( }- M: o8 v% m
if( m_2PartyPtr.end()->first >= 1 )
2 m* n$ c; S7 }9 Y
DWORD dwRand = xRandom( m_2PartyPtr.end()->first );
4 a5 h0 w+ G' X! s4 T6 |8 C( {! l
2 O1 [0 A6 p! D; r
for( C2PartyPtr::iterator i = m_2PartyPtr.begin(); i != m_2PartyPtr.end(); ++i )
4 j F% _0 N* u7 a g) f4 q1 e
{
* ?8 E. Y' c& B( V7 K* _( ^
pParty = (CParty*)i->second;
4 Q# n; @& F9 P' X7 T9 v
if( pParty && pParty->GetSizeofMember() < 8 && pParty->m_bAllowEnter )
1 _7 e% E) k4 t5 Q4 h6 T
{
# D5 q |) ^& D) W9 @& _: S2 \ C* j
if( i->first > dwRand )
: b( J2 M: b% n+ s
return pParty;
0 e& ? K! e$ L) q
else
0 I/ \- T0 D9 w* [- p
pPartyTmp = pParty;
$ o4 N$ C/ P, [; b9 c6 O+ S2 {+ b
}
; w( F" F7 W1 v9 c5 |
}
Y8 f2 C! r6 a$ S' W$ l
return pPartyTmp;
/ ~; z8 P0 t* B! ]- @* z
}
$ ?* j7 E8 ^# `$ w" u8 S1 S1 C
#endif //__PARTY_FIND
" a( x; z* J- M9 u, g0 P
6 {* y; |& i1 K
DPSrvr.cpp:
3 W: Z- K* Y: _1 j+ R! R) Y O% L
代码:
. ~% T2 @7 T- T
#ifdef __PARTY_FIND
+ ^$ x5 J! Z" {! l
void CDPSrvr::OnAllowParty( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )
0 c2 m, e8 s: q' E% Y7 I/ T
{
5 w/ h- b6 p+ v0 b% A7 G
CUser *pUser = g_UserMng.GetUser( dpidCache, dpidUser );
2 @' Q- `) }6 L8 O* k! s2 Q
if( IsValidObj( pUser ) )
+ x# S7 P4 Y# z+ |/ O' |7 U) Q; X
{
1 S9 k0 E c- m: f+ v2 H+ S
u_long idLeader, idParty;
8 |7 f8 [. ?& T& v3 t- X) T- o1 k
BOOL bAllow;
5 j. Z# Y' \ @! D1 D$ l/ ^$ v
ar >> idLeader >> idParty >> bAllow;
/ Q+ W' D& i/ U/ q; E
if( idLeader != pUser->m_idPlayer )
# T f2 g$ ~2 P/ c6 N6 G$ E
return;
8 {# C+ ?7 m$ ]# t K) c8 w/ f
CParty *pParty = g_PartyMng.GetParty( idParty );
/ s o! ~2 m# C, y
if( pParty && pParty->IsLeader( idLeader ) )
9 b: r8 y# w% y) J9 u
pParty->m_bAllowEnter = bAllow;
3 e( ]4 v K5 |4 n: l
else
) J9 M P: \, }5 J" _
return;
: e0 C% K: ^6 G9 L s) f& f
! M( X8 p' p. v
CUser *pMember;
' I/ v5 {6 G; H3 F
for( int i = 0; i < pParty->m_nSizeofMember; i++ )
1 c8 \8 E# D7 u5 X3 j$ X, P) b, j
{
. S5 ~" d! y; w5 `! I) M
pMember = (CUser*)prj.GetUserByID( pParty->m_aMember[i].m_uPlayerId );
/ f. Y* M- b* G. y" c
if( IsValidObj( (CObj*)pMember ) )
. R9 O! m' t8 K
pMember->AddPartyAllowJoin( pParty->m_bAllowEnter );
* N% M) H6 ]0 Z
}
! K1 p, T) O6 f6 @5 o( K5 j" X
}
# |5 o* K0 F* T$ l9 N1 M
}
) {0 I2 A! h4 y6 |, P& `: j
#endif //__PARTY_FIND
8 O7 ~ J& c% e& \5 r
9 W3 C* H8 N% }* y& d7 r7 s9 F9 Q, [
代码:
2 O- ]0 h8 ?7 |( H( ?" y6 s
#ifdef __PARTY_FIND
1 C7 p5 d8 m4 ]* X
ON_MSG( PACKETTYPE_ALLOW_PARTY, OnAllowParty );
Z" u' T) x/ E- P. ~. a
#endif //__PARTY_FIND
" s' A" Q, A0 i# U4 c U) u/ C
2 ^: R. G( V2 | X" x/ m! |+ g
void CDPSrvr::OnPartyRequest( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
5 V3 Y& W2 B' [; Y
{
3 x6 M' r, y/ N/ b' P' g, R! `5 G
u_long uLeaderid, uMemberid;
3 M- B5 D" ^1 v
BOOL bTroup;
t3 i7 m) b d+ g. ]
ar >> uLeaderid >> uMemberid;
* o1 {# D8 \1 W# P6 o; L3 O! G
ar >> bTroup;
3 n+ J& a% R4 P; A5 _% m( H
+ i0 d$ \: e; @' r+ G( G) ~1 {: V
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
4 g3 f5 o7 m' a/ s$ m
if( IsValidObj( pUser ) && pUser->m_idPlayer == uLeaderid )
% j& K: R; E8 U% ?. [" O
#ifdef __PARTY_FIND
( Q7 L2 a8 A& k6 S F K, y
InviteParty( uLeaderid, uMemberid, bTroup, FALSE );
) W. @( L, _0 J' c6 ?
#else
7 Z# l$ ~$ ?2 d. m
InviteParty( uLeaderid, uMemberid, bTroup );
9 V- ^/ f3 e% U4 n0 z# ^) h
#endif //__PARTY_FIND
% X0 s: ~9 k4 h$ W. n- X ~) F( W
}
- I5 w' d6 u$ A3 k6 }
9 o8 q& h# G" t' U6 f
代码:
$ r4 f4 g* @7 T
#ifdef __PARTY_FIND
* z0 H7 W& B( t+ C% ]) b) u
void CDPSrvr::InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup, BOOL bPartyFind )
# B F/ ^1 Z9 x4 ~. y" d" K$ I
#else
! R8 x: |# M# G. f0 W, b/ ^
void CDPSrvr::InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup )
) L' \( v" D' c* b
#endif //__PARTY_FIND
2 z+ E I# B: I1 z7 Y* P7 F+ M( D* {
{
% i1 F( k! u4 ^2 ~7 N
CUser* pUser = g_UserMng.GetUserByPlayerID( uMemberid );
2 \! B o3 {2 [7 O! K9 T" }
CUser* pLeaderUser = g_UserMng.GetUserByPlayerID( uLeaderid );
/ X, k; z" ~% G! t$ h
8 a0 d/ v% N, c- ~% a
if( IsValidObj( pLeaderUser ) && IsValidObj( pUser ) )
; e9 h6 H: h2 S/ b# C
{
, N% w) Z, J, H- V' {% ?# P4 C0 e
if( !pUser->IsAuthorization( AUTH_GENERAL ) || !pLeaderUser->IsAuthorization( AUTH_GENERAL ) )
7 n' M E$ M$ T4 d
{
C. v0 C/ p% d" S
if( !pUser->IsAuthorization( AUTH_ADMINISTRATOR ) || !pLeaderUser->IsAuthorization( AUTH_ADMINISTRATOR ) )
6 t/ V' ]) y3 o( I6 p2 @
{
6 ^) q# _8 ?5 Q6 }! \
pLeaderUser->AddText("没有足够的权限。");
% g2 A. [1 h8 s9 \7 v7 f
pUser->AddText("没有足够的权限。");
1 y( d; z& c$ X# Q5 ` E
return;
/ O/ X8 h3 H; f0 ^
}
7 y3 s e& ~# l3 R( K- c- ~' i
}
" o' u) x- L# }- z4 n# S$ `9 n6 t& |0 p
// ???? ? ??? ?? ????.
* o; [0 v+ K& k8 W
CWorld* pWorld = pUser->GetWorld();
* }; ?0 f8 L) o4 i" U6 h
if( ( pWorld && pWorld->GetID() == WI_WORLD_GUILDWAR ) || pLeaderUser->GetWorld() && pLeaderUser->GetWorld()->GetID() == WI_WORLD_GUILDWAR )
5 K n4 P' c) J& ]
{
- F" S6 O$ m& C7 q" ~2 N7 E
pLeaderUser->AddText( prj.GetText(TID_GAME_GUILDCOMBAT_CANNOT_PARTY) );// "????? : ??????? ??? ?? ????" );
( r* p6 K' X7 N; u
return;
9 \# b4 }5 K% F/ \. G5 E
}
) E% n1 y% Y: D" ~3 Z
#if __VER >= 11 // __GUILD_COMBAT_1TO1
# k: s' X. f6 A
if( g_GuildCombat1to1Mng.IsPossibleUser( pUser ) )
8 b1 m- l x* a0 F$ l; n
{
1 O1 n6 r4 A- ? ? ~: T/ d
pLeaderUser->AddText( prj.GetText(TID_GAME_GUILDCOMBAT_CANNOT_PARTY) );// "????? : ??????? ??? ?? ????" );
9 x. `7 q; D8 O
return;
' k! R) I* |7 O7 [$ y7 U% n
}
0 ~) k) D8 ]" W/ s- D
#endif // __GUILD_COMBAT_1TO1
7 J6 k' `+ S* D: G
* T8 \/ k0 g1 ~% l
#if __VER >= 8 // 8? ?? 061226 ma
: g' ?! p! P9 f I; a
if( 0 < pUser->m_nDuel || 0 < pLeaderUser->m_nDuel )
: P- q) _" d1 b- x
{
9 T9 W& P# `5 \ F
return;
( b1 l2 w+ S e
}
, V$ C( `/ U2 m* s, s6 E' H
#endif // __VER >= 8 // 8? ?? 061226 ma
6 M: t- v' R3 o$ \# ^6 Q
2 T3 m) y' H$ z5 D, n
if( pLeaderUser->m_nDuel == 2 )
: x5 A8 ?7 `0 R/ G, }
{
- n9 ?/ e5 ]' N D
pLeaderUser->AddDefinedText( TID_GAME_PPVP_ADDPARTY, "" ); // ?? ???? ?? ???.
. ^' r/ b' r4 r5 [# u1 C; U. I% _
}
8 W( H8 \4 l4 b
else
8 L+ T2 q" J7 r
{
( M3 J. F+ E# B( Z7 B8 B* [9 I$ E
if( 0 < (CMover*)pUser->GetPartyId() ) // ?? ??? ???
" e1 J: E7 |& ^# O. @5 H5 i5 _+ l* S
{
( h! b0 {' x& w! S8 Y" n
pLeaderUser->AddPartyRequestCancel( uLeaderid, uMemberid, 1 );
4 M) N$ x& y- x1 {1 o' v
}
* k- Y! p, G f. m' d
else
+ q; y0 Z) v0 `% N; A
{
% n( V2 {, S2 X6 z& x
if( pUser->IsAttackMode() )
( Y* P, b7 z, D# p& O8 y" C6 a
pLeaderUser->AddDefinedText( TID_GAME_BATTLE_NOTPARTY, "" );
8 u1 q0 _/ Y# b: I$ ]
else
$ d- v0 m4 ]$ \; r! M; v- q3 Z
#ifdef __PARTY_FIND
& H0 e3 Y* P+ z4 W! C2 b+ G
pUser->AddPartyRequest( pLeaderUser, pUser, bTroup, bPartyFind );
- [) T4 _# c. T& P3 v
#else
6 [% |4 k( P1 j2 ]
pUser->AddPartyRequest( pLeaderUser, pUser, bTroup );
4 b! g1 L; J( H
#endif //__PARTY_FIND
% t9 f4 X. z* B& `) A2 J7 A
}
' d& C# S# H( W' F" |8 [
}
4 V8 C! K; J+ T( f/ M+ G/ W0 W/ C
}
1 Q: B& r2 F/ V0 t
else
. s* l( ` k) ] \* G& l7 z! Q1 s3 g( X F
{
' k ^. S, |: |- C
if( IsValidObj( pLeaderUser ) )
: `( S9 M' W* q: n4 Y
pLeaderUser->AddPartyRequestCancel( uLeaderid, uMemberid, 4 );
! L8 L& _7 M5 p+ Z$ n% L
}
% }) k, t: E; d4 M& U9 |* B) f
}
; o! ]$ A' } R' O) E0 l
0 a4 N6 ?0 T* i: f. G
User.cpp:
+ L/ N) u# U0 g' S/ W
代码:
5 d# r/ q; A, v% f# @
#ifdef __PARTY_FIND
- j( s& Y7 [2 W) }1 `
void CUser::AddPartyAllowJoin( BOOL bAllow )
0 k( ^# l( R* n8 K4 C/ @, x
{
- v8 w% |3 x, _) d
if( IsDelete() ) return;
/ z O, G* D8 u6 B! I2 Y
# V1 v9 b7 g. z! d
m_Snapshot.cb++;
. R0 a7 h( R5 f8 _/ U! S) ~+ G. U
m_Snapshot.ar << GetId();
# N- e$ S1 v+ U8 j D+ e! {- `+ X! {: k
m_Snapshot.ar << SNAPSHOTTYPE_PARTYALLOW;
: {# w, }3 P/ b$ _: w; p% E v
m_Snapshot.ar << bAllow;
& P C8 z5 y8 M3 u# m# N
}
1 K/ s/ F& m* \
#endif //__PARTY_FIND
( u6 }; @9 |% ?2 J( p% }
6 x" ~$ K+ u2 V
代码:
+ ~$ R& k6 G) Y5 J. \7 I
#ifdef __PARTY_FIND
/ O4 N- B3 M! ?7 ?# p( x$ H+ L1 ^
void CUser::AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup, BOOL bPartyFind )
4 z/ k) ^) i, G1 @
#else
* n" x6 h! `! J1 O# p; K0 R
void CUser::AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup )
0 N4 ~* v O8 r; r) j
#endif //__PARTY_FIND
! I- O' l6 i9 X9 Z, t0 H b
{
! ~+ G# z% H5 g: ?8 T/ a4 y" W
if( IsDelete() ) return;
! ?. Y" l) V9 f1 d2 R, a2 F& q
; g$ ?8 d0 w$ h; Y# u. N- m
m_Snapshot.cb++;
: x- ]# q7 G5 B
m_Snapshot.ar << GetId();
" A: x& j# d$ \( k) g D' X
m_Snapshot.ar << SNAPSHOTTYPE_PARTYREQEST;
" G0 N( r7 V2 O/ h5 j2 ~' E
m_Snapshot.ar << pLeader->m_idPlayer << pLeader->m_nLevel << pLeader->m_nJob << pLeader->GetSex();
% @0 m4 }0 V8 P8 G
m_Snapshot.ar << pMember->m_idPlayer << pMember->m_nLevel << pMember->m_nJob << pMember->GetSex();
' H; W8 ]: X0 X- j8 h8 d" _
m_Snapshot.ar.WriteString( pLeader->m_szName );
$ u# Z4 S" x# W6 A2 _
m_Snapshot.ar << bTroup
+ [# x$ \. |( I% i/ v% V
#ifdef __PARTY_FIND
: J. G6 a* I6 o s- Y: ?
<< bPartyFind
- h! e% ]5 ^. ~
#endif //__PARTY_FIND
! {5 j: a- L* ~8 Y$ u
;
/ a7 a* J% U! q- q
3 C6 m$ d" ` i7 H: m! ^
}
! c1 v& r4 H# M4 t
! `9 w* O4 b! ]. j) q
DPSrvr.h(公共范围PLS)
9 p4 p! x5 t( x# r9 d) X) C$ Z5 ~* h
代码:
& ]9 z/ i6 ~/ { [ |9 X
#ifdef __PARTY_FIND
+ h3 R, w! |: M! h3 o0 m
void InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup, BOOL bPartyFind );
# A1 c) b7 F* c, @- u4 R# y
#else
7 d+ j2 Y: J: ^+ a& Q ?0 C; _
void InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup );
* q+ e, S5 t% {
#endif //__PARTY_FIND
( V. M: B/ s+ `
/ O5 U& f- s' W
代码:
* I: o+ \9 ^8 f3 g
#ifdef __PARTY_FIND
\9 {% z7 [' G: I4 `
void OnAllowParty( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
' |+ ^% i0 v* q" O" P5 {0 [1 N
#endif //__PARTY_FIND
% L1 q3 X5 Q9 J5 Y* J
/ G& Q4 ~& `- e4 z
User.h(以及):
2 {. f4 I! o9 X. R! G7 _
代码:
: D9 O2 A9 F# X) u! {8 F0 J
#ifdef __PARTY_FIND
% x6 O O& Z) A( |! \
void AddPartyAllowJoin( BOOL bAllow );
; @( r6 `3 K* _
void AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup, BOOL bPartyFind );
; b% E* V. r/ {, B; H2 ?
#else
7 c N) J6 l# R2 u1 t2 T
void AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup );
0 y4 r6 \& d& J5 h! D
#endif //__PARTY_FIND
, z8 N+ M, y* v+ D& M5 x+ e" i) N
7 j5 O: ^ X- N
party.h:
7 P: }; M1 ^5 e6 M; b9 _ |$ z8 O+ a
代码:
* }3 a% v4 u! ~5 A# z) _7 w
#ifdef __PARTY_FIND
6 B7 s0 v. k* |4 C9 R
BOOL m_bAllowEnter;
/ D8 k ?3 n; ~& r
#endif
4 q/ ]4 ?- h" C! B& I0 w; E; c
& @5 M3 o0 b- l
代码:
* W6 T) v1 m, p; ]2 K: V# J
#ifdef __PARTY_FIND
; `6 H( L; q a5 E* ]- z2 U
CParty* GetPartyFree();
/ r/ W* x0 `- W+ {# b2 R
#endif
" `; T) ^2 D- t4 u8 X) {+ M3 T/ ^
! ] Z, e: y0 d1 o0 C- m
WndParty.cpp:
v5 K* b* E& p3 i8 G4 p
OnChildNotify:
7 m! p- I& ~ P- k) q' g% p
代码:
0 M( L i, a6 c
#ifdef __PARTY_FIND
" f! ?3 C" p$ J$ O) h* S
else if( nID == WIDC_CHECK1 )
/ E+ i; J( S6 h. S7 p
{
# R: ~% p: q$ l
if( g_Party.IsLeader( g_pPlayer->m_idPlayer ) )
9 y: G) ?& l% D4 n" y
{
. r. A R9 @6 e$ @; Z
CWndButton *chk = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
# I. ^0 s5 X$ E5 g6 a$ C6 F
g_Party.m_bAllowEnter = !chk->GetCheck();
7 ~ q4 ^$ C% v+ i% m3 C
g_DPlay.SendAllowParty( g_pPlayer->m_idPlayer, g_Party.m_uPartyId, g_Party.m_bAllowEnter );
+ U" Y6 {3 P2 F/ v2 q+ _
}
- z f6 e7 S* _
}
: N k/ {3 Y0 D" i2 t$ P& ?+ M
#endif //__PARTY_FIND
: o# _3 T8 W- {* g
+ i9 x* e9 S) x" Q' R; h
代码:
6 k4 _; j+ L& Y
OnDraw中:
! ]; x- H. ]. s' z) S8 p
代码:
* y9 R5 b- B! P9 I3 F) @
#ifdef __PARTY_FIND
- z) S# Q' D, ?5 t: I
CWndButton *chk = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
: x# D: d4 H, a1 I- I; d3 T
if( g_Party.IsLeader( g_pPlayer->m_idPlayer ) )
" w3 v1 g, s1 ^$ A L' [
chk->EnableWindow( TRUE );
& i' t4 J( p, U
else
# M1 T3 _% ^! y+ R' P( Y6 P! n
chk->EnableWindow( FALSE );
: ?; M7 p& S6 o8 Q$ b: t1 _ l
chk->SetCheck( !g_Party.m_bAllowEnter );
4 M* r* `. X, s* y' ^- c
#endif
8 }/ h: N# r7 |* |# T; K' K3 \/ o
, |5 o& C' y9 F! @6 v& g+ u3 ~
DPClient.h(public):
) Q' E5 f: j$ v9 \4 _
代码:
, l7 _) T6 p9 [. p, F/ i
#ifdef __PARTY_FIND
" Y/ T D1 n1 _8 K/ J. x0 l; E+ F2 `7 p
void OnPartyAllowJoin( CAr& ar );
% h8 g ?1 B/ _9 ?. x
void SendAllowParty( u_long idLeader, u_long idParty, BOOL bAllow );
4 D( B5 A; l7 C0 W
#endif //__PARTY_FIND
+ d% o, ~3 }' ?) s2 F! a, ?
7 s6 a! l! X8 P! H& d6 X
0 r# X; \1 ~7 \7 g6 n
WERS hinbekommt没有,请让赫克的权利。
( O# c6 _) R, A8 j* ]
不支持左右,所以难不...
$ V" b- G! w: r4 v2 t6 ?% s
党k的Windows NT甚至编辑它自己。
+ T( h; D" H& ^+ c" e% ^8 A5 C
包也,因为我不erschreiben进一步如果我你的。
$ j% m; X2 Y: `6 h
由于缺少Quantité k n个代码是什么升工程前。
/ G! N6 |+ b) B* d5 ]
如果是这样的。请发表。
* `' `0 K' C3 x8 q3 h, a% |
到目前为止,Pumbaaa
9 Q) B2 t. N& x) M, v' t
: k$ [7 Z$ i. M1 R1 b4 l
& L$ I5 H% z0 G! F4 o! z3 v
MsgHdr.h
# R& W0 T6 V* \7 V/ V/ t
#define SNAPSHOTTYPE_PARTYALLOW (WORD)0x8863
; l- X1 G* Z4 s o
#define PACKETTYPE_ALLOW_PARTY (DWORD)0x88100243
% L9 y5 T( C7 g
8 L! u( T1 l+ Y0 x9 Y* L) @5 ]
: E0 f. r. C. t- K( ^4 }: g
$ y3 m1 [+ R9 i
欢迎光临 飞飞世界论坛 (http://ffwold.com/)
Powered by Discuz! X3.2