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

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

?? atcommand.c

?? 最新的仙鏡傳說服務器C語言源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
//atcommand.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "socket.h"
#include "timer.h"

#include "clif.h"
#include "chrif.h"
#include "intif.h"
#include "itemdb.h"
#include "map.h"
#include "pc.h"
#include "skill.h"
#include "mob.h"
#include "pet.h"
#include "battle.h"
#include "party.h"
#include "guild.h"
#include "atcommand.h"

#define OPTION_HIDE 0x40
#define STATE_BLIND 0x10

static char msg_table[200][1024];	/* Server message */

#define ATCOMMAND_FUNC(x) int atcommand_ ## x \
	(const int fd, struct map_session_data* sd, \
	 const char* command, const char* message)
//ATCOMMAND_FUNC(broadcast);
//ATCOMMAND_FUNC(localbroadcast);
ATCOMMAND_FUNC(rurap);
ATCOMMAND_FUNC(rura);
ATCOMMAND_FUNC(where);
ATCOMMAND_FUNC(jumpto);
ATCOMMAND_FUNC(jump);
ATCOMMAND_FUNC(who);
ATCOMMAND_FUNC(save);
ATCOMMAND_FUNC(load);
ATCOMMAND_FUNC(speed);
ATCOMMAND_FUNC(storage);
ATCOMMAND_FUNC(guildstorage);
ATCOMMAND_FUNC(option);
ATCOMMAND_FUNC(hide);
ATCOMMAND_FUNC(jobchange);
ATCOMMAND_FUNC(die);
ATCOMMAND_FUNC(kill);
ATCOMMAND_FUNC(alive);
ATCOMMAND_FUNC(kami);
ATCOMMAND_FUNC(heal);
ATCOMMAND_FUNC(item);
ATCOMMAND_FUNC(item2);
ATCOMMAND_FUNC(itemreset);
ATCOMMAND_FUNC(itemcheck);
ATCOMMAND_FUNC(baselevelup);
ATCOMMAND_FUNC(joblevelup);
ATCOMMAND_FUNC(help);
ATCOMMAND_FUNC(gm);
ATCOMMAND_FUNC(pvpoff);
ATCOMMAND_FUNC(pvpon);
ATCOMMAND_FUNC(gvgoff);
ATCOMMAND_FUNC(gvgon);
ATCOMMAND_FUNC(model);
ATCOMMAND_FUNC(go);
ATCOMMAND_FUNC(monster);
ATCOMMAND_FUNC(killmonster);
ATCOMMAND_FUNC(killmonster2);
ATCOMMAND_FUNC(refine);
ATCOMMAND_FUNC(produce);
ATCOMMAND_FUNC(memo);
ATCOMMAND_FUNC(gat);
ATCOMMAND_FUNC(packet);
ATCOMMAND_FUNC(statuspoint);
ATCOMMAND_FUNC(skillpoint);
ATCOMMAND_FUNC(zeny);
ATCOMMAND_FUNC(param);
ATCOMMAND_FUNC(guildlevelup);
ATCOMMAND_FUNC(makepet);
ATCOMMAND_FUNC(petfriendly);
ATCOMMAND_FUNC(pethungry);
ATCOMMAND_FUNC(petrename);
ATCOMMAND_FUNC(recall);
ATCOMMAND_FUNC(character_job);
ATCOMMAND_FUNC(revive);
ATCOMMAND_FUNC(character_stats);
ATCOMMAND_FUNC(character_option);
ATCOMMAND_FUNC(character_save);
ATCOMMAND_FUNC(night);
ATCOMMAND_FUNC(day);
ATCOMMAND_FUNC(doom);
ATCOMMAND_FUNC(doommap);
ATCOMMAND_FUNC(raise);
ATCOMMAND_FUNC(raisemap);
ATCOMMAND_FUNC(character_baselevel);
ATCOMMAND_FUNC(character_joblevel);
ATCOMMAND_FUNC(kick);
ATCOMMAND_FUNC(kickall);
ATCOMMAND_FUNC(allskill);
ATCOMMAND_FUNC(questskill);
ATCOMMAND_FUNC(lostskill);
ATCOMMAND_FUNC(spiritball);
ATCOMMAND_FUNC(party);
ATCOMMAND_FUNC(guild);
ATCOMMAND_FUNC(agitstart);
ATCOMMAND_FUNC(agitend);

static AtCommandInfo atcommand_info[] = {
	{ AtCommand_RuraP,               "@rura+",     0, atcommand_rurap },
	{ AtCommand_Rura,                "@rura",      0, atcommand_rura },
	{ AtCommand_Where,               "@where",     0, atcommand_where },
	{ AtCommand_JumpTo,              "@jumpto",    0, atcommand_jumpto },
	{ AtCommand_Jump,                "@jump",      0, atcommand_jump },
	{ AtCommand_Who,                 "@who",       0, atcommand_who },
	{ AtCommand_Save,                "@save",      0, atcommand_save },
	{ AtCommand_Load,                "@load",      0, atcommand_load },
	{ AtCommand_Speed,               "@speed",     0, atcommand_speed },
	{ AtCommand_Storage,             "@storage",   0, atcommand_storage },
	{ AtCommand_GuildStorage,        "@gstorage",  0, atcommand_guildstorage },
	{ AtCommand_Option,              "@option",    0, atcommand_option },
	{ AtCommand_Hide,                "@hide",      0, atcommand_hide },
	{ AtCommand_JobChange,           "@jobchange", 0, atcommand_jobchange },
	{ AtCommand_Die,                 "@die",       0, atcommand_die },
	{ AtCommand_Kill,                "@kill",      0, atcommand_kill },
	{ AtCommand_Alive,               "@alive",     0, atcommand_alive },
	{ AtCommand_Kami,                "@kami",      0, atcommand_kami },
	{ AtCommand_KamiB,               "@kamib",     0, atcommand_kami },
	{ AtCommand_Heal,                "@heal",      0, atcommand_heal },
	{ AtCommand_Item,                "@item",      0, atcommand_item },
	{ AtCommand_Item2,               "@item2",     0, atcommand_item2 },
	{ AtCommand_ItemReset,           "@itemreset", 0, atcommand_itemreset },
	{ AtCommand_ItemCheck,           "@itemcheck", 0, atcommand_itemcheck },
	{ AtCommand_BaseLevelUp,         "@lvup",      0, atcommand_baselevelup },
	{ AtCommand_JobLevelUp,          "@joblvup",   0, atcommand_joblevelup },
	{ AtCommand_H,                   "@h",         0, atcommand_help },
	{ AtCommand_Help,                "@help",      0, atcommand_help },
	{ AtCommand_GM,                  "@gm",        0, atcommand_gm },
	{ AtCommand_PvPOff,              "@pvpoff",    0, atcommand_pvpoff },
	{ AtCommand_PvPOn,               "@pvpon",     0, atcommand_pvpon },
	{ AtCommand_GvGOff,              "@gvgoff",    0, atcommand_gvgoff },
	{ AtCommand_GvGOn,               "@gvgon",     0, atcommand_gvgon },
	{ AtCommand_Model,               "@model",     0, atcommand_model },
	{ AtCommand_Go,                  "@go",        0, atcommand_go },
	{ AtCommand_Monster,             "@monster",   0, atcommand_monster },
	{ AtCommand_KillMonster,         "@killmonster", 0, atcommand_killmonster },
	{ AtCommand_KillMonster2,        "@killmonster2", 0,
		atcommand_killmonster2 },
	{ AtCommand_Refine,              "@refine", 0, atcommand_refine },
	{ AtCommand_Produce,             "@produce", 0, atcommand_produce },
	{ AtCommand_Memo,                "@memo", 0, atcommand_memo },
	{ AtCommand_GAT,                 "@gat", 0, atcommand_gat },
	{ AtCommand_Packet,              "@packet", 0, atcommand_packet },
	{ AtCommand_StatusPoint,         "@stpoint", 0, atcommand_statuspoint },
	{ AtCommand_SkillPoint,          "@skpoint", 0, atcommand_skillpoint },
	{ AtCommand_Zeny,                "@zeny", 0, atcommand_zeny },
	{ AtCommand_Param,               "@param", 0, atcommand_param },
	{ AtCommand_Strength,            "@str", 0, atcommand_param },
	{ AtCommand_Agility,             "@agi", 0, atcommand_param },
	{ AtCommand_Vitality,           "@vit", 0, atcommand_param },
	{ AtCommand_Intelligence,        "@int", 0, atcommand_param },
	{ AtCommand_Dexterity,           "@dex", 0, atcommand_param },
	{ AtCommand_Luck,                "@luk", 0, atcommand_param },
	{ AtCommand_GuildLevelUp,        "@guildlvup", 0, atcommand_guildlevelup },
	{ AtCommand_MakePet,             "@makepet", 0, atcommand_makepet },
	{ AtCommand_PetFriendly,         "@petfriendly", 0, atcommand_petfriendly },
	{ AtCommand_PetHungry,           "@pethungry", 0, atcommand_pethungry },
	{ AtCommand_PetRename,           "@petrename", 0, atcommand_petrename },
	{ AtCommand_Recall,              "@recall", 0, atcommand_recall },
	{ AtCommand_CharacterJob,        "@charjob", 0, atcommand_character_job },
	{ AtCommand_Revive,              "@revive", 0, atcommand_revive },
	{ AtCommand_CharacterStats,      "@charstats", 0,
		atcommand_character_stats },
	{ AtCommand_CharacterOption,     "@charoption", 0,
		atcommand_character_option },
	{ AtCommand_CharacterSave,       "@charsave", 0, atcommand_character_save },
	{ AtCommand_Night,               "@night", 0, atcommand_night },
	{ AtCommand_Day,                 "@day", 0, atcommand_day },
	{ AtCommand_Doom,                "@doom", 0, atcommand_doom },
	{ AtCommand_DoomMap,             "@doommap", 0, atcommand_doommap },
	{ AtCommand_Raise,               "@raise", 0, atcommand_raise },
	{ AtCommand_RaiseMap,            "@raisemap", 0, atcommand_raisemap },
	{ AtCommand_CharacterBaseLevel,  "@charbaselvl", 0,
		atcommand_character_baselevel },
	{ AtCommand_CharacterJobLevel,   "@charjlvl", 0,
		atcommand_character_joblevel },
	{ AtCommand_Kick,                "@kick", 0, atcommand_kick },
	{ AtCommand_KickAll,             "@kickall", 0, atcommand_kickall },
	{ AtCommand_AllSkill,            "@allskill", 0, atcommand_allskill },
	{ AtCommand_QuestSkill,          "@questskill", 0, atcommand_questskill },
	{ AtCommand_LostSkill,           "@lostskill", 0, atcommand_lostskill },
	{ AtCommand_SpiritBall,          "@spiritball", 0, atcommand_spiritball },
	{ AtCommand_Party,               "@party", 0, atcommand_party },
	{ AtCommand_Guild,               "@guild", 0, atcommand_guild },
	{ AtCommand_AgitStart,           "@agitstart", 0, atcommand_agitstart },
	{ AtCommand_AgitEnd,             "@agitend", 0, atcommand_agitend },
	// add here
	{ AtCommand_Broadcast,           "@broadcast", 0, NULL },
	{ AtCommand_LocalBroadcast,      "@local_broadcast", 0, NULL },
	{ AtCommand_Unknown,             NULL, 0, NULL }
};

