Snusmumriken
Ты выведи мне то что скажет serpent, иначе я тебе не верю. Это не сложно, + 1 файл и две строки.
Alxius
Alxius
ранее такой способ обращения с данными из таблиц прекрасно работал: objs[((zzx+1))][2],
Snusmumriken
Ну и вот. Добавь в меню конкретный выделенный пункт меню menu.current = 1 Отрисовка - for i, v in ipairs(menu) do love.graphics.setColor(155, 155, 155) if i == menu.current then love.graphics.setColor(255, 255, 255) end love.graphics.print(v[1]..' '..v[3], i * 30, 20) -- ну типа пишем пункт меню love.graphics.draw(v[4], i * 30, 120) -- тут картинка, надеюсь end На нажатия клавиш - function love.keypressed(key) if key == 'up' then menu.current = menu.current - 1 end if key == 'down' then menu.current = menu.current + 1 end if menu.current > #menu then menu.current = 1 end if menu.current < 0 then menu.current = #menu end if key == 'return' then -- ПРЯМ ПИХАЙ ПЯТЫМ ПУНКТОМ ФУНКЦИЮ -- КОТОРАЯ ДОЛЖНА ЧТО-ТО СДЕЛАТЬ menu[menu.current][5]() end
Alxius
ох блин надо было только чуток этот пункт подправить.. всё целиком написал, хотя оно всё уже сделано и рабоатет. я просто решил захардкоженные принты вывести в табличку и всего то
Snusmumriken
Но структура изначально кошмарная, извини. Ты знаешь зачем нужны связки ключей-значений?
Alxius
спасибо, попробую внедрить таки $$ из ПХП. не хочу всё переделывать
Snusmumriken
Ммм. Посыпется или будет медленным. Это тебе не DOM.
Alxius
для главного меню скорость не имеет значения.
Alxius
оно рендерится только если рендерер игры отключен полностью
Snusmumriken
Для главного меню, имеет значение то, что ты можешь легко добавлять и редактировать пункты. Пока ты не научишься просто писать на луа элементарные вещи, никто тебе не поможет ибо не будет тебя понимать.
Snusmumriken
Учись делать так чтобы не путаться. Знаешь сколько времени я потратил чтобы научиться не очень запутанно писать?
Alxius
мне главное чтобы я свой код понимал, свой код я понимаю
Alxius
откуда я могу это знать. наверное немного
Alxius
всё таки решение вопроса я так и не понял - ну вот всё написано (правда по моему) меню работает, А вот как в picture= имя переменной которая (имя) содержится в keyword дать
Alxius
технически я могу конечно new.image вызывать прямо из вывода меню, но будет по 100 обращений в секунду к картинке в этом случае, т.к это не love.load
Alxius
во ! !! то что надо! value = _G[varname]
Snusmumriken
Да, это стрёмный вариант, но ладно, хорошо что мне не надо это поддерживать.
Roman
таки здравствуйте. а в ngx openresty lua нет инструмента для парсинга URL (со схемой, портом, хостом, uri, параметрами)?
Roman
только самому или использовать стороннее решение?
mva
какого URL?
mva
из рандомной строки или текущего?
Roman
не из текущей
Anonymous
а в чём логика?
Anonymous
сторонние офк тогда(:
Roman
взять строку (из настроек) в которой может быть url достаточно произвольной формы. может быть со схемой. а может и не быть. может быть указан порт, а может и не быть. приятно было бы: local url = ngx.url('http://name@example.com:8000/path') local new_url = ngx.url({scheme='https', host='example2.com', uri=url.uri}) ngx.redirect(tostring(new_url))
Roman
ну тут пример абстрактный. но суть такова, что если не указана в исходной строке scheme, то подменить её просто и понятно, а не разворачивая всё в 15 условий
Roman
но это так, хотелка. можно и самому поюзать сторонее. просто удивился, что при всём богатстве средств нет просто разбора и сбора url
vvzvlad
Не могу найти функцию расчета CRC16-ANSI на чистом луа. Нашел много других, но не знаю, как сделать из них именно этот вариант расчета. CRC16-CCITT: https://github.com/AIE-Guild/GreenWall/blob/master/Lib/CRC16-CCITT.lua CRC-16/MCRF4XX: https://github.com/battlemesh/battlemesh-packages/blob/master/packages/wbm-testbed/files/usr/lib/lua/crc16.lua
B
это
B
есть у кого ссылки или советы по созданию приложений?
B
тип каких то шаблонов просто щас чет так смотрю, хочу проектик переписать и что то голову ломаю как его построить есть некие основные зависимости от которых щас пытаюсь отталкиваться при построении проекта, но чем дальше лезешь тем меньше нравиться и хочеться как то вечно по другому зделать
Elias
Почитай про патерны проектирования. Можешь просто поискать основные где-нибудь. Strategy, Command, Bridge, Adapter, Facade etc.-etc. Из книг почитать можно, например, "Head First Design Patterns". Лично мне не нравится формат книг этой серии, но там есть много полезной информации. "Game Programming Patterns" - крутая книга, даже если не будешь делать игры, т.к. многие принципы применимы не только в геймдеве, книга написана просто отлично. Ещё "Agile Software Development, Principles, Patterns, and Practices" довольно неплоха, много рассказывается про практики дизайна, которые делают код легко изменяемым и расширяемым. Классикой паттернов считается книга от "Gang of Four", но она уже довольно сильно устарела, хотя быстро на неё взглянуть стоит, т.к. там есть неплохие идеи.
Tverd
https://tproger.ru/translations/design-patterns-simple-words-1/
Tverd
http://live13.livejournal.com/462582.html
Snusmumriken
Котлета! Ура!
Anonymous
OVH, живи!
В природе существует линтер для Lua, которому можно делать комментарии-подсказки, касающиеся типов аргументов функций? Нечто вроде Typed Lua, но чтобы типы можно было указывать в комментариях.
Alxius
МОжет кто подсказать? LUA как удалить из строки пути ненужную папку? Я единственное что придумал за 30 часов - взять разбить как таблицу по / а потом собрать ее без 2 последних папок
mva
1) Lua, а не LUA. 2) "папок" в строке нет. Это называется "подстрока". 3) довольно правильный, на самом деле, способ.
mva
по крайней мере, пока тебе не надо гонять это на хайлоде (а я уверен что нет)
Alxius
1) можно lUA если капс залип. 2) ну вы поняли о чём я) 3) не ожидал. просто я думал это по другому решить но если и так можно то сделаю
mva
ну, более кунг-фу вей, возможно, был бы через gsub и передачу ему функции
mva
но если ты уже сделал через разбивку в таблицу, и сборку обратно, как я уже сказал, до тех пор, пока не идёт речь про хайлод, идея - норм
Alxius
это будет разово вызывающаяся функция самим игроком, причем думаю не чаще чем раз в 15 минут
Alxius
т.к. игра оффлайн думаю без разницы
Elias
В природе существует линтер для Lua, которому можно делать комментарии-подсказки, касающиеся типов аргументов функций? Нечто вроде Typed Lua, но чтобы типы можно было указывать в комментариях.
Вроде нет Я как-то долго искал, но ничего не нашел С Typed Lua вообще беда произошла. Автор вдруг решил сделать свой язык, и все, это больше не Lua :(
Тоже видел. Сижу, ковыряю Typed Lua, хочу заставить понимать комментарии.
Elias
У меня что-то прям пригорело от такого развития событий Уже и так много языков, которые как Lua, но не Lua :(
Snusmumriken
МОжет кто подсказать? LUA как удалить из строки пути ненужную папку? Я единственное что придумал за 30 часов - взять разбить как таблицу по / а потом собрать ее без 2 последних папок
Есть автоматические составители документации, которые парсят файл на функции/методы, и то что ты написал в комментариях - превращается в html-документацию, например.
Snusmumriken
У меня что-то прям пригорело от такого развития событий Уже и так много языков, которые как Lua, но не Lua :(
Ты на JS глянь ))) На самом деле, все "языки которые как луа но не луа" - заменяются metalua.
Elias
Да JS вообще ад какой-то. Уже одной экосистемы Node.js хватит
Snusmumriken
Не благодари. str = 'c:/temp/folder/file.lua.exe' disk = str:match'%w:/' -- 'c:/' diskletter = str:match'(%w):' -- 'c' folderpath = str:match'.*/' -- 'c:/temp/folder/' parentfoldername = str:match'.*/(.*)/' -- 'folder' filefullname = str:match'.*/(.*)' -- 'file.lua.exe' filename = str:match'.*/(.-)%.' -- 'file' fileext = str:match'.*/.-%.(.*)' -- 'lua.exe' filelastext = str:match'.*/.*%.(.*)' -- 'exe' Домашнее задание: разобрать что тут происходит.
Columbus
не помню кто, но кто-то тут делал что-то с JSON при помощи json.hpp
Columbus
я тоже прикрутила сериализацию некоторых модулей на JSON, но не могу понять в чем его профит
Columbus
размер - нет, на json весит больше, чем на хml
Columbus
да и если пошло дело на размер, то свой бинарный сериализатор будет меньше весить
Columbus
в несколько, если не десятков раз
mva
на самом деле, json просто напросто легче парсить
mva
а для xml валидный на 100% парсер сделать невзможно
mva
всегда будут кейсы фейла
mva
там только DOM, только хардкор
mva
ему нужно было string.gsub('[/\\]([^/\\]*)',function(...) for <...> in {...} do <...> end)
mva
но т.к. он уже сделал через таблицы, то и так сойдёт
mva
Elias
не помню кто, но кто-то тут делал что-то с JSON при помощи json.hpp
Думаю, это был я. Да, профит JSON в читаемости, маленьком размере и минимализме грамматики. И эта простота приводит к безумной скорости, с которой некоторые парсеры могут его обрабатывать.
Columbus
но я сделала и для xml тоже функции сериализации\десериализации. вернее xml у меня был изначально, но я подумала, что json мб лучше, хотя плюсы несомненно есть. JSON поддерживает массивы, у json.hpp очень, ОЧЕНЬ удобный интерфейс, да и формат ничего так
Elias
В XML тэги по два раза повторяются, это увеличивает размер и делает его написание вручную чуть сложнее + В xml есть очень много способов сделать одну и ту же вещь, а в JSON таких вещей не встречается Но вообще я вижу, что xml все ещё много где используется, и это вполне разумно и логично, так что против xml я ничего не имею. Порой даже завидую тому, как его можно делать более строгим и типизированным с помощью всяких schema, у JSON с этим все не так хорошо.
Elias
https://www.json.org/index.html Вот здесь прекрасно видно, насколько минималистичен JSON :)
Columbus
но даже с json.hpp я умудряюсь говнокодить
mva
это в крови :)
Тоже видел. Сижу, ковыряю Typed Lua, хочу заставить понимать комментарии.
Хо-хо. Правда, пока не понятно, получится ли это сделать юзабельным.
Elias
Elias
Я сделал вот такой биндинг для json.hpp
Elias
Довольно удобно И можно итерировать по объектам и массивам с помощью pairs
Elias
Потом код на github кину, как немного отполирую :)
Danil
Как лучше парсить JSON?
Yuriy
программно)) А если серъезно то Lua CJSON