[Вопрос] Оптимизация спелла, где используются группы
|
|
FatalBlade | Дата: Пятница, 23 Сентября 2011, 16:43:52 | Сообщение # 101 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Ty3uK) Глупый вопрос, но ты инициализировал таблицу? О.о Да. При инициализации карты. Некоторые действия не срабатывали (это в основном манипуляции в камерой). Затем поставил в 1 из триггеров который запускается через пару секунд после инициализации карты инициализацию хэша, так действия в том триггере тоже странно себя вели.
Quote (SirNikolas) FatalBlade, сделай, как я сказал, и у тебя все будет работать, даже если два героя одного игрока произнесут заклинание. udg_Group используется для мгновенного перебора юнитов группы. А если 2 героя произнесут заклинание ОДНОВРЕМЕННО. Буквально в ту же секунду. Ведь любое действие на любом языке програмирования занимает какую то маленькую долю секунды. У меня у 1-го игрока не может быть больше 1-го героя, поэтомук я думаю о том что бы создать массив юнитов групп, то есть каждая ячейка для каждого игрока, но помоему это уже сильно нагрузит память... или нет?
|
|
|
|
[DUОS] | Дата: Пятница, 23 Сентября 2011, 16:46:53 | Сообщение # 102 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Jass-энциклопедия о булэкспрах. Прочитав это, я поменял и свою манеру кодинга. В статье написано, что когда булэкспр создаётся, он регистрируется в памяти. Потом происходит его рецикл. Поэтому уничтожать не обязательно. Я всё же отношусь к сторонникам того, что фильтры надо убивать, несмотря на их рецикл, т.к. есть вероятность хорошо лохануться, когда мы получим фатал из-за смещения хэндлов)Добавлено (23 Сентябрь 2011, 16:46:53) ---------------------------------------------
Quote (FatalBlade) А если 2 героя произнесут заклинание ОДНОВРЕМЕННО. Буквально в ту же секунду. Ведь любое действие на любом языке програмирования занимает какую то маленькую долю секунды. MUI тебе счастье.
|
|
|
|
Ty3uK | Дата: Пятница, 23 Сентября 2011, 16:47:00 | Сообщение # 103 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Дуся, я про это и говорил. Но, видимо, ты обладаешь большей харизмой, чем я, ибо тебе Лавс поверил, а мне нет.
|
|
|
|
SirNikolas | Дата: Пятница, 23 Сентября 2011, 16:47:03 | Сообщение # 104 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| FatalBlade, хэш инициализируется вот так (Custom script): set udg_Hash = InitHashtable()
А то у меня есть подозрение, что ты делал так: Create hashtable Set Hash1 = Last created hashtable Set Hash2 = Last created hashtable Set Hash3 = Last created hashtableQuote (FatalBlade) А если 2 героя произнесут заклинание ОДНОВРЕМЕННО Все будет так, как надо.
|
|
|
|
[DUОS] | Дата: Пятница, 23 Сентября 2011, 16:47:42 | Сообщение # 105 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (SirNikolas) Все будет так, как надо. Поддерживаю. Локальные переменные создаются персонально.
|
|
|
|
lawson | Дата: Пятница, 23 Сентября 2011, 16:50:32 | Сообщение # 106 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (|DUОS|) он регистрируется в памяти. Потом происходит его рецикл. Поэтому уничтожать не обязательно. Мне и этого хватит, я не настолько заядлый оптимизатор.Добавлено (23 Сентябрь 2011, 16:50:32) ---------------------------------------------
ты мне что то пытался доказать? или ты просто повторил слово в слово что тебе сказал дуос без понятия смысла!?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
SirNikolas | Дата: Пятница, 23 Сентября 2011, 16:53:04 | Сообщение # 107 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (|DUОS|) Во-первых, надо юзать Filter - он больше подходит, это filterfunc, которая для группонабора и писалась. Quote (wiki.thehelper) A conditionfunc is the type of boolexpr returned by the Condition function. Since it extends boolexpr, both conditionfuncs and filterfuncs are interchangeable as boolexprs.
|
|
|
|
[DUОS] | Дата: Пятница, 23 Сентября 2011, 16:53:56 | Сообщение # 108 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (lawson) ты просто повторил слово в слово что тебе сказал дуос без понятия смысла!? Сейчас почитаю и скажу.
|
|
|
|
lawson | Дата: Пятница, 23 Сентября 2011, 16:54:14 | Сообщение # 109 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (SirNikolas) both conditionfuncs and filterfuncs are interchangeable as boolexprs. Понятно. Все просто.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 23 Сентября 2011, 16:55:22 |
|
|
|
FatalBlade | Дата: Пятница, 23 Сентября 2011, 16:54:41 | Сообщение # 110 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) FatalBlade, хэш инициализируется вот так (Custom script): set udg_Hash = InitHashtable()
А то у меня есть подозрение, что ты делал так: Create hashtable Set Hash1 = Last created hashtable Set Hash2 = Last created hashtable Set Hash3 = Last created hashtable Нет, я делал именно вот так (Custom script): set udg_Hash = InitHashtable(), но я инициировал 2 других хэша в самих триггерах где они нужны. Там я создавал базы данных для предметов и абилок.
Quote (|DUОS|) Поддерживаю. Локальные переменные создаются персонально. Так она глобальная))
|
|
|
|
[DUОS] | Дата: Пятница, 23 Сентября 2011, 16:55:33 | Сообщение # 111 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| SirNikolas, Тогда спрашивается - ЗАЧЕМ булэкспры разделили на ДВА типа?Добавлено (23 Сентябрь 2011, 16:55:33) ---------------------------------------------
Quote (FatalBlade) При инициализации карты. FatalBlade, Можно и в InitTrig_е
|
|
|
|
Ty3uK | Дата: Пятница, 23 Сентября 2011, 16:56:48 | Сообщение # 112 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Странно, Лавс почитай еще раз. Я не просто говорил, а приводил примеры, не?
|
|
|
|
lawson | Дата: Пятница, 23 Сентября 2011, 16:57:07 | Сообщение # 113 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (|DUОS|) Тогда спрашивается - ЗАЧЕМ булэкспры разделили на ДВА типа? boolexpr возвращает boolean в условии
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 23 Сентября 2011, 17:01:03 |
|
|
|
SirNikolas | Дата: Пятница, 23 Сентября 2011, 16:59:13 | Сообщение # 114 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) 2 других хэша в самих триггерах, где они нужны. Событие этих триггеров - "Map initialization"?Quote (|DUОS|) Тогда спрашивается - ЗАЧЕМ булэкспры разделили на ДВА типа? В Азероте много вещей, недоступных для понимания простым смертным... Ладно, значит, буду юзать Condition - для условий и Filter - для фильтров.
|
|
|
|
lawson | Дата: Пятница, 23 Сентября 2011, 17:00:34 | Сообщение # 115 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Ty3uK) Да, я про это и говорил и еще отдельно в local filterfunc f = Filter(function фильтр) и call GroupEnumUnitsInRange(группа, координата х, координата у, радиус, f), чтобы потом можно было сделать call DestroyFilter(f) и set f = null Quote (Ty3uK) Я просто переадресовал слова Quote (Ty3uK) Фильтр и кондишн- это ссылки, которые висят в памяти, если их не уничтожить, разве я не прав? Quote (Ty3uK) Я не называл, я процитировал Дусю
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Ty3uK | Дата: Пятница, 23 Сентября 2011, 17:02:07 | Сообщение # 116 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Вот, накидал в текстовый файл rghost.ru/22731051 Добавлено (23 Сентябрь 2011, 17:02:07) --------------------------------------------- Давай далее, с примером про таймер. И перед этим еще что-то вроде писал, не?
|
|
|
|
FatalBlade | Дата: Пятница, 23 Сентября 2011, 17:02:40 | Сообщение # 117 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| SirNikolas, тогда у меня к тебе вопрос. Для каждого спелла где используются группы юнитов надо создавать свою глобалку? Или хватит одной для всех. А то у меня есть куча спеллов где нужны группы. Например то же самое что и этот спелл, только вместо взрыва трупов, на их месте создаются ядовитые облака, которые наносят урон всем юнитам поблизости. Или же скилл наподобие Chain Lightning, только затронутые юниты отравляются. Или скилл что герой бьёт по земле, и всех врагов вокруг него отбрасывает. Для каждого такого спелла надо создавать свою группу?
|
|
|
|
Ty3uK | Дата: Пятница, 23 Сентября 2011, 17:03:29 | Сообщение # 118 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| "Я не называл, я процитировал Дусю." Это вообще про нуба ты сказал, мол это я тебя так назвал
|
|
|
|
FatalBlade | Дата: Пятница, 23 Сентября 2011, 17:03:36 | Сообщение # 119 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) Событие этих триггеров - "Map initialization"? Нет. call TriggerRegisterTimerEventSingle( gg_trg_Data, 1.00 )
|
|
|
|
lawson | Дата: Пятница, 23 Сентября 2011, 17:03:55 | Сообщение # 120 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Ty3uK) Давай далее, с примером про таймер. И перед этим еще что-то вроде писал, не? забудь! Quote (Ty3uK) Странно, Лавс почитай еще раз. Я не просто говорил, а приводил примеры, не? Ты это начал.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Ty3uK | Дата: Пятница, 23 Сентября 2011, 17:03:59 | Сообщение # 121 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Я тебе и ответил. Ты это сейчас в цитату вывел
|
|
|
|
SirNikolas | Дата: Пятница, 23 Сентября 2011, 17:05:15 | Сообщение # 122 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) Для каждого такого спелла надо создавать свою группу? Смотря что там делается. Если в группу просто записываются юниты и перебираются (мгновенное использование), тогда одну. Если же они в ней храняться некоторое время, пускай даже долю секунды, нужна отдельная.
|
|
|
|
Ty3uK | Дата: Пятница, 23 Сентября 2011, 17:06:35 | Сообщение # 123 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ладушки, забыли мне сейчас интересно, как же все-таки правильно Добавлено (23 Сентябрь 2011, 17:06:35) --------------------------------------------- rghost.ru/22731051 блэйд, это тебе
|
|
|
|
lawson | Дата: Пятница, 23 Сентября 2011, 17:06:55 | Сообщение # 124 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Ty3uK, забей. я тебе говорил коди как хочешь с кондитион без него или с фильтром. а я буду по своему, ок? Я понимаю если бы дуос начал меня учить или сирниколас.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
FatalBlade | Дата: Пятница, 23 Сентября 2011, 17:07:50 | Сообщение # 125 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) function Trig_Explode_Corpses_Conditions takes nothing returns nothing return GetSpellAbilityId() == 'A0QT' endfunction return nothing или return boolean? Это ведь Conditions
|
|
|
|