Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 4 из 4 ПерваяПервая ... 2 3 4
Показано с 31 по 33 из 33
  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
    Сообщений
    8
    Репутация:
    2 ±
    Собственно, я так и не понял, как совместить между собой этот шаблон и 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
    Сообщений
    8
    Репутация:
    2 ±
    Проблема решена.

    В файл 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. }

  5. Пользователь сказал cпасибо:
    20th century (24.11.2020)
 

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

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

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

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

Ваши права

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