Перейти к содержимому

Поиск по сайту

Результаты поиска по тегам 'Гайд'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Блоги

  • Робот Байт
  • Fingercomp's Playground
  • 1Ridav' - блог
  • Totoro Cookies
  • Блог cyber01
  • IncluderWorld
  • KelLiN' - блог
  • Крутой блог
  • eutomatic blog
  • Programist135 Soft
  • Сайт в сети OpenNet
  • PieLand
  • Очумелые ручки
  • Блог недоблоггера
  • В мире Майнкрафт
  • LaineBlog
  • Квантовый блог
  • Блог qwertyMAN'а
  • some blog name
  • Дача Игоря
  • Путешествия Xytabich'а
  • Рецепты программирования
  • Шкодим по крупному
  • 123
  • mineOS и её удивительный мир
  • Поляна говнокода Bumer 32

Форумы

  • Программирование
    • Программы
    • База знаний
    • Разработчикам
    • Вопросы
  • Игровой раздел
    • Игровые серверы
    • Моды и плагины
    • Жалобы
    • Ивенты и конкурсы
    • Файлы
  • Общение
    • Задать вопрос
    • Обратная связь
    • Беседка
    • Шкатулка
  • Технический раздел
    • Корзина

Категории

  • Форум
  • Лаунчер
  • Игровой сервер

Группы продуктов

Нет результатов для отображения.


Искать результаты в...

Искать результаты, которые...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


ВКонтакте


Gtalk


Facebook


Twitter


Город


Интересы

Найдено 6 результатов

  1. Команды CoreProtect Команду "/coreprotect" можно также заменить на "/core" или "/co". Обзор быстрых команд: Подробная информация о командах: /co help Показывает список всех команд плагина. /co inspect Включает режим инспектирования. Введите команду еще раз, для выключения. Вы также можете использовать "/co i". /co rollback u: t: r: a: b: e: Откат данных, в зависимости от параметров Все параметры опциональны. Вы также можете использовать: "/co rb". Примеры использования команды представлены ниже. u:<user> - указывает пользователя, для отката. Например: u:Notch t:<time> - указывает, на какое время (назад) откатить данные Также можно использовать weeks,days,hours,minutes, и seconds. (недели,дни,часы,минуты и секунды соответственно. Использовать только английское написание) Например: t:2w,5d,7h,2m,10s Вы можете также указать 2 параметра времени. Например: t:5d2h (5 дней и 2 часа) Вы также можете использовать точки, для указания точного времени Например: t:2.50h (2 с половиной часа) r:<radius> - указывает радиус. Используйте данный параметр, только если хотите откатить информацию о блоках вокруг вас. Вы можете использовать число (напри. r:5), название мира (напр. r:#world_the_end), глобальный откат (r:#global), или выделенную область WorldEdit (r:#worldedit или r:#we) Например, если вы хотите откатить данные в радиусе 10 блоков от места, где вы стоите, введите: r:10 a:<action> - указывает, что именно вы хотите откатить Например, если вы хотите откатить только поставленные блоки, используйте a:+block Список всех действий: a:block (поставленные/сломанные блоки) a:+block (поставленные блоки) a:-block (сломанные блоки) a:click (действия игроков) a:container (предметы помещенные или вытащенные из сундуков) a:+container (предметы помещенные в сундуки) a:-container (предметы вытащенные из сундуков) a:kill (убийство мобов) a:chat (сообщения чата) a:command (использованные команды) a:session (заходы/выходы игрока на сервер) a:+session (заходы на сервер) a:-session (выходы с сервера) a:username (история смены ников) b:<blocks> - позволяет указать конкретный тип блока, который нужно откатить. Например, если вы хотите откатить только каменть, укажите b:1 Также можно использовать несколько блоков, например b:1,5,7 Полный список ванильных блоков можно найти здесь: http://minecraft-ru.gamepedia.com/Нумерация_данных или в NEI e:<exclude> - позволяет исключить конкретный тип блока из отката. Например, если вы не хотите откатывать установленный динамит, используйте e:46 #<hashtag> - добавьте хештег к команде, для выполнения дополнительных действий. Например, для просмотра, что будем откатывать, используйте #preview Список всех доступных хештегов: #preview (Предпросмотр для команд отката/восстановления) #count (Показывает количество строк, найденных в результате запроса истории) #verbose (Показывает дополнительную информацию во время отката/восстановления) #silent (Показывает минимум информации во время отката/восстановления) /co restore u: t: r: a: b: e: Параметры такие же как у /co rollback. Также можно использовать: "/co rs". Данная команда позволяет отменить результаты отката. Эдакий Ctrl+Z для rollback /co lookup u: t: r: a: b: e: Параметры такие же как у /co rollback. Также можно использовать: "/co l". Позволяет просматривать информацию о блоках и игроках. Примеры использования команды представлены ниже. /co purge t: Удаляет старые данные. Позволяет освободить место на HDD, если вам больше не требуются старые данные. Например, при использовании "/co purge t:30d" будут удалены все данные старше месяца. Если использовать данную команду в игре, могут быть удалены данные только старше месяца. При использовании команды из консоли, могут быть удалены данные старше 24 часов. Примеры использования команды /co rollback: Если параметр радиус не указан, значение радиуса будет установлено как 10, что ограничит область восстановления 10 блоками вокруг вас. Используйте "r:#global" для глобального отката. Откатить игрока Notch на 1 час (с радиусом 10 по умолчанию): /co rollback u:Notch t:1h Предпросмотр, что будет откатываться при откате игрока Notch на 1 час (с радиусом 10 по умолчанию): /co rollback u:Notch t:1h #preview Откатить игрока Notch на 23 часа и 17 минут (с радиусом 10 по умолчанию): /co rollback u:Notch t:23h17m Откатить только поставленные/сломанные блоки камня у игрока Notch на 1 час (с радиусом 10 по умолчанию): /co rollback u:Notch t:1h b:1 Откатить только сломанные блоки камня у игрока Notch на 1 час (с радиусом 10 по умолчанию): /co rollback u:Notch t:1h b:1 a:-block Откатить всё, что сделал игрок Notch на 1 час кроме поставленных/сломанных блоков камня: /co rollback u:Notch t:1h r:#global e:1 Откатить гриферство Notch на 1 час с радиусом 20 блоков вокруг вас: /co rollback u:Notch t:1h r:20 Откатить гриферство Notch на 1 час только в мире Nether: /co rollback u:Notch t:1h r:#nether Откатить все действия всех игроков за последние 15 минут в радиусе 30 блоков вокруг вас: /co rollback t:15m r:30 Откатить все действия всех игроков за последние 15 минут в выделенном участке WorldEdit: /co rollback t:15m r:#worldedit Примеры использования команды /co lookup: Команда lookup схожа с командой rollback. Но есть и важные различия: параметр радиус неприменим для данной команды и все действия команды носят только информационный характер. Просмотр списка всей добытой за час алмазной руды: /co lookup b:56 t:1h a:-block Просмотр всех сообщений чата игрока Notch за последние 30 минут: /co lookup u:Notch t:30m a:chat Просмотр всех заходов на сервер игрока Notch: /co lookup u:Notch a:login Просмотр всех предыдущих ников игрока Notch: /co lookup u:Notch a:username
  2. Гайд по моду Forestry. Некоторые материалы(крафты) взяты с http://minecraft-ru.gamepedia.com/ (Что кстати стоило мне кучу времени на редактирование в отображаемый вид) Извините за плохо обрезанные скрины. Первый шаг в развитии в моде - это прибор под названием Плотник (Carpenter) Он производит большинство предметов в моде. Крафт: Затем вам потребуется Соковыжималка (Squeezer) для получения жидкостей или предметов: Яблоко → Яблочный сок (0,2 ведра) + Мульча 40%. Капля мёда → Мёд (0,1 ведра) + Прополис 5%. Медвяная роса → Мёд (0,1 ведра). Семена пшеницы → Растительное масло (0,01 ведра). Семена тыквы → Растительное масло (0,01 ведра). Семена арбуза → Растительное масло (0,01 ведра). Фосфор 2шт. + Земля → Лава (1,6 ведра). Фосфор 2шт. + Булыжник → Лава (1,6 ведра). Фосфор 2шт. + Песок → Лава (2 ведра). Кактус → Вода (0,5 ведра). Проценты - шанс выпадения предметов. Крафт: Центрифуга (Centrifuge) - прибор необходимый для переработки ресурсов из Forestry: В процентах указана вероятность получения предмета. Если не указана, значит, она равна 100%. Медовые соты → Пчелиный воск + 90% Капля мёда. Капающие соты → Медвяная роса + 40% Капля мёда. Вязкие соты → Прополис + 40% Капля мёда. Морозные соты → 80% Пчелиный воск + 70% Капля мёда + 20% Снежок + 20% Кристалическая пыльца. Какао-соты → Пчелиный воск + 50% Какао-бобы. Кипящие соты → Огнеупорный воск + 90% Фосфор. Шелковистые соты → Капля мёда + 80% Шелковистый прополис. Пересохшие соты → Пчелиный воск + 90% Капля мёда. Таинственные соты → Пульсирующий проплис + 40% Капля мёда. Рыхлые соты → 90% + 20% Капля мёда + 20% Пчелиный воск. Потемневшие соты → 100% Заряженная капля. Покрасневшие соты → 100% 2xЗаряженная капля. Омега-соты → 100% 2xОмега-капля. Пшеничные соты → 80% Пшеница + 20% Капля мёда + 20% Пчелиный воск. Замшелые соты → Пчелиный воск + 90% Капля мёда. Шелковистый прополис → 10% Прополис + 60% Клочок шёлка. Прополис → Каучук. Крафт: А теперь время отправится на первую экпедицию! Потребуется сачок(Scoop), чтобы добыть немного пчел. Крафт: При помощи сачка разбиваем(ЛКМ) улей и получаем немного пчел и сот. Затем идем домой, кладем соты в центрифугу и ничего не получаем. Забыл сказать, что все механизмы потребляют билдкрафтовскую энергию, которую можно выработать местными аналогами БК-шных двигателей. Для самого начала предлаю часовой двигатель(Clockwork Engine) Крафт: Для работы его необходимо разогнать. ПКМ на движке пока тот не разогреется. Но если движок разгонится до красного цвета, то необходимо срочно прекратить кликать, иначе игрока будет повреждать на 2 сердечка каждую секунду. Забавный факт: урон не зависит от брони, и поэтому ношение квантовой брони из ИК2 не предотвращает и даже не уменьшает урон игроку, поэтому является опаснее нано-сабли. Теперь, поставив движок рядом с центрифугой, мы можем спокойно положить соты в левый слот и забрать мед из правого слота. Затем, перемещаемся к соковыжималке и кладем внутрь семена. Заодно не забудьте присоединить движок к машинке. Когда в правом резервуаре масла будет 0,5миллибакетов (одно ведро - 1000миллибакетов) останавливаем процесс и забираем масло в капсулы- Крафт капсул: Затем перемещаемся с движком к плотнику и делаем Секретер(Escritoire) Секретер- отличный... прибор? стол? репликатор? arcane worktable? который позволяет получать продукты пчеловодства без ожидания окончания процесса опыления. Здесь вы можете, например, получить из Высокомерных пчел маточное молочко "без очереди". Для этого только надо запастись медом, или другим продуктом пчеловодства. Например, пчелиный моск пчелиный воск, прополис или другие продукты центрифуги не пойдут. Крафт: Вы наверное по изображению уже поняли что плотник требует жидкость, будь то масло или вода (которую вам наверняка захочется откачивать помпой из бесконечного источника воды), и намеченный чертеж с доступными для крафта предметами. Поставим же секретёр(тёр, тёр, дырку протёр ) Для него энергии не надо. Разложите все как показано тут: Далее идет мини-игра. Наверху-листочки с оставшимися подсказками, их активировать можно положив мед и нажав на микроскоп. Запоминая увиденное, попробуйте открыть пару пчел(по цветам) затем еще, и еще... Наконец получите соты и мед, миссия выполнена. Время делать Пасеку (Apiary) Секретер - это отлично, но например скрещивать пчел там не получится. Для этого и заодно получения продукции мы делаем пасеку. Крафт: Но прежде чем мы приступим к скрещиванию пчел, можно скрафтить базу данных: Крафт: Это очень удобная и универсальная база данных скрещиваний пчел, которую я даже использую вместо онлайн-таблиц. Несмотря на читерский NEI, который выдает теперь все "рецепты" мутаций пчел, иногда надо посмотреть ветки мутаций и родовые древа. Затем раскладываем все так: Смешаем Лесную принцессу и Равниного трутня и получим (с каким-то шансом) простую королеву. Затем смешаем Лесную принцессу и лесного трутня и получим Культивированную королеву. Затем мешаем простых пчел с культивированными и получаем Нобелевских пчел . Затем Нобелевских мешаем с культивированными и получаем Высокомерных пчел. От них мы получаем маточное молочко: компонент обшивки большого улья. Простых мешаем с культивированными, получаем Внимательную пчелу. Внимательных мешаем с культивированными, получаем Неприхотливых пчел. Неприхотливых мешаем с Внимательными и получаем Трудолюбивых пчел. Они дают нам пыльцу на ту же обшивку. Наконец мы крафтим обшивку. Крафт: Затем блоки улья Улей - увеличенная и более функциональная копия пасеки. Огромное значение ей придают нижеописанные блоки, способные менять обстановку улья. Крафт: Надо 27 блоков, но некоторые блоки можно менять на функциональные (Верхний слой, кроме угловых блоков, должен быть сделан только из блоков улья) вроде: Роевня- требует маточного молочка для работы. С шансом 0,4 создаст дикий улей. Обогреватель- повышает температуру, требует МДж из БК. Вентилятор- понижает температуру, требудет МДж. (Не считаю механизмы из аддонов) Регулятор влажности понижает/повышает влажность в зависимости от жидкости- воды или лавы. Первый слой: Второй слой: Третий слой: Четвертый слой: Полублоки могут быть использованы любые. Если вы вдруг захотели использовать "зеленую энергию", то вам сюда. Это промежуточный гайд между всеми любимыми деревьями. (хотя кому как...) Итак, чтобы сделать биомассу нам нужен Ферментер Крафт: Затем Дистиллятор для создания биотоплива. Крафт: Все естественно требует энергии. Могу также вставить про биогазовые двигатели, которые перерабатывают разные жидкости и лаву в МДж. Крафт: Теперь вернемся к топливу: Разложим все вот так: (Рекомендую пользоваться трубами/воронками/AE2) Затем смотрим, как все перерабатывается в этанол(Биотопливо). Его можно сжечь в Полужидкостном генераторе из IC2 или сделать что-нибудь еще полезное. По крайней мере, мы знаем что оно горит. А вот автоматизация процесса может дать неплохую энергоотдачу. Возьмите на заметку. Так как по бабочкам гайд продолжать бесполезно хотя бы потому что их еще не доделали, можно закончить его деревьями и торфом. Деревья полезны не только древесиной, но и вкусными плодами. Для опыления деревьев поставьте рядом пасеки и наполните их пчелами. Возьмите очки, Крафт: Наденьте их и посмотрите на листья. Если вы найдете листья странного цвета, снесите их графтером Крафт: Затем выпавший необычный саженец исследуйте Анализатором Крафт: Затем... Делайте разные деревья, делитесь гибридами с друзьями, весело проводите время. Торфяной движок делается так Крафт: Для торфа нужна болотная земля, поставленная вокруг воды. Крафт: Когда она потемнеет, соберите ее лопатой. Торф можно смешать с прополисом и делать его лучше в плане энергоотдачи. А еще чуть не забыл про крашенное стекло. Оно делается в заводе ламп. Крафт: Там можно делать стекло и абсолютно бесполезные лампочки. Крафт стекла: Вроде все довольны. Кто дочитал - тот молодец. Жалко, что мультиферм нету. Достаточно печально.
  3. Как пользоваться функцией scan? Итак, в этой функции можно задать два параметра, это относительные координаты по горизонтали (относительно блока геосканера/планшета или робота с геосканером), возвращаемое значение - таблица. Таблица содержит список плотностей блоков по вертикали. Чем дальше по вертикали находится блок (относительно геосканера), тем больше помех дает геосканер. Уровень помех можно настроить в конфиге мода. Ну тут вроде-как все понятно, разберемся с вертикальными координатами. При сканировании, геосканер возвращает таблицу, которая представляет собой столб из блоков. Кроме плотности ничего узнать нельзя. Возьмем, к примеру, scan(0, 0) это будет столб, выстой 64 блока, в котором находится устройство (геосканер/робот/планшет) В стандартнои конфиге радиус действия геосканера = 32 блока, следовательно можно просканировать кубоид 65x65x64 блока. Геосканер у нас находится на уровне 33 (индекс таблицы), на этом уровне при сканировании устройстрво почти не дает шумов, т. е. по горизонтали можно легко узнать истинную плотность блока. Индексы в таблице возрастают с высотой, т. е. блок с индексом 1 это -32 блок относительно устройства, 2 это -31 ... 33 это 0 и т. д. Теперь разберемся с горизонтальными координатами. Горизонтальные координаты хоть и относительные, но они не зависят от положения устройства в пространстве, т. е. отсчет идет по сторонам света. scan(1, 0) это столб на один блок на восток от устройства, следовательно, scan(-1, 0) - на запад. scan(0, 1) это южный столб, scan(0, -1) - северный. Для примера возьмем двойной цикл, который будет сканировать столбы и заносить их в таблицу. local tbl = {} for x = -32, 32 do for y = -32, 32 do if not tbl[x] then tbl[x] = {} end tbl[x][y] = geolyzer.scan(x, y) end end Он у нас будет сканировать с северо-запада на юго-восток, т. е. будет захватывать всю доступную зону. К примеру, нам надо сканировать определенный квадрат, стоящий по-диагонали от геосканера, обозначим их вот так: NE - северо-восточный, NW - северо-западный, SE - юго-восточный, SW - юго-западный. local function scan(d, r) -- направление, дальность if d == 'NE' then x1, x2, y1, y2 = 1, r, -r, -1 elseif d == 'NW' then x1, x2, y1, y2 = -r, -1, -r, -1 elseif d == 'SE' then x1, x2, y1, y2 = 1, r, 1, r elseif d == 'SW' then x1, x2, y1, y2 = -r, -1, 1, r end for x = x1, x2 do for y = y1, y2 do geolyzer.scan(x, y) -- тут должна быть фунция обработки или сохранения результатов сканирования end end end Чтобы просканировать квадрат со стороной 20 блоков, находящийся на юго-восток от геосканера надо запустить scan('SE', 20) Вроде-бы все очевидно. Функция analyze() намного проще, она возвращает таблицу с информацией о блоке, стоящем вплотную к устройству. Индексы таблицы не числовые, например, чтобы узнать плотность блока вводим analyze(сторона).hardness Чтобы задать сторону можно использовать sides API, либо просто задать цифрой. ...Будет дополняться...
  4. Кнопки, это самый распространенный элемент интерфейса, и не потому, что их полно в каждой графической программе. Функционал кнопки наследует большинство средство ввода, например: ссылки, переключатели, ползунки, менюшки и т. д. Сейчас, огромные возможности для создания других, более подходящих ситуации способов ввода, но традиционно используются кнопки, которые появились в первых электронных устройствах, т. к. они просты и интуитивно понятны. Внешний вид. Обычная кнопка имеет прямоугольный вид, это позволяет не заморачиваться с алгоритмом взаимодействия, удобно отображать на ней текст/изображения, но если необходимо, ее можно сделать какой угодно формы. Самое главное в кнопке это ее интерактивность, т. е. она должна не только выполнять функцию, для которой назначена, но и сигнализировать свой статус (иметь обратную связь). Например, при нажатии на кнопку, она меняет цвет/визуально проваливается/издает звук, все это вместе или по-отдельности дает пользователю знать, что она активирована, а цветом или звуком можно даже передать состояние выполнения задачи, выполняемой этой кнопкой. А вот если пользователь нажимает на кнопку и ничего не происходит, то он может клацнуть по ней еще много раз, пока кнопка будет выполнять задачу. В большинстве случаев это довольно опасно - накликают беду, а винят программиста. Поэтому, если в текущей ситуации кнопка неактивна, надо это подчеркнуть, например, обесцветив ее или частично слив с фоном, можно дополнить специальным звуком. Все это очевидно, поэтому не стоит об этом забывать. Внутреннее устройство. В графическом интерфейсе, кнопка это определенно обозначенное место на экране, в которое нужно тыкнуть, чтобы получить определенный результат, обозначенный на кнопке в виде текста/изображения или понимаемый из контекста. Как это реализовать в OpenComputers? Нам доступен вывод информации на монитор, посредством компонента GPU. Пока рассмотрим функции назначения цветов и вывода символов. Работа с видеокартой. Список методов видеокарты можно посмотреть на вики. Для назначения цвета текста используется метод setForeground. А чтобы задать цвет фона, есть метод setBackground. Чтобы проверить, как это работает обратимся к компьютеру с установленной OpenOS. Запустим компьютер. Вводим команду edit gpu_test.lua, так мы запускаем текстовый редактор OpenOS, указывая, что нужно редактировать файл gpu_test.lua. Пока этого файла нет, но когда в редакторе нажмем Ctrl+S он сохранится. Чтобы мы могли обратится к компоненту gpu, нам надо загрузить обертку для компонентов, предоставляемую OpenOS, она немного облегчает работу. Для этого, в самом начале программы пишем local component = require('component'), так, что это за письмена? Эта строка создает локальную переменную (указываем словом local перед именем переменной), далее указываем имя переменной. Знак равенства указывает, что в переменной теперь будет хранится то, что дает функция require, в данном случае мы задали этой функции передать переменной component возможности обертки, которая тоже называется component. Так будет удобней понимать, к чему мы обращаемся. На следующей строке пишем local gpu = component.gpu Это мы назначили переменной gpu все методы видеокарты, т. е. теперь можем обращаться к ней через эту переменную. При загрузке, OpenOS сделала несколько скрытых операций: определила основную видеокарту, подключила ее к монитору и добавила их к остальным компонентам, чтобы можно было обратиться по имени компонента и получить готовый интерфейс. Итак, видеокарта готова к работе, теперь опишем, что она должна сделать. Создаем переменные, содержащие информацию о цветах и тексте, с которыми мы будем работать. local color1, color2, text = 0xff00ff, 0x0000ff, 'Hello, OpenComputers!' При помощи параллельного присваивания мы задали две переменные с числовыми значениями цветов и переменную с текстом. Теперь создадим простой цикл, в котором выведем текст на экран, назначая цвет текста и цвет фона. for i = 1, 10 do gpu.setForeground(color1) gpu.setBackground(color2) gpu.set(10, 5, text) color1, color2 = color2, color1 os.sleep(0.5) end Сам код назначает тексту цвет, указанный в color1, а фону color2, затем выводит текст, содержащийся в переменной text на монитор, указывая координаты первого символа (от левого верхнего угла 10 символов в право, 5 символов вниз). Далее, параллельным присваиванием, меняем значения переменных местами, чтобы при следующем выполнении кода, цвета фона и текста поменялись. В конце цикла ставим задержку в пол-секунды, используя системную функцию sleep. Цикл готов, теперь, в конце программы стоит добавить восстановление цветов текста и фона, т. к. по завершению ее работы, цвета останутся такими, которые были назначены в последний раз. Готовый алгоритм будет примерно такой: Нажимаем Ctrl+S, чтобы сохранить файл, затем Ctrl+W, чтобы закрыть редактор. Теперь мы снова попали в шелл. Вызываем только-что созданную программу по имени: gpu_test, и наблюдаем ее выполнение. Так как координаты вывода жестко заданы, мы видим, что текст как-бы мигает. Чтобы увидеть эволюцию работы цикла, можно к координатам вывода добавить значения шага цикла. Для этого откроем файл edit gpu_test.lua, в функции gpu.set к каждому числу прибавим переменную-итератор. Теперь вызов функции gpu.set выглядит вот так: gpu.set(10+i, 5+i, text), сохраним изменения (Ctrl+S), закроем (Ctrl+W), и опять запустим тестовую программу gpu_test Работа с вводом. Со способом вывода информации более-менее разобрались, теперь разберемся с вводом, т. к. мы хотим создать графический интерфейс, хоть и 'псевдо', мы будем использовать возможность сенсорного ввода, клавиатуру поставим для других задач. Монитор I уровня это только средство вывода, а мониторы второго и третьего уровня могут работать и как средство ввода. Когда игрок прикасается к экрану, генерируется сигнал touch, содержащий в себе адрес монитора, координаты касания, код кнопки мыши и ник игрока. Нам остается отследить это событие и соответсвующим образом на него отреагировать. Для демонстрации работы напишем небольшую тестовую программу, которая будет ловить события касания экрана, отображать место и числовые координаты. Создаем файл edit click_test.lua Первым делом подключаем управление видеокартой local gpu = require('component').gpu Затем, подключим мониторинг событий, который предоставляет OpenOS. local pull_e = require('event').pull Общая документация тут, мы воспользуемся только одной функцией. Теперь позаботимся о пользователе, чтобы при завершении программы цвет фона остался такими же, как и перед запуском, мы его сохраним в переменную: local b_color = gpu.getBackground() Эта функция сообщает цвет фона, который сейчас используется, для цвета текста есть getForeground, но в данном тесте мы будем управлять только цветом фона. Так как у мыши две кнопки, в событии touch указывается код кнопки: ЛКМ = 1, ПКМ = 0 Чтобы визуально различать касания, создадим таблицу с цветами для каждой кнопки. В качестве индекса будет использоваться код кнопки. local color = {[0] = 0x00ff00, 0x0000ff} т. е. ЛКМ будет обозначаться синим, ПКМ - зеленым. Теперь создадим цикл, в котором будем ловить и обрабатывать события. while true do Как следует из описания функции event.pull, можно фильтровать ненужное, передав в функцию название интересующего нас события. Так как возвращается довольно много переменных, будем создавать из них таблицу, для большего удобства. local tEvent = {pull_e('touch')} Теперь все события типа touch будут пересоздавать таблицу tEvent, в которой будет заключена информация об этом событии. Обратиться к интересующей информации можно, указав номер, в той же последовательности, как это описано в документации по сигналам Для начала добавим условие выхода из программы, т. к. цикл бесконечный и прервать его можно только грубо нарушив выполнение программы. if tEvent[3] == 1 and tEvent[4] == 1 then Если клик произошел по координатам (1, 1), выполнить следующий код: gpu.setBackground(b_color) - вернем фону его первоначальное значение, полученное при запуске программы. os.exit() - вызовем системную функцию выхода из программы. Закроем условие: end А теперь опишем сам процесс отклика на касание. Присваиваем фону цвет, исходя из полученного кода кнопки мыщи: gpu.setBackground(color[tEvent[5]]) Устанавливаем по полученным координатам символ пробела, чтобы подсветить фон: gpu.set(tEvent[3], tEvent[4], ' ') Затем, по координатм (1, 1) показываем информацию о событии: gpu.set(1, 1, 'x: '..tEvent[3]..' y: '..tEvent[4]..'\t\t') В конце добавляется пустое место, чтобы не заморачиваться с затиранием предыдущих значений. Закрываем цикл end В итоге получается такой код: Сохраним и запустим программу. Кликая мышкой по монитору мы видим, как она оставляет следы и обновляется информация в левом верхнем углу. Кликнув в левый верхний угол мы завершаем работу программы. Значит, мы между делом создали кнопку, хоть и невидимую. Принцип работы очень прост - пользователь кликнул по экрану, а программа сравнила координаты клика с координатами кнопки, если они совпали, то выполняется код, назначенный для этой кнопки. Теперь создадим нормальные кнопки, с более удобной конфигурацией. Все кнопки будут находиться в таблице, при каждом клике будем в цикле обходить таблицу, проверяя координаты. Дополнительно напишем пару функций - одна будет подсвечивать нажатую кнопку, другая переключать видимость. Каждая кнопка будет содержать следующие параметры: статус отображения (т. е. активна кнопка или нет), координаты, размер, цвет фона кнопки, цвет текста, текст и исполняемую функцию. { visible = boolean, X = number, Y = number, W = number, H = number, color = number, textColor = number, text = string, action = function } Загрузим видеокарту и захват событий. local gpu = require('component').gpu local pull_e = require('event').pull Для того, чтобы очистить экран при запуске и поставить кнопку выхода в угол, нам понадобится узнать и сохранить текущее разрешение. local W, H = gpu.getResolution() Сохраняем цвета фона и текста, чтобы вернуть их при завершении программы. local b_color, f_color = gpu.getBackground(), gpu.getForeground() Создаем таблицу tButtons, в ней мы будем хранить все кнопки. Добавляем кнопку выхода из программы: Изначальное состояние кнопки: visible = false, Устанавливаем кнопку в правый верхний угол, задаем размер в один символ: X = W, Y = 1, W = 1, H = 1, Устанавливаем цвета: color = 0xff0000, textColor = 0xffffff, Задаем символ: text = 'X', Функция завершения программы немного изменилась - устанавливаются первоначальные цвета, очищается экран и вызывается функция выхода. action = function() gpu.setBackground(b_color) gpu.setForeground(f_color) gpu.fill(1, 1, W, H, ' ') os.exit() end Опишем функцию рисования кнопки, в которую будет передаваться индекс кнопки. local function drawButton(n) задаем цвет кнопки gpu.setBackground(tButtons[n].color) задаем цвет текста gpu.setForeground(tButtons[n].textColor) заливаем прямоугольник, который занимает кнопка (в данном случае, берем координаты и размер кнопки из ее таблицы) gpu.fill(tButtons[n].X, tButtons[n].Y, tButtons[n].W, tButtons[n].H, ' ') для большей красоты отцентрируем текст по границам кнопки, для этого вычислим половину высоты и половину ширины кнопки, прибавим их к координатам кнопки, а у ширины еще отберем половину длинны текста gpu.set(tButtons[n].X+(tButtons[n].W/2)-(#tButtons[n].text/2), tButtons[n].Y+(tButtons[n].H/2), tButtons[n].text) закрываем функцию end Добавим переключение видимости кнопки. local function toggleVisible(n) if tButtons[n].visible then если кнопка видима, то изменим статус tButtons[n].visible = false установим цвет фона на тот, который был при запуске gpu.setBackground(b_color) зальем прямоугольник фоновым цветом gpu.fill(tButtons[n].X, tButtons[n].Y, tButtons[n].W, tButtons[n].H, ' ') else иначе: изменим статус tButtons[n].visible = true вызовем отрисовку этой кнопки drawButton(n) закроем условие и функцию end end Чтобы кнопка подмигивала при активации, создадим функцию меняющую цвет фона и текста, как в первом примере. Для получения и назначения цветов обратимся к параметрам кнопки по индексу, как и в прошлых функциях. меняем цвета tButtons[n].color, tButtons[n].textColor = tButtons[n].textColor, tButtons[n].color рисуем кнопку drawButton(n) делаем задержку os.sleep(0.09) возвращаем цвета tButtons[n].color, tButtons[n].textColor = tButtons[n].textColor, tButtons[n].color заново рисуем кнопку, с номальными цветами drawButton(n) Функции описаны, теперь напишем саму программу. При запуске очистим экран gpu.fill(1, 1, W, H, ' ') Можно вынести ее в отдельную функцию, но в данном примере очистка вызвается только два раза - при запуске и при выходе. Теперь активируем все нужные кнопки. В данном примере можно запустить все кнопки, поэтому пройдем в цикле по таблице с кнопками и для каждой вызовем переключатель видимости. for i = 1, #tButtons do toggleVisible(i) end И опишем главный цикл. while true do ловим событие в таблицу tEvent local tEvent = {pull_e('touch')} перебираем все кнопки for i = 1, #tButtons do если кнопка видима if tButtons.visible then сравниваем координаты клика с прямоугольником кнопки if tEvent[3] >= tButtons.X and tEvent[3] <= tButtons.X+tButtons.W and tEvent[4] >= tButtons.Y and tEvent[4] <= tButtons.Y+tButtons.H then если клик попал по этой кнопке, заставляем ее мигнуть blink(i) выполняем функцию, которая назначена для нее tButtons.action() прерываем цикл проверки кнопок break закрываем циклы и условия end end end end На этом все, программа готова, в готовом примере я добавил три кнопки - 'set' выводит строку, а 'del' стирает и бибикает спикером, 'reboot' перезагружает компьютер.
  5. intro Введение. Предположим (а если обстоятельства складываются соответствующим образом, то и предполагать ничего не нужно), что у вас тормозит и/или даже вылетает игра. Что делать? Мольбы о помощи в чате приводят к очень вежливым требованиям логов каких-то. Поэтому вам в помощь и написан этот гайд. log Что такое логи? Лог, от английского log (журнал событий), — это файл, в котором хранится отладочная информация, предназначенная для распознования причин неисправностей программ — у нас это игра. Ведь, действительно, проблем, из-за которой игра может крашиться при попытке зайти на сервер, не один десяток. И только логи говорят, какая именно возникла в конкретном случае. Потому и просят предоставить эти файлы — ведь иначе ничем помочь люди знающие не смогут. where Где искать эти логи? Действительно, чтобы дать логи, нужно их сначала где-то найти. В случае Minecraft логов бывает 2 типа: краш-лог и общий лог клиента. Первый создаётся только при крашах, второй — всегда. crash Краш-лог. Откройте Проводник и в адресную строку введите следующее: %APPDATA%\CCLauncher\ (для Linux это ~/CCLauncher/). Откроется папка с игрой. Теперь необходимо знать название сервера в лаунчере, на котором вы собирались играть. Найдите папку, соответствующую этому серверу. Откройте её и перейдите в директорию crash-logs. Здесь находится перечень файлов, которые и называются краш-логами. Вспомните время и дату, когда произшёл краш клиента, и поищите файл с близким к этому временем создания. Обычно это самый последний созданный файл в папке (тогда достаточно переключиться на режим табличного вида и щёлкнуть по заголовку столбца "Изменено"). client Лог клиента. Откройте Проводник и в адресную строку введите %APPDATA%\CCLauncher\ (для Linux это будет ~/CCLauncher/). Перейдите в папку сервера, где случилась проблема. Затем откройте директорию logs. Из всех файлов вас должен интересовать только один: fml-client-latest.log. Это и есть лог клиента. report Отчёт об оборудовании. Иногда даже этих двух файлов бывает недостаточно. Необходимо знать тип и версию операционной системы, её разрядность, версию и разрядность Java. Чтобы минимизировать время на собирание нужных данных, существует скрипт, который сам соберёт все нужные данные и запишет их в файл. Перейдите по этой ссылке: https://yadi.sk/d/_LKXE1AWf743K. Выберите пункт "Скачать" и сохраните файл. Откройте папку загрузок и запустите скачанный файл от имени администратора. Если всё сделано правильно, в директории C:\ должен появиться файл REPORT.txt, в котором и содержится вся информация. Для Linux команды следующие: $ java -version $ uname -a $ free -hw $ cat /proc/cpuinfo upload Выложить файлы. Чтобы дать людям логи, нужно их куда-нибудь выложить. Здесь есть два способа: pastebin Использовать сервис pastebin.com Перейдите по ссылке: http://pastebin.com/. В поле скопируйте содержимое нужного файла. Ниже, в поле напишите, что это за файл (краш-лог, отчёт). Нажмите кнопку . Откроется страница, где будет содержимое файла. Теперь скопируйте ссылку на эту страницу — с помощью неё люди смогут увидеть содержимое файла. gist Использовать сервис GitHub Gist Этот вариант имеет существенный плюс в том, что можно отправить сразу несколько файлов. Перейдите по ссылке: https://gist.github.com/. В поле введите название файла (краш-лог, отчёт). В большое поле ниже скопируйте содержимое файла. Если нужно прикрепить ещё один файл, нажмите на кнопку и повторите операции. После окончания нажмите на кнопку внизу . Откроется страница со всеми отправленными файлами. Скопируйте ссылку на страницу — с помощью неё люди смогут увидеть содержмиое файла. help Куда писать о помощи? Итак, наконец, можно отправлять просьбу с надеждой о помощи. Специально для этого существует на форуме специальная тема. Внизу страницы опишите проблему и оставьте ссылки на файлы. Нажмите и ждите ответа. Кстати, для удобства вы можете подписаться на тему, нажав на кнопку вверху страницы: . problems Реши сам, или некоторые основные проблемы. java Java. Это собственно, язык программирования, на котором написана игра. В это же понятие я буду включать виртуальную машину, которую игра использует. У неё могут возникнуть проблемы с операционной системой и, соответственно, самим компьютером. javaram Самая частая проблема возникает с оперативной памятью. Для начала узнайте количество установленной у компьютера памяти ОЗУ. Для комфортной игры требуется минимум 1-2 ГБ свободного места. Но система тоже хранит данные в памяти. Начиная от 128-256 МБ на каком-нибудь LXDE, и заканчивая 2-3 ГБ на Windows. Сразу спешить ртатить деньги не стоит. Вы можете включить своп (файл подкачки в терминологии Windows), таким образом, добавить ещё немного памяти за счёт жёсткого диска. Но вот скорости это вряд ли добавит. Так что если у вас со свопом менее 2 ГБ памяти, писать о проблеме бессмысленно. javaold Другая проблема возникает из-за старых версий Java. Требуется её последняя сборка 8 версии, которую получить и скачать можно отсюда: http://java.com/en javaarch Следующая проблема состоит в разрядности системы и Java. Если система 32-битная, то более 1.5 ГБ вы выделить не сможете. Вариантом будет только переустановка системы, но уже 64-битной её версии. Если же у вас есть/появилась 64-битная версия, то обязательно скачайте соответствующую версию Java. minecraft Minecraft. Код данной игры далеко не идеален, как и выбранный язык програмирования, если смотреть в плане ошибок, багов, оптимизированности и производительности. Особенно с модификациями. К сожалению, здесь слишком много проблем, чтобы можно было описать всех их. Поэтому нужно обращаться за помощью.minecraftfreezes Если после некоторого времени игры она начинает зависать, то проблема в процессоре. Попробуйте решения в следующем порядке: Решение I. Увеличьте (или уменьшите, зависит от ситуации) приоритет процесса Java. Решение II. Увеличьте (или уменьшите) количество выделенной игре памяти. Из-за большого количества выделенной памяти процессор будет очень долго удалять лишние объекты в памяти, вызывая фризы, если у него небольшая мощность, или жёсткий диск будет вызывать фризы, если нужные объекты будут находиться в свопе, потому что у него относительно небольшая скорость работы; или наоборот, будет очень часто запускать сборку мусора в памяти из-за её постоянного недостатка. ¶, § — ссылка на соответствующий раздел.
  6. Хехей, всем привет! Сегодня сделал для вас небольшой гайд по созданию материи! Можно было сделать и более эффективное производство, но я не ставил это целью видео. В данном случае нужно было максимально просто рассказать о том как эта система работает. Т.к. этот мод еще сырой, многое может изменяться. Собственно хватит разглагольствовать, вот самое видео!
×
×
  • Создать...