просто бывает, берешь чью то наработку. Переписываешь с 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.
Более того, вопросы о массивах уже были. Первый и второй.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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 все не так.

Фарион: что то не так
Загруженные файлы
28
Ну так цикл всё верно делает. Пока we > 5 делать то-то. Но так как we = 0 < 5, то цикл не выполняется.
13
МрачныйВорон,
цикл с предусловием, тело цикла выполняется до тех пор пока условие == true
например можно переделать обычных for в цикл while
local a = {}
for i = 1, 10 do
	a[i] = i
end

-- Равнозначно
local a = {}
local i = 1
while (i <= 10) do
	a[i] = i
	i = i + 1
end
28
Правильный вариант треш.
local we = 0
while we < 5 do
    print('points' .. we)
    we = we + 1
end
А вообще, тут for нужен.
for we = 0, 4 do
    print('points' .. we)
end
27
PT153, Nelloy, благодаря вашим подсказкам я понял. выполняется, пока условие истинно. А не наоборот.

А вообще, тут for нужен.
for не подходил потому, что у меня было другое условие. я просто это так вставил, чтобы посмотреть что оно делает. Проверить из за чего не работает
типа такого. как всегда не читаю, методом тыка
while ((RAbsBJ(x - Bx) < 0.001)and(RAbsBJ(y - By) < 0.001)and (CountVertexRegion[ns] > 1)) or exit do
понятно, что для простого было так правильно. Но у меня по логике цикл выполняется до сих пор пока соблюдается условие
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.