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