просто бывает, берешь чью то наработку. Переписываешь с jass на lua. Перестает работать. Тысячу раз проверишь, и думаешь: "Че не так то?".
решил инициировать переменные, перестал работать код.
так работало, пока не заметил, что базу не инициирует
Color = { {},{} }                        
Setting = { {},{} }
решил добавить бд
Color = {{}} --{ {},{} }
Setting = {{}} --{ {},{} }  
                        
 --Gold Bounty
   Color[0][0] = 255
   Color[0][1] = 220
   Color[0][2] = 0
   Color[0][3] = 255
   Setting[0][0] = 0.0 -- Velocity 1
   Setting[0][1] = 0.03 -- Velocity 2
   Setting[0][2] = 2.0 -- Fadepoint
   Setting[0][3] = 3.0 -- Lifespan
   Setting[0][4] = -16.0 -- OffsetX
--Lumber Bounty
   Color[1][0] = 0
   Color[1][1] = 200
   Color[1][2] = 80
   Color[1][3] = 255
   Setting[1][0] = 0.0 -- Velocity 1
   Setting[1][1] = 0.03 -- Velocity 2
   Setting[1][2] = 2.0 -- Fadepoint
   Setting[1][3] = 3.0 -- Lifespan
   Setting[1][4] = -16.0 -- OffsetX
Короче, двумерные массивы не работает триггер, не исполняется код и пр =( без них все работает.

Далее. Общеизвестно, что нумерация индексов в Lua начинается с 1. А потому
Color = { {},{} }                        
Setting = { {},{} }
Color содержит таблицы в индексах 1 и 2, как и таблица Setting.
Более того, вопросы о массивах уже были. Первый и второй.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
13
Или так:
function newArray(dim_count, dim_size)
	local arr = {}
	for i = 1, dim_size do
		if (dim_count > 1) then
			arr[i] = newArray(dim_count - 1, dim_size)
		end
	end
    return arr
end

local a = newArray(2, 10)

a[1][1] = 5     -- OK
a[1][1][1] = 5  -- Error
a[12][12] = 5  -- Error

print(a[1][1])      -- a[1][1] == 5
21
-- тут синтаксическая ошибка
Color = { {},{},{} } -- > равнозначно Color = { {}=1,{}=2,{}=3 }

--
Color = { {},{},{} } -- > равнозначно следующему коду:

Сolor = { }
Color[1] = { }
Color[2] = { }
Color[3] = { }
27
вопрос: нужно ли удалять таблицу? если нужно, то это в корне меняет дело. Я еще думал тысячи таблиц плодить под свою систему.
ладно нужно
21
ScopteRectuS:
-- тут синтаксическая ошибка
Color = { {},{},{} } -- > равнозначно Color = { {}=1,{}=2,{}=3 }

--
Color = { {},{},{} } -- > равнозначно следующему коду:

Сolor = { }
Color[1] = { }
Color[2] = { }
Color[3] = { }
Двумерный массив нельзя просто создать и использовать как хеш-таблицу джазовую. Для каждой ячейки нужно создавать свою таблицу.
Создавать каждый индекс вручную муторно. Лично я делаю примерно так:
    my2dArray = { }

    setValue = function(parrentKey, childKey, value)
        if my2dArray[parrentKey] == nil then
            my2dArray[parrentKey] = { }
        end

        my2dArray[parrentKey][childKey] = value
    end
27
ScopteRectuS, спасибо за исправление. Пока что надо сделать/опробоваиь, потом буду думать.
21
Насколько я знаю, ничего удалять не нужно. Да и функции для удаления таблицы не существует. Таблица будет сама удалена сборщиком мусора, если на неё не будет активных ссылок. Но вот когда сборка мусора сработает - неизвестно. Сборку мусора можно запустить вручную через функцию collectgarbage()
27
а может ли таблица хранить несколько значении? просто вспомнил, что у lua return можно вернуть несколько значении. или это опять волшебство lua
28
ладно нужно
А таблицу никак не удалить. Она сама удалится, когда не будет содержать в себе нужные объекты.

а может ли таблица хранить несколько значении
Ну как бы да.
lua return можно вернуть несколько значении
Так-то возвращается таблица с возвращёнными элементами.
13
PT153, уверен, что под капотом множественный return всегда через таблицы?
Вроде все происходит без упаковки в таблицу в первом случае.
return a, b
return {a, b}

МрачныйВорон, Несколько значений по одному ключу? Можно, но либо упаковав их в таблицу (то есть на самом деле возвращает только 1 объект - таблицу), либо через метатаблицы, но это сложнее.
А для автоматического удаления неиспользуемых данных из таблиц нужно использовать метаметод __mode.
Много интересного и непонятного, по началу, по метатаблицам habr.com/ru/post/346892
28
Вроде все происходит без упаковки в таблицу в первом случае.
+
27
цикл while ... do используется в варкрафте?
while .. do

end
сначала я думал дело в конкретном коде. В итоге убрал все. принты не запускались, так и не запускаются. Пока не додумался об этой мысли.

короче я понял. внутрь while ... do условие выхода не прописывается. пишут while true do. типа условие запуска цикла? нужно break прописывать. в учебнике lua все не так.

Фарион: что то не так
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.