- 22
- 1
Приветствую всех, у меня большая проблема с загрузкой домов. А именно когда покупаешь дом, у тебя в базу сохраняется 2 значения, одно в houses(ид аккаунта из accounts), второе в accounts (ид дома из houses). Так вот, купил я например 10 ид дома, все нормально сохранилось в 2 таблицу правильно.
Но, после рестарта будто что-то сталкивает значение назад, становится 9 - 10.
По подробнее:
Вот код:
Вот лог при загрузке:
Да, я понимаю что нужно установить i в цикле на единицу, но тогда будет:
Я магическим способом их как то сделал, чтобы было одинаково загружались TOTAL и OWNER_ID, но тогда пикапы не создались на сервере домов.
Незнаю как быть, надеюсь кто-то сталкивался с такой проблемой, мод если что Stonks RP CRMP Radmir Launcher
Но, после рестарта будто что-то сталкивает значение назад, становится 9 - 10.
По подробнее:
Вот код:
C++:
public: LoadHouses()
{
new query[85], buffer[2];
new Cache: result;
//result = mysql_query(mysql, "SELECT h.*, IFNULL(a.name, 'None') owner_name FROM houses h LEFT JOIN accounts a ON a.id = h.owner_id ORDER BY h.id ASC, h.entrance ASC", true);
result = mysql_query(mysql, "SELECT h.*, IFNULL(a.name, 'None') owner_name FROM houses h LEFT JOIN accounts a ON a.id=h.owner_id", true);
for(new idx = 0; idx < cache_num_rows(); idx++)
{
SetHouseData(idx, H_SQL_ID, cache_get_field_content_int(idx, "id"));
SetHouseData(idx, H_OWNER_ID, cache_get_field_content_int(idx, "owner_id"));
cache_get_field_content(idx, "name", g_house[idx][H_NAME], mysql, 20);
SetHouseData(idx, H_CITY, cache_get_field_content_int(idx, "city"));
SetHouseData(idx, H_ZONE, cache_get_field_content_int(idx, "zone"));
SetHouseData(idx, H_IMPROVEMENTS, cache_get_field_content_int(idx, "improvements"));
SetHouseData(idx, H_RENT_DATE, cache_get_field_content_int(idx, "rent_time"));
SetHouseData(idx, H_PRICE, cache_get_field_content_int(idx, "price"));
SetHouseData(idx, H_RENT_PRICE, cache_get_field_content_int(idx, "rent_price"));
SetHouseData(idx, H_TYPE, cache_get_field_content_int(idx, "type"));
SetHouseData(idx, H_ENTRACE, cache_get_field_content_int(idx, "entrance"));
SetHouseData(idx, H_LOCK_STATUS, bool: cache_get_field_content_int(idx, "lock"));
SetHouseData(idx, H_POS_X, cache_get_field_content_float(idx, "x"));
SetHouseData(idx, H_POS_Y, cache_get_field_content_float(idx, "y"));
SetHouseData(idx, H_POS_Z, cache_get_field_content_float(idx, "z"));
SetHouseData(idx, H_EXIT_POS_X, cache_get_field_content_float(idx, "exit_x"));
SetHouseData(idx, H_EXIT_POS_Y, cache_get_field_content_float(idx, "exit_y"));
SetHouseData(idx, H_EXIT_POS_Z, cache_get_field_content_float(idx, "exit_z"));
SetHouseData(idx, H_EXIT_ANGLE, cache_get_field_content_float(idx, "exit_angle"));
SetHouseData(idx, H_CAR_POS_X, cache_get_field_content_float(idx, "car_x"));
SetHouseData(idx, H_CAR_POS_Y, cache_get_field_content_float(idx, "car_y"));
SetHouseData(idx, H_CAR_POS_Z, cache_get_field_content_float(idx, "car_z"));
SetHouseData(idx, H_CAR_ANGLE, cache_get_field_content_float(idx, "car_angle"));
SetHouseData(idx, H_STORE_X, cache_get_field_content_float(idx, "store_x"));
SetHouseData(idx, H_STORE_Y, cache_get_field_content_float(idx, "store_y"));
SetHouseData(idx, H_STORE_Z, cache_get_field_content_float(idx, "store_z"));
SetHouseData(idx, H_EVICTION, cache_get_field_content_int(idx, "eviction"));
SetHouseData(idx, H_STORE_METALL, cache_get_field_content_int(idx, "store_metall"));
SetHouseData(idx, H_STORE_DRUGS, cache_get_field_content_int(idx, "store_drugs"));
SetHouseData(idx, H_STORE_WEAPON, cache_get_field_content_int(idx, "store_weapon"));
SetHouseData(idx, H_STORE_AMMO, cache_get_field_content_int(idx, "store_ammo"));
SetHouseData(idx, H_STORE_SKIN, cache_get_field_content_int(idx, "store_skin"));
cache_get_field_content(idx, "owner_name", g_house[idx][H_OWNER_NAME], mysql, 21);
g_house_loaded++;
// -------------------------
SetHouseData(idx, H_STORE_LABEL, Text3D:-1);
if(GetHouseData(idx, H_ENTRACE) == -1)
{
if(GetHouseData(idx, H_ENTER_PICKUP))
DestroyPickup(GetHouseData(idx, H_ENTER_PICKUP));
if(IsValidDynamicMapIcon(GetHouseData(idx, H_MAP_ICON)))
DestroyDynamicMapIcon(GetHouseData(idx, H_MAP_ICON));
SetHouseData(idx, H_ENTER_PICKUP, CreatePickup((IsHouseOwned(idx) ? 1272 : 1273), 23, GetHouseData(idx, H_POS_X), GetHouseData(idx, H_POS_Y), GetHouseData(idx, H_POS_Z), 0, PICKUP_ACTION_TYPE_HOUSE, idx));
SetHouseData(idx, H_MAP_ICON, CreateDynamicMapIcon(GetHouseData(idx, H_POS_X), GetHouseData(idx, H_POS_Y), GetHouseData(idx, H_POS_Z), (IsHouseOwned(idx) ? 32 : 31), 0, 0, 0, -1, STREAMER_MAP_ICON_SD, MAPICON_LOCAL));
home_area[idx] = CreateDynamicSphere(GetHouseData(idx, H_POS_X), GetHouseData(idx, H_POS_Y), GetHouseData(idx, H_POS_Z), 3.0, 0, 0, -1);
}
HouseHealthInit(idx);
HouseStoreInit(idx);
buffer[0] = GetHouseData(idx, H_TYPE);
if(!strlen(GetHouseData(idx, H_NAME)))
format(g_house[idx][H_NAME], 40, GetHouseTypeInfo(buffer[0], HT_NAME), 0);
if(GetHouseData(idx, H_ENTRACE) == -1)
{
if(GetHouseData(idx, H_CITY) == -1 || GetHouseData(idx, H_ZONE) == -1)
{
buffer[0] = Get2DCity(GetHouseData(idx, H_POS_X), GetHouseData(idx, H_POS_Y));
buffer[1] = Get2DZone(GetHouseData(idx, H_POS_X), GetHouseData(idx, H_POS_Y));
SetHouseData(idx, H_CITY, buffer[0]);
SetHouseData(idx, H_ZONE, buffer[1]);
mysql_format(mysql, query, sizeof query, "UPDATE houses SET city=%d,zone=%d WHERE id=%d", buffer[0], buffer[1], GetHouseData(idx, H_SQL_ID));
mysql_query(mysql, query, false);
}
}
if(IsHouseOwned(idx) && !strcmp(GetHouseData(idx, H_OWNER_NAME), "None", true))
{
SetHouseData(idx, H_OWNER_ID, 0);
mysql_format(mysql, query, sizeof query, "UPDATE houses SET owner_id=0,improvements=0 WHERE id=%d", GetHouseData(idx, H_SQL_ID));
mysql_query(mysql, query, false);
}
if(!IsHouseOwned(idx))
{
SetHouseData(idx, H_IMPROVEMENTS, 0);
SetHouseData(idx, H_LOCK_STATUS, false);
}
buffer[0] = GetHouseData(idx, H_ENTRACE);
if(buffer[0] != -1)
{
buffer[1] = g_entrance_flats_loaded[buffer[0]];
g_entrance_flats_loaded[buffer[0]] ++;
g_entrance_flat[buffer[0]][buffer[1] / 4][buffer[1] % 4] = idx;
SetHouseData(idx, H_FLAT_ID, buffer[1]);
}
//home_area[idx] = CreateDynamicSphere(GetHouseData(idx, H_POS_X), GetHouseData(idx, H_POS_Y), GetHouseData(idx, H_POS_Z), 3.0, 0, 0, -1);
}
cache_delete(result);
printf("[Houses]: Домов загружено: %d", g_house_loaded);
}
Вот лог при загрузке:
C++:
[19:54:14] [Ид из сервера: 0 | из базы: 1] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 1| H_OWNER_ID: 2] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 2 H_OWNER_ID: 3] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 3 | H_OWNER_ID: 4] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 4 | H_OWNER_ID: 5] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 5| H_OWNER_ID: 6] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 6 | H_OWNER_ID: 7] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 7 | H_OWNER_ID: 8] Статус: Продан, Владелец:
Да, я понимаю что нужно установить i в цикле на единицу, но тогда будет:
C++:
[19:54:14] [TOTAL HOUSE: 1| H_OWNER_ID: 2] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 2 | H_OWNER_ID: 3] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 3 | H_OWNER_ID: 4] Статус: Продан, Владелец:
[19:54:14] [TOTAL HOUSE: 4 | H_OWNER_ID: 5] Статус: Продан, Владелец:
Я магическим способом их как то сделал, чтобы было одинаково загружались TOTAL и OWNER_ID, но тогда пикапы не создались на сервере домов.
Незнаю как быть, надеюсь кто-то сталкивался с такой проблемой, мод если что Stonks RP CRMP Radmir Launcher
Последнее редактирование: