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

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

Закрытая тема
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
boolexpr переменная
boolexpr как на ГУИ называется эта переменная(чтобы создать ее в ctrl+b редакторе переменных)
Старый 03.02.2010, 23:36
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Никак. Её там нету. Я не нашел.
Старый 03.02.2010, 23:37
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Hellfim, немогли бы вы описать значение ее,
мне подсказывали, что она вызывается в фильтре или возвращает зачение но принцип ее так и не понял
Старый 03.02.2010, 23:40
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
В неё записывается callback функция, которая возвращает boolean. Записывать нужно так:
function lala takes nothing returns boolean
    return false
endfunction

...
boolexr myFirstBoolexprVariable=Filter(function lala)
Альтернативный вариант:
boolexr myFirstBoolexprVariable=Condition(function lala)
...
Старый 03.02.2010, 23:42
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
мне подсказывали, что она вызывается в фильтре или возвращает зачение
сама эта переменная не может ничего возвращать, она лишь ссылается на определенную функцию
Enein добавил:
в редакторе ее нет (как и кучи других типов), т.к. незачем - утечек не создает, скорость выполнения не увеличивает
Старый 03.02.2010, 23:45
adic3x

offline
Опыт: 108,439
Активность:
скорость выполнения не увеличивает
увеличивает. т.е. если у вас в переодически вызываемом коде сотни использований - используйте именно переменную, а не вызов функции
Старый 04.02.2010, 23:59
DioD

offline
Опыт: 45,134
Активность:
если сотни использований тогда может быть и даст какойнить бонус, а так вызов функции быстрее чем создание переменной присвоение переменной вызов функции и обращение к переменной.
Старый 05.02.2010, 11:40
adic3x

offline
Опыт: 108,439
Активность:
а так вызов функции быстрее чем создание переменной присвоение переменной вызов функции и обращение к переменной
это делается единократно в момент инициализации, т.е. грубо говоря мы теряем немного времени при инициализации, но потом выигрываем прикаждом вызове
опять же уточню, что при нечастых вызовах (меньше нескольких десятков в секунду, например) это не играет никакой роли, а выигрышь в читаемости при использовании анонимны функций из сЖасс/цинк куда ценнее
Старый 05.02.2010, 12:45
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Добрый всем денек.

Хочу научится правильно с помощью фильтра пикать юнитов
В ГУИ это выглядело бы так set udg_group_sort = GetUnitsInRangeOfLocMatching(1500.00, udg_l[2], Condition(function Trig_sort3_Func002002003))
После эта функция function Trig_sort3_Func002002003 бы распадалась на множество фильтров возвращающий бул

Хотелось бы научиться пользоваться правильно фильтром чтобы не засорять код
вот что я попробовал сделать, объясните мои ошибки
» раскрыть
Код:
function filtersortunits takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true 
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false
    return IsUnitAliveBJ(GetFilterUnit()) == true
endfunction

function TimerCheacking takes nothing returns nothing
    local group g = CreateGroup()
    set udg_group_sort = GroupEnumUnitsInRangeOfLoc(g,udg_l[2],1500,filtersortunits)
Старый 16.02.2010, 14:59
DioD

offline
Опыт: 45,134
Активность:
ты классный, начни сперва с прочтения статей по джазу, оптимизация и гуи не совместимы.
Старый 16.02.2010, 15:02
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
DioD, странный ответ на то правильно ли я пикнул юнитов
Статьи читаю и ссылание на них уже не новость
Старый 16.02.2010, 15:04
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Правильно или нет проверяется путём попытки это дело запустить, в чём проблема? Ответ на вопрос - нет неправильно, в коде ужас. Сработает только первый ретурн, собственно создания фильтра нет.
Старый 16.02.2010, 15:27
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
AlexKARASb, очевидно, что пунктик о ключевом слове "and", которое соединяет условия вы пропустили? Хотя, скорее всего, вы просто не можете нормально оптимизировать гуи-условие.
Старый 16.02.2010, 15:32
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Код:
function filtersortunits takes nothing returns boolean
    return GetWidgetLife(GetFilterUnit()) > 0.405 and IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true and IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false
endfunction

function
    local boolexpr b = Condition(function filtersortunits)
    local group g = CreateGroup()
    set udg_group_sort=GroupEnumUnitsInRangeOfLoc(udg_group_sort,udg_l[2],1500,b)
endfucntion
Старый 16.02.2010, 15:53
Закрытая тема

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

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

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

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



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