Ktlo
-
Публикации
96 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Сообщения, опубликованные пользователем Ktlo
-
-
Если знаешь Инглишь то стоит пройти по этим ссылкам: [1], [2]. Там по первой ссылке будет документация по функциям для работы с видеокартой, а по второй для работы с событиями такими как нажатие по экрану.
Код твой будет выглядеть в итоге примерно так (если не вдаваться в удобное в данном случае ООП):
local event = require("event") local gpu = require("component").gpu --Рисуем кнопку например gpu.setBackground(color) gpu.fill(x, y, w, h, " ") while true do local e = event.pull() if e[1] == 'touch' then if e[3] >= x and e[3] < w + w and e[4] >= y and e[4] < y + h then --Наша кнопка для примера нажата, далее твои действия end end endА ещё, возможно лучшее решение, использовать готовые библиотеки для графического интерфейса с форума: [1], [2], [3].
-
Первый вариант:
local event = require "event" function event.shouldInterrupt() return false endПри последующей работе библиотеки event программа не будет прерываться при этом сочетании клавиш.
Второй вариант:
Не использовать библиотеку event вообще. Вместо этого получать события так:
local computer = require "computer" while true do local e = computer.pullSignal() -- Далее обработка события end-
3
-
-
Это что за оператор? В Луа 5.2 не работает.
В Lua 5.3 его добавили. До этого такого не было.
-
Тема обновлена
Добавлены математический метаметод __idiv() и метаметоды для битовых операторов.
-
-
Ktlo а при помощи этой библиотеки сохранить в файле многомерный массив элементами которого тоже являются массивы а потом прочитать его обратно из файла в тот же массив можно?
Да, можно.
-
@@Ktlo, не, это каллбечит не игроклуб. Клуб просто грузил проц.
А это может быть все что угодно, периферия какая-то где-то или в самом моде ОС что-то и пр.
Как его понять причину, если просто в консоль шмалит какая-то хрень http://puu.sh/neFPx/455aaf7bc2.png
У меня на сервере мясном тоже так было, я исправил проблему внутри программы и перестало лагать. Код такого типа может жрать системные ресурсы, несмотря на всякие ограничения:
repeat rcall(error, "Ошибка!", 0) until false
-
Ну теперь ясно, из-за чего лаги начались. Надо в программе ошибки исправить, и от pcall() избавляться. У меня однажды была подобная проблема. Нужно каждую из игр и прог, что там запущены протестировать на создание ошибок и убрать их на совсем, или пока ошибку автор не исправит.
-
Вот то, над чем я кумекаю:
Функция rednet.receive() сама ждёт, пока не получит сообщение. Но, чтобы при этом анимацию загрузки делать с использованием реднет, одним потоком не обойтись. Нужно использовать функцию parallel.waitForAny().
function wait() -- Функция отрисовки экрана загрузки while true do ... slepp(1) -- Это важно! end end parallel.waitForAny(wait, function() id, message = rednet.receive() end)Вот как-то так.
Скорее всего нельзя функции передавать так. По крайне мере в ОС точно нельзя.
А чего нельзя? Кто-то запрещает?

-
2
-
-
Алгоритм бы ваш увидеть, а то так ничего не понятно. Мы же не клуб начинающих оракулов.

-
1
-
-
Ну так байт-код то интерпритируется...
А я говорил что-то против? Я просто имел в виду, что Lua не использует названия локальных переменных для доступа к их значениям. Следовательно даже никакого v1 и v2 там нет.
-
1
-
-
Если бы lua компилировался, то он бы замечал ошибки типа: print(unresolvedReference.field), во время компиляции, а не во время исполнения.
А где здесь ошибка?
Компилируется язык не до машинного кода (с Lua такое не возможно), а до байт кода. Называется это JIT-компиляция. Да что я тут распинаюсь, даже на Википедии об этом сказано.
-
Как такое может быть в интерпритируемом языке? Максимум эти имена будут приведены к виду v1,v2.
Вы не веруете в Lua байт код?

На сомом деле Lua - компилируемый язык, который компилируется каждый раз перед исполнением программы, далее Lua интерпретирует его. Также он может запускать уже готовый байт код (но в OC это надо включить в конфигах). Это всё избавляет от необходимости использовать имена переменных для исполнения самого кода.
-
Это в паскале или С так. А в Луа любая переменная - это значение в таблице окружения, а имя переменной - ключ этого значения.
А локальные переменные? Мне кажется они по-другому устроены, они же не являются ключами таблицы, соответственно их имени во время исполнения программы не существует, наверное.
-
true/false — два сосотяния, по идее, 1 бит.
UTF-8.
В компьютере нет указателя на бит, обычно такие типы данных занимают 1 байт, но в Lua может и больше.
-
1
-
-
Мы знаем что у игры открытый исходный код
С каких пор у Minecraft открытый исходный код?
-
2
-
-
А как отпечатанные блоки дебаг-картой ставить?
Ставить блоки с NBT. Если Doob захочет сделать с напечатанными блоками, то могу с этим помочь
-
Отсчитывает время, не знаю, что еще написать... В секундах.
local timeStop=io.read() local count=io.read() for i=1,count do os.sleep(timeStop) --дальше ваш код, что нужно сделать, редстоун подать, пиво снять... end
Этот код не работает. Функция io.read() без аргументов возвращает строку. Нужно использовать io.read("*n"), тогда будет возвращаться число. О нужности и важности этого творения я уж промолчу, выше уже говорили об этом.
-
7
-
-
Там нет ООП и арифметики.Ты меня не понял, я имел в виду, что без ООП это то же, что и либа qwertyMen, о чём и писал ещё в начале темы. А про арифметику я писал дальше, что стандартный тип Lua, число, и так может вычисляться. И будет делать это быстрее, нежели в твоей библиотеке с помощью ООП. Также с числами Lua можно делать множество других сложных конструкций, из-за чего с ними взаимодействовать удобнее, о чём я тоже писал выше.
P.S. Мне этот спор начинает надоедать, особенно, когда надо напоминать, о чём писал.
-
2
-
-
-
Хочу посмотреть как ты без всяких либ будешь считать что то типо такого:
[il]FF0A116 * 71838 + 2215 - (8310 ^ LOX36)
Это не отменяет того факта, что без ООП это будет сделать проще, и быстрее в последствии будет вычисляться. Также интересно, где мне потребуется использовать столько нетипичных СС вместе, но спор был не об этом.
P.S. Хватит гадить в теме.Ну я же по теме, просто получается, что "+1 велик", написал ты.
P.S. Всё ухожу.
-
1
-
-
Ну а теперь сам посуди, что выглядит лучше, первое или второе?
a = CustomInteger("FF", 16) b = CustomInteger("73", 8) print((a + b):to(8))Вот второе. Это второе пишется немного дольше, вводит бессмысленный объект "CustomInteger", да и вычисляет немного дольше. А главное не понятно зачем это. В Lua уже существуют числа, а вопросом, как их считать и отобразить, должна была заниматься твоя библиотека. Также интересно, что мне делать с этой конструкцией:
for i = 0, CustomInteger("KTLO", 63) do print(i) --Интересно... endРазумеется я могу переводить каждый раз число в нужную мне СС, используя при этом tonumber(), ведь у тебя нет соответствующего метода, но не лучше ли мне использовать стандартный тип? Чем постоянно его конвертировать? Но это не самое весёлое...
А зачем тогда человечество сделало разные системы счисления? Ведь вычисления те же самые?

Надо бы ответить тем же:
. Не знаю будет ли это новостью, но 16+15 == 0x10 + 0xF, к примеру. При чём числа в компьютере хранятся в двоичном виде. Это одна из причин существования разных СС, остальные сам додумай. Сразу открою секрет, почему люди пользуются в основном десятичной СС:
Потому что у человека 10 пальцев

-
1
-
-
В чём смысл вычислений в разных системах счисления, если это по сути одно и тоже? Не понимаю, зачем здесь ООП. В остальном функционал не прибавился.
-
1
-
-
Как сделать так, чтобы цикл повторялся при определенных условиях?
while <условие> do --какие-то действия endПока условие верно цикл будет работать. Пример:
local i = 0 while i < 10 do i = i+1 end
Есть ещё такой цикл с условием:
repeat --Какие-то действия until <условие>Этот цикл запускает первую итерацию (один проход по телу цикла) после смотрит на условие, если оно не верно, то запускает новую итерацию.
Также цикл можно прервать внутри его блока при необходимости через условный блок:
local i = 0 while true do --условие true всегда верно, => цикл должен работать бесконечно, i = i+1 --пока его что-то не прервёт внутри блока]] if i < 10 then --Условный блок break --Действие, прерывающее цикл. end end-
6
-

Lua-гуру спрашивает!
в Корзина
Опубликовано:
А что не так?!