Asummonster
Пользователи-
Публикации
420 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Asummonster
-
По моему,25 килобайт за скриншот 80x25 не очень много весит, но я подумаю об изменении формата.
- 18 ответов
-
- opencomputers
- lua
-
(и ещё 1 )
Теги:
-
Могу записывать просто в строку Я просто выбрал самый лёгкий и надёжный вариант
- 18 ответов
-
- opencomputers
- lua
-
(и ещё 1 )
Теги:
-
Да леегко он блок увидит. Это клиентские текстуры/обработка взрыва крипера работают.
-
Баланс, новости, геймплей, ошибки, баги сервера ИТ (архив)
Asummonster ответил в тему Alex в Корзина
Теперь как никогда будут актуальны чаты на очках=) -
Баланс, новости, геймплей, ошибки, баги сервера ИТ (архив)
Asummonster ответил в тему Alex в Корзина
Говорите на форумном чате=) -
А вдруг там зомби с 93 хп?Я такого ан новом ИТ видел=)Либо вайла шалит=)
-
Увидел=) А в цикле swing не вариант? Пока препятствие не пропадёт
-
Ты кроме geolyzer.analyze приставь robot.detect(). robot.detect() показывает всё,может это правда существо.
-
Программа позволяет создавать снимки экрана. Сохраняет она его в файл /screenshots/Screenshot-Год-День-Час-Минута.ast Формат ast Для выхода из программы после распечатывания экрана надо по нему нажать(создать ивент touch). Вот код "AsumScreenshoter"'а: local mode = ({...})[1] if mode==nil then print("Использование: screenshot init для создания ивента сохранения экрана(Кнопка Print Screen, папка screenshots)\n screenshot <имя файла> для просмотра(По окончанию просмотра нажмите на экран)"); os.exit() return end local fs = require("filesystem") local unicode = require("unicode") local gpu = require("component").gpu local event = require("event") local function dec2hex(n, s) local h = string.format("%x", n) return string.rep("0", s-string.len(h))..h end local function hex2dec(s) return tonumber("0x"..s) end local function createScreenshotFile() DD, HH, MM, SS = os.date("%Y"), os.date("%H"), os.date("%M"), os.date("%S") if not fs.isDirectory("/screenshots") then fs.makeDirectory("/screenshots") end return io.open("/screenshots/Screenshot-"..DD.."-"..HH.."-"..MM.."-"..SS..".ast", "w") end local function getScreen() local W, H = gpu.getResolution() local screenshot = dec2hex(W, 2)..dec2hex(H, 2) local lfg, lbg for y=1, H do for x=1, W do local symbol, fgcolor, bgcolor = gpu.get(x, y) if lfg ~= fgcolor then lfg = fgcolor screenshot = screenshot .. "␑" screenshot = screenshot .. dec2hex(fgcolor, 6) end if lbg ~= bgcolor then lbg = bgcolor screenshot = screenshot .. "␒" screenshot = screenshot .. dec2hex(bgcolor, 6) end screenshot = screenshot .. symbol end end return screenshot end local function writeScreen() local file=createScreenshotFile() file:write(getScreen()) file:flush() file:close() end local function printScreen(filename) local screenshot=io.lines(filename)() local oldw, oldh = gpu.getResolution() local header = screenshot:sub(1, 4) screenshot = screenshot:sub(5) local W = hex2dec(header:sub(1, 2)) local x = 0 local H = hex2dec(header:sub(3, 4)) local y = 0 gpu.setResolution(W, H) while y < H do y = y + 1 x = 0 while x < W do local sym = unicode.sub(screenshot, 1, 1) if sym == "␑" then gpu.setForeground(hex2dec(unicode.sub(screenshot, 2, 7))) screenshot = unicode.sub(screenshot, 8) elseif sym == "␒" then gpu.setBackground(hex2dec(unicode.sub(screenshot, 2, 7))) screenshot = unicode.sub(screenshot, 8) else x = x + 1 gpu.set(x, y, sym) screenshot = unicode.sub(screenshot, 2) end end end event.pull("touch") gpu.setResolution(oldw, oldh) end local function saveScreenByKey(_, _, key1, key2) if key1==0 and key2==183 then writeScreen() end end if mode=="init" then event.listen("key_down", saveScreenByKey) else printScreen(mode) end Надеюсь вы будете пользоваться этой программой!=) Для того,что бы начать делать скриншоты, после каждой перезагрузки надо запустить приложение с параметром init Для того,что бы создать скриншот после инициализации-надо нажать кнопку Print Screen
- 18 ответов
-
- opencomputers
- lua
-
(и ещё 1 )
Теги:
-
Ссылки на тему?Я уже подумал,что плюшка
-
Почему?Можно отправлять запрос банковскому серваку,а он отправляет вам пароль,который надо ввести, вы его вводите - АПИ его отправляет банку, пароли совпадают - деньги снимаются
-
Это довольно просто сделать. У планшета есть компонент "tablet", а у робота - "robot"
-
Всем привет! В этой теме я расскажу моей программе ---Удалённом рабочем столе на сети OpenNet и моде OpenComputers. Первым делом расскажу как ей пользоваться. Ввод данных: Всё очень просто=) Жмёте на кнопку на клавиатуре, и её нажатие эмитируется на удалённом компьютере. Для обновления экрана --- F5 Для выхода из программы на удалённом компьютере --- F2 Для выхода из программы на локальном компьютере ---F1 Ну....Вроде всё по управлению=) Запуск,настройка и подключение: Подготовка к запуску удалённого терминала: Установить библиотеку thread: local computer = require("computer") computer.SingleThread = computer.pullSignal local thread = {} local mainThread local timeouts local function MultiThread( _timeout ) if coroutine.running()==mainThread then local mintime = _timeout or math.huge local co=next(timeouts) while co do if coroutine.status( co ) == "dead" then timeouts[co],co=nil,next(timeouts,co) else if timeouts[co] < mintime then mintime=timeouts[co] end co=next(timeouts,co) end end if not next(timeouts) then computer.pullSignal=computer.SingleThread computer.pushSignal("AllThreadsDead") end local event={computer.SingleThread(mintime)} local ok, param for co in pairs(timeouts) do ok, param = coroutine.resume( co, table.unpack(event) ) if not ok then timeouts={} error( param ) else timeouts[co] = param or math.huge end end return table.unpack(event) else return coroutine.yield( _timeout ) end end function thread.init() mainThread=coroutine.running() timeouts={} end function thread.create(f,...) computer.pullSignal=MultiThread local co=coroutine.create(f) timeouts[co]=math.huge local ok, param = coroutine.resume( co, ... ) if not ok then timeouts={} error( param ) else timeouts[co] = param or '' end return co end function thread.kill(co) timeouts[co]=nil end function thread.killAll() timeouts={} computer.pullSignal=computer.SingleThread end function thread.waitForAll() repeat until MultiThread()=="AllThreadsDead" end ------------------------------------------------------------------------------- return thread (Только на сервер,на клиенте она не нужна) Установить OpenNet и находится в зоне его покрытия. Установить на сервер его часть: local event= require("event") local thread= require("thread") local opennet= require("opennet") local computer= require("computer") local gpu= require("component").gpu local unicode= require("unicode") local keyboard= require("component").keyboard.address local IP, dis2serv = opennet.getIP() print("Local IP: "..IP) args={...} if args[1]==nil then print("Использование: openviewerS <opennet_ip>") os.exit() end --[[ _, result, reason = opennet.sendrec(args[1], "connecting...") if result==false then print(reason); os.exit() end if args[1]==IP then print("Невозможно инициализировать удалённый доступ со своим устройством.") os.exit() end ]]-- initial=args[1] local function getScreen() screen="" for y=1, 25 do for x=1, 80 do symbol = gpu.get(x, y) screen=screen..symbol end end return screen end local function sendScreen() opennet.send(initial, getScreen()) end function runShell() os.execute("sh") end function reInitial() thread.killAll() thread.init() thread.create(runShell) thread.create(EmulateSignal) thread.waitForAll() end event.listen("Screen", sendScreen) event.listen("Exit", reInitial) function EmulateSignal() while true do opennetIP, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 = opennet.receive() if opennetIP==initial then computer.pushSignal(arg1, keyboard, tonumber(arg3), tonumber(arg4), arg5) end end end thread.init() thread.create(runShell) thread.create(EmulateSignal) thread.waitForAll() Установить на клиент клиентскую часть: local opennet= require("opennet") local term= require("term") local unicode= require("unicode") local event= require("event") args={...} if args[1]==nil then print("Использование: openviewerC <opennet_ip>") os.exit() end initial=args[1] function getScreen() repeat ip, screenRaw=opennet.receive() until ip==initial for sym=1, #screenRaw-160 do io.write(unicode.sub(screenRaw, sym, sym)) end end term.clear() opennet.send(initial, "Screen") getScreen() while true do arg1, arg2, arg3, arg4, arg5 = event.pull() if arg1=="key_down" and arg3==0 and arg4==63 then term.clear() opennet.send(initial, "Screen") getScreen() elseif arg1=="key_down" and arg3==0 and arg4==59 then os.exit() elseif arg1=="key_down" and arg3==0 and arg4==60 then opennet.send(initial, "Exit") else opennet.send(initial, arg1, arg2, arg3, arg4, arg5) end end Для запуска программы надо написать на сервере: openviewerS <IP Адрес клиента> ВНИМАНИЕ!!! Надо ввести именно IP, а не DNS; Единственное поддерживаемое разрешение - 80x25 На клиенте же пишем: openviewerC <IP Адрес сервера> Вот и всё=) Надеюсь,эта программа вам будет полезна ! Неплохо было-бы попасть в вайт-лист
-
Заходи на сервер в ~10 по мск. Можно и в 8.
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
А я создал своё жалкое подобие ssh, которое запускается через костыль
- 162 ответа
-
- 1
-
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Только я бы добавил if stack then ... end, т.к. если слот пуст---будет вылет
- 4 ответа
-
- 1
-
-
Баланс, новости, геймплей, ошибки, баги сервера ИТ (архив)
Asummonster ответил в тему Alex в Корзина
Попробуй в дрона радар засунуть. У меня из-за этого вылетал сервер. -
А как свои сайты добавлять?
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Эээ! Что за тэг?=) Да и сам виноват, хи-хи. Ты меня научил биосы писать=)
