Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 4 из 4 ПерваяПервая ... 2 3 4
Показано с 31 по 38 из 38
  1. #31
    Аватар для Morphone
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.11.2020
    Сообщений
    1
    Репутация:
    0 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Перепроверил на своём ПК, сообщение выводится только один раз. Первая причина, которая приходит в голову - возможно, что баг проявляется в сочетании с другим плагином, который тоже перехватывает IsPlayerConnected(). Чтобы проверить гипотезу, я скопировал плагин "helloworld.dll" в папке "plugins", назвав копию "helloworld_copy.dll", добавил "helloworld_copy" в server.cfg (при этом оставив "helloworld", ибо цель проверить, как два плагина перехватывают одну и ту же функцию). Итог: при вызове IsPlayerConnected() флуда нет (сообщения повторяются 2 раза, но так и должно быть), вряд ли дело в моём коде.
    Проблема актуальна. Тысячу раз выводится сообщение.
    Проверил по очереди отключать другие плагины, обнаружил, что это из-за sscanf

  2. #32
    Аватар для oukibt
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2020
    Сообщений
    26
    Репутация:
    3 ±
    Собственно, я так и не понял, как совместить между собой этот шаблон и sampgdk. Я бы давно использовал sampgdk, но там, почему-то, не работает перехват кастомных нативных функций. Я много у кого об этом спрашивал, и получал один и тот же ответ, сделать примерно вот так:

    1. PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
    2. {
    3. return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
    4. }

    Но увы, это не работало, и при запуске мода с использованием кастомной функции я получал это уведомление.

    В шаблоне это работает, но в нём нельзя делать то, что можно в sampgdk. К примеру использование коллбэков и нативных функций так, как тебе будет нужно.

  3. Пользователь сказал cпасибо:
    execution (22.11.2020)
  4. #33
    Аватар для oukibt
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2020
    Сообщений
    26
    Репутация:
    3 ±
    Проблема решена.

    В файл main.def нужно добавить
    AmxLoad и AmxUnload, ошибки тогда не будет, но консоль просто будет закрываться. Для решения использовать этот код:

    1. extern void *pAMXFunctions;
    2. void *(*logprintf)(const char *fmt, ...);
    3.  
    4. PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
    5. {
    6. pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
    7. logprintf = (void *(*)(const char *fmt, ...))ppData[PLUGIN_DATA_LOGPRINTF];
    8. if (NULL == pAMXFunctions || NULL == logprintf)
    9. return false;
    10. return sampgdk::Load(ppData);
    11. }
    Последний раз редактировалось oukibt; 27.11.2020 в 06:06.

  5. Пользователь сказал cпасибо:
    20th century (24.11.2020)
  6. #34
    Аватар для Greenkey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.06.2021
    Сообщений
    3
    Репутация:
    0 ±
    Наверное, уже несколько неактуально, но все же спрошу. Подскажите, пожалуйста, в чем может быть проблема, если сама библиотека успешно собирается, но подключить ее к серверу не удается (в логах сервера пишет, что плагин не загружен).

    До этого я создал новый проект в своей IDE (shared library), куда импортировал все файлы, предложенные автором, @Daniel_Cortez. Ну, и скомпилировал, предварительно задав компилятор i686-w64-mingw32 и выставив тип сборки Release (хотя и с Debug пробовал).

    Ах, да, запускаю на сервере CR 0.3.7. Но, насколько помню, это допустимо, поскольку адреса функций у CR 0.3.7 и SA совпадают.
    Последний раз редактировалось Greenkey; 07.06.2021 в 01:04.

  7. #35
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Greenkey Посмотреть сообщение
    Наверное, уже несколько неактуально, но все же спрошу. Подскажите, пожалуйста, в чем может быть проблема, если сама библиотека успешно собирается, но подключить ее к серверу не удается (в логах сервера пишет, что плагин не загружен).

    До этого я создал новый проект в своей IDE (shared library), куда импортировал все файлы, предложенные автором, @Daniel_Cortez. Ну, и скомпилировал, предварительно задав компилятор i686-w64-mingw32 и выставив тип сборки Release (хотя и с Debug пробовал).

    Ах, да, запускаю на сервере CR 0.3.7. Но, насколько помню, это допустимо, поскольку адреса функций у CR 0.3.7 и SA совпадают.
    Что за странная мода выдумывать что-то с созданием проекта через IDE, а потом удивляться, почему плагин не работает? В 1-м посте написано, как нужно генерировать проект с помощью CMake. Попробуйте собрать так, как сказано там, и проверьте загрузку собранного плагина сначала на сервере SA-MP, а затем на CR-MP - в таком порядке хотя бы будет понятно, в чём примерно проблема.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #36
    Аватар для Greenkey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.06.2021
    Сообщений
    3
    Репутация:
    0 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Что за странная мода выдумывать что-то с созданием проекта через IDE, а потом удивляться, почему плагин не работает? В 1-м посте написано, как нужно генерировать проект с помощью CMake. Попробуйте собрать так, как сказано там, и проверьте загрузку собранного плагина сначала на сервере SA-MP, а затем на CR-MP - в таком порядке хотя бы будет понятно, в чём примерно проблема.
    Я использую IDE CLion, которая поддерживает работу с CMake. Поэтому напрямую создал проект, и в CMakeLists.txt скопировал Ваш CMakeLists. Собрать через cmake-gui проект CLion невозможно

  9. #37
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Greenkey Посмотреть сообщение
    Я использую IDE CLion, которая поддерживает работу с CMake. Поэтому напрямую создал проект, и в CMakeLists.txt скопировал Ваш CMakeLists. Собрать через cmake-gui проект CLion невозможно
    Тогда помочь могу мало чем, ибо шаблон тестировался только с генерацией проекта из CMake. Создание напрямую из других IDE в теории возможно, но не гарантируется из-за кривизны реализации генерации проектов из CMakeLists в самих IDE.
    В любом случае, попробуйте сначала подключить плагин к серверу SA-MP.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. Пользователь сказал cпасибо:
    Greenkey (10.06.2021)
  11. #38
    Аватар для Greenkey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.06.2021
    Сообщений
    3
    Репутация:
    0 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Тогда помочь могу мало чем, ибо шаблон тестировался только с генерацией проекта из CMake. Создание напрямую из других IDE в теории возможно, но не гарантируется из-за кривизны реализации генерации проектов из CMakeLists в самих IDE.
    В любом случае, попробуйте сначала подключить плагин к серверу SA-MP.
    В один момент задумался: возможно ли использовать компилятор Microsoft Visual Studio в CLion (коль уж с этим компилятором получается вполне рабочая библиотека). После недолгих поисков узнал, что сделать это проще простого. Собрав проект в CLion с использованием компилятора Microsoft Visual Studio, я наконец-то получил рабочую dll-библиотеку.

    Правда... Это несколько смешно: иметь Microsoft Visual Studio, но использовать CLion и компилятор MSVC. Уж больно люблю я JetBrains. А Visual Studio крайне удобна для десктопных приложений.

    В любом случае большое Вам спасибо за потраченное на меня время. Будьте здоровы.
    Последний раз редактировалось Greenkey; 11.06.2021 в 13:32.

 

 
Страница 4 из 4 ПерваяПервая ... 2 3 4

Информация о теме

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

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •