Модульность плагина

Der Helfer

[WCS] Пытается оживить Страйкера
Сообщения
60
Реакции
20
Приветствую, может кто подсказать, как сделать меню, которое само будет добавлять в себя пункты?
Я создаю модульный плагин, и хочу сделать так:
Ядро - создает пустое меню, нативы и форварды.
Модуль - добавляет пункт в меню и обеспечивает его функционал(пункта)
 

Der Helfer

[WCS] Пытается оживить Страйкера
Сообщения
60
Реакции
20
Пишите здесь, другие тоже смогут заглянуть и увидеть подсказки.
Хорошо, все обсуждения буду проводить тут
Сообщения автоматически склеены:

*** Скрытый текст не может быть процитирован. ***
Я так понимаю Stock.sp это тоже ядро, верно?
 

Manifest

Ура, не такой как все
Сообщения
180
Реакции
127
Данный пользователь был уличен в использовании бэкдора в приватных плагинах. Крайне не рекомендуется покупать какие либо товары у пользователя.
Все равно ядро своего мода не дописал... В общем лови.

g_sBaseMenu = new StringMap();
 

Вложения

  • menu_builder.inc
    10.8 КБ · Просмотры: 28

Der Helfer

[WCS] Пытается оживить Страйкера
Сообщения
60
Реакции
20
Все равно ядро своего мода не дописал... В общем лови.

g_sBaseMenu = new StringMap();
Спасибо, но я уже дописал ядро, остались только тесты и исправление ошибок, а также написание модулей
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
в принципе таким образом админменю сделано (файлы adminmenu.sp, adminmenu/dynamicmenu.sp и include/topmenus.inc)
 

Der Helfer

[WCS] Пытается оживить Страйкера
Сообщения
60
Реакции
20
Errors:
L 06/15/2021 - 17:57:54: [SM] Exception reported: Invalid Handle 0 (error: 4)
L 06/15/2021 - 17:57:54: [SM] Blaming: WCS/wcs_exchange_core.smx
L 06/15/2021 - 17:57:54: [SM] Call stack trace:
L 06/15/2021 - 17:57:54: [SM]   [0] ArrayList.FindString
L 06/15/2021 - 17:57:54: [SM]   [1] Line 95, d:\Alpha\sm_1_11_0.6670\scripting\wcs_exchange_core.sp::ItemNameAlreadyExist
L 06/15/2021 - 17:57:54: [SM]   [2] Line 100, d:\Alpha\sm_1_11_0.6670\scripting\wcs_exchange_core.sp::RegisterItem
L 06/15/2021 - 17:57:54: [SM]   [3] Line 53, d:\Alpha\sm_1_11_0.6670\scripting\wcs_exchange_core.sp::ExCore_RegisterItem
L 06/15/2021 - 17:57:54: [SM]   [5] ExCore_RegisterItem
L 06/15/2021 - 17:57:54: [SM]   [6] Line 19, d:\Alpha\sm_1_11_0.6670\scripting\wcs_exchange_module_gold_to_skulls.sp::ExCore_OnLoaded
L 06/15/2021 - 17:57:54: [SM]   [8] Call_Finish
L 06/15/2021 - 17:57:54: [SM]   [9] Line 219, d:\Alpha\sm_1_11_0.6670\scripting\wcs_exchange_core.sp::OnMapStart


Указанные строки:
[1]
C-подобный:
stock bool ItemNameAlreadyExist(const char[] szItemName)

{

    return g_alItemName.FindString(szItemName) > -1;

}

[2]
C-подобный:
stock int RegisterItem(const char[] szItemName)

{

    if(ItemNameAlreadyExist(szItemName)) return -1;

    int iItemID = CreateItemID();

    g_alItemName.PushString(szItemName);

    g_alItemID.Push(iItemID);

    g_iItemsCount += 1;

    RestartSortTimer();

    return iItemID;

}

[3]
C-подобный:
public int ExCore_RegisterItem(Handle hPlugin, int iArgs)

{

    char szItemName[64];

    GetNativeString(1, szItemName, sizeof(szItemName));

    Function fncCallback = GetNativeFunction(2);

    int iItemID = RegisterItem(szItemName);

    if(iItemID != -1)

    {

        DataPack hPack = new DataPack();

        hPack.WriteCell(hPlugin);

        hPack.WriteFunction(fncCallback);

      

        g_alFuncArray.PushString(szItemName);

        g_alFuncArray.Push(hPack);

    }

}

[6]
C-подобный:
public void ExCore_OnLoaded()

{

    ExCore_RegisterItem(g_alItemName, Exchange_GoldToSkulls);

}

[9]
C-подобный:
public void OnMapStart()

{

    g_iItemsCount = -1;

    Call_StartForward(hExCore_OnLoaded);

    Call_Finish();

}
 

Der Helfer

[WCS] Пытается оживить Страйкера
Сообщения
60
Реакции
20
Я все еще пытаюсь понять, почему меню не открывается, если надо - скину исходник, но только в личку
 

Manifest

Ура, не такой как все
Сообщения
180
Реакции
127
Данный пользователь был уличен в использовании бэкдора в приватных плагинах. Крайне не рекомендуется покупать какие либо товары у пользователя.

Der Helfer

[WCS] Пытается оживить Страйкера
Сообщения
60
Реакции
20
В чем проблема заглянуть в мой билдер в посте выше?
Я решил переписать плагин с нуля, желая все постепенно:
1) Создание меню и его отображение ядром
2) Создание API для использования в модулях
3) Проверка работоспособности API

И т.д.
 

Manifest

Ура, не такой как все
Сообщения
180
Реакции
127
Данный пользователь был уличен в использовании бэкдора в приватных плагинах. Крайне не рекомендуется покупать какие либо товары у пользователя.
Я решил переписать плагин с нуля, желая все постепенно:
1) Создание меню и его отображение ядром
2) Создание API для использования в модулях
3) Проверка работоспособности API

И т.д.
Могу расписать простой пример ядро<—>модуль
 

Der Helfer

[WCS] Пытается оживить Страйкера
Сообщения
60
Реакции
20
Вопрос:
C-подобный:
int BuildPath(PathType type, char[] buffer, int maxlength, const char[] fmt, any... ...)
данная функция сама создаст файл?
 
Сверху Снизу