Баг был исправлен, теперь остаётся ждать новую сборку компилятора.
Вид для печати
Баг был исправлен, теперь остаётся ждать новую сборку компилятора.
Есть какой то конфликт с sa-mp-fixes. Если отключить dc_kickfix - компилятор не крашится (компилятор от zeex, последний релиз).
Скрипт:
PHP код:
#include <a_samp>
#include <fixes>
#include <dc_kickfix>
main();
P.S: ziggi я уже отписал на счет этого, оставлю ещё тут.PHP код:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: pawncc.exe
Версия приложения: 3.10.0.0
Отметка времени приложения: 589582de
Имя модуля с ошибкой: PAWNC.dll
Версия модуля с ошибкой: 3.10.0.0
Отметка времени модуля с ошибкой: 589582de
Код исключения: c0000005
Смещение исключения: 0001f4e0
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
Это из-за того, что библиотека sa-mp-fixes переопределяет SetPVarString как CST_SetPVarString. Таким образом, в @__dc_kickfix_sysreq_Workaround появляется не SetPVarString, а CST_SetPVarString. В #emit же данное переопределение не работает, поскольку это директива препроцессора.
Рабочий фикс для DC:
PHP код:
native __dc_workaround_SetPVarString(playerid, varname[], string_value[]) = SetPVarString;
// строка 65
__dc_workaround_SetPVarString(0, str__dc_kickfix__reason, str__dc_kickfix__reason);
// строка 162
#emit sysreq.c __dc_workaround_SetPVarString
Исправлено в версии 1.3.2, ссылка в 1-м посте.
Я исправил это немного другим способом: добавил проверку подключения fixes.inc и наличия в нём исправленном версии SetPVarString - если это всё есть, то SetPVarString вызывается обычным способом, без #emit, а функция @__dc_kickfix_sysreq_Workaround не попадает в *.amx. Но за наводку на CST_SetPVarString всё же спасибо.
Столкнулся с такой проблемой, что если я, имея ид 0, кикаю игрока с ид 1, то кикает не его, а меня. Сообщение о кике доходят как надо, игроку с id 1, вот только кикает меня.. Если использую ImmediateKick, то всё работает идеально. С чем это связано я так и не понял
Не знаю, баг не баг, нооо... у меня почему-то ошибка, когда юзаю BanEx выбивает ошибку ../source/dc_kickfix.inc(165) : error 017: undefined symbol "ARGS_SIZE" (dc_kickfix__BanEx)
Да, это была ошибка в коде перехвата BanEx; спасибо, что сообщили. Исправил этот недочёт в версии 1.3.3 (ссылка в 1-м посте).
Заодно добавил больше комментариев по багам в функции GetPVarString, а также избавился от костылей с #emit - вместо них теперь используется собственное "исправленное" объявление SetPVarString с добавленными квалификаторами const в параметрах "varname" и "string_value".
native __dc_kickfix__SetPVarString(playerid, const varname[], const string_value[]) = SetPVarString;
// Also add a const-correct definition of SetPVarString because Kalcor // is too busy counting money from the Hosted tab to fix the const-correctness issue.
lol