Нашел функцию удаления области. Однако, триггер, который задействован на этом все-равно продолжает действовать, как будто область не удалилась

Похожие вопросы:

ответ
Это давно обсуждалось. вопрос удаление события
Создание триггер события — 3 утечки. Стереть переменный триггер, и минус 1. Получается остается 2 утечки.
Вот если удалить юнита (Remove unit), то он стирается из события другого триггера?
Ответ: Да есть способ: вот шпаргалка
ответ
Дело именно в количестве триггеров а не в их начинки и назначении, создавать триггеры динамически по мере надобности в гуях нельзя, так что переходите на jass.
ответ
Или сделай debounce для конкретного игрока
ответ
Extremator:
call RemoveLocation( udg_Player_Attac_Zone_Massive[1] )
set udg_Player_Attac_Zone_Massive[1] = null
А вообще, раз уж это стартовые позиции игроков, то просто один раз создай там точки и обращайся потом в ним.
Это не стартовые позиции, а просто привязанные к игроку
Madness:
Extremator:
call RemoveLocation( udg_Player_Attac_Zone_Massive[1] )
set udg_Player_Attac_Zone_Massive[1] = null
А вообще, раз уж это стартовые позиции игроков, то просто один раз создай там точки и обращайся потом в ним.
Это не стартовые позиции, а просто условно привязанные к игроку
ответ
Я разобрался в данном вопросе. "Не большое уточнение для стандартных карт тип (милишные)". Моя ошибка заключалась в том то сделал не стандартную боевую единицу "герои" и продублировал имеющихся героев "соответственно с внесением изменений в "редакторе объектов" и добавлением в "игровые константы" (стандартный герой "Паладин" = не стандартная боевая единица "Паладин") и т.д..
Достаточно было внести изменения для каждого стандартного героя в "редакторе объектов" без добавления в "игровые константы" и добавить их в не стандартную боевую единицу "таверна". все вроде работает без написания "триггеров".
"На всякий случай может пригодится кому"
Технологии - требования = Любой алтарь
Технологии - требования = Любой центр поселения 2 класса, Любой алтарь
Технологии - требования = Любой центр поселения 3 класса, Любой алтарь
Характеристики - Задержка перед первым пополнением = 130
Характеристики - Интервал пополнения = 0
Характеристики - Макс. количество = 1

`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Это давно обсуждалось. вопрос удаление события
Создание триггер события — 3 утечки. Стереть переменный триггер, и минус 1. Получается остается 2 утечки.
Вот если удалить юнита (Remove unit), то он стирается из события другого триггера?
Ответ: Да есть способ: вот шпаргалка
ответ
Дело именно в количестве триггеров а не в их начинки и назначении, создавать триггеры динамически по мере надобности в гуях нельзя, так что переходите на jass.
ответ
Или сделай debounce для конкретного игрока
ответ
Extremator:
call RemoveLocation( udg_Player_Attac_Zone_Massive[1] )
set udg_Player_Attac_Zone_Massive[1] = null
А вообще, раз уж это стартовые позиции игроков, то просто один раз создай там точки и обращайся потом в ним.
Это не стартовые позиции, а просто привязанные к игроку
Madness:
Extremator:
call RemoveLocation( udg_Player_Attac_Zone_Massive[1] )
set udg_Player_Attac_Zone_Massive[1] = null
А вообще, раз уж это стартовые позиции игроков, то просто один раз создай там точки и обращайся потом в ним.
Это не стартовые позиции, а просто условно привязанные к игроку
ответ
Я разобрался в данном вопросе. "Не большое уточнение для стандартных карт тип (милишные)". Моя ошибка заключалась в том то сделал не стандартную боевую единицу "герои" и продублировал имеющихся героев "соответственно с внесением изменений в "редакторе объектов" и добавлением в "игровые константы" (стандартный герой "Паладин" = не стандартная боевая единица "Паладин") и т.д..
Достаточно было внести изменения для каждого стандартного героя в "редакторе объектов" без добавления в "игровые константы" и добавить их в не стандартную боевую единицу "таверна". все вроде работает без написания "триггеров".
"На всякий случай может пригодится кому"
Технологии - требования = Любой алтарь
Технологии - требования = Любой центр поселения 2 класса, Любой алтарь
Технологии - требования = Любой центр поселения 3 класса, Любой алтарь
Характеристики - Задержка перед первым пополнением = 130
Характеристики - Интервал пополнения = 0
Характеристики - Макс. количество = 1

Принятый ответ
28
может потому что триггер регистрирует регион, а не рект?..
Ответы (4)
21
rsfghd, function Trig_____________________________________002_Actions takes nothing returns nothing
call RemoveRect( gg_rct_000 )
endfunction
===========================================================================
function InitTrig_____________________________________002 takes nothing returns nothing
set gg_trg_____________________________________002 = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_____________________________________002, Player(0), "1", true )
call TriggerAddAction( gg_trg_____________________________________002, function Trig_____________________________________002_Actions )
endfunction
28
SсRealm, ну и что за фигню ты мне скинул? ты можешь пользоваться форматированием и перед конвертацией своих русских гуи - переименовывать триггер хотя бы на латинскую букву? вроде несложно же?
21
rsfghd, Какая разница? Оно не на что не влияет. call RemoveRect( gg_rct_000 ) это все что я хотел показать.
26
SсRealm, есть конкретные области (как юниты), а есть их массивы (как отряды). Так вот события вешаются на сам "отряды областей", а сколько в нем "юнитов-областе" - это уже совсем другой вопрос.
9
Как и сказал rsfghd, в событиях используется РЕГИОН, а не область. Регион - таже область, только может быть неправильной формы.
Вот пример триггера "юнит вошел в область":
Глянем что внутри события:
Как мы видим создается новый регион(а не рект), в который добавляется наша область и вызывается нативное событие.
Загруженные файлы
Ответы (6)
21
IzobretatelBoom:
Значит у меня кривой перевод, потому что написано "удалить область" и указывается область для удаления
Загруженные файлы
1
SсRealm, ну, нет.
Чем дают пользоваться в GUI - только rect (Область). То что удаляется с помощью "call RemoveRect(SomeRect)" - удаляется rect.
Rect - не Region.
Region может быть любой формы, а rect - в форме прямоугольника (4 угла). Через GUI не дали возможности взаимодействовать с Region.
9
native RemoveRegion takes region whichRegion returns nothing
\\Зачем удалять регион?
28
Makeba, сам в шоке, благо люди подтянулись, я с этим выжигателем мозгов толковать больше не хочу, необучаемое
Ответы (1)
23
А какая собственно цель преследуется? Отключить триггер входа/выхода в область? Так его можно и так просто отключить
Ответы (13)
21
EugeAl, Да это и так понятно, что можно отключить.
Забавно, что у меня в редакторе написано " удаление области" в джассе она указана как
"call RemoveRect( gg_rct_000 )" и указывает на область и вроде как удаление области, но вся Хигама твердит, что это нифига не область, админы обзывают меня тупым.
Короче, ну её, эту функцию. Жили без нее и дальше как - нибудь справимся!
25
SсRealm,
"call RemoveRect( gg_rct_000 )"
вся Хигама твердит, что это нифига не область
Это кто и где такое сказал, можно цитату?
23
SсRealm, она действительно удаляет область, но тут она не поможет, потому что триггер по факту работает по региону (грубо говоря - группе областей, регион это аналог отряда и группы игроков), в который добавляется эта область. Потому что события триггера по области в дефолте не существует.
30
EugeAl, и ровно по этой причине, кстати, не существует GetTriggerRect().
21
EugeAl, Можно тогда последний вопрос: А нафига удалять область, если это вообще ни на что не влияет?!
Если вот эта штука есть для меня как объект в игре, но триггерно она хоть и удаляется, но не удалятся. То для чего мне эта функция вообще?!
Загруженные файлы
25
SсRealm, удаление области ты всё ещё проверяешь работоспособностью триггера, который висит на регионе, а не на области?
7
SсRealm, объекты удаляют(область тоже объект в данном контексте), что бы они не занимали место в памяти, если они больше не нужны. Это нужно когда создается относительно большое количество временных объектов. Это относится к точкам(Location), таймерам, областям и тд. Если ты не понимаешь зачем, что либо удалять, то вероятнее всего тебе удалять ничего не стоит, что бы не удалить чего лишнего.
И еще раз повторю то, что сказали все до меня. Твой триггер регистрирует событие входа в Region, Region в свою очередь создается под капотом Гуи из области, удаляя область ты не удаляешь регион, а значит никак не влияешь на триггер.
23
nazarpunk, да, естественно, за ненадобностью.
23
SсRealm, например, у тебя квест есть, и там у тебя условие, что юнит в области такой то и что нибудь с ним сделать, и допустим по сценарию нужно что то перестроить в квесте, и область больше не нужна, тогда её можно удалить. Про триггер с регионом в данном случае забудь, ему пофиг на удаление области.
30
EugeAl, за какой ненадобностью? Вот тебе простейший пример - ты разметил в рпг области чтоб писать, то-то вроди "Герой вошёл в Тёмный Лес". Повесил слобытие на регион. И как определить, куда именно вошёл герой? Создавать на каждый рект регион?
23
nazarpunk, ну близы для этого сделали GetTriggeringRegion()
В гуях они как раз и сделали на каждый рект регион.
А насчёт областей - просто в регион можно добавлять не только области, но и точки, и координаты, и тут как тогда вычислять, на чем стоит юнит? Он может войти не в область, а в координаты, например
( RegionAddCellAtLoc, RegionAddCell )
И тут получается нужно вызывать к примеру getTriggerRect и getTriggerlocation и getTriggerXY, причём сразу 3 функции, если бы они были. Такое себе.
Недоработка, тогда им надо было тупо событие входа в рект сделать.
спасибо за идейку, пожалуй, можно будет попробовать накостылить getTriggeringRect()
Чтобы оставить комментарий, пожалуйста, войдите на сайт.