Перейти к содержимому

Уважаемый гость, если у Вас возникли проблемы с регистрацией, просьба обратиться в тех.поддержку или на почту admin@pawno-crmp.ru

Для полного доступа ко всем функциям форума, Вам необходимо зарегистрироваться и авторизоваться.

Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 48

#1
offline   SHOROOP

SHOROOP
  • 95
    • Сообщений: 57
    • Регистрация: 30.01.14

Доброго времени суток, господа.

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

Как писал на форумах самп.ком DimonML, существуют несколько специальных команд, отсылаемых сервером клиенту. Одна из них позволяет получить хэш установленного модпака.
Для того, чтобы отослать эту команду, необходимо использовать следующее выражение:

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

В принципе, отослать его можно где угодно (естественно, в том коллбэке, где используется playerid), но я рекомендую отправлять непосредственно в OnPlayerConnect. Однако возможны случаи, когда клиент, уже будучи кикнутым, считает, что подключения не произошло, и отправляет запрос на переподключение - в таком случае команду можно отослать в другом месте. К примеру, при вызове первого диалогового окна авторизации/регистрации.

Далее, от клиента в коллбэк OnPlayerCommandText должен поступить ответ следующего вида:

 
$response get_custom_hash ХэшМодпака

Его мы проверять и будем. В шапке OnPlayerCommandText используем функцию strfind.

 
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;
}

Далее все необходимые действия мы будем проводить уже после получения хэша в packhash.
К примеру, если нужно кикнуть игрока в случае, если хэш модпака не соответствует эталонному:

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

Как видите, ничего сложного.
Что делать с игроком при несоответствии - решать уже программисту. Основную логику проверки и скрипт-пример я привел.

Надеюсь, урок окажется полезным. Если возникнут вопросы - задавайте, постараюсь ответить.


Amfy (30 Сентябрь 2015 - 12:24):
На всякий случай: CLICK

  • 10

#2
offline   hell002

hell002
  • 1
    • Сообщений: 1
    • Регистрация: 25.06.14

А видео можно??


  • 1

#3
offline   Neat

Neat
  • 983
    • Сообщений: 2 392
    • Регистрация: 21.12.13

А видео можно??

Какое видео?


  • 0

#4
offline   Amfy

Amfy
  • 1548
    • Сообщений: 3 005
    • Регистрация: 24.01.14

Дожили.. hell002, вы хотите чтобы кто-нибудь снял видео как вставить проверку в мод?  :smile11:


  • 2

#5
offline   denisz

denisz
  • 29
    • Сообщений: 293
    • Регистрация: 26.06.14

Дожили.. hell002, вы хотите чтобы кто-нибудь снял видео как вставить проверку в мод?  :smile11:

Я хочу чтобы кто-нибудь снял видео


Roman (07 Июль 2014 - 08:45):
Тогда тебе в "Стол заказов",там даже кино снимут...

  • 0

#6
offline   FredyKruger

FredyKruger
  • 0
    • Сообщений: 15
    • Регистрация: 19.05.14

Вообшем зделал все правельно не кикает а реконектит подскажите мод Павлодар


Сообщение отредактировал FredyKruger: 24 Июль 2014 - 09:39

  • 0

#7
online   compan

compan
  • 664
    • Сообщений: 1 995
    • Регистрация: 13.03.14

Вообшем зделал все правельно не кикает а реконектит подскажите мод Павлодар

В смысле реконектит?


  • 0

#8
offline   SHOROOP

SHOROOP
  • 95
    • Сообщений: 57
    • Регистрация: 30.01.14

 

Вообшем зделал все правельно не кикает а реконектит подскажите мод Павлодар

В смысле реконектит?

 

Ну пихните отсылку команды клиенту не в OnPlayerLogin, а, к примеру, в OnPlayerSpawn. Или перед вызовом окна авторизации, если таковое есть.


  • 3

#9
offline   AMD71

AMD71
  • 18
    • Сообщений: 14
    • Регистрация: 12.07.14

Вообшем зделал все правельно не кикает а реконектит подскажите мод Павлодар

 

Значит что-то всё-таки не верно,я поставил-всё идёт



#10
offline   iPsTrange

iPsTrange
  • 136
    • Сообщений: 128
    • Регистрация: 19.07.14

Ребят,вот подскажите у меня мод мускул sscanf,и паблика OnPlayerCommandText нету ,ну даже если в другое место в пихну будет ошибка что "cmdtext"-help!


Сообщение отредактировал iPsTrange: 09 Январь 2015 - 17:34


#11
offline   Neat

Neat
  • 983
    • Сообщений: 2 392
    • Регистрация: 21.12.13

Ребят,вот подскажите у меня мод мускул sscanf,и паблика OnPlayerCommandText нету ,ну даже если в другое место в пихну будет ошибка что "cmdtext"-help!

OnPlayerCommandPerformed


  • 2

#12
offline   Stip

Stip
  • 54
    • Сообщений: 140
    • Регистрация: 16.08.14

Сделал все верно,но когда захожу без модпака,он не кикает,а просто норм все,как сделать?


  • 0

#13
offline   forestgun

forestgun
  • 22
    • Сообщений: 159
    • Регистрация: 25.08.14

Люди а как сделать так чтоб нужен был именно мой мод-пак я не знаю что там за менить


  • 0

#14
online   compan

compan
  • 664
    • Сообщений: 1 995
    • Регистрация: 13.03.14

Люди а как сделать так чтоб нужен был именно мой мод-пак я не знаю что там за менить

Тут же всё подробно описано.


  • 1

#15
offline   Yanshicow

Yanshicow
  • 4
    • Сообщений: 97
    • Регистрация: 21.12.14
Не выдает кеш модпака что делать?
  • 0

#16
offline   Neat

Neat
  • 983
    • Сообщений: 2 392
    • Регистрация: 21.12.13

Не выдает кеш модпака что делать?

Проверять и ещё раз проверять всё ли правильно сделали.


  • 0

#17
offline   Yanshicow

Yanshicow
  • 4
    • Сообщений: 97
    • Регистрация: 21.12.14

Вместо того чтобы кикало сервер просто перезагружается подскажите подробно что сделать?


  • 0

#18
offline   Amfy

Amfy
  • 1548
    • Сообщений: 3 005
    • Регистрация: 24.01.14

Вместо того чтобы кикало сервер просто перезагружается подскажите подробно что сделать?

Покажи где и как кикаешь игрока.


  • 0

#19
offline   Yanshicow

Yanshicow
  • 4
    • Сообщений: 97
    • Регистрация: 21.12.14

Покажи где и как кикаешь игрока.

В public OnPlayerCommandText(playerid, cmdtext&#91

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

Прикрепленные файлы


  • 0

#20
offline   Neat

Neat
  • 983
    • Сообщений: 2 392
    • Регистрация: 21.12.13

Ставьте кик игрока на таймер (секунд 5).


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных


Данную тему посетили 931 пользователей