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

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

?? mirgame.cpp

?? 傳奇掛機 傳奇掛機 傳奇掛機 傳奇掛機
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			LogSystem( "上次使用角色 %s", &m_StringList[5 * i][1] );

		}
		else
			strcpy( m_SelCharInfo.Chars[i].Name, m_StringList[5 * i] );
		m_SelCharInfo.Chars[i].hair = atoi( m_StringList[5 * i + 1] );
		m_SelCharInfo.Chars[i].prof = atoi( m_StringList[5 * i + 2] );
		m_SelCharInfo.Chars[i].level = atoi( m_StringList[5 * i + 3] );
		m_SelCharInfo.Chars[i].sex = atoi( m_StringList[5 * i + 4] );
		LogSystem( "%d [%s] 等級[%s]", i, m_SelCharInfo.Chars[i].Name, m_StringList[5 * i + 3] );
	}
	return TRUE;
err:
	return FALSE;

}

BOOL CMirGame::CloseAll()
{
	return TRUE;
}

BOOL CMirGame::EnterGame(int CharIndex)
{	
	MMSG	msg;
	int erri;
	char	*	CharName = 0;
	g_fpLog	=	fopen( "d:\\msglog.txt", "w" );
	g_fpGetLog = fopen( "d:\\msggetlog.txt", "w" );
	g_fpPutLog = fopen( "d:\\msgputlog.txt", "w" );
	memset( &msg, 0, sizeof( MMSG ));
	if( m_SelCharInfo.CharCount  == 0 )
	{
		LogSystem( "沒有角色,無法進入游戲!" );
		return FALSE;
	}
	if( CharIndex < 0 || CharIndex >= m_SelCharInfo.CharCount )
	{
		LogSystem( "所選擇地角色不存在!" );
		return FALSE;
	}
	CharName = m_SelCharInfo.Chars[CharIndex].Name;

	LogSystem( "使用角色[%s]登陸服務器。", CharName );

	msg.wCmd = 0x67;
	sprintf( msg.data, "%s/%s", m_Account, CharName );
	erri = m_MirMsg.SendMsg( m_sSelChar, &msg );
	if( erri == -1 )
	{
		LogSystem( "發送選人請求時出錯!" );
		goto err;
	}

	erri = m_MirMsg.RecvMsg( m_sSelChar, &msg );
	if( erri == -1 )
	{
		LogSystem( "接收選人結果時出錯!" );
		goto err;
	}
	if( msg.wCmd != 0x20d )
	{
		LogSystem( "選人未被服務器接受!" );
		LogSystem( "得到消息是: 0x%x  [%s]", msg.wCmd,msg.data );
		goto err;
	}
	LogSystem( "服務器接受所選角色信息!" );
	LogSystem( "正在準備登陸到游戲服務器!" );
	//printf( "%s\n", msg.data );
	GetString( msg.data );
	LogSystem( "服務器地址: %s 端口: %s", m_StringList[0], m_StringList[1] );

	CloseSelCharServer();

	LogSystem( "正在進入游戲服務器,請稍候..." );
	m_sGame = m_MirSocket.OpenConnection( m_StringList[0], atoi( m_StringList[1] ));
	if( m_sGame == 0 )
	{
		LogSystem( "連接游戲服務器出錯!");
		goto err;
	}
	sprintf( m_tmpBuffer, "**%s/%s/%s/20020522/0", m_Account, CharName, m_SID );

	CodeGameCode( (BYTE*)m_tmpBuffer, strlen( m_tmpBuffer ), (BYTE*)m_tmpBuffer2 );
	sprintf( m_tmpBuffer, "#%c%s!", m_MirMsg.GetMsgFlag(), m_tmpBuffer2 );
	LogSystem( "驗證用戶合法性..." );
	erri = m_MirMsg.SendString( m_sGame, m_tmpBuffer );
	if( erri == -1 )
	{
		LogSystem( "發送用戶驗證信息出錯!" );
		m_MirSocket.CloseConnection( m_sGame );
		goto err;
	}

	return StartGame();
err:
	CloseSelCharServer();
	return FALSE;
}
#define	CLEARMSG(a)	memset( &##a, 0, sizeof( MMSG ))
BOOL CMirGame::StartGame()
{
	int i2 = 10;
	MMSG	msg;
	char	pTxt[256];
	MMSGSETCHARINFO	*	pmsginfo;
	DWORD	dwTime,pid;
	BOOL	bInWorld = FALSE;
	int	ilen = 0;
	if( !m_MirSocket.SetNoBlock( m_sGame ))
	{
		goto err;
	}

	m_bInGame = TRUE;
	CreateThread( NULL, 1024 * 1024 * 1, (LPTHREAD_START_ROUTINE)MessageProc, (LPVOID)this, 0, &pid );
	dwTime = GetTickCount();
	memset( &m_LastAction, 0, sizeof( m_LastAction ));
	while( m_bInGame ) 
	{
		Sleep( 1 );
		if( GetTickCount() - dwTime >= 800 && bInWorld)
		{
			RunThrough( dwTime & 7 );
			dwTime = GetTickCount();
			LogChat( "do action!" );
		}
		if((ilen = GetMsg( &msg )) != 0)
		{
		//	Sleep( 1 );
			switch( msg.wCmd )
			{
			case	0x292:
				CLEARMSG( msg );
				msg.wCmd = 0x3fa;
				if( m_MirMsg.SendMsg( m_sGame, &msg ) == -1 )
				{
					goto err;
				}
				LogSystem( "進入游戲世界..." );
				break;
			case	0x33:
				m_CharSelf.pos_x = msg.w1;
				m_CharSelf.pos_y = msg.w2;
				LogChat( "出現在地圖 %d, %d 處", msg.w1,msg.w2 );
				SetCharacterPos( msg.w1, msg.w2 );
				m_CharSelf.dwServerId = msg.dwFlag;
				m_GameMap.SetGameMap( msg.data, msg.w1, msg.w2 );
				break;
			case	0x22:
				if( msg.dwFlag == m_CharSelf.dwServerId )
				{
					LogChat( "你被殺死了!" );
				}
				else
				{
					LogChat( "ServerId = %d 被人殺死了!" );
				}
				break;
			case	0x1f:
				if( msg.dwFlag == m_CharSelf.dwServerId )
				{
					LogChat( "你被別人攻擊 減少 %d 的生命,剩下 %d 的生命,總共 %d 的生命.", msg.w3, msg.w1, msg.w2 );
				}
				else
				{
					LogChat( "Serverid = %d 被別人攻擊 減少 %d 的生命,剩下 %d 的生命,總共 %d 的生命.", msg.dwFlag, msg.w3, msg.w1, msg.w2  );
				}
				break;
			case	0x34:
				pmsginfo = (MMSGSETCHARINFO*)&msg;
				LogChat( "Level:%u Gold:%u AC:%u-%u MAC:%u-%u DC:%u-%u MC:%u-%u SC:%u-%u",pmsginfo->bLevel,
					pmsginfo->dwGold, pmsginfo->ACHi, pmsginfo->ACLow, pmsginfo->MACHi, pmsginfo->MACLow,
					pmsginfo->DCHi,pmsginfo->DCLow, pmsginfo->MCHi, pmsginfo->MCLow , pmsginfo->SCHi, pmsginfo->SCLow );

				break;
			case	0x36:
				LogChat( "地圖名字是 %s.", msg.data );
				i2 = 0;
				CLEARMSG(msg);
				msg.wCmd = 0x409;
				if( m_MirMsg.SendMsg( m_sGame, &msg ) == -1 )
				{
					goto err;
				}
				bInWorld = TRUE;
				break;
			case	0x2c6:
				m_MiniMap.SetMMap( msg.w1 );
				break;
			case	0x64:
				LogChat( "系統信息: %s", msg.data );
				break;
			case	0x67:
				HandleCommand( msg.data );
				LogChat( msg.data );
				break;
			case	0x0a:
				if( msg.data[8] != (char)0 )
				{
					UnNameCode( &msg.data[8], pTxt );
					LogChat( " %s 出現在(%d,%d)處!", pTxt, msg.w1, msg.w2 );
					fprintf( g_fpPutLog, "id = 0x%08x w1 = 0x%04x w2 = 0x%04x w3 = 0x%04x d1 = 0x%08x d2 = 0x%08x name = %s\n",
						msg.dwFlag,msg.w1, msg.w2, msg.w3, ((DWORD*)msg.data)[0], ((DWORD*)msg.data)[1], pTxt );

					//Say( " %s 出現在(%d,%d)處!", pTxt, msg.w1, msg.w2 );
				}
				else
				{
					LogChat( " %d 出現在(%d,%d)處!", msg.dwFlag,  msg.w1, msg.w2 );
					fprintf( g_fpPutLog, "id = 0x%08x w1 = 0x%04x w2 = 0x%04x w3 = 0x%04x d1 = 0x%08x d2 = 0x%08x \n",
						msg.dwFlag,msg.w1, msg.w2, msg.w3, ((DWORD*)msg.data)[0], ((DWORD*)msg.data)[1] );
				
				}
				break;
			case	0x09:
				if( msg.dwFlag == m_CharSelf.dwServerId )
				{
					SetCharacterPos( msg.w1, msg.w2 );
					LogChat( "重新設置角色坐標在 %d, %d ...", msg.w1, msg.w2 );
					if( m_LastAction.action != 0 )
					{
						m_LastAction.x = msg.w1;
						m_LastAction.y = msg.w2;
					}
				}
				break;
			case	0x27a:
				if( msg.dwFlag == m_CharSelf.dwServerId )
				{
					SetCharacterPos( msg.w1, msg.w2 );
					LogChat( "切換地圖后,重新設置角色坐標在 %d, %d ...", msg.w1, msg.w2 );
					if( m_LastAction.action != 0 )
					{
						m_LastAction.x = msg.w1;
						m_LastAction.y = msg.w2;
					}
				}
				break;
			case	0x279:
				LogChat( "切換地圖!" );
				break;
			case	0x28:
				//LogChat( "Chat" );
			case	0x68:
				LogChat( "Chat: %s", msg.data );
				break;
			default:
				fprintf( g_fpLog, "UNKNOW MSG: FLAG = 0x%08x wCmd = 0x%04x w1 = 0x%04x w2 = 0x%04x w3 = 0x%04x data = [%s] hex = [", msg.dwFlag, msg.wCmd, msg.w1, msg.w2, msg.w3, msg.data );
				for( i2 = 0;i2 < ilen - MSGHEADERSIZE;i2 ++ )
				{
					fprintf( g_fpLog, "%02x ", msg.data[i2] & 0xff );
				}
				fprintf( g_fpLog, "]\n" );
			}
		}
	}
	memset( &msg, 0,sizeof( MMSG ));
	msg.wCmd = 0x3f1;
	m_MirMsg.SendMsg( m_sGame, &msg );
	LogSystem( "斷開游戲服務器!" );
	m_MirSocket.CloseConnection( m_sGame );

	return TRUE;
err:
	return FALSE;
}

