Заряды способности
|
|
Prikol | Дата: Воскресенье, 15 Марта 2015, 14:01:40 | Сообщение # 1 |
8 уровень
Группа: Проверенные
Сообщений: 699
Награды: 0
Репутация: 427
Блокировки:
| Доброго времени суток, у меня возникла проблема. Я захотел сделать способность, которая увеличивается свой урон за её использование. То есть, молот бурь наносит 200 урона, ты использовал данный скилл, Молот стал наносить 250 урона, ещё раз использовал, он начал наносить 300 урона и тд. Но самое главное через определённое кол-во времени урон должен возвратиться в 200 урона. То есть из 300 в 250, из 250 в 200. Вот так вот. Я как сделал: Создал переменную Z, прибавляю к ней + 1 после использования скила, и наношу урон (200 + Z * 50). Вроде всё норм, но я не могу допереть, как реализовать как бэ спадение зарядов постепенно... Ну типо пассивки Сларка из доты. Ты получил 1 заряд он у тебя спадет через 20 сек, у тебя 2 заряда : 1 спадет через 15, другой через 13 секунд и тд.
|
|
|
|
Кристофер | Дата: Воскресенье, 15 Марта 2015, 14:11:53 | Сообщение # 2 |
7 уровень
Группа: Проверенные
Сообщений: 401
Награды: 0
Репутация: 338
Блокировки:
| Опиши подробнее, при каких условиях должно спадать, в зависимости от времени или от кол-ва использования скила?
"История нашего народа знает немало светлых страниц. Темных было тоже достаточно. И все с белыми пятнами. От белых пятен истории нужно избавляться, но нельзя же всё мазать черной краской!"(с) Рохан.
|
|
|
|
Bibo | Дата: Воскресенье, 15 Марта 2015, 14:18:51 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Создай массив таймеров. При использовании способности, пройди циклом по массиву и запускай первый не запущенный таймер. По окончанию действия таймера, снижай значение урона/стаков в переменной.
Сообщение отредактировал Bibo - Воскресенье, 15 Марта 2015, 14:19:41 |
|
|
|
Borodach | Дата: Воскресенье, 15 Марта 2015, 15:15:38 | Сообщение # 4 |
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
| Лучше 1 таймер и массив реальных ( time[index] ).
Приводит способность в действие если time[1] <= 0. Запускаешь периодический таймер установить Z = Z + 1
цыкл от 1 до Z если time[index] <= 0. установить time[index] = время ************************* В триггере с таймером если time[1] <= 0. Паузишь периодический таймер
цыкл от 1 до Z если time[index] > 0. установить time[index] = time[index] - 1. иначе установить Z = Z - 1
Karamba
|
|
|
|
Bibo | Дата: Воскресенье, 15 Марта 2015, 15:19:09 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Цитата Borodach ( ) Лучше 1 таймер и массив реальных ( time[index] ). Один, но с малым интервалом, чтобы погрешность была минимальна.
|
|
|
|
Extremator | Дата: Понедельник, 16 Марта 2015, 17:01:53 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| а стаки должны виcеть N сек после получения? (как пассив Сларка / стрелы Хускара) или складываться, и обновлять время действия? (как яд ШД / напалм БэтРайдера)
|
|
|
|
Prikol | Дата: Вторник, 17 Марта 2015, 15:14:05 | Сообщение # 7 |
8 уровень
Группа: Проверенные
Сообщений: 699
Награды: 0
Репутация: 427
Блокировки:
| Extremator, Цитата Extremator ( ) как пассив Сларка Да, как пассивка сларка. ____________________ Разбирая пример Borodach'a, я додумался до того, что можно сделать так : создавать дамми юнита, давать ему время жизни ( время заряда ), и в способности я бы ставил [ 200 + (50* Кол-во юнитов на карте типа). Возможна ли такая реализация? Куда меньше заморочки...
|
|
|
|
Bibo | Дата: Вторник, 17 Марта 2015, 15:52:37 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Вот это я понимаю, метода.
|
|
|
|
Prikol | Дата: Вторник, 17 Марта 2015, 16:51:43 | Сообщение # 9 |
8 уровень
Группа: Проверенные
Сообщений: 699
Награды: 0
Репутация: 427
Блокировки:
| Bibo, Я не пойму. Ирония или нет?
|
|
|
|
Bru | Дата: Вторник, 17 Марта 2015, 18:17:53 | Сообщение # 10 |
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1960
Блокировки:
| Цитата Prikol ( ) Разбирая пример Borodach'a, я додумался до того, что можно сделать так : создавать дамми юнита, давать ему время жизни ( время заряда ), и в способности я бы ставил [ 200 + (50* Кол-во юнитов на карте типа). Возможна ли такая реализация? Куда меньше заморочки... Цитата Prikol ( ) Куда меньше заморочки...
|
|
|
|
Волчачка | Дата: Вторник, 17 Марта 2015, 22:50:17 | Сообщение # 11 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Код function ExThunderBolt takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local integer ip = LoadInteger( udg_H, id, 0) local integer i = 0 local integer end = 0 loop exitwhen i == 15 if udg_ThunderBoltCharge[i+ip*15] != 0 then set udg_ThunderBoltCharge[i+ip*15] = udg_ThunderBoltCharge[i+ip*15] - 1 set end = end + 1 endif set i = i + 1 endloop if end == 0 then call DestroyTimer(t) set udg_ThunderBoltTimer[ip] = null call FlushChildHashtable( udg_H, id ) endif set t = null endfunction
function RegThunderBoltDmgUp takes unit u returns nothing local integer i = 0 local integer en = GetPlayerId(GetOwningPlayer(u)) local boolean b = false local timer t = udg_ThunderBoltTimer[en] if t != null then loop exitwhen i == 15 or b set udg_ThunderBoltDamageStuck[en] = udg_ThunderBoltDamageStuck[en] + 50. if udg_ThunderBoltCharge[i+en*15] == 0 then set udg_ThunderBoltCharge[i+en*15] = udg_ThunderBoltCharge[i+en*15] + 20 set b = true endif set i = i + 1 endloop else set t = CreateTimer() set i = GetHandleId(t) call SaveTimerHandle( udg_H, GetHandleId(u), 127, t ) call SaveInteger( udg_H, i, 0, GetPlayerId(GetOwningPlayer(u)) ) call SaveUniHandlet( udg_H,i, 1, u ) set udg_ThunderBoltCharge[i+en*15] = udg_ThunderBoltCharge[en*15] + 20 call TimerStart( t, 1., true, function ExThunderBolt) endif set t = null endfunction
Обн: 19.03.2015
Сообщение отредактировал Волчачка - Четверг, 19 Марта 2015, 18:59:08 |
|
|
|
Bibo | Дата: Вторник, 17 Марта 2015, 23:05:16 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Волчачка, осилил жасс - молодец, но ни к чему теперь давить им каждого гуишника. Цитата Prikol ( ) Bibo, Я не пойму. Ирония или нет? Утрирую. Твой способ пригоден для использования, однако он еще более ресурсозатратный и не оптимальный.
|
|
|
|
Волчачка | Дата: Вторник, 17 Марта 2015, 23:10:18 | Сообщение # 13 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата Bibo ( ) Волчачка, осилил жасс - молодец, но ни к чему теперь давить им каждого гуишника. Я могу это реализовать и на GUI Не до оценивай меня :D
|
|
|
|