Перейти к содержанию
Авторизация  
SHOROOP

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

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

zheckster60

Кик, плейер ид.

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


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

Да нафиг!! Я задолбался уже! Он выполняет либо кик (причем кик корявый - переподсоединение), либо выводит текст. Пробовал создать отдельный паблик с форвардом, кинуть туда kick(playerid) и SendClientMessage далее кинуть таймер в скрипт проверки модпака. Он вообще другого игрока кикает и пишет ему текст!!!!!!!!! Что делать? Может, не kick(playerid) а по-другому надо? Помогите плиз!

 

forward kick123;

 

public kick123
{
Kick(playerid);
}

 

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

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

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

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


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

Код проверен неоднократно. Если у Вас. проблемы - то только из-за того, что Вы что-то делаете неправильно.

  • Like 1

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


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

Да нафиг!! Я задолбался уже! Он выполняет либо кик (причем кик корявый - переподсоединение), либо выводит текст. Пробовал создать отдельный паблик с форвардом, кинуть туда kick(playerid) и SendClientMessage далее кинуть таймер в скрипт проверки модпака. Он вообще другого игрока кикает и пишет ему текст!!!!!!!!! Что делать? Может, не kick(playerid) а по-другому надо? Помогите плиз!

 

forward kick123;

 

public kick123
{
Kick(playerid);
}

 

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

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

 

дело не в коде!А в руках!И втом куда встовляешь!

Подумай хорошенько,что куда сунуть!

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


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

Я и не говорю, что код корявый. Подскажите пожалуйста.

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

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


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

C:GamesFull Game RPgamemodescream1.2.pwn(10629) : error 029: invalid expression, assumed zero
C:GamesFull Game RPgamemodescream1.2.pwn(10629) : error 017: undefined symbol "response"
C:GamesFull Game RPgamemodescream1.2.pwn(10629) : error 017: undefined symbol "get_custom_hash"
C:GamesFull Game RPgamemodescream1.2.pwn(10629) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664	 Copyright (c) 1997-2006, ITB CompuPhase

4 Errors.

Кто поможет пожалуйста потомучто устал уже не могу исправить с меня +

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

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


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

Еще один вариант узнать значение хэша эталонного модпака:

Выведем сообщение с хэшом в чат игроку:

SendClientMessage(playerid, COLOR_YELLOW, packhash);
А дальше скриним или записываем и т.,д

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

 

Макс спс у меня получилось кикает а не рестарт происходит

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


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

Взять a_samp.inc из последнего комплекта серверной части CR:MP и пересобрать.

  • Like 2

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


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

Все равно... Не перезапуск, не кик, а переподсоеденение игрока!!!

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


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

Спасибо да я итак уже знал)

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


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

Поможет тут кто нибудь нормально или нет???!!!

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


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

Думай сам,просто функцию получения хеша,перенеси в другой паблик,например в паблик авторизации!(OnPlayerLogin)

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


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

Эммм....

Извеняюсь кончено но что-то тут нетак!

У меня вот на Awesomе что-то не действует.

Имею ввиду способ узнать ЗнЭталонногоХэша!

Помогите чем сможете!

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


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

Эммм....

Извеняюсь кончено но что-то тут нетак!

У меня вот на Awesomе что-то не действует.

Имею ввиду способ узнать ЗнЭталонногоХэша!

Помогите чем сможете!

 

Значит руки кривые!

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


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

Да вроде не кривые!

Всё правильно поставил захожу.... И никакого там кода-надписи..

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


Ссылка на сообщение
Поделиться на другие сайты
Сержик
Бляяя я в этом не шарю(((Пацаны постучите мне в скайп,помогите пожалуйста turbo00781

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


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

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

 

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

Как видите, ничего сложного.

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

 

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

 

Ты нам лучше видео урок проведи.Мы нехрена не поняли

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


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

Видеоурок? Лолшто? Языки программирования по видео выучить невозможно.

Все вроде как поняли, только от Вас такой комментарий поступил.

  • Like 2

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


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

Видеоурок? Лолшто? Языки программирования по видео выучить невозможно.

Все вроде как поняли, только от Вас такой комментарий поступил.

 

Там очень легко и почему я задавал вопросы ну тебе + всё получилось

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


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

C:UsersuserDownloadsUchaly RolePlayUchaly RolePlayUchaly RolePlaygamemodesUchaly.pwn(3013) : error 017: undefined symbol "cmdtext"

C:UsersuserDownloadsUchaly RolePlayUchaly RolePlayUchaly RolePlaygamemodesUchaly.pwn(3016) : error 017: undefined symbol "cmdtext"

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

2 Errors.

Извините,но я не понимаю(Помогите пожалуйста

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


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

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

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


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

Спасибо все получилось кикает!

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


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

Спасибо все получилось кикает!

 

Как сделал помоги я поставлю тебе много +++

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


Ссылка на сообщение
Поделиться на другие сайты
#Russo™
В OnPlayerLogin в конце вставь SendClientMessage(playerid,0x01010101, "$cmd get_custom_hash");
  • Like 1

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


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

Все работает.

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

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

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

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

×

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

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