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

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

Ответ
 
DotaMaster666
Silenced by GadenbIsh
offline
Опыт: 1,259
Активность:
Demo of the newest cJass features
Ок, я просто сделал этот что бы ощущать насколько это может быть круто. Это просто, читаемо и переносимо.
Способность пытается найти "толпу юнитов", и помечает ее эффектом. Нетривиальная задача, элементарно решена новыми инструкциями рекурсивно.
» Code
scope RecursiveDemo {

    #if ! AUTOFLUSH_LOCALS
        #error ("Add /alf flag!")
    #endif

    #define {
        SpellId = 'A000'
        private EffectModel = "Abilities\\Spells\\Human\\DispelMagic\\DispelMagicTarget.mdl"
    }
    
    private group gMain = CreateGroup ()
    
    private nothing Pick (real x, real y) {
        group g = CreateGroup ()
        for (unit u; UnitsInRange(x, y, 256.) use g) {
            if (!IsUnitInGroup (u, gMain)) {
                GroupAddUnit (gMain, u)
                Pick (GetUnitX(u), GetUnitY(u))
            }            
        }
        DestroyGroup (g)
    }
    
    callback onUnitSpellEffect (SpellId) {
        unit c = GetTriggerUnit ()
        Pick (GetUnitX(c), GetUnitY(c))
        for (unit u; UnitsInGroup(gMain); GroupRemovePickedUnit()) {
            DestroyEffect (AddSpecialEffectTarget(EffectModel, u, "overhead"))
        }
    }
}
Any questions?)
DotaMaster666 добавил:
Вы все еще обнуляете локальные переменные? cJass goes 2u!
Прикрепленные файлы
Тип файла: w3x RecursivePickDemo.w3x (25.3 Кбайт, 13 просмотров )
Старый 13.08.2011, 11:31
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
что ты пытался этим сказать?
Старый 13.08.2011, 12:11
Doc

offline
Опыт: 63,163
Активность:
Как-бы новые крутые фичи сжасса.
Старый 13.08.2011, 12:19
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
так пусть в теме cj и постят)
Старый 13.08.2011, 12:52
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Приватные дефайны <3, с этим callback onUnitSpellEffect (SpellId) все понятно.

А вот использование цикла это что то... не совсем понял что к чему.

Бтв, алгоритм для примера, или он быстрее работает нативного?
Старый 13.08.2011, 12:54
Doc

offline
Опыт: 63,163
Активность:
Ну это не круговой пик, а пик "толпы" юнитов.
Какие из вас кодеры, если не можете понять такую простую логику? Даже я, гуманитарий, понял назначение кода =)
Тут, во-первых показан автофлюш, во-вторых, коллбеки, в-третьих, фор луп по юнитам с использованием доп группы/доп функции.
Старый 13.08.2011, 13:16
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
То что это пик толпы юнитов понятно.

Вопрос на тему:

Код:
UnitsInRange(x, y, 256.)


Ввели новые функции, или просто пользовательская функция.

Цитата:
Сообщение от DotaMaster666
use g


use wtf, не, я английский знаю, но все же.

Код:
UnitsInGroup

IsUnitInGroup?

Ну в общем я думаю ты понял в чем мой вопрос заключается=) И таки алгоритм для демонстрации, или он еще быстрее чем нативка?
Старый 13.08.2011, 13:23
Doc

offline
Опыт: 63,163
Активность:
Сжасс свою функцию пика генерит.
use g значит, что цикл будет использовать не свою собственную группу а указанную.
алгоритм для демонстрации, или он еще быстрее чем нативка?
какая нативка?
Старый 13.08.2011, 13:38
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Цитата:
Сообщение от Doc
какая нативка?


Я про

Код:
GroupEnumUnitsInRange


В такой конструкции:

Код:
GroupEnumUnitsInRange (gr_temp, x, y, 120., Condition(lambda boolean () {
 if (t_temp == null && SecretPirouetteFilter (c_temp, GetFilterUnit()) {
     t_temp = GetFilterUnit() 
 }
 return false    
}))
Старый 13.08.2011, 13:43
Doc

offline
Опыт: 63,163
Активность:
Да, цикл быстрее.
Старый 13.08.2011, 13:44
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Цитата:
Сообщение от Doc
Да, цикл быстрее.


Это радует, жаль только что придется переписать тонну кода=)

Бтв,у Nestharus'a скомпилились его творения ?
Старый 13.08.2011, 13:46
iZucken
ШТО
offline
Опыт: 17,960
Активность:
крутяшка =о
Faion, ничто не может быть быстрее нативок по сути это раз, и там вобщемто не ЕнумЮнитсИнРейндж ниразу а ЕнумНеарЮнитс типо того 8)
Короче указываеш точку и он тебе в отряд загоняет юнитов которые на расстоянии максимум 256 друг от друга вобщем круто и коротко, раньше нужно было бы кучу строк писать для этого 8)
Старый 13.08.2011, 13:46
Doc

offline
Опыт: 63,163
Активность:
Q_w_e_r_t_y, там брутфорсный цикл =)
Faion, не все, но прогресс есть!
Старый 13.08.2011, 13:57
Ответ

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

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

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

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



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