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