|
|
|
|
Таймеры в 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
Блокировки:
| хеша(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
Блокировки:
| не из таймера =\ из ячейки в хеш-таблице в которой они хранятся.
Местами здесь.
Сообщение отредактировал 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 |
|
|
|
|
|
|
|
|
|
|