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

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

?? npc_manorsman.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
?? 第 1 頁 / 共 4 頁
字號:
    fmpks[fmpks_pos+1].dueltime = CHAR_getWorkInt(meindex, NPC_WORK_PEACEWAIT) + NowTime.tv_sec;
    fmpks[fmpks_pos+1].flag = FMPKS_FLAG_NONE;

		NPC_CleanPkList( fmpks_pos);
#ifndef _NEW_MANOR_LAW
    NPC_ManorSavePKSchedule(meindex, -1, FMPKS_FLAG_NONE);
#else
		NPC_ManorSavePKSchedule(meindex, -1, FMPKS_FLAG_NONE,fmpks[fmpks_pos+1].dueltime,tm1);
#endif
    break;
  }
  CHAR_setWorkInt(meindex, NPC_WORK_PREVLOOPTIME, NowTime.tv_sec);
}

void NPC_ManorLoadPKSchedule(int meindex)
{
#ifdef _ACFMPK_LIST
	int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID);
	saacproto_ACLoadFmPk_send(acfd, fmpks_pos);
#else
	char filename[256], tmp[4096], token[256];
	FILE *f;
	int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID)*MAX_SCHEDULE;

	snprintf(filename,sizeof(filename), "%s%d_%d_%d",
		       SCHEDULEFILEDIR, CHAR_getInt(meindex, CHAR_FLOOR),
			   CHAR_getInt(meindex, CHAR_X),
			CHAR_getInt(meindex, CHAR_Y) );

	if( ! (f=fopen( filename, "r" )) ){	// create new schedule file
		f = fopen( filename, "w" );
		if( !f ){
			print( "ERROR:Can't create Schedule file %s!\n",filename );
			return;
		}
		strcpy(tmp,"0|-1|-1|-1|-1|-1|-1|-1|-1\n");
		fwrite(tmp, strlen(tmp), 1, f);
	}

	fseek(f, 0, SEEK_SET);	// 檔案開頭
	fgets(tmp, sizeof(tmp), f);
	fmpks[fmpks_pos].flag=-1;

	// 時間
	if (getStringFromIndexWithDelim(tmp,"|",1,token,sizeof(token))) {
		fmpks[fmpks_pos+1].dueltime=atoi(token);
	}
	// 主隊 familyindex
	if (getStringFromIndexWithDelim(tmp,"|",2,token,sizeof(token))) {
	    fmpks[fmpks_pos+1].host_index=atoi(token);
	}
	// 主隊 家族名
	if (getStringFromIndexWithDelim(tmp,"|",3,token,sizeof(token))) {
		strcpy(fmpks[fmpks_pos+1].host_name,makeStringFromEscaped(token));
	}
	// 客隊 familyindex
	if (getStringFromIndexWithDelim(tmp,"|",4,token,sizeof(token))) {
	    fmpks[fmpks_pos+1].guest_index=atoi(token);
	}
	// 客隊 家族名
	if (getStringFromIndexWithDelim(tmp,"|",5,token,sizeof(token))) {
	    strcpy(fmpks[fmpks_pos+1].guest_name,makeStringFromEscaped(token));
	}
	// 準備時間
	if (getStringFromIndexWithDelim(tmp,"|",6,token,sizeof(token))) {
		fmpks[fmpks_pos+1].prepare_time=atoi(token);
	}
	// 最大人數
	if (getStringFromIndexWithDelim(tmp,"|",7,token,sizeof(token))) {
		fmpks[fmpks_pos+1].max_player=atoi(token);
	}
	// 旗標
	if (getStringFromIndexWithDelim(tmp,"|",8,token,sizeof(token))) {
		fmpks[fmpks_pos+1].flag=atoi(token);
	}
	// 對戰星球
	if (getStringFromIndexWithDelim(tmp,"|",9,token,sizeof(token))) {
		strcpy(fmpks[fmpks_pos+2].host_name,makeStringFromEscaped(token));
	}
  
	// no schedule
	fmpks[fmpks_pos].flag=-1;
	// prepare time expired?
	if ((fmpks[fmpks_pos+1].flag==FMPKS_FLAG_MANOR_PREPARE) &&
		  (fmpks[fmpks_pos+1].dueltime<NowTime.tv_sec)) {
		fmpks[fmpks_pos].flag=-1;
// Terry fix 要清為-1不能清為0
//		fmpks[fmpks_pos].host_index=0;
		fmpks[fmpks_pos].host_index=-1;
		strcpy(fmpks[fmpks_pos].host_name,"");
// Terry fix 要清為-1不能清為0
//		fmpks[fmpks_pos].guest_index=0;
		fmpks[fmpks_pos].guest_index=-1;
		strcpy(fmpks[fmpks_pos].guest_name,"");
		fmpks[fmpks_pos+1].flag=-1;
		fmpks[fmpks_pos+1].dueltime=0;
	//    fmpks[fmpks_pos+1].dueltime=NowTime.tv_sec+30*60;	// add more 30 minutes
	}
	fclose(f);