int CMirGame::GetMsg( MMSG * pMsg )
{
	int ilen = 0;
	if( m_MsgQueue.GetMsg( m_tmpBuffer ))
	{
		ilen = strlen( m_tmpBuffer );
		//LogFile( m_tmpBuffer );
		fprintf( g_fpGetLog, "%s\n", m_tmpBuffer );
		if( m_tmpBuffer[ilen-1] == '!' )
		{
			m_tmpBuffer[ilen-1] = '\0';
		}
		if( m_tmpBuffer[1] == '+' )
		{
			m_tmpBuffer[6] = '\0';
			//LogChat( "GetWords %s", m_tmpBuffer );
			if( stricmp( m_tmpBuffer, "#+GOOD" ) == 0 )
			{
				ActionOk();
			}
			else if( stricmp( m_tmpBuffer, "#+FAIL" ) == 0 )
			{
				ActionFail();
			}
			return GetMsg( pMsg );
			
		}
		ilen = UnGameCode( &m_tmpBuffer[1], (BYTE*)pMsg );
		
		if( pMsg->wCmd == 0x0a || pMsg->wCmd == 0x26d )
		{
			UnNameCode( &pMsg->data[8], m_tmpBuffer2 );
		//	fprintf( g_fpLog, "%s!\n", m_tmpBuffer );
		//	fprintf( g_fpGetLog, "NAME:%s\n", m_tmpBuffer2 );
		}
		return ilen;	
	}
	return 0;
}

