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

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

Ответ
 
vladfaust

offline
Опыт: 12,714
Активность:
Правильный дефайн
В общем, хочу хукнуть CreateUnit() на добавление этого юнита в группу.
group Dmg_G = CreateGroup()

define CreateUnit(p, id, x, y, f) 
    = {
        CreateUnitAndAddToDmgGroup(p, id, x, y, f)
    }

unit CreateUnitAndAddToDmgGroup (player p, int id, real x, real y, real f)
    {
        unit u = Create##Unit(p, id, x, y, f)
        GroupAddUnit(Dmg_G, u)
        return u
    }
При компиле выдает, что CreateUnitAndAddToDmgGroup - не декларированная функция. Смена местами ничего не меняет. Все находится в "нестандартном коде".
Upd: Нет, дело в том, что в карте изначально стоят войска, которые, очевидно, создаются кодом. Дак вот, эти войска создаются раньше объявления вышеупомянутой ф-ции. Что делать?

Отредактировано inadequate_, 27.06.2012 в 21:30.
Старый 27.06.2012, 21:20
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
после инита можно пикнуть всех юнитов как альтернативный вариант
Старый 27.06.2012, 21:25
vladfaust

offline
Опыт: 12,714
Активность:
Ничего не получилось.
Upd:
cJass фаталит, если сделать так:
private void Act_RegisterAdding ()
        {
            setdef CreateUnit(p, id, x, y, f) = {CreateUnitAndAddToDmgGroup(p, id, x, y, f)}
        }
        
private void I ()
        {
            timer t = CreateTimer()
            TimerStart(t, 0.1, FALSE, fc Act_RegisterAdding)
            t = null
        }
Старый 27.06.2012, 21:31
adic3x

offline
Опыт: 108,439
Активность:
library CreateUnitFXX {
    #define CreateUnit = CreateUnitFX

    group Dmg_G = CreateGroup()
    private unit u

    unit CreateUnitFX (player p, int id, real x, real y, real f) {
        u = Create##Unit (p, id, x, y, f)
        GroupAddUnit (Dmg_G, u)
        return u
    }
}
Вот так, потом прописывайте в библиотеки requires CreateUnitFXX.
ADOLF добавил:
Нет, дело в том, что в карте изначально стоят войска, которые, очевидно, создаются кодом. Дак вот, эти войска создаются раньше объявления вышеупомянутой ф-ции. Что делать?
Такого быть не может, код сначала обрабатывает препроцессором, он везде делает подмену функции, а уже потом код запускается и юниты создаются.
Старый 27.06.2012, 21:52
Ответ

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

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

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

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



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