Исходник Гайд SNET - Networking Interface

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,789
2,141
Здравствуйте, можно ли реализовать что-то подобное, там полностью отсуствует сервер, вообще.
Нет, это другое. Да и не может быть полного отсутствия сервера, предполагаю, что плагин передает сообщения какими-то нефильтруемыми пакетами SA:MP. Значит в данном случае сервером выступает сам игровой сервер SA:MP. Хотя, насколько мне известно, такой способ общения на многих серверах уже не работает, потому что античиты начали фильтровать эти пакеты и в большинстве случаев ответы просто не приходят.
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
Нет, это другое. Да и не может быть полного отсутствия сервера, предполагаю, что плагин передает сообщения какими-то нефильтруемыми пакетами SA:MP. Значит в данном случае сервером выступает сам игровой сервер SA:MP. Хотя, насколько мне известно, такой способ общения на многих серверах уже не работает, потому что античиты начали фильтровать эти пакеты и в большинстве случаев ответы просто не приходят.
Может через сокеты идет?
 

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,789
2,141
Может через сокеты идет?
Нет, плагин работает как раз за счёт стандартных пакетов SA:MP, которые по воле Великого Калькора, конечно же, не фильтруются, а получают их все игроки на сервере. Сообщение, по всей видимости, шифруется при помощи ключа, заданного пользователем, а все остальные игроки с тем же плагином и с установленным идентичным ключем, получая этот пакет, расшифровывают строку и выводят её в чат, таким образом общаясь внутри одного сервера.

Чтобы так не делали, многие сервера начали фильтровать такие пакеты, раз Калькор этого не делает. И теперь сообщения с подобных плагинов больше не доходят. Есть определенная вероятность, что не очень длинное сообщение всё же дойдет, но на получение длинных сообщений можно не надеется.

Если необходима быстрая и стабильная работа, то явно подобный способ обмена информацией не в приоритете.
 

user337567

Участник
91
10
Нет, плагин работает как раз за счёт стандартных пакетов SA:MP, которые по воле Великого Калькора, конечно же, не фильтруются, а получают их все игроки на сервере. Сообщение, по всей видимости, шифруется при помощи ключа, заданного пользователем, а все остальные игроки с тем же плагином и с установленным идентичным ключем, получая этот пакет, расшифровывают строку и выводят её в чат, таким образом общаясь внутри одного сервера.

Чтобы так не делали, многие сервера начали фильтровать такие пакеты, раз Калькор этого не делает. И теперь сообщения с подобных плагинов больше не доходят. Есть определенная вероятность, что не очень длинное сообщение всё же дойдет, но на получение длинных сообщений можно не надеется.

Если необходима быстрая и стабильная работа, то явно подобный способ обмена информацией не в приоритете.
тоесть это стандартные rpc?
и как это вообще реализовывается
 

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,789
2,141
тоесть это стандартные rpc?
и как это вообще реализовывается
RPC или пакеты - главное, чтобы их получали все игроки на сервере. Оригинальный набор данных подменяется на необходимый для передачи сообщения. Сообщение шифруется, сжимается и передается вместе с этим пакетом. Получая такой пакет, пользователь с этим плагином производит обратные операции.

Что-то похожее используется в
этой библиотеке, там примерно описана суть работы таких скриптов / плагинов.
По сути, передавая данные таким способом, надо понимать, что они могут быть перехвачены сервером.
 

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,789
2,141
В связи с тем, что SL:NET, как модуль, начал своё расширение и теперь выходит за рамки одной лишь библиотеки для LuaJIT, я задумался над его переименованием, поэтому обращаюсь за помощью в выборе названия для библиотеки. Название должно иметь нейтральный окрас, то есть не связывать модуль с каким-либо языком программирования, но при этом должно по возможности включать в себя ключевое слово «NET». Перед тем, как предлагать названия, просьба пробивать их через поисковые системы и убеждаться в том, что эти названия свободны и их можно использовать. Принимаются также варианты названий без ключевого слова «NET», но желательно, чтобы окрас всё равно оставался IT направленным. Предлагать свои варианты можно через форму или через личные сообщения на BlastHack.
 

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,789
2,141
SNET.png

Встречайте SNET — новый сетевой интерфейс
Название было изменено — SL:NET теперь просто SNET
В данный момент доступна библиотека только для Lua, но в скором времени станет доступно несколько дополнительных для других языков программирования. В ближайших планах создание библиотеки для C++, Node JS и Go. Библиотеки будут обратно совместимы с друг другом.

Скачать SNET можно из нашего репозитория GitHub. Релиз SNET будет доступен после того, как будет готов модуль для C++.
 

f0Re3t

Poh production
Друг
877
812
Посмотреть вложение 73896
Встречайте SNET — новый сетевой интерфейс
Название было изменено — SL:NET теперь просто SNET
В данный момент доступна библиотека только для Lua, но в скором времени станет доступно несколько дополнительных для других языков программирования. В ближайших планах создание библиотеки для C++, Node JS и Go. Библиотеки будут обратно совместимы с друг другом.

Скачать SNET можно из нашего репозитория GitHub. Релиз SNET будет доступен после того, как будет готов модуль для C++.
а чем он лучше/будет лучше существующих сетевых интерфейсов? планируются ли какие-то интересные фичи которых нет ни в одном другом?
 

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,789
2,141
а чем он лучше/будет лучше существующих сетевых интерфейсов? планируются ли какие-то интересные фичи которых нет ни в одном другом?
Упор делается на гибкость и простоту использования, кросс-платформеность, мультиязычность, а также на относительную безопасность для разработчиков без должного опыта разработки. Немного жертвуем контролем, но открытость исходного кода позволяет легко это исправить при необходимости. Насчет каких-то дополнительных функций, которых нет ни в одной другой библиотеке, - пока никаких идей нет, сам попользуюсь - скорее всего что-нибудь придумается. Соревноваться с большими модулями, которые существуют достаточно давно, будет сложно. А вот среди подобных - легко. По крайней мере, если говорить именно о Lua, мной не было найдено библиотеки, которая бы была одновременно такой простой, разворачивающейся за несколько кликов, и функциональной. Посмотрим как SNET проявит себя в перспективе, это будет видно по тому, как развивается первый и пока единственный продукт - SL:MP.
 

Akionka

akionka.lua
Проверенный
742
502
можно как-то битстримом передать таблицу луа?
Если это массив, то можно перебрать вручную все элементы и засунуть в бс, если это ассоциативный массив, то запихнуть можно так же, а вот вытащить данные не получится — ассоциативный массив не гарантирует порядок элементов
 

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,789
2,141
Release: SNET 1.0.1
Что нового:

  • Возможность блокировать IP-адреса с последующей разблокировкой (только для сервера)
  • Добавлен SNET BLOCK PACKET уведомляющий клиент о том, что он заблокирован на сервере
Скачать: GitHub Releases