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

FADRI

Пользователи
  • Публикации

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

  • Посещение

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

    1

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


  1. Сделал скрипт анимации в отдельном файле (библиотеку), сделал чтобы она воспроизводилась раз в какое-то время.

    event.timer(15, animate.Anim(), math.huge)

    Запускаю скрипт - выполняется корректно 1 раз анимация (сразу, без времени), а затем выдаёт ошибку bad argument #2 (function expected, got nil). Сделать через os.sleep(), как я понимаю, нельзя, так как одновременно должны работать две программы (главная (другая, не эта) и программа анимации (эта), сделаны через библиотеку thread), а os.sleep() останавливает всю систему на указанное время (опять же как я понял).
    Так в чём же проблема? Или может посоветуете другое решение.


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

    • Нравится 1
    • Одобряю 1

  3. Есть таблица с числами, пытаюсь в функции сделать отзеркаливание таблицы. Пытался и просто к предыдущей таблице дописывать нужное, и в новую таблицу вставлять, но в обоих случаях не хочет работать. Программа будто просто не видит значения в изначальной таблице или не может создать новые таблицы внутри таблицы.
    Или может надо сделать ещё одну таблицу в переборе nLine, куда записать данные при переборе nColumn, а затем её записать в новую таблицу под номером nLine?

    function Merging(img, horizontal, vertical)
    
      local newImage = {{}}
      for nLine = 1, #img do
        for nColumn = 1, #img[nLine] do
          newImage[nLine][nColumn] = img[nLine][nColumn]	-- Тут ошибка!
        end
      end
      if(horizontal == true) then
        local newLine = #img + 1
        for nLine = #img, 1 do
          for nColumn = 1, #img[nLine] do
            newImage[newLine][nColumn] = img[nLine][nColumn]
          end
          newLine = newLine + 1
        end
      end
      if(vertical == true) then
        for nLine = 1, #img do
          local newColumn = #img[nLine] + 1
          for nColumn = #img[nLine], 1 do
            newImage[nLine][newColumn] = img[nLine][nColumn]
            newColumn = newColumn + 1
          end
        end
      end
    
    
      return newImage
    end

     


  4. 28 минут назад, FADRI сказал:

    То есть в конце нужно написать не return ai_vers, ai_name_auth_users, admins, а просто return data?

    Я сделал так, перезагрузил пк и снова запустил main.lua, но получил эту же ошибку (всё та же строчка).

     

    Или это нужно написать в самом конце библиотеки (после функции)? Если так, то выдаёт ошибку в main.lua на другой строчке, где я пытаюсь применить одно из переданных значений (bad argument #1 (string expected, got nil))

    А, я понял в чём проблема - просто выводил не разделённую строчку и пытался использовать переменную как table, а там nil


  5. 20 минут назад, ProgramCrafter сказал:

    В конец библиотеки надо return data.

    Потом стоит перезагрузить компьютер (или выполнить в интерпретаторе lua package.loaded['data'] = nil), чтобы старая библиотека была удалена из кэша.

    То есть в конце нужно написать не return ai_vers, ai_name_auth_users, admins, а просто return data?

    Я сделал так, перезагрузил пк и снова запустил main.lua, но получил эту же ошибку (всё та же строчка).

     

    Или это нужно написать в самом конце библиотеки (после функции)? Если так, то выдаёт ошибку в main.lua на другой строчке, где я пытаюсь применить одно из переданных значений (bad argument #1 (string expected, got nil))


  6. Пишу программу, где нужно считать текст из .txt файла для использования. Для считывания текста специально написал библиотеку (не кидайте в меня тапками, если в ней что-то неправильно сделал, ибо в них не шарю), но при её вызове из главного файла выдаёт ошибку: attempt to index local 'data' (a boolean value). Саму библиотеку проверил - с ней проблем нет (по крайней мере все нужные переменные на вывод приводятся к нужному формату.

     

    -- Главный файл
    
    local data = require("data")  -- Библиотека данных
    local ai_vers, ai_name, auth_users, admins = data.Get()  -- Получение данных из библиотеки даты
    -- Библиотека
    
    local data = {}
    
    function data.Get()
        local ai_vers
        local ai_name = {}
        local auth_users = {}
        local admins = {}
    
    
        local file, err = io.open("config.txt", "r") -- Открываем файл
        if file then
            config = file:read("*a")  -- Читаем весь файл
            config = string.gsub(config, "%s+", "") -- Удаляем все пробелы из строки
        else
            print("Error opening file: " .. err)
        end
        file:close()  -- Закрываем файл
    
        -- Значения из файла
        local t = {}  -- Массив всех нужных данных из файла
    
        local i = 0
        for s in string.gmatch(config, "[^;]+") do
            local w = {}
            local k = 0
            for v in string.gmatch(s, "[^:]+") do
                w[k] = v
                k = k+1
            end
    
            if(w[1] == nil) then
                w[1] = "пусто"
            end
    
            t[i] = w[1]
            i = i + 1
        end
    
        -- Разбиение строки имени ИИ
        t[1] = t[1] .. ",компьютер,комп"
        local nai = {}   -- Массив всех имён из ИИ из файла
        local i = 0
        for s in string.gmatch(t[1], "[^,]+") do
            nai[i] = s
            i = i+1
        end
        -- Разбиение строки Авторизованных пользователей
        local au = {}   -- Массив всех авторизованных пользователей из файла
        local i = 0
        for s in string.gmatch(t[2], "[^,]+") do
            au[i] = s
            i = i+1
        end
        -- Разбиение строки Администраторов
        local ad = {}   -- Массив всех администраторов из файла
        local i = 0
        for s in string.gmatch(t[3], "[^,]+") do
            ad[i] = s
            i = i+1
        end
    
        -- Данные
        ai_vers = string.lower(t[0])
        ai_name = string.lower(t[1])
        auth_users = t[2]
        admins = t[3]
    
    
        return ai_vers, ai_name, auth_users, admins
    end

     

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