亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? defend.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
字號:
#include "version.h"#include <stdio.h>#include <string.h>#include <ctype.h>#include <time.h>#include "saacproto_serv.h"#include "main.h"#include "char.h"#include "util.h"#include "defend.h"#ifdef _DEFEND_NEWUSERSextern gmsv gs[MAXCONNECTION];#define DEFEND_FILENAME "db/defend/defend.txt"#define SCORE_FILENAME	"db/defend/score.txt"DefendArrayList *DEFENDUserList = NULL;ScoreArrayList *DEFENDScoreList = NULL;static int DEFEND_MAXSCORE = 0;static int DEFEND_MINSCORE = 0;void DEFEND_InitList(){	log("DEFEND_InitList( %d) - %4.2f KB.. \n", DEFEND_MAXLISTS,		(float)(sizeof( struct _tagDefendArrayList)*DEFEND_MAXLISTS)/1024 );	DEFENDUserList = (DefendArrayList*)calloc( 1, sizeof( struct _tagDefendArrayList)*DEFEND_MAXLISTS);		if( DEFENDUserList == NULL ){		log("Can't calloc sizeof(%4.2fKB.)err !!\n",			(float)(sizeof( struct _tagDefendArrayList)*DEFEND_MAXLISTS)/1024 );		return;	}	DEFENDScoreList = (ScoreArrayList*)calloc( 1, sizeof( struct _tagScoreArrayList)*DEFEND_SCOREMAXLISTS);	if( DEFENDScoreList == NULL ){		log("Can't calloc sizeof(%4.2fKB.)err !!\n",			(float)(sizeof( struct _tagDefendArrayList)*DEFEND_SCOREMAXLISTS)/1024 );		return;	}	DEFEND_resetUserForList();	DEFEND_ReadUserForList( DEFEND_FILENAME);	DEFEND_resetScoreForList();	DEFEND_ReadScoreForList( SCORE_FILENAME);}int DEFEND_getUse( int si){	if( si >= DEFEND_MAXLISTS || si < 0 ) return -1;	return DEFENDUserList[ si].use;}int DEFEND_setUse( int si, int num){	int olds;	if( si >= DEFEND_MAXLISTS || si < 0 ) return -1;	olds = DEFENDUserList[ si].use;	DEFENDUserList[ si].use = num;	return olds;}void DEFEND_resetUserForList(){	int i;	for( i=0; i<DEFEND_MAXLISTS; i++)	{		memset( DEFENDUserList[ i].cdkey, 0, sizeof( DEFENDUserList[ i].cdkey) );		memset( DEFENDUserList[ i].name, 0, sizeof( DEFENDUserList[ i].name) );		DEFENDUserList[ i].defnums = 0;	//次數		DEFENDUserList[ i].type = 0;		DEFENDUserList[ i].score = 0;		DEFENDUserList[ i].use = 0;	}	DEFEND_MAXSCORE = 0;	DEFEND_MINSCORE = 0;}void DEFEND_copyOneUserForList( int si, int pi){	memcpy( DEFENDUserList[ si].cdkey,		DEFENDUserList[ pi].cdkey, sizeof( DEFENDUserList[ si].cdkey) );	memcpy( DEFENDUserList[ si].name,		DEFENDUserList[ pi].name, sizeof( DEFENDUserList[ si].name) );	DEFENDUserList[ si].defnums = DEFENDUserList[ pi].defnums;	//次數	DEFENDUserList[ si].type = DEFENDUserList[ pi].type;	DEFENDUserList[ si].score = DEFENDUserList[ pi].score;	DEFENDUserList[ si].use = DEFENDUserList[ pi].use;}void DEFEND_delOneUserForList( int si){	memset( DEFENDUserList[ si].cdkey, 0, sizeof( DEFENDUserList[ si].cdkey) );	memset( DEFENDUserList[ si].name, 0, sizeof( DEFENDUserList[ si].name) );	DEFENDUserList[ si].defnums = 0;	//次數	DEFENDUserList[ si].type = 0;	DEFENDUserList[ si].score = 0;	DEFENDUserList[ si].use = 0;}int DEFEND_addUserForList( char *cdkey, char *name, int score, int nums, int type){	int ti=-1;	int i,j;	if( cdkey == NULL ) return -1;	//清空相同帳號&名稱	for( i=0; i<DEFEND_MAXLISTS; i++){		if( DEFEND_getUse( i) <= 0 ) continue;		if( !strcmp( DEFENDUserList[ i].cdkey, cdkey) && 			!strcmp( DEFENDUserList[ i].name, name) ){			DEFEND_delOneUserForList( i);			for( j=i; j<DEFEND_MAXLISTS; j++){				if( DEFEND_getUse( j+1) <= 0 ){					if( DEFEND_getUse( j) > 0 ){						DEFEND_delOneUserForList( j);					}					continue;				}				DEFEND_copyOneUserForList( j, j+1);			}		}	}	for( i=0; i<DEFEND_MAXLISTS; i++)	{		if( DEFEND_getUse( i) <= 0 ) break;		if( score < DEFENDUserList[ i].score ) continue;		break;	}	if( i >= DEFEND_MAXLISTS ) return -1;	ti = i;	for( i=(DEFEND_MAXLISTS-1); i>ti; i--){		if( DEFEND_getUse( i-1) <= 0 ) continue;		DEFEND_copyOneUserForList( i, i-1);	}	memcpy( DEFENDUserList[ ti].cdkey, cdkey, sizeof( DEFENDUserList[ ti].cdkey) );	memcpy( DEFENDUserList[ ti].name, name, sizeof( DEFENDUserList[ ti].name) );	DEFENDUserList[ ti].defnums = nums;	//次數	DEFENDUserList[ ti].type = type;	DEFENDUserList[ ti].score = score;	DEFENDUserList[ ti].use = 1;	return ti;}void DEFEND_LoadUserForList( char *listarg){	char buf2[256];	char cdkey[256], name[256];	int type, nums, score;	easyGetTokenFromBuf( listarg, ',', 1, buf2, sizeof(buf2));	memcpy( cdkey, buf2, sizeof( cdkey));	easyGetTokenFromBuf( listarg, ',', 2, buf2, sizeof(buf2));	memcpy( name, buf2, sizeof( name));	easyGetTokenFromBuf( listarg, ',', 3, buf2, sizeof(buf2));	nums = atoi( buf2);	easyGetTokenFromBuf( listarg, ',', 4, buf2, sizeof(buf2));	score = atoi( buf2);	easyGetTokenFromBuf( listarg, ',', 5, buf2, sizeof(buf2));	type = atoi( buf2);	if( DEFEND_addUserForList( cdkey, name, score, nums, type) != -1 ){		DEFEND_ShowUserLists();		DEFEND_SendToUserLists();	}}void DEFEND_ReadUserForList( char *filename){	FILE *fp=NULL;	char buf1[256], buf2[256];	char cdkey[256], name[256];	int type, nums, score;	fp = fopen( filename, "r");	if( fp == NULL ){		log( "Can't Read %s..!\n", filename);		return;	}	while( fgets( buf1 , sizeof( buf1 ) , fp )){		easyGetTokenFromBuf( buf1, ',', 1, buf2, sizeof(buf2));		memcpy( cdkey, buf2, sizeof( cdkey));		easyGetTokenFromBuf( buf1, ',', 2, buf2, sizeof(buf2));		memcpy( name, buf2, sizeof( name));		easyGetTokenFromBuf( buf1, ',', 3, buf2, sizeof(buf2));		nums = atoi( buf2);		easyGetTokenFromBuf( buf1, ',', 4, buf2, sizeof(buf2));		score = atoi( buf2);		easyGetTokenFromBuf( buf1, ',', 5, buf2, sizeof(buf2));		type = atoi( buf2);		DEFEND_addUserForList( cdkey, name, score, nums, type);	}	fclose( fp);	DEFEND_ShowUserLists();}void DEFEND_ShowUserLists(){	int i;	if( DEFENDUserList == NULL ) return;	for( i=0; i<DEFEND_MAXLISTS; i++ ){		if( DEFEND_getUse( i) <= 0 ) continue;		log("ANDY DEFENDUserList[%d][%s,%s,%d,%d,%d,%d]\n",			i,			DEFENDUserList[ i].cdkey, DEFENDUserList[ i].name,			DEFENDUserList[ i].defnums, DEFENDUserList[ i].score,			DEFENDUserList[ i].type, DEFENDUserList[ i].use	);	}}void DEFEND_SendToUserLists(){	char token[4096];	char buf1[256];	int i;	memset( token, 0, sizeof( token));	for( i=0; i<DEFEND_MAXLISTS; i++ ){		if( DEFEND_getUse( i) <= 0 ) continue;		sprintf( buf1, "%s,%s,%d,%d,%d",			DEFENDUserList[ i].cdkey, DEFENDUserList[ i].name,			DEFENDUserList[ i].defnums, DEFENDUserList[ i].score, DEFENDUserList[ i].type);		strcat( buf1, "|");		strcat( token, buf1);	}	for(i=0; i < MAXCONNECTION; i++ ){		if (gs[i].use && gs[i].name[0]) {			saacproto_DefendList_send( i, 1, token);		}	}	DEFEND_backupUseLists( DEFEND_FILENAME);}void DEFEND_backupUseLists( char *filename){	int i;	FILE *fp = NULL;	remove( filename);	fp = fopen( filename, "a");	if( fp == NULL ){		log("create file:%s error !!\n", filename);		return;	}	for( i=0; i<DEFEND_MAXLISTS; i++)	{		if( DEFEND_getUse( i) <= 0 ) continue;		fprintf( fp,"%s,%s,%d,%d,%d\n",			DEFENDUserList[ i].cdkey, DEFENDUserList[ i].name,			DEFENDUserList[ i].defnums, DEFENDUserList[ i].score,			DEFENDUserList[ i].type );	}	fclose( fp);	log("backup file:%s..\n", filename);}void DEFEND_resetScoreForList(){	int i;	for( i=0; i<DEFEND_SCOREMAXLISTS; i++)	{		memset( DEFENDScoreList[ i].cdkey, 0, sizeof( DEFENDScoreList[ i].cdkey) );		memset( DEFENDScoreList[ i].name, 0, sizeof( DEFENDScoreList[ i].name) );		DEFENDScoreList[ i].use = 0;	}}void DEFEND_LoadScoreForList( char *listarg){	char buf2[256];	char cdkey[256], name[256], fromname[256];	int score;	easyGetTokenFromBuf( listarg, ',', 1, buf2, sizeof(buf2));	memcpy( cdkey, buf2, sizeof( cdkey));	easyGetTokenFromBuf( listarg, ',', 2, buf2, sizeof(buf2));	memcpy( name, buf2, sizeof( name));	easyGetTokenFromBuf( listarg, ',', 3, buf2, sizeof(buf2));	memcpy( fromname, buf2, sizeof( fromname));	easyGetTokenFromBuf( listarg, ',', 4, buf2, sizeof(buf2));	score = atoi( buf2);	if( DEFEND_addScoreForList( cdkey, name, score, fromname) < 1 ){	}	DEFEND_backupScoreLists( SCORE_FILENAME);	DEFEND_ShowScoreLists();}int DEFEND_addScoreForList( char *cdkey, char *name, int score, char *fromname ){	int freeindex=-1;	int i;	if( cdkey == NULL ) return -1;	if( name == NULL ) return -1;	for( i=0; i<DEFEND_SCOREMAXLISTS; i++){		if( DEFEND_getScoreUse( i) <= 0 ){			freeindex = i;			continue;		}/*		if( !strcmp( DEFENDScoreList[ i].cdkey, cdkey) && 			!strcmp( DEFENDScoreList[ i].name, name) ){			DEFENDScoreList[ i].score += score;			return 1;		}*/	}	if( freeindex == -1 ) return -1;	memcpy( DEFENDScoreList[ freeindex].cdkey, cdkey, sizeof( DEFENDScoreList[ freeindex].cdkey) );	memcpy( DEFENDScoreList[ freeindex].name, name, sizeof( DEFENDScoreList[ freeindex].name) );	memcpy( DEFENDScoreList[ freeindex].fromname, fromname, sizeof( DEFENDScoreList[ freeindex].fromname) );	DEFENDScoreList[ freeindex].score = score;	DEFENDScoreList[ freeindex].use = 1;	return 1;}int DEFEND_getScoreUse( int si){	if( si >= DEFEND_SCOREMAXLISTS || si < 0 ) return -1;	return DEFENDScoreList[ si].use;}void DEFEND_ReadScoreForList( char *filename){	FILE *fp=NULL;	char buf1[256], buf2[256];	char cdkey[256], name[256], fromname[256];	int score;	fp = fopen( filename, "r");	if( fp == NULL ){		log( "Can't Read %s..!\n", filename);		return;	}	while( fgets( buf1 , sizeof( buf1 ) , fp )){		int i;		if( strlen(buf1) < 1 || strlen(buf1) > 512 ) continue;		for( i=0; i<strlen(buf1); i++){			if( buf1[i] == '\n' ) buf1[1] = '\0';		}		easyGetTokenFromBuf( buf1, ',', 1, buf2, sizeof(buf2));		memcpy( cdkey, buf2, sizeof( cdkey));		easyGetTokenFromBuf( buf1, ',', 2, buf2, sizeof(buf2));		memcpy( name, buf2, sizeof( name));		easyGetTokenFromBuf( buf1, ',', 3, buf2, sizeof(buf2));		memcpy( fromname, buf2, sizeof( fromname));		easyGetTokenFromBuf( buf1, ',', 4, buf2, sizeof(buf2));		score = atoi( buf2);		DEFEND_addScoreForList( cdkey, name, score, fromname);	}	fclose( fp);}void DEFEND_backupScoreLists( char *filename){	int i;	FILE *fp = NULL;	remove( filename);	fp = fopen( filename, "a");	if( fp == NULL ){		log("create file:%s error !!\n", filename);		return;	}	for( i=0; i<DEFEND_SCOREMAXLISTS; i++)	{		if( DEFEND_getScoreUse( i) <= 0 ) continue;		fprintf( fp,"%s,%s,%s,%d\n",			DEFENDScoreList[ i].cdkey, DEFENDScoreList[ i].name,			DEFENDScoreList[ i].fromname,			DEFENDScoreList[ i].score );	}	fclose( fp);	log("backup file:%s..\n", filename);}void DEFEND_ShowScoreLists(){	int i;	if( DEFENDScoreList == NULL ) return;	for( i=0; i<DEFEND_SCOREMAXLISTS; i++ ){		if( DEFEND_getScoreUse( i) <= 0 ) continue;		log("ANDY DEFENDScoreList[%d][%s,%s,%d,%s,%d]\n",			i,			DEFENDScoreList[ i].cdkey, DEFENDScoreList[ i].name,			DEFENDScoreList[ i].score, DEFENDScoreList[ i].fromname,			DEFENDScoreList[ i].use	);	}}void DEFEND_CheckScoreForList( int fd, int userindex, char *cdkey, char *name){	int i;	if( DEFENDScoreList == NULL ) return;	for( i=0; i<DEFEND_SCOREMAXLISTS; i++ ){		if( DEFEND_getScoreUse( i) <= 0 ) continue;		if( !strcmp( cdkey, DEFENDScoreList[ i].cdkey) &&			!strcmp( name, DEFENDScoreList[ i].name) ){			saacproto_CheckDefendScore_send(				fd,				DEFENDScoreList[ i].fromname,				userindex,				DEFENDScoreList[ i].score );			memset( DEFENDScoreList[ i].cdkey, 0, sizeof( DEFENDScoreList[ i].cdkey));			memset( DEFENDScoreList[ i].name, 0, sizeof( DEFENDScoreList[ i].name));			DEFENDScoreList[ i].use = 0;		}	}}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲伊人伊色伊影伊综合网| 欧美日韩一区小说| 在线视频欧美区| 久久久久久久综合| 日韩成人av影视| 91在线一区二区| 久久综合色婷婷| 五月综合激情婷婷六月色窝| 99久久99久久免费精品蜜臀| 2021中文字幕一区亚洲| 午夜精品久久久久影视| 99麻豆久久久国产精品免费 | 91精品办公室少妇高潮对白| 精品国产一区二区三区忘忧草| 亚洲观看高清完整版在线观看 | 国产精品99久| 久久蜜桃av一区二区天堂| 免费日本视频一区| 欧美日韩一区三区| 一区二区三区精品视频| av亚洲精华国产精华| 欧美激情一区二区在线| 国内成人自拍视频| 精品国产免费久久| 日产国产欧美视频一区精品| 欧美日韩激情在线| 亚洲午夜精品17c| 欧美午夜不卡视频| 日精品一区二区三区| 欧美剧在线免费观看网站| 亚洲第一成人在线| 欧美精选午夜久久久乱码6080| 亚洲高清不卡在线| 宅男噜噜噜66一区二区66| 日本欧美一区二区| 精品久久久久久无| 国产电影精品久久禁18| 国产午夜久久久久| 95精品视频在线| 一区二区三区免费看视频| 欧美日韩www| 日本美女一区二区三区| 日韩欧美在线综合网| 国产一区视频在线看| 国产天堂亚洲国产碰碰| 91丨porny丨中文| 亚洲国产综合色| 日韩欧美国产一二三区| 国产精品一区一区三区| 亚洲欧洲成人自拍| 欧美三级日本三级少妇99| 日本免费在线视频不卡一不卡二| 久久久久久影视| 91视频com| 天天射综合影视| 久久久精品一品道一区| 99在线热播精品免费| 日韩在线一区二区| 国产午夜精品福利| 欧美天堂一区二区三区| 精品一区二区免费看| 亚洲欧洲99久久| 欧美一级免费观看| 成人国产精品免费观看视频| 亚洲成人动漫av| 国产欧美一区二区精品婷婷| 欧美这里有精品| 国产美女在线精品| 亚洲资源中文字幕| 国产亚洲一区二区三区在线观看| 色综合天天天天做夜夜夜夜做| 水野朝阳av一区二区三区| 国产女主播在线一区二区| 欧美日韩国产乱码电影| 懂色av噜噜一区二区三区av| 日韩精品国产欧美| 中文字幕一区二区三| 日韩欧美精品在线视频| 在线国产亚洲欧美| 国产成人免费xxxxxxxx| 天天综合天天综合色| 国产精品久久久久久久久久久免费看| 欧美一区在线视频| 欧美最新大片在线看| www.欧美日韩国产在线| 国内精品伊人久久久久影院对白| 亚洲午夜av在线| 中文字幕中文字幕在线一区 | 99久久精品国产导航| 国产一区二区在线看| 亚洲v日本v欧美v久久精品| 国产精品美女久久久久久久久久久| 欧美一区二区日韩一区二区| 欧美视频日韩视频在线观看| www.欧美色图| 成人激情免费电影网址| 国产精品一区二区免费不卡| 久久99精品国产.久久久久久| 亚洲一二三四久久| 一区二区三区四区精品在线视频| 亚洲国产高清aⅴ视频| 精品99久久久久久| 欧美一级日韩一级| 欧美一区二区视频在线观看 | 91激情在线视频| av电影在线观看完整版一区二区| 精东粉嫩av免费一区二区三区| 日韩影视精彩在线| 日本怡春院一区二区| 亚洲成人一二三| 亚洲超碰精品一区二区| 亚洲成人资源网| 日韩精品三区四区| 另类人妖一区二区av| 精品在线播放午夜| 国产乱码精品一区二区三区五月婷| 狠狠色狠狠色合久久伊人| 人人爽香蕉精品| 久久国产婷婷国产香蕉| 极品尤物av久久免费看| 国产综合久久久久影院| 国内欧美视频一区二区| 国产白丝精品91爽爽久久| 成人高清免费在线播放| 99久久精品情趣| 欧美性生活大片视频| 欧美美女一区二区在线观看| 欧美变态tickle挠乳网站| 久久综合狠狠综合久久激情| 国产欧美久久久精品影院| 国产精品久久久久久久久免费桃花| 欧美国产日韩在线观看| 一区二区欧美精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精品72免费观看| 粉嫩aⅴ一区二区三区四区 | 亚洲午夜国产一区99re久久| 日韩国产欧美视频| 欧洲精品在线观看| 日韩一二三区视频| 国产精品视频你懂的| 亚洲免费视频成人| 日韩av不卡在线观看| 国产成人亚洲综合a∨婷婷| 91欧美激情一区二区三区成人| 欧美日韩国产一级| 久久精品一区蜜桃臀影院| 亚洲精品亚洲人成人网| 捆绑紧缚一区二区三区视频| 成人国产电影网| 欧美疯狂性受xxxxx喷水图片| 久久综合网色—综合色88| 亚洲女与黑人做爰| 精品一区二区三区香蕉蜜桃 | 亚洲一区二区视频在线观看| 精品一区二区三区在线播放| 日本乱人伦一区| 国产亚洲女人久久久久毛片| 亚洲国产精品一区二区www在线| 国产成人午夜精品影院观看视频 | 欧美日韩一区国产| 国产日韩欧美精品综合| 亚洲一二三区在线观看| 成人妖精视频yjsp地址| 91精品国产乱| 亚洲蜜臀av乱码久久精品蜜桃| 久久狠狠亚洲综合| 欧美午夜精品免费| 中文字幕一区二区三区色视频| 九一九一国产精品| 欧美少妇性性性| 日韩美女视频一区二区 | 久久九九久久九九| 亚洲bt欧美bt精品777| 波多野结衣欧美| 国产欧美一区二区在线| 久久se这里有精品| 91精品欧美福利在线观看| 亚洲理论在线观看| av不卡免费在线观看| 国产亲近乱来精品视频 | 日本伊人午夜精品| 精品视频1区2区| 亚洲欧美日韩一区二区三区在线观看| 国产精品69毛片高清亚洲| 欧美成人精品高清在线播放| 日本特黄久久久高潮 | voyeur盗摄精品| 国产欧美日韩久久| 成人自拍视频在线观看| 久久久久久久久久看片| 久久国产欧美日韩精品| 欧美一级高清片| 免费久久99精品国产| 91精品国产黑色紧身裤美女| 亚洲va国产天堂va久久en| 欧美四级电影在线观看| 天堂精品中文字幕在线| 欧美老人xxxx18| 久草这里只有精品视频|