Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем Zer0Galaxy
-
-
Вызывать в цикле функцию addLabel нет необходимости. Каждый вызов такой функции создает новый компонент-метку, тебе же нужно просто изменить надпись на уже существующей метке. Сделать это можно изменив поле caption и перерисовав метку:
Label1.caption="New caption" Label1:redraw()
Теперь о том по какому событию происходит смена надписи. Если ты просто вставишь эту смену в цикл
for i=1,10 do Label1.caption=i Label1:redraw() end
то увидишь лишь последнее значение метки, а тебе, как я понял, нужно сделать счетчик, который бы считал с определенным периодом.
Можешь для этого использовать компонент-таймер
-
function text(a) return print(a) end Edit1=Form1:addEdit(10,10,function() text(Edit1.text) end)
text - строка текста, введенного в окно ввода.(или вообще в другую переменную).local a=Edit1.text
-
У тебя не экран не очищается, а не обрабатывается корректно событие "touch". Дай ссылку на полный код и опиши чего делаешь и что хочешь получить
-
А интернет карту вставил?
В ОС 1.6, вроде, нужно крафтить дискету с pastebin и wget
-
Я решаю работу с "кнопками" так:
...
Тут надо учитывать, что при выполнении команды event.pull("touch") программа замирает пока не кликнешь по экрану. Т.е. надо обрабатывать не только "touch", но и другие события.
-
а как можно открыть реднет на планшете с вайфаем т. е. какую сторону надо прописывать в rednet.open()?
Узнать сторону к которой подключен модем можно запустив такой код:
for n,sSide in ipairs( rs.getSides() ) do if peripheral.getType( sSide )=='modem' then print(sSide) end endА вообще, переходите на OpenComputers. Там таких проблем нет, зато есть другие.
-
2
-
-
Реальными компами

Что то я не понял, если майнить реальные биткойнты реальными компами, то почему тема называется "Аналог BitCoint"?
Или предлагается установить на сервере ОС-компьютер, который будет принимать от игроков комбинации цифр и выдавать взамен UU-шки или ресы? А как игроки будут вычислять эти комбинации, это уже вопрос игроков.
-
1
-
-
Сделай ссылки на библиотеки, пожалуйстаИспользуются либы: thread, doubleBuffering, image. -
Вау! Мне нравится этот эмулятор. Вот только почему то основная файловая система readonlyИ еще OCEmu немного модифицированный мной -
Вот почитал о вашем радиоперехвате и мысль меня посетила, почему бы не сделать на серве игру вроде охоты на лис. На карте случайным образом раскидываются радиопередатчики. Замаскированные, естественно. Возле передатчика размещается какая либо вкусная плюшка или инфа, позволяющая найти другой передатчик. А игроки бегают по карте с планшетиками и пытаются их найти.
-
Значит send - это режим "face-to-face". Ага. А в роли адреса, что выступает ? Оригинальный ID платы в "приёмнике" ?
точно
-
1
-
-
На счет рекламы:
Вариант №1: Рекламный компьютер с периодом, скажем 10 минут, пишет в чат рекламные объявления по одному. Если пользователь не хочет их видеть, он набирает команду /nospam. Текст объявлений, разумеется, должен проходить цензуру.
Вариант №2: В чат автоматически ничего не пишется. Что бы почитать рекламу, пользователь набирает команду /news и получает в чат (только он) пачку рекламок.
-
1
-
-
Ты создаешь конструктор: используя двоеточие
function GuiObject:CreateNew(x, y, w, h, listeners, container) ^ |Это синтаксический сахар Луа, который следует понимать как неявная передача в функцию еще одного параметра. Например, испльзуемое тобой определение конструктора, равнозначно вот такому (без двоеточия):
function GuiObject.CreateNew(self, x, y, w, h, listeners, container)
При вызове конструктора через двоеточие, первым параметром (self) передается сам вызывающий объект. Однако ты вызываешь конструктор без двоеточия, поэтому туда где должен быть объект попадает значение х, равное 1 и так далее со сдвижкой на один параметр. Вот ты и получаешь вместо listeners значение container={}. А container вообще остается не определен.
Либо опиши конструктор без двоеточия, либо вызывай его через двоеточие.
-
2
-
-
Есть какой хелп по моду?
-
Во-первых, это сделает алгоритм управления турелью зависимым от реализации мода.Предлагаю так как в OS открытые исходники, дать турели функции датчика движения.Во-вторых, это сильно упростит управление турелью. Обнаружил-шмальнул.
Есть датчик, который обнаруживает. Есть турель, которая стреляет. Есть компьютер, который всем этим управляет. Давай не лепить всё в одну кучу.
А дальше мы захотим туда же встроить микроконтроллер. Купил в магазе турель, установил и она начала стрелять.
-
2
-
-
-
Улучшение "Невидимость" позволит чатбоксу с улучшение "Сканирование" не обнаружить откуда исходит сигнал. То есть не даёт отследить местоположение твоего чатбокса.Улучшение "Всевидящее око" позволяет обнаруживать откуда исходит сигнал, посланный с улучшением "Невидимость"
Улучшение "Гений маскировки" не позволит чатбоксу с улучшением "Всевидящее око" обнаружить откуда исходит сигнал
и т.д.

