Exemple #1
0
/*
  sigaction°×ÛÍ
 */
void sighandle( int a )
{
  if (a==SIGUSR1) log("sigusr1ÐźÅ!\n");
  log("µÃµ½Ò»¸öÐźÅ! Òì³£ÖжÏ......\n" );
  writeFamily(familydir);
  writeFMPoint(fmpointdir);
  writeFMSMemo(fmsmemodir);
#ifdef _ANGEL_SUMMON
	saveMissionTable();
#endif
  exit(1);
}
Exemple #2
0
/*
  sigaction����
 */
void sighandle( int a )
{
  if (a==SIGUSR1) log("sigusr1�ź�!\n");
  log("�õ�һ���ź�! �쳣�ж�......\n" );
  writeFamily(familydir);
  writeFMPoint(fmpointdir);
  writeFMSMemo(fmsmemodir);
#ifdef _ANGEL_SUMMON
	saveMissionTable();
#endif
  exit(1);
}
Exemple #3
0
void checkMissionTimelimit( void)
{
	int index;
	static time_t lastcheck =0;

	if( sys_time < lastcheck + 5*60 )
		return;

	log("\n¼ì²é¾«ÁéÕÙ»½Ê±¼äÏÞÖÆ:%d \n", sys_time);
	for( index =0; index < MAXMISSIONTABLE; index++) {
		if( missiontable[index].flag == MISSION_NONE) {
			continue;
		}
		// µÈ´ýʹÕß»ØÓ¦1Сʱ
		else if( missiontable[index].flag == MISSION_WAIT_ANSWER
				&& sys_time > missiontable[index].time + ANSWERTIME*60*60 ) {
			
			delMissionTableOnedata( index);// ɾ
		}
		// µÈ´ýÁì½±Íê³É limittimeСʱ
		else if( ( missiontable[index].flag == MISSION_DOING || missiontable[index].flag == MISSION_HERO_COMPLETE )
				&& ( sys_time > (missiontable[index].time + missiontable[index].limittime*60*60))		 ) {

			char buf[1024];
			int gi;
			// ¸ÄTIMEOVER
			log("¾«ÁéÕÙ»½¼°Á콱ʱ¼ä¹ý:%d ", index);
			missiontable[index].flag = MISSION_TIMEOVER;
			missiontable[index].time = time(NULL);
			missiontable[index].limittime = BOUNDSTIME;
			
			sprintf( buf, "%d|%s|%s|%d|%d|%d|%d ", index,
				missiontable[index].angelinfo,
				missiontable[index].heroinfo,
				missiontable[index].mission,
				missiontable[index].flag,
				missiontable[index].time,
				missiontable[index].limittime );
			for( gi=0; gi<MAXCONNECTION; gi++) {
				if (gs[gi].use && gs[gi].name[0]) {
					saacproto_ACMissionTable_send( gi, 1, 1, buf, "");
				}
			}
			
			continue;
		}
		//else if( missiontable[index].flag == MISSION_HERO_COMPLETE
		//		&& sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) {
		//	log(" Á콱ʱ¼ä¹ý:%d ", index);
		//	delMissionTableOnedata( index);// ɾ
		//}

		// ×ÊÁϱ£Áôʱ¼ä(BOUNDSTIMEСʱ)
		else if( missiontable[index].flag == MISSION_TIMEOVER
				&& sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) {
			log(" ±£Áôʱ¼ä¹ý:%d ", index);
			delMissionTableOnedata( index);// ɾ
		}

	}
	saveMissionTable();

	lastcheck = sys_time;
}
Exemple #4
0
void checkMissionTimelimit( void)
{
	int index;
	static time_t lastcheck =0;

	if( sys_time < lastcheck + 5*60 )
		return;

	log("\n��龫���ٻ�ʱ������:%d \n", sys_time);
	for( index =0; index < MAXMISSIONTABLE; index++) {
		if( missiontable[index].flag == MISSION_NONE) {
			continue;
		}
		// �ȴ�ʹ�߻�Ӧ1Сʱ
		else if( missiontable[index].flag == MISSION_WAIT_ANSWER
				&& sys_time > missiontable[index].time + ANSWERTIME*60*60 ) {
			
			delMissionTableOnedata( index);// ɾ
		}
		// �ȴ��콱��� limittimeСʱ
		else if( ( missiontable[index].flag == MISSION_DOING || missiontable[index].flag == MISSION_HERO_COMPLETE )
				&& ( sys_time > (missiontable[index].time + missiontable[index].limittime*60*60))		 ) {

			char buf[1024];
			int gi;
			// ��TIMEOVER
			log("�����ٻ����콱ʱ���:%d ", index);
			missiontable[index].flag = MISSION_TIMEOVER;
			missiontable[index].time = time(NULL);
			missiontable[index].limittime = BOUNDSTIME;
			
			sprintf( buf, "%d|%s|%s|%d|%d|%d|%d ", index,
				missiontable[index].angelinfo,
				missiontable[index].heroinfo,
				missiontable[index].mission,
				missiontable[index].flag,
				missiontable[index].time,
				missiontable[index].limittime );
			for( gi=0; gi<MAXCONNECTION; gi++) {
				if (gs[gi].use && gs[gi].name[0]) {
					saacproto_ACMissionTable_send( gi, 1, 1, buf, "");
				}
			}
			
			continue;
		}
		//else if( missiontable[index].flag == MISSION_HERO_COMPLETE
		//		&& sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) {
		//	log(" �콱ʱ���:%d ", index);
		//	delMissionTableOnedata( index);// ɾ
		//}

		// ���ϱ���ʱ��(BOUNDSTIMEСʱ)
		else if( missiontable[index].flag == MISSION_TIMEOVER
				&& sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) {
			log(" ����ʱ���:%d ", index);
			delMissionTableOnedata( index);// ɾ
		}

	}
	saveMissionTable();

	lastcheck = sys_time;
}