• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Вывод качества предмета в инвентаре

NoPressF

Умник
Здравствуйте, есть проблема когда игрок открывает инвентарь. Пример: есть у игрока 2 бутылки с водой, но они разного качества. У 1 бутылки с водой качество 1 (Плохое) а у 2 бутылки с водой 4 (Отличное). И когда игрок открывает инвентарь ему показывается только бутылка с водой одного какого то качества.

Инвентарь взял под основу у @oxygenium.

Переменная отвечающая за кол-во предметов в
PHP:
playerItems[MAX_PLAYERS][sizeof iItems];
А за качество
PHP:
itemQuality[MAX_PLAYERS][sizeof iItems];
PHP:
enum pItems
{
    ItemName[MAX_ITEM_NAME_LENGTH],
    Float: ItemWeight,
    ItemDescription[256],
    ItemIsValidValueItem,
    ItemModelid
};

new iItems[ITEM_TYPE_COUNT][pItems] =
{
     {"Бутылка с грязной водой", 0.60, "Отсутствует", INVALID_VALUE_ITEM, 1486}
}

stock Inventory(playerid)
{
    new dialogString[sizeof iItems * (32 + 6) + 20], backpack[58], StringValue[10], playerItemsCount;
    for(new i; i != sizeof iItems; i++)
    {
        if(GetPlayerItemCount(playerid, i) == 0) continue;

        playerItemsCount += GetPlayerItemCount(playerid, i);
       
        format(dialogString, sizeof dialogString,
            "%s\n%i\t%s %s %s\t%.2f кг\n", dialogString, GetPlayerItemCount(playerid, i), iInfo[playerid][i][ItemStringQuality], iItems[i][ItemName], StringValue, iItems[i][ItemWeight]);
    }

    if(!playerItemsCount)
        return SendError(playerid, "Ваш инвентарь пуст!");

    strins(dialogString, "{FFFFFF}Кол\t{FFFFFF}Предмет\t{FFFFFF}Вес 1шт\n", 0);

    format(backpack, sizeof(backpack), "{FFFFFF}%s (%d/%d) %s/%.2f кг", dataText[playerid][StringLevelBackpack], playerItemsCount, pInfo[playerid][maxCountItems], stringFullMaxWeight, pInfo[playerid][maxWeightInventory]);

    DS(playerid, "DialogInventoryPlayer", DSTH, backpack, dialogString, "Выбрать", "Отмена");
    return true;
}

// На самом деле предметов больше чем кажется))
Я знаю почему мне не выводится 2 предмета с разным качеством.
Причина такова, циклfor(new i; i != sizeof iItems; i++) отвечает за последовательный вывод ид предметов (названия). Но никак не за качество каждого предмета.

Вывод: Причина нашёл почему это происходит, а решение Нет.
 
Последнее редактирование:
Сверху Снизу