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

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Всем привет.

Занимаюсь разработкой плагина Army Ranks for CSS, я задумался над вопросом: "Как делать из одного плагина ядро и кучу модулей?"
Дак вот, прошу вашей помощи.
1) Что надо вывести для организации динамического меню?
2) Для определения ранга у игрока (Для установки хп и тп.)?

Заранее спасибо!
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
В ядре создаешь глобальное меню и натив (CreateNative), далее создаешь инклюдик, в него вписываешь этот натив, далее в плагине каком-то используешь натив, который создал ранее в ядре
что-то вроде
PHP:
// ядро
new Handle:g_hGlobalMenu = INVALID_HANDLE, g_iItemID = 0;

public APLRes:AskPluginLoad2(Handle:hSelf, bool:bLate, String:szError[], iError_Max)
{
    CreateNative("TEST_RegisterItem", CN_RegisterItem);

    return APLRes_Success;
}

public CN_RegisterItem(Handle:hPlugin, iParams)
{
    decl String:szItemName[16];
    if (GetNativeString(1, szItemName, sizeof(szItemName)) == SP_ERROR_NONE)
    {
        decl String:szItemDescription[64];
        if (GetNativeString(2, szItemDescription, sizeof(szItemDescription)) == SP_ERROR_NONE)
        {
            AddMenuItem(g_hGlobalMenu, szItemName, szItemDescription);

            return g_iItemID++;
        }
    }

    return -1;
}

// В ядре же и регаешь команду, в которой и показываешь меню игроу DisplayMenu(g_hGlobal...)

// инклюдик test.inc
#if defined _stats_included
    #endinput
#endif
#define _stats_included

native TEST_RegisterItem(const String:szItemName[], const String:szItemDecription[]);


// плагин
#include <test>

new g_iItemID = -1;

public OnPluginStart()
{
    if ((g_iItemID = TEST_RegisterItem("test", "test_desc")) != -1)
    {
        // плагин зарегистрирован
    }
}

Добавлено через 3 минуты
Если хочешь отловить, когда клиент нажмет опцию, то создаешь глобальное событие (к примеру: g_hOnItemPressed = CreateGlobalForward("TEST_OnItemPressed", ET_Ignore, Param_Cell, Param_Cell, Param_String, Param_String);)
Далее, в callback меню, то есть MenuHandler главного меню, созданного в ядре, делаешь следующее
PHP:
Call_StartForward(g_hOnItemPressed);
Call_PushCell(iParam1);
Call_PushCell(iParam2);
Call_PushString(szItemName);
Call_PushString(szItemDescription);
Call_Finish();
Соответственно, далее используешь forward в другом плагине. Ну может как-то по другому можно сделать

Добавлено через 5 минут
Событие: world(дефис)source(точка)ru/forum/100-2382-1
Меню: world(дефис)source(Точка)ru/forum/100-2299-1
Функция: world(дефис)ource(Точка)ru/forum/100-2455-1
 
Последнее редактирование:

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Давай, давай, Санёк!) Модели легче тестить)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #7
Alex Tarasenko, советую создать в ядре форвард загрузки и готовности, а в нем уже в модулях нативом добавлять.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #9
Саша Шеин, когда ядро запустилось, подготовило переменные, создало меню и массивы, загеристрировало команды и прочее пусть создает событие Tag_OnLoaded();
А модули уже в этом событии пусть делают что им нужно.
Например у меня в випе при каждой смене карты очищаются все массивы, все меню, а потом создаю событие VIP_OnLoaded() кажется, не помню уже. И модули регистрируют все свои ф-и именно в этом событии, потому что это грарантирует безопасность, т.к. меню уже создано 100% ну и прочее.
А то может выйти что ядро не создало меню или массив, или же не очистило, а модуль запишет туда и будут ошибки.
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
R1KO, то есть можно использовать Army_OnLoaded(); В OnPlyginStart(); ? Или как =(
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
R1KO, Слушай, я вот тут подумал, а можно ли сделать вот так:
У всех игроков есть стандартный скин. Можно ли изъять определенную координату, и к ней привязать material? Допустим сделать картинку звания, и на шлеме, на Плече будет отображаться звания игроков?)

Сложно будет такое реализовываться??
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #12
Alex Tarasenko, честно - не знаю.
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Что-то типо такого!)

bO_Uaa7EuDc.jpg


Вообще по идее это такой скин, а я вот раздумываю можно ли сделать так взяв координаты...

Добавлено через 9 минут
Вообще плагин называется [CSS] Skin Save Rank Nick для евентскрипта, но вот идейка пришла в голову сюда как нибудь присунуть его!)
 
Последнее редактирование:

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Можно попробовать сделать это на подобие [CSS] Hats, но хз...
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Я тут недавно где то читал плагин такой, типо над админом какая то фигня над головой? Может так же реализовать над игроков будет висеть каринка с его званием, такое то возможно я думаю..
 

BenjaminPaul

Code is poetry
Сообщения
177
Реакции
220
Я тут недавно где то читал плагин такой, типо над админом какая то фигня над головой? Может так же реализовать над игроков будет висеть каринка с его званием, такое то возможно я думаю..

Можно лучше сделать.. Для каждого звания замутить модели) значки, и прикрепить их на тело.
И зафигачить их вон в кармашек например)))

OQ56CQSblcK0kk3sd6eTcHqx6MNfgPr0LhNahy4-AqDGreCeeCcXXShee_WvfSNdglwhbewza1tbbfQCFcJz4Q==


А если бы можно было менять текстурки у модели... в реалтайме :(
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
ну вот я что и думал, сделать материалс значки, и цеплять их на тело. За то за что можно зафиксировать её..

Добавлено через 6 минут
Но мне кажется все таки реализовать чтоб звание было вилно всем над головой, было бы покруче)
 
Последнее редактирование:

ThreshHNS

Участник
Сообщения
248
Реакции
87
Alex Tarasenko, будет мешать,лично для меня точно.
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Чем тебе будет мешать висящая сверху картинка? Я понимаю скины лдей отвлекают, но просто бегай и не обращай внимание..

Добавлено через 8 минут
Поэтому и делается модульный плагин.. Можно сделать один вид, а можно и второй вид сделать было бы..)
 
Последнее редактирование:
Сверху Снизу