int get_atcommand_level(const AtCommandType type)
{
	int i = 0;
	for (i = 0; atcommand_info[i].type != AtCommand_None; i++)
		if (atcommand_info[i].type == type)
			return atcommand_info[i].level;
	return 99;
}

AtCommandType
is_atcommand(const int fd, struct map_session_data* sd, const char* message)
{
	const char* str = message;
	int s_flag = 0;
	AtCommandInfo info;
	
	if (!message || !*message)
		return AtCommand_None;
	memset(&info, 0, sizeof info);
	str += strlen(sd->status.name);
	while (*str && (isspace(*str) || (s_flag == 0 && *str == ':'))) {
		if (*str == ':')
			s_flag = 1;
		str++;
	}
	if (!*str)
		return AtCommand_None;
	AtCommandType type = atcommand(pc_isGM(sd), str, &info);
	if (type != AtCommand_None) {
		char command[25];
		char output[100];
		const char* p = str;
		memset(command, '\0', sizeof command);
		while (*p && !isspace(*p))
			p++;
		if (p - str > sizeof command) // too long
			return AtCommand_Unknown;
		strncpy(command, str,
			(p - str > sizeof command) ?  sizeof command : p - str);
		if (isspace(*p))
			p++;
		if (type == AtCommand_Unknown) {
 			snprintf(output, sizeof output, "%s is Unknown Command.", command);
 			clif_displaymessage(fd, output);
		} else {
			if (info.proc(fd, sd, command, p) != 0) {
				// 堎忢廔椆
 				snprintf(output, sizeof output, "%s failed.", command);
 				clif_displaymessage(fd, output);
			}
		}
		return info.type;
	}
	return AtCommand_None;
}

