Регистрация натива

Статус
В этой теме нельзя размещать новые ответы.

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Как правильно зарегистрировать натив?
Пытаюсь таким путём:
public plugin_natives() register_native("Show_RazboyMenu","Show_RazboyMenu",1). Это меню, которое потом буду использовать в главном моде. Само меню идёт отдельным плагином.
В главном моде я лёгкие манипуляции и вписываю это:
native Show_RazboyMenu(iPlayer);. Пытаюсь скомпилировать - всё хорошо. Загружаю на сервер и мне выдаёт такое чудо:
Load fails: Plugin uses an unknown function (name "Show_RazboyMenu") - check your modules.ini.
Что я делаю не так?:cray:
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
С какой целью вообще делается натив для открытия меню? Для этого есть amxclient_cmd. И да, для нативов не нужно использовать стиль 1.
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Код:
register_native("Show_RazboyMenu","Show_RazboyMenu",1)
Разные имена поставь натуву и его функции.
Выучи стиль 0 натив.
Плагин который использует натив поставь ниже того в котором они созданы. (у меня всегда так, не известно имеет ли эффект)
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Для этого есть amxclient_cmd
Было бы всё хорошо, если бы мои знания в скриптинге не были столь ограничены)
Разные имена поставь натуву и его функции.
Поставил - ничего не поменялось :c
Плагин который использует натив поставь ниже того в котором они созданы
Изначально стоял ниже.
4 Май 2019
С какой целью вообще делается натив для открытия меню?
Ну если бы там меню было в строк 20, то я бы просто запихнул в сам главный мод и забил бы на него большой и огромный.
А пока отдельным плагином)
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Ну если бы там меню было в строк 20, то я бы просто запихнул в сам главный мод и забил бы на него большой и огромный.
А пока отдельным плагином)
Не имеет значения отдельный или обычный плагин. Регистрируется обычная консольная команда через register_clcmd и через amxclient_cmd открывается меню игроку.
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Регистрируется обычная консольная команда через register_clcmd и через amxclient_cmd открывается меню игроку
А, я понял о чем речь. Сейчас попробую)
4 Май 2019
Не имеет значения отдельный или обычный плагин
У меня просто все менюшки(именно меню привилегий) идут нативом, и я решил как истинный перфекционист(нет) сделать всё одинаково. Только вот что-то пошло не по плану :D
4 Май 2019
Регистрируется обычная консольная команда
Либо я чего-то не понимаю, либо меня мой сервер не любит)
В меню зарегистрировал команду:
register_clcmd("say /razboymenu", "jb_raz_menu");
В главном моде сделал такую интересную вещь:
case 6: client_cmd(client, "say /razboymenu");

А теперь наблюдаем такую картину: через меню не открывается, а через команду(когда от руки пишешь в чат) открывается.
Что я делаю не так?
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
А теперь наблюдаем такую картину: через меню не открывается, а через команду(когда от руки пишешь в чат) открывается.
Что я делаю не так?
Я же сказал консольную команду а не чат команду. И не client_cmd а amxclient_cmd.
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
w0w, Так?
case 6: amxclient_cmd(client, "razboymenu");

Проблема в том, что всё равно не работает :D
Опять же, от руки всё хорошо(через консоль проверял).
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
Нужен полный код а не обрыганские скрины
 
Сообщения
271
Реакции
348
Помог
15 раз(а)
Если хочешь нативом прям, то регистрируешь натив и в хендлере натива возвращаешь индекс меню.
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
Код:
#include <amxmodx>

public plugin_init()
{
    register_plugin("", "", "AddAnyAuthor");

    register_clcmd("say /menu", "Command_OpenMenu");
}

public plugin_natives()
{
    register_native("open_menu", "native_open_menu");
}

public native_open_menu(iPlayer)
{
    return Command_OpenMenu(iPlayer);
    //Command_OpenMenu(iPlayer) или так
}

public Command_OpenMenu(iPlayer)
{
    client_print(iPlayer, print_chat, "123");

    return PLUGIN_CONTINUE;
}
наговнокодил
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Так и зарегистрировано :c
Нужно тогда смотреть что в хендлере функции.

steelzzz, нативы со стилем 0 так не делаются. К тому же, тогда уж return PLUGIN_HANDLED раз идёт возврат в нативе. Но все равно это очень глупая идея делать через натив.

Код:
#include <amxmodx>

public plugin_init()
{
    register_plugin("", "", "AddAnyAuthor");

    register_clcmd("say /menu", "Command_OpenMenu");
}

public plugin_natives()
{
    register_native("open_menu", "native_open_menu");
}

public native_open_menu(iPlugin, iParams)
{
    enum { player = 1 };

    new iPlayer = get_param(player);

    if(!(1 <= iPlayer <= MaxClients))
        abort(AMX_ERR_NATIVE, "Player out of range (%d)", iPlayer);

    // Если не нужно возвращать то убрать return
    return Command_OpenMenu(iPlayer);
}

public Command_OpenMenu(iPlayer)
{
    client_print(iPlayer, print_chat, "123");

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

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Тему можно закрывать. Нативом получилось сделать.
Косяк был в регистрации натива. Имя функции для других плагинов правильно написал, а саму исполняемую функцию неправильно(ctrl+c, ctrl+v плохо работает :D).
Всем спасибо)
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу