506 lines
14 KiB
C
506 lines
14 KiB
C
![]() |
#include "version.h"
|
|||
|
#include "main.h"
|
|||
|
#include "util.h"
|
|||
|
|
|||
|
#include "saacproto_serv.h"
|
|||
|
#include "saacproto_util.h"
|
|||
|
|
|||
|
#ifdef _UNIVERSE_CHATROOM
|
|||
|
#include "chatroom.h"
|
|||
|
|
|||
|
UniChatRoomlist UniChatRoom[MAX_CHATROOM];
|
|||
|
|
|||
|
void CHATROOM_resetChat( int chat)
|
|||
|
{
|
|||
|
int i;
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
UniChatRoom[chat].use=0;
|
|||
|
UniChatRoom[chat].masindex=-1;
|
|||
|
UniChatRoom[chat].charanum=0;
|
|||
|
for( i=0; i<MAX_PPLINROOM; i++){
|
|||
|
UniChatRoom[chat].charalist[i].use=0;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_Init( void)
|
|||
|
{
|
|||
|
int i;
|
|||
|
for( i=0; i<MAX_CHATROOM; i++){
|
|||
|
CHATROOM_resetChat( i);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
int CHATROOM_getfreeChatRoom( void)
|
|||
|
{
|
|||
|
int i;
|
|||
|
for( i=0; i<MAX_CHATROOM; i++){
|
|||
|
if( UniChatRoom[i].use == 0 ) return i;
|
|||
|
}
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
int CHATROOM_CreateChatRoom( int fd, char *cdkey, char *data,
|
|||
|
char *message, int userindex, int clifdid)
|
|||
|
{
|
|||
|
int chat=-1;
|
|||
|
char buf1[256];
|
|||
|
if( (chat=CHATROOM_getfreeChatRoom()) == -1 ){
|
|||
|
sprintf( message, "Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
CHATROOM_resetChat( chat);
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
sprintf( UniChatRoom[chat].chatname, "%s", buf1);
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 3, buf1, sizeof(buf1) );
|
|||
|
sprintf( UniChatRoom[chat].charalist[0].cdkey, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 4, buf1, sizeof(buf1) );
|
|||
|
sprintf( UniChatRoom[chat].charalist[0].name, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 5, buf1, sizeof(buf1) );
|
|||
|
sprintf( UniChatRoom[chat].charalist[0].own, "%s", buf1);
|
|||
|
UniChatRoom[chat].charalist[0].use = 1;
|
|||
|
UniChatRoom[chat].charalist[0].fd = fd;
|
|||
|
UniChatRoom[chat].masindex = 0;
|
|||
|
UniChatRoom[chat].masfd = fd;
|
|||
|
UniChatRoom[chat].charanum = 1;
|
|||
|
UniChatRoom[chat].use = 1;
|
|||
|
CHATROOM_UpdateChatRoom( -1, chat);
|
|||
|
{
|
|||
|
char token[256];
|
|||
|
sprintf( token, "C|%s|%d|%s|%d|%s|%s|%s|",
|
|||
|
SUCCESSFUL,
|
|||
|
chat,
|
|||
|
UniChatRoom[chat].chatname,
|
|||
|
UniChatRoom[chat].masindex,
|
|||
|
UniChatRoom[chat].charalist[0].cdkey,
|
|||
|
UniChatRoom[chat].charalist[0].name,
|
|||
|
UniChatRoom[chat].charalist[0].own
|
|||
|
);
|
|||
|
saacproto_ACUniChatroom_send( fd, "", SUCCESSFUL, token, userindex, clifdid);
|
|||
|
}
|
|||
|
return chat;
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_DelChatRoom( char *Cdkey, char *data )
|
|||
|
{
|
|||
|
int chat=-1, uti;
|
|||
|
char buf1[256];
|
|||
|
char cdkey[256], name[256];
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 3, buf1, sizeof(buf1) );
|
|||
|
sprintf( cdkey, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 4, buf1, sizeof(buf1) );
|
|||
|
sprintf( name, "%s", buf1);
|
|||
|
|
|||
|
uti = UniChatRoom[chat].masindex;
|
|||
|
if( uti<0 || uti >= MAX_PPLINROOM ) return;
|
|||
|
if( UniChatRoom[chat].charalist[uti].use == 0 ) return;
|
|||
|
if( !strcmp( UniChatRoom[chat].charalist[uti].cdkey, cdkey) &&
|
|||
|
!strcmp( UniChatRoom[chat].charalist[uti].name, name) ){
|
|||
|
int i;
|
|||
|
char token[256];
|
|||
|
CHATROOM_resetChat( chat);
|
|||
|
sprintf( token, "D|%d|", chat);
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_LeaveChatRoom( char *Cdkey, char *data )
|
|||
|
{
|
|||
|
int chat=-1, uti, i;
|
|||
|
char buf1[256], token[256];
|
|||
|
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 3, buf1, sizeof(buf1) );
|
|||
|
uti = atoi( buf1);
|
|||
|
if( uti<0 || uti >= MAX_PPLINROOM ) return;
|
|||
|
if( UniChatRoom[chat].charalist[uti].use == 0 ) return;
|
|||
|
|
|||
|
sprintf( token, "L|%d|%d|%s|", chat, uti, UniChatRoom[chat].charalist[uti].name );
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
UniChatRoom[chat].charalist[uti].use = 0;
|
|||
|
UniChatRoom[chat].charanum--;
|
|||
|
{
|
|||
|
int mti = UniChatRoom[chat].masindex;
|
|||
|
if( mti == uti ){ //<2F>ҳ<EFBFBD><D2B3>뿪
|
|||
|
for( i=0; i<MAX_PPLINROOM; i++){
|
|||
|
if( UniChatRoom[chat].charalist[i].use == 0 ) continue;
|
|||
|
UniChatRoom[chat].masindex = i;
|
|||
|
UniChatRoom[chat].masfd = UniChatRoom[chat].charalist[i].fd;
|
|||
|
sprintf( token, "M|%d|%d|", chat, i);
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if( i>=MAX_PPLINROOM ){
|
|||
|
CHATROOM_resetChat( chat);
|
|||
|
sprintf( token, "D|%d|", chat);
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
return;
|
|||
|
}else{
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
CHATROOM_UpdateChatRoom( -1, chat);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_KickChatRoom( char *Cdkey, char *data )
|
|||
|
{
|
|||
|
int chat=-1, uti, whoti;
|
|||
|
char buf1[256];
|
|||
|
char cdkey[256],name[256];
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 3, buf1, sizeof(buf1) );
|
|||
|
sprintf( cdkey, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 4, buf1, sizeof(buf1) );
|
|||
|
sprintf( name, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 5, buf1, sizeof(buf1) );
|
|||
|
whoti = atoi( buf1);
|
|||
|
|
|||
|
uti = UniChatRoom[chat].masindex;
|
|||
|
if( uti<0 || uti >= MAX_PPLINROOM ) return;
|
|||
|
if( UniChatRoom[chat].charalist[uti].use == 0 ) return;
|
|||
|
if( whoti<0 || whoti >= MAX_PPLINROOM ) return;
|
|||
|
if( UniChatRoom[chat].charalist[whoti].use == 0 ) return;
|
|||
|
|
|||
|
if( !strcmp( UniChatRoom[chat].charalist[uti].cdkey, cdkey) &&
|
|||
|
!strcmp( UniChatRoom[chat].charalist[uti].name, name) ){
|
|||
|
int i;
|
|||
|
char token[256];
|
|||
|
|
|||
|
sprintf( token, "K|%d|%d|", chat, whoti);
|
|||
|
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
UniChatRoom[chat].charalist[whoti].use = 0;
|
|||
|
UniChatRoom[chat].charanum--;
|
|||
|
}
|
|||
|
CHATROOM_UpdateChatRoom( -1, chat);
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_JoinChatRoom( char *Cdkey, char *data )
|
|||
|
{
|
|||
|
int chat=-1, uti;
|
|||
|
char buf1[256];
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
|
|||
|
uti = UniChatRoom[chat].masindex;
|
|||
|
if( uti<0 || uti >= MAX_PPLINROOM ) return;
|
|||
|
if( UniChatRoom[chat].charalist[uti].use == 0 ) return;
|
|||
|
if( !gs[ UniChatRoom[chat].masfd].use ) return;
|
|||
|
saacproto_ACUniChatroom_send( UniChatRoom[chat].masfd, "", SUCCESSFUL, data, -1, -1);
|
|||
|
UniChatRoom[chat].charanum++;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_AgreeJoinCR( int fd, char *data, int userindex, int clifd)
|
|||
|
{
|
|||
|
int chat=-1, ti, i;
|
|||
|
char buf1[256], cdkey[256], name[256], own[256];
|
|||
|
char token[256];
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
easyGetTokenFromBuf( data, '|', 3, buf1, sizeof(buf1) );
|
|||
|
sprintf( cdkey, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 4, buf1, sizeof(buf1) );
|
|||
|
sprintf( name, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 5, buf1, sizeof(buf1) );
|
|||
|
sprintf( own, "%s", buf1);
|
|||
|
|
|||
|
if( (ti=CHATROOM_AgreeSomeOne( chat, cdkey, name, own, fd)) < 0 ){
|
|||
|
sprintf( token, "A|%d|FULL|", chat);
|
|||
|
saacproto_ACUniChatroom_send( fd, "", SUCCESSFUL, token, userindex, clifd);
|
|||
|
}else{
|
|||
|
sprintf( token, "A|%d|OK|", chat);
|
|||
|
saacproto_ACUniChatroom_send( fd, "", SUCCESSFUL, token, userindex, clifd);
|
|||
|
UniChatRoom[chat].charanum++;
|
|||
|
}
|
|||
|
CHATROOM_UpdateChatRoom( -1, chat);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_GSClosedHandle( int fd)
|
|||
|
{
|
|||
|
int i, j, mindex;
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
//andy_log
|
|||
|
log( "\nCHATROOM_GSClosedHandle( %d)\n", fd);
|
|||
|
|
|||
|
for( j=0; j<MAX_CHATROOM; j++){
|
|||
|
if( UniChatRoom[j].use == 0 ) continue;
|
|||
|
UniChatRoom[j].charanum=0;
|
|||
|
for( i=0; i<MAX_PPLINROOM; i++){
|
|||
|
if( UniChatRoom[j].charalist[i].use == 0 ) continue;
|
|||
|
if( UniChatRoom[j].charalist[i].fd == fd ){
|
|||
|
UniChatRoom[j].charalist[i].use = 0;
|
|||
|
}else{
|
|||
|
UniChatRoom[j].charanum++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
mindex = UniChatRoom[j].masindex;
|
|||
|
if( mindex < 0 || mindex >= MAX_PPLINROOM ||
|
|||
|
UniChatRoom[j].charalist[mindex].use == 0 ){
|
|||
|
char token[512];
|
|||
|
|
|||
|
CHATROOM_resetChat( j);
|
|||
|
sprintf( token, "D|%d|", j);
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
continue;
|
|||
|
}
|
|||
|
CHATROOM_UpdateChatRoom( -1, j);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
int CHATROOM_AgreeSomeOne( int chat, char *cdkey, char *name, char *own, int whofd)
|
|||
|
{
|
|||
|
int i;
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return -1;
|
|||
|
if( UniChatRoom[chat].use == 0 ) return -1;
|
|||
|
for( i=0; i<MAX_PPLINROOM; i++){
|
|||
|
if( UniChatRoom[chat].charalist[i].use == 1 ) continue;
|
|||
|
sprintf( UniChatRoom[chat].charalist[i].cdkey, "%s", cdkey);
|
|||
|
sprintf( UniChatRoom[chat].charalist[i].name, "%s", name);
|
|||
|
sprintf( UniChatRoom[chat].charalist[i].own, "%s", own);
|
|||
|
UniChatRoom[chat].charalist[i].fd = whofd;
|
|||
|
UniChatRoom[chat].charalist[i].use = 1;
|
|||
|
return i;
|
|||
|
}
|
|||
|
return -2;
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_AgreeChatRoom( char *Cdkey, char *data )
|
|||
|
{
|
|||
|
int chat=-1, uti, whofd;
|
|||
|
char buf1[256];
|
|||
|
char cdkey[256],name[256], own[256], result[256];
|
|||
|
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 3, buf1, sizeof(buf1) );
|
|||
|
sprintf( cdkey, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 4, buf1, sizeof(buf1) );
|
|||
|
sprintf( name, "%s", buf1);
|
|||
|
|
|||
|
uti = UniChatRoom[chat].masindex;
|
|||
|
if( uti<0 || uti >= MAX_PPLINROOM ) return;
|
|||
|
if( UniChatRoom[chat].charalist[uti].use == 0 ) return;
|
|||
|
|
|||
|
if( !strcmp( UniChatRoom[chat].charalist[uti].cdkey, cdkey) &&
|
|||
|
!strcmp( UniChatRoom[chat].charalist[uti].name, name) ){
|
|||
|
char token[256];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 5, buf1, sizeof(buf1) );
|
|||
|
sprintf( result, "%s", buf1);
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 6, buf1, sizeof(buf1) );
|
|||
|
sprintf( cdkey, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 7, buf1, sizeof(buf1) );
|
|||
|
sprintf( name, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 8, buf1, sizeof(buf1) );
|
|||
|
sprintf( own, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 9, buf1, sizeof(buf1) );
|
|||
|
whofd = atoi( buf1);
|
|||
|
if( !gs[ whofd].use ) return;
|
|||
|
|
|||
|
sprintf( token, "A|%d|%s|%s|%s|%s|", chat, result, cdkey, name, own );
|
|||
|
if( !strcmp( result, "OK") ){
|
|||
|
// UniChatRoom[chat].charanum++;
|
|||
|
if( CHATROOM_AgreeSomeOne( chat, cdkey, name, own, whofd) < 0 ){
|
|||
|
sprintf( token, "A|%d|FULL|%s|%s|%s|", chat, cdkey, name, own );
|
|||
|
}
|
|||
|
}else{
|
|||
|
UniChatRoom[chat].charanum--;
|
|||
|
}
|
|||
|
saacproto_ACUniChatroom_send( whofd, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_MasterChatRoom( char *Cdkey, char *data )
|
|||
|
{
|
|||
|
int chat=-1, uti;
|
|||
|
char buf1[256];
|
|||
|
char cdkey[256],name[256];
|
|||
|
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
if( UniChatRoom[chat].use == 0 ) return;
|
|||
|
easyGetTokenFromBuf( data, '|', 3, buf1, sizeof(buf1) );
|
|||
|
sprintf( cdkey, "%s", buf1);
|
|||
|
easyGetTokenFromBuf( data, '|', 4, buf1, sizeof(buf1) );
|
|||
|
sprintf( name, "%s", buf1);
|
|||
|
|
|||
|
uti = UniChatRoom[chat].masindex;
|
|||
|
if( uti<0 || uti >= MAX_PPLINROOM ) return;
|
|||
|
if( UniChatRoom[chat].charalist[uti].use == 0 ) return;
|
|||
|
|
|||
|
if( !strcmp( UniChatRoom[chat].charalist[uti].cdkey, cdkey) &&
|
|||
|
!strcmp( UniChatRoom[chat].charalist[uti].name, name) ){
|
|||
|
int i,ti;
|
|||
|
char token[256];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 5, buf1, sizeof(buf1) );
|
|||
|
ti = atoi( buf1);
|
|||
|
if( UniChatRoom[chat].charalist[ti].use == 0 ) return;
|
|||
|
UniChatRoom[chat].masindex = ti;
|
|||
|
UniChatRoom[chat].masfd = UniChatRoom[chat].charalist[ti].fd;
|
|||
|
sprintf( token, "M|%d|%d|", chat, ti );
|
|||
|
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_MessageChatRoom( char *Cdkey, char *data )
|
|||
|
{
|
|||
|
int chat=-1, i;
|
|||
|
char buf1[256];
|
|||
|
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
chat = atoi( buf1);
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return;
|
|||
|
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, data, -1, -1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
int CHATROOM_UpdateChatRoom( int fd, int chat)
|
|||
|
{
|
|||
|
char token[4096], buf[256];
|
|||
|
int i;
|
|||
|
extern gmsv gs[MAXCONNECTION];
|
|||
|
|
|||
|
if( chat<0 || chat>=MAX_CHATROOM ) return 0;
|
|||
|
// if( UniChatRoom[chat].use == 0 ) return 0;
|
|||
|
|
|||
|
sprintf( token, "U|%d|%d|%s|%d|%d|",
|
|||
|
chat,
|
|||
|
UniChatRoom[chat].use,
|
|||
|
UniChatRoom[chat].chatname,
|
|||
|
UniChatRoom[chat].masindex,
|
|||
|
UniChatRoom[chat].charanum
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
for( i=0; i<MAX_PPLINROOM; i++ ){
|
|||
|
if( UniChatRoom[chat].charalist[i].use == 0 ) continue;
|
|||
|
sprintf( buf, ",%d|%s|%s|%s",
|
|||
|
i,
|
|||
|
UniChatRoom[chat].charalist[i].cdkey,
|
|||
|
UniChatRoom[chat].charalist[i].name,
|
|||
|
UniChatRoom[chat].charalist[i].own
|
|||
|
);
|
|||
|
strcat( token, buf);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>.
|
|||
|
if( fd == -1 ){
|
|||
|
for( i=0; i<MAXCONNECTION; i++) {
|
|||
|
if( !gs[i].use ) continue;
|
|||
|
saacproto_ACUniChatroom_send( i, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
}else{
|
|||
|
saacproto_ACUniChatroom_send( fd, "", SUCCESSFUL, token, -1, -1);
|
|||
|
}
|
|||
|
return chat;
|
|||
|
}
|
|||
|
|
|||
|
void CHATROOM_RecvAll( int fd, char *cdkey, char *data, int userindex, int clifdid )
|
|||
|
{
|
|||
|
char token[1024];
|
|||
|
char comm[256], buf1[256];
|
|||
|
int i;
|
|||
|
|
|||
|
//andy_log
|
|||
|
log( "_RecvAll:%s\n", data);
|
|||
|
|
|||
|
easyGetTokenFromBuf( data, '|', 1, comm, sizeof(comm) );
|
|||
|
|
|||
|
if( !strcmp( comm, "C") ){//<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
if( CHATROOM_CreateChatRoom( fd, cdkey, data, token, userindex, clifdid) >= 0 ){
|
|||
|
}else{
|
|||
|
saacproto_ACUniChatroom_send( fd, cdkey, FAILED, data, userindex, clifdid );
|
|||
|
}
|
|||
|
}else if( !strcmp( comm, "D") ) {//ɾ<><C9BE>Ƶ<EFBFBD><C6B5>
|
|||
|
CHATROOM_DelChatRoom( cdkey, data);
|
|||
|
}else if( !strcmp( comm, "L") ) {//<2F>뿪Ƶ<EBBFAA><C6B5>
|
|||
|
CHATROOM_LeaveChatRoom( cdkey, data);
|
|||
|
}else if( !strcmp( comm, "T") ) {//Ƶ<><C6B5>ѶϢ
|
|||
|
CHATROOM_MessageChatRoom( cdkey, data);
|
|||
|
}else if( !strcmp( comm, "K") ) {//<2F>߳<EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
CHATROOM_KickChatRoom( cdkey, data);
|
|||
|
}else if( !strcmp( comm, "J") ) {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
CHATROOM_AgreeJoinCR( fd, data, userindex, clifdid);
|
|||
|
//CHATROOM_JoinChatRoom( cdkey, data);
|
|||
|
}else if( !strcmp( comm, "A") ) {//ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
CHATROOM_AgreeChatRoom( cdkey, data);
|
|||
|
}else if ( strcmp ( comm , "M" ) == 0 ) { // <20><><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD>
|
|||
|
CHATROOM_MasterChatRoom( cdkey, data);
|
|||
|
}else if( !strcmp( comm, "U") ) {//<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
easyGetTokenFromBuf( data, '|', 2, buf1, sizeof(buf1) );
|
|||
|
if( atoi( buf1) == -1 ){
|
|||
|
for( i=0; i<MAX_CHATROOM; i++){
|
|||
|
CHATROOM_UpdateChatRoom( fd, i);
|
|||
|
}
|
|||
|
}else{
|
|||
|
CHATROOM_UpdateChatRoom( fd, atoi( buf1));
|
|||
|
}
|
|||
|
}else{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|