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

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

Закрытая тема
 
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Jon, теперь понял) Пойду тестить код!

Alex_Hell добавил:
Jon, чет он работает не очень корректно ((
Если на маленьком расстоянии от p1 до p2 - всех добавляет в группу, а если на большом(на 1000 тестил), не всех...точнее иногда одного-двух-трех, а чаще всего вообще никого! Может это я че-нить намудрил
Попробуй сам проверить...

Кстати, это для ВолныСилы на jass'е
Старый 26.08.2007, 16:47
J
expert
offline
Опыт: 48,447
Активность:
Alex_Hell покажи код где ты его используеш...
ну дык, ты сразу бы сказал что это для волны силы, код действиет мгновено, а для силы нужно периодическое действие...
Старый 26.08.2007, 16:56
dk

offline
Опыт: 60,293
Активность:
Цитата:
local real Count = DistanceBetweenCord(X1, Y1, X2, Y2)/10

Не нравится мне эта строка... Если сайз будет больше 100 еще более менее, а есле меньше 100 то будут пропуски. Поидее количество прохождений лучше просчитать так:
Код:
set index = istanceBetweenCord(X1, Y1, X2, Y2)*2/size

Умножаю на 2 чтобы было максимально точное занесение в группу...
А в лупе координату увеличивать на size*index/2
Это будет более общий код...
Старый 27.08.2007, 04:56
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Jon, что периодически надо, я знаю, я же не сразу повреждения наносил, а через таймер, запущенный на расстояние между этим воином и воином, запустившим волну /скорость снаряда...просто воины вообще в группу не заносились...
Используется он в таком коде:
Код:
function SpellDamage takes unit u, unit u2, real damage returns nothing
    call UnitDamageTarget(u, u2, damage, true, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
    set u = null
    set u2 = null
endfunction
//###########################################################################
function FireWave takes nothing returns nothing
    local unit u = GetSpellAbilityUnit()
    local location p = GetSpellTargetLoc()
    local location p2 = GetUnitLoc(u)
    local group gr = CreateGroup()
    local unit un
    local real n = AngleBetweenCord(GetLocationX(p2), GetLocationY(p2), GetLocationX(p), GetLocationY(p))
    call MoveLocation(p, GetUnitX(u) + 1000 * CosBJ(n), GetUnitY(u) + 1000 * SinBJ(n))//двигает точку p на 1000(дальность действия спелла) от кастера.
    //Без этой строки всех добавляет в группу, а с ней - нет! Но без нее спелл действует только до локации, куда было скастовано заклинание, а нужно на все 1000! Может сдесь что не так?
//===========================================================================
    call UnitAddGroupOnLine(gr, GetLocationX(p2), GetLocationY(p2), GetLocationX(p), GetLocationY(p), 175)//дальность ставил вначале на 150 - никого не добавляет, теперь 175 - тоже самое
//===========================================================================
    loop
        set un = FirstOfGroup(gr)
        exitwhen un == null
        call SpellDamage(u, un, 350)//сейчас сделал без таймера, чтобы проверить, а так потом на таймере сделаю
        call GroupRemoveUnit(gr, un)
    endloop
//===========================================================================
    set u = null
    set un = null
    call RemoveLocation(p)
    call RemoveLocation(p2)
    set p = null
    set p2 = null
    call DestroyGroup(gr)
    set gr = null
endfunction
Старый 27.08.2007, 10:39
J
expert
offline
Опыт: 48,447
Активность:
Dead_knight поправка, если будут меньше 10, тогда будут пропуски, ну и принцепи то... меньше 10 очень мало для какогото нибудь видимого эффекта... такчто 10 вполне оптимально... но можно сделать как и ты.. но это уже дело вкуса...

Jon добавил:
Alex_Hell я обновил тот мой пост с кодом, теперь должно работать...

Jon добавил:
Alex_Hell а свой код сделай таким:
Код:
function SpellDamage takes unit u, unit u2, real damage returns nothing
    call UnitDamageTarget(u, u2, damage, true, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
endfunction

function FireWave takes nothing returns nothing
    local unit Caster = GetSpellAbilityUnit()
    local location Loc = GetSpellTargetLoc()
    local real X1 = GetUnitX(Caster)
    local real Y1 = GetUnitY(Caster)
    local real Angle = AngleBetweenCord(X1, Y1, GetLocationX(Loc), GetLocationY(Loc))*bj_DEGTORAD
    local group gr = UnitAddGroupOnLine(CreateGroup(), X1, Y1, X1+1000*Cos(Angle), Y1+1000*Sin(Angle), 150)
    local unit u
    call RemoveLocation(Loc)
    loop
        set u = FirstOfGroup(gr)
        exitwhen u == null
        call SpellDamage(Caster, u, 350)
        call GroupRemoveUnit(gr, u)
    endloop
    call DestroyGroup(gr)
    set gr  = null
    set Loc = null
endfunction
Старый 27.08.2007, 15:52
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Jon, пасиб, пойду проверять...

Alex_Hell добавил:
Jon, что за
Код:
call echo(I2S(Count))
???

Вообще-то спецэффект не нужен, т.к. спецэффект уже существует - это волна силы...заклинание срабатывает, запускается волна силы...спелл служит только для спецэффекта + отследить применение...
Старый 27.08.2007, 17:37
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
echo() - стала почти стандартной функцией для вывода сообщений локальному игроку. Используется например для теста.
В данном случае выводится значение переменной Count.
Старый 27.08.2007, 17:50
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
DFlyer, посмотри на прошлой странице...там Jon обновил свой пост...значит это только для проверки?

Alex_Hell добавил:
Jon, проверил...все работает! Спасибо за помощь! Только если сразу 4 воина кастуют спелл почти одновременно, возникают лаги, но это не очень страшно
Тему можно клоуз!

P.S.Из 7 спеллов осталось доделать только один, самый сложный, Цепная Молния
Старый 27.08.2007, 18:07
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Цитата:
значит это только для проверки?

Да.
Старый 27.08.2007, 18:13
J
expert
offline
Опыт: 48,447
Активность:
Alex_Hell упс... эти эффекты и echo я делал для проверки.. забыл убрать...

Jon добавил:
а зачем тебе эти спелы?
Старый 27.08.2007, 18:21
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Jon, я уже писал об этом в теме ЦепнойМолнии...читай:
Цитата:
если применяется спелл, его цель повреждается по-полной, зависит только от сопротивляемости магии данной цели...а если у цели 90% уменьшение урона (несколько сотен брони)...спелл его так и будет повреждать на 100%, а не на 10%, как все воины!

Теперь понятно зачем?!
Старый 27.08.2007, 19:28
Закрытая тема

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

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

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

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



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