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

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

 
BlackShark

offline
Опыт: 237
Активность:
Работа с молниями
Все о молниях
В этой статье я хочу рассказать о том, как работать с молниями.
Глава 1.Теория
В Jass'е есть 10 функций для работы с молниями:
1.AddLightning(string codeName, boolean checkVisibility, real x1, real y1, real x2, real y2)- создание молнии(простое)
string codeName - это код молнии(вводить в кавычках),то есть ее тип.
Вот все типы молний :
LEAS - спелл "Огненное лассо"
CLPB - спелл "Цепь молний" (молния от кастера до первого врага)
CLSB - спелл "Цепь молний" (молния от первого врага к последующим)
HWPB - спелл "Целительная волна"(молния от кастера до первой цели)
HWSB - спелл "Целительная волна" (молния от первой цели к последующим)
MBUR - спелл "Магический огонь"
AFOD - спелл "Перст Смерти"
DRAL - спелл "Похищение жизни"(зеленая молния)
DRAM - спелл "Похищение маны"(синяя молния)
DRAB - спелл "Похищение жизни"(зеленая молния)
FORK - спелл "Разветвленная молния"
CHIM - обычная молния
MFPB - бафф "Заклинание Крови"(зеленая молния, не похожая на DRAL и DRAB)
SPLK - спелл "Эмпатия".
boolean checkVisibility -true - не видна в тумане войны,false - видна в тумане войны.
real x1, real y1 - координаты начала молнии
real x2, real y2 - координаты конца молнии.

2.AddLightningEx(string codeName, boolean checkVisibility, real x1, real y1, real z1, real x2, real y2, real z2)- создание молнии(усложненное)
string codeName,real x1, real y1,real x2, real y2 - см.выше
real z1 - высота координаты начала молнии
real z2 - высота координаты конца молнии

3.DestroyLightning(lightning whichBolt)- уничтожение молнии
lightning whichBolt - сама молния

4.MoveLightning(lightning whichBolt, boolean checkVisibility, real x1, real y1, real x2, real y2) - перемещение молнии(простое)
lightning whichBolt - молния, которая перемещается
real x1, real y1 - новые координаты начала молнии
real x2, real y2 - новые координаты конца молнии

5.MoveLightningEx(lightning whichBolt, boolean checkVisibility, real x1, real y1, real z1, real x2, real y2, real z2) - перемещение молнии(сложное)
lightning whichBolt,real x1, real y1,real x2, real y2 - см. выше
real z1 - новая высота координаты начала молнии
real z2 - новая высота координаты конца молнии

6.GetLightningColorA(lightning whichBolt) - альфа канал цвета молнии
lightning whichBolt - сама молния

7.GetLightningColorR(lightning whichBolt) - красный канал цвета молнии
lightning whichBolt - сама молния

8.GetLightningColorG(lightning whichBolt) - зеленый канал цвета молнии
lightning whichBolt - сама молния

9.GetLightningColorB(lightning whichBolt) - синий канал цвета молнии
lightning whichBolt - сама молния

10.SetLightningColor(lightning whichBolt, real r, real g, real b, real a)- изменение цвета молнии
lightning whichBolt - сама молния
real r - красный канал молнии(от 0 до 1)
real g - зеленый канал молнии(от 0 до 1)
real b - синий канал молнии(от 0 до 1)
real a - альфа канал молнии(от 0 до 1)
Глава 2.Как создать "временную" молнию
В этом деле нам поможет SCV - я создам молнию со звуком. Вот код функций
Код:
//================================================================================  =================================
 function I2Lg takes integer i returns lightning
return i
return null
endfunction

function destroy_lightning takes nothing returns nothing
   local timer t = GetExpiredTimer()
   call DestroyLightning(I2Lg(get_object_iparam(t, "lg")))
   call DestroyTimer(t)
   call flush_object(t)
endfunction

function Create_Ligh_Timed takes string codeligh, unit un1,unit un2,real timeout,sound s returns nothing
   local timer t = CreateTimer()
   local real f1
   local real f2
if IsUnitType(un1,UNIT_TYPE_FLYING) == true then
set f1 = GetUnitFlyHeight(un1)
else
set f1 = 0
endif
if IsUnitType(un2,UNIT_TYPE_FLYING) == true then
set f2 = GetUnitFlyHeight(un2)
else
set f2 = 0
endif
   call TimerStart(t, timeout, false, function destroy_lightning)
   call set_object_iparam(t, "lg", H2I(AddLightning(codeligh,true,GetUnitX(un1),GetUnitY(un1),f1,GetUnitX(un2),GetU  nitY(un2),f2)))
   call StartSound(s)
   call KillSoundWhenDone(s)
   set f1 = 0
   set f2 = 0
endfunction
//================================================================================  =================================
//Первые две функции - служебные, а третья - создание молнии.Вот параметры
// string codeligh - код молнии
// unit un1 - первый юнит(начало молнии)
// unit un2 - второй юнит(конец молнии) 
// real timeout - время продлжения молнии
// sound s - проигрываемый звук
//================================================================================  ==================================

Надеюсь что моя статья помогла вам узнать или обновить ваши знания о молниях.
С уважением, BlackShark.
Статья Sergey o SCV
Статья DimonT o SCV

Отредактировано BlackShark, 03.07.2009 в 14:54.
Старый 02.07.2009, 23:40
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
В принципе доля пользы в написанном есть, но есть у меня некоторые замечания.
  1. Все написано одним куском, - требует имхо оформления, выделение заголовков, равкодов и т.п.
  2. Описаное, в принципе элементарно - немножко прокомментированый список функций из джасс редактора.
  3. Не все знают, что такое SCV - линки на материал.
Ну и еще куча всяких мелочей.
Старый 03.07.2009, 01:31
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
Цитата:
boolean checkVisibility -???

false - молния видна в тумане войны
true - невидна
вроде как...
Старый 03.07.2009, 01:36
Gold_Opex

offline
Опыт: 2,749
Активность:
Спасибо, неплохо разжёванный материал, может пригодиться =)
Молодец что написал...а где ещЁ можно найти описание функций?
Старый 03.07.2009, 01:36
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Enein не уверен, мне почему-то казалось, что речь идет о видимости вообщем, а не о видимости в тумане войны.
Старый 03.07.2009, 01:38
Rewenger
The culprit will not die
offline
Опыт: 35,873
Активность:
Чёрт, я думал хоть в статье популярно объяснят, что делает checkVisibility =(
Старый 03.07.2009, 06:49
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Цитата:
В этом деле нам поможет SCV - я создам молнию со звуком. Вот код функций

не,SCV уже вышло из моды
по сабжу:статья в целом норм,описываються некоторые нужные моменты,но выделение хотя бы глав не помешает имхо...
Старый 03.07.2009, 20:02
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
DragonSpirit там и на одну главу текста не хватит. По поводу SCV - каждый делает так как ему удобней. и от того, что как ты говоришь SCV вышло из моды - нисколько не уменьшает возможности SCV.
Старый 03.07.2009, 23:36
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Лучше на структурах написать систему молний... vjass решает =)
Старый 03.07.2009, 23:46
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Vjass - не гарантия хорошего исполнения. Если у человека руки кривые то он что на vjass, что на гуи напишет лажу. А если у человека руки прямый человек грамотно сделает в любом исполнении. (Я утрирую, но всеже)
Старый 03.07.2009, 23:55
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
с приходом 1.23b SCV возможно умрет
Старый 04.07.2009, 11:53
ToChilo
■□□□□
offline
Опыт: 356
Активность:
не увидел описание трёх нестандартых функций не все же знают что они делают
flush_object, get_object_iparam, set_object_iparam
и в коде использована функция AddLightning с параметрами высоты поправь на AddLightningEx
Старый 04.07.2009, 16:47
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Get - берем интегер, Set - устанавливаем, Flush - очищаем все связанное. Функции явно были взяты у жонега ибо iparam это в его стиле.
Старый 04.07.2009, 18:27
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
Автор, советую красиво офрмить тему , а то ее читать не хочется... тебе должно помочь ето
Старый 05.07.2009, 17:11
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Я ж говорю оформления требует. Вон Bee тоже поддержал.
Старый 07.07.2009, 13:42
agentex

offline
Опыт: 34,834
Активность:
BlackShark, СЦВ в прошлом, советую убрать любые упоминания об этом уг. Ты пишешь статью о молниях, а не о атачах.

agentex добавил:
еще: забыл упоминуть, что с MoveLightning надо очень осторожно работать, если попытаешься сдвинуть уничтоженную молнию - фатал
Старый 07.07.2009, 14:22
BlackShark

offline
Опыт: 237
Активность:
Я писал статью до того, как узнал о возможной смерти SCV!!!

Цитата:
Автор, советую красиво офрмить тему

Спасибо
Старый 08.07.2009, 13:54

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

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

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

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



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