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