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