Проблема с загрузкой домов..

Pawn.Sapph1re

Новичок
Автор темы
22
1
Приветствую всех, у меня большая проблема с загрузкой домов. А именно когда покупаешь дом, у тебя в базу сохраняется 2 значения, одно в houses(ид аккаунта из accounts), второе в accounts (ид дома из houses). Так вот, купил я например 10 ид дома, все нормально сохранилось в 2 таблицу правильно.

Но, после рестарта будто что-то сталкивает значение назад, становится 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
 
Последнее редактирование: