|
[Вопрос] Floating Text (texttag)
|
|
| FatalBlade | Дата: Пятница, 30 Сентября 2011, 19:40:39 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки: 
| У меня есть скилл Suffer, который при активации накапливает урон. При накопление максимального урона, урон перестаёт накапливаться пока: 1) - Герой не заюзает спелл Unleash, который наносит столько урона сколько накопил герой 2) - Время действия спелла Suffer не закончится (60 секунд) 3) - Герой не умрёт
Когда герой накапливает максимальное количество урона, нужно что бы над героем появился текст "UNLEASH!!!", и плавал над ним, пока не произойдут 3 выше-написанных события.
Я могу сделать триггер, с событием например 0.05 секунд, который будет работать постоянно, и циклом проверять накопленный урон всех героев тип которых Мясник. Если накопленный урон больше максимального, то создавать texttag над юнитом, и тут же его удалять. Таким образом текст будет плавать. Но я не хочу так делать. Я стараюсь избегать триггеров с событием малого периода, темболее таких которые работают ПОСТОЯННО, и помимо всего этого в этом триггере есть цикл который каждый 0.05 секунд что то проверяет (if/then)
Есть ещё вариант - глобалки. И не массив, а именно 10 переменных типа real. Есть триггерное событие которое фиксирует реальное число, которое НЕ СОСТОИТ в массиве. Но это 10 триггеров и 10 глобалок...
Есть другие варианты это реализовать?

Сообщение отредактировал FatalBlade - Пятница, 30 Сентября 2011, 19:41:39 |
| |
|
|
| oleg_best_oleg | Дата: Пятница, 30 Сентября 2011, 21:15:11 | Сообщение # 2 |
|
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки: 
| Quote (FatalBlade) Я стараюсь избегать триггеров с событием малого периода так делай не 0.05 сек., а 0.20, 0.25, 0.33, 0.45, 0.50, лагов меньше будет)
|
| |
|
|
| FatalBlade | Дата: Пятница, 30 Сентября 2011, 21:30:03 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки: 
| Quote (oleg_best_oleg) так делай не 0.05 сек., а 0.20, 0.25, 0.33, 0.45, 0.50, лагов меньше будет) Но так некрасиво будет, текст будет прыгать, а не плавно двигаться с юнитом. Я не категорически против таких событий. У меня они часто используются, но это в основном только для отталкивания юнитов спеллом и всё такое, то есть это не триггеры с 0.05 которые работают всю игру. Они включаются на 1-2 секунды и выключаются. Так же и я хочу что бы было, что при накопление урона до максимума, активируется триггер или функция с событие 0.05, и оно работает пока не произойдёт одно из трёх выше указанных мной действий в первом посте.
Есть идеи как это сделать?
|
| |
|
|
| FatalBlade | Дата: Суббота, 01 Октября 2011, 10:09:51 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки: 
| Я нечё не понял Напиши плз потом на трезвую голову. То что ты сделал приведёт к огромным лагам. Каждый раз когда герой получает урон, если накопилось больше максимума, запускается периодический таймер... ))
|
| |
|
|
| lawson | Дата: Суббота, 01 Октября 2011, 11:25:53 | Сообщение # 5 |
|
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки: 
| Юнит использует способность УСлови: способность == накопление урона Действия: создать новый триггер: TriggerUnit получает урон
Новый триггер: Действия загруженая переменная урона = загруженаая переменная урона + GetEventDamage() сохраняем в хеш перменную урона Если загруженная переменная урона >= 100 то Запускаешь таймер удаляешь триггер(GetTriggeringTrigger()) конец условия
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 01 Октября 2011, 11:26:42 |
| |
|
|
| FatalBlade | Дата: Суббота, 01 Октября 2011, 11:29:32 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки: 
| lawson, У меня уже есть эта способность... Мне лишь нужен textag который будет светиться когда герой накопил маскимум урона.
|
| |
|
|
| lawson | Дата: Суббота, 01 Октября 2011, 14:18:55 | Сообщение # 7 |
|
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки: 
| Quote (Mep3aB4uK) call CreateTimer(timer,.04,true,function ***) endif function **** if LevelBuff>0 and LoadReal(udg_H,id(LoadUnit()) then call ChangePositionTextTag(LoadTextTag(),GetWidgetX(LoadUnit()),GetWidgetY(LoadUnit())) else call destroytexttag call FlushChildHashtable(udg_H,id(timer)) endif endfucntion Только период сделай побольше.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 01 Октября 2011, 14:19:44 |
| |
|
|