[SM] Получение IP адресов пользователей c сервера TeamSpeak3 используя расширение Socket

artyrka94

Участник
Сообщения
181
Реакции
38
Идея такая реализовать сверку игроков которое на сервере в игре, и которые на сервере в тим спике. Кто нибудь сможет подсказать именно как только получить айпишники с тим спика, остальное уже сам допилю.
 

Equality

Участник
Сообщения
53
Реакции
8
так мне в source pawn все это дело нужно реализовать, а там куски кода от C++

SourcePawn - это самой собой. Но для начала тебе необходимо получить IP-адреса клиентов, которые подключены к твоему серверу TeamSpeak. Я что-то не помню, чтоб подобный функционал был "с коробки" в ТимСпике (поправь, если ошибаюсь). Поэтому, тебе, как минимум, нужно написать плагин для ТимСпика, который получит адреса текущих клиентов и отправить их на обработчик, где будет выполнятся твое сравнение. В свою очередь, выполнять само сравнение ты можешь уже силами СоурсПавна. Сначала же тебе нужно передать на него ИП-адреса, которые нужно сравнить с теми, которые в игре на сервере.

Есть и немного другой способ. Можно не писать плагин для СтимСпика. Можна писать тулзу, которая будет мониторить входящие подключения на порт ТимСпик сервера и отсылать IP-адреса на твой обработчик сравнения.
 

artyrka94

Участник
Сообщения
181
Реакции
38
SourcePawn - это самой собой. Но для начала тебе необходимо получить IP-адреса клиентов, которые подключены к твоему серверу TeamSpeak. Я что-то не помню, чтоб подобный функционал был "с коробки" в ТимСпике (поправь, если ошибаюсь). Поэтому, тебе, как минимум, нужно написать плагин для ТимСпика, который получит адреса текущих клиентов и отправить их на обработчик, где будет выполнятся твое сравнение. В свою очередь, выполнять само сравнение ты можешь уже силами СоурсПавна. Сначала же тебе нужно передать на него ИП-адреса, которые нужно сравнить с теми, которые в игре на сервере.
Сам тим спик висит на порту 9987. Потом есть админский порт(Admin Query port)10011, по этому порту зная логин и пароль можно управлять сервером тим спика, так же брать любую информацию связанную с сервером.

Есть и немного другой способ. Можно не писать плагин для СтимСпика. Можна писать тулзу, которая будет мониторить входящие подключения на порт ТимСпик сервера и отсылать IP-адреса на твой обработчик сравнения.
Тоже как вариант.

Попробую найти консольную команду линукса которая выводит в файл IP адреса которые висят на определенном порту. А на pawn'е уже буду его парсить и сравнивать

Добавлено через 12 часов 16 минут

получилось написать небольшой скрипт:
PHP:
#!/bin/sh/
(
  sleep 1
  echo "login serveradmin password"
  echo "use 1"
  echo "clientlist -ip"
  sleep 1
  echo "quit"
) | telnet xx.xx.xx.xx 10011 > telnet.log

после выполнения скрипта в файл telnet.log все IP адреса текущих пользователей. Думаю в pawn'е такое то же возможно реализовать, только вот как?
 
Последнее редактирование:

Equality

Участник
Сообщения
53
Реакции
8
после выполнения скрипта в файл telnet.log все IP адреса текущих пользователей. Думаю в pawn'е такое то же возможно реализовать, только вот как?

СоурсМод не может мониторить левые порты, если не ошибаюсь. (пускай продвинутые скриптеры поправят). А чем тебя не устраивает вариант с "внешним" скриптом? Пускай твой скрипт мониторит порт Тим Спика и порт сервера, выполняет сравнивание и пишет результат во временную БД. А плагин на соурсмоде читает эту БД и делает, что нужно (выводит сообщение или что ты там хочешь сделать).
 

artyrka94

Участник
Сообщения
181
Реакции
38
СоурсМод не может мониторить левые порты, если не ошибаюсь. (пускай продвинутые скриптеры поправят). А чем тебя не устраивает вариант с "внешним" скриптом? Пускай твой скрипт мониторит порт Тим Спика и порт сервера, выполняет сравнивание и пишет результат во временную БД. А плагин на соурсмоде читает эту БД и делает, что нужно (выводит сообщение или что ты там хочешь сделать).
я всмысле команду telnet'a можно както реализовать в pawn'e, читал что расширение cURL для сурсмода поддерживает протокол telnet, только вот примеров по телнету нету.

а внешний скрипт не хочу делать, из за того то что его придется запускать по крону. Лучше когда все в одном плагине чтобы при подключении игрока плагин мог проверить в тим спике он или нет.
 
Сверху Снизу