Сейчас 01:20:50 Среда, 27 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Событие с малым периодом
FatalBladeДата: Пятница, 23 Сентября 2011, 19:17:13 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Допустим у меня есть триггер, который активирует другой триггер, который каждые 0.05 секунд что то делает. Через например 2 секунды (таймер) с третьего триггера деактивирует тот триггер который каждые 0.05 секунд что то делает. Это всё 3 триггера, а мне нужно перевести это в джасс, в 1 триггер. Ок, первый и третий триггер я могу свести в 1, это не проблема. Но вот как туда всунуть триггер с событием на 0.05 секунд? Например это отталкивание юнита, или волна взрывов, где фигурируют переменные, которые я не хочу что бы были глобальными.

 

wetalqДата: Пятница, 23 Сентября 2011, 19:51:52 | Сообщение # 2
8 уровень
Группа: Проверенные
Сообщений: 550
Награды: 0
Репутация: 117
Блокировки:
используй Хеш Таблицу и таймер, для движения юнита, а потом когда нужно прервать движения уничтожай таймер

Добавлено (23 Сентябрь 2011, 19:51:52)
---------------------------------------------
вот пример движения юнита в точку (цель заклинания)

Code
function Shunpo_Conditions takes nothing returns boolean   
        return GetSpellAbilityId() == 'A000'     
endfunction   

function Shunpo_Loop takes nothing returns nothing   
        local timer t                    = GetExpiredTimer ()   
        local unit UnitCaster                    = LoadUnitHandle(udg_Hash,GetHandleId(t),1)   
        local real Angle                    = LoadReal(udg_Hash,GetHandleId(t),2)  
        local real Speed                    = LoadReal(udg_Hash,GetHandleId(t),3)  
        local real Root                    = LoadReal(udg_Hash,GetHandleId(t),4)  
        local real Range                    = LoadReal(udg_Hash,GetHandleId(t),5)  
          
          
        local real x1  
        local real y1  
        local real x3  
        local real y3  
          
        set x1 = GetUnitX(UnitCaster)   
        set y1 = GetUnitY(UnitCaster)   
        set x3 = (x1 + Speed * Cos(Angle))   
        set y3 = (y1 + Speed * Sin(Angle))  
        call SetUnitPosition(UnitCaster,x3,y3)   
        set Range = Range + Speed  
          
        call SaveReal(udg_Hash,GetHandleId(t),5,Range)  
          
        set t = null  
        if Root <= Range then  
             call DestroyTimer(GetExpiredTimer())  
             call PauseUnit(UnitCaster, FALSE)  
             call SetUnitVertexColor(UnitCaster,255,255,255,255)  
             call SetUnitPathing(UnitCaster,true)  
        endif  
          
        set t = null  
        set UnitCaster = null  
endfunction     

function Shunpo_Actions takes nothing returns nothing          
        local unit UnitCaster                    = GetSpellAbilityUnit()  
        local real x1                    = GetUnitX(UnitCaster)   
        local real y1                    = GetUnitY(UnitCaster)   
        local real x2                    = GetLocationX(GetSpellTargetLoc())   
        local real y2                    = GetLocationY(GetSpellTargetLoc())   
        local real Angle                    = Atan2(y2 - y1, x2 - x1)   
        local real Speed                    = 30  
        local real Root                    = SquareRoot((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2))  
        local real Range                    = 0  
        local real Interval                    = 0.005  
        local timer t                    = CreateTimer ()     
         
        call PauseUnit(UnitCaster, true)  
        call SetUnitVertexColor(UnitCaster,25,25,25,75)  
        call SetUnitPathing(UnitCaster,false)  
          
        call SaveUnitHandle(udg_Hash,GetHandleId(t),1,UnitCaster)  
        call SaveReal(udg_Hash,GetHandleId(t),2,Angle)  
        call SaveReal(udg_Hash,GetHandleId(t),3,Speed)  
        call SaveReal(udg_Hash,GetHandleId(t),4,Root)  
        call SaveReal(udg_Hash,GetHandleId(t),5,Range)  
          
        call TimerStart(t,Interval,true,function Shunpo_Loop)   
            
        set t           = null   
        set UnitCaster  = null   
endfunction   

function InitTrig_Shunpo takes nothing returns nothing   
        local trigger t = CreateTrigger(  )   
        local integer i = 0   
        loop   
            call TriggerRegisterPlayerUnitEvent(t, Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)     
            set i = i + 1     
            exitwhen i == 16   
        endloop   
        call TriggerAddCondition( t, Condition( function Shunpo_Conditions ) )   
        call TriggerAddAction( t, function Shunpo_Actions )   
        set t = null   
endfunction  
 

FatalBladeДата: Пятница, 23 Сентября 2011, 20:43:34 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (wetalq)
call SaveReal(udg_Hash,GetHandleId(t),5,Range)

А разве можно каждый раз перезаписывать значение в хэш?


 

wetalqДата: Пятница, 23 Сентября 2011, 20:55:15 | Сообщение # 4
8 уровень
Группа: Проверенные
Сообщений: 550
Награды: 0
Репутация: 117
Блокировки:
FatalBlade, можно насколько я знаю
 

lawsonДата: Пятница, 23 Сентября 2011, 21:02:24 | Сообщение # 5
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
А разве можно каждый раз перезаписывать значение в хэш?

ДА сколько угодно.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

FatalBladeДата: Пятница, 23 Сентября 2011, 21:18:20 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
ДА сколько угодно.

Еслиб я знал об этом я бы не создавал тему про спелл со взрыванием трупов :D Или создал бы но там небыло бы 6-ти страниц)))) Я то был уверен что невозможно записать какое либо значение в ячейку хэша если там уже что то есть...


 

Ty3uKДата: Пятница, 23 Сентября 2011, 21:36:38 | Сообщение # 7
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Хм... Ты вообще читал статью про хэш? Там это написано в части про удаление значений ячеек

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

  • Страница 1 из 1
  • 1
Поиск:

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