Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±

    Проблема с командой

    Написал команду покупки дома, сегодня заметил одну интересную проблема, долго уже мучаюсь и не могу понять в чем проблема.
    У меня в БД 11 домов, 1,2,3,4,5,6,7,8,9,14,17
    Если покупать дом с ID в бд в радиусе к примеру от 1 до 9 то все нормально. А если к примеру купить дом с ID 14, то присваивается в PlayerInfo[playerid][pHouseKey] = 9; А если купить с ID 17 присваивается в PlayerInfo[playerid][pHouseKey] = 14;

    Пожалуйста помогите мне, буду очень благодарен, просто боюсь за свое здоровья могу сломать мозг))
    Вот собственно и код:
    PHP код:
        for(new 0sizeof(HouseInfo); i++)
        {
            if(
    PlayerInfo[playerid][pHouseKey] != -1) return SCM(playerid, -1"Exist h!");
            if(
    HouseInfo[i][hOwned]) return SCM(playerid, -1"home no sell!");
            if(
    GetPlayerCash(playerid) < HouseInfo[i][hPrice]) return SCM(playerid, -1"no money!");
            if(!
    IsPlayerInRangeOfPoint(playerid1.5HouseInfo[i][hEnterX][0], HouseInfo[i][hEnterY][0], HouseInfo[i][hEnterZ][0]))continue;
            
    GivePlayerCashMinus(playeridHouseInfo[i][hPrice]);
            
    HouseInfo[i][hOwned] = 1;
            
    PlayerInfo[playerid][pHouseKey] = i;
            
    strmid(HouseInfo[PlayerInfo[playerid][pHouseKey]][hOwener], PlayerInfo[playerid][pName], 02424);
            
    UpdateHouseInfo(playeridi);
            
    SaveHouseInfo(i);
            
    SaveAccount(playerid);
        } 

  2. #2
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    У меня в БД 11 домов, 1,2,3,4,5,6,7,8,9,14,17
    Смените их ID в БД на 1,2,3,4,5,6,7,8,9,10,11.
    Есть мысль, что загружаются в мод они по порядку.

    Либо покажите загрузку домов.
    Skype: vitya.saveliev


  3. #3
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Цитата Сообщение от #Vito Посмотреть сообщение
    Смените их ID в БД на 1,2,3,4,5,6,7,8,9,10,11.
    Есть мысль, что загружаются в мод они по порядку.

    Либо покажите загрузку домов.
    Сменить ID в бд не вариант, вдруг в дальнейшем будет у меня 500 ID и понадобится удалить один дом, править весь БД? Загрузка могу показать, чем она поможет решить мою проблему?

    - - - Добавлено - - -

    PHP код:
    publics OnHouseLoad()
    {
        new 
    timeRun GetTickCount();
        new 
    rowsfields;
        
    cache_get_data(rowsfieldsmysql_connect_ID);
        if(
    rows)
        {
            for(new 
    idx 1idx <= rowsidx++)
            {
                
    HouseInfo[idx][hID] = cache_get_field_content_int(idx-1"id");
                
    HouseInfo[idx][hOwned] = cache_get_field_content_int(idx-1"home_active");
                
    HouseInfo[idx][hClose] = cache_get_field_content_int(idx-1"house_open");
                
    cache_get_field_content(idx-1"player_is_home"HouseInfo[idx][hOwener], mysql_connect_ID24);
                
    HouseInfo[idx][hEnterX][0] = cache_get_field_content_float(idx-1"EnterX");
                
    HouseInfo[idx][hEnterY][0] = cache_get_field_content_float(idx-1"EnterY");
                
    HouseInfo[idx][hEnterZ][0] = cache_get_field_content_float(idx-1"EnterZ");
                
    HouseInfo[idx][hEnterX][1] = cache_get_field_content_float(idx-1"ExitX");
                
    HouseInfo[idx][hEnterY][1] = cache_get_field_content_float(idx-1"ExitY");
                
    HouseInfo[idx][hEnterZ][1] = cache_get_field_content_float(idx-1"ExitZ");
                
    HouseInfo[idx][hEnterZ][2] = cache_get_field_content_float(idx-1"CarX");
                
    HouseInfo[idx][hEnterX][2] = cache_get_field_content_float(idx-1"CarY");
                
    HouseInfo[idx][hEnterY][2] = cache_get_field_content_float(idx-1"CarZ");
                
    HouseInfo[idx][hCarA] = cache_get_field_content_float(idx-1"CarA");
                
    HouseInfo[idx][hPrice] = cache_get_field_content_int(idx-1"housePrice");
                
    HouseInfo[idx][hInt] = cache_get_field_content_int(idx-1"HouseInter");
                
    HouseInfo[idx][hClass] = cache_get_field_content_int(idx-1"HouseClass");
                switch(!
    HouseInfo[idx][hOwned])
                {
                    case 
    0:
                    {
                        
    HouseInfo[idx][hPickupID] = CreatePickup(1952223HouseInfo[idx][hEnterX][0], HouseInfo[idx][hEnterY][0], HouseInfo[idx][hEnterZ][0], -1);
                        
    HouseInfo[idx][hIconID] = CreateDynamicMapIcon(HouseInfo[idx][hEnterX][0], HouseInfo[idx][hEnterY][0], HouseInfo[idx][hEnterZ][0], 31COLOR_WHITE0, -1, -1200.0);
                    }
                    case 
    1:
                    {
                        
    HouseInfo[idx][hPickupID] = CreatePickup(127323HouseInfo[idx][hEnterX][0], HouseInfo[idx][hEnterY][0], HouseInfo[idx][hEnterZ][0], -1);
                        
    HouseInfo[idx][hIconID] = CreateDynamicMapIcon(HouseInfo[idx][hEnterX][0], HouseInfo[idx][hEnterY][0], HouseInfo[idx][hEnterZ][0], 31COLOR_WHITE0, -1, -1200.0);
                    }
                }
                
    TOTALHOUSES++;
            }
        }
        else
        {
        }


  4. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Сменить ID в бд не вариант, вдруг в дальнейшем будет у меня 500 ID и понадобится удалить один дом, править весь БД?
    Тогда нужно делать в таблице дополнительное поле под внутренний индекс дома, под которым этот дом будет храниться в БД, а номер (тот самый, который "9,14,17 ") останется чисто для вида.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. #5
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    PHP код:
    else 
        { 
        } 
    ЭТОШТО?!

    А теперь по теме:

    1. Не обязательно переписывать вручную, можно просто удалить столбик ID в БД, а потом создать заново, и они автоматически перечисляться.

    2. Можно использовать цикл в покупке так:
    PHP код:
    for(new 0TOTALHOUSEi++) 
    3. Если я правильно понял твой код, то в PlayerInfo[playerid][pHouseKey] = i; должен записываться глобальный ID
    То есть, попробуй так:
    PHP код:
    PlayerInfo[playerid][pHouseKey] = HouseInfo[i][hID]; 
    Skype: vitya.saveliev


  6. #6
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Ничего не помогло

  7. #7
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Тут скорей всего проблема в загрузке домов, сделал проверку Pickupid == HouseInfo[14][hID] только для одного дома, и срабатывает у дома с ид 17

  8. #8
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    скорее всего логичней использовать для запросов в бд, отдельную переменную, а для работы в коде, другую...

  9. #9
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    скорее всего логичней использовать для запросов в бд, отдельную переменную, а для работы в коде, другую...
    Можно по подробней или простенький пример?

  10. #10
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    попробуй просто в коде из первого поста, поменять это
    PHP код:
    PlayerInfo[playerid][pHouseKey] = i
    на вот это:
    PHP код:
    PlayerInfo[playerid][pHouseKey] = HouseInfo[i][hID]; 
    но предупреждаю сразу, в дальнейшем если ты будешь использовать pHouseKey для определения номера ячейки соответствующего дома из массива HouseInfo, то у тебя возникнут проблемы.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •