KelLiN
Пользователи-
Публикации
72 -
Зарегистрирован
-
Посещение
-
Победитель дней
5
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя KelLiN
-
Про карты. Думается мне, что от карты берется только исходная точка, а nil возвращается если от 0,0 отошел больше чем на getRange(). Отсюда скорее всего масштаб карты ничего не изменит. Нужно будет проверить.
-
AlexCC прав, память закончится. И при том даже без заполненных сундуков. Как в обычныхЯп это выглядит. По идее переменная minNum в старт1 является локальной (логично,т.к. вне процедуры она не обьявлялась, а глобальной её в теле процедуры никто не называл) и при вызове старт2 она не очищается. Вызывается старт2, происходит по окончании вызов старт1. т.к. return нигде нет, то и minNum все еще держиться в памяти,т.к. после start1() в процедуре start2 может еще быть использована (после вызова может быть еще код.У нас частный случай отсутствие кокда,но не думаю что lua такие вещи может оптимизировать). в итоге мы должны после 500 наступаний получить 500 minNum в различных областях вложенности. Поправьте если в луа сделано тупо и не как везде.
-
В правила добавить нужно количество разрешенных принтов на чанк. Пока 10 000 поставить с пометкой, что будет урезано и лишнее удалено, чтобы не жаловались. Вести радостные. Хорошо что я иридий на солярки потратил. А то хотел 16 иридия просрать на дэкор. Чисто ванильный рецепт тоже может не стоит оставлять, а хоть чуточку усложнить. Это что бы дней через 5 можно было только начать печатать. Может даже для крафта прпинтера сделать деталюху за тугрики символических каких 30-50, либо крафт, но дорогой с целью привлечения голосовальщиков. А то может и голосовали бы, но нужно хотябы 1 раз им попробовать, понять чуток халявности в этом деле.
-
Могу подсобить и распечатать ограничительную доску в нужный размер . Если сделать размер ровно в высоту, то пролететь физически будет возможно только со скоростью света, иначе гравитация за пол блока все равно притянет на пару вокселей. Плюс порожики принтануть можно чтобы удобнее ходить было.
-
Не был бы ты ленивый, поправил бы твой код. А со скриншота перепечатывать - я сам ленивый. Что-то вроде: function printMessage(_,_,msg_,_) print(msg) end event.listen("bitnet_message",printMessage) while true do io.read blabla end Твой текущий код с pull будет самоблокирующимся. Не сможешь отправить смс пока не примешь любой пакет.
-
Очки поднять ?! не не не. И так дорого.Я и смог только люк напечатать в 1 пиксел толщиной. Целый блок лазурита не полый внутри в сингле затаскивает порядка 5000 очков. А это порядка 100 иридия! Полый внутрях выглядит с полосками по периметру и "палится" на ура. Наоборот хотел предложить удешевление крафта хамелиума. Неподъьемно же. С такой ценой можно печатать только доллары и фанерки для люков/дверей толщиной в 1 пиксел. Что-тоя слабо верю в 40 очков за доллар. Там порядка 110 должно выходить, не меньше. Krutoy, до меня не добежал принтануть модельку, небыло хамелиума. Теперь забегай, на 10кг мы тебе аж 2 блока тебе распечатать сможем =)
- 35 ответов
-
- 1
-
-
- opencomputers
- больше декора
-
(и ещё 3 )
Теги:
-
Lesha, будешь api коробок писать, обрати внимание на то, что fill заполняет отнулевой высоты.Там нет точек куба, только углы сечения. Придется заливать попиксельно в цикле. Я часа 2 этот косяк отлавливал мутной головой в 4 утра в субботу. Уже весь код свой попереписывал с десяток раз не мог понять и заметить их недоделанный fill. На скорую руку выглядит примерно так: for i=fillStartX,fillEndX do for j=fillStartZ,fillEndZ do for k=fillStartY,fillEndY do h.set(i,k,j,2) end end end artem, я тоже про тетрис подумал тогда же.Даже сорцы breakout скачал, но ничего в них не понял. Там тонны кода. Я просто на мониторе хотел линиями рисовать как в классическом breakout. Рад что фантазия то у всех есть и мыслим почти в одинаковых направлениях, проще работать вместе будет.
-
На днях тоже сделал точно такую же бегалку курсором. Только у меня она для редактора моделей 3д принтера. Строю фигуры и потом их на печать. Сам процесс уже наблюдали Фингер и Асумонстр. Результат выглядит примерно так: Ресов хватило только на люк с текстурой командного блока: Код сырой не стал выкладывать. Кому интересно - вэлкам ту май с9 https://ide.c9.io/kellin/kt_projects Будущее за таким редактором. Только вот нам бы цветов побольше, а не 3..
-
[Other] XMPP(Jabber)-сервер
KelLiN прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Ну ботик для жаббера у меня есть мной писаный Taho. Я его в 2009 году начинал и до 2011 писал. Это не проблема. Но думаю не обязательно ботик . Я могу на коленке написать на tcl сервер, благо всё для этого там есть, опыт имеется, а также есть рабочие заготовки правда без sasl и ssl. Оперативы потянет мегабайт 10 по началу. Ботик ел что-то порядка 3-8 мб. Останется дело только за плагином для сервака майнкрафта. -
[Other] XMPP(Jabber)-сервер
KelLiN прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Можно склеить игровой чат и жаббер. Будет как хотелось. Кстати с jabber.ru аккаунта не смог зайти в it@conference.5.231.52.134 Попробовал зарегаться на самом сервере. При регистрации сказало что-то вроде "ваш пароль был изменён с и какой-то mac адрес вроде" . В общем атворизовывать не захотело по моему паролю. -
Я обычно на 14м стоял и рыл вниз. Бесит только лава и бэдрок, который фонит иногда на 6 и 7 уровни. Было бы у ресурсов разная плотность, было бы интереснее. Update: у нас на сервере стоимость сканирования уменьшена сильно ниже 10. Поэтому планшет быстро не садился.
-
Да еще и роботы апнуты по запасу энергии.
-
Затраты на сканирование по 10 на каждый блок, если я правильно помню с вики. В моей программе анализируются блоки только под игроком (от 1 до 32) и не анализируются над игроком (с 32 по 64) , хотя сканером они сканируются. По идее 12800 за 1 сканирование вперед на 20 блоков по 64 . Программа простецкая, поэтому скан чанка не делал- энергозатратно. Хотя 10мая20115 подняли батарейку планшету до с 20к до 80к, может проще станет.
-
3) Скрафтить 2 планшета и по беспроводному меняться нужными данными. Заодно и аккум почти в 2 раза полостее станет.
-
Это все понятно. Но такое ощущение, что автор просто метода в яве не нашел как нормально получить координаты )) gps то никак на производительность не повлияет. Я когда рыл ресурсы с планшетом и геосканером был gps юзал. В общем-то неплохая вещь когда нет бура. Но опять же. даже с 80 к особо не покопаешь больше 10 минут. Может еще апнуть раз в 20 ?! ну ладно, в 2 =) А вот еще идея. Может просто апгрейды апнуть ? в них тогда смысл появиться.
-
А энергозапас у планшета остался на дефолтном уровне ? А то за пол часа программирования разряжается в нуль. А если еще геосканер юзать, то вообще за минуты. Еще интересно можно ли gps.getRange() повысить для gps ? а то каждые пару чанков новую карту в gps засовывать очень неинтересно. Идеально бы вообще убрать привязку к этим картам и давать игроку настоящие координаты.
-
Ресурсов всегда не хватает. Что делать ?! Копать! Где копать ?! Вот сейчас то после прочтения данной записи мы и узнаем. Для добычи ресурсов будем использовать планшет. Сам по себе для добычи ресурсов он бесполезен, но если в него при сборке установить геосканер, то мы сможем узнавать где и сколько ресурсов находяться в породе, но с определенной в настройках сервера погрешносью. Как собирать планшет возможно расскажу потом. Использоваться будет команда сканера scan. Вот выдержка из вики: scan(x: number, y: number, [ignoreReplaceable: boolean]): table or nil, stringФункция сканирует "колонну" блоков в относительных координатах (x, y) и возвращает таблицу плотностей (с определенной погрешностью). В случае ошибки возвращает nil и ее текст.Координаты (0, 0) обозначают колонну блоков, в которой располагается сам сканер (32 блока вверх от него, и 32 блока вниз). От себя добавлю только то, что можно сканировать куб 64*64*64 , где центр куба - положение сканера. Положением сканера будет центр этого куба, тоесть 32 высота ( Также у нас на сервер насколько я понял куб будет 128*128 и высотой в 64 блока). На сканирование одного блока уходит 10 энергии. На один столб должно порядка 640. Для начала работы нам потребуется сам планшет со следующими минимальными компонентами: -видеокарта 1 уровня -монитор 1 уровня -клавиатура -геосканер -любые процессор, оперативная память, винчестер, bios и пр. . Для начала работы нам нужен планшет с записанной на диск программой. Я не использовал в планшете интернет-карту, а просто вставил текст программы нажатием средней кнопки мыши в открытый для редактирования файл. Ссылка на pastebin: http://pastebin.com/eJne1Dna . Код eJne1Dna c= require("component")computer= require("computer")event= require("event")os= require("os")term = require("term")gpu=c.gpus=c.geolyzerfunction intro() print("Нажмите пробел для сканирования") print("Нажмите q для выхода") print("Нажмите с для очистки экрана") print("Область сканирования 20 блоков на восток")endfunction scann()--сканирует область в 20 блоков от игрока в сторону севера. local cx,cy=1,1 local onThatX=0;--количество ресурсов для данного столбца. Используется для отрисовки глубины копки для нового local maxy=1;--положение курсора по окончании сканирования for x=1,20 do gpu.set(cx,cy,tostring(x));--текущий столбец data=s.scan(x,0);-- х инкриментируется до 20, у=0 ширина сканирования 1. local t=0;--"табулятор" для двухсимвольной глубины. if x>9 then t=1 end for d=1,32 do if data[d]>2 then -- в data записаны плотности блоков. >2 означает сообщать о блоках с плотностью более 2. -- Весь диапазон от 0 до 99. 99 это вроде игрок. Все ресурсы примерно одинаковой плотности в районе 3. computer.beep(2000,0.1) if onThatX>0 then cy=cy+1 if (32-d)>9 and t==0 then t=1 end;--смещаем курсор для печати на один столбец дальше из-за цифт больше 9. if cy<15 then gpu.set(cx,cy,tostring(math.floor(32-d)));--Печатает глубину на которую нужно копать вниз относительно начальной высоты игрока. else -- для 80*15 экрана. Для больших экранов можно изменить и убрать. gpu.set(cx,15,tostring(math.floor(32-d))) end end onThatX=onThatX+1 end end if t==1 then cx=cx+2 else cx=cx+1 end;t=0 if cy>maxy then maxy=cy end;--положение курсора при продолжениие печати о "нажмите enter для продолжения". cy=1 onThatY=0;--обнуляем количество ресурсов для текущего столбца. end term.setCursor(1,maxy) term.write("нажмите enter для продолжения") io.read() term.clear() intro()endintro()while true do _,_,key1,key2=event.pull("key_down") if key2==57 then term.clear();scann() elseif key2==46 then term.clear();intro() elseif key2==16 then term.clear();os.exit() endend Для демонстрации работы я подготовил стэнд: С включенным планшетом я стал в позицию 1. Для работы программы нужно обязательно смотреть на восток. Это связанно с жестким закреплением направления сканирования в программе из-за избыточной сложности пользования gps (не сложности программирования, а малого gps.range() ). Скриншоты с начальным положением и направлением в начале работы для тех, кто путается со сторонами света или пока еще не проходил географию в школе: Далее запускаем программу и увидим небольшие инструкции для работы. Возможностей пока мало: -выход по нажатию на кнопку "q" . -сканирование по нажатию на кнопку пробела . -очистка экрана по нажатию на "c". Смело нажимаем пробел и программа начнёт сканировать породу под игроком на расстояние в 20 блоков на восток. В итоге у нас получиться примерно вот такая табличка, разобраться в которой я помогу на следующих скриншотах (По оси X удаление от игрока, по Y- глубина залегания добра). А вот и обьяснение как расшифровать эту табличку: Рассмотрим на примере золота. Нужно сделать 5 шагов вперед от начальной точки и прокопать на глубину минимум 4 блока. Если копать до 7го блока, то мы выкопаем все ресурсы . Как можно заметить, дерево, шерсть и губка имели плотность ниже 2х и не попали в табличку. Но попала лава и ядерный реактор. Обьяснение скудное, но заходите в игру и покажу. Программу можно модифицировать разными способами. Добавить сетку привязок высот, чтобы небыло мешанины цифр. Тогда можно будет определять лавовые озера по горизонтальному скоплению "ресурсов". С успеход дописывается работа с gps, тогда отпадает необходимость работы только в сторону востока. Но gps.range() у нас на сервере всего 64 блока, поэтому уйдя далее этого расстояния необходимо отрисовывать новую карту и вставлять её в gps приемник, что очень сильно напрягает. А так бы можно было сделать визуальное и звуковое оповещение над каким блоком копать вниз и на сколько. Визуально показывать на сколько копать вниз, звуком пищать на широте и долготе залегания ресурсов. При этом сам модуль gps ставить невнутри в робта, а в контейнер для улучшений,иначе нужно будет разбирать робота чтобы поменять карту. Еще опечалил тот факт, что роботам увеличили энергохранилище во много раз, а планшет судя по расходу энергии оставили на стандартном уровне. Поэтому планшет и без геосканера разряжается в теченииполучаса простого программирования в нём..Надеюсь поправят и запас энергии и дальность работы gps от одной карты . Собственно для привлечения внимания к этому факту и написана статья.
-
По моему пониманию можно не просто угнать чужого робота, а все роботы в зоне действия передатчика будут ездить одинаково. Чуть пораньше можно было бы сделать парад к 9 мая мимо спавна.
-
Неоднозначно звучит фраза про КК. Можно двояко понять. Requires OpenModsLib 0.7.2 and (ComputerCraft 1.7 or OpenComputers 1.5.) Или Requires OpenModsLib 0.7.2 and ComputerCraft 1.7 and OpenComputers 1.5. Думаю нужно пробовать без КК. Сходил к ним в irc. Ответ был от человека с 8ю коммитами в OpenPeripheral. [21:55] <KelLiN> Hi. Can i use OpenPeripheral with OpenComputers only. Without computercraft ? [21:55] <Vexatos> Yes
-
Последняя версия должна бы по логике быть в шапке темы на форуме, а не в статье. (если конечно статья писалась не после темы на форуме, но тогда незачёт автору за лень в обновлении топика) Можно еще попробовать iron chests использовать.
-
Простейшее решение это стереть часть про ломание сундука в функции unload, потому как эндер сундуки зачастую настроены на разрушение , а не выпадение. удали: if not VANILLA_CHEST then robot.select(chest_slot) robot.swing() end А вообще оперативнее было бы если бы ты меня спросил в RaidCall или в другом месте
-
Если ты изменил в правильных местах, то после запуска он должен работать как и раньше. Изменения появятся только в момент высвобождения инвентаря. Код робота последний из http://pastebin.com/NQe6P6NR ?
-
Функцию unload приведи к виду: function unload() -- place ender chest robot.select(chest_slot) robot.swingDown() if robot.placeDown() then -- put items for i=empty_slot, INV_SIZE do robot.select(i) while robot.dropDown() do end end -- grab ender chest if not VANILLA_CHEST then robot.select(chest_slot) robot.swingDown() end end end (тоесть добавь где нужно Down чтобы прокопал под сундук вниз и вниз его ставил)
-
Это в порядке вещей. Нет ничего идеального.
- 20 ответов
-
- 2
-
-
-
- библиотека
- конвертация
-
(и ещё 2 )
Теги:
-
а меня после Tcl бесит, что аргументы функциям нужно передавать через (). набираешь print, потом (), потом стрелку влево, "" и только затем текст...И фигурные скобочки это наше всё. do end это пережитки прошлого века. Для чего нужно ? Синтаксис Lua в общем то унаследован от древних языков. Я не прочь использовать что-нибудь по приятнее. Даже свой конвертер думаю навоять, но в игре пишу меньше времени чем уйдёт на написание конвертера. В идеале разобраться бы с вирт машиной и надобавлять бы туда других языков.
- 20 ответов
-
- 1
-
-
- библиотека
- конвертация
-
(и ещё 2 )
Теги:
