SlenderMan
offline
Опыт:
177Активность: |
стеки в структурах и проверка на наличие способности
Не маялся мапмейкингом сто лет, решил вспомнить.
Попытался сделать проверку, есть ли у юнита абила, но, скорее всего, она должна быть другой (ибо не работает мой способ). Помогите плз
И как оптимальнее сделать проверку, не кастанули ли спел на цель второй раз, дабы не создавать отдельную структуру? if (GetUnitAbilityLevel(this.u, 'A000')=<0) then __не помогает определить наличие абилы у юнита
((код jass
код тестовый, так что утечки памяти на данный момент меня не особо волнуют
library AbilityManipulate uses TimerUtils struct AbilityManipulate
unit u timer t integer j static integer array i static method Start takes unit u, integer value, integer time returns nothing
local thistype this = thistype.create() set this.t = NewTimer() set this.u=u set this.j=value set i[this]= this.j+1 if (GetUnitAbilityLevel(this.u, 'A000')<0) then не пашет естественно call UnitAddAbility(this.u, 'A000') endif call SetUnitAbilityLevel(this.u, 'A000', i[this]) call SetTimerData(this.t,this) call TimerStart(this.t, time, false, function thistype.Proccess) endmethod
private static method Proccess takes nothing returns nothing
local thistype this = GetTimerData(GetExpiredTimer()) call SetUnitAbilityLevel(this.u, 'A000', i[this]-this.j) call ReleaseTimer(GetExpiredTimer()) call this.destroy() endmethod endstruct
function Debug takes unit u, integer o, integer p returns nothing
call BJDebugMsg("Action!") endfunction hook SetUnitAbilityLevel Debug
endlibrary
)) |
12.03.2013, 20:17 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
Если абилы нет, её уровень = 0, должно работать.
Офк, в минус она и не уходит, замени
|
12.03.2013, 20:54 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SlenderMan
offline
Опыт:
177Активность: |
Hanabishi,
то есть, если я буду понижать уровень абилы, как в: ((код jass
call SetUnitAbilityLevel(this.u, 'A000', i[this]-this.j) )) допустим после вычитания лвл станет равен нулю то она автоматом ремувится чтоли? или все же что-то да останется? |
12.03.2013, 21:23 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
SlenderMan, а проверить? |
12.03.2013, 22:22 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
автоматом не ремувится, делаешь 0 возвратится на 1 условие <0 не имеет смысла например давать юниту бафф или невидимую абилку. и проверять при касте имеется ли она у него. Отредактировано agentex, 12.03.2013 в 23:11. |
12.03.2013, 23:06 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SlenderMan
offline
Опыт:
177Активность: |
agentex,
Отправка данных в триггер может быть постоянно, и причем на одного и того же юнита. Как можно избежать постоянного создания классов на ту же единицу, а именно делать изменения уже в первоначальной созданной для единицы структуре? Сам бафф я отследить могу, но не получается реализовать доступ к первому созданному для него классу. Вообще я могу расписать принцип действия моего кода:
1й сторонний триггер (нет в шапке темы) - юнит проводит действие, удовл-ее условию я отправляю данные в этот класс (2й триггер), где сбсно и начинается манипуляция. 2й триггер добавляет юниту дамаг путем повышения уровня абилы.
Первый лвл у абилы ничего не дает, а со второго идет прибавка По коду, очевидно, я положительного результата не получу, тк постоянно создаются разные классы. Жду ваших вариантов. Отредактировано SlenderMan, 12.03.2013 в 23:53. |
12.03.2013, 23:13 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
ну тогда глобальный массив твоих структур или хэш таблица + GetHandleId (на хендл юнита с ключом-равкодом абилки сторить id структуры) |
12.03.2013, 23:32 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SlenderMan
offline
Опыт:
177Активность: |
Всем спасибо.
Решение второго вопроса ниже Отредактировано SlenderMan, 12.03.2013 в 23:55. |
13.03.2013, 01:15 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|