Спорный вопрос / спел - Wc3-Maps Форум













[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Спорный вопрос / спел
-
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
Статус: Не на сайте
Опять вы за старое smile
Оно регистрируется. Вот например есть группа юнитов, в которую можно триггерно добавлять юнитов. Группа та же, но в неё добавляется ссылки на юнитов. Но группа то одна! Так же и событие юнит получает урон. Событие одно, и каждый раз когда мы пишем 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
Статус: Не на сайте
я пропаду с вами biggrin , откуда я знаю кто прав а кто нет?
 
-
FatalBladeДата: Понедельник, 15-10-2012, 22:21:17 | Сообщение # 9
Гражданин

загрузка наград ...
Группа: Проверенные
Сообщений: 31
Репутация: 132
Статус: Не на сайте
PHantom, сам выбирай smile

Если у тебя много действий как реакция на событие, то есть много чего происходит при получение урона, то при 1000+ юнитов, да, будет лагать. Особенно если создаются обьекты (юниты, декорации, эффекты, предметы итд ...), добавляются способности юнитам, или же просто у тебя там в триггере большая конструкция ифзенов (проверок IF).

Если же там небольшие математические подсчёты, простые проверки или функции которые ничего не создают, то лагать не будет, если конечно у тебя комп не тетрис.

 
-
[iNCoast]Дата: Вторник, 16-10-2012, 03:50:13 | Сообщение # 10
Гражданин

загрузка наград ...
Группа: Пользователи
Сообщений: 30
Репутация: 31
Статус: Не на сайте
вообще нормально выглядит
p.s. я не разбираюсь в jass biggrin

$$$
 
-
влад10011Дата: Вторник, 16-10-2012, 07:41:43 | Сообщение # 11

загрузка наград ...
Группа: V.I.P.
Сообщений: 1265
Репутация: 1039
Статус: Не на сайте
PHantom,
Quote (FatalBlade)
сам выбирай

твоя же карта

Look at my horse!
 
  • Страница 1 из 1
  • 1
Поиск:
Рейтинг@Mail.ru
Яндекс.Метрика

Copyright © 2010-2017
Вакансии :: Контакты
Мобильная версия сайта
chat