• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Как убрать разницу в загрузке и сохранении домов?

Статус
В этой теме нельзя размещать новые ответы.

Alex_Jemison

Изучающий
Пользователь
Регистрация
13 Апр 2018
Сообщения
202
Лучшие ответы
0
Репутация
0
Частично сам написал систему домов но возникает проблема. Номер домов начинается с 0 а вместе с этим и проблема с сохранением (в принципе это решается в стоковые добавлением 1 к ид дома но здесь возникает уже проблема с обновлением иконок на карте).

PHP:
stock LoadHouse()
{
	new Cache:result = mysql_query(mysql, "SELECT * FROM `houses`");
	cache_get_row_count(OWNABLE_HOUSE);
	for(new i; i < OWNABLE_HOUSE; i++)
	{
		cache_get_value_name_int(i, "ID", HouseInfo[i][hID]);
		cache_get_value_name(i, "Owner", HouseInfo[i][hOwner], 24);
		cache_get_value_name_int(i, "Klass", HouseInfo[i][hKlass]);
		cache_get_value_name_float(i, "EnterX", HouseInfo[i][hEnterX]);
		cache_get_value_name_float(i, "EnterY", HouseInfo[i][hEnterY]);
		cache_get_value_name_float(i, "EnterZ", HouseInfo[i][hEnterZ]);
		cache_get_value_name_float(i, "ExitX", HouseInfo[i][hExitX]);
		cache_get_value_name_float(i, "ExitY", HouseInfo[i][hExitY]);
		cache_get_value_name_float(i, "ExitZ", HouseInfo[i][hExitZ]);
		cache_get_value_name_int(i, "Interior", HouseInfo[i][hInt]);
		cache_get_value_name_int(i, "Doors", HouseInfo[i][hLock]);
		cache_get_value_name_int(i, "Cost", HouseInfo[i][hCost]);
		cache_get_value_name_int(i, "Safe", HouseInfo[i][hSafe]);
		cache_get_value_name_int(i, "Cupboard", HouseInfo[i][hCupboard]);
		cache_get_value_name_int(i, "Ammo", HouseInfo[i][hAmmo]);
		cache_get_value_name_int(i, "Health", HouseInfo[i][hHealth]);
		cache_get_value_name_int(i, "Money", HouseInfo[i][hMoney]);
		cache_get_value_name_int(i, "Narko", HouseInfo[i][hNarko]);
		cache_get_value_name_int(i, "Armour", HouseInfo[i][hArmour]);
		cache_get_value_name_int(i, "Hanger_1", HouseInfo[i][hHanger_1]);
		cache_get_value_name_int(i, "Hanger_2", HouseInfo[i][hHanger_2]);
		cache_get_value_name_int(i, "Hanger_3", HouseInfo[i][hHanger_3]);
		cache_get_value_name_int(i, "Hanger_4", HouseInfo[i][hHanger_4]);
		cache_get_value_name_int(i, "Hanger_5", HouseInfo[i][hHanger_5]);
		cache_get_value_name_int(i, "Bar", HouseInfo[i][hBar]);
		cache_get_value_name_int(i, "BarProd", HouseInfo[i][hBarProd]);
		cache_get_value_name_int(i, "Nalog", HouseInfo[i][hNalog]);
		cache_get_value_name_int(i, "Deagle", HouseInfo[i][hGun][0]);
		cache_get_value_name_int(i, "ShotGun", HouseInfo[i][hGun][1]);
		cache_get_value_name_int(i, "MP5", HouseInfo[i][hGun][2]);
		cache_get_value_name_int(i, "M4A1", HouseInfo[i][hGun][3]);
		cache_get_value_name_int(i, "AK47", HouseInfo[i][hGun][4]);
		cache_get_value_name_int(i, "Rooms", HouseInfo[i][hRooms]);
		cache_get_value_name_int(i, "Prod", HouseInfo[i][hProd]);
		cache_get_value_name(i, "Player_1", HousePlayers[i][0], 24);
		cache_get_value_name(i, "Player_2", HousePlayers[i][1], 24);
		cache_get_value_name(i, "Player_3", HousePlayers[i][2], 24);
		cache_get_value_name(i, "Player_4", HousePlayers[i][3], 24);
		cache_get_value_name(i, "Player_5", HousePlayers[i][4], 24);

		new PicupIDHouse, PicupIDBuyHouse;
		if(GetString(HouseInfo[i][hOwner], "The State")) PicupIDHouse = 31, PicupIDBuyHouse = 1273;
		else PicupIDHouse = 32, PicupIDBuyHouse = 19523;
		HouseMarker[i] = CreateDynamicMapIcon(HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], PicupIDHouse, 0, -1, -1, -1, 150.0);
		HousePickup[i] = CreatePickup(PicupIDBuyHouse, 23, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], 0);
		HouseText3D[i] = Create3DTextLabel(!"Дом", -1, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], 7, 0, 1);
		HouseArea[i] = CreateDynamicSphere(HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], 2.5, 0, 0);
		UpdateHouse(i);
	}
	cache_delete(result);
	return true;
}
PHP:
stock SaveHouse(HID)
{
	new query[1048];
	query = "UPDATE `houses` SET";
	acc_str_strcat(query, sizeof(query), "Owner", HouseInfo[HID][hOwner]);
	acc_int_strcat(query, sizeof(query), "Klass", HouseInfo[HID][hKlass]);
	acc_float_strcat(query, sizeof(query), "EnterX", HouseInfo[HID][hEnterX]);
	acc_float_strcat(query, sizeof(query), "EnterY", HouseInfo[HID][hEnterY]);
	acc_float_strcat(query, sizeof(query), "EnterZ", HouseInfo[HID][hEnterZ]);
	acc_float_strcat(query, sizeof(query), "ExitX", HouseInfo[HID][hExitX]);
	acc_float_strcat(query, sizeof(query), "ExitY", HouseInfo[HID][hExitY]);
	acc_float_strcat(query, sizeof(query), "ExitZ", HouseInfo[HID][hExitZ]);
	acc_int_strcat(query, sizeof(query), "Interior", HouseInfo[HID][hInt]);
	acc_int_strcat(query, sizeof(query), "Doors", HouseInfo[HID][hLock]);
	acc_int_strcat(query, sizeof(query), "Cost", HouseInfo[HID][hCost]);
	acc_int_strcat(query, sizeof(query), "Safe", HouseInfo[HID][hSafe]);
	acc_int_strcat(query, sizeof(query), "Cupboard", HouseInfo[HID][hCupboard]);
	acc_int_strcat(query, sizeof(query), "Ammo", HouseInfo[HID][hAmmo]);
	acc_int_strcat(query, sizeof(query), "Health", HouseInfo[HID][hHealth]);
	acc_int_strcat(query, sizeof(query), "Money", HouseInfo[HID][hMoney]);
	acc_int_strcat(query, sizeof(query), "Armour", HouseInfo[HID][hArmour]);
	acc_int_strcat(query, sizeof(query), "Hanger_1", HouseInfo[HID][hHanger_1]);
	acc_int_strcat(query, sizeof(query), "Hanger_2", HouseInfo[HID][hHanger_2]);
	acc_int_strcat(query, sizeof(query), "Hanger_3", HouseInfo[HID][hHanger_3]);
	acc_int_strcat(query, sizeof(query), "Hanger_4", HouseInfo[HID][hHanger_4]);
	acc_int_strcat(query, sizeof(query), "Hanger_5", HouseInfo[HID][hHanger_5]);
	acc_int_strcat(query, sizeof(query), "Bar", HouseInfo[HID][hBar]);
	acc_int_strcat(query, sizeof(query), "BarProd", HouseInfo[HID][hBarProd]);
	acc_int_strcat(query, sizeof(query), "Nalog", HouseInfo[HID][hNalog]);
	acc_int_strcat(query, sizeof(query), "Key", HouseInfo[HID][hKey]);
	acc_int_strcat(query, sizeof(query), "Deagle", HouseInfo[HID][hGun][0]);
	acc_int_strcat(query, sizeof(query), "ShotGun", HouseInfo[HID][hGun][1]);
	acc_int_strcat(query, sizeof(query), "MP5", HouseInfo[HID][hGun][2]);
	acc_int_strcat(query, sizeof(query), "M4A1", HouseInfo[HID][hGun][3]);
	acc_int_strcat(query, sizeof(query), "AK47", HouseInfo[HID][hGun][4]);
	acc_int_strcat(query, sizeof(query), "Rooms", HouseInfo[HID][hRooms]);
	acc_int_strcat(query, sizeof(query), "Prod", HouseInfo[HID][hProd]);
	acc_str_strcat(query, sizeof(query), "Player_1", HousePlayers[HID][0]);
	acc_str_strcat(query, sizeof(query), "Player_2", HousePlayers[HID][1]);
	acc_str_strcat(query, sizeof(query), "Player_3", HousePlayers[HID][2]);
	acc_str_strcat(query, sizeof(query), "Player_4", HousePlayers[HID][3]);
	acc_str_strcat(query, sizeof(query), "Player_5", HousePlayers[HID][4]);
	strdel(query, strlen(query)-1, strlen(query));
	format(query, sizeof(query), "%s WHERE `ID` = '%i'", query, HID);
	mysql_tquery(mysql, query);
}
PHP:
stock UpdateHouse(house)
{
	if(GetString(HouseInfo[house][hOwner], "The State"))
	{
		static const house_string[] =
		"\
			{FFFFFF}Дом №%d продается\n\n\
			{FFFFFF}Стоимость: {FFD700}%d$\n\
			{FFFFFF}Класс: {FFD700}%s{808080}\n\n\
			(( Чтобы купить используйте клавишу 'Y'))\n\
			(( Чтобы осмотреть дом используйте клавишу 'ALT'))\
		";
		new string[sizeof(house_string) + 3 + 5 + 13];
		format(string, sizeof(string), house_string, house, HouseInfo[house][hCost], HouseClass[HouseInfo[house][hKlass]]);
		Update3DTextLabelText(HouseText3D[house], -1, string);
	}
	else
	{
		static const house_string[] =
		"\
			{FFFFFF}Дом №%d\n\n\
			{FFFFFF}Владелец: %s\n\
			{FFFFFF}Стоимость:  %d$\n\
			{FFFFFF}Класс:  %s\n\
			{FFFFFF}Статус:  %s{808080}\n\
			(( Чтобы войти в дом используйте клавишу 'ALT' ))\
		";
		new string[sizeof(house_string) + 3 + 24 + 5 + 13 + 10];
		format(string, sizeof(string), house_string, house, HouseInfo[house][hOwner], HouseInfo[house][hCost], HouseClass[HouseInfo[house][hKlass]], !HouseInfo[house][hLock] ? ("{008000}Открыт") : ("{FF0000}Закрыт"));
		Update3DTextLabelText(HouseText3D[house], -1, string);
	}
}
PHP:
case 33:
		{
			if(response)
			{
				new house = InfoHouse[playerid];
				if(PlayerInfo[playerid][pMoney] >= HouseInfo[house][hCost])
				{
					PlayerInfo[playerid][pHouse] = ExitHouse[playerid] = house;
					PlayerInfo[playerid][pSpawned] = 1;
					InfoHouse[playerid] = -1;
					SetString(HouseInfo[house][hOwner], GetName(playerid));
					SetPlayerPos(playerid, HouseInfo[house][hExitX], HouseInfo[house][hExitY], HouseInfo[house][hExitZ]);
					SetPlayerInterior(playerid, HouseInfo[house][hInt]);
					SetPlayerVirtualWorld(playerid, (house+500));
					SetCameraBehindPlayer(playerid);
					PlayerInfo[playerid][pMoney] -= HouseInfo[house][hCost];
					SaveHouse(house);
					UpdateHouse(house);
					SendClientMessage(playerid, COLOR_GOLD, ">> {FFFFFF}Поздравляем с покупкой дома !");
					SaveAccount(playerid);
					DestroyDynamicMapIcon(HouseMarker[house]);
					DestroyPickup(HousePickup[house]);
					HousePickup[house] = CreatePickup(19523, 23, HouseInfo[house][hEnterX], HouseInfo[house][hEnterY], HouseInfo[house][hEnterZ], 0);
					HouseMarker[house] = CreateDynamicMapIcon(HouseInfo[house][hEnterX], HouseInfo[house][hEnterY], HouseInfo[house][hEnterZ], 31, 0, -1, -1, -1, 150.0);
				}
			}
		}
