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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Таймеры в Jass
Таймеры в Jass
Kr0nusДата: Воскресенье, 12 Декабря 2010, 11:13:57 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
Я хочу узнать о том, как использовать таймеры в jass. Ну например вместо слипов, допустим мне надо подождать 5 секунд, как это осуществить через таймер?

 

rixt7956Дата: Воскресенье, 12 Декабря 2010, 11:20:27 | Сообщение # 2
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Посмотри как это сделано в примере статье про Хэш-таблицы, поищи её в разделе картостроителя
 

Banzay89Дата: Воскресенье, 12 Декабря 2010, 14:49:49 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Вот пример

Code
function Move takes nothing returns nothing
local timer t=GetExpiredTimer()
local unit u=LoadUnitHandle(udg_H, GetHandleId(t), 0)
local unit u2=LoadUnitHandle(udg_H, GetHandleId(t), 1)
local real ang=LoadReal(udg_H, GetHandleId(t), 2)
local real x=LoadReal(udg_H, GetHandleId(t), 3)
local real y=LoadReal(udg_H, GetHandleId(t), 4)
local integer lvl=LoadInteger(udg_H, GetHandleId(t), 5)
local real x=GetUnitX(u2)
local real y=GetUnitY(u2)
local real dist=(x-xt)*(x-xt)+(y-yt)*(y-yt)
     if dist < lvl*200*200 then //уровень скила * на квадрат кноубека
     call SetUnitX(u2, x+25*Cos(ang))
     call SetUnitY(u2, y+25*Sin(ang))
     call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl", x, y))
     else
     call PauseTimer(t)
     call FlushChildHashtable(udg_H, GetHandleId(t))
     call DestroyTimer(t)
     endif
     t=null
     u=null
     u2=null
endfunction
      
function Actions takes nothing returns nothing
     local timer t=CreateTimer()
     local unit u=GetSpellAbilityUnit()
     local unit u2=GetSpellTargetUnit()
     local real x=GetUnitX(u)
     local real x1=GetUnitX(u2)
     local real y=GetUnitY(u)
     local real y1=GetUnitY(u2)
     local real ang=Atan2(y1-y,x1-x)
     local integer lvl=GetUnitAbilityLevel(u, 'A000')
call SaveUnitHandle(udg_H, GetHandleId(t), 0, u)
call SaveUnitHandle(udg_H, GetHandleId(t), 1, u2)
call SaveReal(udg_H, GetHandleId(t), 2, ang)
call SaveReal(udg_H, GetHandleId(t), 3, x)
call SaveReal(udg_H, GetHandleId(t), 4, y)
call SaveInteger(udg_H, GetHandleId(t), 5, lvl)
call TimerStart(t, 0.03, true, function Move)
     t=null
     u=null
     u2=null
endfunction
 

Kr0nusДата: Воскресенье, 12 Декабря 2010, 19:33:11 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
Banzay89, А где в этой функции задается время таймера?

 

[san9]Дата: Воскресенье, 12 Декабря 2010, 19:40:06 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
call TimerStart(t, 0.03, true, function Move)

 

Kr0nusДата: Воскресенье, 12 Декабря 2010, 20:30:37 | Сообщение # 6
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
Banzay89, [san9],
Спасибо, а что означает
Code
local unit u=LoadUnitHandle(udg_H, GetHandleId(t), 0)
local unit u2=LoadUnitHandle(udg_H, GetHandleId(t), 1)
local real ang=LoadReal(udg_H, GetHandleId(t), 2)
local real x=LoadReal(udg_H, GetHandleId(t), 3)
local real y=LoadReal(udg_H, GetHandleId(t), 4)
local integer lvl=LoadInteger(udg_H, GetHandleId(t), 5)


 

DreiiДата: Воскресенье, 12 Декабря 2010, 20:31:50 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Kr0nus, загрузка с кэша

 

EdiTTORRДата: Воскресенье, 12 Декабря 2010, 20:33:52 | Сообщение # 8
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (Dreii)
кэша

хеша(gamecache и hashtable разные вещи)


Местами здесь.


Сообщение отредактировал EdiTTORR - Воскресенье, 12 Декабря 2010, 20:34:29
 

[san9]Дата: Воскресенье, 12 Декабря 2010, 20:35:12 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
Quote (Kr0nus)
local unit u=LoadUnitHandle(udg_H, GetHandleId(t), 0) local unit u2=LoadUnitHandle(udg_H, GetHandleId(t), 1) local real ang=LoadReal(udg_H, GetHandleId(t), 2) local real x=LoadReal(udg_H, GetHandleId(t), 3) local real y=LoadReal(udg_H, GetHandleId(t), 4) local integer lvl=LoadInteger(udg_H, GetHandleId(t), 5)

Выгружаем данные из таймера.
Вот эти.
Quote (Banzay89)
call SaveUnitHandle(udg_H, GetHandleId(t), 0, u) call SaveUnitHandle(udg_H, GetHandleId(t), 1, u2) call SaveReal(udg_H, GetHandleId(t), 2, ang) call SaveReal(udg_H, GetHandleId(t), 3, x) call SaveReal(udg_H, GetHandleId(t), 4, y) call SaveInteger(udg_H, GetHandleId(t), 5, lvl)


 

EdiTTORRДата: Воскресенье, 12 Декабря 2010, 20:42:12 | Сообщение # 10
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (|san9|)
таймера.

не из таймера =\ из ячейки в хеш-таблице в которой они хранятся.


Местами здесь.


Сообщение отредактировал EdiTTORR - Воскресенье, 12 Декабря 2010, 20:42:51
 

[san9]Дата: Воскресенье, 12 Декабря 2010, 20:47:49 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
Quote (EdiTTORR)
не из таймера =\ из ячейки в хеш-таблице в которой они хранятся.

Но мы та в таймер суём?)) Я образно.


 

DragoNДата: Понедельник, 13 Декабря 2010, 16:18:32 | Сообщение # 12
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (|san9|)
Выгружаем данные из таймера.

выгружаем из таблицы, а вешаем данные на хэндл таймера
если не знаете, то не пишите. А то сплошная дезинформация будет


El Psy Congroo
 

[san9]Дата: Понедельник, 13 Декабря 2010, 16:31:02 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
Quote (Dragon93)
выгружаем из таблицы, а вешаем данные на хэндл таймера если не знаете, то не пишите. А то сплошная дезинформация будет

Ещё 1 умник -_- Ну не так вырозился. Что теперь?


 

EdiTTORRДата: Понедельник, 13 Декабря 2010, 17:40:17 | Сообщение # 14
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (|san9|)
Ещё 1 умник -_- Ну не так вырозился. Что теперь?

Ничего страшного, просто надо же Kr0nus-у показать что мы не "в таймер суём", а то вдруг действительно так будет думать =\


Местами здесь.
 

RehanДата: Понедельник, 13 Декабря 2010, 19:54:59 | Сообщение # 15
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 79
Блокировки:
Quote (|san9|)
Ещё 1 умник -_- Ну не так вырозился. Что теперь?

да он уж поумнее будет


Требуются тестеры, обращайтесь.
 

DragoNДата: Пятница, 17 Декабря 2010, 21:27:50 | Сообщение # 16
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (|san9|)
Ещё 1 умник -_- Ну не так вырозился. Что теперь?

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


El Psy Congroo
 

EdiTTORRДата: Пятница, 17 Декабря 2010, 23:19:07 | Сообщение # 17
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Вопрос решён. Я думаю тема закрыта.
Решением оказались глобалки.(MUI)


Местами здесь.


Сообщение отредактировал EdiTTORR - Пятница, 17 Декабря 2010, 23:48:23
 

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

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