Перейти к публикации
Форум - ComputerCraft
  • записей
    8
  • комментариев
    47
  • просмотров
    19 207

О блоге

Здесь будет рассказано что и как я делаю.

Записи в этом блоге

 

Как обойти цензуру и читать удалённые сообщения в чате форума

Если вам не по нраву цензура и вы хотите видеть, какие сообщения чата были удалены, это реализовать довольно просто. Тут не нужно скачивать никаких программ. Форум сам своим алгоритмом работы предоставляет такую возможность. И все зарегистрированные игроки осознанно или неосознанно использовали этот метод. По этому если назвать это багом - то нужно абсолютно всех на форуме перебанить. А ещё не читать дальше этот блог, так как правилами запрещен багоюз. Но если же вы не считаете это багом, то можем читать дальше. На свой страх и риск.   Для начала открывает чат в одной вкладке браузера. И тут мы можем делать всё (в рамках правил форума), писать сообщения в чат, нажимать на кнопку "обновить" чуть ниже чата и прочее. Но есть одно условие. Не переходить на другие страницы, сайты и не нажимать кнопку "обновить страницу" у браузера.
Страница при этом работает так. Приходит новое сообщение чата - оно записывается в лог всех пришедших сообщений. И мы их видим. Проверки на наличие новых сообщений производятся примерно раз в минуту (но это не точно). Но есть кнопка обновить, которая проверит наличие новых сообщений сразу после её нажатия.
У вас может возникнуть вопрос, почему сообщения удалённые админами и модераторами не исчезнут? А тут всё просто. В ваш лог сообщений который хранится и обновляется новыми сообщениями никто не может повлиять и удалить сообщение. (на момент написания этой статьи) А чтобы сообщения удалились, нужно обновить страницу. Или прийти на страницу с перепиской после удаления сообщения. Тогда страница при загрузке, на запрос всей переписки вышлет все сообщения которые есть на данный момент. И удалённых конечно же не будет.   Отсюда вытекает следующее правило. Одна страница/вкладка браузера должна не обновляться - для мониторинга сообщений. А вторая вкладка обновляться. И тогда мы сможет отслеживать, какие сообщения были удалены, по отсутствию их во второй вкладке.   Вот такой вот лайфхак для тех, кому интересно читать все сообщения, которые не прошли под фильтром цензуры.
При этом, я вам советую соблюдать правила сервера и чата и не писать сообщения, которые могли бы быть удалены по основаниям правил.   Хотя никто не застрахован от произвола и сообщения могут удаляться по собственному желанию модераторов, без оснований на правила. В таком случае, можете попробовать написать жалобу на модератора в этом разделе.
И если вам дали неправомерный бан/мут, можете так же его оспорить в этом разделе.
Так же, перед созданием темы в разделах указанных выше, не забудьте прочитать тему с правилами подачи жалобы.
И пусть вас не смущает, что там нет других тем от игроков. После вынесения решения, темы закрывают и какое-то время они висят для ознакомления с итогами. А потом удаляются. По этому не бойтесь создавать там темы.
Так же напоминаю про правила:

И хотел бы акцентировать внимание на правиле 1.1.2. В нём речь идёт только об администрации. А модераторы чата/сервера/форума под эту категорию не попадают и на их действия подавать жалобы не запрещается (на момент написания статьи)   В завершении хотел бы написать с какой целью я написал этот блог.
Во первых, чтение удалённый сообщений (до удаление, как и после удаления) не запрещено правилами (на текущий момент) Иначе, как писалось выше, все бы пользователи были бы давно в бане.
Во вторых, проконсультировать игроков с правилами и возможностями которые у них есть. Это очень важно, так как от произвола модераторов никто не застрахован.

qwertyMAN

qwertyMAN

 

Рассчёт самой эффективной печи Tinkers Construct

В общем решил я найти такой размер печи из Tinkers, которая бы тратила меньше всего ресурсов и давала максимальную вместительность при этом. Написал я для этой цели алгоритм с брутом, который проходится по всем вариантам построения и находит самый эффективный.
Скрин:

Код:
http://pastebin.com/B625H8RC
http://pastebin.com/aPz8Faw6   В заключении хотелось бы добавить что калькулятор подсчитывает минимальное количество блоков для строительства, что включает в себя только грани печи и пол. Без угловых и рёберных блоков (которые не нужны для работы печи)
100% эффективность означают, что 1 строительный блок эквивалентен 1 слоту вместительности печи.
В первую программу мы вводим только максимальную длинну для всех трёх осей.
Во второй можно вводить разные значения для всех трёх измерений.
И да, я знаю что обе проге выводят всегда один и тот же результат. Такова реальность увы. Я сам был в шоке, что мои подсчёты не дали ожидаемого результата.   Может кто знает что я делаю не так? Может сама задумка у меня плохая?   P.S. Писал на скорую руку, в выживании в единственном роботе который у меня был. Так что не надо докапываться до названий переменных.

qwertyMAN

qwertyMAN

 

Особый вид программирования роботов

В общем я тут во время тестирования написал программку, которая позволяет программировать робота через таблички.
Как вам такая идея? И самое главное, какие у вас есть предложения, по тому как расширить вместительность табличек (более 15 символов не вмещается, а это уже мешает роботу передвигаться) А таблички из библиокрафта не хотят работать с роботом.
Скрины работы:
 

qwertyMAN

qwertyMAN

 

Для новичков в программировании

Доброго времени суток, игроки.
Я тут решил написать небольшой сборник советов для начинающих программистов.
Возможно кому нибудь понадобится.   1 проблема: не использование булева
В чём суть проблемы: игроки используют 1 и 0 как включено и выключено. Вместо true и false, как это надо делать.
В чём причина проблемы: булева занимают минимальное из всех типов данных место. Булева поддерживают такую операцию как x = not x, которая так быстро прижилась в моём коде для создания переключателей. В добавок и сам код выглядит красивее, не нужно ставить комменты в коде что означает 1 и 0.   2 проблема: комментировать всё подряд (если это не обучающий код)
Способ решения: со временем приходит осознание того что ты делаешь и как. Если код написан так как надо, то тут и комменты не нужны. Любой прогер взглянет и поймёт что в переменных x и y хранятся координаты. Комменты следует ставить там где они действительно нужны   3 проблема: использование чего то вроде этого if x==true then ... end. В чём ошибка? Да в том что сравнение тут совершенно не нужно. Достаточно написать if x then ... end чтобы условие выполнялось, когда x чему либо равен, кроме false и nil.   4 проблема: длинный комменты, там где они могут замениться более простым пояснением что к чему.
Способ решения: нарисовать псевдографикой поясняющий рисунок между символами --[[ и ]]. Внутри них всё воспринимается как коммент. Вот пример:
Итак что мы видим в примере? Это игра Cube. Здесь мы видим такую строку как door.pos={false,false,false,false} (в проге она означает положение дверей, закрыты они или открыты). Но без комментов не понять под каким номером какая комната. Можно было бы написать 4 коммента и расписать что 1 - верхняя комната и так далее что не так удобно. Но при помощи псевдографики можно очень понятный рисунок нарисовать, который сразу все вопросы закроет.   5 проблема: использование глобальных переменных.
Это очень важный пункт. В большинстве случаев в проге используются локальные переменные (в том числе и локальные функции).
Это позволит экономить память, так как когда задаются локальные переменные в функции, по завершении этой функции они все удаляться из памяти. Освободив как саму переменную, которую мы сможем использовать с таким же именем, так и место в памяти. В общем, экономия и порядок будет в коде тех кто использует локальные переменные.   Способы выявления ошибка:
Как правило строку в которой произошла ошибка и путь к ней пишется на экране, где бы вы lua не использовали.
Но если случилась непонятная ситуация - ставьте print(здесь нужная переменная). Так мы сможем проверить, соответствует ли переменная тому что мы хотим получить. Если нет - решаем причину несоответствия. А так же мы можем написать следующую конструкцию print(type(x)), где мы проверим тип переменной x ( в вашем случае другой переменной). Для чего нужно? А вот например случается беда когда числовая переменная с какой то кстати становится строкой. (как произошло в моей проге Open Clicker). В итоге цифра как бы есть, но не производятся всяческие вычисления. Так как тип переменной - string. В данной ситуации на помощь приходят функции tostring() и tonumber() которые пытаются перевести переменную в стоку и число. Например tonumber("1".."02"). В данном случае две string строки сложатся в одну строку и переведутся в тип число.   Как предотвратить ошибки:
Учиться программировать.
Использовать хороший текстовый редактор с подсветкой синтаксиса (очень помогает при выявлении лишнего или недостающего end). У меня вот стоит Notepad++, поддерживает вкладки что тоже удобно. Да и нумерация строк полезна.
Не в коем случае не программируйте в стандартном блокноте или ещё хуже в OpenOS. Это возможно, но крайне не удобно.

qwertyMAN

qwertyMAN

 

Результаты разработки игры Куб #1

Добрый день, игроки.
Игра Cube, практически портирована с OpenOS на полноценный движок love2d. Осталось лишь генерацию комнат прикрутить и будет готова. Далее можно будет заниматься созданием предметов и прочего дополнительного материала.
Вот вам для сравнения скрины игры на OpenOS и на love2d:

Нововведения: Игра с плавным управлением (уже нет той пошаговости и пиксельности Возможность бега зажатием шифта Двери которые открываются на кнопку E (они со всех 4 сторон есть, но отрисовку для теста сделал только у верхней - фиолетового цвета) Гибкие настройки, такие как: ширина стен комнат, ширина прохода, размер комнат, скорость игрока, ускорение при беге и прочие переменные. То есть в случае чего можно легко настроить под себя игру.

Скажу по секрету. Возможно даже будет в будущем когда нибудь добавлена прицельная стрельба мышкой и вражеские ИИ. Движок позволяет многое.
И не смотрите на то что все соседние комнаты отображаются одновременно. Так происходит пока я не внедрил генерацию мира.   Есть идеи по улучшению игры - пишите в комментарии.
А с вами был qwertyMAN, удачи в программировании.

qwertyMAN

qwertyMAN

 

Простой лаунчер для программ и игр

Здравствуйте, игроки.
Сейчас мы будем разбирать устройство и преимущества моего лаунчера.   Устройство: Вы запускаете данный лаунчер и видите список установленных игр Игры версией v1.0 и выше выделяются зелёным Игры ниже версии v1.0 (бета версии) выделяются жёлтым Игры который загружены с ошибкой выделяются красным Игра на которой мы стоим отображается синим

Управление: Управление стрелками выделяет нужную строку Enter запускает программу, либо говорит что файл игры не найден. При нажатии на "V", включается и выключается отображение версий При нажатии "Q", игроком из белого списка, игра закрывается При нажатии "I", отображается информация о игре
 
Как подключить игру:
Скидываем файл игры в папку lib, или в корневую папку.
Далее заходим в код лаунчера и в строке "-- загружаем игры" добавляем строку add_game("имя файла")
Игра подключена и будет отображаться в списке, осталось лишь внедрить небольшие изменения в сам файл игры.
Открываем код игры и пишем вот такую конструкцию: local output = { name = "<<Имя которое будет отображаться в списке>>", version = "<<Версия>>" autors = {"<<Ники авторов через запятую>>"} info = "<<Инфа о игре, правила игры и прочее описываем здесь>>"}output.func = function(input)<<Вся игра [либо любая другая прога], полностью, вставляется её код здесь>>return output
Всё! Игра подключена и работает.  
Возможности файла лаунчера:
Заходим в файл загрузчика и находи строку "-- настройки", там мы можем легко менять нужные нам параметры: Белый список определяющий кто может закрыть программу Чёрный список определяет кого лаунчер будет игнорировать Настройка цветов Настройка отступов от краёв экрана Настройка, отображаются ли изначально версии игр в списке

Возможности подключенных игр:
В функции игры мы получаем таблицу input, сейчас рассмотрим её возможности: input.name возвращает название игры input.version возвращает версию input.autors возвращает таблицу с списком авторов input.info возвращает информацию о игре input.Black_List возвращает список игроков из чёрного списка input.White_List возвращает список игроков из белого списка input.colors возвращает цвета использованные в лаунчере input.border возвращает отступы от краёв экрана из лаунчера

Преимущества: Простой лаунчер Легко настроить Большая функциональность Защита от сочетания клавишь Alt + Ctrl + C [в том числе и во всех играх] (то есть вам не нужно больше беспокоится о безопасности игр)

Недостатки: Не графонистый лаунчер
 
Скрины:

  Установка лаунчера:
pastebin get -f 7YB3qvxE Launcher.lua   С вами был qwertyMAN, спасибо за внимание!

qwertyMAN

qwertyMAN

 

Пишем шашки #1

Добрый день, игроки.
Вот я начал делать шашки под ОС, уже сделал генерацию поля.
В будущем сделаю кнопки "Ничья", "Сдаться" и индикатор чей сейчас ход. А так же займусь написанием алгоритма управления шашек.
Пользуясь случаям хотел бы попросить совета. Какие 2 символа лучше использовать для отрисовки шашек?
То что есть сейчас, вот это:
  Что думаете про этот символ? Какой вместо него предложите?

qwertyMAN

qwertyMAN

 

Рабочее место qwertyMAN'a

Здравствуйте, программисты и гости данного форума.
Сегодня я бы хотел вам продемонстрировать, в каких условиях я пишу программы, чего я добился и что для себя подметил.   Сначала я создал новый мир и поселился в уже отстроенном доме деревни. По ходу написания программ жители сильно раздражали и я их всех перерезал.   Вот собственно моя лаборатория:
  Вот я написал и тестирую игру Cube v1.0:

Там же я и тестировал свою библиотеку "Converter".   Но через время я решил написать серверную версию игры Cube и сделал более удобную тестовую комнату:
  Вид сзади:
  По идее комната имеет удобно расположенные 2 компа и 1 сервер. Чтобы тестировать игру за двух игроков. Но пока ещё до этого как то не дошло.   Вместо этого мы имеем 1 сервер, для написания "сердца" программы (которая на данный момент принимает и принтит запросы, а затем отправляет ответ обратно):
  Один комп, который программируем на отправку-принятие запросов и отображение происходящего в игре:

(На первом скрине мы нашли 4 работающих сервера, их имена, и показали их порты. На втором попытались подсоединиться к несуществующему серверу и получили ошибку)   А также есть один комп, который в цикле показывает какую клавишу мы набираем и ник игрока который нажал клавишу:

(Мне очень удобно иметь такой комп на своём рабочем месте. Так как при написании я ориентируюсь на компы 1 и 2 уровня, я не делаю кнопочек. Вместо этого я использую только текстовый интерфейс, только консоль. А чтобы делать текстовый интерфейс, нужно знать номер клавиши. Этот комп как раз позволяет за секунды найти номер нажатой клавиши)   Что же касается разработки "Cube online", я над ней работаю, по крайне мере основу которая находит сервера уже сделал.
Возможно эти наработки буду использовать в другой серверной игре, так как меня пугает сложность переписывания кода игры Cube. Она заточена под одиночную игру. А тут надо пол кода сносить и писать заново, чтобы поддерживались несколько игроков.   Впрочем, удручает и следующий фактор: не кто не станет готовую серверную версию игры ставить на сервер IT. По этому и не спешу разбираться с кодом и переписывать. Скорее уж что нибудь по проще сделаю на основе этих наработок.   С вами был qwertyMAN, увидимся позже.   Ссылки:
Игра Cube v1.0
Библиотека "Converter"

qwertyMAN

qwertyMAN

×