White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #1,422
Не ужели нельзя добавить в ядро дебаг какой то чтобы хоть писал OnItemRegistered какой предмет или категория.
Это же не уникальная по факту ошибка
Было бы неплохо, я думаю можно.
 

Larsalex

Сообщения
812
Реакции
404
Было бы неплохо, я думаю можно.
Я попросил бы все фразы(переводы) разделить на уникальные ключи, т.е чтоб 1 фраза в одном месте использовалась, а не как ключ "buy", например, который более чем в 2-3 местах юзается;)
 
Последнее редактирование модератором:

gotmerollie

Участник
Сообщения
103
Реакции
10
При входе на сервер пишет данное сообщение:
Ваши данные магазина были загружены! Введите в чате !shop для доступа к магазину!
Как его удалить?
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@♂dungeon master♂, двигло отбрасывает и не показывает абсолютно пустые сообщения, там обязательно хотя бы пробел должен быть. Ну возможно, что в ксго это работает иначе, но тогда вопрос к Вентилям.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Error не должен быть если изменить или удалить только текст сообщения
Error будет, так как файл переводов - это KeyValues структура, а он не парсит пустые ключи ввида:
C-подобный:
"phrase name"
{
}
 

Вложения

  • 1654278504337.png
    1654278504337.png
    19.6 КБ · Просмотры: 19

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@iLoco, говорят сам текст убрать, а ключ с языком оставить. Про оставление секции в целиком пустом виде никто ничего не говорит.
 

Larsalex

Сообщения
812
Реакции
404
@♂dungeon master♂, двигло отбрасывает и не показывает абсолютно пустые сообщения, там обязательно хотя бы пробел должен быть. Ну возможно, что в ксго это работает иначе, но тогда вопрос к Вентилям.
1654279420523.png


пысы: сообщение до присоединения к команде - оно тоже пустое))
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@♂dungeon master♂, ну я вроде не просто так упомянул про пробелы.
И пользовательский чат совершенно отдельный механизм. При отправке обычного сообщения в чат плагином, если оно ничего не содержит (хотя бы пробела), то даже место под него на экране не выделяется.
 

OneMore

