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

Тема в разделе "Программирование / Скриптинг", создана пользователем artyrka94, 24 июл 2014.

  1. artyrka94

    artyrka94

    Сообщения:
    182
    Симпатии:
    36
    Идея такая реализовать сверку игроков которое на сервере в игре, и которые на сервере в тим спике. Кто нибудь сможет подсказать именно как только получить айпишники с тим спика, остальное уже сам допилю.
     
  2. Equality

    Equality

    Сообщения:
    53
    Симпатии:
    8
    Можно. Но без TeamSpeak SDK не обойтись. На офф. форуме даже был похожий вопрос с кусками кода.
     
  3. artyrka94

    artyrka94

    Сообщения:
    182
    Симпатии:
    36
    так мне в source pawn все это дело нужно реализовать, а там куски кода от C++
     
  4. Equality

    Equality

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

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

    artyrka94

    Сообщения:
    182
    Симпатии:
    36
    Сам тим спик висит на порту 9987. Потом есть админский порт(Admin Query port)10011, по этому порту зная логин и пароль можно управлять сервером тим спика, так же брать любую информацию связанную с сервером.

    Тоже как вариант.

    Попробую найти консольную команду линукса которая выводит в файл 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'е такое то же возможно реализовать, только вот как?
     
    Последнее редактирование: 26 июл 2014
  6. Equality

    Equality

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

    artyrka94

    Сообщения:
    182
    Симпатии:
    36
    я всмысле команду telnet'a можно както реализовать в pawn'e, читал что расширение cURL для сурсмода поддерживает протокол telnet, только вот примеров по телнету нету.

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