#endif // end AC_SEND_FM_PK

}

#ifdef _ACFMPK_LIST
#ifndef _NEW_MANOR_LAW
void NPC_ManorSavePKSchedule(int meindex, int toindex, int flg)
#else
void NPC_ManorSavePKSchedule(int meindex, int toindex, int flg,int setTime,struct tm tm2)
#endif
{
	int fmpks_pos, manorid, dueltime;
	char msg[1024], n1[256], n2[256], n3[256];
	char token[256], hadfmname[256];
	int hadfmindex=0, hadfmpopular=0, tkfmindex=0;
	int PkFlg=0;

	if( toindex == -1 ){
#ifndef _NEW_MANOR_LAW
		dueltime = CHAR_getWorkInt(meindex, NPC_WORK_PEACEWAIT) + NowTime.tv_sec;
		sprintf(msg, "%d|%d|%s|%d|%s|%d|%d|%d|%s",
			dueltime, 0, "", 0, "", 0, 0, flg, "");
#else
		sprintf(msg, "%d|%d|%s|%d|%s|%d|%d|%d|%s",
			setTime, 0, "", 0, "", 0, 0, flg, "");
#endif
		PkFlg = 0;
	}else{
		struct tm tm1;
		int index;
#ifndef _NEW_MANOR_LAW
		tkfmindex = CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI);
#else
		// toindex 變成 家族的index
		tkfmindex = toindex;
#endif
		fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE;
		manorid = CHAR_getWorkInt(meindex, NPC_WORK_MANORID);
		memcpy( &tm1, localtime( (time_t *)&NowTime.tv_sec), sizeof( tm1));
#ifndef _NEW_MANOR_LAW
		dueltime = CHAR_getWorkInt(meindex, NPC_WORK_CHALLENGEWAIT) + NowTime.tv_sec - tm1.tm_min*60 + 1800;
#else
		// 以挑戰時的時間為開打的時間,中間所經過的時間為準備時間
		dueltime = NowTime.tv_sec - tm1.tm_min * 60 + ((24 - tm1.tm_hour) * 3600) + 3600 * tm2.tm_hour;
		//				|-------------取整點-------------|  |--------加到0000時-------|  |挑戰時的時間(算整點)| 
#endif
		getStringFromIndexWithDelim( fmpointlist.pointlistarray[manorid-1], "|", 5, token, sizeof(token));
		hadfmindex = atoi( token);
		getStringFromIndexWithDelim( fmpointlist.pointlistarray[manorid-1], "|", 7, token, sizeof(token));
		hadfmpopular = atoi( token);
		getStringFromIndexWithDelim( fmpointlist.pointlistarray[manorid-1], "|", 6, token, sizeof(token));
		strcpy( hadfmname, token);
		makeEscapeString( hadfmname, n1, sizeof(n1));
#ifndef _NEW_MANOR_LAW
		makeEscapeString( CHAR_getChar(toindex, CHAR_FMNAME), n2, sizeof(n2));		
#else
		// 找出挑戰家族中氣勢最高家族索引
		index = ManorSchedule[manorid-1].iSort[0];
		makeEscapeString(ManorSchedule[manorid-1].szFmName[index],n2,sizeof(n2));
#endif
		makeEscapeString( getGameserverID(), n3, sizeof(n3));

		sprintf(msg, "%d|%d|%s|%d|%s|%d|%d|%d|%s",
			dueltime, hadfmindex-1, n1, tkfmindex, n2, 15, 50, FMPKS_FLAG_MANOR_OTHERPLANET, n3);
		PkFlg = 1;
		{
			char buf1[256];
			sprintf( buf1,"%d", CHAR_getWorkInt( meindex, NPC_WORK_ID) );
			Logfmpk(
				 n1, hadfmindex-1, 0,
				 n2, tkfmindex, 0,
				 "", buf1, n3, 1);
		}
	}
#ifndef _NEW_MANOR_LAW
	saacproto_ACSendFmPk_send( acfd, toindex, PkFlg, CHAR_getWorkInt( meindex, NPC_WORK_ID), msg);
