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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? npc_scheduleman.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "version.h"
#include <time.h>
#include "char.h"
#include "object.h"
#include "lssproto_serv.h"
#include "npcutil.h"
#include "handletime.h"
#include "npc_scheduleman.h"
#include "family.h"

/*
 * 家族 PK 登記員
 *
 * 這個 npc 顯示并且登記家族 pk 排程
 * pk 排程以一小時一場 pk 為原則排定 pk 場的賽程, 這個賽程由登記員
 * 登記與設(shè)定,主要的設(shè)定事項在 FamilyPKSchedule
 *
 * 這個登記員同時會將這個 schedule 寫入磁碟,如果 Game Server 重新
 * 啟動的話,會先讀入這一份對戰(zhàn)排程表,同時進行排程。
 * 排程只排從現(xiàn)在開始的 24 小時之內(nèi)的賽程
 * 排程表檔案的格式為:
 *
 * time|host_index|host_name|guest_index|guest_name|prepare_time|max_player|flag|win
 *
 * 檔案的命名: 登記員樓層號碼_登記員X座標(biāo)_登記員Y座標(biāo)
 *
 */

// 全部的家族 pk 賽程
FamilyPKSchedule fmpks[MAX_SCHEDULE*MAX_SCHEDULEMAN];

extern  int     familyNumTotal;

enum {
	NPC_WORK_ID = CHAR_NPCWORKINT1,		// 登記員 ID, 從 0 開始
	NPC_WORK_CHALLENGETIMEOUT = CHAR_NPCWORKINT2,	// 同意挑戰(zhàn)的 timeout
	NPC_WORK_SETTINGTIMEOUT = CHAR_NPCWORKINT3,	// 設(shè)定挑戰(zhàn)的 timeout
	NPC_WORK_PREVIOUSCHECKTIME = CHAR_NPCWORKINT4,	// 上一次檢查的時間
	NPC_WORK_FIGHTINTERVAL = CHAR_NPCWORKINT5,	// PK 場次的間隔 (單位: 分)
};

enum {
	CHAR_WORK_PAGE = CHAR_WORKSHOPRELEVANT,		// 換頁用
	CHAR_WORK_DUELTIME = CHAR_WORKSHOPRELEVANTSEC,	// 所選擇的 pk 時間
};

#define SCHEDULEFILEDIR		"./Schedule/"

void NPC_LoadPKSchedule(int meindex);	// Load schedule from disk
void NPC_SavePKSchedule(int meindex);	// save schedule to disk
void NPC_RemoveExpiredBattle(int meindex);	// 移除過期的戰(zhàn)斗
void NPC_ProcessTimeout(int meindex);	// 處理 timeout
BOOL NPC_AlreadyScheduled(int meindex, int talkerindex);	// 檢查, 一個家族只能安排一場
// 產(chǎn)生排程表的 data
void NPC_LIST_gendata(int meindex, int talkerindex, int page, char *buf, int size);
// 產(chǎn)生選擇家族的 data
void NPC_SELECT_gendata(int meindex, int talkerindex, int page, char *buf, int size);
// 產(chǎn)生排程詳細(xì)的 data
void NPC_DETAIL_gendata(int meindex, char *buf, int size, int dueltime);

BOOL NPC_SchedulemanInit( int meindex )
{
  char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
  int meid;
  int interval;

  CHAR_setInt( meindex, CHAR_WHICHTYPE, CHAR_TYPEFMSCHEDULEMAN );
  CHAR_setWorkInt ( meindex, NPC_WORK_PREVIOUSCHECKTIME, -1);

  // 參數(shù)
  NPC_Util_GetArgStr(meindex, argstr, sizeof(argstr));
  meid = NPC_Util_GetNumFromStrWithDelim(argstr, "id" );
  if ((meid<0) || (meid>=MAX_SCHEDULEMAN)) {
    print("SCHEDULEMAN init error: invalid ID(%d)\n",meid);
    meid=0;
  }
  CHAR_setWorkInt(meindex, NPC_WORK_ID, meid);

  interval = NPC_Util_GetNumFromStrWithDelim(argstr, "loopinterval" );
  if ((interval<100) || (interval>10000)) interval=1000;
  CHAR_setInt(meindex, CHAR_LOOPINTERVAL, interval);

  interval = NPC_Util_GetNumFromStrWithDelim(argstr, "challengetimeout");
  if ((interval<60) || (interval>60*60)) interval=20*60;
  CHAR_setWorkInt(meindex, NPC_WORK_CHALLENGETIMEOUT, interval);
  
  interval = NPC_Util_GetNumFromStrWithDelim(argstr, "settingtimeout");
  if ((interval<10) || (interval>60*60)) interval=60;
  CHAR_setWorkInt(meindex, NPC_WORK_SETTINGTIMEOUT, interval);

  interval = NPC_Util_GetNumFromStrWithDelim(argstr, "fightinterval");
  if ((interval<5) || (interval>60)) interval = 50;
  CHAR_setWorkInt(meindex, NPC_WORK_FIGHTINTERVAL, interval);


  NPC_LoadPKSchedule(meindex);

  return TRUE;
}

void NPC_SchedulemanTalked(int meindex, int talkerindex, char *msg, int color)
{
  char buf[4096];
  int fd;
  if (NPC_Util_CharDistance(meindex, talkerindex) > 2) return;
  if (!NPC_Util_isFaceToFace(meindex, talkerindex, 2)) return;
  fd = getfdFromCharaIndex(talkerindex);
  if (fd == -1) return;

  CHAR_setWorkInt(talkerindex, CHAR_WORK_PAGE, 0);
  NPC_LIST_gendata(meindex, talkerindex, 0, buf, sizeof(buf));
  lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULELIST,
        		WINDOW_BUTTONTYPE_NEXT | WINDOW_BUTTONTYPE_CANCEL,
        		CHAR_WINDOWTYPE_SCHEDULEMAN_START,
			CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
			buf);
}

void NPC_SchedulemanWindowTalked(int meindex, int talkerindex,
				int seqno, int select, char *data)
{
  int page;
  int buttontype;
  char buf[4096],token[256];
  int fd,i,dt,a;
  int fmpks_pos;

  if (NPC_Util_CharDistance(meindex,talkerindex) > 2) return;
  if (!NPC_Util_isFaceToFace(meindex, talkerindex, 2)) return;
  fd = getfdFromCharaIndex(talkerindex);
  if (fd == -1) return;
  fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID)*MAX_SCHEDULE;

//  print("seqno=%d select=%d data=%s\n", seqno,select,data);

  switch (seqno) {
  case CHAR_WINDOWTYPE_SCHEDULEMAN_START:
    switch (select) {
    case WINDOW_BUTTONTYPE_NEXT:
    case WINDOW_BUTTONTYPE_PREV:
      page=CHAR_getWorkInt(talkerindex, CHAR_WORK_PAGE)
           + MAXSCHEDULEINONEWINDOW
             * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);
      buttontype=WINDOW_BUTTONTYPE_NEXT | WINDOW_BUTTONTYPE_PREV | WINDOW_BUTTONTYPE_CANCEL;
      if (page<0) {
        page=0;
        buttontype=WINDOW_BUTTONTYPE_NEXT | WINDOW_BUTTONTYPE_CANCEL;
      }
      if (page>MAX_SCHEDULE-MAXSCHEDULEINONEWINDOW) {
        page=MAX_SCHEDULE-MAXSCHEDULEINONEWINDOW;
        buttontype=WINDOW_BUTTONTYPE_PREV | WINDOW_BUTTONTYPE_CANCEL;
      }
      CHAR_setWorkInt(talkerindex, CHAR_WORK_PAGE, page);
      // Send WN
      NPC_LIST_gendata(meindex, talkerindex, page, buf, sizeof(buf));
      lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULELIST,
        		   buttontype,
        		   CHAR_WINDOWTYPE_SCHEDULEMAN_START,
			   CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
			   buf);
      break;
    case WINDOW_BUTTONTYPE_OK:

#ifdef _DEATH_FAMILY_CANT_SCHEDULE // WON ADD 家族戰(zhàn)玩家不能自行約戰(zhàn)
	  CHAR_talkToCli(talkerindex, meindex, "此星球無法約戰(zhàn)", CHAR_COLORWHITE);
	  break;
#endif


#ifdef _FMVER21    
      if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==FMMEMBER_LEADER) &&
#else
      if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==1) &&
#endif     
		  
        (CHAR_getWorkInt(talkerindex, CHAR_WORKFMSETUPFLAG)==1)) {
        // 只有已成立家族的族長可以使用進一步的功能 (設(shè)定、更改、同意)

        // decide: send family list or detail or accept
        dt=atoi(data);
        for (i=0; i<MAX_SCHEDULE; i++) {
          if (fmpks[fmpks_pos+i].dueltime==dt) {
            if (i==0) {
              CHAR_talkToCli(talkerindex, meindex,
                "這個時間無法進行預(yù)約。", CHAR_COLORWHITE);
              break;
            }

            switch (fmpks[fmpks_pos+i].flag) {
            case FMPKS_FLAG_NONE:
              if (NPC_AlreadyScheduled(meindex, talkerindex)) {
                // 同一個家族只能有一次排程
                CHAR_talkToCli(talkerindex, meindex,
                  "你已經(jīng)安排過戰(zhàn)斗,將機會留給其他家族吧。", CHAR_COLORWHITE);
              } else {
				
                fmpks[fmpks_pos+i].host_index=CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI);
                strcpy(fmpks[fmpks_pos+i].host_name,makeStringFromEscaped(CHAR_getChar(talkerindex, CHAR_FMNAME)));
                
//                print("CHAR_FMNAME: %s\n",fmpks[fmpks_pos+i].host_name);
                
                fmpks[fmpks_pos+i].guest_index=-1;
                strcpy(fmpks[fmpks_pos+i].guest_name,"");
                fmpks[fmpks_pos+i].prepare_time=5;	// default
                fmpks[fmpks_pos+i].max_player=50;	// default
                fmpks[fmpks_pos+i].win=0;	// default
                fmpks[fmpks_pos+i].flag=FMPKS_FLAG_SETTING;
                fmpks[fmpks_pos+i].setting_timeout=
                    CHAR_getWorkInt(meindex, NPC_WORK_SETTINGTIMEOUT);
                // 送出選擇家族的列表
                CHAR_setWorkInt(talkerindex, CHAR_WORK_PAGE, 1); // page 1
                CHAR_setWorkInt(talkerindex, CHAR_WORK_DUELTIME, dt);
                NPC_SELECT_gendata(meindex, talkerindex, 1, buf, sizeof(buf));
                buttontype=0;
                if (familyNumTotal>MAXFAMILYINONEWINDOW)
                  buttontype |= WINDOW_BUTTONTYPE_NEXT;
                lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULESELECTFAMILY,
        			   buttontype,
        			   CHAR_WINDOWTYPE_SCHEDULEMAN_SELECT,
				   CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
				   buf);

              }
              break;
            case FMPKS_FLAG_CHALLENGE:
              { // 主隊族長可以重設(shè)條件,客隊則是同意 pk,其他人滾蛋
                int tkfmindex=CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI);
                if (tkfmindex==fmpks[fmpks_pos+i].host_index) {
                  fmpks[fmpks_pos+i].flag=FMPKS_FLAG_SETTING;
                  fmpks[fmpks_pos+i].setting_timeout=
                    CHAR_getWorkInt(meindex, NPC_WORK_SETTINGTIMEOUT);
                  // 送出細(xì)部調(diào)整的列表
                  CHAR_setWorkInt(talkerindex, CHAR_WORK_DUELTIME, dt);
                  NPC_DETAIL_gendata(meindex, buf, sizeof(buf), dt);
                  lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULEDETAIL,
        	  		   WINDOW_BUTTONTYPE_OK | WINDOW_BUTTONTYPE_CANCEL,
        	 		   CHAR_WINDOWTYPE_SCHEDULEMAN_DETAIL,
				   CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
				   buf);
                } else if (tkfmindex==fmpks[fmpks_pos+i].guest_index) {
					fmpks[fmpks_pos+i].flag=FMPKS_FLAG_SCHEDULED;
  					page=CHAR_getWorkInt(talkerindex, CHAR_WORK_PAGE);
   					buttontype=WINDOW_BUTTONTYPE_NEXT | WINDOW_BUTTONTYPE_PREV | WINDOW_BUTTONTYPE_OK;
					if (page<0) {
						page=0;
						buttontype=WINDOW_BUTTONTYPE_NEXT | WINDOW_BUTTONTYPE_OK;
					}
					if (page>MAX_SCHEDULE-MAXSCHEDULEINONEWINDOW) {
 						page=MAX_SCHEDULE-MAXSCHEDULEINONEWINDOW;
						buttontype=WINDOW_BUTTONTYPE_PREV | WINDOW_BUTTONTYPE_OK;
					} 
                    CHAR_talkToCli(talkerindex, meindex,
						"你的家族已經(jīng)接受挑戰(zhàn)。", CHAR_COLORWHITE);
                    // 重新送出 list
      				NPC_LIST_gendata(meindex, talkerindex, page, buf, sizeof(buf));
					lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULELIST,
        			   buttontype,
        			   CHAR_WINDOWTYPE_SCHEDULEMAN_START,
				    CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
				    buf);
				}
              } 
              break;
            case FMPKS_FLAG_SETTING:
              { // 主隊族長可以重設(shè)條件
                int tkfmindex=CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI);
                if (tkfmindex==fmpks[fmpks_pos+i].host_index) {
                  fmpks[fmpks_pos+i].flag=FMPKS_FLAG_SETTING;
                  fmpks[fmpks_pos+i].setting_timeout=
                    CHAR_getWorkInt(meindex, NPC_WORK_SETTINGTIMEOUT);
                  // 送出細(xì)部調(diào)整的列表
                  CHAR_setWorkInt(talkerindex, CHAR_WORK_DUELTIME, dt);
                  NPC_DETAIL_gendata(meindex, buf, sizeof(buf), dt);
                  lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULEDETAIL,
        	  		   WINDOW_BUTTONTYPE_OK | WINDOW_BUTTONTYPE_CANCEL,
        	 		   CHAR_WINDOWTYPE_SCHEDULEMAN_DETAIL,
				   CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
				   buf);
				}
              }    
              // WON ADD 修正家族pk場的約戰(zhàn)問題
			  break;
			}

          }
        }
        NPC_SavePKSchedule(meindex);
	} else {
#ifdef _FMVER21      
        if (CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)!=FMMEMBER_LEADER) {
#else
        if (CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)!=1) {
#endif         
          CHAR_talkToCli(talkerindex, meindex,
            "只有族長才能預(yù)約家族PK喔。", CHAR_COLORWHITE);
		}else if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMSETUPFLAG)!=1) {
          CHAR_talkToCli(talkerindex, meindex,
            "你的家族還沒有正式成立喔。", CHAR_COLORWHITE);
        }
      }
      break;
    }
    break;
  case CHAR_WINDOWTYPE_SCHEDULEMAN_SELECT:
    switch (select) {
    case WINDOW_BUTTONTYPE_PREV:
    case WINDOW_BUTTONTYPE_NEXT:
      page=CHAR_getWorkInt(talkerindex, CHAR_WORK_PAGE)
           + MAXFAMILYINONEWINDOW
             * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);
      buttontype=WINDOW_BUTTONTYPE_NEXT | WINDOW_BUTTONTYPE_PREV;
      if (page<1) {
        page=1;
        buttontype=WINDOW_BUTTONTYPE_NEXT;
      }
      if (page>familyNumTotal-MAXFAMILYINONEWINDOW+1) {
        page=familyNumTotal-MAXFAMILYINONEWINDOW+1;
        buttontype=WINDOW_BUTTONTYPE_PREV;
      }
      CHAR_setWorkInt(talkerindex, CHAR_WORK_PAGE, page);
      // Send WN
      NPC_SELECT_gendata(meindex, talkerindex, page, buf, sizeof(buf));
      lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULESELECTFAMILY,
        		   buttontype,
        		   CHAR_WINDOWTYPE_SCHEDULEMAN_SELECT,
			   CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
			   buf);
      break;
    case WINDOW_BUTTONTYPE_OK:

