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

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

 
Cheguevara

offline
Опыт: 383
Активность:
[cJass]Создание временных молний
Нашел здесь статью о создании временных молний. Но там используется SCV и RB. Т.к. они не уже не актуальны решил написать тоже, но с использованием хэша.

Код:
library TimedLightning {

hashtable HT=InitHashtable()

nothing DestrLig () {
    timer t=GetExpiredTimer()
    timer to=LoadTimerHandle(HT,GetHandleId(t),1)
    lightning l=LoadLightningHandle(HT,GetHandleId(t),0)
    FlushChildHashtable(HT,GetHandleId(to))
    DestroyTimer(to)
    FlushChildHashtable(HT,GetHandleId(t))
    DestroyLightning(l)
    DestroyTimer(t)
    t=null
    l=null
    to=null
}

nothing MoveLig () {
    timer t=GetExpiredTimer()
    lightning l=LoadLightningHandle(HT,GetHandleId(t),0)
    unit u1=LoadUnitHandle(HT,GetHandleId(t),1)
    unit u2=LoadUnitHandle(HT,GetHandleId(t),2)
    MoveLightningEx(l,true,GetUnitX(u1),GetUnitY(u1),GetUnitFlyHeight(u1),GetUnitX(u  2),GetUnitY(u2),GetUnitFlyHeight(u2))
    t=null
}

nothing AddLigEffTimed (string ligcode,boolean check, unit unit1, unit unit2, real time, real r, real g, real b, real alpha) {
    timer t1=CreateTimer()
    timer t2=CreateTimer()
    unit u1=unit1
    unit u2=unit2
    lightning l=AddLightningEx(ligcode,true,GetUnitX(u1),GetUnitY(u1),GetUnitFlyHeight(u1),Get  UnitX(u2),GetUnitY(u2),GetUnitFlyHeight(u2))
    SetLightningColor(l, r, g, b, alpha)
    SaveLightningHandle(HT,GetHandleId(t1),0,l)
    SaveLightningHandle(HT,GetHandleId(t2),0,l)
    SaveUnitHandle(HT,GetHandleId(t2),1,unit1)
    SaveUnitHandle(HT,GetHandleId(t2),2,unit2)
    TimerStart(t1,time,false, function DestrLig)
    SaveTimerHandle(HT,GetHandleId(t1),1,t2)
    TimerStart(t2,0.05,true, function MoveLig)
    t1=null
    t2=null
}

}


P.S. Таблицу не обязательно инициализировать если она уже инициализирована

Отредактировано Cheguevara, 05.03.2010 в 01:14.
Старый 03.03.2010, 18:08
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
также забыл упомянуть что здесь используется cJass ^^
Bee добавил:
+ на статью это совсем не похоже
Bee добавил:
опиши все возможности работы с молниями и будет статься
Старый 03.03.2010, 18:27
Nekit1234007

offline
Опыт: 11,916
Активность:
В хт можно напрямую сохранять молнию. Статьи не увидел.
cJass rullz.
Старый 03.03.2010, 18:28
Cheguevara

offline
Опыт: 383
Активность:
ох втф=) ша напишу
точнее спишу -.-
хотя не, не буду плодить копипасты ^^
и, кстати, нигде не было указано что это статья=)

Отредактировано Cheguevara, 03.03.2010 в 18:38.
Старый 03.03.2010, 18:31
XOR

offline
Опыт: 38,284
Активность:
ну и зачем тут это простите недо"беблеотека"?
Старый 03.03.2010, 18:39
Doc

offline
Опыт: 63,163
Активность:
В чем смысл? Молнии и так прекрасно заносятся
DoctorGester добавил:
И еще тут мелкие недоработки.
Старый 03.03.2010, 19:16
Cheguevara

offline
Опыт: 383
Активность:
вроде все исправил...
ну в принципе если это не надо, то delete.=)
просто у меня с этим были проблемы, вдруг кому-нибуть тоже поможет=)
а по молниям (по нативкам) тут уже где-то был материал=)
>не буду плодить копипасты ^^
Старый 03.03.2010, 22:44
Doc

offline
Опыт: 63,163
Активность:
Во первых нет такой функции RemoveSavedInteger
Во вторых локалки таймера не обязательны
В третьих функция должна принимать время в реалах
Старый 03.03.2010, 23:18
Cheguevara

offline
Опыт: 383
Активность:
а, ну время забыл=) у себя на мапе исправил=)
Во первых нет такой функции RemoveSavedInteger
какбы есть...
Старый 03.03.2010, 23:54
Doc

offline
Опыт: 63,163
Активность:
Cheguevara, Ну проверял же. Хотя может жнпг тупит. Но я точно знаю что есть всего 2 функции чистки хеша FlushChildHashtable и FlushParentHashtable.
Старый 03.03.2010, 23:58
Cheguevara

offline
Опыт: 383
Активность:
хз, хз=)
у меня все робит=)
ну, в принципе, RemoveSavedInteger очишает 1 выбранную ячейку, а я здесь использую 1 на каждый таймер=) т.е. я думаю ничего плохого...
Старый 04.03.2010, 00:12
Arty3ooo
...
offline
Опыт: 3,125
Активность:
Cheguevara,
ты забыл про ось z... и про то что юнит может двигаться
Arty3ooo добавил:
"StartSound(s); KillSoundWhenDone(s)"
При такой комбинации звук иногда может не проигрываться..
Старый 04.03.2010, 13:04
Cheguevara

offline
Опыт: 383
Активность:
да... звук чего то не хочет=(
Cheguevara добавил:
добавил перемешение молнии
Старый 04.03.2010, 14:58
Doc

offline
Опыт: 63,163
Активность:
Зачем обновлять аккордеон же, молнии можно напрямую сохранять, библиотека функций с молниями тоже не нужна, ибо есть такая. Кстати с очисткой числа я сфейлил, извиняюсь.
Старый 04.03.2010, 15:29
Cheguevara

offline
Опыт: 383
Активность:
лол, исправил "баян" еще раз :D
ну можно удалять если никому не нужно, я уже писал.
Старый 04.03.2010, 16:07
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
с использованием структур
O_O
не увидел(то ли я слепой,то ли их тут нету(скорее второе))
Старый 04.03.2010, 18:51
Doc

offline
Опыт: 63,163
Активность:
DragonSpirit, уже нету:)
Старый 04.03.2010, 20:52
Cheguevara

offline
Опыт: 383
Активность:
да, я убрал=) ибо они не нужны тут=)
Старый 04.03.2010, 21:33

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

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

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

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



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