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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Использование только локальных переменных в триг. абилках
Использование только локальных переменных в триг. абилках
Samedy_Дата: Вторник, 11 Августа 2015, 11:27:58 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Решил использовать исключительно локалки в триг. абилах, какие могут быть подводные камни? Есть моменты, когда лучше юзать глобалки, чем локалки?
 

BiboДата: Вторник, 11 Августа 2015, 11:47:27 | Сообщение # 2
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Глобальные переменные используются обычно как
- Константы: значения, неизменные от начала и до конца игры, как пример - радиус действия заклинания
- Временное храниилище: например - создается дамми-юнит, выполняющий роль триггерного снаряда, его нужно забить в переменную, чтобы передавать от вызова к вызову в периодический триггер или таймер, для осуществелния его передвижения

Из подводных камней:
- Обнуление: всем локальным переменным, наследникам типа handle необходимо присваивать значение null, по завершению их использования. set v= null Существуют исключения для объектов, которые существуют в течении всей игры, например переменные типа player можно не обнулять.
- Циклы: если локальные переменные используются в сочетании с GUI, то важно помнить, что их невозможно будет применять внутри цикла групп юниитов, что располагаются в раздели действий триггеров "Отряд". Это ограничение не распространяется на целочисленные циклы, например, такой как For Each Integer A, Do.


Сообщение отредактировал Bibo - Вторник, 11 Августа 2015, 11:51:24
 

Samedy_Дата: Вторник, 11 Августа 2015, 12:02:13 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Спасибо, всегда доходчиво объясняешь.)

Цитата Bibo ()
- Обнуление: всем локальным переменным, наследникам типа handle необходимо присваивать значение nul

В случае пренебрежения этим пунктом, что может случится? Вылеты, лаги, баги со спелами?

Добавлено (11 Августа 2015, 12:02:13)
---------------------------------------------
И, как считаешь, лучше делать способности, где нужно создавать, там, лишь эффекты в точке, на локалках или на глобалках?

 

BiboДата: Вторник, 11 Августа 2015, 12:26:42 | Сообщение # 4
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата Samedy_ ()
В случае пренебрежения этим пунктом, что может случится? Вылеты, лаги, баги со спелами?

Лаги, у всех игроков кроме хоста и потеря fps у игроков со слабым пк.
Цитата Samedy_ ()
И, как считаешь, лучше делать способности, где нужно создавать, там, лишь эффекты в точке, на локалках или на глобалках?

Зависит от эффекта. Многие эффекты имеют одну анимацию, их можно создать и сразу уничтожить, в таком случае они ее проиграют и удаляться.
Есть эффекты, имеющие несколько анимаиций - birth, stand, death. В случае уничтожения такого эффекта, сразу после его создания, он проиграет только анимацию death. Тогда придется помещать этот эффект в глобальную переменную, чтобы уничтожить только после того, как он проиграет первые две анимации.


Сообщение отредактировал Bibo - Вторник, 11 Августа 2015, 12:28:19
 

Samedy_Дата: Вторник, 11 Августа 2015, 12:47:21 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Bibo ()
Есть эффекты, имеющие несколько анимаиций - birth, stand, death. В случае уничтожения такого эффекта, сразу после его создания, он проиграет только анимацию death. Тогда придется помещать этот эффект в глобальную переменную, чтобы уничтожить только после того, как он проиграет первые две анимации

Как раз ответил мне на следующий вопрос.) А то я уже думал wait юзать. Как всегда, большое спасибо.

Добавлено (11 Августа 2015, 12:37:59)
---------------------------------------------
Стоп, это получается мне нужно уничтожать эффект только гуишной функцией ?

Добавлено (11 Августа 2015, 12:47:21)
---------------------------------------------
Не проигрывается без waita

Сообщение отредактировал Samedy_ - Вторник, 11 Августа 2015, 12:33:54
 

BiboДата: Вторник, 11 Августа 2015, 13:11:17 | Сообщение # 6
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Разумеется, ведь нужно время, чтобы нужная анимация завершилась, перед тем как уничтожить эффект. Значит нужен либо таймер, либо wait (от которого следует вовсе отказаться).
Функция уничтожения эффекта - call DestroyEffect(переменнаяТвойЭффект)

Мой тебе совет, если взялся за Jass, то используй чистый Jass, не смешивай его с GUI. Множество картоделов полегло, споткнувшись об этот камень.
 

Samedy_Дата: Вторник, 11 Августа 2015, 14:11:38 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Bibo ()
либо wait (от которого следует вовсе отказаться).

Разве могут возникнуть проблемы, если я указал ожидание 0.00 сек?

Цитата Bibo ()
Функция уничтожения эффекта - call DestroyEffect(переменнаяТвойЭффект)

В курсе, просто подумал что придется юзать bj-функцию.
Цитата Bibo ()
Мой тебе совет, если взялся за Jass, то используй чистый Jass, не смешивай его с GUI. Множество картоделов полегло, споткнувшись об этот камень.


Я бы с удовольствием, но чтобы использовать чистый jass - нужно знать jass => нужно основательно взяться за него и изучить от и до, а мне вот как-то не особо хочется тратить время на что-то пусть не бесполезное, но и не очень-то полезное (хоть у меня его и куча, да).
Да и мне не очень удобно использовать просто текст, гораздо проще пока что понимать что я делаю благодаря CS.
 

BiboДата: Вторник, 11 Августа 2015, 14:31:24 | Сообщение # 8
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата Bibo ()
Разве могут возникнуть проблемы, если я указал ожидание 0.00 сек?

Wait может работать верно, но в один момент запороть работу триггера. Он ненадежен.
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Использование только локальных переменных в триг. абилках
  • Страница 1 из 1
  • 1
Поиск:

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