Nex-AC Античит система
#473
Отправлено 25 ноября 2022 - 12:56

Nexius (24 ноября 2022 - 15:01) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
Подключая обработчик диалогов после подключения античита, происходит ошибка (Run time error 19: "File or function is not found").
Если перед античитом, то запускается, сервер работает, диалоги работают.
Если подключить обработчик перед античитом, работа античита по отношению к диалогам будет работать исправно? Можно так оставлять?
PS: Обработчик - tdw_dialog
UPD: Попробовал с mdialog, проблема точно такая же.
Сообщение отредактировал baffaro: 25 ноября 2022 - 12:59
#474
Отправлено 25 ноября 2022 - 15:31

baffaro (25 ноября 2022 - 12:56) писал:
Подключая обработчик диалогов после подключения античита, происходит ошибка (Run time error 19: "File or function is not found").
Подключи crashdetect и посмотри, на что там конкретно вылетает эта ошибка (название функции).
baffaro (25 ноября 2022 - 12:56) писал:
Если подключить обработчик перед античитом, работа античита по отношению к диалогам будет работать исправно? Можно так оставлять?
Если подключать перед античитом, то он не сможет отслеживать вызовы функций показа и скрытия диалога, которые использует любая из этих библиотек для своего функционала. В таком случае будут ложные кики при любом использовании диалогов игроком.
#475
Отправлено 25 ноября 2022 - 18:11

Nexius (25 ноября 2022 - 15:31) писал:
Нажмите сюда, чтобы прочитать это сообщение. [Показать]
[debug] Run time error 19: "File or function is not found" [debug] acc_ShowPlayerDialog [debug] Run time error 19: "File or function is not found" [debug] acc_ShowPlayerDialog Script[gamemodes/mode.amx]: Run time error 19: "File or function is not found"

UPD: Используемый обработчик: mdialog
Сообщение отредактировал baffaro: 25 ноября 2022 - 18:14
#476
Отправлено 25 ноября 2022 - 18:17

А, понятно, проблема в этих обеих библиотеках (и в tdw dialog, и в mdialog) находится здесь и здесь. Вместо обычного перехвата уже имеющегося ShowPlayerDialog они изобретают велосипед, который ломается на существующей цепочке ALS хуков (когда функция хукается где-то ещё помимо них). Тут либо предложить авторам их обновить, либо (учитывая, что оба инклуда вряд ли уже кто-то обновит) переделать самому / найти какой-то другой диалоговый процессор.
Сообщение отредактировал Nexius: 25 ноября 2022 - 18:18
#477
Отправлено 25 ноября 2022 - 19:53

Понял... А можешь подсказать какой-нибудь? - потому что я искал, и либо их дико критикуют за плохой код, с уклоном на память, либо не коннектятся с античитом.
А сам я не напишу.
Хочется работать с обработчиком, потому что очень удобно с точки зрения чтения кода.
UPD: u_dialogs сработал, походу (Ссылка).
А сам я не напишу.
Хочется работать с обработчиком, потому что очень удобно с точки зрения чтения кода.
UPD: u_dialogs сработал, походу (Ссылка).
Сообщение отредактировал baffaro: 28 ноября 2022 - 05:31
#480
Отправлено 29 ноября 2022 - 20:51

Nexius (29 ноября 2022 - 19:55) писал:
Я ими сам, честно говоря, не пользуюсь, потому что кроме синтаксиса работы с диалогами они ровным счетом ничего не меняют.
А в чём вариант плохой, если не секрет?
А в чём вариант плохой, если не секрет?
Для обработки диалога используется это (там реально нужно ставить точки):
DialogResponse:test(playerid, response, ...)

Я полазил в этом инклуде, и там синтаксис следующий:
DialogResponse:test(playerid, response, listitem, inputtext[])

Допустим, я делаю диалог ввода пароля, мне нужен inuttext[].
По логике, я должен сделать так:
DialogResponse:test(playerid, response, inputtext[])

Неважно, ставил я эти троеточия, не ставил, вылетает ошибка. Если написать параметры вместе с listitem - варнинг за его отсутствие.
UPD: Можно сделать так:
DialogResponse:test(playerid, response, listitem, inputtext[]) { if (!response) { ... } else { ... } #pragma unused listitem return 1; }

Но мне кажется это костыль какой-то. Вредно для производительности так делать? Ибо я так понимаю это единственный способ использования обработчиков.
Сообщение отредактировал baffaro: 30 ноября 2022 - 11:39