[НАРАБОТКА]Оживление героев
|
|
xomach | Дата: Четверг, 25 Октября 2012, 14:52:08 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
| СКАЧАТЬ То, что так сложно на гуи и так просто в джасс(ну в частном случае по крайней мере). Не нашел этого в интернете, и вот, сделал. Почти не тестил, надеюсь, все работает правильно. Настраивается из триггера "Settings". Без пояснений в коде. Делал, что называется, на все случаи жизни, очень много настроек.
Сообщение отредактировал xomach - Четверг, 25 Октября 2012, 16:02:44 |
|
|
|
[SeKtOR] | Дата: Четверг, 25 Октября 2012, 15:30:41 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
| Недостатки: - Триггер "Settings" не уничтожается после работы(он не нужен после присвоения переменных, а в памяти висит) Code local trigger t = GetTriggeringTrigger() call TriggerClearConditions(t) call TriggerClearActions(t) call DestroyTrigger(t) set t = null
Сообщение отредактировал [SeKtOR] - Четверг, 25 Октября 2012, 15:31:35 |
|
|
|
xomach | Дата: Четверг, 25 Октября 2012, 15:33:32 | Сообщение # 3 |
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
| [SeKtOR], кхм, никогда не уничтожал триггеров. Теперь знать буду, что надо-)
|
|
|
|
SirNikolas | Дата: Четверг, 25 Октября 2012, 16:26:13 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (|SeKtOR|) call TriggerClearConditions(t) call TriggerClearActions(t) Это не уничтожает условия/действия, а только отменяет их "привязку" к триггеру.
Как я понял, Settings запускается один раз при инициализации карты. Если это так, триггер вообще не нужен:Code function InitTrig_Settings takes nothing returns nothing //Код endfunction
|
|
|
|
xomach | Дата: Четверг, 25 Октября 2012, 16:32:23 | Сообщение # 5 |
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
| Quote (SirNikolas) function InitTrig_Settings takes nothing returns nothing //Код endfunction Ну да, в голову как-то не приходило Quote (SirNikolas) Это не уничтожает условия/действия, а только отменяет их "привязку" к триггеру. Тогда есть смысл делать, как сказал сектор?
|
|
|
|
SirNikolas | Дата: Четверг, 25 Октября 2012, 17:08:42 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Здесь лучше просто не создавать триггер, чем потом мучиться с его уничтожением. В некоторых других случаях, когда действительно требуется удалить триггер со всем содержимым, условия и действия нужно записать в переменные и удалить через TriggerRemoveCondition(trigger, triggercondition) & TriggerRemoveAction(trigger, triggeraction).
|
|
|
|
xomach | Дата: Четверг, 25 Октября 2012, 17:17:23 | Сообщение # 7 |
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
| SirNikolas, ну а для очистки памяти триггер удалять стоит? Не обязательно инишный.
|
|
|
|
SirNikolas | Дата: Четверг, 25 Октября 2012, 18:03:45 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Вопрос весьма спорный. С одной стороны, удаленный триггер перестанет занимать память. С другой, понадобится пара глобальных переменных под условие и действие, которые (переменные, а не condition/action) останутся висеть и после удаления. Мне кажется, триггер стоит удалить, если он был зарегистрирован на событие, которое часто срабатывает.
|
|
|
|
xomach | Дата: Четверг, 25 Октября 2012, 18:06:14 | Сообщение # 9 |
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
| SirNikolas, понятно, спс
|
|
|
|