-
11
-
-
-
Как сравнивать числа?
mn=require("metanum") A=mn(2) B=mn(1) if A>B then print("2>1") else print("1>2") endПри необходимости сравнить метачисло с числом, приводим их к одному типу. Например, так:
A=mn(2) B=1 if A:tonumber()>B then -- Приводим метачисло к числу
или так:
A=mn(2) B=1 if A>mn(B) then -- Приводим число к метачислу
-
Попробуйте угадать, что будет выведено на экран в результате выполнения нижеприведенного кода:
N=1e16 if N+1 > N then print("Норма") else print("Лажа") endЕсли вы твердо уверены, что N+1 заведомо больше N и ваш ответ "Норма", то вы, наверное, будете несколько удивлены, когда выполните этот код на компьютере.
Дело в том, что Луа хранит числовые значения в формате с плавающей запятой. Это означает, что каким бы большим число ни было, оно всегда занимает в памяти компьютера одинаковое место, а значит, чем больше число, тем меньше точность, с какой оно хранится. И при достаточно большом N точности, что бы увеличить его на единицу оказывается недостаточно.
Избежать подобной проблемы поможет тип данных, который я назвал "Метачисла". На самом деле метачисла являются луа-таблицами, но большинство арифметических операций с ними можно проводить также как и с обычными числами. С той лишь разницей, что размер памяти, занимаемой метачислом, ограничивается только памятью компьютера, а значит, метачисло может принимать сколь угодно большие значения, не теряя при этом точности.
Метачисло может быть создано при помощи библиотеки metanum
pastebin get PsMFQame lib/metanum.lua
Библиотека содержит единственную функцию – функцию создания метачисла.
metanum([num[,divprec]])
Параметр num определяет начальное значение метачисла и может быть обычным числом, строкой или другим метачислом. Если параметр отсутствует, будет создано метачисло равное нулю.
Параметр divprec ограничивает точность метачисла при выполнении операции деления. При делении некоторых чисел, скажем 1 на 3, может возникнуть бесконечная дробь, которая без такого ограничения заняла бы всю память компьютера. Чем больше divprec, тем больше значащих цифр может содержать метачисло. По умолчанию это число равняется 32.
Мета числа можно складывать, вычитать, умножать и делить, как между собой, так и с обычными числами. Результатом такой операции всегда будет метачисло.
Метачисла можно возводить в степень, но степенью должно быть обычное число.
Метачисла можно сравнивать с другими метачислами. Если у вас возникнет необходимость сравнить метачисло с числом, вы должны привести оба значения к одному типу.
Пример нахождения факториала 300:
mn=require("metanum") –- подключаем библиотеку f=mn(1) -- создаем метачисло, равное 1 for i=1,300 do f=f*i -- выполняем умножение 300 раз end print(f) -- выводим результатПример нахождения степени двойки:
mn=require("metanum") –- подключаем библиотеку two=mn(2) -- создаем метачисло, равное 2 print(two^1024) -- возводим в степень и выводим результатКак видим, после создания метачисла, с ним можно не задумываясь работать так же, как и с обычным числом.
Но, к сожалению, над метачислами не могут быть выполнены функции библиотеки math. Однако, метачисла обладают некоторыми собственными функциями. К примеру, если мы имеем некое метачисло М, над ним можно выполнить такие действия:
M:tonumber() – преобразует метачисло в число. Внимание! Возможна потеря точности. M:floor([n]) – возвращает целую часть метачисла. Если задан параметр n, отсекает, оставляя n знаков после запятой. M:abs() – возвращает абсолютное значение (модуль) метачисла. M:toexp() – преобразует метачисло к экспоненциальному виду.
PS: стоит добавить, что арифметические операции над метачислами выполняются значительно медленнее, чем над обычными числами. Поэтому использовать метачисла следует только тогда, когда в этом действительно есть необходимость.
-
8
-
-
Т.е. если ты забудешь про пожаротушение и поставишь в комнате верстак, тебя зальет водой? Может лучше делать перегородки из шерсти, которые сгорят в первую очередь и откроют воду?
-
Обновил библиотеку forms. Теперь она, а значит и fmaker, позволяет вставлять в поле ввода по кнопке Insert.
-
5
-
-
П.С. кстати, в КК была функция гетРанингПрогКакой-тоИлиКакЕёТам(), которая возвращала имя запущенной проги. В ОС такого нет? Или на худой конец написать Использование: имя_программы <ширина> <длина>- process.running([level: number]): string, table, string
Возвращает путь к текущей запущенной программе (т.е. последней, которая была запущена функцией process.load).
Параметр level по желанию может использоваться для доступа к родительскому процессу. По умолчанию этот параметр равен 1 (текущая программа). Значение 2 будет означать родителя текущей программы (т.е. ту программу, которая вызвалаprocess.load, чтобы запустить текущую) и т.д.
Второе возвращаемое значение — окружение процесса.
Третье возвращаемое значение — это название процесса (т.е. параметр name функцииprocess.load). Для программ запущенных шеллом, это будет команда которая ее запустила.
Например: для программы запущенной командой ls -l, первое полученное значение будет ls, а третье — ls -l.
-
4
-
будет ли обновление редактора с добавлением возможности вставки в какие-либо поля ввода ?
не очень удобно "от руки" вводить, например, множество одинаковых цветов или "править" их уже в сгенерированном коде
Можно сделать вставку из клипбоарда. Но как в клипбоард что-то помещать? Средства ОС этого не позволяют.

"Лёгкая" библиотека GUI
в Графика
Опубликовано:
Вот пример работы того, о чем я говорил
forms=require("forms") --подключаем либу Form1=forms.addForm() --создаем форму Label1=Form1:addLabel(2,2,"0") -- создаем метку local Lmax=0 -- тут будем хранить крайнее значение метки function onTime() if Label1.caption>=Lmax then Timer1:stop() return end -- если достигли конца, тормозим таймер Label1.caption=Label1.caption+1 -- иначе, увеличиваем метку Label1:redraw() end Timer1=Form1:addTimer(1,onTime) -- создаем таймер с периодом 1 секунда Timer1:stop() -- пока притормозим его Edit1=Form1:addEdit(10,10, function() -- создаем поле ввода, по которому Label1.caption=0 -- сбрасываем метку в ноль Lmax=tonumber(Edit1.text) -- задаем крайнее значение Timer1:run() -- и запускаем таймер end) forms.run(Form1) -- старт всей конструкцииА вот пример с computer.energy
forms=require("forms") --подключаем либу Form1=forms.addForm() --создаем форму Label1=Form1:addLabel(2,2) -- создаем метку Timer1=Form1:addTimer(1,function() -- создаем таймер с периодом 1 секунда Label1.caption=computer.energy() -- в котором обновляем значение метки Label:redraw() -- и перерисовываем ее end) forms.run(Form1) -- старт всей конструкции