function CountFreePointsInArea(rt,x,y,n)
local a = 0
local r = 4.00
local angle
--local px = {}
--local py = {}
--1) берем 4 точки от точки x,y и считаем кол-во свободных точек
--****************
-- А Здесь ты складываешь y + r, но игрик у тебя равен нил, потому что ты его не передал!!!
--****************
if IsPointInArea_3(rt,x-r,y+r,n) then
px[a] = x-r
py[a] = y+r
a = a + 1
end
Насколько я знаю, ничего удалять не нужно. Да и функции для удаления таблицы не существует. Таблица будет сама удалена сборщиком мусора, если на неё не будет активных ссылок. Но вот когда сборка мусора сработает - неизвестно. Сборку мусора можно запустить вручную через функцию collectgarbage()
Двумерный массив нельзя просто создать и использовать как хеш-таблицу джазовую. Для каждой ячейки нужно создавать свою таблицу.
Создавать каждый индекс вручную муторно. Лично я делаю примерно так:
my2dArray = { }
setValue = function(parrentKey, childKey, value)
if my2dArray[parrentKey] == nil then
my2dArray[parrentKey] = { }
end
my2dArray[parrentKey][childKey] = value
end
Bergi_Bear, а куда Назар пропал? Будет ли обновление chepack'a? Хотелось бы обнову, чтобы весь код сохранялся не в нестандартном коде, а в папках и кастом скриптах. Так сохранялась бы иерархия даже в редакторе триггеров.
rsfghd, это нужно будет рассчитывать в зависимости от расстояния. Например, задаёте изначальную скорость и умножаете на процент пройденного пути. В итоге, когда снаряд долетит до конца пути - получит все 100 % ускорения. Или наоборот, тогда снаряд в конце будет иметь нулевое ускорение.
Ну или придумать свою формулу. Всё зависит от конкретного случая.
Сам недавно делал способность с проджектайлом. Можно сделать без векторов и всяких косинусов и синусов. Код на Lua и Reforged, но тут главное арифметика, а не функции:
-- arrowX/Y/Z - текущее положение снаряда
-- arrowTargetX/Y/Z - куда должен лететь снаряд
-- 32.8125 - скорость снаряда (расстояное, которое проходит снаряд за один тик таймера)
local dx = arrowTargetX - arrowX
local dy = arrowTargetY - arrowY
local dz = arrowTargetZ - arrowZ
local dist = math.sqrt( ( dx ^ 2 ) + ( dy ^ 2 ) + ( dz ^ 2 ) )
arrowX = arrowX + 32.8125 * ( dx / dist )
arrowY = arrowY + 32.8125 * ( dy / dist )
arrowZ = arrowZ + 32.8125 * ( dz / dist )
BlzSetSpecialEffectX( arrow, arrowX )
BlzSetSpecialEffectY( arrow, arrowY )
BlzSetSpecialEffectZ( arrow, arrowZ )
LainMikoroso, все эти ваши столкновения, разные скорости и т. д. делаются через векторы, которые считаются обычной арифметикой. Нагрузка от таких операций минимальна. Как берги и сказал, всё зависит от моделей, которые прорисовываются на экране.
LainMikoroso, от новых глобалок не убудет. Да и читабельность кода значительно выше, если везде используются свои переменные. А когда одна и та же глобалка tempUnit используется везде где можно, то в таком коде чёрт ногу сломает. И какой тогда смысл от компактности?
LainMikoroso, потоки выполняются последовательно. Ничего у вас там не сломается, если всё делать правильно. Да и использовать одни и те же глобалки везде и всюду - не лучшая затея.
LainMikoroso, нет ничего ужасного в том, что создаётся новый поток. Если хотите всё делать так, как изначально всё задумывалось близзардами, то делаете через boolexpr и ForGroup. Не хотите заморачиваться - перебираете всех через цикл.
Для JASS плюс первого метода в том, что создаётся новый поток, и, если действий очень много, то такой метод более предпочтителен. Но все данные из локалок придётся переносить через глобальные переменные.
Второй метод хорош тем, что не нужно переносить локалки в глобалки, но опять же, если действий очень много, то поток может оборваться.
Чтобы самому делать иконки для Classic-графики (64х64px) рекомендую использовать программу Button Manager.
Для Reforged-графики (256х256px) еще никто не создал программу, поэтому придётся делать вручную. Здесь можно найти готовые рамки.
Отредактирован scopterectus
» WarCraft 3 / lua: ошибка
» WarCraft 3 / lua: ошибка
rt = Bx1;
x = By1;
y = nil;
n = nil.
Отредактирован scopterectus
» WarCraft 3 / lua: ошибка
» WarCraft 3 / Опрос варкрафтеров XGM
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
» WarCraft 3 / в lua не работают AI нативки
» WarCraft 3 / в lua не работают AI нативки
» WarCraft 3 / Как работать с картой в виде папки?
» WarCraft 3 / Как реализовать систему типов юнитов через пассивку
Отредактирован scopterectus
» WarCraft 3 / Как выделить значение из целочисленной массива?
» WarCraft 3 / Русификатор редактора карт Warcraft 3 Reforged
» WarCraft 3 / Русификатор редактора карт Warcraft 3 Reforged
» WarCraft 3 / TESH для Reforged
» WarCraft 3 / Реалистичный снаряд
Отредактирован scopterectus
» WarCraft 3 / Реалистичный снаряд
» WarCraft 3 / Что лучше использовать?
» WarCraft 3 / Что лучше использовать?
» WarCraft 3 / Что лучше использовать?
» WarCraft 3 / Что лучше использовать?
Отредактирован scopterectus
» WarCraft 3 / Что лучше использовать?
Второй метод хорош тем, что не нужно переносить локалки в глобалки, но опять же, если действий очень много, то поток может оборваться.
» WarCraft 3 / Что лучше использовать?
Отредактирован scopterectus
» WarCraft 3 / Не могу найти папку с картами в WarCraft 3 Reforged
Отредактирован scopterectus
» WarCraft 3 / Иконка атаки, защиты.
Для Reforged-графики (256х256px) еще никто не создал программу, поэтому придётся делать вручную. Здесь можно найти готовые рамки.