Перейти к содержанию
Maxim_Kovalev

Проверка по модпаку

Рекомендуемые сообщения

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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Shao
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 - перед

Изменено пользователем Shao

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16Shadows

Вы имеете в виду, что Вам при входе показывает хеш вместо сообщения о проверке на на мод-пак? Значит, Вы не скомпилировали/залили изменённую версию AMX-файла.

 

1 час назад, Shao сказал:

if(!strcmp(packhash, "adb4b7dfd56d2f6c", false))

В отредактированном Вами коде логическая ошибка. strcmp возвращает 0, если строки совпадают. Не сложно догадаться из текста диалога, что он должен показываться, когда хеши не совпадают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Maxim_Kovalev

Все равно не выводить диалог, при отсутсвие пака

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Maxim_Kovalev
22 минуты назад, 16Shadows сказал:

Вы имеете в виду, что Вам при входе показывает хеш вместо сообщения о проверке на на мод-пак? Значит, Вы не скомпилировали/залили изменённую версию AMX-файла.

 

В отредактированном Вами коде логическая ошибка. strcmp возвращает 0, если строки совпадают. Не сложно догадаться из текста диалога, что он должен показываться, когда хеши не совпадают.

Не, я все заливал на хостинг

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Maxim_Kovalev
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 - перед

Все равно не выводит окно проверки. Что изменилось, так это если стоит проверка, то не показывает хеш пака, и все

Изменено пользователем Maxim_Kovalev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Shao
34 минуты назад, 16Shadows сказал:

Вы имеете в виду, что Вам при входе показывает хеш вместо сообщения о проверке на на мод-пак? Значит, Вы не скомпилировали/залили изменённую версию AMX-файла.

 

В отредактированном Вами коде логическая ошибка. strcmp возвращает 0, если строки совпадают. Не сложно догадаться из текста диалога, что он должен показываться, когда хеши не совпадают.

Да, спасибо, думал что строки должны совпадать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Shao
6 часов назад, Maxim_Kovalev сказал:

Все равно не выводит окно проверки. Что изменилось, так это если стоит проверка, то не показывает хеш пака, и все

Убери оператор "не"(!) перед strcmp, потому что, как мне уже сказал 16Shadows тебе нужно наоборот, чтобы строки не совпадали, а я сделал, чтобы они совпадали, ведь strcmp всегда возвращает false(0). Остальное же оставь в OnPlayerCommandReceived

Изменено пользователем Shao

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Maxim_Kovalev
17 часов назад, Shao сказал:

Убери оператор "не"(!) перед strcmp, потому что, как мне уже сказал 16Shadows тебе нужно наоборот, чтобы строки не совпадали, а я сделал, чтобы они совпадали, ведь strcmp всегда возвращает false(0). Остальное же оставь в OnPlayerCommandReceived

Не помогло :( Есть еще какие варианты? Мб плагин гонит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16Shadows

Возможно, проблема в этом:

В 1/27/2020 в 2:30 PM, Shao сказал:

Стоит заметить, что каллбек OnPlayerCommandPerformed - вызывается после выполнения команды, а OnPlayerCommandReceived - перед 

Если мне не изменяет память, в OnPlayerCommandPerformed она не доходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Buril

На нестандартном командном процессоре можно провести небольшую хитрость, вручную переписав некоторые строки инклуда. Пример, как я это делал с dc_cmd. После внесённых изменений - всё работало исправно.

Спойлер

agoyzXU.thumb.png.bfc220489319b43103d9bca1ee5c96fb.png

 

Спойлер

	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");

 

 

Изменено пользователем Buril

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.