• 0

Использование проверки на мод пак

Вопросы

Доброго времени суток, уважаемый читатель темы!

Cегодня мы разберем проверку на пользовательский модпак у игрока средствами сервера.

Для начала нам необходимо получить хэш мод пака. 

В OnPlayerConnect вставляем:
 

SendClientMessage(playerid,0x01010101, "$cmd get_custom_hash");

Потом в 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); //И, к примеру, выведем текущий хэш в чат игроку.
    return 1;
}

Если у вас используется не стандартный командный процессор, то OnPlayerCommandText не сработает, добавьте этот код (который скинул выше) в OnPlayerCommandReceived, или же если и такого нет. то в тот паблик который обрабатывает команды. 

Далее зайдите на сервер с подключенным модпаком, листочком и ручкой. При входе выдаст цифры, и буквы, они нам и нужны. Если выводит нули, значит мод пак не подключен. Записывайте цифры в блокнотик, либо доставайте их из логов. После этого команду заменяем в соответствующем паблике. 

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("KickPack", 1000, false, "i", playerid); // кикаем игрока с таймером, дабы не было переподключения
    }
    return 1;
}

И в конец мода:

forward KickPack(playerid);
public KickPack(playerid)
{
    SendClientMessage(playerid, -1, "У вас установлена старая версия модпака, или не установлена вовсе. Установите ее из наших официальных источников!");
    Kick(playerid);
    return true;
}

На этом все!

 

АВТОРЫ - СОСТАВИТЕЛИ: Amfy, SHOROOP, @stibs

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


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

28 ответов на этот вопрос

  • 0

Извеняюсь это был вопрос так как сам не могу до сих пор это решить

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


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

У меня стоит командный процессор pawncmd может там просто другой паблик обрабатывает команды если кто знает подскажите какой

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


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

Приветствую, а что делать если сервер перезагружается если без мод пака то есть нету надписи типо Не установлен пакет модификаций типо надписи нету и сервер перезагружается

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


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

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

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

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

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


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

Войти

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


Войти

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

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