Как передать сообщение в скрипт на другом ПК?

Ya Zaregalsya

Известный
Автор темы
386
134
Версия MoonLoader
.027.0-preview
Когда-то задавал похожий вопрос по обмену сообщениями между двумя плагинами в рамках одного ПК, тогда самым простым из предложенных вариантов было общение скриптов через текстовый файл, в принципе схема рабочая, пусть и не очень удобная. Сейчас задача в целом всё та же, отправить текстовую строку из одного скрипта, и прочитать её уже в другом, только в этот раз скрипты будут работать на разных ПК, поток сообщений при этом низкий. Вопрос: Есть ли готовое решение, чтобы установить канал связи между скриптами на разных ПК? В приоритете скорость освоения, в идеале просто подключить библиотеку, поставить один хэндлер для обработки входящих сообщений и использовать одну функцию для отправки.

Уже пробовал установить канал связи через Телеграм-ботов, но оказалось, что общение там возможно только между ботом и пользователем, но не может быть между двумя ботами (скриптами). Если в этой теме не найдётся вариантов получше, то буду делать на IRC.

UPD: Важно, чтобы канал связи был относительно закрытым, т.к. там будут пересылаться данные для авторизации ботов.
 
Последнее редактирование:
Решение
По-моему отличный вариант, как раз то, что тебе подходит

qdIbp

Автор темы
Проверенный
1,438
1,180
это подойдет?

Lua:
local broadcaster = import('lib/broadcaster.lua')
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    broadcaster.registerHandler('myhndl', myHandler) -- регистрация Broadcaster
    sampRegisterChatCommand('brc', function(arg) -- регистрация команды
        if #arg == 0 then -- если в arg 0 символов то
            return sampAddChatMessage('/brc [msg]',0xFF0000) --возвращает сообщением
        else -- иначе
            broadcaster.sendMessage(u8(arg), 'myhndl') -- отправка сообщения Broadcaster
        end
    end)
    wait(-1)
end

function myHandler(message)
    sampAddChatMessage('smska: ' .. u8:decode(message), -1)
end

function onScriptTerminate(scr)
    if scr == thisScript() then
        broadcaster.unregisterHandler('myhndl')
    end
end

Кидаешь один код себе на пк, второй код на другой пк, и можешь тестить
 
  • Нравится
Реакции: Ya Zaregalsya

Ya Zaregalsya

Известный
Автор темы
386
134
это подойдет?

Lua:
local broadcaster = import('lib/broadcaster.lua')
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    broadcaster.registerHandler('myhndl', myHandler) -- регистрация Broadcaster
    sampRegisterChatCommand('brc', function(arg) -- регистрация команды
        if #arg == 0 then -- если в arg 0 символов то
            return sampAddChatMessage('/brc [msg]',0xFF0000) --возвращает сообщением
        else -- иначе
            broadcaster.sendMessage(u8(arg), 'myhndl') -- отправка сообщения Broadcaster
        end
    end)
    wait(-1)
end

function myHandler(message)
    sampAddChatMessage('smska: ' .. u8:decode(message), -1)
end

function onScriptTerminate(scr)
    if scr == thisScript() then
        broadcaster.unregisterHandler('myhndl')
    end
end

Кидаешь один код себе на пк, второй код на другой пк, и можешь тестить
Не подходит потому что 1. открытый канал связи (если отослать по нему пароль, то аккаунт могут стырить), 2. работает не на всех серверах, 3. работает только в рамках одного сервера. Но для других задач вариант неплохой.
 

RCAANT

Участник
33
12
По-моему отличный вариант, как раз то, что тебе подходит
 
  • Нравится
Реакции: [SA ARZ] и Ya Zaregalsya

Ya Zaregalsya

Известный
Автор темы
386
134
По-моему отличный вариант, как раз то, что тебе подходит
Похоже это действительно то, что нужно. Хотя библиотека брошена в ужасном состоянии.