#ifdef _FMVER21    
      if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==FMMEMBER_LEADER) &&
#else
      if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==1) &&
#endif       
          (CHAR_getWorkInt(talkerindex, CHAR_WORKFMSETUPFLAG)==1)) {

        dt=CHAR_getWorkInt(talkerindex, CHAR_WORK_DUELTIME);
        for (i=0; i<MAX_SCHEDULE; i++) {
          if (fmpks[fmpks_pos+i].dueltime==dt) {
            print("host_index: %d %d\n",fmpks[fmpks_pos+i].host_index,CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI));
            if (fmpks[fmpks_pos+i].host_index==CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI)) {
              print("data:%s\n",data);
              if (getStringFromIndexWithDelim(data,"|",1,token,sizeof(token))) {
                a=atoi(token);
                if (a!=fmpks[fmpks_pos+i].host_index) {
                  fmpks[fmpks_pos+i].guest_index=a;
                  // 必須要再檢查是否有這個客隊家族 /**/
                  if (getStringFromIndexWithDelim(data,"|",2,token,sizeof(token))) {
                    strcpy(fmpks[fmpks_pos+i].guest_name, makeStringFromEscaped(token));
                    // 送出 detail 編輯窗
                    NPC_DETAIL_gendata(meindex, buf, sizeof(buf), dt);
                    lssproto_WN_send(fd, WINDOW_MESSAGETYPE_PKSCHEDULEDETAIL,
        	  		   WINDOW_BUTTONTYPE_OK | WINDOW_BUTTONTYPE_CANCEL,
        	 		   CHAR_WINDOWTYPE_SCHEDULEMAN_DETAIL,
				   CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),
				   buf);
                  } else fmpks[fmpks_pos+i].flag=FMPKS_FLAG_NONE;
                } else fmpks[fmpks_pos+i].flag=FMPKS_FLAG_NONE;
              } else fmpks[fmpks_pos+i].flag=FMPKS_FLAG_NONE;
            }
          }
        }
      }
      break;
    }
    break;
  case CHAR_WINDOWTYPE_SCHEDULEMAN_DETAIL:

#ifdef _FMVER21  
    if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==FMMEMBER_LEADER) &&
#else
    if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==1) &&
#endif    
        (CHAR_getWorkInt(talkerindex, CHAR_WORKFMSETUPFLAG)==1)) {

      dt=CHAR_getWorkInt(talkerindex, CHAR_WORK_DUELTIME);
      for (i=0; i<MAX_SCHEDULE; i++) {
        if (fmpks[fmpks_pos+i].dueltime==dt) {
          if (fmpks[fmpks_pos+i].host_index==CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI)) {
            switch (select) {
            case WINDOW_BUTTONTYPE_OK:
              {
                // 準(zhǔn)備時間
                if (getStringFromIndexWithDelim(data,"|",4,token,sizeof(token))) {
                  a=atoi(token);
                  if ((a>0) && (a<=40)) fmpks[fmpks_pos+i].prepare_time=a;
                }
                // 最大人數(shù)
                if (getStringFromIndexWithDelim(data,"|",5,token,sizeof(token))) {
                  a=atoi(token);
                  if ((a>0) && (a<=50)) fmpks[fmpks_pos+i].max_player=a;
                }
                // 勝利條件
                if (getStringFromIndexWithDelim(data,"|",6,token,sizeof(token))) {
                  a=atoi(token);
                  if ((a>=0) && (a<=1)) fmpks[fmpks_pos+i].win = a;
                }
                fmpks[fmpks_pos+i].flag=FMPKS_FLAG_CHALLENGE;
                fmpks[fmpks_pos+i].challenge_timeout=
                    CHAR_getWorkInt(meindex, NPC_WORK_CHALLENGETIMEOUT);
                CHAR_talkToCli(talkerindex, meindex,
                    "家族挑戰(zhàn)設(shè)定完成。", CHAR_COLORWHITE);
              }
              break;
            case WINDOW_BUTTONTYPE_CANCEL:
              fmpks[fmpks_pos+i].flag=FMPKS_FLAG_NONE;
              fmpks[fmpks_pos+i].host_index=-1;
              strcpy(fmpks[fmpks_pos+i].host_name,"");
              fmpks[fmpks_pos+i].guest_index=-1;
              strcpy(fmpks[fmpks_pos+i].guest_name,"");
              CHAR_talkToCli(talkerindex, meindex,

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品沙发午睡系列990531| 欧美日韩久久久久久| 蜜臀va亚洲va欧美va天堂| 亚洲综合偷拍欧美一区色| 亚洲天堂福利av| 亚洲欧美日韩精品久久久久| 国产精品麻豆网站| 亚洲欧美乱综合| 亚洲女厕所小便bbb| 亚洲图片一区二区| 日韩精品成人一区二区三区| 亚洲va韩国va欧美va精品| 亚洲第一二三四区| 日本aⅴ亚洲精品中文乱码| 久久91精品久久久久久秒播| 国产又黄又大久久| 成人av电影在线播放| a美女胸又www黄视频久久| 色国产综合视频| 欧美麻豆精品久久久久久| 欧美一区二区三区喷汁尤物| 精品国产91乱码一区二区三区| 国产无一区二区| 一区二区三区免费| 看片网站欧美日韩| 福利一区二区在线观看| 色婷婷精品久久二区二区蜜臂av| 欧美日韩亚洲高清一区二区| 精品日韩av一区二区| 国产精品色婷婷| 婷婷久久综合九色综合绿巨人| 美女网站在线免费欧美精品| 成人中文字幕合集| 欧美色综合影院| 久久久午夜精品| 亚洲成人免费视| 国产成人在线免费观看| 91极品视觉盛宴| 久久久综合九色合综国产精品| 亚洲欧洲av在线| 蜜桃视频在线一区| 91视频观看免费| 久久久久久久综合日本| 亚洲最大的成人av| 国产成人日日夜夜| 日韩午夜av一区| 亚洲精品综合在线| 国产一区二区0| 538prom精品视频线放| 国产精品乱人伦| 久久精品999| 欧美日韩精品电影| 中文字幕一区二区三区av| 青青草91视频| 欧美中文字幕亚洲一区二区va在线| 欧美精品一区二区三区蜜臀| 午夜伊人狠狠久久| 色婷婷综合久久久久中文一区二区 | 久久99国产精品久久99果冻传媒| 91影视在线播放| 久久久亚洲精华液精华液精华液| 婷婷久久综合九色国产成人| 色噜噜久久综合| 国产欧美精品一区aⅴ影院| 蜜臀精品久久久久久蜜臀| 欧美日本在线播放| 一区二区三区免费观看| 91免费观看在线| 国产精品国产三级国产普通话三级 | 亚洲国产精品人人做人人爽| 97精品电影院| 1区2区3区欧美| av欧美精品.com| 国产精品国产三级国产普通话蜜臀| 国产麻豆91精品| ww亚洲ww在线观看国产| 免费观看30秒视频久久| 91精品国产全国免费观看| 天天色综合成人网| 在线不卡欧美精品一区二区三区| 亚洲免费观看高清完整版在线观看 | 国产成a人亚洲精品| xnxx国产精品| 国产成人精品aa毛片| 国产精品日日摸夜夜摸av| 成人性视频网站| 亚洲人成影院在线观看| 在线视频亚洲一区| 日欧美一区二区| 精品久久国产97色综合| 国产伦精品一区二区三区视频青涩 | 婷婷成人综合网| 欧美一级片在线看| 国内精品伊人久久久久av影院| 精品久久久久久无| 99这里只有久久精品视频| 国产精品久久久久久久久快鸭| 一本色道综合亚洲| 视频在线观看国产精品| 精品处破学生在线二十三| 国产91在线观看丝袜| 亚洲精品成人天堂一二三| 欧美日韩一区精品| 久久99久久精品| 亚洲人成7777| 91精品国产乱| 一本到一区二区三区| 日韩激情av在线| 久久久综合网站| 欧美日韩情趣电影| 懂色av中文一区二区三区| 一区二区三区四区不卡在线| 精品久久久久久久久久久久包黑料| 成人免费视频网站在线观看| 亚洲成人av中文| 国产欧美一区二区在线| 欧美色精品天天在线观看视频| 国产一区美女在线| 夜夜爽夜夜爽精品视频| 久久久久久夜精品精品免费| 欧美图区在线视频| 韩国精品主播一区二区在线观看 | 粉嫩久久99精品久久久久久夜| 亚洲女同女同女同女同女同69| 欧美一区二区三区影视| 99热在这里有精品免费| 久久成人av少妇免费| 亚洲一区二区三区小说| 欧美韩国日本不卡| 精品免费国产一区二区三区四区| 在线精品视频小说1| 成人夜色视频网站在线观看| 欧美a一区二区| 丝袜美腿亚洲综合| 一级精品视频在线观看宜春院 | 亚洲精品国产成人久久av盗摄| 欧美大黄免费观看| 欧美日韩美少妇| 91丨九色丨蝌蚪丨老版| 国产成人啪午夜精品网站男同| 日韩精品五月天| 午夜欧美视频在线观看| 一区二区三区高清| 一区视频在线播放| 欧美激情综合网| 久久日韩精品一区二区五区| 欧美一级夜夜爽| 制服丝袜亚洲网站| 欧美精品一级二级三级| 欧美色图12p| 欧美日韩二区三区| 欧美午夜片在线看| 欧美亚洲综合另类| 欧美在线观看一区二区| 在线观看视频一区二区| 在线精品视频一区二区| 欧美在线高清视频| 欧美日韩一二三| 欧美精品v国产精品v日韩精品 | 午夜精品福利一区二区蜜股av | 亚洲黄色性网站| 亚洲精品欧美激情| 亚洲高清在线视频| 午夜国产精品一区| 久久99精品网久久| 国产高清不卡一区二区| 成人在线综合网| 91国产免费看| 555夜色666亚洲国产免| 精品日韩一区二区三区 | 91一区二区在线| 91国模大尺度私拍在线视频| 欧美精品aⅴ在线视频| 日韩欧美中文字幕一区| 久久久午夜精品| 国产精品伦理一区二区| 亚洲狠狠丁香婷婷综合久久久| 午夜精品福利在线| 国产一区二区精品在线观看| 不卡视频免费播放| 欧美午夜片在线观看| 欧美tickle裸体挠脚心vk| 国产视频一区二区在线| 亚洲黄色免费电影| 美女高潮久久久| proumb性欧美在线观看| 欧美日韩亚洲综合| 久久久久国产成人精品亚洲午夜| 亚洲欧洲美洲综合色网| 香蕉成人伊视频在线观看| 国产福利精品一区| 欧美日韩一区 二区 三区 久久精品| 欧美zozo另类异族| 一区二区三区中文字幕精品精品| 蜜臀精品久久久久久蜜臀| fc2成人免费人成在线观看播放 | 粉嫩一区二区三区在线看| 欧美日韩在线播| 日本一区二区免费在线| 亚洲aaa精品|