Поиск по сайту
Результаты поиска по тегам 'api'.
Найдено 27 результатов
-
На повестке дня аддон для OpenComputers и ComputerCraft всех времён и народов, реализующий большое количество функционала для работы с миром Minecraft'а и его модификациями. Но поговорим только о версии для OpenComputers (она несколько обрезана, по сравнению с СС). Жизнь без этого мода оказалась тем ещё кошмаром, особенно при попытке играть на серверах более поздних версий майнкрафта. Но что это был за кошмар, удалось узнать только недавно - OpenPeripheral не только добавлял удобные способы взаимодействия со всем миром, но и дополнял функционал OpenComputers'а при работе со многими модификациями. Итак, аддон состоит из 3х модулей, которые будут описываться отдельно: - Core - собственно, ядро аддона, реализует некоторые базовые функции - Integration - расширенное взаимодействие с майнкрафтом и модами - Addons - дополнительная периферия для пк Информация актуальная для версии Minecraft 1.7.10. В этой части разговор пойдет о ядре аддона, так как его функционал является основополагающим для остальных модулей. Итак, в моде реализована система адаптеров - интерфейсов lua-minecraft (он-же драйвер), предоставляющих функционал для взаимодействия с объектами. У каждого адаптера есть свой идентификатор, и этот идентификатор используется для определения "владельца" функционала. В ядре, есть только адаптер для отображения документации объекта. В будущих же статьях будут описаны адаптеры в модуле, и предоставляемый ими функционал. Документация функций Ядро реализует неплохую систему документации всех своих функций, которую можно просмотреть через lua: listMethods([filterSource]):string - возвращает строчку со всеми методами методов. filterSource - идентификатор адаптера Пример: listMethods():"doc(method), getAdvancedMethodsData(method?), listMethods(filterSource?), listSources()" listSources():table - возвращает таблицу {name=true} со всеми адаптерами. Пример: listSources():{["<meta>"]=true, skull=true} - список адаптеров черепа, <meta> - адаптер ядра, skull - адаптер черепов/голов doc(method):string - возвращает текстовое описание метода. Пример: doc("doc"):"function(method:string):string -- Brief description of method" getAdvancedMethodsData([method]):table - возвращает полную информацию о методе, или всех методах. возвращаемая структура: - description:string - текстовое описание - source:string - идентификатор адаптера - returnTypes:string - строчка с возвращаемым типом(типами) данных - args:table - аргументы функции: - name:string - type:string - тип аргумента, но есть баг - отображается java-тип - description:string - nullable:bool? - принимает ли значение nil - optional:bool? - является ли необязательным аргументом - vararg:bool? - переменное кол-во аргументов (или ...) Предметы и сущности Одной из интересных особенностей OpenPeripheral является система доступа к метаданным предметов или сущностей, а именно - прокси (proxy, он же - паттерн "заместитель"). Прокси является неким контейнером, содержащем прямую ссылку на java-объект, что позволяет получать актуальную информацию о предмете или сущности, до тех пор пока прокси или объект не выгрузится из памяти. Многие методы OpenPeripheral, возвращающие данные о предметах или сущностях, могут вернуть прокси. Это позволяет экономить память в условиях огромного объема обрабатываемой информации, например - получение всех предметов ME сети, или наоборот - при малом объеме памяти на пк. Но есть и серьезный минус при работе с прокси - любая попытка доступа к данным будет занимать один игровой тик. Прокси предметов или сущностей возвращают некоторую базовую информацию, например идентификатор, позиция и т.п. Но для более подробной информации используются провайдер - интерфейс, предоставляющий специфичные данные, записанные, например, в NBT. У объекта может быть несколько провайдеров, по этому у провайдера есть идентификатор, или ключ, под которым записаны данные конкретного провайдера в объекте. Прокси реализует доступ как к отдельным провайдерам, так и сразу ко всей информации. Для предметов и сущностей структура прокси одинакова: basic():table - базовая информация об объекте, содержит фиксированные поля. Данные зависят от реализации. all():table - содержит информацию из basic(), а также предоставляемую провайдерами информацию. keys():table - возвращает таблицу {name=true} со всеми провайдерами. single(key):object - возвращает информацию, предоставляемую провайдером. select(keys...):object - возвращает информацию, предоставляемую всеми переданными провайдерами. Примечание: прокси выгруженных объектов, при обращении к функциям, будут возвращать nil. Провайдеры добавляются отдельными модулями OpenPeripheral, а в ядре содержится только базовая информация, возвращаемая функцией base(). Базовая информация предмета: id:string - полный идентификатор предмета mod:name name:string - идентификатор предмета в модификации mod_id:string - идентификатор модификации display_name:string - отображаемое имя, зависит от языка сервера, и назначенного на наковальне имени raw_name:string - имя предмета для локализации, в нижнем регистре qty:number - кол-во предметов в стаке dmg:number - мета, или прочность предмета health_bar:number? - отображаемое в полоске прочности значение, 0.0-1.0 max_dmg:number - максимальная прочность предмета max_size:number - максимальный размер стака Базовая информация сущности: position:table {x,y,z} - относительная или абсолютная позиция сущности name:string - имя сущности id:number - номер сущности (по порядку появления в мире) uuid:string - уникальный идентификатор сущности (идентификатор в базе данных) riddenBy:number? - номер сущности, оседлавшей это существо ridingEntity:number? - номер сущности, которую оседлало это существо Жидкости Информация о жидкости: amount:number - объем жидкости id:number - идентификатор жидкости name:string? - имя жидкости rawName:string? - название жидкости - зависит от языка сервера Информация о хранилище жидкости: capacity:number - общий объем хранилища contents:table - содержащаяся жидкость Игровой профиль Информация о игроке: name:string - имя игрока uuid:string - уникальный идентификатор игрока Если у вас есть мысли, что может дополнить статью - был бы рад услышать.
-
Дополнительные блоки и предметы. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Про очки и терминал было рассказано в другой статье. Блоки: PIM - Personal Inventory Manager, функционал такой-же как у инвентаря. События: player_on(name:string, uuid:string) - игрок наступил на платформу player_off(name:string, uuid:string) - игрок сошёл с платформы Сенсор - сканирует область вокруг на наличие блоков или сущностей. Устаревший функционал описывать не буду. Радиус сканирования - куб с длиной сторон 2*радиус+1. Интересный факт: полученное прокси можно использовать на любом отдалении цели от сенсора, даже если цель в других мирах. Но работает это только до выгрузки чанка с сенсором, или сущности. Идентификатор: openperipheral_sensor getEntityIds(type:string):number[] - возвращает идентификаторы сущностей заданного типа в радиусе сканирования. Типы: mob, item, minecart, item_frame, painting. getEntityData(id:number, type:string):table - возвращает прокси сущности по идентификатору и типу сущности. Позиция сущностей относительно сенсора. getPlayers():table[] - возвращает список профилей игроков в радиусе сканирования. getPlayerByName(name:string):table - возвращает прокси игрока по никнейму, если он в радиусе сканирования. getPlayerByUUID(uuid:string):table - возвращает прокси игрока по уникальному идентификатору, если он в радиусе сканирования. sonicScan():table[] - возвращает список блоков в СФЕРИЧЕСКОЙ области! - x, y, z:number - координаты блока относительно сканера - type:string - тип блока: air, solid, liquid, unknown - color:number - битовая маска цвета блока, один из 16ти цветов. 1 << color sonicScanTarget(x, y, z:number):table - то-же что и прошлая функция, но для конкретного блока Селектор - позволяет выбирать предмет на панели. Идентификатор: openperipheral_selector Событие: slot_click(slot:number, name:string) - адрес компонента не передается, name - похож на адрес, но такого компонента не существует. getSlots():table - возвращает список предметов в слотах setSlots(items:table) - установить предметы в слоты, не работает в OpenComputers из-за неправильного конвертирования getSlot(slot:number):table - получить предмет в слоте setSlot(slot:number, item:table) - установить предмет в слот, предмет вида: {id:string, dmg:number} Билетный автомат - печатает билеты из RailCraft. Идентификатор: openperipheral_ticketmachine createTicket(destination:string, amount:number):bool - печатает билет(ы) в указанное направление getOwner():string - возвращает владельца блока и билетов
- 2 комментария
-
- 1
-
OpenPeripheral предоставляет мощный функционал по созданию собственных интерфейсов в виде очков дополненной реальности "Terminal Glasses". К сожалению, полного списка функционала и всех нюансов по работе с этими очками не найти. Присутствуют некоторые отрывки, небольшие видео с результатами работы и прочие поделки. Но! Спустя пару бессонных ночей, декомпилированного кода и трёх литров чая, удалось описать полный функционал этих очков. Основные возможности очков и периферии: Отображение геометрических объектов различной сложности и цветовой гаммы. Отображение текста. Отображение жидкостей и предметов. Взаимодействие с мышью/клавиатурой. Чтение сообщений чата. Специальные команды чата, не отображающиеся в нем. Возможность индивидуальной работы с каждым пользователем терминала. Установка очков в любой шлем. Возможности данных очков я опишу по разделам, в лучших традициях вики Для начала, определю некоторые понятия. Система терминальных очков состоит из трёх предметов: терминала, очков, беспроводной клавиатуры. Терминал является центром всей системы, через него происходит общение между компьютером и очками. Также он хранит все данные интерфейса и пользователей. На очки выводится вся графическая информация, а сами очки передают сообщения или команды чата на терминал. Беспроводная клавиатура позволяет дополнить всю систему, своей возможностью контроля элементов при помощи клавиатуры и мыши. Как выводить информацию на очки: local com = require("component") local opb = com.openperipheral_bridge -- Построение интерфейса происходит во внутреннем буффере терминала (он же мост). local text = opb.addText(10, 10, "", 0xffef7f) -- Создаем компонент "Текст". -- Его нужно создать только один раз, в остальное время можно обращаться по ссылке и изменять любой параметр. local counter = 0 while true do -- В качестве примера будет выводится счетчик секунд. text.setText(tostring(counter)) -- Обновляем текста компонента. opb.sync() -- Для отображения графики на экране, необходимо отправить буффер на очки. os.sleep(1) -- Ждем секунду и прибавляем счетчик. counter = counter+1 end API Перед тем как перейти к API, нужно знать: Color:number -- Число в формате TrueColor RGB (по умолчанию 0xffffff). Opacity:number -- Прозрачность, число от 0.0 до 1.0 (по умолчанию 1). Знак '?' -- Опциональный параметр/функция. События Строковые константы VerticalAlignment:[TOP, MIDDLE, BOTTOM] HorizontalAlignment:[LEFT, MIDDLE, RIGHT] GuiElement:[OVERLAY, PORTAL, HOTBAR, CROSSHAIRS, BOSS_HEALTH, HEALTH, ARMOR, FOOD, MOUNT_HEALTH, AIR, EXPERIENCE, JUMP_BAR, OBJECTIVES] Структуры данных SimpleBox, ColoredPoint, Coord, User Абстрактные объекты Drawable, BoundedShape, Box Графические объекты Управление графическими объектами DrawableFactory, DrawableContainer Управление терминалом Вот такая шпаргалка по очкам, надеюсь пригодится
-
OpenPeripheral: Integration #2 CoFH Core, Lib (RF, ThermalExpansion)
Xytabich добавил запись в блоге в Путешествия Xytabich'а
CoFH Core, Lib - основы для многих модификаций, использующих Redstone Flux, а так-же для модификаций разработанных самой Team CoFH, например - Thermal Expansion. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Стороны доступны в sides API опенкомпов. Содержание: Адаптеры блоков RF потребители и проводники RF устройство Facing (направление лицевой стороны) Конфигурация сторон Редстоун-контроль Права доступа Контроллер инвентарей Улучшения устройства Эндер-проводник энергии Эндер-проводник жидкостей Эндер-проводник предметов Провайдеры предметов RF устройство Улучшение Усиление Контейнер Адаптеры блоков RF потребители и проводники - информация о буферах энергии в проводниках или потребителях. Идентификатор: rf_provider|rf_receiver getEnergyStored([side:number]) - получить количество хранимой энергии на стороне getMaxEnergyStored([side:number]) - размер хранилища энергии на стороне RF устройство - информация о потреблении устройства, и хранимой энергии. Идентификатор: rf_info getEnergyPerTickInfo():number - потребление энергии в тик getMaxEnergyPerTickInfo():number - максимальне потребление энергии в тик getEnergyInfo():number - количество хранимой энергии getMaxEnergyInfo():number - размер хранилища энергии Facing - можно управлять поворотом блока. Идентификатор: cofh_facing getFacing():number - текущее направление блока setFacing(side:number):bool - установить направление блока allowYAxisFacing():bool - возможно ли установить направление вверх или вниз rotateBlock():bool - циклически поворачивает блок Конфигурация сторон - можно установить конфигурацию сторон блока, но получить текущую нельзя Идентификатор: cofh_sides getNumConfig(side:number):number - количество конфигураций стороны setSide(side:number, config:number):bool - попытка установить конфигурацию стороны, config - индекс конфигурации, счёт с нуля resetSides():bool - сбросить конфигурацию всех сторон incrSide(side:number):bool - циклически увеличивать индекс конфигурации decrSide(side:number):bool - циклически уменьшать индекс конфигурации Редстоун-контроль Идентификатор: cofh_redstone setRedstoneControl(control:string) - установить режим редстоуна, при котором блок будет активен getRedstoneControl():string - получить текущий режим Права доступа - информация о владельце блока, и о текущем режиме доступа Идентификатор: cofh_secure getOwnerName():string - имя владельца getOwner():table - профиль игрока getAccess():string - режим доступа: public, restricted, private Контроллер инвентарей - информация о инвентаре на какой-либо из сторон блока. Идентификатор: cofh_inventory getInventoryContents(side:number):table[] - получить предметы в инвентаре getSizeInventory(side:number):number - получить размер инвентаря isEmpty(side:number):number - пустой ли инвентарь isFull(side:number):number - полный ли инвентарь Улучшения устройства - информация о установленных в устройство улучшениях. Идентификатор: augumentable getAugumentSlots():table[] - возвращает ячейки улучшений getAccess():bool[] - возвращает статус ячеек (открыта/закрыта) Эндер-проводник энергии - например, тессеракт из Thermal Expansion. Идентификатор: cofh_ender_energy getChannelName():string - получить название канала на текущей частоте getFrequency():number - получить частоту setFrequency(frequency:number):bool - установить частоту clearFrequency():bool - стереть частоту canSendEnergy():bool - может ли отправлять энергию canReceiveEnergy():bool - может ли принимать энергию Эндер-проводник жидкостей - например, тессеракт из Thermal Expansion. Идентификатор: cofh_ender_fluid getChannelName():string - получить название канала на текущей частоте getFrequency():number - получить частоту setFrequency(frequency:number):bool - установить частоту clearFrequency():bool - стереть частоту canSendFluid():bool - может ли отправлять жидкости canReceiveFluid():bool - может ли принимать жидкости Эндер-проводник предметов - например, тессеракт из Thermal Expansion. Идентификатор: ender_item getChannelName():string - получить название канала на текущей частоте getFrequency():number - получить частоту setFrequency(frequency:number):bool - установить частоту clearFrequency():bool - стереть частоту canSendItems():bool - может ли отправлять предметы canReceiveItems():bool - может ли принимать предметы Провайдеры предметов RF устройство Ключ: energy_te Значение: table - energyStored - количество хранимой энергии - maxEnergyStored - размер хранилища энергии Улучшение - информация о улучшении для устройств. Ключ: augumented Значение: table {type=level:number} - пары: параметр устройства, и уровень улучшения Усиление - информация о предмете с режимом усиления. Ключ: empowered Значение: bool - true, если включен усиленный режим Контейнер - предмет с инвентарем Ключ: container Значение: table - size - размер инвентаря- 1 комментарий
-
- 4
-
- openperipheral
- cofh
- (и ещё 3 )
-
OpenPeripheral: Integration #1 Ванилла (и Чокола)
Xytabich добавил запись в блоге в Путешествия Xytabich'а
Расширение для работы с minecraft. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Содержание: Адаптеры блоков Инвентарь - предоставляет возможность управлять внутренними ячейками любого инвентаря. Идентификатор: inventory getInventoryName():string - название инвентаря getInventorySize():string - количество ячеек в инвентаре getStackInSlot(slotNumber:number[, proxy:bool]):object - получить предмет в ячейке, если proxy не задан или false - возвращает всю информацию о предмете destroyStack(slotNumber:number) - уничтожить стек в ячейке expandStack(stack:table):object - узнать всю информацию о предмете (о любом предмете, даже если такого нет в инвентаре), необходимо передать id и мету swapStacks(fromSlot:number, intoSlot:number[, fromDirection:string[, toDirection:string]]) - поменять местами предметы в слотах -- fromDirection и toDirection используются для инвентарей, с которыми можно взаимодействовать через стороны, например - печь. -- Если передать в эти параметры сторону, то можно расширить поведение подобных инвентарей. -- Например печь swapStacks(1,2) без использования сторон, можно менять верхний и нижние слоты, если в них находится что-то горючее. -- Если передать вторым параметром "DOWN" swapStacks(1,2,nil,"DOWN") - то вынуть топливо уже не возможно. -- Но если в этом слоте есть пустое ведро (от лавы), то поменять слоты становится возможным. condenseItems() - собрать в кучу разбросанные в инвентаре предметы -- использовать с ОСТОРОЖНОСТЬЮ - если первые ячейки инвентаря не смогут принять предмет - он уничтожится Инвентарь в мире - предоставляет возможность взаимодействовать с соседними блоками-инвентарями. Идентификатор: inventory-world pullItem|pullItemIntoSlot(direction:string, slot:number[, maxAmount[, intoSlot]]):number - забрать предмет из соседнего инвентаря. Возвращает количество перемещенных предметов. pushItem|pushItemIntoSlot(direction:string, slot:number[, maxAmount[, intoSlot]]):number - поместить предмет в соседний инвентарь. Возвращает количество перемещенных предметов. Жидкостный бак - можно получить информацию о жидкости в баке. Идентификатор: fluid_tank getInfo():table - информация о хранилище жидкости Жидкостный контроллер - можно получить информацию о жидкостных хранилищах в блоке. Идентификатор: fluid_handler getTankInfo([direction]):table[] - информация о всех хранилищах жидкостей, можно передать конкретную сторону для получения бака Датчик дневного света - позволяет узнать информацию о небе и солнце. Идентификатор: vanilla_daylight_sensor hasSky():bool - имеется ли небо в этом биоме (его нет в энде, например) getSkyLight():number - освещенность неба, 0-15 (работает только в биомах с небом) getBlockLight():number - получить освещенность датчика, 0-15 getCelestialAngle():number - получить угол солнца, 0 это зенит, 0.0-360.0 Табличка - предоставляет управление табличкой. Идентификатор: vanilla_sign getText():string - получить текст таблички setText(text:string) - установить текст getLines():string[] - получить линии таблички setLines(lines:string[]) - установить линии таблички getLine(line:number):string - получить линию таблички setLine(line:number, text:string) - установить линию таблички Нотный блок - предоставляет управление нотным блоком. Идентификатор: vanilla_note getNote():number - получить текущую ноту setPitch(note):bool - установить ноту, 0-25 triggerNote() - проиграть текущую ноту incrementPitch() - увеличить текущую ноту на единицу playSound(sound:string, pitch:number, volume:number[, x:number, y:number, z:number]) - проигрывает ЛЮБОЙ звук из игры -- pitch и volume 0.0-1.0 -- x,y,z - относительно нотного блока -- список основных звуков можно узнать тут - https://minecraft-ru.gamepedia.com/Sounds.json Маяк - можно получить информацию о маяке и эффектах, но выставить необходимый эффект невозможно. Идентификатор: vanilla_beacon getPrimaryEffect():string - имя основного эффекта getSecondaryEffect():string - имя дополнительного эффекта int getLevels():number - количество уровней маяка Варочная стойка - можно получить информацию о времени варки. Для автоматической варки можно воспользоваться методами инвентаря. Идентификатор: vanilla_brewing getBrewTime():number - оставшееся время варки в тиках Компаратор - можно узнать уровень исходящего сигнала... и всё. Идентификатор: vanilla_comparator getOutputSignal():number - сила сигнала, 0-15 Цветочный горшок - можно узнать что в нём. Идентификатор: flower_pot getContents():table - получить информацию о предмете в горшке Печь - информация о состоянии печи. Идентификатор: vanilla_furnace getBurnTime():number - оставшееся время горения, в тиках getCookTime():number - сколько тиков прошло с момента начала обжарки предмета, в тиках getCurrentItemBurnTime():number - полное время обжарки предмета, в тиках isBurning():bool - активна ли печь Спавнер мобов - информация о мобе. Идентификатор: vanilla_spawner getSpawningMobName():string - имя моба Проигрыватель пластинок - можно узнать текущую пластинку. Идентификатор: vanilla_player getRecord():string - получить текущую пластинку Череп/голова - получить информацию о черепе или голове. Идентификатор: skull getType():string - тип головы/черепа getPlayer():string, string - информация о игроке: уникальный идентификатор и имя Провайдеры предметов Ore Dictionary Ключ: ore_dict Значение: table {имя_ore_dict=true} Хэш-сумма всех nbt-данных предмета Ключ: nbt_hash Значение: string Контейнер жидкости - информация о хранилище жидкости Ключ: fluid_container Значение: table Зачарованная книга - список зачарований на книге Ключ: enchanted_book Значение: table - name:string - имя зачарования - level:number - уровень зачарования - fullName:string - название зачарования, зависит от языка сервера Зачарованный предмет - список зачарований на предмете Ключ: ench Значение: table - name:string - имя зачарования - level:number - уровень зачарования - fullName:string - название зачарования, зависит от языка сервера Класс инструмента Ключ: tool_class Значение: table {тип_инструмента=уровень_добычи:number} Зелье Ключ: potion Значение: table - splash:bool - взрывное ли зелье - effects:table - список эффектов зелья - duration:number - длительность эффекта - amplifier:number - сила эффекта - effect - информация о эффекте, структура: - name:string - имя эффекта - instant:bool - моментальный ли эффект от зелья - color:number - цвет частиц зелья, 0xRRGGBB Броня Ключ: armor Значение: table - material:string - материал брони - type:string - тип части брони - color:number? - цвет окрашенной брони, 0xRRGGBB Меч Ключ: sword Значение: table - material:string - материал меча Инструмент Ключ: tool Значение: table - material:string - материал инструмента Время горения предмета в тиках Ключ: burn_time Значение: number Провайдеры сущностей Список предметов в инвентаре сущности Ключ: inventory|inventory-provider Значение: table[] - список proxy Информация о живом существе - огромное количество данных, может съесть память Ключ: living Значение: table - health:number - текущее здоровье - maxHealth:number - максимальное здоровье - yaw:number - поворот тела, вертикальная ось, -360 - 360 - yawHead:number - поворот головы, вертикальная ось, -360 - 360 - pitch:number - поворот головы, поперечная ось, -360 - 360 - heldItem:table - предмет в руке - armor:table - броня сущности - boots:table - предмет ботинок - leggings:table - предмет поножей - chestplate:table - предмет нагрудника - helmet:table - предмет шлема - potionEffects:string[] - список имён действующих эффектов - potion_effects:table[] - подробный список действующих эффектов - duration:number - длительность эффекта, в секундах - amplifier:number - сила эффекта - is_ambient:bool - эффект области, например в зоне действия маяка - effect:table - информация о эффекте - name:string - имя эффекта - instant:bool - моментальный ли эффект от зелья - color:number - цвет частиц зелья, 0xRRGGBB - lookingAt:table - на что смотрит существо - type:string - block или entity - id:number? - индекс сущности, для типа entity - position:number? - абсолютная или относительная(не относительно существа, а относительно сканера, например) позиция блока, для типа block - isAirborne:bool - существо находится в воздухе, т.е. летает или падает - isBurning:bool - существо горит - isAlive:bool - существо живо - isDead:bool - существо мертво, если было сохранено proxy существа - то при смерти значение выставится в true - isInWater:bool - существо в воде - isOnLadder:bool - существо на лестнице - isSleeping:bool - игрок спит - isRiding:bool - существо оседлало другую сущность - isSneaking:bool - существо приседает - isSprinting:bool - существо бежит - isWet:bool - существо мокрое, например после нахождения в воде - isChild:bool - существо-ребёнок Полоска здоровья босса Ключ: boss Значение: table - name:string - имя босса - health:number - текущее здоровье босса - maxHealth:number - максимальное здоровье босса Рамка для предметов Ключ: item_frame Значение: table - item:table - информация о предмете - rotation:number - поворота предмета, 0-3 Картина Ключ: painting Значение: table - title:string - название картины - width:number - ширина картины в блоках - height:number - высота картины в блоках Предмет на земле Ключ: item Значение: table - stack:table - информация о предмете - age:number - какое время предмет находится на земле, в тиках - lifespan:number - общее время "жизни" предмета, в тиках Приручаемое существо, например оцелот Ключ: tameable Значение: table - isTamed:bool - приручено ли существо - isSitting:bool? - сидит ли существо - ownerUUID:string? - uuid игрока, приручившего существо Индивидуальные провайдеры существ Игрок Ключ: player Значение: table - inventory:table[] - список proxy предметов инвентаре - isAirBorne:bool - находится ли в воздухе - isBlocking:bool - блок мечом - profile:table - профиль игрока - foodLevel:number - уровень сытости - isCreativeMode:bool - находится ли в креативе - experience:table - информация о опыте - level:number - уровень игрока - levelProgress:number - прогресс уровня, 0.0-1.0 - nextLevelXp:number - общее количество опыта до следующего уровня Летучая мышь Ключ: bat Значение: table - isHanging:bool - висит ли мышь Крипер Ключ: creeper Значение: table - isCharged:bool - заряженный ли крипер Лошадь, осёл или мул Ключ: horse Значение: table - eatingHaystack:bool - лошать ест сено - hasReproduced:bool - имеет ли потомство, не используется, всегда false - bred:bool - возможно ли размножение - horseType:number - тип лошади, 0-4 - horseVariant:number - раскраска лошади: текстура - первые 8 бит, пятна - следующие 8 бит - horseTemper:number - характер лошади, 0-100, чем больше значение - тем быстрее приручается - horseTame:bool - приручена ли лошадь - ownerUUID:string - uuid владельца лошади - chestedHorse:bool - если сундук на осле/муле - chest:table[]? - список proxy предметов в сундуке Свинья Ключ: pig Значение: table - isSaddled:bool - есть ли седло на свинье Овца Ключ: sheep Значение: table - sheepColor:number - цвет овцы, индекс 0-15 - isSheared:bool - пострижена ли овца Житель Ключ: villager Значение: table - profession:number - профессия жителя, 0-4 - isMating:bool - житель размножается - isPlaying:bool - ребёнок жителя играет - isTrading:bool - сейчас торгует с игроком - customer:table? - профиль игрока-покупателя Ведьма Ключ: witch Значение: table - isAggressive:bool - агрессивна ли ведьма Волк Ключ: wolf Значение: table - isShaking:bool - волк отряхивается - isAngry:bool - волк злой - collarColor:bool - цвет ошейника, индекс 0-15 Зомби Ключ: zombie Значение: table - isVillagerZombie:bool - является ли зомби-жителем - convertingToVillager:bool - сейчас превращается в жителя На этом функционал ванилы окончен.- 11 комментариев
-
- 5
-
- openperipheral
- api
-
(и ещё 1 )
Теги:
-
OpenPeripheral: Integration #6 Applied Energistics
Xytabich добавил запись в блоге в Путешествия Xytabich'а
Расширение для работы с Applied Energistics. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Структуры "Отпечаток" (Fingerprint) предмета/жидкости, используется для описания объекта в ME сети id:string - идентификатор dmg:number - мета nbt_hash:string? - хэш-сумма nbt Адаптеры блоков Сеть - какая-либо часть ME сети, провод, интерфейс и т.п. Идентификатор: me_network getStoredPower():number - хранимая в сети энергия getMaxStoredPower():number - размер хранилища энергии getIdlePowerUsage():number - потребление сети в простое getAvgPowerUsage():number - среднестатистическое потребление сети getAvailableItems([details:string]):table[] - список предметов/жидкостей в сети. details - в каком виде выдавать информацию о предмете: all, proxy - fingerprint:table - отпечаток предмета/жидкости - size:number - количество предмета/жидкости - is_craftable:bool - есть ли автокрафт - is_fluid:bool - жидкость ли это - is_item:bool - предмет ли это - item:table? - информация о предмете, если указан details. Для all это таблица с данными, для proxy - прокси предмета. getItemDetail(item:table[, proxy:bool]):table - подробная информация о предмете, необходимо передать отпечаток getCraftingCPUs():table - получить список процессоров автокрафта - name:string - имя процессора - storage:number - размер хранилища в байтах - coprocessors:number - количество со-процессоров - busy:bool - занят ли сейчас процессор ME интерфейс Идентификатор: me_interface requestCrafting(fingerprint:table[, qty:number[, cpu:string]]) - запросить крафт предмета, необходимо передать отпечаток, количество, имя процессора canExport(direction:string):bool - может ли интерфейс экспортировать предмет в заданный инвентарь exportItem(fingerprint:table, direction:string[, maxAmount:number[, intoSlot:number]]) - экспортировать предмет в заданный инвентарь и слот (если есть в сети), maxAmount - сколько необходимо предметов - fingerprint:table - отпечаток предмета - size:number - сколько предметов было экспортировано - is_craftable:bool - есть ли автокрафт - is_fluid:bool - жидкость ли это - is_item:bool - предмет ли это - item:table - подробная информация о предмете ME накопитель Идентификатор: me_storage getCellCount():number - количество ячеек getCellStatus(slot:number):number, string - статус ячейки - номер статуса и наименование Провайдеры предметов ME предметная ячейка Ключ: me_cell Значение: table - preformatted:bool - настроенная ячейка - fuzzy:bool - ячейка с картой нечёткости - totalBytes:number - общий объем, в байтах - usedBytes:number - использовано байт - freeBytes:number - свободно байт - totalTypes:number - максимальное количество типов предметов - usedTypes:number - использовано типов - freeTypes:number - доступно типов для использования- 2 комментария
-
- 3
-
- openperipheral
- integration
- (и ещё 3 )
-
Привет всем! Когда я искал библиотеку для создания изображений, отрисовки и т.д. я не нашёл ни одной хорошей библиотеки. Поэтому я написал свою библиотеку, tifAPI! Вам может показаться, что это уже существующее расширение .tif(.tiff), но .tiff расшифровывается как "Tagged Image File Format", а мой - "Text Image Format". А теперь вопросы и ответы (Только на ComputerCraft) Легко, пишем команду pastebin get EnZksdhv installerTIFAPI после скачивания файла пишем следующую команду installerTIFAPI <Папка, в которой будет папка с библиотекой> . Скачивание файлов библиотеки закончиться, когда очиститься экран, и будет надпись "tifAPI has been installed!". Вот Это цвета от 1 до 9 и a, b, c, d, e, f А вот и шпаргалка цветов --[[ a - Номера цветов(colors) b - Сами цвета c - HEX цвет ------------------- a b c 1 0 #F0F0F0 2 1 #F2B233 4 2 #E57FD8 8 3 #99B2F2 16 4 #DEDE6C 32 5 #7FCC19 64 6 #F2B2CC 128 7 #4C4C4C 256 8 #999999 512 9 #4C99B2 1024 a #B266E5 2048 b #3366CC 4096 c #7F664C 8192 d #57A64E 16384 e #CC4C4C 32768 f #191919 ]]-- TifImage - таблица, в которой храниться изображение Да будут.
- 6 ответов
-
- 4
-
- изображение
- image
-
(и ещё 1 )
Теги:
-
OpenPeripheral: Integration #9 Thaumcraft 4
Xytabich добавил запись в блоге в Путешествия Xytabich'а
Расширение для работы с Thaumcraft. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Адаптеры блоков Контейнер аспектов - устройство/хранилище, содержащее аспекты. Идентификатор: thaumcraft_aspect_container getAspects():table - список хранящихся аспектов - name:string - тип аспекта - quantity:number - количество getAspectsSum():table - таблица {name=count} - сумма аспектов по типам (если в блоке больше одной записи одного типа) getAspectCount(aspect:string):number - сколько аспекта этого типа хранится в блоке Банка Идентификатор: thaumcraft_jar getAspectFilter():string - тип аспекта на бирке getAspects():table - список хранящихся аспектов - name:string - тип аспекта - quantity:number - количество Узел ауры Идентификатор: thaumcraft_node getNodeType():string - тип узла: normal, unstable, dark, tainted, hungry, pure getNodeModifier():string - модификатор узла: bright, pale, fading Транспортировщик эссенции - трубы и всё с ними связанное Идентификатор: thaumcraft_essentia_transport getSuctionAmount(direction:string):number - сила всасывания getSuctionType(direction:string):string - тип всасываемой эссенции getEssentiaAmount(direction:string):number - количество хранящейся эссенции getEssentiaType(direction:string):string - тип хранящейся эссенции Мозг в банке Идентификатор: thaumcraft_brain getXP():number - количество хранящегося опыта Мистическое ухо Идентификатор: thaumcraft_ear getNote():number - установленная нота setNote(note:number) - установить ноту getTone():number - установленный тон setTone(note:number) - установить тон Мистический бур Идентификатор: thaumcraf_bore hasPickaxe():bool - имеется ли кирка isPickaxeBroken():bool - сломана ли кирка getPick():table - предмет кирки isWorking():bool - работает ли бур getRadius():number - радиус работы бура getSpeed():number - скорость работы бура getFortune():number - уровень удачи на кирке hasSilkTouch():bool - имеется ли шёлковое касание на кирке hasNativeClusters():bool - копает ли кирка кластеры, вместо руд Стол расщепления Идентификатор: thaumcraft_deconstructor hasItem():bool - имеется ли предмет hasAspect():bool - имеется ли аспект getAspect():string - тип аспекта Провайдеры предметов Контейнер эссенции Ключ: essentia_container Значение: table - список хранящихся аспектов - name:string - тип аспекта - quantity:number - количество Набалдашник Ключ: wand_focus Значение: table - cost:number - цена использования - isPerTick:bool - цена показана за тик использования - color:number - цвет набалдашника 0xRRGGBB-
- 1
-
- openperipheral
- api
- (и ещё 2 )
-
OpenPeripheral: Integration #4 Генетика Forestry
Xytabich добавил запись в блоге в Путешествия Xytabich'а
Расширение для работы с Forestry. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Примечание: OpenComputers может перегружать некоторый функционал, например - getDrone/getQueen в пасеке вернёт другие результаты, но можно использовать информацию предмета. Условия посадки растений: cave - любое место, например - грибы crop - грядки desert - песок nether - песок душ plains - земля или трава water - вода, например - кувшинки Структуры Так как эти структуры часто используются в коде (или они просто слишком огромны), опишу их с самого начала. Вид name:string - название вида пчелы, зависит от языка сервера uid:string - идентификатор пчелы Полная информация о виде authority:string - создатель вида binomialName:string - имя вида name:string - название вида, зависит от языка сервера complexity:number - сложность генома humidity:string - влажность климата: arid, normal, damp temperature:string - температура: none, icy, cold, normal, warm, hot, hellish Мутация allele1:table - вид первой пчелы allele2:table - вид первой пчелы result:table - вид итоговой пчелы chance:number - шанс скрещивания, 0-100 specialConditions:string[] - список условий для скрещивания, текст зависит от языка сервера Гены пчёл species:table - полная информация о виде speed:number - множитель шанса производства lifespan:number - количество циклов, которое живет пчела fertility:number - плодовитость, количество дронов nocturnal:bool - работа ночью tolerantFlyer:bool - работа в дождь caveDwelling:bool - работа в пещерах flowerProvider:string - название используемых цветов, зависит от языка сервера humidityTolerance:string - допустимое отклонение влажности климата, зависит от языка сервера temperatureTolerance:string - допустимое отклонение температуры, зависит от языка сервера flowering:number - скорость опыления - шанс установки цветка или опыления дерева за цикл работы effect:string - название эффекта, зависит от языка сервера territory:table - размер области работы, массив: x, y, z Гены бабочек - возможна ошибка доступа к генам, при анализированной бабочке, но можно использовать методы OpenComputers species:table - полная информация о виде size:number - размер, 0.0-1.0 speed:number - скорость полёта бабочки lifespan:number - время жизни metabolism:number - множитель шанса выпадения лута fertility:number - плодовитость, количество гусениц nocturnal:bool - летает ночью tolerantFlyer:bool - летает в дождь fireResist:bool - имеет сопротивление огню flowerProvider:string - название используемых цветов, зависит от языка сервера humidityTolerance:string - допустимое отклонение влажности климата, зависит от языка сервера temperatureTolerance:string - допустимое отклонение температуры, зависит от языка сервера effect:string - название эффекта, зависит от языка сервера territory:table - размер области работы, массив: x, y, z Гены деревьев species:table - полная информация о виде growth:table - условия роста plant:table - пары {type=true} с возможными условиями посадки дерева girth:number - область посадки саженцев, например у тропического дерева - 2, т.е. необходимо поставить 4 саженца 2х2. height:number - относительная высота, 0.0-2.0 fertility:number - шанс дропа саженца, 0.0-1.0 sappiness:number - множитель шанса дропа саженца 0.0-1.0 fruits:string - тип фруктов yield:number - множитель шанса выпадения фруктов, а также шанса спавна бабочек maturation:number - количество случайных тиков для превращения саженца в дерево effect:string - название эффекта листьев, не используется, зависит от языка сервера territory:table - размер области эффект, массив: x, y, z, не используется Адаптеры блоков Пасека - показывает информацию о пчёлах в пасеке, и предоставляет доступ к базе данных пчёл (за исключением секретных, если не включено в конфиге). Идентификатор: forestry_bees canBreed():bool - возможна ли работа пчелы, зависит от потребностей пчелы. breedingProgress():number - прогресс скрещивания принцессы и дрона, 0-100 getDrone():table - получить гены дрона getQueen():table - получить гены принцессы или королевы(матки) listAllSpecies():table[] - список всех видов пчёл getBeeParents(childType:string):table[] - список всех мутаций, приводящих к данной пчеле, childType - идентификатор пчелы getBeeChildren(parentYpe:string):table[] - список всех мутаций, в которых участвует данная пчелы, parentYpe - идентификатор пчелы getBeeBreedingData():table[] - возвращает список всех возможных скрещиваний (Эксперементальная функция) - allele1:string - название первой пчелы, зависит от языка сервера - allele2:string - название второй пчелы, зависит от языка сервера - result:string - название итоговой пчелы, зависит от языка сервера - chance:number - шанс скрещивания, 0-100 - specialConditions:string[] - список условий для скрещивания, текст зависит от языка сервера Провайдеры предметов Вид - используется для описания пчёл, деревьев и бабочек. Ключ: individual Значение: table - displayName:string - название вида, зависит от языка сервера - ident:string - идентификатор вида - isAnalyzed:bool - были ли предмет анализирован - isSecret:bool - секретный ли это вид - hasEffect:bool - имеется ли эффект - health:number? - здоровье существа - maxHealth:number? - максимальное здоровье существа - isAlive:number? - живо ли существо - type:string - тип вида: bee, butterfly, tree - canSpawn:bool? - может ли пчела давать потомство - generation:number? - поколение пчелы - isNatural:number? - чистая (pristine) или низкая (ignoble) порода пчелы - size:number? - размер бабочки - plantType:string? - список возможных условий посадки дерева - active:table - активные гены - inactive:table - неактивные гены- 10 комментариев
-
- 5
-
- openperipheral
- forestry
-
(и ещё 2 )
Теги:
-
Расширение для работы с RailCraft. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Адаптеры блоков Присутствие вагонетки Идентификатор: railcraft_has_cart hasCart():bool - имеется ли вагонетка рядлм с устройством Выполнение работы Идентификатор: railcraft_has_work hasWork():bool - имеется ли работа у устройства Потребитель топлива Идентификатор: railcraft_needs_fuel needsFuel():bool - необходимо ли добавить топливо Обслуживаемое устройство Идентификатор: railcraft_needs_maintenance needsMaintenance():bool - необходимо ли обслуживание устройству Нагреваемое устройство Идентификатор: railcraft_temperature getTemperature():number - текущая температура Топка Идентификатор: railcraft_firebox isBurning():bool - горит ли огонь в топке Паровая турбина Идентификатор: railcraft_turbine getTurbineRotorStatus():number - статус турбины, 0-100 процентов getTurbineOutput():number - выход турбины в процентах Провайдеры предметов Жидкое топливо - жидкость, подходящая топке в качестве топлива Ключ: boiler_fuel Значение: table - total:number - количество тепла за весь объем контейнера - per_bucket:number - количество тепла за ведро Билет Ключ: rail-ticket Значение: table - golden:bool - золотой ли это билет - owner:string? - создатель билета - dest:string? - цель билета Провайдеры сущностей Вагонетка Ключ: railcraft_cart Значение: table - hasOwner:bool - имеется ли у вагонетки владелец - owner:string? - игровой профиль владельца вагонетки Раскрашенная вагонетка Ключ: painted_cart Значение: table - primaryColor:number - индекс основного цвета - secondaryColor:number - индекс дополнительного цвета Сцепляемая вагонетка Ключ: linkable_cart Значение: table - linkable:bool - сцепляется ли вагонетка - cartsInTrain:bool? - вагонетка в составе поезда Маршрутная вагонетка Ключ: routable_cart Значение: table - destination:string - цель вагонетки Заправляемая вагонетка Ключ: refuelable_cart Значение: table - needsRefuel:bool - необходима ли заправка Жидкостная вагонетка Ключ: liquid_cart Значение: table - isFilling:bool - заполняется ли вагонетка Энергетическая вагонетка - EU Ключ: energy_cart Значение: table - currentPower:number - хранимая энергия - maxPower:number - максимальная хранимая энергия - transferRate:number - максимальная передаваемая энергия в тик - powerTier:number - энергетический уровень Взрывающаяся вагонетка Ключ: liquid_cart Значение: table - primed:bool - активирован ли взрыв - fuse:number - оставшееся время до взрыва, в тиках
-
- 2
-
- railcraft
- integration
- (и ещё 2 )
-
OpenPeripheral: Integration #7 MineFactory Reloaded
Xytabich добавил запись в блоге в Путешествия Xytabich'а
Расширение для работы с MineFactory Reloaded. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Адаптеры блоков Авто-наковальня Идентификатор: mfr_anvil getRepairOnly():bool - получить режим ограничение наковальни "только ремонт" setRepairOnly(repair:bool) - установить ограничение "только ремонт" Авто-дизенчантер Идентификатор: mfr_disenchanter getRepeat():bool - получить режим повтора снятия чаров getRepeat(repeat:bool) - установить режим повтора снятия чаров Авто-зачарователь Идентификатор: mfr_enchanter getTargetLevel():number - текущий уровень зачарования setTargetLevel(level:number) - установить уровень зачарования 1-30 Авто-проигрыватель Идентификатор: mfr_jukebox getCanCopy():bool - можно ли скопировать пластинку getCanPlay():bool - можно ли проиграть пластинку copy() - скопировать пластинку play() - проиграть пластинку play() - остановить пластинку Авто-спавнер Идентификатор: mfr_spawner getSpawnExact():bool - получить режим извлечения setSpawnExact(spawnExact:bool) - установить режим извлечения Сепаратор Идентификатор: mfr_chronotyper getMoveAdults():bool - перемещать ли взрослых setMoveAdults(adults:bool) - установить режим перемещения взрослых Загрузчик чанков Идентификатор: mfr_chunk_loader getRadius():number - текущий радиус загрузки setRadius(radius:number) - установить радиус загрузки Глубокое хранилище Идентификатор: mfr-deep-storage getStoredItems():table - информация о хранящемся стаке getMaxStoredItems():number - максимальное количество предметов Выталкиватель Идентификатор: mfr_ejector getIsWhitelist():bool - получить режим: чёрный/белый список setIsWhitelist(isWhitelist:bool) - установить режим: чёрный (false) или белый(true) список getMatchNBT():bool - есть ли фильтрация по NBT setMatchNBT(matchNBT:bool) - установить фильтрацию по NBT getMatchMeta():bool - есть ли фильтрация по мете setMatchMeta(matchMeta:bool) - установить фильтрацию по мете Комбайн Идентификатор: mfr_harvester getShearLeaves():bool - собираются ли листья setShearLeaves(shearLeaves:bool) - установить режим сбора листьев getHarvestShrooms():bool - собираются ли маленькие грибы setHarvestShrooms(harvestShrooms:bool) - установить режим сбора маленьких грибов getSettings():table - возвращает пары {name=enabled:bool} - список текущих настроек Провайдеры предметов Сафари-сеть Ключ: safari_net Значение: table - type:string - тип сафари-сети: reusable, single_use, jailer, unknown - captured:string - идентификатор моба, или "?" - если случайная сеть-
- 4
-
- openperipheral
- api
- (и ещё 3 )
-
OpenPeripheral: Integration #5 IndustrialCraft 2
Xytabich добавил запись в блоге в Путешествия Xytabich'а
Расширение для работы с IC2, в том числе Experimental. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Адаптеры блоков Жёрдочки - информация о растении на жёрдочках. Можно узнать параметры растения не анализируя его. Идентификатор: ic2_crop getID():string - идентификатор растения на жёрдочках getSize():number - размер растения (на сколько выросло) getGrowth():number - параметр скорости роста getGain():number - параметр урожайности getResistance():number - параметр сопротивления сорнякам getScanLevel():number - количество сканированний мешочка в анализаторе getNutrientStorage():number - сколько хранится удобрений, 0-100 getHydrationStorage():number - сколько хранится жидкости, 0-100, 1-10 - естественное увлажнение, 11-100 - искусственное увлажнение getWeedExStorage():number - сколько хранится средства от сорняков getHumidity():number - уровень влажности, 0-10 (10 - полное увлажнение) getNutrients():number - уровень удобрений, 0-10 getAirQuality():number - качество воздуха, 0-10 (10 - чистый) Реактор Идентификатор: ic2_reactor|ic2_chamber getHeat():number - нагрев реактора getMaxHeat():number - максимальный нагрев реактора getEUOutput():number - количество вырабатываемой энергии, в EU isActive():bool - активен ли реактор isValid():bool - только у ic2_chamber, правильно ли построен реактор Проводник EU Идентификатор: eu_conductor getEUConductionLoss():number - потеря EU за блок getEUConductorBreakdownEnergy():number - напряжение разрушения проводника getEUInsulationBreakdownEnergy():number - напряжение разрушения изоляции getEUInsulationEnergyAbsorption():number - часть энергии, поглощаемая изоляцией. Лишняя энергия - удар током. Потребитель EU Идентификатор: eu_sink getDemandedEnergy():number - максимальное безопасное напряжение getEUSinkTier():number - уровень напряжения потребителя (1 = LV, 2 = MV, 3 = HV, 4 = EV) Источник EU Идентификатор: eu_source getOfferedEnergy():number - выдаваемое напряжение getEUSourceTier():number - уровень напряжения источника (1 = LV, 2 = MV, 3 = HV, 4 = EV) Хранилище EU Идентификатор: eu_storage getEUStored():number - сколько хранится энергии getEUCapacity():number - размер хранилища getEUOutputPerTick():number - выдаваемое напряжение в тик Машина - информация о устройстве Идентификатор: ic2_machine getProgress():number - прогресс работы, 0.0-100.0 Источник тепловой энергии Идентификатор: ic2_heat_source getMaxKineticEnergy(side:string):number - (в названии баг?) максимальное количество выдаваемой энергии на стороне, в тик Источник кинетической энергии Идентификатор: ic2_kinetic_source getMaxKineticEnergy(side:string):number - максимальное количество выдаваемой энергии на стороне, в тик Провайдеры предметов Электрический предмет Ключ: electric Значение: table - tier:number - уровень предмета - charge:number - уровень заряда - maxCharge:number - максимальный уровень заряда - canProvideEnergy:number - можно ли использовать в качестве аккумулятора - transferLimit:number - максимальное отдаваемое напряжение-
- 3
-
- api
- integration
-
(и ещё 3 )
Теги:
-
Где можно найти сайт который при отправке запроса вернёт реальное московское время? В формате: часы:минуты
-
Перенос статьи Эта тема была перенесена из блока "Статьи". Автор оригинала: fenixrus. Здравствуйте с вами Fenixrus и я начинаю серию гайдов по API мода OpenComputers. Начнем мы с Component API. Вообщем смотрим, изучаем, пробуем, комментируем! https://www.youtube.com/watch?v=hStnB3hCpFs
-
Ребята, нужна помощь с заливкой логов на pastebin. можно просто отрывок кода-примера заливки файла (лог-файл) на определенный ID. Возился с internet API, но ничего не получилось, т.к. с всякими HTTP протоколами и прочим никогда не возился. А вообще можно реализовать вышеописанное?
-
Библиотека создавалась для облегчения передвижения, навигации и работы с инвентарем. Робот отслеживает позицию и вращение относительно стартовой точки. Добавлена возможность движения по линии, просто говоришь в какую сторону идти или копать и сколько блоков. Может осматриваться вокруг себя в поиске сундука или блока по имени. Сделал отображение помощи по использованию функций робота в интерпретаторе lua, или с помощью tostring(robot.functionName). Весь стандартный функционал робота работает как описано в robot API, я переопределил то, что связанно с движением, чтобы не нарушалось отслеживание позиции, но сохранил выход, так что robotExt можно использовать вместо robot в ваших программах без каких либо изменений кода. Список функций: Исходный код http://pastebin.com/nTVxAQWA В будущем, возможно, добавлю еще дополнительные возможности, пока выкладываю то что есть. В проекте вывод статистики и предположительный запас заряда/прочности инструмента в режиме передвижения/копки. Пожелания, предложения и критика приветствуются.
-
Стоимость программы: [...............] 0 алмазов Сложность программы: [|||||||........] средне Размер программы: [|||||||........] 5 KiB Глючность программы: [||.............] минимум ---------------------------------------------------------------------- 1. Информация Приходится же мне очень часто использовать одну и ту же функцию. Но думаю: зачем же так извращаться? Решил сделать библиотеку. Зачем я её сюда выложил? Может и вам пригодиться. Приступим к обзору! Чтобы установить библиотеку, введите: wget https://preview.c9users.io/programist135/programfiles/Programist135/P135API.lua /lib/P135API.lua 2. Обзор И так, функции: addWindow(x, y, width, height, windowColor, topBarColor, topBarlabel) Данная функция создаёт окно. Но! Всё остальное в нём нужно делать вручную. Аргументы: x: стартовая координата по оси X. Можно написать "auto" и она будет выровнена посередине экрана. [!] Такая опция (auto) была взята из библиотеки пользователя ECS. Я её не стал записывать в таблицу, поэтому она НЕ будет доступна. y: стартовая координата по оси Y. Можно написать "auto" и она будет выровнена посередине экрана. width: ширина окна. height: высота окна. windowColor: цвет всего окна, кроме топбара. topBarColor: цвет топбара. topBarLabel: надпись на топбаре. Следующая функция создаёт/редактирует шкалу прогресса (то, чего мне так не хватает! ) setProgressBar(x, y, width, currentProgress, backColor, lineColor) [!] Чтобы изменить состояние, к сожалению приходится постоянно вызывать эту функцию. x: стартовая координата по оси X. y: стартовая координата по оси Y. width: ширина шкалы. currentProgress: текущий прогресс. [!] Если вы попытаетесь указать текущий прогресс больше, чем ширина шкалы, то библиотека завершится с ошибкой index out of bounds backColor: цвет незаполненного куска шкалы. lineColor: цвет заполненного куска шкалы. Дальше. Функция добавления текста. Вы скажете: ФУУУ, а gpu.set для слабаков? А тут есть выбор цвета, причём как цвет ЗА текстом, так и цвет самого текста. addText(x, y, backColor, txtColor, text) Аргументы: x: стартовая координата по оси X. y: стартовая координата по оси Y. backColor: цвет фона ЗА текстом. txtColor: цвет самого текста. text: ну, понятно А эта функция самая простая. Она сбрасывает всю систему к стандартным параметрам. reset() И так. Кому нибудь пригодятся рандомные цифры, но а как же без рандомных символов? generate(length) length - это длина строки. А теперь самое интересное. 3. Особые функции. А для работы следующих функций нам потребуется уже два (!!!) компонента -> Дата-карта и Модем (не важно, проводной или беспроводной ) Эта функция отправляет (бродкастит ) защищённое сообщение. Да, это уже не как либа криптования Asummonster'a sendSecuredMessage(...) Там, где "...", туда можно написать любое сообщение. Но! Внимание!! Туда можно запихать даже НЕСКОЛЬКО значений ! Ну а дальше: getSecuredMessage() Эта функция ждёт защищённого сообщения. Но она его (их) не принтит, а возвращает! Поэтому пишите так: data1, data2, data3 = P135API.getSecuredMessage() Вот и всё. 4. Итоги Да, писал статью я ОЧЕНЬ долго (ну где-то 40 минут ). И о чём я вас хотел предупредить: Если один из компонентов для выполнения особых функций не подключен (или оба), то эти функции вы не увидите. И не сможете их использовать. Если обнаружите глюк, немедленно сообщите сюда в комментарии. Если имеются идеи по пополнению библиотеки, напишите так же сюда в комментарии. Так вы сделаете пользу и мне, и себе, и остальным. Ну а на этом я с вами прощаюсь. Всем спасибо за прочтение, надеюсь библиотечка вам пригодится, а с вами был (нет, пора на что нибудь другое перейти!) всем до скорой встречи, всем пока!
-
GUIAPI v0.3 Мало кто помнит, но очень давно, во времена Тоторо-не-девелопера, мы с Тоторо и НЕО писали GUIAPI, и даже тему подняли, но потом забросили и даже не довели до ума. Уже совсем недавно, я начал писать банк для Файна, и однажды он мне написал: "Сделай крутое гуи как в базаре (новом) у Крутого". И начал грустить тогда я, ведь не было у меня удобного и красивого инструмента для создания гуи. И вспомнил я про формочки Зеро, и вспомнил я слова НЕО "Не пиши велосипеды!", но я не послушал его. Поэтому, хочу представить вам библиотеку гуи, настоящий велосипед, но красивее чем у Зеро. Модулей пока очень мало, а именно кнопка, текст-ввод, коробка и лэйбл. Но если вы захотите - вы можете написать свой модуль. Работа с API: Создание своего модуля: Скачать: Скоро PS: Кто напишет нормальную прокрутку в текстовом поле - тому подарок на IT-Lite лично от меня, у самого времени нет.
-
Образовалась у меня маленькая библиотека из всякого разного. Решил выложить. У этой библиотеки нет какой либо направленности. Просто засунул всё что мне обычно нужно. Основные функции: Функции для работы с pastebin'ом: http://pastebin.com/25shjwJZ
-
Вот ошибка: window:234: bad argument: double expected, got table P.S. Window API нигде не использовал
- 6 ответов
-
- Window API
- Window
-
(и ещё 2 )
Теги:
-
Object API (Работаю над названием) Представляю вам третью версию Object API, которое я начал писать ещё давно, первых двух версий вы здесь не найдёте. Это библиотека работает только на Computer Craft, так что возможно зря я её писал... В любом случае, я надеюсь, что вы оцените. Сейчас в этой библиотеке есть следующие элементы: Button, CheckBox, Graph, Image, Label, Process, Registry, TextBox (не доделано). Планирую написать ещё очень много. Скачать можно с pastebin: pastebin get 3Bq2Sgvi object Устанавливается стандартной функцией os.loadAPI("object") или с помощью require. Под мою функцию она изначально была лучше адаптированна. Но не подумайте, со стандартной функцией работает. Изображение Потом напишу про остальные объекты.
-
Данное API будет добавлять в вашу систему более удобные средства программирования разных элементов типа кнопки, картинки, процесса в виде разных объектов. Это API ещё находится в разработке, пока я добавил один элемент, кнопку. Я постарался сделать это API максимально гибким, и пока я не начал делать следующий элемент, хотелось бы услышать ваше мнение. Устанавливается всё очень просто, как любая другая библиотека. Скачать можно с pastebin. Кнопка Если есть какие-то предложения по улучшению, пишите.
-
Пока я писал свою систему для ComputerCraft, мне пришла мысль изобрести велосипед в виде функции require(), которая была удалена из мода по неизвестным мне причинам. Собственно вот код: function require(...) local i local libs = { } for i=1, #arg do arg[i] = fs.combine("", arg[i]) --В кавычки можно написать путь к директории с вашими библиотеками. if not fs.exists(arg[i]) or fs.isDir(arg[i]) then error("Couldn't find a file by the path #"..i, 2) end local g = getfenv() local t = { } setmetatable(t, {__index = _G}) t.shell = shell t.multishell = multishell setfenv(1, t) local f=function() dofile(arg[i]) end local ok, err = pcall(f) setfenv(1, g) if not ok then error(err..", in #"..i, 2) end libs[i] = t end return unpack(libs) end ,,Что-же эта функция делает?"- может кто-то спросить, а тоже что и раньше. Она загружает библиотеку по выбранному вами пути в таблицу (или правильнее будет сказать, в окружение). Самое главное - это то, что вы сможете загружать любое API в любую переменную, в том числе и локальную. Выглядит это примерно так: local firstVariable, secondVariable = require("APIs/HelloWorld.api", "APIs/Object.lua") Как вы наверное уже поняли, можно загружать не ограниченное количество библиотек за раз. Особенности: загрузка нескольких переменных одновременно; возможность не захламлять глобальное окружение; использование библиотек в любой другой таблице; пропуск shell API и multishell API в окружение вашего API*; запуск вашего файла с библиотекой во время загрузки (ну это я из пальца выжимаю); в отличии от стандартной функции, вы не можете использовать require()для поиска библиотеки среди файлов, но по-моему это лишнее в CC, но вы можете указать одну папку (заметка на счёт этого в коде); вы можете убедится в том, что окружение, куда вы запихнули свою библиотеку, не содержит копию всех функций и переменных из глобального окружения (что хорошо сказывается на производительности). Для того, чтобы использовать эту функцию, просто вставьте её код в вашу программу. Надеюсь, что это кому-нибудь пригодится. Дополнение. Я переделал функцию и добавил взаимодействие с глобальной таблицей package, этот вариант намного лучше предыдущего. Чтобы использовать его скачайте файл с помощью команды: pastebin get naxXwUey package Далее загрузите в глобальное окружение с помощью функции dofile("package"). Теперь рассмотрим, что же я изменил. Во-первых, при повторном вызове функции с одним и тем же API, вы получаете ту же самую таблицу, то-есть: local var1 = require("lib1") local var2 = require("lib1") print(var1 == var2) -->Вывод: true Так получается, потому что каждая новая загруженная библиотека сохраняется в таблице package.loaded, а при повторном вызове, вам выдаётся значение из этой таблицы. Я также внес все стандартные API ComputerCraft'а в эту таблицу. Во-вторых, я добавил значение package.path, оно работает точно также, как и в оригинале. Просто перечисляете директории с библиотеками в током виде: package.path = "/APIs/?.lua;/Lib/?;/?" Вы можете изменить это значение в самом файле, я там оставил комментарий. Также я добавил таблицу package.preload, которая содержит специальные пользовательские функции для загрузки конкретного API, по стандарту я её оставил пустой (что логично). Ключи таких функций являются названиями API, а возвращать они должны функции, которые возвращают само API (правда не знаю, кому это может понадобиться). И наконец, package.loaders, в этом массиве, расположены функции для загрузки всех API. Их пока две. Аргументом этой функции должно быть имя модуля, а возвращать она должна функцию, загружающую API. Для тех, кто ничего не понял, просто знайте второй вариант этой функции с дополнением лучше.))) *Да-да, теперь вам не придётся мучиться и придумывать изощрённые способы получения допуска к функциям этого API в вашей библиотеке!
-
Так уж вышло, что Сябро первый выложил на форум библиотеку для робота, а я свою написал ещё неделю назад (скрипач Морф - свидетель) Так вот, данное поделие служит для управления роботом и получением его координат. Сам код на pastebin кидать не буду, ибо он слишком прост. Для тех, кто ничего не понял, вот список функций (вместо {side} подставить North, South, West или East соответсвенно): getCoordinates():x,y,z,d Возвращает текущее положение робота и его направление (x,y,z - числа, d='N','S','W','E') go{side}():boolean Перемещает подопытного. Возвращает true в случае успеха. goUp() и goDown() делают то же самое, только... угадайте куда . smartTurnRight(), smartTurnLeft() и smartTurnAround() - ну тут всё понятно. turn{Side}() - поворачивают на север, юг... в общем, куда надо. getX(), getY(), getZ(), getDirection() - интересно, что же они возвращают... (подсказка - первые три - числа, четвёртая - строку) --------------- Новая версия! Изменения: Почти ничего, а именно: добавлены функции goX(), goY(), goZ(). Cкачать можно на Яндекс.Диске.
-
Привет! Мы делаем с Totoro и Xom проект под названием GUI API. Этот API упрощает процесс рисования интерфейсов для своих программ в ОС. Больше никаких огромных функций в программе.Данный проект в разработке и практическое его использование в данное время не рекомендуется. Это что-то вроде paintutils для ОС. Писали в kobra.io. Посмотреть на это безобразие! http://pastebin.com/istmR52z Сайт там где пишем. Не спамить! https://ide.c9.io/moonlightowl/guiapi Честно скажем что Нео нам очень мешал. Он спамил в нашей комнате для программирования. Также Фингер подбадривал нас своим бредом в чате и, еще делал комментарии красивыми. Повторяюсь проект в разработке и пользоваться им сейчас настоятельно не рекомендуем. Но посмотреть на код можно. Критикуйте наш код ,особенно момент с рисованием линии от точки А до точки Б. А также радуйтесь нашим позитивным комментариями. Ну, вроде все! Отвечайте!
- 10 ответов
-
- Библиотека
- GUI
-
(и ещё 3 )
Теги: