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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±

    Запутался в ID | Прибыль с бизнеса.

    Здравствуйте. Сделал бизнесы, но сам же запутался с ID, т.е. сделал один бизнес - ID 1 у него.(Нефтебаза). С каждой заправки, идет прибыль игроку владеющим данным бизнесом, но на практике, не получается это сделать.
    PHP код:
            if(End_Fuel[i] == true)
            {
                new 
    cena GetPVarInt(i"FUELCENA");
                
    DeletePVar(i,"FUELCENA");
                
                
    End_Fuel[i] = false;
                
    pInfo[i][pMoney] -= cena;
                
    GivePlayerMoney(i, -cena);
                
    SBizInfo[1][sbProfit] += cena;
                
    Fuel[GetPlayerVehicleID(i)] = 101;
            } 
    Где SBizInfo[1][sbProfit] += cena; - 1 Указал как 1 ID бизнеса.
    Как объявлено все:
    PHP код:
    enum e_sbiz_information
    {
        
    sbID,
        
    sbName[30],
        
    sbOwner[MAX_PLAYER_NAME],
        
    sbOwned,
        
    Float:sbenter_pos_x,
        
    Float:sbenter_pos_y,
        
    Float:sbenter_pos_z,
        
    sbPrice,
        
    Text3DsbText,
        
    sbPickup,
        
    sbMapicon,
        
    sbLevel,
        
    sbProfit
    };
    new 
    SBizInfo[100][e_sbiz_information];
    new 
    TOTALSBIZ
    Подскажите, что могу делать не так...

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ты путаешь ID бизнеса и ячейку массива?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Да я в принципе запутался, что я сделал не так.. вроде указываю массив с ID 1 - то бишь 1 ID бизнеса, при логировании всегда 0.. чтобы не делал.

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    А с чего ты взял, что под первой ячейкой массива обязательно будет скрываться первый бизнес? Чтоб было так, нужно соответствующим образом написать загрузку данных, сначала получая ID бизнеса в отдельную переменную, а потом уже значение этой переменной использовать в качестве индекса массива для выгрузки всех остальных данных.

    Сейчас же у тебя, скорее всего, все ID смещены на 1 назад (ID 1 - нулевая ячейка, а не первая). И если это так, то подобный стиль обращения к массиву, который ты используешь, недопустим, если ты не сортируешь ID бизнесов в самой базе, делая их строго по порядку (то бишь, ID бизнеса тогда должен высчитываться для каждого нового бизнеса вручную и при удалении одного из бизнесов все последующие должны смещаться на 1 назад, дабы не было "пробелов" между ID и все они шли по-порядку).
    Последний раз редактировалось DeimoS; 08.09.2018 в 11:29.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #5
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Ну вот моя загрузка на данный момент:
    PHP код:
    forward LoadSBiznes();
    public 
    LoadSBiznes()
    {
        new 
    rows;
         
    cache_get_row_count(rows);
        if(
    rows)
        {
            static const 
    h_null[] = "{FFDEAD}[ID: {FFFFFF}%d{FFDEAD}]\n%s\n{FFDEAD}Владелец: {FFFFFF}Нет\n{FFDEAD}Стоимость: {FFFFFF}%d\n{FFDEAD}Уровень: {FFFFFF}%d";
            static const 
    h_not_null[] = "{FFDEAD}[ID: {FFFFFF}%d{FFDEAD}]\n%s\n{FFDEAD}Владелец: {FFFFFF}%s";

            new 
    h_buff[sizeof(h_null) + ((3-2) + (24-2) + (30-2) + (20-2) + (5-2))];

            for(new 
    0rowsb++)
            {
                
    cache_get_value_name(b,"name_sbiz",SBizInfo[b][sbName], 30);
                
    cache_get_value_name_int(b,"id",SBizInfo[b][sbID]);
                
    cache_get_value_name(b,"owner",SBizInfo[b][sbOwner],MAX_PLAYER_NAME);
                
    cache_get_value_name_int(b"owned"SBizInfo[b][sbOwned]);
                
    cache_get_value_name_float(b"enter_pos_x"SBizInfo[b][sbenter_pos_x]);
                
    cache_get_value_name_float(b"enter_pos_y"SBizInfo[b][sbenter_pos_y]);
                
    cache_get_value_name_float(b"enter_pos_z"SBizInfo[b][sbenter_pos_z]);
                
    cache_get_value_name_int(b"price"SBizInfo[b][sbPrice]);
                
    cache_get_value_name_int(b"level"SBizInfo[b][sbLevel]);
                
    cache_get_value_name_int(b"profit"SBizInfo[b][sbProfit]);

                
    TOTALSBIZ++;
                if(!
    SBizInfo[b][sbOwned])
                {
                    
    format(h_buffsizeof(h_buff), h_nullSBizInfo[b][sbID], SBizInfo[b][sbName], SBizInfo[b][sbPrice],SBizInfo[b][sbLevel]);
                    
    SBizInfo[b][sbPickup] = CreatePickup(12391SBizInfo[b][sbenter_pos_x], SBizInfo[b][sbenter_pos_y], SBizInfo[b][sbenter_pos_z], -1);
                    
    SBizInfo[b][sbText]  = Create3DTextLabel(h_buff0x008080FFSBizInfo[b][sbenter_pos_x], SBizInfo[b][sbenter_pos_y], SBizInfo[b][sbenter_pos_z], 70);
                }
                else
                {
                    
    format(h_buffsizeof(h_buff), h_not_nullSBizInfo[b][sbID], SBizInfo[b][sbName], SBizInfo[b][sbOwner]);
                    
    SBizInfo[b][sbPickup] = CreatePickup(12391SBizInfo[b][sbenter_pos_x], SBizInfo[b][sbenter_pos_y], SBizInfo[b][sbenter_pos_z], -1);
                    
    SBizInfo[b][sbText]  = Create3DTextLabel(h_buff0xFFFFFFSBizInfo[b][sbenter_pos_x], SBizInfo[b][sbenter_pos_y], SBizInfo[b][sbenter_pos_z], 7.00);
                }
            }
        }
        
    printf("[ЗАГРУЖЕНО CБИЗНЕСОВ]: <%d>."TOTALSBIZ);
        return 
    1;


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

    Статус
    Оффлайн
    Регистрация
    13.06.2018
    Сообщений
    58
    Репутация:
    1 ±
    SBizInfo[1-1][sbProfit] += cena;

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Делать, как показали выше, не стоит, ибо если решишь однажды изменить порядок бизнесов - всё сломается. И даже если ты думаешь, что не будешь менять порядок, всё равно не стоит так делать.

    У тебя ID бизнеса в таблице - это не одно и то же, что и индекс массива. Перед тем, как что-то делать с бизнесом, тебе сначала нужно запустить цикл на все бизнесы и начать проверять значение SBizInfo[b][sbID] с тем значением, которое записано у игрока в переменную с ID бизнеса. Собственно, та итерация, на которой сработает условие, и будет нужным индексом.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #8
    Аватар для Paradox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.06.2015
    Адрес
    Запорожье
    Сообщений
    117
    Репутация:
    1 ±
    Может потому что бизнес в бд под 1 идом, а а на сервере под нулевым? нет?

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

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Цитата Сообщение от Paradox Посмотреть сообщение
    Может потому что бизнес в бд под 1 идом, а а на сервере под нулевым? нет?
    Я когда-то так забросил заниматься одним модом, потому что была такая же проблема, надо делать правильную формулу подсчета, коя у меня не особо хорошо получилась.

    И да, скорей всего, у него такая проблема и есть)

  10. #10
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от NichWell Посмотреть сообщение
    Я когда-то так забросил заниматься одним модом, потому что была такая же проблема, надо делать правильную формулу подсчета, коя у меня не особо хорошо получилась.

    И да, скорей всего, у него такая проблема и есть)
    Да проблема такая и есть, потому что бизнесы начинаются не с 0 ID

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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