Почему когда я добавляю любое (if/then/else) в этот триггер, карта перестаёт запускаться?
Скил - временное добавление ловкости в зависимости от уровня способности, я хочу сделать еще чтобы пока старый бонус активен, новый не добавлялся.
Или чтобы он не добавлялся но обновил время действия бонуса.
Даже если все действия запихнуть в (if/then/else) карта перестает запускаться.

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

что-то не вижу на скрине как вы пытаетесь запихнуть в if/then/else. Почему должен угадывать
Предположение: ошибка - локальные переменные объявляются всегда первыми. Если там будет какое-то другое действие, а объявление локалок ниже, то это ошибка. Ты вперед, наверное, поставил действие "if/then/else", а потом начал объявлять что-то там,
правильно
local unit u
if (условие) then
	действие
endif
не правильно
if (условие) then
	local unit u
endif
Локалки вначале функции всегда объявляются. Можете в код конвентировать и посмотреть.
вейты не юзайте лучше, используйте таймер. Он поток паузит, еще работает во время паузы, и не точен .

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
6 лет назад
0
Похожие вопросы:

ответ
Это не пробовали?
Или вот это. Хорошая наработка, насколько я помню.
ответ
Поищи у китайцев, у них много чего можно найти, но от их скорости проще застрелится
ответ
Есть логическое условие. Его нахождение в списке не должно доставить проблем.

0
27
6 лет назад
Отредактирован MpW
0
что-то не вижу на скрине как вы пытаетесь запихнуть в if/then/else. Почему должен угадывать
Предположение: ошибка - локальные переменные объявляются всегда первыми. Если там будет какое-то другое действие, а объявление локалок ниже, то это ошибка. Ты вперед, наверное, поставил действие "if/then/else", а потом начал объявлять что-то там,
правильно
local unit u
if (условие) then
	действие
endif
не правильно
if (условие) then
	local unit u
endif
Локалки вначале функции всегда объявляются. Можете в код конвентировать и посмотреть.
вейты не юзайте лучше, используйте таймер. Он поток паузит, еще работает во время паузы, и не точен .
Принятый ответ
0
17
6 лет назад
0
в vjass локалки моно внутри if или циклов ну использовать их вне их блока незя
0
6
6 лет назад
Отредактирован Enemy1PK
0
Steal nerves:
что-то не вижу на скрине как вы пытаетесь запихнуть в if/then/else. Почему должен угадывать
Предположение: ошибка - локальные переменные объявляются всегда первыми. Если там будет какое-то другое действие, а объявление локалок ниже, то это ошибка. Ты вперед, наверное, поставил действие "if/then/else", а потом начал объявлять что-то там,
правильно
local unit u
if (условие) then
	действие
endif
не правильно
if (условие) then
	local unit u
endif
Локалки вначале функции всегда объявляются. Можете в код конвентировать и посмотреть.
вейты не юзайте лучше, используйте таймер. Он поток паузит, еще работает во время паузы, и не точен .
респект таким ребятам, теперь работает.
но я не понимаю как тут можно реализовать через таймер, если убирать бонус ловкость другим тригером с событием "таймер иссякает" то как таймер можно указать только глобальную переменную, а это вызывает баг даже когда 2 юнита использовали скил.
0
21
6 лет назад
Отредактирован Raised
0
Enemy1PK, локалки нельзя передевать между функциями, но можно сохранять в хеш-таблицы или структуры.
0
28
6 лет назад
0
Enemy1PK, таймер может быть локальным
и таймер может вызывать на прямую функцию без использования триггеров
впрочем не обязательно использовать локальные таймеры
создай список юнитов
когда юнит применяет твою абилку проверяй есть ли он в списке и если нету то добавляй его в список и атач к нему число 300 (продолжительность бафа)
если он есть в списке то установи значение этого числа = 300
одним глобальным таймером пробегай по списку и уменьшай у каждого юнита это число на 1
если число достигло 0 то удаляй его из списка и отбирай ловкость
0
6
6 лет назад
0
GF RaiseD:
Enemy1PK, локалки нельзя передевать между функциями, но можно сохранять в хеш-таблицы или структуры.
учитывая что там написано на jass, непонятно когда я это освою, но лучше чем ничего.
nvc123:
Enemy1PK, таймер может быть локальным
и таймер может вызывать на прямую функцию без использования триггеров
впрочем не обязательно использовать локальные таймеры
создай список юнитов
когда юнит применяет твою абилку проверяй есть ли он в списке и если нету то добавляй его в список и атач к нему число 300 (продолжительность бафа)
если он есть в списке то установи значение этого числа = 300
одним глобальным таймером пробегай по списку и уменьшай у каждого юнита это число на 1
если число достигло 0 то удаляй его из списка и отбирай ловкость
а ты мне просто мозг взорвал, про таймеры не помешало бы уточнить.
как и про группы, я могу добавить юнита в группу, но как именно к нему присвоить число 300 и потом уменьшать у каждого.
Может будет проще если подскажете как "цепляться" за баф? проверять висит ли конкретный баф, и когда он пропадает - ловкость удалятся.
Потому что в условиях есть только бесполезная функция buff равно buff.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.