Сейчас 09:21:03 Вторник, 23 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] События (Утечны? Удаляемы?)
[Вопрос] События
FatalBladeДата: Четверг, 08 Марта 2012, 23:08:37 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Если я триггерно создаю обьект, и триггерно добавляю к нему событие, например Получает Урон, или Умирает... то это событие висит в памяти. Если условия и действия удаляются (что в принципе совершенно не актуально (имхо)), то как удаляются события? И вообще являются ли они утечными? Например если у меня часто создаются обьекты, и к каждому добавляется событие "Обьект умирает", то после смерти обьекта, мне это событие уже не нужно - будут создаваться новые обьекты, и к ним будут добавляться новые события. Так как избавиться от ненужных событий, и нужно ли это вообще?

 

ImpregnableДата: Пятница, 09 Марта 2012, 06:01:03 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Постоянно создаются такие темы. Неужели никто так и не написал про события?
Ладно, тогда первым буду я.

Начну с того, что если следовать "вашей" логике, что события каким-то образом создаются, то без добавления триггера "юнит получил урон" я не смогу его ударить? Конечно нет.
На самом деле не триггеры вызывают события, а наоборот. И у каждого игрового объекта сразу после создания есть определенные события.
Например:
Code
//где-то тут war, что-то делает
...
//тут Близы решили, что перед тем, как нанести урон юниту(gg_unit001) надо бы дать пользователю отловить это событие
//запускается список триггеров
...
//где-то тут war, что-то делает: считает урон, изменяет здоровье, запускает другие события и.т.д
...

function test takes nothing returns nothing
     local trigger trg = CreateTrigger()
     local trigger trg2 = CreateTrigger()

     call TriggerRegisterUnitEvent(trg2, gg_unit001, EVENT_UNIT_DAMAGED) //добавлят триггер в список на 1 место
     call TriggerRegisterUnitEvent(trg, gg_unit001, EVENT_UNIT_DAMAGED) //добавлят триггер в список на 2 место

     ...
endfunction
Сначала будет вызван триггер trg2 а затем trg

Quote
то как удаляются события?
Теперь правильно вопрос должен звучать так "как удаляются триггеры из событий" - сразу после DestroyTrigger(...)
Quote
И вообще являются ли они утечными?
Вопрос уже не имеет смысла.

Вроде все...
 

SirNikolasДата: Пятница, 09 Марта 2012, 08:09:06 | Сообщение # 3
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Impregnable)
Неужели никто так и не написал про события?
22-30465
Quote (FatalBlade)
События (Утечны? Удаляемы?)
Да. Нет.


 

ImpregnableДата: Пятница, 09 Марта 2012, 08:33:03 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Quote (SirNikolas)
Quote (FatalBlade)
События (Утечны? Удаляемы?)
Да

Разве я непонятно написал(
Или я тебя не так понял:
Code

function Leak takes nothing returns nothing
     local trigger trg = CreateTrigger()

     call TriggerRegisterTimerEvent(trg, .01, true)
     //call TriggerRegisterUnitEvent(...)
     //call TriggerRegister...(...)
     call DestroyTrigger(trg)

     set trg = null
endfunction

function Init takes nothing returns nothing
     call TimerStart(CreateTimer(), .01, true, function Leak)
endfunction

Что-то никаких утечек не замечено.
 

SirNikolasДата: Пятница, 09 Марта 2012, 08:54:48 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Ничего не понимаю. Тогда я тестировал, и вес процесса увеличивался. Теперь нет. Скорее всего, это зависит от патча.

 

Ty3uKДата: Пятница, 09 Марта 2012, 08:56:20 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Локальный триггер нельзя полностью вычеркнуть из памяти (фкофф писал). Ну и они иногда поток повесить могут (при уничтожении)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Пятница, 09 Марта 2012, 11:19:33 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Impregnable,
Ты хочешь сказать, что события не ДОБАВЛЯЮТСЯ, а УЖЕ СУЩЕСТВУЮТ для всех обьектов, и при триггерном "добавление", оно на самом деле просто АКТИВИРУЕТСЯ?
Но если это так, то какой в этом смысл? Зачем близзардам нужно было так извращаться? Ведь отлов смерти юнита происходит по обычной схеме, так почему не могли так сделать и с уроном?


 

ImpregnableДата: Пятница, 09 Марта 2012, 12:06:50 | Сообщение # 8
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Не умею я объяснять...
Представь, что событие это дни в неделе, году, веке... Оно наступит независимо от тебя (хотя в игре надо кликнуть мышкой или нажать кнопку).
Воооот. И у тебя есть на каждый день список дел. Каждый пункт, которого можно представить в виде триггера. Ну и все эти пункты надо выполнить в своей очередности.
 

FatalBladeДата: Пятница, 09 Марта 2012, 12:23:49 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Ну так то что я и говорю, что они существуют, просто к ним прикрепляются действия, так ведь? Но если у меня есть триггер на отлов урона, то зачем тогда регистрировать событие для того или иного юнита? Ведь событие то же самое, и действия те же самые. Только обьект другой

 

ImpregnableДата: Пятница, 09 Марта 2012, 12:44:19 | Сообщение # 10
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Quote
Ну так то что я и говорю, что они существуют, просто к ним прикрепляются действия, так ведь?
Событий как таковых не существет. Просто работает приложение, идет код и в каком-то месте Близы решили дать возможность пользователю реагировать на это.

Quote
Но если у меня есть триггер на отлов урона, то зачем тогда регистрировать событие для того или иного юнита? Ведь событие то же самое, и действия те же самые. Только обьект другой?
Как зачем? Для удобства. Так бы все работало как EVEN_PLAYER_UNIT_ATTACKED ну и подобные события. Да и занимает памяти совсем ничтожное количество.
 

FatalBladeДата: Пятница, 09 Марта 2012, 13:30:31 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Impregnable)
Для удобства.

Помоему вот так:
Quote (Impregnable)
Так бы все работало как EVEN_PLAYER_UNIT_ATTACKED ну и подобные события.

И есть удобнее :)


 

Ty3uKДата: Пятница, 09 Марта 2012, 13:35:41 | Сообщение # 12
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Не совсем. Допустим, у тебя на карте 12 героев. Всего. Тебе нужно отловить событие получение урона только для них. Если бы это событие работало как атака, то брались бы все юниты, ты бы потом отсеивал ненужных проверкой. Спрашивается- зачем?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Пятница, 09 Марта 2012, 14:40:41 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Так значит лучше вообше не использовать события на подобие EVEN_PLAYER_UNIT_ATTACKED, а всегда пользоваться добавлением событий? Например если выбрал такого то героя, то добавить ему событие EVEN_PLAYER_UNIT_SPELL_EFFECT. Я правильно понял?

 

lawsonДата: Пятница, 09 Марта 2012, 15:12:17 | Сообщение # 14
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Impregnable)
На самом деле не триггеры вызывают события, а наоборот

События есть всегда, они уже со старта игры, с создания юнита уже есть - одни события для одних объектов другие для других. Все события в игре, в основном срабатываю при изменении свойств объекта. FatalBlade, читай


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 09 Марта 2012, 15:13:29
 

FatalBladeДата: Суббота, 10 Марта 2012, 18:29:42 | Сообщение # 15
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (FatalBlade)
Так значит лучше вообше не использовать события на подобие EVEN_PLAYER_UNIT_ATTACKED, а всегда пользоваться добавлением событий? Например если выбрал такого то героя, то добавить ему событие EVEN_PLAYER_UNIT_SPELL_EFFECT. Я правильно понял?


 

ImpregnableДата: Суббота, 10 Марта 2012, 19:21:13 | Сообщение # 16
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
EVENT_PLAYER_UNIT_SPELL_EFFECT будет срабатывать намного чаще чем EVENT_UNIT_SPELL_EFFECT

Надо тебе отображать название примененного заклинания, используй EVENT_PLAYER_UNIT_SPELL_EFFECT
Есть у тебя способность, которая только у 1 юнита, используй EVENT_UNIT_SPELL_EFFECT
Все.

Вообще не стоит об этом даже задумываться. Вон в доте более 200 триггерных способностей и все с событием EVENT_PLAYER_UNIT_SPELL_EFFECT.
 

Ty3uKДата: Суббота, 10 Марта 2012, 19:56:32 | Сообщение # 17
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ну... "все мы знаем, что Айсфрог нубло, не умеющее кодить" :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Суббота, 10 Марта 2012, 20:29:34 | Сообщение # 18
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Если не лагает, то зачем вылизывать весь код и изощряться?
 

Ty3uKДата: Суббота, 10 Марта 2012, 20:31:28 | Сообщение # 19
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ну... Лично я задался маниакальной идеей писать реально чистый и правильный код, который не будет лагать даже на старых машинах. А дота лагает

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Суббота, 10 Марта 2012, 20:40:07 | Сообщение # 20
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Можно знать как "писать реально чистый и правильный код", а дальше hello world и не уйти.
"Фрог" возможно и нубло в плане кода, но их же карта самая популярная. Разве нет?
 

Ty3uKДата: Суббота, 10 Марта 2012, 20:42:51 | Сообщение # 21
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Но я же сейчас не говорю про популярность карты. Ну а я уже давно ушел от привет, мир trollface

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Суббота, 10 Марта 2012, 20:56:22 | Сообщение # 22
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Quote (Ty3uK)
Ну а я уже давно ушел от привет, мир
Это же просто замечательно.
Quote (Ty3uK)
Но я же сейчас не говорю про популярность карты.
Так, что ты от меня хочешь?
Quote (Ty3uK)
А дота лагает
Как там... "купи интернет и выбрось калькулятор"

 

FatalBladeДата: Суббота, 10 Марта 2012, 21:02:13 | Сообщение # 23
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Карты в основном лагают не изза кода, а изза множества созданных юнитов/предметов/способностей в РО.

Изза кода лагают карты когда есть утечки, либо когда очень часто создаются обьекты


 

Ty3uKДата: Суббота, 10 Марта 2012, 21:05:31 | Сообщение # 24
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
У меня далеко не калькулятор. И что же вы всегда так ироничны и вызывающи? >_<

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Суббота, 10 Марта 2012, 21:52:03 | Сообщение # 25
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Ty3uK)
У меня далеко не калькулятор. И что же вы всегда так ироничны и вызывающи? >_<

И у тебя моя мапа лагает?


 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] События (Утечны? Удаляемы?)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz