Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

  1. #1
    ex-Pawn developer Аватар для SHOROOP
    Регистрация
    28.05.2011
    Адрес
    St.Petersburg
    Возраст
    32
    Сообщений
    2,667
    Репутация: 306

    Звание: как роза среди колючек

    Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

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

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

    Как писал на форумах самп.ком DimonML, существуют несколько специальных команд, отсылаемых сервером клиенту. Одна из них позволяет получить хэш установленного модпака.
    Для того, чтобы отослать эту команду, необходимо использовать следующее выражение:
    PHP код:
    SendClientMessage(playerid,0x01010101"$cmd get_custom_hash"); 
    В принципе, отослать его можно где угодно (естественно, в том коллбэке, где используется playerid), но я рекомендую отправлять непосредственно в OnPlayerConnect.

    Далее, от клиента в коллбэк OnPlayerCommandText должен поступить ответ следующего вида:
    PHP код:
    $response get_custom_hash ХэшМодпака 
    Его мы проверять и будем. В шапке OnPlayerCommandText используем функцию strfind.
    PHP код:
    if(strfind(cmdtext"$response get_custom_hash"true) != -1//Если ответ получен и искомая строка найдена

    {
       new 
    packhash[64]; //Создадим массив, в котором будет находится этот хэш
       
    strmid(packhashcmdtext26strlen(cmdtext)); //Разделяем строку cmdtext и результат разделения - искомый хэш - запишем в массив packhash
       
    SendClientMessage (playerid0xFFFFFFFFpackhash); //И, к примеру, выведем текущий хэш в чат игроку.
       
    return 1;

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

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

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

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

  2. 1 пользователь сказал cпасибо SHOROOP за это полезное сообщение:

    retyrner (12.01.2016)

  3. #2
    С++ & Pawn Programming Аватар для KrYpToDeN
    Регистрация
    30.03.2011
    Адрес
    Хабаровск
    Возраст
    29
    Сообщений
    1,988
    Репутация: 198

    Звание: - весьма и весьма положительная личность

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    что такое модпак?)

  4. #3
    ex-Pawn developer Аватар для SHOROOP
    Регистрация
    28.05.2011
    Адрес
    St.Petersburg
    Возраст
    32
    Сообщений
    2,667
    Репутация: 306

    Звание: как роза среди колючек

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    Ну, в общем-то, DimonML развил идею custom.img из оригинального SA:MP. Можно разделять пакеты модификаций для одного конкретного сервера.

  5. #4
    Ясно, понятно. Аватар для Jekazzz
    Регистрация
    08.01.2011
    Сообщений
    1,830
    Репутация: 188

    Звание: - весьма и весьма положительная личность

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    Клиент назад ничего не отсылает ...
    Приходит обычное сообщение (клиенту) "$cmd get_custom_hash"
    На этом все и заканчивается.

  6. #5
    ex-Pawn developer Аватар для SHOROOP
    Регистрация
    28.05.2011
    Адрес
    St.Petersburg
    Возраст
    32
    Сообщений
    2,667
    Репутация: 306

    Звание: как роза среди колючек

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    Не знаю, что заканчивается там у Вас.
    У меня в примере хэш спокойно отправляется обратно.

  7. #6
    Люблю Окса :3 Аватар для Folleah
    Регистрация
    26.09.2012
    Сообщений
    2,045
    Репутация: 184

    Звание: - весьма и весьма положительная личность

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    Можно поподробнее... Как сунуть эту проверку допустим в русификатор?

  8. #7
    ex-Pawn developer Аватар для SHOROOP
    Регистрация
    28.05.2011
    Адрес
    St.Petersburg
    Возраст
    32
    Сообщений
    2,667
    Репутация: 306

    Звание: как роза среди колючек

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    Можно поподробнее про идею? ЯННП.

  9. #8
    CR:MP Аватар для Amfy
    Регистрация
    02.12.2011
    Адрес
    Казань
    Возраст
    28
    Сообщений
    2,143
    Репутация: 141

    Звание: скоро придёт к известности

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    А куда вообще модпак этот закидывать и т.д?)))

  10. #9
    Люблю Окса :3 Аватар для Folleah
    Регистрация
    26.09.2012
    Сообщений
    2,045
    Репутация: 184

    Звание: - весьма и весьма положительная личность

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    Цитата Сообщение от SHOROOP Посмотреть сообщение
    Можно поподробнее про идею? ЯННП.
    Эмм... Ну у меня есть русик текстдравов, как сделать проверку на него =_=

  11. #10
    Активный пользователь Аватар для ulanzetz
    Регистрация
    28.08.2012
    Адрес
    Екатеринбург
    Сообщений
    793
    Репутация: 86

    Звание: скоро придёт к известности

    Re: Проверка на модпак для адаптаций клиент-сервера SA:MP (CR:MP, A1:MP, U1:MP)

    Можно и без strmid'а и strfind'a.
    PHP код:
    if(!strcmp(cmdtext"$response get_custom_hash"true25) && strcmp(cmdtext[26], "Хэш_модпака"false))
        return 
    SendClientMessage(playerid, -1"У вас не установлен модпак"), Kick(playerid); 

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Ответов: 10
    Последнее сообщение: 24.11.2012, 17:44
  2. Проверка статуса сервера
    от Antoxa в разделе PHP, MySQL
    Ответов: 5
    Последнее сообщение: 17.01.2012, 09:19

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •