Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем Zer0Galaxy
-
-
Конечно не число, а строка. Тебе нужно эту строку в число преобразовать. Просто tonumber не поможет, поскольку а представляет собой не число, а арифметическое выражение. Можешь сделать функцию для разбора арифметических выражений. А можешь воспользоваться функцией loadstring
a="1+2+4" n=loadstring("return "..a)() rs.setBundledOutput("right",n) -
Нео, сделаешь такой роутер?
Пока Сеть ничего из себя не представляет, покупать платы все равно никто не будет.
Сейчас Крутой работает над интернет-сервисом, я думаю над DNS. Со временем сделаем WEB-сервер, напишем браузер, может тогда спрос на ОН-платы появится.
-
Прописываются они автоматом. Но, вставлять их в сервер придется руками. Да и как мы узнаем, какие платы реально используются, а какие выброшены в лаву? Поэтому цена платы не должна быть слишком маленькой и если возможно надо ограничить выдачу плат в одни руки.
-
Совершенно верно. Только есть проблемка - они не стакаются
-
Я даже больше скажу, любая даже скрафченая плата не подойдет. Нужна плата, подключенная к Сети. И у меня таких есть несколько штук. Могу предоставить их в банк для реализации.
-
Хотеть!! Вот это то, чем я бы пользовался.
Боюсь, не смогу реализовать всё сразу. Рассчитываю на помощь.
Но нужно что бы платы как то выдавались пока тебя нет в сети. Иначе гениальная мысль придет, и нужно будет ждать пока ты в онлайне будешь.
Планирую реализовывать платы через банк. Но на то нужна воля банкиров.
>>Можно было сказать, я бы добавил в свою тему.
Я подумал, эта информация должна быть в начале темы вот и завел новую. Хочешь, перенеси в свою, а эту закроем
-
На сервере Information Technology начинает работу глобальная сеть OpenNet. В отличии от децентрализованной сети CraftNet, новая сеть построена на компактно расположенных серверах. Связь клиента с одним из серверов осуществляется при помощи пары связанных плат, одна из которых установлена в сервер, другая находится у клиента. Каждый сервер способен обслуживать до трех клиентов. Таким образом связь защищена от прослушивания, а покрытие Сети полностью охватывает все доступные миры сервера Information Technology.
Что может и чего не может сеть OpenNet?
Если вы думаете, что подключившись к Сети вы получите все мыслимые и немыслимые блага, то вы ошибаетесь. Сеть это просто средство обмена информацией между двумя и более компьютерами. Как будут запрограммированы эти компьютеры и какого рода информацией будут обмениваться, зависит только от вас (ну и от меня, в какой-то мере)
Что необходимо, чтобы подключиться к сети OpenNet?
Во-первых, ОС-компьютер с установленной операционной системой.
Во-вторых, библиотека opennet.lua, которую можно найти под спойлеромlocal component=require("component") local event = require("event") local opennet = {} local ONcard local LocalIP function opennet.getIP() if not component.isAvailable("tunnel") then ONcard=nil return nil, "OpenNet-карта не обнаружена" end ONcard=component.tunnel local ok,err=ONcard.send("", "", "getip") if not ok then return ok, err end local ev, addr, _, mess repeat ev, addr, _, _, _, LocalIP, _, mess = event.pull(3,"modem_message") if not ev then return nil, "Нет ответа от proxy-сервера" end until addr == ONcard.address and mess=="setip" return LocalIP end function opennet.send(recIP, ... ) if not ONcard then return nil, "OpenNet-карта не инициализирована" end return ONcard.send(recIP, LocalIP, ...) end function opennet.receive(timeout) local ev repeat ev = {event.pull(timeout,"modem_message")} if not ev[1] then return nil end until ev[2] == ONcard.address return table.unpack(ev,7) end function opennet.sendrec(recIP, ... ) local ok,err=opennet.send(recIP, ... ) if ok then return opennet.receive(3) else return ok,err end end ----------------------------------------------------------------------- return opennetили скачать при помощи команды
pastebin get VYqtYAXL opennet.lua
В-третьих, OpenNet-плата.
Где взять OpenNet-плату?
Количество плат, которые могут быть подключены к Сети, ограничено. Поэтому, массовых раздач я устраивать не собираюсь. Людям, которые проявили себя в программировании, я готов предоставить платы при личной встрече на сервере. Остальным, возможно, придется приобретать их в банке. Очень рассчитываю при этом на помощь наших банкиров: Тоторо и Алекса.
Какие функции предоставляет библиотека opennet?
getIP() - осуществляет инициализацию компьютера в Сети. В случае удачной инициализации, возвращает IP-адрес компьютера. В случае ошибки, возвращает два значения: nil и строку, содержащую информацию об ошибке. Следует отметить, что IP-адрес статический. Это значит, что при помощи одной ON-платы вы всегда получите один и тот же IP-адрес. Но это не избавляет от необходимости вызывать getIP всякий раз в начале работы с Сетью.
send(recIP, ... ) - отправляет данные на адрес recIP. Одним пакетом можно отправить несколько значений, которые должны быть числами, строками и/или логическими величинами. Суммарный объем данных, отправляемых в одном пакете, не должен превышать 8 кБ. Функция возвращает true, в случае удачной отправки или nil и сообщение об ошибке, в противном случае. Если функция вернула true, это означает, что данные были отправлены, но еще не означает, что они были приняты получателем.
receive([timeout]) - ожидает приема данных. Если задан параметр timeout, время ожидания ограничивается. В случае приема данных, возвращает первым значением адрес отправителя, затем - принятые значения. В случае таймаута, возвращает nil.
sendrec(recIP, ... ) - это просто объединение функций send и receive. Отправляет данные и возвращает полученный ответ. Очень удобно при работе из интерактивного интерпретатора.
А можно пример работы с библиотекой?
Пожалуйста.
На принимающем компьютере выполним следующие команды:
После этого компьютер переходит в режим ожидания. Запомним (или, в моем случае, запишем) IP-адрес. На другом компьютере выполним команды для передачи данных на этот адрес:
Теперь посмотрим на принимающий:
К стати, если отправить данные на несуществующий адрес, в ответ от сервера будет получено сообщение:
Каковы перспективы развития Сети?
1. Для начала планирую сделать DNS-сервер, чтобы можно было отправлять данные на удобочитаемые имена.(реализовано)
2. Создание чата, в котором школьники смогут материться не рискуя навлечь на себя гнев администрации (реализовано).
3. Организация доступа к OpenNet через обычную сеть путем установки роутеров в местах проживания игроков. (реализовано)
4. WEB-сервера с полезной или просто интересной информацией. Благо теперь на русском (требуется наполнение web-страниц).
5. Служба pastebin для доступа к известному ресурсу в условиях отсутствия интернет-платы (реализовано)
6. Да и много еще чего.-
2
-
1
-
-
Внутренние методы СС Textutils.serialize не подходили, из за медленного оператора ".." , который добавлял в итоговую строку символы.
Поискав готовые решения на сайте lua-users, я нашел подходящий код для сохранения таблиц в файл, и переписал его под работу со строкой.
Но ведь там же сплошь и рядом конкатенация. Ты сравнивал по производительности с serialize?
-
Как работает система событий в CraftOS?
Когда возникает какое либо событие (тикает таймер, нажимается клавиша, приходит пакет по сети и т.д.), оно становится в очередь событий. Существует функция os.pullEvent, которая вытаскивает первое событие из очереди и возвращает его программе. Функция эта имеет параметр фильтр. Если этот параметр не пустой, pullEvent вытаскивает из очереди события, пока не вытащит совпадающее с фильтром. Все не совпавшие события будут потеряны.
К примеру функция sleep ждет события "timer", а функция read - "char" и "key". Это значит, что пока эти функции не завершат свою работу, rednet-пакеты будут теряться.
Как этого избежать?
Способ №1: Нужно обрабатывать все события, которые нужно обработать. Т.е. вызываешь pullEvent без параметра (а не sleep или read) и в зависимости от того какое пришло событие делаешь те или иные действия.
Способ №2: Организовываешь многопоточность и в каждом потоке обрабатываешь какое то одно событие. Например, один поток - для обмена по сети, один - для ввода с клавиатуры и т.д.
Где именно проблема в твоей программе, я смогу сказать не раньше чем увижу полный её код.
-
Достаточно сделать отдельный поток, который бы слушал сеть, обрабатывал принятый пакет и снова погружался в rednet.receive. Два игрока все равно не смогут послать пакеты одновременно, как бы не старались.
-
В каком случае вызывается функция executeCMD ?
Главное, чтобы между вызовами функций addPlayer не было промежуточных sleep-ов или ожидания других событий. Тогда пакеты от разных игроков не будут теряться. В крайнем случае воспользуйся многопоточностью, так чтобы один поток постоянно находился в режиме прослушивания сети.
-
КК - это безумный мод, который неограниченно может жрать ресурсы сервера, в отличии от ОС, и я не знаю, что нас с Ридом до сих пор останавливает от его сноса с сервера, видно все-таки где-то в глубине души ностальгируем и любим его.Где то о-очень глубоко.
Что ни говори, а КК гораздо проще в освоении чем ОС и более интуитивно понятный. А лагульку много на чем можно сделать. Взять хотя бы WiFi-бомбу имени Семоро или заборы из BC-труб.
-
while true do minecomplete = minecomplete+1 ... if minecomplete == dis then ... break end endИнтересное решение. А с циклами типа for do ты не знаком?
-
300 тугриков? Не дешево?
-
На это нужна воля Администрации

-
2. Прошу в оплату - удвоение радиуса чанклоадера.Только твоего или чанклоадера вообще?
-
Да, get возвращает адрес своей платы. А если мне нужен адрес сетевухи другого компьютера?
-
-- связываем с видеокартой компьютера нужный монитор gpu.bind('xxx-xxx-....-xxxx')Можно ли одним нажатием получить в буфер обмена адрес карты или вбивать посимвольно нужно?
-
Тобишь, на входе - таблица ID и цены, верно? А на выходе - общая цена и список сырья?В таблице следует хранить цену только для базовых элементов (сырья). Для остальных предметов - составляющие крафта. Ведь крафт предмета может измениться, а это повлияет не только на цену самого предмета, но и на цену предметов, в состав которых он входит.
Кто будет заполнять первоначальную таблицу сырья?Пользователь. Разные пользователи по разному могут оценивать свое сырье.
>>Как должно производится добавление новых продуктов в таблицу - гуи или в текстовом редакторе?
В интерфейсе программы. Но было бы не плохо, что бы формат файла позволял просматривать и редактировать его в текстовом редакторе.
>>Я готов взяться, я готов взяться, правда, будет 2 условия.
Каких?
-
Описание: требуется разработать программу, позволяющую рассчитывать стоимость предметов мира Minecraft на основании стоимости компонентов, используемых при крафте этих предметов. Стоимость, рассчитанную программой, можно учитывать при покупке/продаже/обмене, а так же при подготовке к созданию сложных объектов.
Оплата - по договоренности.
Поддерживаемое оборудование: ПК ОС, монитор 2-го или 3-его уровня.
Требования: программа должна работать с базой данных предметов. При вводе нового предмета в базу данных программа должна запрашивать типы и количество компонентов, входящих в состав. На основании этих данных, и данных о предметах, введенных в базу ранее, программа рассчитывает стоимость нового предмета. Стоимость должна выражаться в условных единицах (тугриках) и в базовых элементах. Под базовыми элементами подразумеваются предметы не имеющие крафта либо сложность крафта которых можно не учитывать. Пример такого расчета привел Крутой в блоге Тоторо Как собрать ...
Вопросы и предложения оставляйте в этой теме.
-
Не совсем понял функции мамки. Она просто собирает детенышей в сундук, откуда их надо доставать руками и расставлять по местам. Не лучше ли что бы они после разгрузки сами возвращались на новую позицию. Координату позиции рассчитать не сложно.
И еще. В процессе копания черепахи выполняют много лишних разворотов. Можно сделать так: при движении вниз черепаха копает под собой и перед собой. Внизу разворачивается на 180, перемещается на шаг вперед и движется в верх, копая над собой и перед собой. Таким образом выкапывается четыре столба вместо трех и выполняется всего один разворот.
-
Дим, а как он, мне интересно, кинет в привате в сундук вещи, и тем более заберет?
Кинуть в трубу можно. Ах! У нас труб уже нет. Да, тут надо думать. User707, когда будешь тестить в сингле, учитывай какие моды стоят на сервере.
А время там тикает от 30 секунд до 0, например, и пишется, мол, "Петя думает"Можно временем никого не ограничивать. После того как вещи для обмена переданы роботу, доступны кнопки "Подтвердить" и "Забрать". Если один из участников нажал "Подтвердить", он еще может забрать свою вещь пока другой участник не сделал подтверждения. Если оба подтвердили, обмен считается совершённым.
-
И как мы поймем, кто кинул предмет?
Вася кидает шкуру
мамонтакоровы в левый сундук и жмет кнопку "Предложить". Робот поворачивается влево и вытаскивает шкуру себе в инвентарь. Петя кладет стак алмазов в правый сундук и тоже давит кнопку "Предложить". После того как игрок выполнил операцию "Предложить", его оппоненту выдается информация о том, что ему предлагают и в каком количестве. После того как выполнено два предложения, становятся доступны кнопки "Подтвердить". Если оба нажимают "подтвердить", робот осуществляет обмен. Если кто то нажал "Отменить", робот возвращает предметы в тот сундук откуда взял. -
Зачем два робота? Один не справится? Бегать ему не надо. Вертеться только возле сундуков

Аргументы в rs.setBundled [CC]
в Разные (отсортировать)
Опубликовано:
Да. А еще Луа вычитать может, умножать и даже страшно подумать, извлекать корни