void CMirGame::ActionOk()
{
	LogChat( "Action Ok!" );
	switch( m_LastAction.action )
	{
	case	ACTION_RUN:
		//LogFile( "End Run!");
	case	ACTION_WALK:
		SetCharacterPos( m_LastAction.x, m_LastAction.y );
		break;
	case	ACTION_TRUN:
		LogChat( "轉身OK!" );
		break;
	}
	LogChat( "Pos( %d, %d)", m_CharSelf.pos_x , m_CharSelf.pos_y );
	m_LastAction.action = 0;
	memset( &m_LastAction, 0, sizeof( m_LastAction ));
}

void CMirGame::ActionFail()
{
	//LogFile( "Action Fail!" );
	LogChat( "Action Fail!" );
	m_LastAction.action = 0;
	memset( &m_LastAction, 0, sizeof( m_LastAction ));
}

BOOL CMirGame::CanDoAction()
{
	if( m_LastAction.action == 0 )
		return 1;
	return 0;
}

BOOL CMirGame::Say(char *word,...)
{
	MMSG msg;
	char	szBuff[2048];
	va_list	vl;
	va_start( vl, word );
	vsprintf( szBuff, word, vl );
	va_end( vl);

	memset( &msg, 0, sizeof( MMSG ));
	strcpy( msg.data , szBuff );
	//sprintf( msg.data, "#(%03d,%03d)-%s", g_pos_x, g_pos_y, word );
	msg.wCmd = 0xbd6;
	int erri;
	erri = m_MirMsg.SendMsg( m_sGame, &msg );
	return (erri!= -1);
}

BOOL CMirGame::Logout()
{
	m_bInGame = FALSE;

	return TRUE;
}

BOOL CMirGame::CloseSelCharServer()
{
	LogSystem( "斷開角色服務器!" );
	m_MirSocket.CloseConnection( m_sSelChar );
	return TRUE;
}

void CMirGame::HandleCommand(char *command)
{
	//command[9] = '\0';
	char	cmd[20];
	char	param[260];
	memcpy( (void*)cmd, (void*)command, 8 );
	cmd[8] = '\0';
	if( stricmp( cmd, "渴望5222" ) == 0 )
	{
		LogChat( "發現控制者,處理控制者指令!" );
	}
	else
	{
		return;
	}
	memcpy( (void*)cmd,(void*)&command[11],4 );
	cmd[4] = '\0';
	memcpy( (void*)param, (void*)&command[16], 255 );
	//param[2] = '\0';
	if( stricmp( cmd, "link" )== 0 )
	{
		Say( "控制者 渴望5222 已經連接!" );
	}else if( stricmp( cmd, "talk" ) == 0 )
	{
		Say( param );
	}else if( stricmp( cmd, "setx" )== 0)
	{
		m_CharSelf.pos_x = atoi( param );
		Say( "設置新X坐標:%d", m_CharSelf.pos_x );
	}else if( stricmp( cmd, "sety" )== 0)
	{
		m_CharSelf.pos_y = atoi( param );
		Say( "設置新Y坐標:%d", m_CharSelf.pos_y );
	}else if( stricmp( cmd, "walk" ) == 0 )
	{
		Walk( atoi( param ));
	}else if( stricmp( cmd, "frun" ) == 0 )
	{
		RunThrough( atoi( param ));
	}else if( stricmp( cmd, "turn" ) == 0 )
	{
		Turn( atoi( param ));
	}
	else
	{
		Say( &command[11] );
	}

	LogChat( "控制者命令 %s(%s)", cmd, param );
}

void CMirGame::Run(int dir)
{
	MMSG msg;
	
	int erri;
	int tx,ty;
	if( !CanDoAction())
		return;
	
	if( dir <0 || dir > 7 )
		return;
	//LogFile( "Start Run!" );
	LogChat( "Start Run at ( %d, %d )", m_CharSelf.pos_x,m_CharSelf.pos_y );
	tx = m_CharSelf.pos_x  + (xofs_walk[dir]*2);
	ty = m_CharSelf.pos_y  + (yofs_walk[dir]*2);
	if( !m_GameMap.TestMap( tx, ty ) || !m_GameMap.TestMap(m_CharSelf.pos_x  + xofs_walk[dir], m_CharSelf.pos_y  + yofs_walk[dir]))
	{
		LogChat( "前方無法通過!" );
		return;
	}
	memset( &msg, 0, sizeof( MMSG ));
	msg.wa = tx;
	msg.wb = ty;
	msg.wCmd = 0xbc5;
	msg.w2 = dir;
	erri = m_MirMsg.SendMsg( m_sGame, &msg );
	if( erri == -1 )
		return;
	m_LastAction.action = ACTION_RUN;
	m_LastAction.x = tx;
	m_LastAction.y = ty;
	m_LastAction.dir = dir;
	return ;
}

void CMirGame::Turn(int dir)
{
	MMSG msg;
	
	int erri;
	int tx,ty;
	if( !CanDoAction())
		return;
	if( dir <0 || dir > 7 )
		return;
	tx = m_CharSelf.pos_x;
	ty = m_CharSelf.pos_y;
	memset( &msg, 0, sizeof( MMSG ));
	msg.wa = tx;//g_pos_x;
	msg.wb = ty;//g_pos_y;
	msg.wCmd = 0xbc2;
	msg.w2 = dir;
	erri = m_MirMsg.SendMsg( m_sGame, &msg );
	if( erri == -1 )
		return;
	m_LastAction.action = ACTION_TRUN;
	m_LastAction.x = tx;
	m_LastAction.y = ty;
	m_LastAction.dir = dir;
	return ;
}

void CMirGame::SetCharacterPos(int x, int y)
{
	m_CharSelf.pos_x = x;
	m_CharSelf.pos_y = y;
	m_MiniMap.SetCurPos( x, y);
	m_GameMap.SetPersonInfo( x, y, 0 );
}

CMirGameMap * CMirGame::GetGameMap()
{
	return &m_GameMap;

}

CMirMiniMap * CMirGame::GetMiniMap()
{
	return &m_MiniMap;
}

BOOL CMirGame::RunThrough(int dir)
{
	MMSG msg;
	
	int erri;
	int tx,ty;
	if( !CanDoAction())
		return FALSE;
	if( dir <0 || dir > 7 )
		return FALSE;
	tx = m_CharSelf.pos_x;
	ty = m_CharSelf.pos_y;

	memset( &msg, 0, sizeof( MMSG ));
	msg.wa = m_CharSelf.pos_x;//  + (xofs_walk[dir]);//g_pos_x;
	msg.wb = m_CharSelf.pos_y;//  + (yofs_walk[dir]);//g_pos_y;
	msg.wCmd = 0xbc8;
	msg.w2 = dir;
	erri = m_MirMsg.SendMsg( m_sGame, &msg );
	if( erri == -1 )
		return FALSE;
	m_LastAction.action = ACTION_RUNTHROUGH+1;
	m_LastAction.x = tx;
	m_LastAction.y = ty;
	m_LastAction.dir = dir;
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区免费观在线| 一区二区三区在线免费视频| 中文字幕一区二区三中文字幕| 婷婷一区二区三区| 波多野结衣视频一区| 精品久久久久99| 日韩av中文在线观看| 色婷婷精品大在线视频| 中文字幕欧美日韩一区| 精品夜夜嗨av一区二区三区| 欧美日韩在线亚洲一区蜜芽| 自拍偷在线精品自拍偷无码专区 | 亚洲风情在线资源站| 成人精品视频一区| 2020日本不卡一区二区视频| 日本v片在线高清不卡在线观看| 91国内精品野花午夜精品| 中文av字幕一区| 国产一区二区三区| 精品国产一区二区三区四区四 | 亚洲婷婷综合久久一本伊一区 | 99re这里都是精品| 欧美国产综合色视频| 国产一区二区在线影院| 日韩三级视频在线观看| 美国毛片一区二区三区| 91精品免费在线观看| 日韩经典一区二区| 91精品国产色综合久久不卡电影| 五月婷婷综合激情| 欧美一区二区视频在线观看2020| 视频一区视频二区中文| 欧美日韩国产高清一区| 亚洲成人一二三| 3d动漫精品啪啪一区二区竹菊| 亚洲成人久久影院| 3d动漫精品啪啪1区2区免费 | 亚洲综合视频网| 欧美日韩aaa| 日韩电影免费在线观看网站| 7777女厕盗摄久久久| 另类调教123区| 久久久国产综合精品女国产盗摄| 风间由美一区二区av101| 欧美激情在线一区二区| 91免费国产在线| 亚洲6080在线| 精品久久久久av影院| 国产91精品入口| 亚洲精品中文在线影院| 欧美年轻男男videosbes| 美女一区二区在线观看| 中文字幕不卡三区| 欧美午夜在线观看| 国产麻豆精品久久一二三| 国产精品乱码久久久久久| 91激情在线视频| 国内一区二区在线| 亚洲精品国产成人久久av盗摄| 欧美日韩久久不卡| 国产盗摄视频一区二区三区| 亚洲卡通动漫在线| 精品久久久久香蕉网| 色综合久久天天综合网| 美女国产一区二区三区| 18欧美亚洲精品| 欧美一级高清片| 91在线视频免费观看| 日本欧美在线观看| 亚洲天堂成人在线观看| 日韩一区二区三区三四区视频在线观看| 国产一区二区三区四区五区入口| 亚洲免费在线看| 欧美精品一区二| 欧美日韩黄色影视| av在线免费不卡| 激情综合网天天干| 亚洲va在线va天堂| 亚洲欧洲av色图| 久久综合资源网| 在线成人小视频| 91成人在线观看喷潮| 国产成人在线色| 免费视频一区二区| 亚洲国产一二三| 亚洲欧美日韩中文播放| 久久久精品黄色| 日韩欧美国产1| 欧美视频精品在线| 91美女片黄在线| 成人av在线资源网| 国模无码大尺度一区二区三区| 亚洲成av人片一区二区三区| 中文字幕av一区二区三区免费看 | 日韩一区二区三区电影| 色婷婷久久久亚洲一区二区三区| 国产精品99久久久久久久vr| 久久国产精品72免费观看| 日韩国产欧美一区二区三区| 亚洲精选免费视频| 亚洲欧美日韩在线不卡| 综合欧美亚洲日本| 亚洲视频精选在线| 一区在线播放视频| 综合网在线视频| 亚洲图片另类小说| 一区二区在线观看视频在线观看| 中文字幕一区日韩精品欧美| 中文字幕第一区第二区| 中文字幕 久热精品 视频在线| 国产偷国产偷精品高清尤物 | 91精品国产欧美一区二区18 | 日本不卡一区二区三区| 首页国产丝袜综合| 青青国产91久久久久久 | 亚洲免费观看高清在线观看| 日本一区二区高清| 日韩美女视频一区| 一级特黄大欧美久久久| 亚洲一区二区3| 日韩av一区二区三区四区| 免费观看久久久4p| 国产精品一级在线| www.视频一区| 欧美三级电影在线看| 日韩欧美电影一区| 国产欧美日韩在线| 最新成人av在线| 午夜久久久久久久久久一区二区| 日韩av电影免费观看高清完整版 | 久久久亚洲午夜电影| 国产精品亲子伦对白| 亚洲欧美偷拍卡通变态| 日韩一区精品字幕| 国产成人精品www牛牛影视| 99久久99久久精品免费观看 | 色激情天天射综合网| 欧美日韩在线免费视频| 日韩免费观看2025年上映的电影| 久久久99精品久久| 一区二区三区四区国产精品| 美女视频黄频大全不卡视频在线播放| 国产精品一卡二卡| 欧美午夜一区二区三区免费大片| 欧美成人高清电影在线| 中文字幕亚洲电影| 蜜桃视频一区二区三区| 99久久精品免费看| 日韩一区二区三区免费观看| 亚洲国产成人自拍| 天堂久久久久va久久久久| 国产剧情一区在线| 欧美婷婷六月丁香综合色| 精品国产凹凸成av人导航| 亚洲精品欧美综合四区| 极品美女销魂一区二区三区免费| 91在线观看视频| 精品久久久久久久久久久院品网| 亚洲嫩草精品久久| 极品少妇一区二区| 欧美日本在线看| 国产精品每日更新| 久久国产生活片100| 色视频一区二区| 国产欧美日韩卡一| 免费亚洲电影在线| 欧美亚洲国产一区二区三区 | 成人免费视频caoporn| 51久久夜色精品国产麻豆| 中文字幕视频一区二区三区久| 麻豆精品一二三| 欧美人成免费网站| 亚洲视频免费在线| 成人久久久精品乱码一区二区三区 | 粉嫩av一区二区三区在线播放| 日韩一区二区免费电影| 亚洲一区在线观看免费观看电影高清| 国产成人在线网站| 亚洲精品一区二区三区99| 天堂va蜜桃一区二区三区漫画版 | 偷拍亚洲欧洲综合| 91久久国产综合久久| 成人免费小视频| 成人网在线免费视频| 国产视频不卡一区| 狠狠色丁香久久婷婷综合丁香| 91精品国产综合久久精品app| 亚洲精品国产无天堂网2021| 国产高清视频一区| 国产女人水真多18毛片18精品视频| 老色鬼精品视频在线观看播放| 91精品国产欧美一区二区成人| 亚洲国产精品久久久久婷婷884| 成人免费视频caoporn| 国产精品美女久久久久aⅴ| 成人激情小说乱人伦| 中文字幕欧美一| 色国产综合视频| 午夜一区二区三区视频| 欧美理论片在线|