Bergi_Bear, а как этот крит получить? обычно же мышь нельзя за пределы экрана затащить. возможно стоило было повторить ошибку, когда помнишь фреймы-потомки не могли за пределы экрана 4:3 уходить. Мб найти такого предка 8:6, и привязать?
надо будет потом потестить
и что делают
BlzGetLocalClientWidth
BlzGetLocalClientHeight
это не размеры экрана?
ну че? система хорошая? fps-просадки устранили? пока выглядит даже интересно. даже на хайве нет)) но находил всякие интересные системы управления мышью камерой как Wow
ScopteRectuS, ты прав, пошел исправлять. просто я не все дописал. просто там было 2 аргумента на jass, с переходом на lua стало 4. и забываю где ставить. 2-3 назад искал полчаса где end не дописал, а оказывается там наоборот - лишнюю end написал
ScopteRectuS, так дебаг показывает перед как использовать функцию. Что с переменные норм, координаты есть, а потом бац.. И почему то эта функция перестает работать.
Я понял, но че делать?
print("проверка: "..Ax1..","..Ay1 )
Ai = CountFreePointsInArea(rt,Ax1,Ay1,ns )
ScopteRectuS, в циклах? так она и должна. Проверяют может ли точка образовать еше диагонали с другими точками, если может, то оставляем. Если диагоналей нет, удаляем из структуры-2 и все. Проверяют с каждым тактом, взял точку-подобрал пару, диагоналей стало меньше. Диагоналей станет меньше. Взял еще пару нашел, -1 диагонелей. И так чекаем, пока совсем не убудет.
ScopteRectuS, я знаю. указывают на y в 610 строке, что она там почему то не существует
код
--принадлежит ли точка Region[n]
--@param real x
--@param real y
--@param integer k
---@return boolean
function IsPointInArea(x,y,k)
return (IsPointInRegion(Region[k], x, y))
end
--лежит ли точка в незанятом ActiveArea и внутри игровой карты
--помогает искать первую точку при создании региона
--а также при расширении ищет незанятую никем землю/и не упирается в границы карты
--@param rect rt <-ActiveArea
--@param real x
--@param real y
---@return boolean
function IsPointInArea_1 (rt,x,y)
return ( RectContainsCoords(rt,x,y) and (not IsPointInRegionVillage(x, y)))and RectContainsCoords(bj_mapInitialPlayableArea,x,y)
end
--лежит ли точка внутри региона или в незанятом ActiveArea
--юзается при создании региона, только там еще земля не внесена в регион, тут ищут только по ActiveArea.
--и при расширении региона юзается жта функция, она ищет вершины
--@param rect rt <-ActiveArea
--@param real x
--@param real y
--@param integer n <= number of region
---@return boolean
function IsPointInArea_2(rt,x,y,n)
return IsPointInArea(x,y,n) or IsPointInArea_1(rt,x, y)
end
--Точка лежит внутри poligon или в незанятом ActiveArea, и свободна точка от CheckArea
--используется для разбивки многоугольника на ректы. Когда находим рект, его записываем в CheckArea, так мы будем знать что участок разбит.
--при создании региона или расширении мы учитываем ActiveArea
--@param rect rt <-ActiveArea
--@param real x
--@param real y
--@param integer n <= number of region
---@return boolean
function IsPointInArea_3(rt,x,y,n)
return (IsPointInArea_2(rt,x,y,n))and (not IsPointInRegion(CheckArea, x,y) )
end
--число диагоналей, принадлежащих свободному ActiveArea и Region, не принадлежащих CheckArea (разбивает участок на ректы при создании)
--@param rect rt <-ActiveArea
--@param real x
--@param real y
--@param integer n <= number of region
---@return integer
function CountFreePointsInArea(rt,x,y,n)
local a = 0
local r = 4.00
local angle
--local px = {}
--local py = {}
--1) берем 4 точки от точки x,y и считаем кол-во свободных точек
if IsPointInArea_3(rt,x-r,y+r,n) then
px[a] = x-r
py[a] = y+r
a = a + 1
end
if IsPointInArea_3(rt,x+r,y+r,n) then
px[a] = x+r
py[a] = y+r
a = a + 1
end
if IsPointInArea_3(rt,x+r,y-r,n) then
px[a] = x+r
py[a] = y-r
a = a + 1
end
if IsPointInArea_3(rt,x-r,y-r,n) then
px[a] = x-r
py[a] = y-r
a = a + 1
end
--print("число точек (для напр): "..a )
if a == 2 then
angle = Acos(AngleBetweenTwoVectors(px[0]-x,py[0]-y, px[1]-x,py[1]-y)) * bj_RADTODEG
--print("угол: "..angle )
if angle == 90.00 then
return 2
else
return 5
end
end
return a
end
сразу первая проверка if IsPointInArea_3(rt,x-r,y+r,n) then , и перестает работать
Bergi_Bear, знаю про это, не впервой. мб другие ошибки. я просто перенес, и щас исправляю. поэтому исправлял ошибки, пока на это натолкнулся.
PT153, Nelloy, благодаря вашим подсказкам я понял. выполняется, пока условие истинно. А не наоборот.
А вообще, тут for нужен.
for не подходил потому, что у меня было другое условие. я просто это так вставил, чтобы посмотреть что оно делает. Проверить из за чего не работает
типа такого. как всегда не читаю, методом тыка
while ((RAbsBJ(x - Bx) < 0.001)and(RAbsBJ(y - By) < 0.001)and (CountVertexRegion[ns] > 1)) or exit do
понятно, что для простого было так правильно. Но у меня по логике цикл выполняется до сих пор пока соблюдается условие
сначала я думал дело в конкретном коде. В итоге убрал все. принты не запускались, так и не запускаются. Пока не додумался об этой мысли.
короче я понял. внутрь while ... do условие выхода не прописывается. пишут while true do. типа условие запуска цикла? нужно break прописывать. в учебнике lua все не так.
ладно бд сделаем и все. с lua с этим легче чем на jass. нету лимита на индексы
GetUnitGoldCost[равкод]
GetUnitWoodCost[равкод]
или
GetUnitGoldCostH[handle]
GetUnitGoldCostH[handle]
Ред. MpW
» WarCraft 3 / Отслеживание мышки
Ред. MpW
» WarCraft 3 / Отслеживание мышки
BlzGetLocalClientWidth
BlzGetLocalClientHeight
это не размеры экрана?
Ред. MpW
» WarCraft 3 / Отслеживание мышки
Ред. MpW
» WarCraft 3 / Утекают ли не обнулённые переменные типа handle
» WarCraft 3 / lua: ошибка
Ред. MpW
» WarCraft 3 / lua: ошибка
Ред. MpW
» WarCraft 3 / lua: ошибка
Я понял, но че делать?
Ред. MpW
» WarCraft 3 / lua: ошибка
» WarCraft 3 / lua: ошибка
Ред. MpW
» Wisp TD / Wisp TD
Ред. MpW
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
типа такого. как всегда не читаю, методом тыка
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
Ред. MpW
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
условие выхода не прописывается.пишут while true do. типа условие запуска цикла? нужно break прописывать. в учебнике lua все не так.Ред. MpW
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
» WarCraft 3 / Опрос варкрафтеров XGM
Ред. MpW
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
ладно нужно
» WarCraft 3 / Дебаггер Lua
Ред. MpW
» WarCraft 3 / lua-дебаг система для варика существует? +двумерные массивы
Color = [1][1]
или
Color = [1][1][1]
Color[1][1] = ...
Color[1][2] = ...
Color[1][1] = ...
Color[1][2] = ...
Color[1][3] = ...
так?
» WarCraft 3 / Опрос варкрафтеров XGM
» WarCraft 3 / Опрос варкрафтеров XGM
» WarCraft 3 / в lua не работают AI нативки
Ред. MpW
» WarCraft 3 / в lua не работают AI нативки
Ред. MpW
» WarCraft 3 / в lua не работают AI нативки
GetUnitGoldCost[равкод]
GetUnitWoodCost[равкод]
или
GetUnitGoldCostH[handle]
GetUnitGoldCostH[handle]