#else
	// toindex 用不到設為 -1
	saacproto_ACSendFmPk_send( acfd, -1, PkFlg, CHAR_getWorkInt( meindex, NPC_WORK_ID), msg);
#endif
}

#endif

#ifdef _NEW_MANOR_LAW
// 加入挑戰排程
void NPC_ManorAddToSchedule(int meindex,int charaindex)
{
	int i,j,iEmpty = -1,iFmIndex,manorindex = CHAR_getWorkInt(meindex,NPC_WORK_MANORID) - 1;
	struct tm tm1;

	iFmIndex = CHAR_getWorkInt(charaindex,CHAR_WORKFMINDEXI);
	// 檢查是否已排入排程,檢查所有的莊園約戰
	for(j=0;j<MANORNUM;j++){
		for(i=0;i<10;i++){
			if(ManorSchedule[j].iFmIndex[i] != -1){
				if(ManorSchedule[j].iFmIndex[i] == iFmIndex){
					lssproto_WN_send(getfdFromCharaIndex(charaindex),WINDOW_MESSAGETYPE_MESSAGE,WINDOW_BUTTONTYPE_OK,CHAR_WINDOWTYPE_CHECKMAN_END,
						CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),"你已經報名過挑戰莊園了喔~");
					return;
				}
			}
			else{
				if(j == manorindex) iEmpty = i;	// 記錄空的位置
			}
		}
	}
	// 如果程式執行到這里,表示沒有加入排程,檢查有沒有空的位置
	if(iEmpty != -1){ // 有空位置,把報名者加入
		// 記錄家族索引
		ManorSchedule[manorindex].iFmIndex[iEmpty] = iFmIndex;
		// 記錄家族名稱
		sprintf(ManorSchedule[manorindex].szFmName[iEmpty],"%s",CHAR_getChar(charaindex,CHAR_FMNAME));
		// 記錄挑戰時間
		memcpy(&tm1,localtime((time_t *)&NowTime.tv_sec),sizeof(tm1));
		memset(ManorSchedule[manorindex].szMemo[iEmpty],0,sizeof(ManorSchedule[manorindex].szMemo[iEmpty]));
		memcpy(&ManorSchedule[manorindex].tm1[iEmpty],&tm1,sizeof(tm1));
		lssproto_WN_send(getfdFromCharaIndex(charaindex),WINDOW_MESSAGETYPE_MESSAGE,WINDOW_BUTTONTYPE_OK,CHAR_WINDOWTYPE_CHECKMAN_END,
				CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),"加入挑戰排程");
	}
	// 滿了,和挑戰排程的最後一名作比較,如果後來的氣勢比最後一名高,替換掉最後一名,否則通知目前氣勢無法擠進排程
	else{
		// 取得最後一名在ManorSchedule的位置
		int index = ManorSchedule[manorindex].iSort[9];

		for(i=0;i<FAMILY_MAXNUM;i++){
			// 找出挑戰家族的索引
			if(fmdptop.fmtopid[i] == iFmIndex) break;
		}
		// 找不到此家族
		if(i >= FAMILY_MAXNUM){
			lssproto_WN_send(getfdFromCharaIndex(charaindex),WINDOW_MESSAGETYPE_MESSAGE,WINDOW_BUTTONTYPE_OK,CHAR_WINDOWTYPE_CHECKMAN_END,
				CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),"抱歉,找不到你的家族氣勢資料");
			return;
		}
		// 比較氣勢
		if(ManorSchedule[manorindex].iFmMomentum[index] < fmdptop.fmMomentum[i]){
			int fmpks_pos,iPlayerNum = CHAR_getPlayerMaxNum();
			char szMsg[256];

			// 通知所有人
			fmpks_pos = CHAR_getWorkInt(meindex,NPC_WORK_ID) * MAX_SCHEDULE;
			sprintf(szMsg,"%s 家族被 %s 家族擠下挑戰排程",ManorSchedule[manorindex].szFmName[index],CHAR_getChar(charaindex,CHAR_FMNAME));
			for(i=0;i<iPlayerNum;i++){
				if(CHAR_getCharUse(i) != FALSE){
					CHAR_talkToCli(i,-1,szMsg,CHAR_COLORBLUE2);
				}
			}
			// 最後一名被擠掉
			ManorSchedule[manorindex].iFmIndex[index] = iFmIndex;
			// 記錄家族名稱
			sprintf(ManorSchedule[manorindex].szFmName[index],"%s",CHAR_getChar(charaindex,CHAR_FMNAME));
			// 記錄挑戰時間
			memcpy(&tm1,localtime((time_t *)&NowTime.tv_sec),sizeof(tm1));
			memcpy(&ManorSchedule[manorindex].tm1[index],&tm1,sizeof(tm1));
			lssproto_WN_send(getfdFromCharaIndex(charaindex),WINDOW_MESSAGETYPE_MESSAGE,WINDOW_BUTTONTYPE_OK,CHAR_WINDOWTYPE_CHECKMAN_END,
				CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),"加入挑戰排程");
		}
		else{
			lssproto_WN_send(getfdFromCharaIndex(charaindex),WINDOW_MESSAGETYPE_MESSAGE,WINDOW_BUTTONTYPE_OK,CHAR_WINDOWTYPE_CHECKMAN_END,
				CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),"抱歉,你的家族氣勢不足以排進挑戰排程");
			return;
		}
	}
	// 排序
	SortManorSchedule();
}

// 排序挑戰排程
void SortManorSchedule()
{
	int i,j,k;

	// 先取得最新家族氣勢
	for(k=0;k<MANORNUM;k++){
		for(i=0;i<10;i++){
			ManorSchedule[k].iSort[i] = i;
			if(ManorSchedule[k].iFmIndex[i] != -1){
				for(j=0;j<FAMILY_MAXNUM;j++){
					// 找出挑戰家族的索引
					if(fmdptop.fmtopid[j] == ManorSchedule[k].iFmIndex[i]){
						// 取得氣勢值
						ManorSchedule[k].iFmMomentum[i] = fmdptop.fmMomentum[j];
						// 作成memo
						sprintf(ManorSchedule[k].szMemo[i],"%-16s %2d:%2d %12d",
							ManorSchedule[k].szFmName[i],ManorSchedule[k].tm1[i].tm_hour,ManorSchedule[k].tm1[i].tm_min,
							ManorSchedule[k].iFmMomentum[i]/100);
						break;
					}
				}
			}
		}
	}
	// 排序
	for(i=0;i<MANORNUM;i++){
		g_iSortManor = i;
		qsort(&ManorSchedule[g_iSortManor].iSort,10,sizeof(int),&SortManorScheduleMomentum);
	}
}

int SortManorScheduleMomentum(const void *indexa, const void *indexb)
{
  int momentumA,momentumB;
  
  momentumA = ManorSchedule[g_iSortManor].iFmMomentum[*(int*)indexa];
  momentumB = ManorSchedule[g_iSortManor].iFmMomentum[*(int*)indexb];
  return (momentumA > momentumB) ? -1:1;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2014亚洲片线观看视频免费| 精品国产乱码久久久久久久久| 91麻豆免费观看| 欧美绝品在线观看成人午夜影视| 久久久亚洲综合| 午夜成人在线视频| 99久久精品一区| 26uuu色噜噜精品一区二区| 一区二区免费看| 国产99精品国产| 日韩女优视频免费观看| 一区二区欧美视频| 99久久99久久综合| 久久亚洲精精品中文字幕早川悠里| 亚洲制服丝袜在线| 不卡一卡二卡三乱码免费网站| 精品国产伦一区二区三区观看体验| 亚洲精品乱码久久久久| 国产盗摄精品一区二区三区在线 | 欧美国产一区视频在线观看| 香蕉影视欧美成人| 欧美在线色视频| 亚洲人吸女人奶水| 大桥未久av一区二区三区中文| 日韩一区二区精品| 亚洲国产精品自拍| 91久久精品一区二区三区| 欧美韩国日本不卡| 成人午夜电影小说| 国产女主播一区| 懂色一区二区三区免费观看 | 亚洲高清免费视频| 一本色道**综合亚洲精品蜜桃冫 | 亚洲欧美在线aaa| 高清成人免费视频| 国产人伦精品一区二区| 国产在线看一区| 精品国产成人系列| 老司机精品视频在线| 日韩一区二区影院| 国模娜娜一区二区三区| 久久在线观看免费| 国产成人av一区二区三区在线| 久久综合五月天婷婷伊人| 国产主播一区二区三区| 久久综合狠狠综合久久激情| 国模无码大尺度一区二区三区| 欧美成人r级一区二区三区| 韩日精品视频一区| 国产精品三级久久久久三级| av激情亚洲男人天堂| 中文字幕亚洲区| 欧美性受极品xxxx喷水| 日韩电影免费一区| 337p日本欧洲亚洲大胆色噜噜| 国内欧美视频一区二区| 国产精品污www在线观看| 91在线精品一区二区| 亚洲国产综合在线| 精品入口麻豆88视频| 成人爱爱电影网址| 亚州成人在线电影| 久久蜜臀精品av| 99精品视频在线播放观看| 污片在线观看一区二区| 精品国产电影一区二区| 91视频在线看| 久久精品国产秦先生| 国产精品久久久久久久久搜平片| 欧洲精品一区二区| 麻豆国产精品一区二区三区| 国产精品的网站| 欧美日本不卡视频| 成人视屏免费看| 午夜av电影一区| 国产精品欧美久久久久无广告| 欧美在线不卡一区| 国产一区二区不卡| 亚洲一级片在线观看| 久久久亚洲国产美女国产盗摄| 91免费观看视频| 久久99精品网久久| 亚洲国产综合在线| 国产精品久久久久久久久免费相片| 欧美日韩另类国产亚洲欧美一级| 国模无码大尺度一区二区三区 | 久久综合中文字幕| 欧美日韩五月天| 99在线视频精品| 蜜桃久久久久久| 亚洲精品视频在线| 国产免费久久精品| 日韩视频在线永久播放| 在线欧美一区二区| 波多野结衣中文字幕一区| 美腿丝袜亚洲三区| 亚洲成人免费观看| 亚洲男人都懂的| 国产精品久线观看视频| 欧美精品一区二区久久久| 欧美麻豆精品久久久久久| 91视视频在线直接观看在线看网页在线看| 美女视频免费一区| 日本一不卡视频| 亚洲在线观看免费| 亚洲欧美日韩一区二区 | 91色porny在线视频| 国产一区二区三区免费在线观看| 日韩精品一卡二卡三卡四卡无卡| 亚洲三级在线免费观看| 国产精品久久久久久久久果冻传媒 | 豆国产96在线|亚洲| 国产一区999| 国产乱码精品一区二区三| 奇米色一区二区三区四区| 日韩精品国产精品| 日本在线不卡视频一二三区| 三级久久三级久久| 青青草原综合久久大伊人精品| 午夜精品久久久久久久99水蜜桃| 亚洲综合在线第一页| 亚洲一区二区三区激情| 亚洲影院在线观看| 亚洲夂夂婷婷色拍ww47| 亚洲高清三级视频| 日韩av电影天堂| 老司机午夜精品| 国产精品一区久久久久| 国产成人自拍网| www.一区二区| 色av一区二区| 欧美日韩中文国产| 欧美一级理论片| 久久亚洲精品小早川怜子| 欧美韩日一区二区三区四区| 中文字幕字幕中文在线中不卡视频| 国产精品福利一区| 夜夜爽夜夜爽精品视频| 天天av天天翘天天综合网色鬼国产| 丝袜国产日韩另类美女| 蜜臀av一区二区| 国产精品一区二区三区乱码| 成人午夜精品一区二区三区| 91网站最新地址| 69av一区二区三区| 26uuu国产一区二区三区| 亚洲国产精华液网站w| 亚洲美女视频在线观看| 欧美aaa在线| 国产精品99精品久久免费| 91网站在线播放| 日韩一区二区三区av| 国产午夜亚洲精品不卡| 亚洲人成人一区二区在线观看 | 欧美亚洲国产一区二区三区va| 日韩精品资源二区在线| 国产精品国产馆在线真实露脸 | 亚洲高清免费观看| 国产精品一品视频| 欧美性三三影院| 2019国产精品| 亚洲444eee在线观看| 国产美女精品人人做人人爽| 色综合久久综合网97色综合 | 91性感美女视频| 欧美精品粉嫩高潮一区二区| 国产午夜精品一区二区三区四区| 樱桃视频在线观看一区| 国产综合色产在线精品| 欧美日韩情趣电影| 中日韩av电影| 久国产精品韩国三级视频| 色噜噜久久综合| 国产亚洲女人久久久久毛片| 亚洲va欧美va天堂v国产综合| 国产风韵犹存在线视精品| 欧美一区二区三区四区久久| 国产精品动漫网站| 蜜桃在线一区二区三区| 欧美天天综合网| 亚洲丝袜精品丝袜在线| 韩国精品久久久| 在线综合视频播放| 亚洲综合在线电影| 不卡的电影网站| 欧美国产禁国产网站cc| 久久国产精品第一页| 337p亚洲精品色噜噜噜| 亚洲精品欧美在线| 97精品电影院| 中文字幕一区二区三区精华液 | 极品少妇一区二区| 7777精品伊人久久久大香线蕉的 | 在线观看免费亚洲| 亚洲欧洲综合另类| 99久久精品国产一区二区三区| 国产亚洲精品aa| 国产成人a级片| 国产日韩v精品一区二区| 国产一区二区影院|