AtCommandType
atcommand(
	const int level, const char* message, struct AtCommandInfo* info)
{
	const char* p = message;
	if (!info)
		return AtCommand_None;
	if (!p || !*p) {
		fprintf(stderr, "at command message is empty\n");
		return AtCommand_None;
	}
	if (!*p || *p != '@')
		return AtCommand_None;
	
	memset(info, 0, sizeof(AtCommandInfo));
	{
		char command[101];
		int i = 0;
		sscanf(p, "%100s", command);
		command[100] = '\0';
		
		while (atcommand_info[i].type != AtCommand_Unknown) {
			if (strcmpi(command, atcommand_info[i].command) == 0 &&
				level >= atcommand_info[i].level)
				break;
			i++;
		}
		if (atcommand_info[i].type == AtCommand_Unknown)
			return AtCommand_Unknown;
		memcpy(info, &atcommand_info[i], sizeof atcommand_info[i]);
	}
	
	return info->type;
}

//struct Atcommand_Config atcommand_config;

static int atkillmonster_sub(struct block_list *bl,va_list ap)
{
	int flag = va_arg(ap,int);
	if (flag)
		mob_damage(NULL,(struct mob_data *)bl,((struct mob_data *)bl)->hp,2);
	else
		mob_delete((struct mob_data *)bl);
	return 0;
}

/* Read Message Data */
int msg_config_read(const char *cfgName)
{
	int i,msg_number;
	char line[1024],w1[512],w2[1024];
	FILE *fp;

	fp=fopen(cfgName,"r");
	if (fp==NULL) {
		printf("file not found: %s\n",cfgName);
		return 1;
						}
	while(fgets(line,1020,fp)) {
		if (line[0] == '/' && line[1] == '/')
			continue;
		i=sscanf(line,"%d: %[^\r\n]",&msg_number,w2);
		if (i!=2) {
			if (sscanf(line,"%s: %[^\r\n]",w1,w2) !=2)
				continue;
			if (strcmpi(w1,"import") == 0) {
				msg_config_read(w2);
					}
			continue;
				}
		if (msg_number>=0&&msg_number<=200)
			strcpy(msg_table[msg_number],w2);
		//printf("%d:%s\n",msg_number,msg);
			}
	fclose(fp);
	return 0;
}

/*
static AtCommandInfo* getAtCommandInfoByType(const AtCommandType type)
{
	int i = 0;
	for (i = 0; atcommand_info[i].type != AtCommand_None; i++)
		if (atcommand_info[i].type == type)
			return &atcommand_info[i];
	return NULL;
}
*/

static AtCommandInfo*
get_atcommandinfo_byname(const char* name)
{
	int i = 0;
	for (i = 0; atcommand_info[i].type != AtCommand_Unknown; i++)
		if (strcmpi(atcommand_info[i].command + 1, name) == 0)
			return &atcommand_info[i];
	return NULL;
}

