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

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

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

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

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

call SaveUnitHandle( udg_Hash, id, 0 )
call SaveInteger( udg_Hash, id, 1 )

call TimerStart( t, 10.00, false, function somefunc)
Статьи про jass надо прочитать, если в краце, то создается такой обьект - таймер, к которому крепятся данные, когда этот таймер истечен он вызовет некую функцию, в которой находятся все необходимые действия + чтения данных из таймера запустившего эту функцию, таких таймеров может быть 100500 и не надо никаких триггеров, глобальных переменных (кроме хештаблицы)
6
quq_CCCP:
Enemy1PK, вот так:
local timet t = CreateTimer( )
local integer id = GetHandleId(t)

call SaveUnitHandle( udg_Hash, id, 0 )
call SaveInteger( udg_Hash, id, 1 )

call TimerStart( t, 10.00, false, function somefunc)
Статьи про jass надо прочитать, если в краце, то создается такой обьект - таймер, к которому крепятся данные, когда этот таймер истечен он вызовет некую функцию, в которой находятся все необходимые действия + чтения данных из таймера запустившего эту функцию, таких таймеров может быть 100500 и не надо никаких триггеров, глобальных переменных (кроме хештаблицы)
я читал, но быть хорошим програмером не тоже самое что быть хорошим учителем.
надо блин, не то что по символу объяснять, а даже показывать где какие кнопки нажимать чтобы увидеть текстовые варианты тригеров.
тут без наставника не разобраться.
но очевидно что дополнительные ответы не упростят мне задачу.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.