Участник
Сообщения
52
Реакции
7
Пишу плагин для Shop, хочу сделать купленные предметы "disabled" в меню.
Включил Shop_ItemDisplayCallback, в нем по условию переменную disabled из вызова делаю true. Но при этом в магазине предмет всё равно остается не disabled и может быть выбран.
У кого-то получалось это сделать? Где искать косяк? По логам проверяю, функция вызывается, disabled присваивается. А результата нет :(
C-подобный:
Shop_SetCallbacks(_, OnEquipItem, _, OnDisplayItem, _, OnPreviewItem, OnItemBought);
C-подобный:
public bool OnDisplayItem(int client, CategoryId category_id, const char[] category, ItemId item_id, const char[] item, ShopMenu menu, bool &disabled, const char[] name, char[] buffer, int maxlen)
{
   if (condition)
   {
     disabled = true;
    }
    return true;
}

Проверил до функции ItemManager_FillItemsOfCategory в файле item_manager.sp
Она получает disabled как true для нужного предмета. А в меню всё равно он активный :(
Вот где это (LogMessage мои для дебага)
C-подобный:
            bool disabled = false;
            if (!ItemManager_OnItemDisplay(plugin, callback_display, source_client, category_id, category, item_id, item, inventory ? Menu_Inventory : Menu_Buy, disabled, display, display, sizeof(display)))
            {
//                LogMessage("Shop Core disabled item %s %s", item, disabled ? "Yes" : "No");
                disabled = false;
            }
           
            h_KvItems.JumpToKey(sItemId);
//            LogMessage("Shop Core 2 disabled item %s %s", item, disabled ? "Yes" : "No");
            if (bShouldDisplay)
                menu.AddItem(sItemId, display, disabled ? ITEMDRAW_DISABLED : ITEMDRAW_DEFAULT);

Может лучше в скриптинг перенести?
Сообщения автоматически склеены:

Проверьте новое ядро.
Короче бага. Сорри, я не силен в гитхабе, поэтому запощу здесь. Поправьте в следующих релизах, пожалуйста.

В shop.sp функция
public int OnItemSelect(Menu menu, MenuAction action, int param1, int param2)
В разделе case MenuAction_DrawItem забыли, что до этого строку уже могли сделать disabled и игнорируют этот факт. Поэтому я справедливость восстановил. Вот так должна быть эта часть:
C-подобный:
case MenuAction_DrawItem :
        {
            char info[16];
            int style;
            menu.GetItem(param2, info, sizeof(info), style);
            bool disabled;
            
            switch (Forward_OnItemDraw(param1, bInv[param1] ? Menu_Inventory : Menu_Buy, iClCategoryId[param1], StringToInt(info), disabled))
            {
                case Plugin_Continue:
                {
                    disabled = false;
                }
                case Plugin_Handled, Plugin_Stop:
                {
                    menu.RemoveItem(param2);
                    return 0;
                }
            }
            if (disabled)
            {
                return ITEMDRAW_DISABLED;
            }
            else
                return style;
 
Последнее редактирование:

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #1,436
Пишу плагин для Shop, хочу сделать купленные предметы "disabled" в меню.
Включил Shop_ItemDisplayCallback, в нем по условию переменную disabled из вызова делаю true. Но при этом в магазине предмет всё равно остается не disabled и может быть выбран.
У кого-то получалось это сделать? Где искать косяк? По логам проверяю, функция вызывается, disabled присваивается. А результата нет :(
C-подобный:
Shop_SetCallbacks(_, OnEquipItem, _, OnDisplayItem, _, OnPreviewItem, OnItemBought);
C-подобный:
public bool OnDisplayItem(int client, CategoryId category_id, const char[] category, ItemId item_id, const char[] item, ShopMenu menu, bool &disabled, const char[] name, char[] buffer, int maxlen)
{
   if (condition)
   {
     disabled = true;
    }
    return true;
}

Проверил до функции ItemManager_FillItemsOfCategory в файле item_manager.sp
Она получает disabled как true для нужного предмета. А в меню всё равно он активный :(
Вот где это (LogMessage мои для дебага)
C-подобный:
            bool disabled = false;
            if (!ItemManager_OnItemDisplay(plugin, callback_display, source_client, category_id, category, item_id, item, inventory ? Menu_Inventory : Menu_Buy, disabled, display, display, sizeof(display)))
            {
//                LogMessage("Shop Core disabled item %s %s", item, disabled ? "Yes" : "No");
                disabled = false;
            }
          
            h_KvItems.JumpToKey(sItemId);
//            LogMessage("Shop Core 2 disabled item %s %s", item, disabled ? "Yes" : "No");
            if (bShouldDisplay)
                menu.AddItem(sItemId, display, disabled ? ITEMDRAW_DISABLED : ITEMDRAW_DEFAULT);

Может лучше в скриптинг перенести?
Сообщения автоматически склеены:


Короче бага. Сорри, я не силен в гитхабе, поэтому запощу здесь. Поправьте в следующих релизах, пожалуйста.

В shop.sp функция
public int OnItemSelect(Menu menu, MenuAction action, int param1, int param2)
В разделе case MenuAction_DrawItem забыли, что до этого строку уже могли сделать disabled и игнорируют этот факт. Поэтому я справедливость восстановил. Вот так должна быть эта часть:
C-подобный:
case MenuAction_DrawItem :
        {
            char info[16];
            int style;
            menu.GetItem(param2, info, sizeof(info), style);
            bool disabled;
           
            switch (Forward_OnItemDraw(param1, bInv[param1] ? Menu_Inventory : Menu_Buy, iClCategoryId[param1], StringToInt(info), disabled))
            {
                case Plugin_Continue:
                {
                    disabled = false;
                }
                case Plugin_Handled, Plugin_Stop:
                {
                    menu.RemoveItem(param2);
                    return 0;
                }
            }
            if (disabled)
            {
                return ITEMDRAW_DISABLED;
            }
            else
                return style;
Создал PR, но было бы неплохо чтобы вы фигурировали там тоже и спасибо за найденый баг.
 

CoMaR

Участник
Сообщения
35
Реакции
0
Подскажите пожалуйста как можно выключит эту надпись?

pAsO0N2.png
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Подскажите пожалуйста как можно выключит эту надпись?

Посмотреть вложение 97464
Читайте ниже что написано
 

hirowatch

Живет ХЛмод`ом
Сообщения
2,722
Реакции
1,634
C-подобный:
bool ToggleItemEx(int client, const char[] sItemId, ToggleState toggle, bool by_native = false, bool load = false)
{
    if (!PlayerManager_ClientHasItemEx(client, sItemId))
    {
        return false;
    }
    ShopAction action = ItemManager_OnUseToggleItemEx(client, sItemId, by_native, toggle);
    if (action == Shop_Raw)
    {
        return false;
    }
    return PlayerManager_ToggleItemEx(client, sItemId, action, load);
}

bool UseItem(int client, int item_id, bool by_native)
{
    if (!PlayerManager_ClientHasItem(client, item_id))
    {
        return false;
    }
    ShopAction action = ItemManager_OnUseToggleItem(client, item_id, false, Toggle, true);
    if (action != Shop_Raw)
    {
        return PlayerManager_RemoveItem(client, item_id);
    }
    if (by_native)
    {
        return true;
    }
    return false;
}

Да? А ошибки точно не будет? Попахивает ошибками
 

OneMore

Участник
Сообщения
52
Реакции
7
Создал PR, но было бы неплохо чтобы вы фигурировали там тоже и спасибо за найденый баг.
Ок, спасибо. Посмотрю уже где-нибудь видео как пользоваться гитхабом и подключусь :)
 
Сверху Снизу