int atcommand_config_read(const char *cfgName)
{
	int i;
	char line[1024],w1[1024],w2[1024];
	
	if (battle_config.atc_gmonly > 0) {
		AtCommandInfo* p = NULL;
		FILE* fp = fopen(cfgName,"r");
		if (fp == NULL) {
			printf("file not found: %s\n",cfgName);
			return 1;
		}
		while (fgets(line, 1020, fp)) {
			if (line[0] == '/' && line[1] == '/')
				continue;
			i=sscanf(line,"%1020[^:]:%1020s",w1,w2);
			if (i!=2)
				continue;
			p = get_atcommandinfo_byname(w1);
			if (p != NULL)
				p->level = atoi(w2);
			
			if (strcmpi(w1, "import") == 0)
				atcommand_config_read(w2);
			}
		fclose(fp);
		}

	return 0;
}

// @ command 張棟娭悢孮

// @rura+
int
atcommand_rurap(
	const int fd, struct map_session_data* sd,
	const char* command, const char* message)
{
	char map[100];
	char character[100];
	int x = 0, y = 0;
	struct map_session_data *pl_sd = NULL;
	
	if (!message || !*message)
		return -1;
	memset(character, '\0', sizeof character);
	if (sscanf(message, "%99s %d %d %99[^\n]", map, &x, &y, character) < 4)
		return -1;
	pl_sd = map_nick2sd(character);
	if (pl_sd == NULL) {
		clif_displaymessage(fd, msg_table[3]);
		return -1;
			}
	if (pc_isGM(sd) > pc_isGM(pl_sd)) {
		if (x >= 0 && x < 400 && y >= 0 && y < 400) {
			if (pc_setpos(pl_sd, map, x, y, 3) == 0) {
				clif_displaymessage(pl_sd->fd, msg_table[0]);
			} else {
				clif_displaymessage(fd, msg_table[1]);
		}
		} else {
			clif_displaymessage(fd,msg_table[2]);
			}
		}
	
	return 0;
}

// @rura
int
atcommand_rura(
	const int fd, struct map_session_data* sd,
	const char* command, const char* message)
{
	char map[100];
	int x = 0, y = 0;
	
	if (!message || !*message)
		return -1;
	
	if (sscanf(message, "%99s %d %d", map, &x, &y) < 1)
		return -1;
			if (x >= 0 && x < 400 && y >= 0 && y < 400) {
		clif_displaymessage(fd,
			(pc_setpos((struct map_session_data*)sd, map, x, y, 3) == 0) ?
				msg_table[0] : msg_table[1]);
	} else {
		clif_displaymessage(fd, msg_table[2]);
			}
	
	return 0;
}

int
atcommand_where(
	const int fd, struct map_session_data* sd,
	const char* command, const char* message)
{
	char character[100];
	char output[200];
	
	if (!message || !*message)
		return -1;
	memset(character, '\0', sizeof character);
	sscanf(message, "%99[^\n]", character);
	struct map_session_data *pl_sd = map_nick2sd(character);
	if (pl_sd == NULL) {
		snprintf(output, sizeof output, "%s %d %d",
			sd->mapname, sd->bl.x, sd->bl.y);
		clif_displaymessage(fd, output);
		return -1;
	}
	snprintf(output, sizeof output, "%s %s %d %d",
		character, pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y);
	clif_displaymessage(fd, output);
	
	return 0;
}

int
atcommand_jumpto(
	const int fd, struct map_session_data* sd,
	const char* command, const char* message)
{
	char character[100];
	struct map_session_data *pl_sd = NULL;
	
	if (!message || !*message)
		return -1;
	
	memset(character, '\0', sizeof character);
	if (sscanf(message, "%99[^\n]", character) < 1)
		return -1;
	if ((pl_sd = map_nick2sd(character)) != NULL) {
		char output[200];
		pc_setpos((struct map_session_data*)sd,
			pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y, 3);
		snprintf(output, sizeof output, msg_table[4], character);
		clif_displaymessage(fd, output);
	} else {
		clif_displaymessage(fd, msg_table[3]);
		}
	
	return 0;
}

int
atcommand_jump(
	const int fd, struct map_session_data* sd,
	const char* command, const char* message)
{
	int x = 0, y = 0;
	
	if (sscanf(message, "%d %d", &x, &y) < 2)
		return -1;
	if (x >= 0 && x < 400 && y >= 0 && y < 400) {
		char output[200];
		pc_setpos((struct map_session_data*)sd, (char*)sd->mapname, x, y, 3);
		snprintf(output, sizeof output, msg_table[5], x, y);
		clif_displaymessage(fd, output);
	} else {
		clif_displaymessage(fd, msg_table[2]);
				}
	
	return 0;
}

int
atcommand_who(
	const int fd, struct map_session_data* sd,
	const char* command, const char* message)
{
	struct map_session_data *pl_sd = NULL;
	int i = 0;
	for (i = 0; i < fd_max; i++) {
		if (session[i] && (pl_sd = session[i]->session_data) &&
			pl_sd->state.auth) {
			clif_displaymessage(fd, pl_sd->status.name);
			}
		}
	return 0;
}

int
atcommand_save(
	const int fd, struct map_session_data* sd,
	const char* command, const char* message)
{
	pc_setsavepoint(sd, sd->mapname, sd->bl.x, sd->bl.y);
	if (sd->status.pet_id > 0 && sd->pd)
		intif_save_petdata(sd->status.account_id, &sd->pet);
			pc_makesavestatus(sd);
			chrif_save(sd);
			storage_storage_save(sd);
	clif_displaymessage(fd, msg_table[6]);
	
	return 0;
}

int

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区美女在线| 最新成人av在线| 舔着乳尖日韩一区| 欧美日韩一二区| 亚洲高清三级视频| 日韩视频中午一区| 极品美女销魂一区二区三区免费| 久久久久久久久久久黄色| 成人毛片老司机大片| 亚洲精品视频免费观看| 欧美日韩国产不卡| 国产麻豆成人传媒免费观看| 亚洲视频小说图片| 日韩一二三区视频| 国产精品一区二区在线看| 亚洲免费在线看| 欧美一区二区三区四区在线观看 | 国产日韩欧美a| 91香蕉视频黄| 久久电影网电视剧免费观看| 国产精品欧美一级免费| 欧美日韩视频专区在线播放| 国产永久精品大片wwwapp| 亚洲精品欧美在线| 精品久久久久一区二区国产| 一本一道久久a久久精品| 日本特黄久久久高潮| 国产精品久久久久久久久动漫| 欧美日韩国产成人在线91| 高清视频一区二区| 性做久久久久久久久| 欧美激情一区二区三区全黄| 欧美欧美午夜aⅴ在线观看| 国产高清无密码一区二区三区| 亚洲夂夂婷婷色拍ww47| 日本一区二区三区在线观看| 在线电影欧美成精品| 97久久精品人人澡人人爽| 久久99精品久久久久久动态图 | 青青草国产精品亚洲专区无| 国产精品免费久久| 欧美一区二区三区人| 91毛片在线观看| 国产成人精品亚洲午夜麻豆| 日精品一区二区三区| 亚洲婷婷在线视频| 国产三级三级三级精品8ⅰ区| 91福利在线导航| 成人精品视频网站| 国产美女在线精品| 蜜桃一区二区三区四区| 一个色在线综合| 亚洲欧洲日韩女同| 国产日韩精品一区二区三区| 日韩一区二区三区在线| 欧美三级午夜理伦三级中视频| 国产凹凸在线观看一区二区| 精品一二线国产| 日韩1区2区3区| 亚洲福利一二三区| 亚洲图片欧美视频| 亚洲区小说区图片区qvod| 国产精品拍天天在线| 国产色产综合产在线视频| 2欧美一区二区三区在线观看视频| 91精品国产入口| 91精品欧美福利在线观看| 制服丝袜亚洲色图| 91精品国产麻豆国产自产在线| 欧美日韩一区久久| 欧美剧情电影在线观看完整版免费励志电影| av在线不卡电影| 99视频超级精品| 一本久久精品一区二区| 色悠久久久久综合欧美99| 91传媒视频在线播放| 欧美怡红院视频| 欧美日韩国产精选| 91精品国产综合久久精品图片| 4438x亚洲最大成人网| 欧美一区午夜精品| 日韩免费高清电影| 久久这里只有精品首页| 亚洲国产精品ⅴa在线观看| 欧美激情中文不卡| 亚洲视频电影在线| 亚洲国产精品一区二区www在线| 亚洲一区二区中文在线| 亚洲高清不卡在线| 美女高潮久久久| 国产在线日韩欧美| 成人夜色视频网站在线观看| 成人动漫一区二区三区| 91黄色免费看| 91精品国产一区二区三区香蕉| 欧美一区二区三区在线观看| 精品国产乱码久久久久久蜜臀 | 国产高清亚洲一区| 91色porny在线视频| 欧美人伦禁忌dvd放荡欲情| 日韩美女主播在线视频一区二区三区| 精品国产乱码久久久久久夜甘婷婷 | 国产综合久久久久久鬼色 | 色偷偷成人一区二区三区91| 欧美视频在线观看一区二区| 欧美大片一区二区| 国产精品久久久久久久久免费丝袜 | 奇米777欧美一区二区| 国产很黄免费观看久久| 色婷婷久久久综合中文字幕 | 成人av网站免费观看| 欧美亚洲国产bt| 国产亚洲综合在线| 亚洲精品福利视频网站| 美美哒免费高清在线观看视频一区二区 | 国产成人欧美日韩在线电影| 91久久精品一区二区三| 欧美大度的电影原声| 亚洲人成在线播放网站岛国| 激情综合亚洲精品| 在线亚洲欧美专区二区| 久久久久久毛片| 天堂久久久久va久久久久| 成人99免费视频| 精品国产a毛片| 亚洲狠狠爱一区二区三区| 成人午夜av电影| 精品国产一二三| 亚洲高清中文字幕| proumb性欧美在线观看| 日韩欧美高清一区| 亚洲午夜精品在线| 99国产精品久久久久久久久久久| 日韩欧美一卡二卡| 亚洲一区二区欧美| 成人免费视频国产在线观看| 日韩视频在线你懂得| 亚洲国产一区二区三区| 国产不卡在线播放| 欧美sm极限捆绑bd| 免费成人结看片| 欧美日韩一区在线观看| 亚洲精品国产一区二区精华液| 国产精品77777| www久久精品| 奇米精品一区二区三区在线观看 | 亚洲二区在线观看| 91在线观看美女| 国产精品美女久久久久久久 | 欧美三级视频在线| 亚洲女同一区二区| 91视视频在线直接观看在线看网页在线看| 26uuu精品一区二区三区四区在线| 日本成人在线不卡视频| 欧美日韩黄视频| 樱花影视一区二区| 一本大道综合伊人精品热热| 国产精品大尺度| 成人黄色在线看| 中文字幕第一区二区| 成人黄色综合网站| 中文字幕在线一区| 成人免费高清在线| 日韩一区欧美一区| 日韩免费高清电影| 另类专区欧美蜜桃臀第一页| 日韩亚洲欧美在线观看| 精品一二线国产| 久久久九九九九| 不卡电影一区二区三区| 亚洲欧美中日韩| 欧美午夜精品一区二区蜜桃| 亚洲午夜在线电影| 在线综合亚洲欧美在线视频| 蜜臀av在线播放一区二区三区 | av电影天堂一区二区在线观看| 欧美韩国日本一区| 91麻豆精品一区二区三区| 亚洲精选免费视频| 欧美日本一道本| 裸体在线国模精品偷拍| 久久久精品欧美丰满| 成人一区二区三区视频在线观看 | 亚洲一线二线三线久久久| 欧美揉bbbbb揉bbbbb| 美女脱光内衣内裤视频久久影院| 欧美成人一区二区三区片免费| 国产中文一区二区三区| 国产精品系列在线| 精品视频在线视频| 麻豆91免费看| 中文字幕在线一区免费| 欧美日韩精品一区视频| 狠狠色丁香久久婷婷综| 亚洲欧洲www| 日韩一区二区在线播放| 丁香婷婷深情五月亚洲| 亚洲成人免费视| 久久久久久久久久看片| 在线影视一区二区三区|