⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deathcontend.c

📁 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "version.h"#include <time.h>#include "main.h"#include "saacproto_util.h"#include "saacproto_serv.h"#include "recv.h"#include "char.h"#include "util.h"#include "deathcontend.h"#ifdef _DEATH_CONTENDPkTeamLists *PkTeamList=NULL;static int PKListSort[550];enum{	CODE_OK=0,	CODE_ERR=-1,	CODE_OUTSTRIP=-2,	CODE_REPEAT=-3,	CODE_LEADERERR=-10,	CODE_ERRBATTLEFULL=-11,};static int maxteam = 0;void del_rn( char *s ){	int i;	for(i=0;;i++){		if( s[i] == '\r' || s[i] == '\n' ) s[i] = 0;		if( s[i] == 0 )break;	}}int PKLIST_SetOneBHistory( int ti, int hi, int use, int teamnum, int flg ){	if( ti < 0 || ti >= maxteam ) return CODE_OUTSTRIP;	if( hi < 0 || hi >= MAXBATTLENUM ) return CODE_OUTSTRIP;	if( PkTeamList[ti].BHistory[hi].use == use ) return CODE_REPEAT;		PkTeamList[ti].BHistory[hi].teamnum = teamnum;	PkTeamList[ti].BHistory[hi].flg = flg;	PkTeamList[ti].BHistory[hi].use = use;	return CODE_OK;}int PKLIST_GetOneBHistory( int ti ){	int i;	if( ti < 0 || ti >= maxteam ){		log( "GetOneBHistory(ti:%d) err return -1 !!\n", ti)		return -1;	}	for( i=0; i<MAXBATTLENUM; i++){		if( i>=DEFMAXBATTLENUM ) break;		if( PkTeamList[ti].BHistory[i].use == 0 ){			log("return BHistory[%d] \n", i) ;			return i;		}	}	log("return CODE_ERRBATTLEFULL err !! \n") ;	return CODE_ERRBATTLEFULL;}//勿动-------------------------------------------------------void PKLIST_ResetOneTeamMan( int ti ){	int k;	if( ti < 0 || ti >= maxteam ) return;	for( k=0;k<MAXTEAMMANNUM;k++){		PkTeamList[ti].MyTeamMans[k].use = 0;		memset( PkTeamList[ti].MyTeamMans[k].cdkey, 0,			sizeof( PkTeamList[ti].MyTeamMans[k].cdkey) );		memset( PkTeamList[ti].MyTeamMans[k].name, 0,			sizeof( PkTeamList[ti].MyTeamMans[k].name) );	}}void PKLIST_ResetOneBHistory( int ti ){	int k;	for( k=0;k<MAXBATTLENUM;k++){		PKLIST_SetOneBHistory( ti, k, 0, 0, 0);	}}void PKLIST_ResetOnePkTeamList( int ti ){	if( ti < 0 || ti >= maxteam ) return;	PkTeamList[ti].use = 0;	PkTeamList[ti].teamnum = -1;	memset( PkTeamList[ti].teamname, 0, sizeof( PkTeamList[ti].teamname ) );	memset( PkTeamList[ti].pathdir, 0, sizeof( PkTeamList[ti].pathdir) );	memset( PkTeamList[ti].leadercdkey, 0, sizeof( PkTeamList[ti].leadercdkey ) );}//-----------------------------------------------------------int PKLIST_InitPkTeamList( int teamnum ){	int i;	if( PkTeamList != NULL || teamnum <= 0 ) return -1;	log( "PKLIST_InitPkTeamList( maxteam:%d) \n", teamnum);	maxteam = teamnum;	PkTeamList = (PkTeamLists *)calloc( 1, sizeof( struct _tagPkTeamLists) * maxteam );	if( PkTeamList == NULL ){		log( "ANDY err Can't calloc PkTeamList :%d !!\n",			sizeof( struct _tagPkTeamLists) * maxteam );		return -1;	}	for( i=0; i<maxteam; i++ ){		PkTeamList[i].use = 0;		PkTeamList[i].teamnum = -1;		memset(	PkTeamList[i].teamname, 0, sizeof( PkTeamList[i].teamname) );		memset( PkTeamList[i].pathdir, 0, sizeof( PkTeamList[i].pathdir) );		memset( PkTeamList[i].leadercdkey, 0, sizeof( PkTeamList[i].leadercdkey) );			PkTeamList[i].win = 0;		PkTeamList[i].lost = 0;		PkTeamList[i].battleplay = 0;		PkTeamList[i].score = 0;		PkTeamList[i].inside = 1;		PKLIST_ResetOneTeamMan( i);		PKLIST_ResetOneBHistory( i);	}	memset( PKListSort, -1, sizeof(PKListSort));	log( "ANDY calloc PkTeamList(%d):%d ..!!\n", maxteam,			sizeof( struct _tagPkTeamLists) * maxteam );	return 1;}int PKLIST_UpdateOnePkTeamData( int ti, int forti, int winerflg){	int ret=0;	int battleTi = PKLIST_GetOneBHistory( ti );	if( battleTi == CODE_ERRBATTLEFULL || battleTi == -1 ){		log( "ti:%d battleTi:%d err !!\n", ti, battleTi);		return -2;	}	if( winerflg == 1 ){		PkTeamList[ti].win++;	}else{		PkTeamList[ti].lost++;	}	PkTeamList[ti].battleplay++; //场次	PkTeamList[ti].score = (PkTeamList[ti].win*3) - (PkTeamList[ti].lost*1);//积分	PkTeamList[ti].updata = (int)time(NULL);	if( PkTeamList[ti].score >= DEFWINSCORE ){		PkTeamList[ti].inside = 2; //录取	}else if( PkTeamList[ti].lost > DEFMAXBATTLENUM*DEFLOSERATE){// 0.7 = (1-胜率3成)*最高场次		PkTeamList[ti].inside = 0;	}else {		PkTeamList[ti].inside = 1;	}	if( PkTeamList[ti].score < 0 ) PkTeamList[ti].score = 0;	ret = PKLIST_SetOneBHistory( ti, battleTi, 1, forti, winerflg);	PKLIST_SortTheCharts( ti);	return ret;}int PKLIST_getStringPkTeamData( int ti, char *data, int sizes){	int k;	char buf[512];	if( PkTeamList[ti].use != 1 ) return 0;	sprintf( data, "%d_%d|%s|%s|%s|%d|%d|%d|%d|%d_",				ti,				PkTeamList[ti].teamnum,		PkTeamList[ti].pathdir,				PkTeamList[ti].teamname,	PkTeamList[ti].leadercdkey,				PkTeamList[ti].win,			PkTeamList[ti].lost,				PkTeamList[ti].battleplay,	PkTeamList[ti].score,				PkTeamList[ti].inside	);	for( k=0; k<MAXTEAMMANNUM; k++){		if( PkTeamList[ti].MyTeamMans[k].use == 0 ) continue;		if( k!=0 ) strcat( data, "|");		sprintf( buf, "%s,%s",			PkTeamList[ti].MyTeamMans[k].cdkey, PkTeamList[ti].MyTeamMans[k].name);		strcat( data, buf);	}	strcat( data, "_");	for( k=0; k<MAXBATTLENUM; k++){		if( PkTeamList[ti].BHistory[k].use == 0 ) continue;		if( k!=0 ) strcat( data, "|");		sprintf( buf, "%d,%d" , PkTeamList[ti].BHistory[k].teamnum,				PkTeamList[ti].BHistory[k].flg );		strcat( data, buf);	}	return strlen( data);}void PKLIST_GetPkTeamListData( int fd, int startTi, int count){	int i, first = 1;	char data[65535], bufarg[10240];	log( "GetPkTeamListData( %d,%d)!!\n",		startTi, count);	PKLIST_alteUserfromFile( "pklist", "alteuser.txt");	if( startTi < 0 || startTi >= maxteam || count < 1) return;	memset( data, 0, sizeof( data));	for( i=startTi; i<maxteam; i++ ){		memset( bufarg, 0, sizeof(bufarg));		if( PKLIST_getStringPkTeamData( i, bufarg, sizeof(bufarg)) <= 0 ) continue;		if( strlen( data) + strlen( bufarg) >= sizeof( data)) {			saacproto_PKLISTGETDATA_send( fd, "success", i, data );			return;		}		if( first != 1 ) strcat( data, " ");		first = 0;		strcat( data, bufarg);	}	if( strlen( data) > 0 ){		saacproto_PKLISTGETDATA_send( fd, "success", -1, data );	}	return;}int PKLIST_GetPkTeamListArray( int teamnum, char *cdkey){	int i;	for( i=0; i<maxteam; i++ ){		if( PkTeamList[i].use != 1 ) continue;		if( PkTeamList[i].teamnum != teamnum ) continue;		if( !strcmp( PkTeamList[i].leadercdkey, cdkey) ) return i;	}	return -1;}void PKLIST_GetPkTeamListDataOne( int fd, int ti){	char data[65535];	memset( data, 0, sizeof(data));	if( PKLIST_getStringPkTeamData( ti, data, sizeof(data)) <= 0 ){		log("* getStringPkTeamData( %d, %d):err\n", fd, ti);		return;	}	saacproto_PKLISTGETDATA_send( fd, "success", -1, data );}int PKLIST_UpdateCheckRepeatBHistory( int meti, int menum, int toti, int tonum ){	int k;	if( PkTeamList[meti].use != 1 ) return 0;	for( k=0; k<MAXBATTLENUM; k++ ){		if( PkTeamList[meti].BHistory[k].use != 1 ) continue;		if( PkTeamList[meti].BHistory[k].teamnum == tonum ){			return -1;		}	}	if( PkTeamList[toti].use != 1 ) return 0;	for( k=0; k<MAXBATTLENUM; k++ ){		if( PkTeamList[toti].BHistory[k].use != 1 ) continue;		if( PkTeamList[toti].BHistory[k].teamnum == menum ){			return -1;		}	}	return 1;}void PKLIST_UpdatePkTeamList( int fd, int menum, char *mecdkey, int tonum, char *tocdkey, int winer, int flg){extern gmsv gs[MAXCONNECTION];	int ret=0, i, meti, toti;	if( (meti = PKLIST_GetPkTeamListArray( menum, mecdkey)) == -1 ) return;	if( (toti = PKLIST_GetPkTeamListArray( tonum, tocdkey)) == -1 ) return;	//andy_log	log( "Update() [%d,%d] %s [%d,%d] ", meti, menum, (winer==0)?"胜":"负", toti, tonum);	if( PKLIST_UpdateCheckRepeatBHistory( meti, menum, toti, tonum ) == -1 ){		log( "  err Repeat !!\n");	}else{		log( "\n");		if( (ret = PKLIST_UpdateOnePkTeamData( meti, tonum, (winer==0)?1:0 ) ) != CODE_OK ){			log( "UpdateOnePkTeamData( %d,%d,%d) err %d !!\n", meti, toti, (winer==0)?1:0, ret);			return;		}		if( (ret = PKLIST_UpdateOnePkTeamData( toti, menum, (winer==1)?1:0 ) ) != CODE_OK ){			log( "*UpdateOnePkTeamData( %d,%d,%d) err %d !!\n", toti, meti, (winer==1)?0:1, ret);			return;		}		for (i = 0 ; i < MAXCONNECTION ; i ++ ) { //送del到game server			if ( gs[i].use && gs[i].name[0] ) {				PKLIST_GetPkTeamListDataOne( i, meti);				PKLIST_GetPkTeamListDataOne( i, toti);			}		}		//备份		PKLIST_BackupPkTeamListfromFile( "pklist", "pk_list_team.txt" );	}}void PKLIST_CheckRepeatBattleHistory( void){	int i, j, k, find=0;	log( "\n_CheckRepeatBattleHistory()\n");	for( i=0; i<maxteam; i++ ){		if( PkTeamList[i].use != 1 )continue;		find =0;		for( j=0; j<MAXBATTLENUM; j++){			if( PkTeamList[i].BHistory[j].use != 1 ) continue;			for( k=j+1; k<MAXBATTLENUM; k++ ){				if( PkTeamList[i].BHistory[k].use != 1 ) continue;				if( PkTeamList[i].BHistory[j].teamnum == PkTeamList[i].BHistory[k].teamnum ){					PkTeamList[i].BHistory[k].use = 0;					PkTeamList[i].BHistory[k].teamnum = -1;					//andy_log					log( "ANDY err Repeat Battle array:%d [%d]team:%d\n", i,						j, PkTeamList[i].BHistory[j].teamnum );					find = 1;				}			}		}//		if( find == 0 )continue;		PkTeamList[i].battleplay = 0;		PkTeamList[i].win = 0;		PkTeamList[i].lost = 0;		for( j=0; j<MAXBATTLENUM; j++){			if( PkTeamList[i].BHistory[j].use != 1 ) continue;			if( PkTeamList[i].BHistory[j].flg == 1 ) PkTeamList[i].win++;			if( PkTeamList[i].BHistory[j].flg == 0 ) PkTeamList[i].lost++;			PkTeamList[i].battleplay++;		}		PkTeamList[i].score = (PkTeamList[i].win*3) - (PkTeamList[i].lost*1);//积分		if( PkTeamList[i].score >= DEFWINSCORE ){			PkTeamList[i].inside = 2; //录取		}else if( PkTeamList[i].lost > DEFMAXBATTLENUM*DEFLOSERATE){// 0.7 = (1-胜率3成)*最高场次			PkTeamList[i].inside = 0;		}else {			PkTeamList[i].inside = 1;		}	}}//load档int PKLIST_LoadPkTeamListfromFile( char *dirpath, char *listfilename ){	char line[512], filename[256], buf1[64];	FILE *fp = NULL, *efp=NULL;	int i, count=0;	if( PkTeamList == NULL ) return -1;	sprintf( filename, "%s/%s", dirpath, listfilename);	log( "LoadPkTeamListfromFile( file:%s) \n", filename);	if( (fp = fopen( filename, "r" )) == NULL ){		log( "can't load file:%s !\n", filename);		return -1;	}	sprintf( filename, "%s/%s", dirpath, "err1.txt");	if( (efp = fopen( filename, "w+" )) == NULL ){		log( "can't load file:%s !\n", filename);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -