Lucky
потом вот так local dsc = dsc.."\n"..add_style1(react)
Snusmumriken
Надо подумать как это организовать по-человечески.
Lucky
и вот так вывожу print (terminal:toBlock(dsc,3,3))
Snusmumriken
Ещё x и y выглядят лишними, их бы убрать.
Lucky
Ну, я так дёргаю:
terminal:setPosition(0, 0)
print (terminal:toBlock(dsc,3,3))
Lucky
И в целом норм. Всё понятно.
Snusmumriken
print добавляет лишние символы переводов строки, io.write оставляет курсор после последнего выведенного символа.
Snusmumriken
Блин, ты поднял мою старую либу для личного использования, и мне теперь хочется сделать её нормальной.
Lucky
Я тот ещё упырь, да.
Lucky
Я так понимаю, что возможно здесь собака порылась:
return '\27['..table.concat(res, ';')..'m'..text..'\27[0m' -- сбрасываем форматирование в конце записи
Snusmumriken
Если текст у тебя — блок, то форматирование должно было сброситься не на следующей строке а после блока.
Lucky
Т.е. надо сунуть в форматирование текст, обмазанный предварительно блоком?
Snusmumriken
Вроде того.
Lucky
Понял, щас проверю.
Snusmumriken
Поэтому из блока хочется выкинуть установку позиции, чтобы можно было мержить с другими текстами.
UtoECat
хммм... я чёт всегда думал, шо если перезаписать символами место, где "должна была стоять" escape последовательность то форматирование пропадёт, но нет 🤔
ну или я опять всё позабыл)
Snusmumriken
Терминал держит стейт.
Snusmumriken
А escape-последовательности нигде не "стоят", они могут быть встроены в текст, но терминал их только интерпретирует но не отображает. У него нет места куда он их ставит. Буквально скип вывода + выполнение команды.
UtoECat
Терминал держит стейт.
ну да, имеет смысл, на бумаге же тебе не пишется, что "следующие символы зелёного цвета и курсивом" или что-то подобное)
Snusmumriken
И на самом деле это гига удобно, потому что мы можем брать и клеить здорове-е-е-е-енную последовательность команд:
local something = "Нарисовать линию" .. "установить позицию на х-у" .. "перекрасить цвет фона" .. "запомнить текущую позицию курсора" .. "Привет я крутой" .. "восстановить позицию курсора + сдвинуть курсор вниз" "перекрасить цвет текста" .. "ваще крутой"
А потом такой радостно:
io.write(text)
И всё. У нас кусок графония в строчке.
Lucky
Lucky
Чтоб одна была с координатами, а другая - просто блок?
Snusmumriken
Так может просто добавить блоковую функцию без координат?
Да, вроде того.
Просто тогда ты смело сможешь клеить больше:
local question = [[
Мы вышли на опушку
Был сильный мороз
]]
local reaction = [[
Вы пнули дерево
Но ничего не случилось
]]
local textblock = term:toBlock(
term:format(question, {color = {"black", "white"} ..
"\n\n" ..
term:format(reaction, {color = {"red", "white"}
)
term:setPosition(3, 3)
io.write(textblock)
Snusmumriken
Надо прочекать.
Lucky
Так сделал:
function terminal:justBlock(text)
return self:s's' -- set position ans save
..text:gsub('\n', self:s'u'..self:s'B'..self:s's') -- replace \n as 'restore' -> 'move down' -> 'save'
end
Lucky
Snusmumriken
Вооо кросота
Snusmumriken
С форматом тоже надо подшаманить, добавить варик чтобы возвращал чисто последовательность для форматирования с опцией ргб-цветов, дабы клеить туда-сюда.
Lucky
Теперь ещё прокрутку придумать и нормальные переносы. Чтоб отдать многострочную строку и ширину, и получить строку с переносами и прочими отступами красивого текста.
Hello, World! 🎄
Snusmumriken
Snusmumriken
Lucky
Маракую маракуйю инвентарь
Snusmumriken
Lucky
Snusmumriken
Просто оно часто будет переносить по одному слову в таком случае.
Snusmumriken
Из серии:
Мы вышли на опушку, был сильный
мороз,
и каждый участник события вдруг
понял, что сильный мороз не
очень-то
силен.
Вместо
Мы вышли на опушку, был сильный
мороз, и каждый участник события
вдруг понял, что сильный мороз не
очень-то силен.
Snusmumriken
То есть мб сначала убрать из многострочника все переносы (чтобы было удобно его писать), а потом переразбить по ширине окна.
Возможно ещё добавить тэгов а ля <br> как принудительный перенос для абзацев и всякого такого.
Snusmumriken
Вообще, открою страшный секретик, можно вообще конвертацию форматирования вроде
<color=#rgb>Привет<color=#cdf>как дела? в формат для консольки.
Lucky
Lucky
Щас делаю счётчик одинаковых элементов. Чтоб Грибы (7)
а не
Грибы
Грибы
Luсky
Михаил
пространства имён почти как в с++11
function tabcopy(t)
local n = {}
for k, v in pairs(t) do
n[k] = v
end
return n
end
function namespace(name)
local state = util.tabcopy(_G)
local existing = _G[name]
local closure = function()
local nspace = {}
for k, v in pairs(_G) do
if state[k] ~= v then
nspace[k] = v
_G[k] = state[k]
end
end
if existing then
tabcopy(nspace, existing)
end
_G[name] = nspace
end
_G[name] = closure
end
Михаил
опять баг нашел, не будут использоваться символы если они уже были до этого в пространстве
Snusmumriken
Lucky
Попа слипнется
Норм. Словарь переносов в читалке стырю. Пошукаю скриптов по интернетам.
Lucky
Или получится или не получится.
Lucky
Меня зовут Уук и я рукожоп.
Lucky
Положил на бок систему парочкой таблиц на два элемента и луажит.
Oleg
Lucky
В движок.
Lucky
Поченил инвентарь.
Lucky
Uni_X
Uni_X
А я одну вещь понял.
Uni_X
Работать со спаянным устройством мне не интересно, а клепать кучу всякого на макетке - очень. Огромное удовольствие получаешь, когда вот это на макетке, начинает работать
Lucky
0xSU
Сел видос по CS 2 глянуть, а там @Snusmumriken убили :(
Snusmumriken
Ну опять
WDMR
WDMR
Ну опять
Наверное Снус любит больше кс 1.5
0xSU
Что за видос, интересный?
Не оч (не люблю такое даже фоном), но можно глянуть что в кейсах выпадает
https://youtu.be/FxzeCQrdnP4?t=1300
WDMR
WDMR
Кейсы меня не интересуют совсем
WDMR
Snusmumriken
А у каэсочки всратый разброс пулек, и каждый надо зубрить
WDMR
WDMR
А сейчас так понастольгировать смотрю иногда)
WDMR
Тогда каэсочка задвинула по популярности Q3 и халфлайф десматч
WDMR
UT99
WDMR
Какой божественный саундтрек там
Snusmumriken
Snusmumriken
Вот буквально пару недель назад поднимал сервер unreal 2004 для приятелей-белорусов.
Uni_X
Хотите шутку?
Uni_X
Михаил
эм. оно ж не заземлит.. разве у вакуума есть емк......
ааааа понял))