XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
boolexpr в событиях
т.к. эта тема не работает, то буду писать в общий форум.
что означают boolexpr в событиях? можно ли её использовать всесто TriggerAddCondition?

Отредактировано Temak1, 29.09.2012 в 00:29.
Старый 29.09.2012, 00:15
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
Temak1, в общем то да
alexprey добавил:
но не во всех случаях
Старый 29.09.2012, 01:21
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
alexprey, а в каких нет?
Старый 29.09.2012, 02:58
DioD

offline
Опыт: 45,134
Активность:
можно вызывать булэкспры и получать результат исполнения, иного применения нет.
Старый 29.09.2012, 09:39
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
DioD, там еще походу к каждому триггеру придется лепить свой болекспр, ткт к обьктам внутри функции фильтра мы будем обратятся через функции реакции на события, а у триггеров куча разных событий...
Старый 29.09.2012, 09:52
влад10011

offline
Опыт: 2,337
Активность:
Нельзя использовать его TriggerAddCondition, если в конце инициализации ты напишешь DestroyBoolExpr(bx) чтобы как бы "Оптимизировать" код, условие просто не будет выполняться.
Смысла её использовать в инициализации нет просто пиши TriggerAddCondition(t,Condition(function XXX) как обычно.
Оно действует всю игру и не нуждается в удалении.(фильтры форгруппа не в счёт, тк ты сначала создаёшь фильтр, потом выбираешь каких нужно юнитов ну и удаляешь тк он тебе больше не нужен)

влад10011 добавил:
глобальный boolexpr в TriggerAddCondition подойдёт для динамического создания триггера(чтобы избавиться от условия при удалении триггера)
Старый 29.09.2012, 14:15
DioD

offline
Опыт: 45,134
Активность:
булэкспры можно вызывать куда проще, я не буду говорить как, для того чтобы те кому интересно могли самостоятельно открыть ЦЖ и увидеть как минимум 3 возможности вызвать булэкспр не применяя триггеры и создание-удаление каких либо объектов.
Старый 29.09.2012, 15:35
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
влад10011:
Нельзя использовать его TriggerAddCondition, если в конце инициализации ты напишешь DestroyBoolExpr(bx) чтобы как бы "Оптимизировать" код
да я знаю что boolexpr'ы удалять вообще не нужно
DioD, откуда такие секреты?
Старый 29.09.2012, 18:46
влад10011

offline
Опыт: 2,337
Активность:
Цитата:
Сообщение от Temak1
да я знаю что boolexpr'ы удалять вообще не нужно

ненужно только в условии триггера, а так нужно....
Старый 29.09.2012, 18:48
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
влад10011, странно, а Диод говорил, что они вообще не текут
Старый 29.09.2012, 18:59
влад10011

offline
Опыт: 2,337
Активность:
type boolexpr extends handle
зачем думаешь близы удаляют его в BJ?
и почему тогда есть функция по его уничтожению?
Старый 29.09.2012, 19:04
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
влад10011:
type boolexpr extends handle
зачем думаешь близы удаляют его в BJ?
и почему тогда есть функция по его уничтожению?
Старый 29.09.2012, 19:13
J64_

offline
Опыт: 4,724
Активность:
если что, посредстовом этих функций можно выполнять булэкспы:
EnumUnitsInGroup
ForceEnumPlayersCounted
И ещё некоторые функции.
Можно ещё творить такие чудеса как выполнение нескольких булэксп в одном enum'e, методом создания других булэксп с помощью Or или And, в зависимости от результата выполняемых функций.
Также можно сделать и удаление указанного булэксп из этого списка булэксп.
А вообще можно реализовать настоящий ООП для структур.
Старый 29.09.2012, 20:12
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
Judycaster64:
нескольких булэксп в одном enum'e
поясни пожалуйста, что это дает?
Старый 29.09.2012, 20:21
J64_

offline
Опыт: 4,724
Активность:
Дает возможность использовать только одну переменную, вместо массива, и прочего типа хранения данных.
Например, когда надо чтоб при ударе юнита воспроизводились определенные, добавляемые динамически, действия. В "стандартном" способе нужно задействовать несколько переменных, в зависимости от числа выполняемых действий, а в этом случае нужно задействовать только одну.
//"standart"
struct unitStruct
{
	boolexpr actions[max]
	int actionsCount

	void addAction(boolexpr act)
	{
		this.actions[this.actionsCount++] = act
	}
	void doActions()
	{
		int i = 0
		while(i < this.actionsCount)
		{
			EXECUTEBOOLEXPR(this.actions[i])
			i++
		}
	}
}

//???
struct unitStruct
{
	boolexpr actionsHead

	void addAction(boolexpr act)
	{
		this.actionsHead = Or\And(this.actionsHead, act)
	}
	void doActions()
	{
		EXECUTEBOOLEXPR(this.actionsHead)
	}
}

Отредактировано Judycaster64, 30.09.2012 в 08:58.
Старый 29.09.2012, 21:26
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
почти нихрена не понял >.<
Judycaster64:
struct
Judycaster64:
this.
Judycaster64:
= Or\And
???
Старый 30.09.2012, 05:38
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Judycaster64, ты бы еще по китайски ему написал... откуда ему знать про cjass и структуры, приведи пример попроще..
Старый 30.09.2012, 06:51
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
Объясните пожалуйста, что такое структуры, приставка "this." перед переменной и "= Or\And".
Старый 01.10.2012, 12:05
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
кури мануал по vJass, в теме про жнгп он есть
Старый 01.10.2012, 12:07
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 14:28.