Netins 520 Опубликовано: 5 апреля, 2015 Что здесь такого? Это ведь обычная лампа?А выключатель из Switches mod, которого нет на сервере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 562 Опубликовано: 5 апреля, 2015 (изменено) Как при помощи шин расширять количество слотов сервера? Сможет ли один сервер работать с несколькими связанными платами? Какое максимальное количество связанных плат может обрабатывать один сервер? Шины расширяот количество компонентов, подерживаемое сервером. К сожалению, количество слотов в интерфейсе при этом не растет =) Сервер может сколько угодно (в рамках лимита на компоненты) связных плат поддерживать. Но физически их поместится не очень много. Придется поставить еще один сервер/компьютер. Изменено 5 апреля, 2015 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 5 апреля, 2015 Шины расширяот количество компонентов, подерживаемое сервером. К сожалению, количество слотов в интерфейсе при этом не растет =)Сервер может сколько угодно (в рамках лимита на компоненты) связных плат поддерживать. Так. Что мы называем компонентами? Внешние устройства, как принтер, дисковод и т.д? А куда тогда платы засовывать? Если в сервере стоит несколько связанных плат, как программно указать, что передача будет осуществляться через конкретную плату? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 562 Опубликовано: 5 апреля, 2015 Собственно компонент - это некое устройство, подключаемое через Component API. =) Вот списочек: http://ocdoc.cil.li/component Это и внешние девайсы, и платы, и апгрейды и прочее. Любой девайс, обладающий набором своих функций - это компонент (даже файловые системы). Мы подключаем компонент: local com = require('component') local device = com.device И в переменной device у нас оказывается так называемый "прокси" объекта. Это табличка с переменными и методами девайса. Как библиотека, по сути. Команда com.device возвращает ГЛАВНЫЙ компонент. Обычно - это первый в списке одинаковых. Если же у нас их много, одинаковых, (пять связных плат, например), то мы можем получить их все используя метод com.list('type'): (Подробнее о методах Component API: http://ocdoc.cil.li/api:component) for address, componentType in component.list('device') do ... end А в случае например получения сообщения от связной платы, и необходимости отпределить от какой именно, можно использовать адрес отправителя, который обязательно присутствует в пойманном эвенте: modem_message (receiverAddress: string, senderAddress: string, port: number, distance: number, ...) (Подробнее об эвентах компонентов: http://ocdoc.cil.li/component:signals) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 5 апреля, 2015 Спасибо. Вот теперь что то проясняется. Еще вопрос. Могут ли сервера, которые стоят в одной серверной стойке обмениваться информацией при помощи обычных проводных сетевых плат? Достаточно ли того, что они стоят в одной стойке или надо какую то внешнюю сеть городить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 562 Опубликовано: 5 апреля, 2015 Спасибо. Вот теперь что то проясняется. Еще вопрос. Могут ли сервера, которые стоят в одной серверной стойке обмениваться информацией при помощи обычных проводных сетевых плат? Достаточно ли того, что они стоят в одной стойке или надо какую то внешнюю сеть городить? Нет, сеть городить не надо. Сервера в одной стойке умеют общаться друг с другом. Для этого достаточно проводной сетевой карты. В интерфейсе серверной стойки есть переключатель External/Internal который определяет поведение серверов при получении и передаче сетевых пакетов. Для примера, пусть у нас есть четыре сервера в стойке - A, B, C и D. Сервера A, B и C привязаны к левой, правой и нижней сторонам. Сервер D не привязан к стороне стойки. В режиме External, сообщение пришедшее извне на левую сторону стойки получит сервер A. Сообщение будет передано им на другие стороны стойки. И уйдет по проводам, подключенным к этим сторонам. Таким образом сервера B и C тоже получат его. Сервер D не получит сообщения. Если сервер А пошлет сообщение от себя, все будет работать по той же логике. Если сообщение пошлет сервер D - его не получит никто (потому что он не связан с конкретной стороной стойки). В режиме Internal, сообщение пришедшее на левую сторону стойки также получит сервер А. Сообщение будет передано всем серверам в стойке, т.е. B, C и D, но не будет передано на стороны стойки и провода, подключенные к этим сторонам. Если сервер А отправит сообщение, оно будет передано на все другие сервера в стойке а также на левую сторону (и подключенный к ней провод). Но не будет передано другим сторонам блока. Если сервер D отправит сообщение - оно будет передано только другим серверам в стойке (A, B и C). Таким образом при помощи серверной стойки и нескольких серверов в ней, можно фильтровать сетевые сообщения как угодно. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 6 апреля, 2015 В режиме Internal, сообщение пришедшее на левую сторону стойки также получит сервер А. Сообщение будет передано всем серверам в стойке, т.е. B, C и D, но не будет передано на стороны стойки и провода, подключенные к этим сторонам. Если сервер А отправит сообщение, оно будет передано на все другие сервера в стойке а также на левую сторону (и подключенный к ней провод). Но не будет передано другим сторонам блока. Если сервер D отправит сообщение - оно будет передано только другим серверам в стойке (A, B и C). Предположим, мы имеем сеть, состоящую из серверной стойки и компьютера. Сеть подключена к серверной стойке с левой стороны. В стойке находятся сервер А, связанный с левой стороной, и не привязанный сервер D. Стойка находится в режиме Internal. В каждом сервере и компьютере установлена сетевая плата. Исходя из вышесказанного, получается, что пакет, отправленный компьютером, может быть принят сервером D, но пакет, отправленный сервером D не может быть принят компьютером. Односторонняя связь получается или я что то не так понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 562 Опубликовано: 6 апреля, 2015 Исходя из вышесказанного, получается, что пакет, отправленный компьютером, может быть принят сервером D, но пакет, отправленный сервером D не может быть принят компьютером. Односторонняя связь получается или я что то не так понял? Именно так. Сервер D может получить мессагу от компа, потому что ее редиректит внутри стойки сервер А. А мессага от сервера D не попадет к компьютеру, потому что стоит режим Internal который отключает передачу мессаг на внешние стороны стойки. Однако, эту мессагу получит сервер А. С него можно будет программно переслать ее наружу (на левую сторону, к которой он привязан), в случае надобности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 7 апреля, 2015 Постоянно наблюдаются проблемы с мониторами если компьютеры объединены в локальную сеть. Так и норовят написать что то на чужой монитор. Что то можно сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 562 Опубликовано: 7 апреля, 2015 (изменено) Постоянно наблюдаются проблемы с мониторами если компьютеры объединены в локальную сеть. Так и норовят написать что то на чужой монитор. Что то можно сделать? Поставить между компьютерами свитч (если нужно сохранить сетевые пакеты). Или дистрибутор (если нужно распределить только энергию, а сетевые пакеты не нужны) Возможно адрес отправителя в эвенте сменится на адрес свитча, при прохождении через него. Если этого не нужно, можно поробовать либо отправлять настоящий адрес в теле пакета, либо обойтись без свитча, и биндить нужный монитор программно. Для этого используется функция gpu.bind(address): local com = require('component') local gpu = com.gpu -- связываем с видеокартой компьютера нужный монитор gpu.bind('xxx-xxx-....-xxxx') Изменено 7 апреля, 2015 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 9 апреля, 2015 -- связываем с видеокартой компьютера нужный монитор gpu.bind('xxx-xxx-....-xxxx') Можно ли одним нажатием получить в буфер обмена адрес карты или вбивать посимвольно нужно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 9 апреля, 2015 врядле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 397 Опубликовано: 9 апреля, 2015 Можно ли одним нажатием получить в буфер обмена адрес карты или вбивать посимвольно нужно? component.get(partOfAddress) -- Часть адреса компонента. Возвращает полный адрес. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 9 апреля, 2015 Да, get возвращает адрес своей платы. А если мне нужен адрес сетевухи другого компьютера? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 9 апреля, 2015 Да, get возвращает адрес своей платы. А если мне нужен адрес сетевухи другого компьютера? я же говорю врядле,я когда сеть разрабатывал на листик записывал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 562 Опубликовано: 9 апреля, 2015 (изменено) Можно ли одним нажатием получить в буфер обмена адрес карты или вбивать посимвольно нужно? Адрес карты? Получаешь его на экран сначала. Например через интерпретатор lua в консоли: =component.gpu.address или =component.modem.address Затем берешь анализатор и Shift+ПКМ по нужной строчке. Вставить в текст потом - просто ПКМ анализатором. Изменено 9 апреля, 2015 пользователем Totoro 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 17 апреля, 2015 Начал перевод мануала (книжечки из новых версий OpenComputers).В данный момент переведено около 100% 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 17 апреля, 2015 Готово Перевод внедрен в мод Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 22 мая, 2015 Не уверен, что я открыл Нептун, но наверняка многие не в курсе что навигатор в ОС не ограничивается размером скрафченной карты 128 на 128 блоков относительно ее сеточной привязки и рендера. Этот вопрос только недавно вроде муссировался на форуме, что мол гемОрно перекрафчивать навигатор, если робот выходит в другую зону и прочее, нельзя ли сделать как-то побольше out of range и т.п. Я, если честно, сам не знал, хотя думал, что ваниль всю знаю. Крафтите и рендерите карту, потом кладете ее в крафтерный столик по центру и обкладываете ее 8-ю кусочками бумаги. Вуаля. Карта стала меньшего масштаба и уже имеет размер 256 на 256 Вот вырезка из Советской энциклопедии: Максимальный размер карты - 2048 на 2048. Роботу такой территории хватит на всю жизнь, там работать кататься и прочее. Не нужно теперь пересчитывать коры свои без конца типа robot.forward() x_current=x_current + 1 и прочая лабудень. Координаты относительные (центр скрафченой карты), но можете их перепривязать поправочкой стандартной один раз на реальные (высота реальная в навигаторе выдается). Так же робот гетит свое направление мордофейса. Но тоже в своих координатах API sides: Север: north - 2 Восток: east - 5 Юг: south - 3 Запад: west - 4 Вот набросал пример использования: -- ============= Получение реальных кор роботом в майне ================= local com = require('component') local nav = com.navigation -- преобразование направления в ванила-директы 1-запад, 2-север, 3-восток, 0-юг face_normalize = {0,2,0,1,3,0} --поправка на реальные координаты майна, для каждой карты (навигатора) они свои!!! --чтобы их узнать, установите их сначала в 0 и сравните реальные координаты робота, как блока по F3 с относительными. local x_shift = 1536 local z_shift = 1920 -- пример получения роботом своих реальных координат в мире!!!!! (в пределах навигатора и масштаба карты) getPos = { x = function() x,_,_,_ = nav.getPosition() if x then return math.floor(x) + x_shift else return nil end end, y = function() _,y,_,_ = nav.getPosition() if y then return math.floor(y) else return nil end end, z = function() _,_,z,_ = nav.getPosition() if z then return math.floor(z) + z_shift else return nil end end, f = function() f = face_normalize[nav.getFacing()] return f end } x_real = getPos.x() y_real = getPos.y() z_real = getPos.z() f_real = getPos.f() Выход: 1234 56 1236 0 Теперь с картой 2048 на 2048 ваш робот, по идее, может получить всегда свои реальные координаты, где бы он там не летал. Не нужно, как в древних черепашках, там считать свои коры, плюсовать что-то и писать в файл. Получил реальные, получил таргет-коры, разницу выполнил бросок, и все, вперед, поехал на них по вашей функции, например: setPos(x_target,y_target,z_target,f_target) 3 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 562 Опубликовано: 22 мая, 2015 На сервере - война с применением роботов... МТ заброшен, Фингер пропал... OpenComputers выпустил большой патч, но всем не до этого... OpenComputers 1.5.10 Добавлено: APU - гибридный процессор с интегрированной видеокартой. Ограничен по стоимости, но зато освобождает слот видеокарты. Метод в отладочную карту, который позволяет получить список игроков онлайн, и список существующих измерений. Блоки теперь совместимы с AE2 пространственной системой (spatial system). Медленное ломание блока для роботов и дронов. Изменено: Функциональность драйвера для контроллера AE2, теперь всегда доступна в интерфейсах. Даже если включены каналы (channels). Понятия не имею, что за каналы - это надо у AE2филов спросить. =) Порт при полученни сообщения от ComputerCraft теперь будет передаваться в конце, а не в начале. (Это позволит обрабатывать сообщения от CC так же как и от OC. Унификация.) Удален рецепт камня края и добавлен фейковый камень края вместо него, а также рецепты дронов согласованы с OreDictionary. Возможно фикс какого-то дюпа, связанного с камнем края, или что-то вроде того. Планшеты отстаются включенными при переходе в другое измерение (например если отправиться в Ад с планшетом). Нативные библиотеки обновлены до Lua 5.2.4. Сангар тестировал их как только мог, но если вы все таки найдете глюк, связанный с выполнением программ, или возобновлением работы компьютеров в загруженном чанке - чайте ему знать. Пофикшено: Отключение проверки на максимальное количество фигур в 3d-принтах, после изготовления одного. Алексу на заметку. =) Двойной рендер предмета в руке у робота. GUI у сломанного монитора не закрывался. Потенциальный лаг, при включении компьютера первый раз после загрузки игры. Апгрейды на высоту полета не работали, если вмонтировать внутрь робота. (Работали только в контейнере для апгрейда). Проблемы интеграции с ComputerCraft. Проблемы с шиной экспорта AE2. MFR Safari Net конвертер (то есть добавлена информация в дескриптор стека предметов). Shift+Клик чем-нибудь по базе данных (видимо имеется ввиду апгрейд) заполнял все пустые ячейки этим предметом. 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах