Может ли кто-нибудь неравнодушный пояснить, как его применять?
Я хотел бы создать таймер, привязанный к Custom value юнита.
С Jass не знаком совсем, делаю всё на триггерах.
Вопрос по применению сводится к двум более простым:
  1. Как мне задать подобный таймер по мне известному числу?
  2. Как мне обратиться к такому таймеру по этому же числу?
Сам Timer Exploit:

8gabriel8:
Наверное, про массивы надо пояснить. Ставя галку массив при создании переменной и указывая его размерность, ты словно говоришь игре: «Создай переменных этого типа столько-то штук.» Только переменных будет на одну больше, чем указано в размерности, так как у компьютера счёт идёт от 0. Например, массив назван timer, размерность его указана 3, это четыре переменных: timer[0]; timer[1]; timer[2] и timer[3]. Можно указывать в триггере custom value юнита, чтобы обращение сразу шло к нужному таймеру.
Есть пара важных замечаний по размерности, во-первых, размер массива не может быть больше 8191 на старых патчах вроде 1.26 и 32767 на новых, начиная с 1.29 вроде, во-вторых, размерность массива критически важна для таймеров, а для типов логическая, целочисленная, реальная, боевая единица, отряд и прочих можно задать размерность 1 и указывать любое число в массиве, не превышая предел, такая переменная нормально будет работать. Все типы переменных на размерность не проверял, просто заметил, что массив таймеров выше размерности не работает, потому упомянул.

Не знаю, как у тебя сделано, потому предположу, что есть способность кормления многострадального, которая переводит его под контроль на минуту. Триггер будет выглядеть так:
Событие: Юнит Приводит способность в действие
Условие: (Ability being cast) = Кормление
Действие: Боевая единица - Change owner (Target of ability being cast) to (Owner of (Casting unit))
Обратный отсчёт - Start timer[(Custom value of (Target of ability being cast))] Однократный на 60 секунд.
зачем все эти заморочки через cusom value просто пишешь
Событие: Юнит Приводит способность в действие
Условие: (Ability being cast) = Кормление
Действие: Боевая единица - Change owner (Target of ability being cast) to (Owner of (Casting unit))
Обратный отсчёт - Start timer[(Playernumber (Target of ability being cast))] Однократный на 60 секунд.

Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
а зачем вам оно если вы вообще не шарите в жассе?
4
Hate:
а зачем вам оно если вы вообще не шарите в жассе?
Объясню концепцию идеи:
Существует Многострадальный Охотник на демонов. Время его контроля ограниченно - в течении фиксированного времени его разум затмевает кровь демонов - тогда-то, будучи демоном, его можно контролировать (и подкармливать трупами демонов, дабы увеличить длительность затуманивания разума). Однако может произойти момент, когда таймер дойдёт до нуля и Охотнику вернётся разум.
Игроков 12 - соответственно таймеров тоже должно быть 12. Теоретически каждому охотнику для каждого игрока можно сделать таймер-переменную - и отслеживать значение каждой из 12 переменных, возвращая, в зависимости от этой переменной принадлежность Охотника тому или иному игроку. Но выглядит это ужасно криво и некрасиво)
Так как у меня при обучении такого охотника присваивается оному Custom value, обозначающий номер игрока, которому он изначально принадлежал - я подумал, что можно было бы в теории привязать таймер по индексу (А индексом будет это самое Custom value). И в ходе поисков осуществления подобного нашёл этот эксплоит.
Может есть возможность используя этот jass-код остальное написать на триггерах?
26
NulliFLie:
Может есть возможность используя этот jass-код остальное написать на триггерах?
Всё это можно сделать на обычных триггерах...
30
Заводите глобальную переменную "SECOND" и какждую секунду таймером делаете SECOND = SECOND + 1.
Записываете на охотников время когда вернуть контроль ""SECOND = SECOND + 120" например.
Проходите циклом и сверяете. Делается одним таймером/триггером на гуй-мй.
26
Тоже сначала о подобном подумал, потому что 12 таймеров делать бред, но пришла мысль, что он, наверное, хочет отображать время таймера для каждого игрока в окне.
28
Не нужно использовать TimerExploit, этот баг могут в любое время исправить. Используйте хеш-таблицы.
4
8gabriel8:
Тоже сначала о подобном подумал, потому что 12 таймеров делать бред, но пришла мысль, что он, наверное, хочет отображать время таймера для каждого игрока в окне.
Да, так и есть)

NazarPunk:
Заводите глобальную переменную "SECOND" и какждую секунду таймером делаете SECOND = SECOND + 1.
Записываете на охотников время когда вернуть контроль ""SECOND = SECOND + 120" например.
Проходите циклом и сверяете. Делается одним таймером/триггером на гуй-мй.
Стоит отметить, что таймер может увеличиваться во времени.
Идея крутая, но она не подходит именно по этой причине - по факту "120" может меняться в процессе игры. Соответственно в этом случае придётся сделать 12 переменных. Что, конечно, менее затратно, но всё равно совсем не эстетично)

Extremator:
NulliFLie:
Может есть возможность используя этот jass-код остальное написать на триггерах?
Всё это можно сделать на обычных триггерах...
Не поделитесь мудростью идеи?)
Было бы очень здорово будучи новичком получить такой опыт.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.