XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
J
expert
offline
Опыт: 48,447
Активность:
DFlyer забыл удалить групу в триггере CreateLocal

В триггере CreateEffects:
ты удаляеш только одну гпуппу из 20

ах да.. у тебя в тригере CreateEffects создается 40(!) точек
20 позициый юнита u
и 20 точек которые получаются использованием полнярных координат к предыдущем 20 точкам
Старый 10.01.2007, 15:13
0pJl9lTa

offline
Опыт: 3,397
Активность:
Jon госу картостроя ты наш :)))
Старый 10.01.2007, 20:14
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Jon
А их как ремувить?
Чё, неужели надо сначала каждую точку отдельно создавать, заносить в переменную, а потом по ссылке через переменную удалть, а потом обнулять саму переменную?
Старый 10.01.2007, 20:24
DioD

offline
Опыт: 45,134
Активность:
забудь про точки, юзай координаты на прямую
Старый 10.01.2007, 23:13
J
expert
offline
Опыт: 48,447
Активность:
DFlyer
угу... праально диод говорит, точка даже неюзай никодга (ну если только в вынужденых случаях)

т.к. с ними много возни и также низкое быстродействие, в создании, использовании, удалеении и обнулении, да и нативки с коардинатами вроде быстрее работают чем с точками. (почти к каждой функии работающей на точках, есть ее альтернатива работающая на координатах)

позиция юнита получаятся 2-мя координатами:
local real X = GetUnitX(u)
local real Y = GetUnitY(u)
вот и все...

полярные координаты работают следующим образом:
set X = X + len*Cos(ang * bj_DEGTORAD)
set Y = Y + len*Sin(ang * bj_DEGTORAD)

В итоге у тебя получается из старой трочки (X, Y), новая точка (X, Y) получаная в результате сдвига старой точки на растояние len под углом ang
Старый 11.01.2007, 03:54
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Т.е., если будет set X = X + 100*Cos(30 * bj_DEGTORAD), то я получу новую точку, сдвинутую на 100 под углом 30 градусов?
Старый 11.01.2007, 08:40
J
expert
offline
Опыт: 48,447
Активность:
DFlyer нет... ты получиш не точку, а только ее коардинату X
Старый 11.01.2007, 10:33
DioD

offline
Опыт: 45,134
Активность:
еще сделай Y и можно будет двигать юнита на 100 под углом 30
Старый 11.01.2007, 10:59
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Цитата:
ты получиш не точку, а только ее коардинату X

Ну, я хотел сказать координату.
Значит, по координатам, не надо будет никакие точки удалять?
Старый 11.01.2007, 19:54
NECros88

offline
Опыт: 16,351
Активность:
DFlyer нет, точки впринципе не засоряют память и не застревают в ней.
Старый 11.01.2007, 19:58
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
DFlyer нет, точки впринципе не засоряют память и не застревают в ней.

кто тебе это сказал? точки один из сильнейших загрезнителей памети, они хоть и мало места занимают, но их очень много!
Цитата:
Значит, по координатам, не надо будет никакие точки удалять?

угу
Старый 11.01.2007, 20:24
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Точка не создаётся, если:
Код:
call CreateUnitAtLoc(Player(1),'e008',GetRectCenter(gg_rct_s01),bj_UNIT_FACING)

Или создаётся и её надо тож обнулять?
Старый 15.01.2007, 14:32
dk

offline
Опыт: 60,293
Активность:
Конечно создается, центр ректа это же всеравно точка. Не обойтись без переменой в таком случаи...
Старый 15.01.2007, 14:39
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Пасип.
Можно обойтись локалкой.

DFlyer добавил:
Как отловить, находится ли какой-то (любой) юнит в регионе?
Старый 15.01.2007, 15:14
WaRadius

offline
Опыт: 226
Активность:
Код:
CreateUnit( Player(X), 'XXXX', ( GetRectMaxX( gg_rct_region )-GetRectMinX( gg_rct_region ) )/2, ( GetRectMaxY( gg_rct_region )-GetRectMinY( gg_rct_region ) )/2 , 270 )

таким образом никаких точек не создается
Старый 15.01.2007, 15:20
J
expert
offline
Опыт: 48,447
Активность:
DFlyer
Стандартная бж функция...
Код:
function RectContainsCoords takes rect r, real x, real y returns boolean
    return (GetRectMinX(r) <= x) and (x <= GetRectMaxX(r)) and (GetRectMinY(r) <= y) and (y <= GetRectMaxY(r))
endfunction

вместо X/Y юзай GetUnitX()/GetUnitY()

Jon добавил:
WaRadius УЖОС КАКОЙ

Jon добавил:
WaRadius как по твойму.. так не проще?
Код:
CreateUnit( Player(X), 'XXXX', GetRectCenterX( gg_rct_region ), GetRectCenterY( gg_rct_region ) , 270 )
Старый 15.01.2007, 15:30
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
rect удаляеца через
set loc = null, или надо через RemoveLocation?
Старый 15.01.2007, 21:07
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Сначала Remove, а затем обнуление переменной
Старый 15.01.2007, 21:18
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Пасиба.
Ещё вопрос:
кароче, надо сделать рандом создание юнитов в регионах
есть несколько регионов, надо в каждом создать по одному юниту, рандомно.
Я бы, в принципе сделал, но проблема в том, что через рандом в цикле может быть одно и тоже значение выбираться...
Старый 15.01.2007, 21:41
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
rect удаляеца через

call RemoveRect (rec)

насчет 2-ой проблемы непонял.. скажи точнее
Старый 16.01.2007, 03:40
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:00.