Вот сделал спэлл, описание:
Все работает, кроме одного, сила не вычисляется, после определенного время.
Скриншот триггера:
Странно, я вообще не понимаю, самое простое: ждать и вычилслить, что не так? То есть после действия ждать дальше ничего не происходит.
Конечно я могу вместо этого сделать иное: Создать несколько триггеров с действием ждать и вычислением силы из юнита в группе юнитов, куда предварительно засуну героя, и выполнять этот триггер вместо действие ждать и вычисление силы в том триггере. Но это не удобно.
Так что не так?

Принятый ответ

если не мног знаешь жасс или тупо по логике разбери
private void AddStatsGuy(unit u,int koll,bool b){
int i =0,min=100,max=1000;int stats[];stats[0]=Str100;stats[1]=Str10;stats[2]=Str1;bool f=false
if(b){
while(i<3){
if(koll>min&&koll<max){UnitAddAbility(u,stats[i]);SetUnitAbilityLevel(u,stats[i],koll/min);f=true}
if(b){koll = koll - (koll/min)*min};min/=10;max/=10;f=false;i++}
 }else{UnitRemoveAbility(u,Str1);UnitRemoveAbility(u,Str10);UnitRemoveAbility(u,Str100)}
 }
Str1- это абилка 9 уровней силы от 1до 9
Str10- от 10 до 90
Str100 - от 100 до 900
также еси на b даёшь false то способности очищаються
kol - если b true то это число прибавит на столько силы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
8 лет назад
0
Могу кинуть мапу, если надо. Если не понятно как действует триггер, могу подробно объяснить.
0
17
8 лет назад
0
гуи конечно я не знаю но по логике видно что ты паузишь внутри цикла на 20 сек, а так как ты паузишь не внутри триггера, пауза не работает(наскок помню если запускать sleep не внутри триггера дальше код не идёт тупо должен замереть )
0
19
8 лет назад
0
ledoed:
А как мне это сделать так что все отлично работало?
0
15
8 лет назад
Отредактирован Ethernet
0
KaneThaumaturge:
ledoed:
А как мне это сделать так что все отлично работало?
Использовать таймеры. Хранить юнита применяющего способность в массиве.
0
17
8 лет назад
0
лутше всего давать через способности статы так как герой может апнутся левелом,а так тупо удаляешь способности и все ненад париться за баг со статами
0
19
8 лет назад
0
Ethernet:
ledoed:
Спасибо за советы, пошел работать)
0
17
8 лет назад
Отредактирован ledoed
0
если не мног знаешь жасс или тупо по логике разбери
private void AddStatsGuy(unit u,int koll,bool b){
int i =0,min=100,max=1000;int stats[];stats[0]=Str100;stats[1]=Str10;stats[2]=Str1;bool f=false
if(b){
while(i<3){
if(koll>min&&koll<max){UnitAddAbility(u,stats[i]);SetUnitAbilityLevel(u,stats[i],koll/min);f=true}
if(b){koll = koll - (koll/min)*min};min/=10;max/=10;f=false;i++}
 }else{UnitRemoveAbility(u,Str1);UnitRemoveAbility(u,Str10);UnitRemoveAbility(u,Str100)}
 }
Str1- это абилка 9 уровней силы от 1до 9
Str10- от 10 до 90
Str100 - от 100 до 900
также еси на b даёшь false то способности очищаються
kol - если b true то это число прибавит на столько силы
Принятый ответ
0
19
8 лет назад
0
ledoed:
Смотри, а как делать на способностях? Ведь если добавить одну и ту же способность (сила +1 к примеру), то засчитается только 1 способность.
0
15
8 лет назад
0
KaneThaumaturge:
ledoed:
Смотри, а как делать на способностях? Ведь если добавить одну и ту же способность (сила +1 к примеру), то засчитается только 1 способность.
Многоуровневый спел делай. А так они стакаются.
0
19
8 лет назад
0
Ethernet:
Использовать таймеры. Хранить юнита применяющего способность в массиве.
Привет я эту способность давно реализовал, но он подходит только если герой 1 на карте, если я буду хранить героя в массиве, как мне потом проверить именно нужного героя, если потом уже будет изменена переменная.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.