Totoro
-
Публикации
1 950 -
Зарегистрирован
-
Посещение
-
Победитель дней
289
Сообщения, опубликованные пользователем Totoro
-
-
Нет возможности менять ники динамически, прямо из программы, чтобы имитировать диалоги.
Придётся перезапускать постоянно - неудобно.
-
attempt to call field `match' (a nil value) вот такая проблема с этой функцией)
Не проверял этот код именно в OpenComputers. Но проблем вроде не должно быть. Может ты опечатался где-то?
Скинь скрин этого кода из игры, и скрин ошибки отдельно.
Я сейчас попробую тоже проверить.
-
...мне нужно сделать, что бы значения больше 1000 разбивались запятыми допусти 1510 стало 1,510 и тд , думаю понятно, как это можно сделать средствами lua ?...
Вот тут например предлагают вот такую симпатичную функцию юзать для этих целей:
function comma_value(n) -- credit http://richard.warburton.it local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$') return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right endЮзается так:
print(comma_value(9)) print(comma_value(999)) print(comma_value(1000)) print(comma_value('1333444.10')) print(comma_value('US$1333400')) print(comma_value('-$22333444.56')) print(comma_value('($22333444.56)')) print(comma_value('NEG $22333444.563'))Выведет это:
9 999 1,000 1,333,444.10 US$1,333,400 -$22,333,444.56 ($22,333,444.56) NEG $22,333,444.563
Для записи в файл просто замени print на file:write.
-
2
-
-
А, понятно.
Ну в таком случае тебе просто надо перезаписывать файл. Открывай его с режимом r, обрабатывай данные, закрывай и переоткрывай в режиме w. Файл перезапишется начистую.
-
В обычном Луа можно было бы использовать режим a+ - "чтение плюс дозапись".
Например так:
-- открываем файлик в режиме чтения-добавления -- если файлика не существовало в момент открытия - он будет создан -- если он существовал - будет открыт на дозапись local file = io.open("hotto-dogu.txt", "a+") file:write("i like hotto dogu\neat eat eat hotto dogu\n") -- закрываем файлик -- (это правило хорошего тона, как минимум) file:close()Запускаем два раза, и в файле hotto-dogu.txt появляется четыре строки:
i like hotto dogu eat eat eat hotto dogu i like hotto dogu eat eat eat hotto dogu
Однако в OpenComputers всё чуть сложнее, потому что режимы с плюсиками не работают. OpenComputers поддерживает только режимы r, w и a.
То есть нам придётся сначала открыть файл на чтение, прочесть что надо, закрыть, а потом уже открывать на дозапись.
Например так:
local comboCounter = 0 -- открываем на чтение и вершим свои тёмные дела local file = io.open("hotto-dogu.txt", "r") if file ~= null then for line in file:lines() do comboCounter = comboCounter + 1 end file:close() end -- а теперь открываем на дозапись, и дозаписываем какую-нибуь хренотень file = io.open("hotto-dogu.txt", "a") if comboCounter == 0 then file:write("hotto dogu\n") else file:write("hotto dogu [x" .. comboCounter + 1 .. "]\n") end file:close()Запустим программу раз пять, и вуаля!
hotto dogu hotto dogu [x2] hotto dogu [x3] hotto dogu [x4] hotto dogu [x5]
-
2
-
-
Загадочный Луа.
Кстати, по теме. В старых версиях Lua существовала своя альтернатива хеш-оператору:
print(table.getn{10,2,4})Как раз в Lua 5.0 должна работать по идее.
-
1
-
-
не совсемЧто за дьявольская магия? =)
Написано же - "любое значение nil по сути означает конец массива" но твой пример кода этому противоречит.
-
На сколько я помню в луа таблицах есть такой прикол
{1, 2, 3, nil, nil, nil, 7} покажет размер 3, так что выше описанные примеры могут не работать, есть вариант использовать через for in pairs()
У меня вроде и считает до первой "дырки". Максимально аутентичная функция. =)
Насчёт определить функцию в виде символа. В Луа это делается через метатаблицы. Но загвоздка в том, что переопределить можно поведение только тех операторов, которые знает язык. А оператор решётки ввели в Lua 5.2+.
Так что придётся довольствоваться обычной функцией size.
-
Можно набросать свою.
Если надо именно по индексам считать, как делает стандартная функция:
local a = {"a", "b", "c"} function size(t) local index = 0 while true do if t[index+1] then index = index + 1 else return index end end end print(size(a))А для длины строк можно string.len(str) юзать.
(Для русских строк - стырить функцию из модуля unicode =)).
-
1
-
-
Как раз для таких прог, которые зашиваются в EEPROM мне кажется нет особого смысла сжимать сильнее чем 4 KiB.
Если конечно не предполагается встаивать такой код в другую EEPROM прошивку.
-
а что это за сайт с кодировкой Win-1251 до сих пор? Такие бывают еще?VK, к примеру, до сих пор юзает charset=windows-1251.
Маньяки, сэр.
-
спс, "просо" надо поправить в файликах перевода.
а с тегами да, какая-то хренька, давно сам заметил, что тег иногда генерируется еще до начала конца его ввода. Просто вставляй слово-тег копипастом откуда-то.
Я из-за этой баги пишу все теги на английском. =)
-
имхо обновление языковых пакетов с онлайн репозитория - самое правильное решение.
Да, в плане использования - это самая гибкая и удобная схема.
Минус только один - будет немного хлопотно обновлять по N пакетов каждый раз, когда изменится интерфейс программы в новой версии.
-
Предлагаю карту не пилить, это довольно-таки хлопотно, а сразу приступить к рисованию медальки за первое место, и как только она будет готова, незамедлительно ее выдать Тоторо, как победителю ивента, а сам ивент занести в журнал ивентов, как проведенный

Весь фан убиваешь :P
-
Не надо путать компонент computer и библиотеку Computer API.
Компонент computer - это по сути компонент корпуса компьютера. То есть у корпуса есть свои какие-то плюшки, и посколько компьютер работает в корпусе, он имеет к нип доступ. Например - включить, выключить компьютер, или попищать спикером.
Это именно то, что ты получаешь в виде прокси.
Библиотека Computer API - это системная библиотека, которая доступна всегда и везде. Она предоставляет другой набор функций - для работы с виртуальной машиной Lua. Например - получить объём свободной памяти, адрес временной файловой системы и т.п.
-
2
-
-
Раз курсор мигает относительно уловленных событий, то нельзя ли сделать мигание относительно времени работы компьютера?
computer.uptime()
Сделать-то можно как угодно, но зачем? =)
Это не заставит его мигать реже в случае операционки RccHD.
-
Есть у твоей системы какое-то официальное название?
А то работа идёт бурными темпами, а тема всё ещё называется "пишу новую OS". =) -
Стоит ли вводить ограничение на 10 окон на одном рабочем столе?
А это имеет смысл с точки зрения кода?
Если это позволит сделать какую-то полезную оптимизацию - конечно вводи. Столько окон никому нафиг надо будет.
Если чисто для косметики, то наверное не стоит. Оставим простор для деятельности всяким психам.
-
1
-
-
Как ты сделал смену иконки курсора при ресайзе?
Там иконка курсора не меняется сама. Просто в том месте, где ты тянешь мышью отрисовывается двусторонняя стрелочка.
-
Надо их светопылью дозаряжать, чтобы светили на максимальной яркости.
-
2
-
-
расход краски и хмелиомендрия увеличится, затраты EUНу это для администрации же не проблема.

Берём просто, и накладываем пару новых налогов на всех игроков сервера. Тут то хамелиум и потечёт рекой. А кто будет роптать - отключим газ.
-
Как определяются правильные ID?
-
Это у них фича такая у дедлайнов. Приходить слишком быстро. =)
-
1
-
-
Если пакет зазипать, то места он будет занимать крайне мало, sfx - тоже не плохо, но в основном пользуют загрузку нужных кишок при установке программы - никаких лишних телодвижений со стороны разработчика.Т.е. предлагаешь разместить lang-файлы в отдельных пакетах, и скачивать их программой, после того, как пользователь выберет язык?

Гриферский оффтоп
в Флудилка
Опубликовано:
Классика же. Вечно из-за одного идиота страдают все.
Сколько прикольных фишек можно было бы юзать, если бы не эти самые идиоты.