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

Гость stibs
От Гость stibs в Вопросы / проблемы,
Доброго времени суток, уважаемый читатель темы!

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 ответов