Сейчас 03:14:48 Понедельник, 6 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Вопрос по спеллу
Вопрос по спеллу
Kr0nusДата: Суббота, 23 Октября 2010, 16:33:04 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
У меня тут возникла такая проблема:Герой кастует спелл,вокруг него появляются 4 шара(дамми).Надо чтоб они были в радиусе 250 от героя в каждые 90 градусов(тоесть 1 шарик на расстоянии 250 от героя по отношению 90,друго 180,270,360)
Я для этого создал триггер,каждые 0.07 сек двигать их по этим точкам,но при этом мне еще надо чтобы эти дамми кастовали сжигание маны во всех кто рядом(в радиусе 500),из за того что я двигаю их каждую секунду,они не могут применить способность.
Как мне это исправить?


 

DarkVaderДата: Суббота, 23 Октября 2010, 17:17:37 | Сообщение # 2
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
помоему это можно решить только с помощью jass, не сбивает каст только SetUnitX и SetUnitY , любое другое движение сбивает

Добавлено (23-10-2010, 17:10)
---------------------------------------------
а что бы перейти от декартовой системы к полярной юзай 1 правило тригонометрии

X = X0 + (R * Cos(a))
y = Y0 + (R * Sin(a))
где R - длинна смещения
а - угол
X0\Y0 - координаты центра( то есть точки относительно которой смещаешь)

Добавлено (23-10-2010, 17:17)
---------------------------------------------
и если будет глючить что то попробуй угол ставить в радианах

 

BinGOДата: Суббота, 23 Октября 2010, 17:22:29 | Сообщение # 3
Группа: Модераторы
Сообщений: 2906
Награды: 8
Блокировки:
Настраивай скилл и дамми юнита (видимо, забыл убрать ему анимации). Если неправильно настроен дамми - он не будет моментально кастовать скиллы, а должен.
 

DarkVaderДата: Суббота, 23 Октября 2010, 17:43:51 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (B1nGO)
Настраивай скилл и дамми юнита (видимо, забыл убрать ему анимации). Если неправильно настроен дамми - он не будет моментально кастовать скиллы, а должен.

XDDD полюбому, вариант с анимациями проще=)))))

 

Kr0nusДата: Суббота, 23 Октября 2010, 20:55:49 | Сообщение # 5
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
http://rghost.ru/3017588 B1nGO, Вот посмотри пожалуйста,я уже много что перепробовал,не получается

Добавлено (23-10-2010, 20:55)
---------------------------------------------
Никто не поможет?


 

DarkVaderДата: Суббота, 23 Октября 2010, 21:49:38 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Я хз, потому как у самого проблемы с дамми бывают, решаю таким образом как написал тебе, а на счет анимация я не знаю, по идее их у него надо убрать что бы не тратилось время на каст...
 

Kr0nusДата: Суббота, 23 Октября 2010, 22:00:10 | Сообщение # 7
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
DarkVader, А можешь рассписать код :
4 дамми каждые сек двигать на точки:расстоянии 250 от героя на 90,180,270,360 градусов


 

DarkVaderДата: Суббота, 23 Октября 2010, 23:34:48 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
ну я так пологаю они должны двигаться плавно? например если через глобалки...

Code

function Trig_moving_Actions takes nothing returns nothing
  local location point = GetUnitLoc(udg_caster)
  local real Xo = GetLocationX(point)
  local real Yo = GetLocationY(point)
  local location dummypoint
  local real X
  local real Y
  local integer i = 1
  loop
    exitwhen ( i==5 )
    set dummypoint = GetUnitLoc( udg_Dummy[i])
    //=== çíà÷åíèå 10 â ñëåäóþùåé ñòðîêå óêàçûâàåò íà óãîë íà êîòîðûé þíèòû áóäó ïåðåîäè÷åñêè ñìåùàòüñÿ)
    set  udg_a[i] = ((AngleBetweenPoints( point, dummypoint)) - 10)
    // 250 ýòî ðàññòîÿíèå îò öåíòðà( êàñòóþùåãî þíèòà)
    set X = ( Xo + (250 * Cos( udg_a[i]*0.0174 )))
    set Y = ( Yo + (250 * Sin( udg_a[i]*0.0174 )))
    call SetUnitX( udg_Dummy[i], X)
    call SetUnitY( udg_Dummy[i], Y)
    call RemoveLocation(dummypoint)
    set dummypoint = null
    set i = i + 1
    endloop
  call RemoveLocation(point)
  set point = null
endfunction

//===========================================================================
function InitTrig_moving takes nothing returns nothing
     set gg_trg_moving = CreateTrigger(  )
     call TriggerRegisterTimerEventPeriodic( gg_trg_moving, 0.05 )
     call TriggerAddAction( gg_trg_moving, function Trig_moving_Actions )
endfunction

вот как то так и вот тебе пример веселой карусели, обрати внимание что юниты могут бегать крутиться и кастовать спелы но их все равно будет двигать и каст не сбивается...

Добавлено (23-10-2010, 23:30)
---------------------------------------------
блин в коде коментарии каряво написаны=)))) ну в примере зато они нормально видны

Добавлено (23-10-2010, 23:33)
---------------------------------------------
конечно этот спел можно уместить в один триггер на jass но если с применением gui то прийдется в два

создай триг который при касте будет создавать юнитов и записывать их в переменные, а потом активировать этот триггер и все юниты буду крутиться и смогут кастовать...
но только что бы этот триггер был изначально выключен в нужно после

set gg_trg_moving = CreateTrigger( )

добавить call DisableTrigger( gg_trg_moving ) и триггер будет выключен

Добавлено (23-10-2010, 23:34)
---------------------------------------------
=))) вообще если что то не понятно пиши помогу

 

Kr0nusДата: Воскресенье, 24 Октября 2010, 12:44:42 | Сообщение # 9
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
Quote (DarkVader)
set X = ( Xo + (250 * Cos( udg_a[i]*0.0174 )))

А если мне нужно задать строгий градус,например 90, заменить
Code
*Cos( udg_a[i]*0.0174)

на
Code
*Cos(90*0.0174)
да?

Добавлено (24-10-2010, 12:44)
---------------------------------------------
В общем я разобрался с координатами,большое спасибо DarkVader, у
Осталась 1 проблема : http://i077.radikal.ru/1010/21/ae2b3ea5cda6.jpg
на картинке видно,что 2 шарика в одно месте,а должны быть по другому ( а должны быть противоположны(как другие два) )
вот мой код связанный с движением:

Code
function Trig_DammyGoAndCast_Actions takes nothing returns nothing
     local location point = GetUnitLoc(udg_Drek_tar)
     local real Xo = GetLocationX(point)
     local real Yo = GetLocationY(point)
     local real X
     local real Y
     local integer i = 1  
     loop
     exitwhen (i==5)
       set X = ( Xo + ( 250 * Cos(90*i) ) )
       set Y = ( Yo + ( 250 * Sin(90*i) ) )
       call SetUnitX ( udg_Drek_tar_Dammy[i] , X )
       call SetUnitY ( udg_Drek_tar_Dammy[i] , Y )
       set i = i + 1  
     endloop
     call RemoveLocation(point)
     set point = null
endfunction

//===========================================================================
function InitTrig_DammyGoAndCast takes nothing returns nothing
     set gg_trg_DammyGoAndCast = CreateTrigger(  )
     call DisableTrigger( gg_trg_DammyGoAndCast )
     call TriggerRegisterTimerEventPeriodic( gg_trg_DammyGoAndCast, 0.07 )
     call TriggerAddAction( gg_trg_DammyGoAndCast, function Trig_DammyGoAndCast_Actions )
endfunction



 

DarkVaderДата: Воскресенье, 24 Октября 2010, 16:27:20 | Сообщение # 10
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (Kr0nus)
на картинке видно,что 2 шарика в одно месте,а должны быть по другому ( а должны быть противоположны(как другие два) ) вот мой код связанный с движением:

ну в твоем примере как я понял кргуового движения шариков нет? тогда все просто ты от градусов не перешел в радианы...
вот так они будут стоять строго по 90град друг от друга

Code

        set X = ( Xo + ( 250 * Cos((90*i)*0.0174) ) )  
        set Y = ( Yo + ( 250 * Sin((90*i)*0.0174) ) )  

потому как выяснилось угол здесь в тригонометрических функциях считается в радианах=)

 

Kr0nusДата: Воскресенье, 24 Октября 2010, 19:46:46 | Сообщение # 11
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
DarkVader, Помогло,огромное спасибо =)

 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Вопрос по спеллу
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz