Перейти к содержимому

Chebuya

Пользователи
  • Публикации

    609
  • Зарегистрирован

  • Посещение

  • Победитель дней

    72

Сообщения, опубликованные пользователем Chebuya


  1. 3 минуты назад, RAPD123 сказал:

    Я о том что лучше просто призвать. А то ты не цитировал. Менее громоздко призыв смортится

    Если просто призывать - человек может не понять на что именно ты отвечаешь
    (Ладно, хватит на этом оффтопа)

     


  2. 1 минуту назад, NEO сказал:

    дело в том что в двоичных системах хранения данных принято считать объём памяти связывая его двойкой со степенью, 2^10 = 1024

    d14ec601ac1639591869c045a7bf08f2.png
    Вот это странно, значит то что мы называем килобайтами - на деле "Кибибайт"? 
     


  3. 13 минут назад, RAPD123 сказал:

    Спасибо за совет. Попробую написать код

    А чего там писать то? 
    Всё же вроде просто:
    print("Всего ОЗУ:", computer.totalMemory() / 1024)
    print("Свободно ОЗУ:", computer.freeMemory() / 1024)

    • Спасибо 1

  4. 1 час назад, DonTotti сказал:

    Описание : нужно чтобы робот из активного слота перекладывал предмет себе в руку и использовал его 15 раз ( из руки ) и так по циклу

    Нужен контроллер инвентаря/улучшение "инвентарь", собственно сам робот. (На самом деле это даже дроном можно делать)
    Берёт предмет из активного слота и использует его 15 раз(Использует предмет он перед собой, впритык).

    local inv = require("component").inventory_controller
    local robot = require("robot")
    
    while true do 
    	inv.equip()
    	for i = 1, 15 do
    		robot.use()
    	end
    end

     

    • Нравится 3

  5. Очень забавно поднимать тему 3-летней давности.
    Так вот, написал на обычном модеме или туннельная карта.
    Сервер -
     

    Скрытый текст
    
    local component = require("component")
    local serialization = require("serialization")
    local event = require("event")
    local term = require("term")
    local gpu = component.gpu
    local keyboardAddress = component.keyboard.address
    local screenAddress = component.screen.address
    local tunnelMode, port = true, 1
    
    gpu.setResolution(80, 25)
    if component.isAvailable("tunnel") and tunnelMode then
    	tunnel = component.tunnel
    else
    	modem = component.modem
    	modem.open(port)
    end
    
    local function saveScreen()
    	local screen = ""
    	for i = 1, 25 do 
    		for j = 1, 80 do 
    			local xCursor, yCursor = term.getCursor()
    			if i == yCursor and j == xCursor then
    				screen = screen .. "█" 
    			else
    				screen = screen .. gpu.get(j, i)
    			end
    		end
    	end
    	return screen
    end
    
    local function virtualEvents(_, _, _, _, _, evt)
    	if evt == "updateScreen" then
    		if tunnel then 
    			tunnel.send(saveScreen())
    		else
    			modem.broadcast(1, saveScreen())
    		end
    	elseif evt == "shutdown" then
    		event.ignore("modem_message", virtualEvents)
    	else
    		local evt = serialization.unserialize(evt)
    		if evt[1] == "key_down" or evt[1] == "key_up" then
    			event.push(evt[1], keyboardAddress, evt[3], evt[4], evt[5])
    		elseif evt[1] == "clipboard" then 
    			event.push("clipboard", evt[1], evt[2], evt[3])
    		elseif evt[1] == "touch" or evt[1] == "drag" or evt[1] == "drop" or evt[1] == "scroll" then
    			event.push(evt[1], screenAddress, evt[3], evt[4], evt[5])
    		end
    	end
    end
    
    event.listen("modem_message", virtualEvents)

     

    Клиент - 
     

    Скрытый текст
    
    local component = require("component")
    local serialization = require("serialization")
    local event = require("event")
    local term = require("term")
    local work = true
    local tunnelMode, port = true, 1
    
    if component.isAvailable("tunnel") and tunnelMode then
    	tunnel = component.tunnel
    else
    	modem = component.modem
    	modem.open(port)
    end
    
    local function send(msg)
    	if tunnel then
    		tunnel.send(msg)
    	else
    		modem.broadcast(port, msg)
    	end
    end
    
    while work do 
    	local evt = {event.pull()}
    	if evt[1] == "key_down" or evt[1] == "key_up" or evt[1] == "clipboard" or evt[1] == "touch" or evt[1] == "drag" or evt[1] == "drop" or evt[1] == "scroll" then
    		if evt[1] == "key_down" and evt[4] == 63 then
    			send("updateScreen")
    			local screen = {event.pull("modem_message")}
    			term.clear()
    			io.write(screen[6])
    		elseif evt[1] == "key_down" and evt[4] == 41 then
    			term.clear()
    			work = false
    		elseif evt[1] == "key_down" and evt[4] == 59 then
    			send("shutdown")
    		else
    			evt = serialization.serialize(evt)
    			send(evt)
    		end
    	end
    end

     

    Управление почти тоже самое:
    Тильда(Ё) - выход из программы на локальном компьютере
    F1 - выход из программы на удалённом компьютере
    F5 - обновление экрана.
    У сервера и клиента есть 2 параметра - 
    tunnelMode и port.
    Первый параметр отвечает за  использование туннельной карты(если она есть) или использование модема. (true - использовать туннельную карту/false - не использовать)
    Второй сам за себя говорит - за порт.
    (Картинка чёрно-белая, само собой)

    Очень важные картинки:
     

    Скрытый текст

    1a0617d0c51fcffb9647c4951fef19ab.png
    eec5f53e80bd8cc1553a7bfc92017614.png

     

    • Нравится 4
    • Одобряю 1
×
×
  • Создать...