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

Zer0Galaxy

Гуру
  • Публикации

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

  • Посещение

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

    189

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


  1. Суть симметричного шифрования в том, что ключ должен передаваться по каналу отличному от канала, по которому идет сообщение. И в руки взломщика ключ попадать не должен. В приведенном примере шифрования это не соблюдается.


  2. А почему бы просто не сделать зону запрещенную для логина? Иными словами, если Вася зашел в закрытую комнату, отлогинился и пытается снова залогиниться, его должно выкинуть из комнаты. При помощи AMI это будет программка в пять строчек:

    1. Ждем событие player_login

    2. Контролируем координаты залогинившегося игрока

    3. Если игрок в комнате, переносим его за пределы комнаты

    Таким образом, Петя, закрывшийся в комнате, будет в полной безопасности.

    А на выходе из комнаты его уже будет поджидать Вася

    • Нравится 1

  3.  

     

    Ну это вроде как не сложно, к КБ команды готовые все у Кронда взять можно.
    Кстати, предлагаю вместо пушки использовать мортиру, т.к. её принцип работы и поинтереснее, да и сложность задания увеличится (будет требоваться умная формула, по которой надо расчитывать длительность полёта в зависимости от угла, дальности и т.д. => расчитывать через сколько должен взорваться тнт).

    Пытаюсь в сингле выполнить при помощи КБ команды, показанные в видео - реакция нулевая. Может какие то для них разрешения нужны?

  4. А что могут быть за параметры при запуске программы?

    Ну, это зависит от того, что за программа. Например, программа tunnel имеет один числовой параметр - длина туннели.

    А что за динамик? Нет у черепахи никаких динамиков.


  5. Запустить программу из программы можно командой

    shell.run("<Имя_программы> <параметры>")

    Но вот управлять кнопками не получится. Нужно что-то свое придумывать


     И если можно, хоть какой нить пример такой програмки, на изучение)

    http://computercraft.ru/topic/386-proshu-pomoch-s-cherepashkoi/


  6. Здравствуйте, я начинающий программист в ComputerCraft. Подскажите пожалуйста, как можно используя RedNet сеть, с помощью планшета и черепашки сделать так, что бы я с планшета мог использовать терминал черепашки. Например с планшета, мог подключиться к черепашке и использовать ее интерфейс, как будто я взаимодействую с ней напрямую.

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


  7.  

    1. Где можно посмотреть как работают стандартные события os.pullEvent и os.pullEventRaw, другими словами хочу посмотреть на их исходный код.
    function os.pullEventRaw( _sFilter )
    	return coroutine.yield( _sFilter )
    end
    
    function os.pullEvent( _sFilter )
    	local eventData = { os.pullEventRaw( _sFilter ) }
    	if eventData[1] == "terminate" then
    		error( "Terminated", 0 )
    	end
    	return unpack( eventData )
    end
    
    

    Как сказал Нео, генерация самих событий скрыта где то в исходниках мода. А вот так они обрабатываются биосом CraftOS (см. код выше)

    Подавить mouse_click можно так: в os.pullEvent вставляешь проверку

    eventData[1] == "mouse_click"

    и если да, то ждешь еще какое то время (0,2 сек, например)

    Если в течении какого то времени приходит еще один "mouse_click", возвращаешь mouse_double_click.

    Если нет, возвращаешь mouse_click.

    Но, что плохого в том если придет и mouse_click и mouse_double_click?

    • Нравится 3

  8. А так же зачем нужно делать вот это:

    if coroutine.status( co ) == "dead" then
     filter[co],co=nil,next(filter,co)
    else

    То есть, если подпрограмма остановлена, то получаем список её аргументов из filters. Затем удаляем указатель на подпрограмму, чтобы её потом скушал сборщик мусора. Затем получаем следующие аргументы для последующей подпрограммы. Зачем нужно получать аргументы подпрограммы co если эти полученные значения в данный момент не используются? Или тут какое то хитромудреное присваивание? Просто я никак не могу понять, что эта строка делает...

    Если сопрограмма остановлена, то исключаем ее из списка 

     filter[co]=nil

    и берем следующую

     co=next(filter,co)

    Но если сделать именно так, то получим исключку т.к. filter[co] к этому моменту уже не существует.

    Можно было бы сделать через промежуточную переменную:

     co1=next(filter,co)
     filter[co]=nil
     co=co1

    но тогда никто бы не поверил, что я умею программировать на Lua. Поэтому я использовал параллельное присваивание (см. http://www.lua.ru/doc/2.4.3.html)

    • Нравится 4

  9. Хочу знать, что делает вот это: os.pullEventRaw=SingleThread или os.pullEventRaw=MultiThread. Получается то, что мы присваиваем "не понимаю чему, но судя по названию пулу" pullEventRaw указатель на функцию SingleThread или MultiThread? Почему и зачем это нужно?

    os.pullEventRaw это стандартная процедура, через которую приложение Lua получает события. Обычно текст этой процедуры соответствует тексту процедуры SingleThread. Но в многопоточном режиме приложение должно не только получать события, но и передавать их в дочерние процессы. Этим занимается процедура MultiThread, поэтому pullEventRaw перенаправляем на нее.

×
×
  • Создать...