PHP:
CMD:addhouse(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] < 8) return 1;
	if(ALogged[playerid] !=1) return SendClientMessage(playerid, COLOR_GREY, TEXT_ALOGIN);
	if(sscanf(params, "i", params[0]))
	{
		SendClientMessage(playerid, COLOR_RED, !"Используйте: /addhouse [CLASS]");
		SendClientMessage(playerid, COLOR_RED, !"1: Бюджет | 2: Средний | 3: Высокий| 4: Высший| 5: Элитный | 6: Котедж");
		return 1;
	}
	if(params[0] < 1 || params[0] > 6) return SendClientMessage(playerid, COLOR_RED, !"1: Бюджет | 2: Средний | 3: Высокий| 4: Высший| 5: Элитный | 6: Котедж");
	if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, !">> {FFFFFF}Покиньте транспортное средство");
	new ID  = OWNABLE_HOUSE;
	GetPlayerPos(playerid, HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ]);
	switch(params[0])
	{
	    case 1: HouseInfo[ID][hExitX] = 223.1312, HouseInfo[ID][hExitY] = 1287.0800, HouseInfo[ID][hExitZ] = 1082.1406, HouseInfo[ID][hInt] = 1, HouseInfo[ID][hCost] = 37500, HouseInfo[ID][hRooms] = 1;
	    case 2: HouseInfo[ID][hExitX] = 226.3777, HouseInfo[ID][hExitY] = 1240.0028, HouseInfo[ID][hExitZ] = 1082.1406, HouseInfo[ID][hInt] = 2, HouseInfo[ID][hCost] = 67500, HouseInfo[ID][hRooms] = 2;
	    case 3: HouseInfo[ID][hExitX] = 2270.4119, HouseInfo[ID][hExitY] = -1210.5042, HouseInfo[ID][hExitZ] = 1047.5625, HouseInfo[ID][hInt] = 10, HouseInfo[ID][hCost] = 115000, HouseInfo[ID][hRooms] = 2;
	    case 4: HouseInfo[ID][hExitX] = 2324.3909, HouseInfo[ID][hExitY] = -1149.5435, HouseInfo[ID][hExitZ] = 1050.7101, HouseInfo[ID][hInt] = 12, HouseInfo[ID][hCost] = 180000, HouseInfo[ID][hRooms] = 3;
	    case 5: HouseInfo[ID][hExitX] = 225.6873, HouseInfo[ID][hExitY] = 1021.4462, HouseInfo[ID][hExitZ] = 1084.0177, HouseInfo[ID][hInt] = 7, HouseInfo[ID][hCost] = 250000, HouseInfo[ID][hRooms] = 5;
	    case 6: HouseInfo[ID][hExitX] = 1298.8541, HouseInfo[ID][hExitY] = -797.0110, HouseInfo[ID][hExitZ] = 1084.0078, HouseInfo[ID][hInt] = 5, HouseInfo[ID][hCost] = 612500, HouseInfo[ID][hRooms] = 6;
	}
	SetString(HouseInfo[ID][hOwner], "The State");
	HouseInfo[ID][hKlass] = params[0];
	HouseInfo[ID][hLock] = 0;
	static const mysql_str[] = "INSERT INTO `houses` (`ID`, `Owner`, `Klass`, `EnterX`, `EnterY`, `EnterZ`, `ExitX`, `ExitY`, `ExitZ`, `Interior`, `Cost`, `Rooms`) VALUES ('%d', 'The State', '%d', '%.2f', '%.2f', '%.2f', '%.2f', '%.2f', '%.2f', '%d', '%d', '%d')",
	ftm_str[] = ">> {FFFFFF}Дом №%d успешно создан";
	new string[sizeof(mysql_str)+ 4 + 24 + (2 * 3) + (10 * 6) + 9];
	format(string, sizeof(string), mysql_str, ID, params[0], HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], HouseInfo[ID][hExitX], HouseInfo[ID][hExitY], HouseInfo[ID][hExitZ], HouseInfo[ID][hInt], HouseInfo[ID][hCost], HouseInfo[ID][hRooms]);
	mysql_tquery(mysql, string);
	HouseMarker[ID] = CreateDynamicMapIcon(HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 31, 0, -1, -1, -1, 150.0);
	HousePickup[ID] = CreatePickup(1273, 23, HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 0);
	HouseText3D[ID] = Create3DTextLabel(!"_", -1, HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 7, 0, 1);
	HouseArea[ID] = CreateDynamicSphere(HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 2.5, 0, 0);
	UpdateHouse(ID);
	format(string, sizeof(string), ftm_str, ID);
	SendClientMessage(playerid, COLOR_GOLD, string);
	OWNABLE_HOUSE++;
	return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу