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