Может ли кто-нибудь неравнодушный пояснить, как его применять?
Я хотел бы создать таймер, привязанный к 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 секунд.

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

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

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

Extremator:
NulliFLie:
Может есть возможность используя этот jass-код остальное написать на триггерах?
Всё это можно сделать на обычных триггерах...
Не поделитесь мудростью идеи?)
Было бы очень здорово будучи новичком получить такой опыт.
0
26
4 года назад
0
Соответственно в этом случае придётся сделать 12 переменных
массивы, конечно, запрещает использовать религия
1
26
4 года назад
1
Наверное, про массивы надо пояснить. Ставя галку массив при создании переменной и указывая его размерность, ты словно говоришь игре: «Создай переменных этого типа столько-то штук.» Только переменных будет на одну больше, чем указано в размерности, так как у компьютера счёт идёт от 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 секунд.
0
7
4 года назад
0
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 секунд.

Загруженные файлы
Принятый ответ
0
37
4 года назад
0
Просто через локалку и вейт, период же большой, ну что вы это вот всё
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.