Спорный вопрос / спел
|
|
-
PHantom | Дата: Суббота, 13-10-2012, 18:47:53 | Сообщение # 1 |
Гражданин
загрузка наград ...
Группа: Проверенные
Сообщений: 153
Репутация: 610
Статус: Не на сайте
|
Создали мне этот спел, 1говорит что всё регистрируется, другой говорит что он губит мою карту! Я в jass не разбираюсь, помогите пожалуйста решить этот вопрос.
|
| | |
-
влад10011 | Дата: Суббота, 13-10-2012, 20:54:11 | Сообщение # 2 |
загрузка наград ...
Группа: V.I.P.
Сообщений: 1265
Репутация: 1039
Статус: Не на сайте
|
я не говорил что она убит твою карту, я говорил если добавить в триггер больше 500-800 событий, игра будет немног подлагивать. и оно не регистрируется, а добавляется как я уже говорил....(поэкспериментируй- создай 1к-2к событий и ты увидишь результат)
Вот порылся в скриптах близов: type eventid extends handle это значит что eventid(событие) имеет тип хендел(всё что имеет тип хендел-объект!) а если это объект, то догадайся сам, регистрируется он или создаётся....
Look at my horse!
|
| | |
-
FatalBlade | Дата: Воскресенье, 14-10-2012, 12:30:53 | Сообщение # 3 |
Гражданин
загрузка наград ...
Группа: Проверенные
Сообщений: 31
Репутация: 132
Статус: Не на сайте
|
Опять вы за старое Оно регистрируется. Вот например есть группа юнитов, в которую можно триггерно добавлять юнитов. Группа та же, но в неё добавляется ссылки на юнитов. Но группа то одна! Так же и событие юнит получает урон. Событие одно, и каждый раз когда мы пишем TriggerRegisterUnitEvent, мы добавляем ссылку на юнита в событие, что бы оно срабатывало и на этого юнита. Даже название функции - TriggerRegisterUnitEvent...
Таким образом можно и не только с событием Юнит Получает Урон, но и с любым другим. Просто большинство событий не нуждаются в том что бы к ним добавлялись юниты: к ним автоматически добавлена все юниты. Почему одни так а другие так я не знаю, но как по мне, TriggerRegisterUnitEventочень удобная вещь, потому что она позволяет делать так, что бы событие срабатывало только на некоторых юнитов а не на всех.
Есть ещё события в которые надо вручную регистрировать юнитов: EVENT_UNIT_SELECTED EVENT_UNIT_DESELECTED EVENT_UNIT_TARGET_IN_RANGE TriggerRegisterUnitStateEvent TriggerRegisterUnitInRange
Может есть и другие, это только основные, которые требуют конкретных юнитов.
Если же у вас лаги из-за триггера с этим событием, то это только из-за действий которые вы вешаете как реакция на это событие. Сами понимаете, Юнит Получает Урон - событие которое срабатывает очень часто. Много ифзенов, либо создание хэндлов итд итп... когда это происходит по 20+ раз в секунду (если это АОС например), то это влияет на производительность карты.
|
| | |
-
влад10011 | Дата: Воскресенье, 14-10-2012, 12:39:34 | Сообщение # 4 |
загрузка наград ...
Группа: V.I.P.
Сообщений: 1265
Репутация: 1039
Статус: Не на сайте
|
И ты же опять не понял. Если бы это была группа, не было бы такого бага например: Caster=Применяющий юнит Добавить событие к триггеру Trigger юнит Caster получает урон Добавить событие к триггеру Trigger юнит Caster получает урон(2ой раз)
Триггер 2 Действие: Исцелить на 50
Вывод: Юниту прибавиться не 50 хп, а 100
Если бы это была группа он бы 2ой раз не добавился, тк на него уже есть ссылка в группе....Добавлено (14/10/2012, 12:39:34) --------------------------------------------- ты хоть знаешь значение слова регистр? это что то базы данных, а к ней добавляются события..... делай выводы....
Look at my horse!
|
| | |
-
FatalBlade | Дата: Воскресенье, 14-10-2012, 13:05:21 | Сообщение # 5 |
Гражданин
загрузка наград ...
Группа: Проверенные
Сообщений: 31
Репутация: 132
Статус: Не на сайте
|
Quote (влад10011) Если бы это была группа он бы 2ой раз не добавился, тк на него уже есть ссылка в группе.... Он может работать не совсем так, как группа юнитов. То что добавляется 2 ссылки на одного и того же юнита - тоже логично и не противоречит тому что я писал. Возьми к примеру Хэш. Туда тоже можно сохранять хоть 100500 ссылок на 1 и тот же обьект, просто в разные ячейки. Возможно событие оно как хэш.
Регистр, а точнее глагол "регистрировать", это взять обьект, и добавить его данные во что то, что предназначено для хранения данных для таких же обьектов.
|
| | |
-
влад10011 | Дата: Воскресенье, 14-10-2012, 13:57:14 | Сообщение # 6 |
загрузка наград ...
Группа: V.I.P.
Сообщений: 1265
Репутация: 1039
Статус: Не на сайте
|
Регистр это структура в которой хранятся данные(к примеру ты создал юнита и его структура добавилась в другую структуру(общею, к которой мы обращаемся, к примеру GetUnitState(это функция-константа===>это обращение к структуре и получаем значение)), а при создании события для определённого юнита, мы создаём новую структуру коротая будет проверять какие-либо события произошедшие с этим юнитом.
Структура это набор параметров, например: Структура юнита хп=31232 макс хп=3333333 мп=2312 макс мп=54234 лвл=10 атака=12 защита=5 и тд
создавая в редакторе такое, мы делаем основу юнита, а потом добавляем его на карту, копируя основу его структуры.(а в процессе игры изменяя\ вызывая её, чтобы получить\изменить её значения) Так же например: Структура Точки X=0 Y=0 Z=0
Ну это так, чтобы ты понял.
Look at my horse!
|
| | |
-
FatalBlade | Дата: Воскресенье, 14-10-2012, 14:57:02 | Сообщение # 7 |
Гражданин
загрузка наград ...
Группа: Проверенные
Сообщений: 31
Репутация: 132
Статус: Не на сайте
|
Quote (влад10011) Регистр это структура в которой хранятся данные А я что написал Quote (FatalBlade) и добавить его данные во что то, что предназначено для хранения данных для таких же обьектов
Значит мы согласны на том, что регистрация это грубо говоря добавление данных в общую базу данных (или общую структуру как ты назвал). Событие это тоже как бы база куда регистрируются обьекты. Как точно она работает сказать не могу, но думаю 1 из этих 3 вариантов:
1) "Обойма". Что это такое? Это неограниченный массив, в который можно добавлять неограниченное количество элементов, но вычислить можно только последний добавленный. Например группа юнитов. Туда можно добавлять сколько угодно, и вычислить можно только FirstOfGroup. Однако группа юнитов отличается от этого принципа тем, что в него нельзя сохранить 1 и тот же элемент более 1 раза. В группу юнитов нельзя добавить одного и того же юнита дважды. Так вот, Событие может работать как "Обойма", но не так как группа юнитов. Поэтому можно зарегистрировать 1 юнита несколько раз, а в группу юнитов нельзя. Вероятно в группу юнитов заложена сама проверка на ссылки на одинаковые обьекты. В событии тоже нельзя вычислить последнего добавленного юнита, но это скорее всего потому что близзы просто поленились написать для этого функцию.
2) Массив. Ссылка на юнита забивается в ячейку массива. Индекс ячейки увеличивается на 1. Можно сохранять ссылку на 1 и тот же обьект. Событие может работать и таким образом, и поэтому можно зарегистрировать 1 юнита несколько раз.
3) Хэш. Туда тоже можно сохранять ссылку на 1 и тот же обьект по нескольку раз.
|
| | |
-
PHantom | Дата: Понедельник, 15-10-2012, 15:34:55 | Сообщение # 8 |
Гражданин
загрузка наград ...
Группа: Проверенные
Сообщений: 153
Репутация: 610
Статус: Не на сайте
|
я пропаду с вами , откуда я знаю кто прав а кто нет?
|
| | |
-
FatalBlade | Дата: Понедельник, 15-10-2012, 22:21:17 | Сообщение # 9 |
Гражданин
загрузка наград ...
Группа: Проверенные
Сообщений: 31
Репутация: 132
Статус: Не на сайте
|
PHantom, сам выбирай
Если у тебя много действий как реакция на событие, то есть много чего происходит при получение урона, то при 1000+ юнитов, да, будет лагать. Особенно если создаются обьекты (юниты, декорации, эффекты, предметы итд ...), добавляются способности юнитам, или же просто у тебя там в триггере большая конструкция ифзенов (проверок IF).
Если же там небольшие математические подсчёты, простые проверки или функции которые ничего не создают, то лагать не будет, если конечно у тебя комп не тетрис.
|
| | |
-
[iNCoast] | Дата: Вторник, 16-10-2012, 03:50:13 | Сообщение # 10 |
Гражданин
загрузка наград ...
Группа: Пользователи
Сообщений: 30
Репутация: 31
Статус: Не на сайте
|
вообще нормально выглядит p.s. я не разбираюсь в jass
$$$
|
| | |
-
влад10011 | Дата: Вторник, 16-10-2012, 07:41:43 | Сообщение # 11 |
загрузка наград ...
Группа: V.I.P.
Сообщений: 1265
Репутация: 1039
Статус: Не на сайте
|
PHantom, Quote (FatalBlade) сам выбирай твоя же карта
Look at my horse!
|
| | |