Maxim_Kovalev 0 Опубликовано 27 января, 2020 Как говориться? Либо я гоню, либо сани не едут. Стоит проверка, ну как проверка. Есть код получения хеша, и сама проверка. Ставлю проверку, все равно при заходи показывает хеш. if(strfind(cmdtext, "$response get_custom_hash", true) != -1) { new packhash[64]; strmid(packhash, cmdtext, 26, strlen(cmdtext)); if(strcmp(packhash, "adb4b7dfd56d2f6c", false)) { ShowPlayerDialog(playerid, D_NULL, 0, "{FF9900}МодПак", "{FFFFFF}\nУважаемый игрок. На сервере установлена проверка на пакет модификаци","Хорошо", ""); } return 1; } Т.е проверка не срабатывает, а только получает хеш. Код в паблике - OnPlayerCommandPerformed(playerid, cmdtext[], success) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Shao 116 Опубликовано 27 января, 2020 (изменено) 5 часов назад, Maxim_Kovalev сказал: Как говориться? Либо я гоню, либо сани не едут. Стоит проверка, ну как проверка. Есть код получения хеша, и сама проверка. Ставлю проверку, все равно при заходи показывает хеш. if(strfind(cmdtext, "$response get_custom_hash", true) != -1) { new packhash[64]; strmid(packhash, cmdtext, 26, strlen(cmdtext)); if(strcmp(packhash, "adb4b7dfd56d2f6c", false)) { ShowPlayerDialog(playerid, D_NULL, 0, "{FF9900}МодПак", "{FFFFFF}\nУважаемый игрок. На сервере установлена проверка на пакет модификаци","Хорошо", ""); } return 1; } Т.е проверка не срабатывает, а только получает хеш. Код в паблике - OnPlayerCommandPerformed(playerid, cmdtext[], success) if(strfind(cmdtext, "$response get_custom_hash", true) != -1) { new packhash[16]; format(packhash, sizeof packhash, "%s", cmdtext); if(!strcmp(packhash, "adb4b7dfd56d2f6c", false)) { ShowPlayerDialog ( playerid, D_NULL, DIALOG_STYLE_MSGBOX, "{FF9900}МодПак", "{FFFFFF}\nУважаемый игрок. На сервере установлена проверка на пакет модификаци", "Хорошо", "" ); } } Стоит заметить, что каллбек OnPlayerCommandPerformed - вызывается после выполнения команды, а OnPlayerCommandReceived - перед Изменено 27 января, 2020 пользователем Shao Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 27 января, 2020 Вы имеете в виду, что Вам при входе показывает хеш вместо сообщения о проверке на на мод-пак? Значит, Вы не скомпилировали/залили изменённую версию AMX-файла. 1 час назад, Shao сказал: if(!strcmp(packhash, "adb4b7dfd56d2f6c", false)) В отредактированном Вами коде логическая ошибка. strcmp возвращает 0, если строки совпадают. Не сложно догадаться из текста диалога, что он должен показываться, когда хеши не совпадают. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Maxim_Kovalev 0 Опубликовано 27 января, 2020 Все равно не выводить диалог, при отсутсвие пака Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Maxim_Kovalev 0 Опубликовано 27 января, 2020 22 минуты назад, 16Shadows сказал: Вы имеете в виду, что Вам при входе показывает хеш вместо сообщения о проверке на на мод-пак? Значит, Вы не скомпилировали/залили изменённую версию AMX-файла. В отредактированном Вами коде логическая ошибка. strcmp возвращает 0, если строки совпадают. Не сложно догадаться из текста диалога, что он должен показываться, когда хеши не совпадают. Не, я все заливал на хостинг Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Maxim_Kovalev 0 Опубликовано 27 января, 2020 (изменено) 1 час назад, Shao сказал: if(strfind(cmdtext, "$response get_custom_hash", true) != -1) { new packhash[16]; format(packhash, sizeof packhash, "%s", cmdtext); if(!strcmp(packhash, "adb4b7dfd56d2f6c", false)) { ShowPlayerDialog ( playerid, D_NULL, DIALOG_STYLE_MSGBOX, "{FF9900}МодПак", "{FFFFFF}\nУважаемый игрок. На сервере установлена проверка на пакет модификаци", "Хорошо", "" ); } } Стоит заметить, что каллбек OnPlayerCommandPerformed - вызывается после выполнения команды, а OnPlayerCommandReceived - перед Все равно не выводит окно проверки. Что изменилось, так это если стоит проверка, то не показывает хеш пака, и все Изменено 27 января, 2020 пользователем Maxim_Kovalev Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Shao 116 Опубликовано 27 января, 2020 34 минуты назад, 16Shadows сказал: Вы имеете в виду, что Вам при входе показывает хеш вместо сообщения о проверке на на мод-пак? Значит, Вы не скомпилировали/залили изменённую версию AMX-файла. В отредактированном Вами коде логическая ошибка. strcmp возвращает 0, если строки совпадают. Не сложно догадаться из текста диалога, что он должен показываться, когда хеши не совпадают. Да, спасибо, думал что строки должны совпадать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Shao 116 Опубликовано 27 января, 2020 (изменено) 6 часов назад, Maxim_Kovalev сказал: Все равно не выводит окно проверки. Что изменилось, так это если стоит проверка, то не показывает хеш пака, и все Убери оператор "не"(!) перед strcmp, потому что, как мне уже сказал 16Shadows тебе нужно наоборот, чтобы строки не совпадали, а я сделал, чтобы они совпадали, ведь strcmp всегда возвращает false(0). Остальное же оставь в OnPlayerCommandReceived Изменено 27 января, 2020 пользователем Shao Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Maxim_Kovalev 0 Опубликовано 28 января, 2020 17 часов назад, Shao сказал: Убери оператор "не"(!) перед strcmp, потому что, как мне уже сказал 16Shadows тебе нужно наоборот, чтобы строки не совпадали, а я сделал, чтобы они совпадали, ведь strcmp всегда возвращает false(0). Остальное же оставь в OnPlayerCommandReceived Не помогло :( Есть еще какие варианты? Мб плагин гонит? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 29 января, 2020 Возможно, проблема в этом: В 1/27/2020 в 2:30 PM, Shao сказал: Стоит заметить, что каллбек OnPlayerCommandPerformed - вызывается после выполнения команды, а OnPlayerCommandReceived - перед Если мне не изменяет память, в OnPlayerCommandPerformed она не доходит. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Buril 23 Опубликовано 30 января, 2020 (изменено) На нестандартном командном процессоре можно провести небольшую хитрость, вручную переписав некоторые строки инклуда. Пример, как я это делал с dc_cmd. После внесённых изменений - всё работало исправно. Спойлер Спойлер public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[32], params[128]; // Создаем массив для команды и параметров sscanf(cmdtext, "s[32]s[128]", cmd, params); // Отделяем команду от параметров if(strfind(cmdtext,"$response get_custom_hash",true) != -1) { new packhash[64]; strmid(packhash,cmdtext,26,strlen(cmdtext)); if(strcmp(packhash,"07080b59cbbca4f1",false)) { SendClientMessage(playerid,0xFFFFFFFF,"У Вас не установлен или установлен неверный пакет модификаций."); Kick(playerid); } return 1; } return DC_CMD(playerid, cmdtext); } В OnPlayerConnect: Спойлер SendClientMessage(playerid,0x01010101, "$cmd get_custom_hash"); OnPlayerCommandText(playerid, "$cmd get_custom_hash"); Изменено 30 января, 2020 пользователем Buril Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты