R1KO

fuck society
Сообщения
9,457
Реакции
7,786
Не парьтесь, разработка форка скоро будет закрыта
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
скоро выйдет обнова самого шопа от фроза, там будут исправления и фишки, которые были в форке+другие, так что надобность продолжать работу над форком отпадает
 

BaFeR

Добрый человек
Сообщения
721
Реакции
216
Как можно реализовать исключение,надет ли на игроке скин?
Ну я в курсе,что в скриптинге нуль.Но я просто лез в дб и вводил ид всех скинов.Примерно вот так получилось и работает.
PHP:
(Shop_IsClientItemToggled(client, view_as<ItemId>(1))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(2))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(3))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(4))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(5))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(6))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(7))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(8))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(82))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(83))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(84))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(85))==true)
Но есть ли возможность по другому записать?Так как при новых скинах в шопе нужно все время изменять исходник.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Forever Alone, нет.
PHP:
bool IsClientSkinUse(int iClient)
{
    CategoryId iCatID = Shop_GetCategoryId("имя_категории");
    if(iCatID != INVALID_CATEGORY)
    {
        static const char sItems[][] =
        {
            // Сюда пишешь список предметов
            "имя_предмета_1",
            "имя_предмета_2",
            "имя_предмета_3",
            "имя_предмета_4",
            "имя_предмета_5"
        };
        
        ItemId item_id;
        for(int i = 0; i < sizeof(sItems); ++i)
        {
            item_id = Shop_GetItemId(iCatID, sItems[i]);
            if(item_id != INVALID_ITEM && Shop_IsClientItemToggled(iClient, item_id))
            {
                return true;
            }
        }       
    }

    return false;
}

// использовать так:
if(IsClientSkinUse(iClient))
{
    ...
}
 

BaFeR

Добрый человек
Сообщения
721
Реакции
216
@Forever Alone, нет.
PHP:
bool IsClientSkinUse(int iClient)
{
    CategoryId iCatID = Shop_GetCategoryId("имя_категории");
    if(iCatID != INVALID_CATEGORY)
    {
        static const char sItems[][] =
        {
            // Сюда пишешь список предметов
            "имя_предмета_1",
            "имя_предмета_2",
            "имя_предмета_3",
            "имя_предмета_4",
            "имя_предмета_5"
        };
       
        ItemId item_id;
        for(int i = 0; i < sizeof(sItems); ++i)
        {
            item_id = Shop_GetItemId(iCatID, sItems[i]);
            if(item_id != INVALID_ITEM && Shop_IsClientItemToggled(iClient, item_id))
            {
                return true;
            }
        }      
    }

    return false;
}

// использовать так:
if(IsClientSkinUse(iClient))
{
    ...
}
Проблема тогда не исчезла,придется все равно при каждом новом скине лезть в исходник
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Forever Alone, а это в другом плагине или в самом модуле скинов?
 

BaFeR

Добрый человек
Сообщения
721
Реакции
216
@Forever Alone, а это в другом плагине или в самом модуле скинов?
В другом плагине
Сейчас вот такой код

PHP:
else if (!bSetDefaultModel && (Shop_IsClientItemToggled(client, view_as<ItemId>(1))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(2))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(3))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(4))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(5))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(6))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(7))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(8))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(82))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(83))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(84))==true || Shop_IsClientItemToggled(client, view_as<ItemId>(85))==true))
        return true;
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Forever Alone, ну тогда разве что в этом плагине так же открывать конфиг скинов и парсить его
 

BaFeR

Добрый человек
Сообщения
721
Реакции
216
@Forever Alone, ну тогда разве что в этом плагине так же открывать конфиг скинов и парсить его
А нельзя просто в плагине шоп реализовать натив,который будет сообщать,надет ли какой-либо предмет из категории.
Нельзя же 2 предмета надеть к примеру из категории skins,ты проверяешь категорию и он сообщает,true или false,надет или не надет какой-то предмет из категории соответственно.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Forever Alone,
PHP:
bool IsClientSkinUse(int iClient)
{
    int iSize = 0;
    Handle hArray = Shop_CreateArrayOfItems(iSize);
    if(iSize)
    {
        CategoryId iCatID = Shop_GetCategoryId("имя_категории");
        ItemId item_id;
        for(int i = 0; i < iSize; ++i)
        {
            item_id = Shop_GetArrayItem(hArray, i);
            if(Shop_GetItemCategoryId(item_id) == iCatID && Shop_IsClientItemToggled(iClient, item_id))
            {
               CloseHandle(hArray);
               return true;
            }
        }
    }
   
    CloseHandle(hArray);

    return false;
}
 
Последнее редактирование:

BaFeR

Добрый человек
Сообщения
721
Реакции
216
@Forever Alone,
PHP:
bool IsClientSkinUse(int iClient)
{
    int iSize = 0;
    Handle hArray = Shop_CreateArrayOfItems(iSize);
    if(iSize)
    {
        CategoryId iCatID = Shop_GetCategoryId("имя_категории");
        ItemId item_id;
        for(int i = 0; i < iSize; ++i)
        {
            item_id = Shop_GetArrayItem(hArray, i);
            if(Shop_GetItemCategoryId(item_id) == iCatID && Shop_IsClientItemToggled(iClient, item_id))
            {
                CloseHandle(hArray);
                return true;
            }
        }
    }
 
    CloseHandle(hArray);

    return false;
}
PHP:
bool IsClientSkinUse(int iClient)
{
    int iSize = 0;
    Handle hArray = Shop_CreateArrayOfItems(iSize);
    if(iSize)
    {
        CategoryId iCatID = Shop_GetCategoryId("имя_категории");
        ItemId item_id;
        for(int i = 0; i < iSize; ++i)
        {
            item_id = Shop_GetArrayItem(hArray, i);
            if(Shop_IsClientItemToggled(iClient, item_id) && Shop_GetItemCategoryId(item_id) == iCatID)
            {
                return true;
            }
        }
    }
 
    CloseHandle(hArray);

    return false;
}

....

else if (!bSetDefaultModel && IsClientSkinUse(client) == true)
        return true;
Вставил,но не работает.
--- Добавлено позже ---
Аахахаха,не заметил,имя категории,упс,сорри)
 
Последнее редактирование модератором:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Forever Alone, чуток пофиксил код. была утечка
--- Добавлено позже ---
@Forever Alone, еще раз пофиксил
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Forever Alone,
upload_2017-7-20_19-13-33.png
 

Amirsz

Релаксируем... Ну хотя бы пытаемся
Сообщения
261
Реакции
81
L 08/04/2017 - 22:53:31: [SM] Exception reported: Plugin handle 960096 is invalid (error 3)
L 08/04/2017 - 22:53:31: [SM] Blaming: shop.smx
L 08/04/2017 - 22:53:31: [SM] Call stack trace:
L 08/04/2017 - 22:53:31: [SM] [0] Call_StartFunction
L 08/04/2017 - 22:53:31: [SM] [1] Line 210, shop/functions.sp::Functions_ShowMenu
L 08/04/2017 - 22:53:31: [SM] [2] Line 501, shop.sp::MainMenu_Handler
 
Сверху Снизу