Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "YSI\y_hooks"
- // Система домов
- #define MAX_HOUSE (100) // Кол-во домов на сервере
- #define INVALID_HOUSE_ID (-1) // ID дома по умолчанию
- #define INVALID_OWNER_ID (-1) // ID владельца по умолчанию
- #define INVALID_OWNER_NAME "Отсутствует" // Имя владельца по умолчанию
- #define MIN_HOUSE_PRICE (1) // Минимальная цена дома
- #define MAX_HOUSE_PRICE (10000000) // Максимальная цена дома
- #define MAX_HOUSE_CLASS (6) // Максимальное кол-во классов домов
- #define MAX_HOUSE_CLASS_TITLE (10) // Максимальное название классов домов
- #define SELL_HOUSE_PERCENT (50) // Проценты которые возвращаются за продажу дома
- #define TABLE_HOUSE "house" // Таблица с домами (MySQL)
- #define PRICE_HOUSE_RESET_VEHICLE_COORD (50) // Цена за подгон автомобиля к дому
- #define HOUSE_VALUE_DAY_LAST_LOGIN (5) // Количество дней, за которое слетит дом (с последней авторизации)
- #define DEFAULT_HOUSE_VEHICLE (471) // Стандартный автомобиль у дома (номер модели)
- #define DEFAULT_HOUSE_VEHICLE_COLOR_1 (0) // Стандартный цвет автомобилья (первый)
- #define DEFAULT_HOUSE_VEHICLE_COLOR_2 (1) // Стандартный цвет автомобилья (второй)
- #define HOUSE_UPDATE_CUPBOARD (1) // Номер улучшения, с корого будет доступен шкафчик >> HouseUpdate
- // Улучшения для дома
- #define MAX_HOUSE_UPDATE (1) // Количество улучшений для дома
- #define MAX_HOUSE_UPDATE_TITLE (24) // Максимальное название улучшения
- #define MAX_HOUSE_UPDATE_DESCRIPTION (128) // Максимальная название описания улучшения
- // Пикапы
- #define INVALID_PICKUP_ID (-1) // ID пикапа по умолчанию
- // MapIcon
- #define INVALID_MAPICON_ID (-1) // ID MapIcon по умолчанию
- // Массивы
- #define INVALID_ARRAY_ID (-1) // ID ячейки в массиве по умолчанию
- // Чекпоинты
- #define INVALID_CP_ID (-1) // ID чекпоинта по умолчанию
- // 3D текста
- #define MAX_DRAWN_DISTANCE (18.00) // Максимальная зона видимости 3D текста
- enum
- house_info__ {
- H_ID, // ID дома
- H_OwnerID, // ID владельца
- H_OwnerName[MAX_PLAYER_NAME], // Имя владельца
- Float: H_EnterX, // Координата пикапа входа (X)
- Float: H_EnterY, // Координата пикапа входа (Y)
- Float: H_EnterZ, // Координата пикапа входа (Z)
- H_EnterPickupID, // ID пикапа под вход
- H_EnterButtonID, // ID кнопки под вход
- Float: H_ExitX, // Координата телепорта при выходе из дома (X)
- Float: H_ExitY, // Координата телепорта при выходе из дома (Y)
- Float: H_ExitZ, // Координата телепорта при выходе из дома (Z)
- Float: H_ExitAngle, // Угол поворота при выходе из дома
- H_ExitPickup, // ID пикапа под выход
- H_ExitButtonID, // ID пикапа под выход
- Float: H_VehicleX, // Координаты машины (X)
- Float: H_VehicleY, // Координаты машины (Y)
- Float: H_VehicleZ, // Координаты машины (Z)
- Float: H_VehicleAngle, // Угол поворота машины
- H_VehicleModel, // Номер модели автомобиля у дома
- H_VehicleColor_1, // Номер цвета автомобиля (первый)
- H_VehicleColor_2, // Номер цвета автомобиля (второй)
- H_VehicleID, // ID машины
- H_VehicleMapIcon, // ID мап-иконки автомобиля (поиск автомобиля)
- Float: H_DefaultVehicleX, // Координаты машины по умолчанию (X)
- Float: H_DefaultVehicleY, // Координаты машины по умолчанию (X)
- Float: H_DefaultVehicleZ, // Координаты машины по умолчанию (X)
- Float: H_DefaultVehicleAngle, // Угол поворота машины по умолчанию
- H_Price, // Цена дома
- H_Lock, // Состояние дверей (0 - закрыты | 1 - открыты)
- H_Class, // Номер класса дома (>> HouseClass)
- H_Update, // Уровень улучшений дома (>> HouseUpdate)
- H_MapIcon, // ID мап-иконки на миникарте
- H_CupBoardCP, // ID чекпоинта под шкаф
- Text3D: H_CupBoardLabel, // ID 3D текста под шкаф
- H_CupBoardButtonID // ID кнопки под шкаф
- };
- static const
- NULL_HouseInfo[house_info__] = {
- INVALID_HOUSE_ID, // H_ID
- INVALID_OWNER_ID, // H_OwnerID
- INVALID_OWNER_NAME, // H_OwnerName
- 0.00, // H_EnterX
- 0.00, // H_EnterY
- 0.00, // H_EnterZ
- INVALID_PICKUP_ID, // H_EnterPickupID
- INVALID_BUTTON_ID, // H_EnterButtonID
- 0.00, // H_ExitX
- 0.00, // H_ExitY
- 0.00, // H_ExitZ
- 0.00, // H_ExitAngle
- INVALID_PICKUP_ID, // H_EnterPickupID
- INVALID_BUTTON_ID, // H_EnterButtonID
- 0.00, // H_VehicleX
- 0.00, // H_VehicleY
- 0.00, // H_VehicleZ
- 0.00, // H_VehicleAngle
- DEFAULT_HOUSE_VEHICLE, // H_VehicleModel
- DEFAULT_HOUSE_VEHICLE_COLOR_1, // H_VehicleColor_1
- DEFAULT_HOUSE_VEHICLE_COLOR_2, // H_VehicleColor_2
- INVALID_VEHICLE_ID, // H_VehicleID
- INVALID_MAPICON_ID, // H_VehicleMapIcon
- 0.00, // H_DefaultVehicleX
- 0.00, // H_DefaultVehicleY
- 0.00, // H_DefaultVehicleZ
- 0.00, // H_DefaultVehicleAngle
- MAX_HOUSE_PRICE, // H_Price
- 1, // H_Lock
- 1, // H_Class
- 1, // H_Update
- INVALID_MAPICON_ID, // H_MapIcon
- INVALID_CP_ID, // H_CupBoardCP
- Text3D: INVALID_3DTEXT_ID, // H_CupBoardLabel
- INVALID_BUTTON_ID // H_CupBoardButtonID
- };
- new HouseInfo[MAX_HOUSE][house_info__];
- new
- Iterator:House<MAX_HOUSE>, // Итератор домов
- Iterator:HouseButtonEnter<MAX_HOUSE>, // Итератор пикапов входа в дома
- Iterator:HouseButtonExit<MAX_HOUSE>, // Итератор пикапов выхода из дома
- Iterator:HouseVehicle<MAX_HOUSE>; // Итератор домашних автомобилей
- enum
- player_house_info__ {
- H_ID, // ID дома у игрока
- H_ArrayID // Номер ячейки в массиве (>> HouseInfo)
- };
- new PlayerHouseInfo[MAX_PLAYERS][player_house_info__];
- static const
- NULL_PlayerHouseInfo[player_house_info__] = {
- INVALID_HOUSE_ID, // H_ID
- INVALID_ARRAY_ID // H_ArrayID
- };
- enum
- house_class__ {
- HC_Title[MAX_HOUSE_CLASS_TITLE], // Название класса
- Float: HC_PickupX, // Координата пикапа выхода (X)
- Float: HC_PickupY, // Координата пикапа выхода (Y)
- Float: HC_PickupZ, // Координата пикапа выхода (Z)
- Float: HC_EnterX, // Координата телепорта при входе в дом (X)
- Float: HC_EnterY, // Координата телепорта при входе в дом (X)
- Float: HC_EnterZ, // Координата телепорта при входе в дом (X)
- Float: HC_EnterAngle, // Угол поворота при входе в дом
- HC_Inter, // ID Интерьера
- Float: HC_DefaultCupBoardX, // Координата шкафчика по умолчанию (X)
- Float: HC_DefaultCupBoardY, // Координата шкафчика по умолчанию (Y)
- Float: HC_DefaultCupBoardZ // Координата шкафчика по умолчанию (Z)
- };
- enum
- house_update__ {
- HU_Title[MAX_HOUSE_UPDATE_TITLE], // Название улучшения
- HU_Description[MAX_HOUSE_UPDATE_DESCRIPTION], // Описание улучшения
- HU_Price // Цена улучшения
- };
- static const
- HouseClass[MAX_HOUSE_CLASS][house_class__] = {
- {"Эконом",
- 243.7177, 304.9287, 999.1484, 244.7371, 304.9725, 999.1484, 270.000, 1,
- 248.8181, 303.8339, 999.1484
- },
- {"Доступный",
- 2259.3816, -1135.8602, 1050.6403, 2260.3860, -1135.7137, 1050.6328, 270.0000, 10,
- 2260.3894, -1139.0548, 1050.6328
- },
- {"Средний",
- 226.7883, 1239.9825, 1082.1406, 225.7504, 1239.9742, 1082.1406, 90.000, 2,
- 223.1192, 1249.3690, 1082.1406
- },
- {"Элитный",
- 318.5808, 1114.4803, 1083.8828, 318.6584, 1115.9277, 1083.8828, 360.000, 5,
- 308.2591, 1120.4374, 1083.8828
- },
- {"Премиум",
- 491.1681, 1398.5001, 1080.2578, 491.1647, 1399.6277, 1080.2645, 0.000, 2,
- 479.2784, 1411.2496, 1080.2714
- },
- {"Люкс",
- 2324.4434, -1149.5470, 1050.7101, 2324.2727, -1147.9423, 1050.7101, 0.00, 12,
- 2311.1663, -1135.9784, 1054.3047
- }
- },
- HouseUpdate[MAX_HOUSE_UPDATE][house_update__] = {
- {"Сейф", ""color_green"Описание сейфа??? Чтооооо, как это работаеееет!!!!"color_white"", 5000}
- };
- /**
- * [House_OnGameModeInit слет и загрузка домов; использовать в OnGameModeInit]
- */
- House_OnGameModeInit() {
- for(new i = 0; i < MAX_HOUSE; i++) {
- /*
- Сброк массива HouseInfo
- на дефолтные значения
- */
- HouseInfo[i] = NULL_HouseInfo;
- }
- for(new i = 0; i < MAX_PLAYERS; i++) {
- /*
- Сброс массива PlayerHouseInfo
- на дефолтные значения
- */
- PlayerHouseInfo[i] = NULL_PlayerHouseInfo;
- }
- /*
- Запрос на слет домов, после его полного выполнения,
- будет вызвана автоматически загрузка домов
- */
- static const
- fmt_str_0[] =
- "SELECT \
- H.ID, \
- H.Price, \
- H.OwnerName \
- FROM \
- house H \
- LEFT OUTER JOIN \
- users U \
- ON \
- U.pName = H.OwnerName \
- WHERE \
- U.LastDate < CURRENT_DATE() - %i";
- goto skip_array_init_fmt_str_0;
- new string_fmt_str_0[sizeof(fmt_str_0)
- + (- 2 + 3) // кол-во дней
- ];
- skip_array_init_fmt_str_0:
- mysql_format(1, string_fmt_str_0, sizeof(string_fmt_str_0), fmt_str_0, HOUSE_VALUE_DAY_LAST_LOGIN);
- mysql_pquery(1, string_fmt_str_0, "@_AutoSaleHouse");
- return 1;
- }
- @_AutoSaleHouse();
- @_AutoSaleHouse() {
- new
- rows = cache_num_rows(),
- sale_time = GetTickCount();
- if(rows == 0) {
- print("(@_AutoSaleHouse) дома для слета отсутствуют");
- } else {
- new
- id,
- price,
- ownername[MAX_PLAYER_NAME];
- for(new i = 0; i < rows; i++) {
- id = cache_get_field_content_int(i, !"ID");
- price = cache_get_field_content_int(i, !"Price");
- cache_get_field_content(i, !"OwnerName", ownername);
- static const
- fmt_str_0[] =
- "UPDATE `house` SET `OwnerName`= NULL, `VehicleX` = 0.00, `VehicleY` = 0.00, `VehicleZ` = 0.00, `VehicleAngle` = 0.00, `VehicleModel` = %i, `VehicleColor_1` = %i, `VehicleColor_2` = %i, `Update` = 0, `Lock` = 0 WHERE ID = %i LIMIT 1",
- fmt_str_1[] =
- "UPDATE users SET pMoney = %i + (SELECT pMoney FROM (SELECT pMoney FROM users WHERE pName = '%e') AS t2) WHERE pName = '%e' LIMIT 1";
- const
- string_size_fmt_str_0 = sizeof(fmt_str_0)
- + (- 2 + 3) // ID модели транспорта
- + (- 2 + 3) // ID первого цвета автомобиля
- + (- 2 + 3) // ID второго цвета автомобиля
- + (- 2 + 5), // ID дома
- string_size_fmt_str_1 = sizeof(fmt_str_1)
- + (- 2 + 11) // Сумма возврата
- + (- 2 + MAX_PLAYER_NAME) // Ник игрока
- + (- 2 + MAX_PLAYER_NAME); // Ник игрока
- #if string_size_fmt_str_0 > string_size_fmt_str_1
- #define SIZE string_size_fmt_str_0
- #else
- #define SIZE string_size_fmt_str_1
- #endif
- goto skip_array_init_fmt_str_0;
- new string[SIZE];
- skip_array_init_fmt_str_0:
- #undef SIZE
- mysql_format(1,
- string, sizeof(string),
- fmt_str_0,
- DEFAULT_HOUSE_VEHICLE,
- DEFAULT_HOUSE_VEHICLE_COLOR_1,
- DEFAULT_HOUSE_VEHICLE_COLOR_2,
- id
- );
- mysql_pquery(1, string);
- new return_price = (price / 100) * SELL_HOUSE_PERCENT;
- mysql_format(1,
- string, sizeof(string),
- fmt_str_1,
- return_price,
- ownername,
- ownername
- );
- mysql_pquery(1, string);
- printf("(@_AutoSaleHouse) => Дом № %i автоматически продан государству (Бывший владелец %s; Возвращенная сумм %i$)", id, ownername, return_price);
- }
- printf("(@_AutoSaleHouse) => Продано %i домов, за %i мс.", rows, GetTickCount() - sale_time);
- }
- /*
- Запрос на загруку домов
- (лучше перечислять все поля, заместо
- SELECT * FROM)
- */
- static const
- fmt_str_2[] =
- "SELECT \
- H.ID, \
- IF(ISNULL(H.OwnerName), \"%e\", H.OwnerName) AS OwnerName, \
- H.PickupX, \
- H.PickupY, \
- H.PickupZ, \
- H.ExitX, \
- H.ExitY, \
- H.ExitZ, \
- H.ExitAngle, \
- H.VehicleModel, \
- H.VehicleColor_1, \
- H.VehicleColor_2, \
- H.VehicleX, \
- H.VehicleY, \
- H.VehicleZ, \
- H.VehicleAngle, \
- H.DefaultVehicleX, \
- H.DefaultVehicleY, \
- H.DefaultVehicleZ, \
- H.DefaultVehicleAngle, \
- H.Class, \
- H.Price, \
- H.Update, \
- H.Lock, \
- IF(ISNULL(U.pID), %i, U.pID) as OwnerID \
- FROM \
- "TABLE_HOUSE" H \
- LEFT OUTER JOIN \
- users U \
- ON U.pName = H.OwnerName";
- goto skip_array_init_fmt_str_2;
- new string_fmt_str_2[sizeof(fmt_str_2)
- + (- 2 + MAX_PLAYER_NAME) // Ник владельца
- + (- 2 + 2) // ID дома по умолчанию
- ];
- skip_array_init_fmt_str_2:
- mysql_format(1,
- string_fmt_str_2, sizeof(string_fmt_str_2),
- fmt_str_2,
- INVALID_OWNER_NAME,
- INVALID_OWNER_ID
- );
- mysql_pquery(1, string_fmt_str_2, !"@_LoadHouse");
- }
- /**
- * [@_LoadHouse загрузка домов (кэш mysql)]
- */
- @_LoadHouse();
- @_LoadHouse() {
- new
- rows = cache_num_rows(),
- load_time = GetTickCount();
- if(rows == 0) {
- return print("(@_LoadHouse) => В базе данных отсутствуют дома для загрузки");
- } else {
- if(rows > MAX_HOUSE) {
- print("(@_LoadHouse) => Кол-во домов в базе данных превышает размер массива");
- printf("(@_LoadHouse) => rows = %i MAX_HOUSE = %i", rows, MAX_HOUSE);
- rows = MAX_HOUSE; // Перебиваем количество значений из базы данных
- }
- for(new i = 0; i < rows; i++) {
- HouseInfo[i][H_ID] = cache_get_field_content_int(i, !"ID");
- cache_get_field_content(i, !"OwnerName", HouseInfo[i][H_OwnerName]);
- HouseInfo[i][H_OwnerID] = cache_get_field_content_int(i, !"OwnerID");
- HouseInfo[i][H_EnterX] = cache_get_field_content_float(i, !"PickupX");
- HouseInfo[i][H_EnterY] = cache_get_field_content_float(i, !"PickupY");
- HouseInfo[i][H_EnterZ] = cache_get_field_content_float(i, !"PickupZ");
- HouseInfo[i][H_ExitX] = cache_get_field_content_float(i, !"ExitX");
- HouseInfo[i][H_ExitY] = cache_get_field_content_float(i, !"ExitY");
- HouseInfo[i][H_ExitZ] = cache_get_field_content_float(i, !"ExitZ");
- HouseInfo[i][H_ExitAngle] = cache_get_field_content_float(i, !"ExitAngle");
- HouseInfo[i][H_VehicleModel] = cache_get_field_content_int(i, !"VehicleModel");
- if(!IS_IN_RANGE(HouseInfo[i][H_VehicleModel], 400, 610 + 1)) {
- printf("(@_LoadHouse) => Некорректный автомобиль (model %i) у дома № %i", HouseInfo[i][H_VehicleModel], HouseInfo[i][H_ID]);
- HouseInfo[i][H_VehicleModel] = DEFAULT_HOUSE_VEHICLE;
- }
- HouseInfo[i][H_VehicleColor_1] = cache_get_field_content_int(i, !"VehicleColor_1");
- if(!IS_IN_RANGE(HouseInfo[i][H_VehicleColor_1], 0, 255 + 1)) {
- printf("(@_LoadHouse) => Некорректный цвет автомобиля (color_1 %i) у дома № %i", HouseInfo[i][H_VehicleColor_1], HouseInfo[i][H_ID]);
- HouseInfo[i][H_VehicleColor_1] = DEFAULT_HOUSE_VEHICLE_COLOR_1;
- }
- HouseInfo[i][H_VehicleColor_2] = cache_get_field_content_int(i, !"VehicleColor_2");
- if(!IS_IN_RANGE(HouseInfo[i][H_VehicleColor_2], 0, 255 + 1)) {
- printf("(@_LoadHouse) => Некорректный цвет автомобиля (color_2 %i) у дома № %i", HouseInfo[i][H_VehicleColor_2], HouseInfo[i][H_ID]);
- HouseInfo[i][H_VehicleColor_2] = DEFAULT_HOUSE_VEHICLE_COLOR_2;
- }
- HouseInfo[i][H_VehicleX] = cache_get_field_content_float(i, !"VehicleX");
- HouseInfo[i][H_VehicleY] = cache_get_field_content_float(i, !"VehicleY");
- HouseInfo[i][H_VehicleZ] = cache_get_field_content_float(i, !"VehicleZ");
- HouseInfo[i][H_VehicleAngle] = cache_get_field_content_float(i, !"VehicleAngle");
- HouseInfo[i][H_DefaultVehicleX] = cache_get_field_content_float(i, !"DefaultVehicleX");
- HouseInfo[i][H_DefaultVehicleY] = cache_get_field_content_float(i, !"DefaultVehicleY");
- HouseInfo[i][H_DefaultVehicleZ] = cache_get_field_content_float(i, !"DefaultVehicleZ");
- HouseInfo[i][H_DefaultVehicleAngle] = cache_get_field_content_float(i, !"DefaultVehicleAngle");
- HouseInfo[i][H_Price] = cache_get_field_content_int(i, !"Price");
- HouseInfo[i][H_Lock] = cache_get_field_content_int(i, !"Lock");
- HouseInfo[i][H_Class] = cache_get_field_content_int(i, !"Class");
- HouseInfo[i][H_Update] = cache_get_field_content_int(i, !"Update");
- new houseclass = HouseInfo[i][H_Class] - 1;
- if(HouseInfo[i][H_Update] >= HOUSE_UPDATE_CUPBOARD) {
- HouseInfo[i][H_CupBoardCP] = CreateDynamicCP(
- HouseClass[houseclass][HC_DefaultCupBoardX], HouseClass[houseclass][HC_DefaultCupBoardY], HouseClass[houseclass][HC_DefaultCupBoardZ],
- 0.8, MAX_HOUSE + HouseInfo[i][H_ID], HouseClass[houseclass][HC_Inter]
- );
- HouseInfo[i][H_CupBoardLabel] = CreateDynamic3DTextLabel("Шкаф", COLOR_BLUE,
- HouseClass[houseclass][HC_DefaultCupBoardX], HouseClass[houseclass][HC_DefaultCupBoardY], HouseClass[houseclass][HC_DefaultCupBoardZ],
- MAX_DRAWN_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1,
- MAX_HOUSE + HouseInfo[i][H_ID], HouseClass[houseclass][HC_Inter]
- );
- HouseInfo[i][H_CupBoardButtonID] = CreateButton(
- HouseClass[houseclass][HC_DefaultCupBoardX], HouseClass[houseclass][HC_DefaultCupBoardY], HouseClass[houseclass][HC_DefaultCupBoardZ],
- "PRESS KEY ~g~~h~F/Enter",
- MAX_HOUSE + HouseInfo[i][H_ID], HouseClass[houseclass][HC_Inter]
- );
- }
- if(HouseInfo[i][H_Price] > MAX_HOUSE_PRICE) {
- HouseInfo[i][H_Price] = MAX_HOUSE_PRICE;
- printf("(@_LoadHouse) => Цена дома %i больше максимальной (MAX_HOUSE_PRICE = %i). Текущая цена %i$", HouseInfo[i][H_ID], MAX_HOUSE_PRICE, HouseInfo[i][H_Price]);
- }
- if(HouseInfo[i][H_Price] < MIN_HOUSE_PRICE) {
- HouseInfo[i][H_Price] = MIN_HOUSE_PRICE;
- printf("(@_LoadHouse) => Цена дома %i меньше минимальной (MIN_HOUSE_PRICE = %i). Текущая цена %i$", HouseInfo[i][H_ID], MIN_HOUSE_PRICE, HouseInfo[i][H_Price]);
- }
- HouseInfo[i][H_EnterPickupID] = CreateDynamicPickup(
- (HouseInfo[i][H_OwnerID] != INVALID_OWNER_ID) ? (19524) : (1273), 23,
- HouseInfo[i][H_EnterX], HouseInfo[i][H_EnterY], HouseInfo[i][H_EnterZ],
- MAX_LOBBY + 1, 0
- );
- HouseInfo[i][H_EnterButtonID] = CreateButton(
- HouseInfo[i][H_EnterX], HouseInfo[i][H_EnterY], HouseInfo[i][H_EnterZ],
- "PRESS KEY ~g~~h~F/Enter", MAX_LOBBY + 1, 0
- );
- HouseInfo[i][H_MapIcon] = CreateDynamicMapIcon(
- HouseInfo[i][H_EnterX], HouseInfo[i][H_EnterY], HouseInfo[i][H_EnterZ],
- (HouseInfo[i][H_OwnerID] != INVALID_OWNER_ID) ? (32) : (31), -1,
- MAX_LOBBY + 1, 0
- );
- HouseInfo[i][H_ExitPickup] = CreateDynamicPickup(19132, 23,
- HouseClass[houseclass][HC_PickupX], HouseClass[houseclass][HC_PickupY], HouseClass[houseclass][HC_PickupZ],
- MAX_HOUSE + HouseInfo[i][H_ID], HouseClass[houseclass][HC_Inter]
- );
- HouseInfo[i][H_ExitButtonID] = CreateButton(
- HouseClass[houseclass][HC_PickupX], HouseClass[houseclass][HC_PickupY], HouseClass[houseclass][HC_PickupZ],
- "PRESS KEY ~g~~h~F/Enter",
- MAX_HOUSE + HouseInfo[i][H_ID], HouseClass[houseclass][HC_Inter]
- );
- new houseid = Iter_Free(House);
- Iter_Add(House, houseid);
- Iter_Add(HouseButtonEnter, HouseInfo[i][H_EnterButtonID]);
- Iter_Add(HouseButtonExit, HouseInfo[i][H_EnterButtonID]);
- }
- }
- return printf("(@_LoadHouse) => загруженно %i домов, за %i мс.", rows, GetTickCount() - load_time);
- }
- hook OnGameModeExit() {
- printf("(OnGameModeExit) вызван");
- }
- hook OnPlayerDisconnect(playerid, reason) {
- printf("(OnPlayerDisconnect) вызван");
- if(PlayerHouseInfo[playerid][H_ID] != INVALID_HOUSE_ID) {
- new arrayid = PlayerHouseInfo[playerid][H_ArrayID];
- if(HouseInfo[arrayid][H_VehicleMapIcon] != INVALID_MAPICON_ID && IsValidDynamicMapIcon(HouseInfo[arrayid][H_VehicleMapIcon])) {
- DestroyDynamicMapIcon(HouseInfo[arrayid][H_VehicleMapIcon]);
- }
- SaveVehiclePosition(PlayerHouseInfo[playerid][H_ArrayID]);
- }
- }
- /**
- * [OnButtonPress нажатие на кнопку домов]
- * @param {int} playerid {ID игрока}
- * @param {int} buttonid {ID кнопки}
- */
- public OnButtonPress(playerid, buttonid) {
- foreach(new i:House) {
- if(buttonid == HouseInfo[i][H_EnterButtonID]) {
- SetPVarInt(playerid, "house_array", i);
- if(HouseInfo[i][H_OwnerID] == INVALID_OWNER_ID) {
- return Dialog_Show(playerid, Dialog:DIALOG_BUY_HOUSE);
- } else {
- return Dialog_Show(playerid, Dialog:DIALOG_HOUSE_INFO);
- }
- } else if(buttonid == HouseInfo[i][H_ExitButtonID]) {
- new
- inter = GetPlayerInterior(playerid),
- world = GetPlayerVirtualWorld(playerid) - MAX_HOUSE;
- if(HouseInfo[i][H_ID] == world) {
- new houseclass = HouseInfo[i][H_Class] - 1;
- if(HouseClass[houseclass][HC_Inter] == inter) {
- SetPlayerPos(playerid, HouseInfo[i][H_ExitX], HouseInfo[i][H_ExitY], HouseInfo[i][H_ExitZ]);
- SetPlayerFacingAngle(playerid, HouseInfo[i][H_ExitAngle]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, MAX_LOBBY + 1);
- return SetCameraBehindPlayer(playerid);
- }
- }
- } else if(buttonid == HouseInfo[i][H_CupBoardButtonID]) {
- if(HouseInfo[i][H_OwnerID] == playerAccID[playerid]) {
- return Dialog_Show(playerid, Dialog:DIALOG_HOUSE_CUPBOARD);
- } else {
- return SendErrorMessage(playerid, "Вам недоступен домашний шкаф этого дома.");
- }
- }
- }
- return 0;
- }
- /**
- * [GetPlayerHouse перегонка значений из HouseInfo в PlayerHouseInfo]
- * @param {int} playerid {ID игрока}
- * @param {int} creave_hehicle {0 - не создавать машину у дома; 1 - создать}
- */
- stock GetPlayerHouse(playerid, creave_hehicle = 0) {
- new account_id = playerAccID[playerid];
- foreach(new i:House) {
- if(HouseInfo[i][H_OwnerID] == account_id) {
- PlayerHouseInfo[playerid][H_ID] = HouseInfo[i][H_ID];
- PlayerHouseInfo[playerid][H_ArrayID] = i;
- if(creave_hehicle == 1) {
- CreateVehicleForHouse(i);
- }
- break;
- }
- }
- }
- /**
- * [ResetPlayerHouse сброс сброк массива PlayerHouseInfo на дефолтные значения]
- * @param {int} playerid {ID игрока}
- */
- stock ResetPlayerHouse(playerid) {
- if(PlayerHouseInfo[playerid][H_ID] != INVALID_HOUSE_ID) {
- DestroyVehicle(HouseInfo[PlayerHouseInfo[playerid][H_ArrayID]][H_VehicleID]);
- }
- return PlayerHouseInfo[playerid] = NULL_PlayerHouseInfo;
- }
- DialogCreate:DIALOG_BUY_HOUSE(playerid) {
- new arrayid = GetPVarInt(playerid, "house_array");
- static const
- fmt_str_0[] =
- ""color_white"\\cОсновная информация о доме\n\n\
- \\cНомер дома: "color_green"%i"color_white"\n\
- \\cЦена: "color_green"%i$"color_white"\n\
- \\cКласс: "color_green"%s"color_white"";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 5) // номер дома
- + (- 2 + 11) // цена дома
- + (- 2 + MAX_HOUSE_CLASS_TITLE)
- ];
- skip_array_init_fmt_str_0:
- format(string, sizeof(string), fmt_str_0, HouseInfo[arrayid][H_ID], HouseInfo[arrayid][H_Price], HouseClass[HouseInfo[arrayid][H_Class] - 1][HC_Title]);
- return Dialog_Open(playerid, Dialog:DIALOG_BUY_HOUSE, DIALOG_STYLE_MSGBOX,
- !""color_blue"Недвижимость",
- string,
- !"Купить", !"Закрыть"
- );
- }
- DialogResponse:DIALOG_BUY_HOUSE(playerid, response, listitem, inputtext[]) {
- if(!response) {
- return DeletePVar(playerid, "house_array");
- } else {
- if(PlayerHouseInfo[playerid][H_ID] != INVALID_HOUSE_ID) {
- SendErrorMessage(playerid, "У вас уже есть дома. Покупка второго невозможна.");
- return SendInfoMessage(playerid, "Для продажи дома используйте "color_green"/house -> Продать дом");
- }
- new
- arrayid = GetPVarInt(playerid, "house_array");
- DeletePVar(playerid, "house_array");
- if(IS_IN_RANGE(HouseInfo[arrayid][H_Price], 1, MAX_HOUSE_PRICE + 1)) {
- if(playerMoney[playerid] < HouseInfo[arrayid][H_Price]) {
- return SendErrorMessage(playerid, "У вас недостаточно денег для покупки дома.");
- }
- playerMoney[playerid] = playerMoney[playerid] - HouseInfo[arrayid][H_Price];
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, playerMoney[playerid]);
- HouseInfo[arrayid][H_OwnerID] = playerAccID[playerid];
- strmid(HouseInfo[arrayid][H_OwnerName], pInfo[playerid][Name], 0, strlen(pInfo[playerid][Name]));
- static const
- fmt_str_0[] = "UPDATE "TABLE_HOUSE" SET `OwnerName` = '%e' WHERE ID = %i LIMIT 1";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + MAX_PLAYER_NAME)
- + (- 2 + 5)
- ];
- skip_array_init_fmt_str_0:
- GetPlayerHouse(playerid, 1);
- Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseInfo[arrayid][H_EnterPickupID], E_STREAMER_MODEL_ID, 19524);
- mysql_format(1, string, sizeof(string), fmt_str_0, pInfo[playerid][Name], HouseInfo[arrayid][H_ID]);
- mysql_tquery(1, string);
- SendInfoMessage(playerid, "Вы успешно купили дом. Используйте команду "color_green"/house"color_white" для управления домом.");
- return SendInfoMessage(playerid, "Ваш дом автоматически будет продан, если вы долго не будете заходить в игру.");
- }
- }
- return 1;
- }
- DialogCreate:DIALOG_HOUSE_INFO(playerid) {
- new arrayid = GetPVarInt(playerid, "house_array");
- static const
- fmt_str_0[] =
- ""color_white"\\cОсновная информация о доме\n\n\
- \\cНомер дома: "color_green"%i"color_white"\n\
- \\cЦена: "color_green"%i$"color_white"\n\
- \\cКласс: "color_green"%s"color_white"\n\
- \\cВладелец: "color_green"%s"color_white"\n\
- \\cДвери: %s"color_white"";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 5) // номер дома
- + (- 2 + 11) // цена дома
- + (- 2 + MAX_HOUSE_CLASS_TITLE)
- + (- 2 + MAX_PLAYER_NAME) // владелец
- + (- 2 + 16) // двери + цветовое выделение
- ];
- skip_array_init_fmt_str_0:
- format(string, sizeof(string), fmt_str_0,
- HouseInfo[arrayid][H_ID],
- HouseInfo[arrayid][H_Price],
- HouseClass[HouseInfo[arrayid][H_Class] - 1][HC_Title],
- HouseInfo[arrayid][H_OwnerName],
- (HouseInfo[arrayid][H_Lock] == 0) ? (""color_green"Открыты") : (""color_red"Закрыты")
- );
- return Dialog_Open(playerid, Dialog:DIALOG_HOUSE_INFO, DIALOG_STYLE_MSGBOX,
- !""color_blue"Недвижимость",
- string,
- !"Войти", !"Закрыть"
- );
- }
- DialogResponse:DIALOG_HOUSE_INFO(playerid, response, listitem, inputtext[]) {
- if(!response) {
- return DeletePVar(playerid, "house_array");
- } else {
- new
- arrayid = GetPVarInt(playerid, "house_array");
- DeletePVar(playerid, "house_array");
- if(HouseInfo[arrayid][H_Lock] == 1 && HouseInfo[arrayid][H_OwnerID] != playerAccID[playerid]) {
- return SendErrorMessage(playerid, "Дом закрыт.");
- } else {
- new houseclass = HouseInfo[arrayid][H_Class] - 1;
- SetPlayerPos(playerid, HouseClass[houseclass][HC_EnterX], HouseClass[houseclass][HC_EnterY], HouseClass[houseclass][HC_EnterZ]);
- SetPlayerFacingAngle(playerid, HouseClass[houseclass][HC_EnterAngle]);
- SetPlayerInterior(playerid, HouseClass[houseclass][HC_Inter]);
- SetPlayerVirtualWorld(playerid, MAX_HOUSE + HouseInfo[arrayid][H_ID]);
- }
- return 1;
- }
- }
- /**
- * [house команда управления домом]
- * @param {int} playerid {ID игрока}
- * @param {string} params[] {-}
- */
- CMD:house(playerid, params[]) {
- if(PlayerHouseInfo[playerid][H_ID] == INVALID_HOUSE_ID) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас нет дома.");
- }
- return Dialog_Show(playerid, Dialog:DIALOG_CMD_HOUSE);
- }
- DialogCreate:DIALOG_CMD_HOUSE(playerid) {
- static const
- fmt_str_0[] =
- ""color_white"Продать дом\n\
- Список улучшений\n\
- %s"color_white" двери\n\
- Отметить транспорт на GPS\n\
- Подогнать транспорт к дому";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 7 + 14) // 7 - открыть/закрыть; 14 - цветовое выделение
- ];
- skip_array_init_fmt_str_0:
- new arrayid = PlayerHouseInfo[playerid][H_ArrayID];
- format(string, sizeof(string),
- fmt_str_0,
- (HouseInfo[arrayid][H_Lock] == 0) ? (""color_red"Закрыть") : (""color_green"Открыть")
- );
- return Dialog_Open(playerid, Dialog:DIALOG_CMD_HOUSE, DIALOG_STYLE_LIST,
- !""color_blue"Недвижимость",
- string,
- !"Выбрать", !"Закрыть"
- );
- }
- DialogResponse:DIALOG_CMD_HOUSE(playerid, response, listitem, inputtext[]) {
- if(!response) {
- return 1;
- } else {
- if(PlayerHouseInfo[playerid][H_ID] == INVALID_HOUSE_ID) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас нет дома.");
- }
- new arrayid = PlayerHouseInfo[playerid][H_ArrayID];
- if(listitem == 0) {
- return Dialog_Show(playerid, Dialog:DIALOG_SELL_HOUSE);
- } else if(listitem == 1) {
- return Dialog_Show(playerid, Dialog:DIALOG_UPDATE_HOUSE);
- } else if(listitem == 2) {
- HouseInfo[arrayid][H_Lock] = !HouseInfo[arrayid][H_Lock];
- if(HouseInfo[arrayid][H_Lock] == 1) {
- SendInfoMessage(playerid, "Вы "color_red"закрыли"color_white" входные двери вашего домаю");
- } else {
- SendInfoMessage(playerid, "Вы "color_green"открыли"color_white" входные двери вашего дома.");
- }
- static const
- fmt_str_0[] =
- "UPDATE "TABLE_HOUSE" SET `Lock` = %i WHERE `ID` = %i LIMIT 1";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 1) // состояние дверей
- + (- 2 + 5) // ID дома
- ];
- skip_array_init_fmt_str_0:
- mysql_format(1,
- string, sizeof(string),
- fmt_str_0,
- HouseInfo[arrayid][H_Lock],
- HouseInfo[arrayid][H_ID]
- );
- printf(string);
- return mysql_pquery(1, string);
- } else if(listitem == 3) {
- if(IsValidDynamicMapIcon(HouseInfo[arrayid][H_VehicleMapIcon]) == 1) {
- DestroyDynamicMapIcon(HouseInfo[arrayid][H_VehicleMapIcon]);
- return SendInfoMessage(playerid, "Отметка автомобиля была скрыта с мини-карты.");
- }
- new
- Float: vehicle_pos_x,
- Float: vehicle_pos_y,
- Float: vehicle_pos_z;
- GetVehiclePos(HouseInfo[arrayid][H_VehicleID], vehicle_pos_x, vehicle_pos_y, vehicle_pos_z);
- HouseInfo[arrayid][H_VehicleMapIcon] = CreateDynamicMapIcon(
- vehicle_pos_x, vehicle_pos_y, vehicle_pos_z,
- 55, -1, MAX_LOBBY + 1, 0,
- .style = MAPICON_GLOBAL_CHECKPOINT
- );
- SendInfoMessage(playerid, "Ваш автомобиль был отмечен на мини-карте в виде "color_green"значка автомобиля.");
- return SendInfoMessage(playerid, "Для того чтобы скрыть иконку с мини-карты, повтороно используйте: "color_green"/house -> Отметить транспорт на GPS");
- } else if(listitem == 4) {
- return Dialog_Show(playerid, Dialog:DIALOG_RESET_VEHICLE_COORD);
- }
- }
- return 1;
- }
- DialogCreate:DIALOG_SELL_HOUSE(playerid) {
- if(PlayerHouseInfo[playerid][H_ID] == INVALID_HOUSE_ID) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас нет дома.");
- }
- static const
- fmt_str_0[] =
- "\\c"color_white"Вы уверен, что хотите продать свой дом?\n\n\
- "color_orange"Вам будет возвращенно %i%% от его стоимости "color_green"(%i$)";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 5)
- + (- 2 + 11)
- ];
- skip_array_init_fmt_str_0:
- Streamer_SetIntData(STREAMER_TYPE_PICKUP, HouseInfo[PlayerHouseInfo[playerid][H_ArrayID]][H_EnterPickupID], E_STREAMER_MODEL_ID, 1273);
- format(string, sizeof(string), fmt_str_0, SELL_HOUSE_PERCENT, (HouseInfo[PlayerHouseInfo[playerid][H_ArrayID]][H_Price] / 100) * SELL_HOUSE_PERCENT);
- return Dialog_Open(playerid, Dialog:DIALOG_SELL_HOUSE, DIALOG_STYLE_MSGBOX,
- !""color_blue"Продажа дома",
- string,
- !"Нет", !"Да"
- );
- }
- DialogResponse:DIALOG_SELL_HOUSE(playerid, response, listitem, inputtext[]) {
- if(!response) {
- if(PlayerHouseInfo[playerid][H_ID] == INVALID_HOUSE_ID) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас нет дома.");
- }
- new arrayid = PlayerHouseInfo[playerid][H_ArrayID];
- HouseInfo[arrayid][H_OwnerID] = INVALID_OWNER_ID;
- strmid(HouseInfo[arrayid][H_OwnerName], INVALID_OWNER_NAME, 0, strlen(INVALID_OWNER_NAME));
- playerMoney[playerid] = playerMoney[playerid] + (HouseInfo[arrayid][H_Price] / 100) * SELL_HOUSE_PERCENT;
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, playerMoney[playerid]);
- static const
- fmt_str_0[] = "UPDATE "TABLE_HOUSE" SET `OwnerName`= NULL, `VehicleX` = 0.00, `VehicleY` = 0.00, `VehicleZ` = 0.00, `VehicleAngle` = 0.00, `VehicleModel` = %i, `VehicleColor_1` = %i, `VehicleColor_2` = %i, `Update` = 0, `Lock` = 0 WHERE ID = %i LIMIT 1";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 3) // ID модели транспорта
- + (- 2 + 3) // ID первого цвета автомобиля
- + (- 2 + 3) // ID второго цвета автомобиля
- + (- 2 + 5) // ID дома
- ];
- skip_array_init_fmt_str_0:
- mysql_format(1,
- string, sizeof(string),
- fmt_str_0,
- DEFAULT_HOUSE_VEHICLE,
- DEFAULT_HOUSE_VEHICLE_COLOR_1,
- DEFAULT_HOUSE_VEHICLE_COLOR_2,
- HouseInfo[arrayid][H_ID]
- );
- mysql_tquery(1, string);
- SendInfoMessage(playerid, "Вы успешно продали свой дом!");
- return ResetPlayerHouse(playerid);
- } else {
- return Dialog_Show(playerid, Dialog:DIALOG_CMD_HOUSE);
- }
- }
- DialogCreate:DIALOG_UPDATE_HOUSE(playerid) {
- if(PlayerHouseInfo[playerid][H_ID] == INVALID_HOUSE_ID) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас нет дома.");
- }
- new arrayid = PlayerHouseInfo[playerid][H_ArrayID];
- static const
- fmt_str_0[] =
- !"Название\tОписание\tЦена\tСтатус\n";
- goto skip_array_init_fmt_str_0;
- new
- string_0[sizeof(fmt_str_0)
- + ((MAX_HOUSE_UPDATE * (MAX_HOUSE_CLASS_TITLE + MAX_HOUSE_UPDATE_DESCRIPTION)) / 4)
- ],
- string_1[MAX_HOUSE_UPDATE_TITLE + MAX_HOUSE_UPDATE_DESCRIPTION + 1];
- skip_array_init_fmt_str_0:
- string_0 = fmt_str_0;
- for(new i = 0; i < MAX_HOUSE_UPDATE; i++) {
- format(string_1, sizeof(string_1),
- "%s\t%s\t%i\t%s\n",
- HouseUpdate[i][HU_Title],
- HouseUpdate[i][HU_Description],
- HouseUpdate[i][HU_Price],
- (HouseInfo[arrayid][H_Update] >= i) ? ("Куплено") : ("Не куплено")
- );
- strcat(string_0, string_1);
- }
- return Dialog_Open(playerid, Dialog:DIALOG_UPDATE_HOUSE, DIALOG_STYLE_TABLIST_HEADERS,
- !""color_blue"Улучшения дома",
- string_0,
- !"Выбрать", !"Закрыть"
- );
- }
- DialogResponse:DIALOG_UPDATE_HOUSE(playerid, response, listitem, inputtext[]) {
- if(!response) {
- return Dialog_Show(playerid, Dialog:DIALOG_CMD_HOUSE);
- } else {
- if(PlayerHouseInfo[playerid][H_ID] == INVALID_HOUSE_ID) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас нет дома.");
- }
- new arrayid = PlayerHouseInfo[playerid][H_ArrayID];
- if(HouseInfo[arrayid][H_Update] >= listitem + 1) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас куплено уже это улучшение.");
- }
- new price = HouseUpdate[listitem][HU_Price];
- if(playerMoney[playerid] < price) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас недостаточно денег для покупки улучшения");
- }
- playerMoney[playerid] = playerMoney[playerid] - price;
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, playerMoney[playerid]);
- static const
- fmt_str_0[] = "UPDATE "TABLE_HOUSE" SET `Update` = %i WHERE ID = %i LIMIT 1",
- fmt_str_1[] = "Вы купили улучшение "color_green"%s"color_white" за "color_green"%i$";
- const
- string_size_fmt_str_0 = sizeof(fmt_str_0)
- + (- 2 + 3) // Уровень улучшений
- + (- 2 + 5), // ID дома
- string_size_fmt_str_1 = sizeof(fmt_str_1)
- + (- 2 + MAX_HOUSE_UPDATE_TITLE) // Название улучшения
- + (- 2 + 7); // Цена улучшения
- #if string_size_fmt_str_0 > string_size_fmt_str_1
- #define SIZE string_size_fmt_str_0
- #else
- #define SIZE string_size_fmt_str_1
- #endif
- goto skip_array_init_fmt_str_0;
- new string[SIZE];
- skip_array_init_fmt_str_0:
- #undef SIZE
- mysql_format(1,
- string, sizeof(string),
- fmt_str_0,
- listitem + 1,
- PlayerHouseInfo[playerid][H_ID]
- );
- mysql_tquery(1, string);
- format(string, sizeof(string),
- fmt_str_1,
- HouseUpdate[listitem][HU_Title],
- price
- );
- return SendClientMessage(playerid, COLOR_WHITE, string);
- }
- }
- /**
- * [CreateVehicleForHouse создает машину у дома игрока]
- * @param {int} arrayid {номер ячейки >> HouseInfo}
- */
- stock CreateVehicleForHouse(arrayid) {
- if(floatcmp(HouseInfo[arrayid][H_VehicleX], 0.000000) == 0) {
- HouseInfo[arrayid][H_VehicleID] = CreateVehicle(HouseInfo[arrayid][H_VehicleModel],
- HouseInfo[arrayid][H_DefaultVehicleX], HouseInfo[arrayid][H_DefaultVehicleY], HouseInfo[arrayid][H_DefaultVehicleZ],
- HouseInfo[arrayid][H_DefaultVehicleAngle],
- HouseInfo[arrayid][H_VehicleColor_1], HouseInfo[arrayid][H_VehicleColor_2], 6000
- );
- } else {
- HouseInfo[arrayid][H_VehicleID] = CreateVehicle(HouseInfo[arrayid][H_VehicleModel],
- HouseInfo[arrayid][H_VehicleX], HouseInfo[arrayid][H_VehicleY], HouseInfo[arrayid][H_VehicleZ],
- HouseInfo[arrayid][H_VehicleAngle],
- HouseInfo[arrayid][H_VehicleColor_1], HouseInfo[arrayid][H_VehicleColor_2], 6000
- );
- }
- Iter_Add(HouseVehicle, HouseInfo[arrayid][H_VehicleID]);
- return SetVehicleVirtualWorld(HouseInfo[arrayid][H_VehicleID], MAX_LOBBY + 1);
- }
- DialogCreate:DIALOG_RESET_VEHICLE_COORD(playerid) {
- static const
- fmt_str_0[] =
- "\\c"color_white"Вы уверены, что хотите припарковать транспорт к дому?\n\n\
- \\c"color_orange"Цена услуги составляет: "color_green"%i$";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 5) // цена за услугу
- ];
- skip_array_init_fmt_str_0:
- format(string, sizeof(string),
- fmt_str_0,
- PRICE_HOUSE_RESET_VEHICLE_COORD
- );
- return Dialog_Open(playerid, Dialog:DIALOG_RESET_VEHICLE_COORD, DIALOG_STYLE_MSGBOX,
- !""color_blue"Парковка транспорта",
- string,
- !"Да", !"Нет"
- );
- }
- DialogResponse:DIALOG_RESET_VEHICLE_COORD(playerid, response, listitem, inputtext[]) {
- if(!response) {
- return Dialog_Show(playerid, Dialog:DIALOG_CMD_HOUSE);
- } else {
- if(PlayerHouseInfo[playerid][H_ID] == INVALID_HOUSE_ID) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас нет дома.");
- }
- new arrayid = PlayerHouseInfo[playerid][H_ArrayID];
- new price = PRICE_HOUSE_RESET_VEHICLE_COORD;
- if(playerMoney[playerid] < price) {
- return SendClientMessage(playerid, COLOR_WHITE, !"У вас недостаточно денег для парковки транспорта к дому.");
- }
- playerMoney[playerid] = playerMoney[playerid] - price;
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, playerMoney[playerid]);
- SetVehiclePos(HouseInfo[arrayid][H_VehicleID],
- HouseInfo[arrayid][H_DefaultVehicleX], HouseInfo[arrayid][H_DefaultVehicleY], HouseInfo[arrayid][H_DefaultVehicleZ]
- );
- SetVehicleZAngle(HouseInfo[arrayid][H_VehicleID], HouseInfo[arrayid][H_DefaultVehicleAngle]);
- return SendInfoMessage(playerid, "Вы успешно подогали транспорт к дому!");
- }
- }
- /**
- * [DestroyVehicleForHouse удаляет домашнию машину (на сервере)]
- * @param {int} arrayid {номер ячейки >> HouseInfo}
- */
- stock DestroyVehicleForHouse(arrayid) {
- Iter_Remove(HouseVehicle, HouseInfo[arrayid][H_VehicleID]);
- DestroyVehicle(HouseInfo[arrayid][H_VehicleID]);
- }
- stock SaveVehiclePosition(arrayid) {
- static const
- fmt_str_0[] =
- "UPDATE "TABLE_HOUSE" SET `VehicleX` = %f, `VehicleY` = %f, `VehicleZ` = %f, `VehicleAngle` = %f WHERE ID = %i LIMIT 1";
- goto skip_array_init_fmt_str_0;
- new string[sizeof(fmt_str_0)
- + (- 2 + 7) // x
- + (- 2 + 7) // y
- + (- 2 + 7) // z
- + (- 2 + 7) // angle
- + (- 2 + 5) // id
- ];
- skip_array_init_fmt_str_0:
- new
- Float: vehicle_x,
- Float: vehicle_y,
- Float: vehicle_z,
- Float: vehicle_angle;
- GetVehiclePos(HouseInfo[arrayid][H_VehicleID], vehicle_x, vehicle_y, vehicle_z);
- GetVehicleZAngle(HouseInfo[arrayid][H_VehicleID], vehicle_angle);
- HouseInfo[arrayid][H_VehicleX] = vehicle_x;
- HouseInfo[arrayid][H_VehicleY] = vehicle_y;
- HouseInfo[arrayid][H_VehicleZ] = vehicle_z;
- HouseInfo[arrayid][H_VehicleAngle] = vehicle_angle;
- mysql_format(1,
- string, sizeof(string),
- fmt_str_0,
- vehicle_x,
- vehicle_y,
- vehicle_z,
- vehicle_angle,
- HouseInfo[arrayid][H_ID]
- );
- return mysql_pquery(1, string);
- }
- DialogCreate:DIALOG_HOUSE_CUPBOARD(playerid) {
- Dialog_Open(playerid, Dialog:DIALOG_HOUSE_CUPBOARD, DIALOG_STYLE_MSGBOX,
- ""color_blue"Шкаф",
- ""color_white"\\cПока тут ничего нет, но скоро тут будет крутооооо. Ехууууу\n\n\
- \\cХочешь покажу тебе текстовой смайлик?\n\n\n\n\n\n\n\n\n\n\\cNot all charasters are representable in Cyrillic (Windows 1251),\nfalling back to UTF-8",
- "Закрыть", "Открыть"
- );
- }
- DialogResponse:DIALOG_HOUSE_CUPBOARD(playerid, response, listitem, inputtext[]) {
- if(!response) {
- } else {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement