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

Totoro

Гуру
  • Публикации

    1 950
  • Зарегистрирован

  • Посещение

  • Победитель дней

    289

Сообщения, опубликованные пользователем Totoro


  1.  

     

    А дальше возможны два сценария, один веселее другого: в лучшем случае пакость в виде бана вернётся к владельцу пакостного чат-бокса, а в худшем – все игроки потеряют возможность использовать computronics на этом сервере, и они-то потом будут долго "благодарить" пакостника за такой подарок.

     

    Классика же. Вечно из-за одного идиота страдают все.

    Сколько прикольных фишек можно было бы юзать, если бы не эти самые идиоты.

    • Нравится 1

  2. attempt to call field `match' (a nil value) вот такая проблема с этой функцией)

     

    Не проверял этот код именно в OpenComputers. Но проблем вроде не должно быть. Может ты опечатался где-то?

    Скинь скрин этого кода из игры, и скрин ошибки отдельно.

    Я сейчас попробую тоже проверить.


  3. ...мне нужно сделать, что бы значения больше 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

  4. В обычном Луа можно было бы использовать режим 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

  5. На сколько я помню в луа таблицах есть такой прикол

    {1, 2, 3, nil, nil, nil, 7} покажет размер 3, так что выше описанные примеры могут не работать, есть вариант использовать через for in pairs()

     

    У меня вроде и считает до первой "дырки". Максимально аутентичная функция. =)

     

     

    Насчёт определить функцию в виде символа. В Луа это делается через метатаблицы. Но загвоздка в том, что переопределить можно поведение только тех операторов, которые знает язык. А оператор решётки ввели в Lua 5.2+.

    Так что придётся довольствоваться обычной функцией size.


  6. Можно набросать свою.

    Если надо именно по индексам считать, как делает стандартная функция:

    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

  7. спс, "просо" надо поправить в файликах перевода.

     

    а с тегами да, какая-то хренька, давно сам заметил, что тег иногда генерируется еще до начала конца его ввода. Просто вставляй слово-тег копипастом откуда-то.

     

    Я из-за этой баги пишу все теги на английском. =)


  8. имхо обновление языковых пакетов с онлайн репозитория - самое правильное решение.

     

    Да, в плане использования - это самая гибкая и удобная схема.

    Минус только один - будет немного хлопотно обновлять по N пакетов каждый раз, когда изменится интерфейс программы в новой версии.


  9. Предлагаю карту не пилить, это довольно-таки хлопотно, а сразу приступить к рисованию медальки за первое место, и как только она будет готова, незамедлительно ее выдать Тоторо, как победителю ивента, а сам ивент занести в журнал ивентов, как проведенный :)

     

    Весь фан убиваешь :P


  10. Не надо путать компонент computer и библиотеку Computer API.

     

    Компонент computer  - это по сути компонент корпуса компьютера. То есть у корпуса есть свои какие-то плюшки, и посколько компьютер работает в корпусе, он имеет к нип доступ. Например - включить, выключить компьютер, или попищать спикером.

    Это именно то, что ты получаешь в виде прокси.

     

    Библиотека Computer API - это системная библиотека, которая доступна всегда и везде. Она предоставляет другой набор функций - для работы с виртуальной машиной Lua. Например - получить объём свободной памяти, адрес временной файловой системы и т.п.
     

    • Нравится 2

  11.  

    Раз курсор мигает относительно уловленных событий, то нельзя ли сделать мигание относительно времени работы компьютера?

     

    computer.uptime()
    

     

    Сделать-то можно как угодно, но зачем? =)

    Это не заставит его мигать реже в случае операционки RccHD.


  12. Стоит ли вводить ограничение на 10 окон на одном рабочем столе?

     

    А это имеет смысл с точки зрения кода?

    Если это позволит сделать какую-то полезную оптимизацию - конечно вводи. Столько окон никому нафиг надо будет.

    Если чисто для косметики, то наверное не стоит. Оставим простор для деятельности всяким психам.

    • Нравится 1

  13. Как ты сделал смену иконки курсора при ресайзе?

     

    Там иконка курсора не меняется сама. Просто в том месте, где ты тянешь мышью отрисовывается двусторонняя стрелочка.


  14.  

     

    расход краски и хмелиомендрия увеличится, затраты EU
     

     

    Ну это для администрации же не проблема.  :D

    Берём просто, и накладываем пару новых налогов на всех игроков сервера. Тут то хамелиум и потечёт рекой. А кто будет роптать - отключим газ.


  15.  

     

    Если пакет зазипать, то места он будет занимать крайне мало, sfx - тоже не плохо, но в основном пользуют загрузку нужных кишок при установке программы - никаких лишних телодвижений со стороны разработчика.

     

    Т.е.  предлагаешь разместить lang-файлы в отдельных пакетах, и скачивать их программой, после того, как пользователь выберет язык?

×
×
  • Создать...