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

помогите сделать проверку на мод-пак

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

Александк

помогите сделать проверку на мод-пак. хеш уже есть, нужно сделать стоб человека кикнуло и в чате писало если у него нет мод-пака

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


Ссылка на сообщение
Поделиться на другие сайты
Reyn
25 минут назад, Александк сказал:

помогите сделать проверку на мод-пак. хеш уже есть, нужно сделать стоб человека кикнуло и в чате писало если у него нет мод-пака

Если процессор pawn.cmd попробуйте поэксперементировать добавив код ниже в данные паблики: OnPlayerCommandReceived / OnPlayerCommandPerformed

В public OnPlayerCommandText

 

if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
	{
	   	new packhash[64]; //Создадим массив, в котором будет находится этот хэш
	   	strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
		if(strcmp(packhash, "Тут твой хэш", false))
	   	{
	   	    SetTimerEx("ProverkaPack",5000,false, "i", playerid);
	   	}
	   	return 1;

 

Затем

 

public ProverkaPack(playerid)
{
    SendClientMessage(playerid,-1,"тут текст который будет выводить игроку в чат если у него не установлен МодПак");
	Kick(playerid);
}
Изменено пользователем Reyn

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


Ссылка на сообщение
Поделиться на другие сайты
Александк
В 6/16/2019 в 9:06 PM, Reyn сказал:

Если процессор pawn.cmd попробуйте поэксперементировать добавив код ниже в данные паблики: OnPlayerCommandReceived / OnPlayerCommandPerformed


В public OnPlayerCommandText

 


if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
	{
	   	new packhash[64]; //Создадим массив, в котором будет находится этот хэш
	   	strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
		if(strcmp(packhash, "Тут твой хэш", false))
	   	{
	   	    SetTimerEx("ProverkaPack",5000,false, "i", playerid);
	   	}
	   	return 1;

 

Затем

 


public ProverkaPack(playerid)
{
    SendClientMessage(playerid,-1,"тут текст который будет выводить игроку в чат если у него не установлен МодПак");
	Kick(playerid);
}

У меня в моде командный процессор pawncmd,  public OnPlayerCommandText из-за другого командного процессора не работает

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


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

У меня в моде командный процессор pawncmd,  public OnPlayerCommandText из-за другого командного процессора не работает

Допустим тот же самый Exciting(там процессор DC_CMD), в нём всё же работало(имею ввиду проверка).

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


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

Допустим тот же самый Exciting(там процессор DC_CMD), в нём всё же работало(имею ввиду проверка).

Значит они код изменили под свой процессор

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


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

Значит они код изменили под свой процессор

Чё? У них идентичная проверка, эту проверку все юзают. Даже тот самый санрайс(у которого также DC_CMD).

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


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

Чё? У них идентичная проверка, эту проверку все юзают. Даже тот самый санрайс(у которого также DC_CMD).

Ну я вот пробовал ставить эту проверку на старый мод 2015 года, там работало, а на новом нет

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


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

Пожалуй как-то по другому распишу(мб сработает).

В public OnPlayerCommandText:

if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
    {
     new packhash[64]; //Создадим массив, в котором будет находится этот хэш
     strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
     SendClientMessage (playerid, 0xFFFFFFFF, packhash); //И, к примеру, выведем текущий хэш в чат игроку.
     printf("%s", packhash);
     return 1;
    }

Затем зайди на сервер, там будет число(хэш), который следовательно введешь потом.

После того как запомнил хэш, можешь удалять код, который выше и переходишь обратно в public OnPlayerCommandText и вставляешь это:

if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
    {
         new packhash[64]; //Создадим массив, в котором будет находится этот хэш
         strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
        if(strcmp(packhash, "Тут твой хэш", false))
         {
          SetTimerEx("ProverkaPack",5000,false, "i", playerid);
         }
         return 1;

 

Там где написано "Тут твой хэш", вставляешь то число которое у тебя писало при заходе на сервер.

А также не забудь сток/паблик на проверку самого пака:

stock ProverkaPack(playerid)
{
	SendClientMessage(playerid,-1,"мод-пак не установлен, а значит Вы были кикнуты с сервера.");
    Kick(playerid);
	return 1;
}

Если  уж и это не помогло, то конкретнее тогда, кидай ошибки какие есть или что там у тебя?

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

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


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

Пожалуй как-то по другому распишу(мб сработает).

В public OnPlayerCommandText:


if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
    {
     new packhash[64]; //Создадим массив, в котором будет находится этот хэш
     strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
     SendClientMessage (playerid, 0xFFFFFFFF, packhash); //И, к примеру, выведем текущий хэш в чат игроку.
     printf("%s", packhash);
     return 1;
    }

Затем зайди на сервер, там будет число(хэш), который следовательно введешь потом.

После того как запомнил хэш, можешь удалять код, который выше и переходишь обратно в public OnPlayerCommandText и вставляешь это:


if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
    {
         new packhash[64]; //Создадим массив, в котором будет находится этот хэш
         strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
        if(strcmp(packhash, "Тут твой хэш", false))
         {
          SetTimerEx("ProverkaPack",5000,false, "i", playerid);
         }
         return 1;

 

Там где написано "Тут твой хэш", вставляешь то число которое у тебя писало при заходе на сервер.

А также не забудь сток/паблик на проверку самого пака:


stock ProverkaPack(playerid)
{
	SendClientMessage(playerid,-1,"мод-пак не установлен, а значит Вы были кикнуты с сервера.");
    Kick(playerid);
	return 1;
}

Если  уж и это не помогло, то конкретнее тогда, кидай ошибки какие есть или что там у тебя?

      public OnPlayerCommandText не задействован никак в моде, только public OnPlayerCommandReceived

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


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

Добавь тогда к publicam, если нет.

public OnPlayerCommandText(playerid, cmdtext[])

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


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

Добавь тогда к publicam, если нет.

public OnPlayerCommandText(playerid, cmdtext[])

if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
    {
         new packhash[64]; //Создадим массив, в котором будет находится этот хэш
         strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
        if(strcmp(packhash, "Тут твой хэш", false))
         {
          SetTimerEx("ProverkaPack",5000,false, "i", playerid);
         }
         return 1;

из-за этого 26 ерроров

 

Изменено пользователем Александк

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


Ссылка на сообщение
Поделиться на другие сайты
Reyn
9 минут назад, Александк сказал:

if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
    {
         new packhash[64]; //Создадим массив, в котором будет находится этот хэш
         strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
        if(strcmp(packhash, "Тут твой хэш", false))
         {
          SetTimerEx("ProverkaPack",5000,false, "i", playerid);
         }
         return 1;

из-за этого 26 ерроров

 

В инклуде pawncmd можно включить если не ошибаюсь OnPlayerCommandText

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


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

Добавь тогда к publicam, если нет.

public OnPlayerCommandText(playerid, cmdtext[])

if(strfind(cmdtext, "$response get_custom_hash", true) != -1) //Если ответ получен и искомая строка найдена
    {
         new packhash[64]; //Создадим массив, в котором будет находится этот хэш
         strmid(packhash, cmdtext, 26, strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
        if(strcmp(packhash, "Тут твой хэш", false))
         {
          SetTimerEx("ProverkaPack",5000,false, "i", playerid);
         }
         return 1;

26 ерроров из-за этого 

 

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


Ссылка на сообщение
Поделиться на другие сайты
Александк
1 час назад, Reyn сказал:

В инклуде pawncmd можно включить если не ошибаюсь OnPlayerCommandText

blob.thumb.png.4b658408487b87b8ce3c154a2b960c66.pngblob.thumb.png.67845e59fa8e94e121f086bdde45585c.png

Изменено пользователем Александк

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


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

blob.thumb.png.4b658408487b87b8ce3c154a2b960c66.pngblob.thumb.png.67845e59fa8e94e121f086bdde45585c.png

Вставь в OnPlayerCommandText(если есть ерроры - сюда). Т.к в этом паблике аргумента cmdtextа тупо нет.

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


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

blob.thumb.png.4b658408487b87b8ce3c154a2b960c66.pngblob.thumb.png.67845e59fa8e94e121f086bdde45585c.png

cmdtext замени на cmd

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


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

А что такое "Хеш"?

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

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


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

Хеш (хеш-сумма, hash)

Изменено пользователем 16Shadows
  • Like 1

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


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

Хеш (хеш-сумма, hash)

Для чего она нужна? И где ее взять?

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


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

Последний раз отвечу в теме. Лучше создайте отдельную тему, если у Вас есть вопросы.

Хеш-сумма в основном используется для проверки целостности конкретного объекта (файла, строки и т.д.). Получаются они в результате использования хеш-функций, которых существует достаточно много.

Если же говорить о хеше в CRMP (или SAMP), то подразумевается хеш-сумма файлов игры (если не изменяет память, хеш-сумма файла models/gta3.img). Получить её можно, передав в функцию SendClientMessage(...) третьим аргументом строку "$cmd get_custom_hash", а затем воспользовавшись кодом, о котором речь идёт выше.

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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