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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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
Просто через локалку и вейт, период же большой, ну что вы это вот всё
1
7
4 года назад
1
ScorpioT1000:
Просто через локалку и вейт, период же большой, ну что вы это вот всё
судя по его прошлым вопросам он не знает что такое локалка и вообще новичок в гуй
0
37
4 года назад
0
Именно поэтому будем пичкать таймерами?)

0
7
4 года назад
0
ScorpioT1000:
Именно поэтому будем пичкать таймерами?)

да от теории статьей он ничего не поймет пока полностью не изучит гуй и не пройдет практику джасса а потом через common.j и blizzard.j не станет стирать все бж))

для этого требуется год( сужу по себе)

при том что я играю в варкрафт с 2011 года и знаю все о способностях и о движке

не исключается еще что он должен еще пройти курс по наработкам из сайтов))
1
26
4 года назад
1
Здравая мысль! А то человек только вчера открыл редактор триггеров и попытался что-то элементарное сделать, как ему сразу тычут локалками, утечками, непонятным кодом и статьями, на одно чтение которых уйдёт несколько дней, причём окажется, что не только сами статьи надо читать, но и все комментарии к ним...

Кому-то такое по фану, но остальным нет. У кого-то повседневная деятельность связана с программированием, у остальных нет.
0
29
4 года назад
0
да от теории статьей он ничего не поймет пока полностью не изучит гуй и не пройдет практику джасса а потом через common.j и blizzard.j не станет стирать все бж))
Я вот не изучил гуй, и умею только в zinc, что я делаю не так?
и знаю все о способностях и о движке
Сильное заявление.
А то человек только вчера открыл редактор триггеров и попытался что-то элементарное сделать, как ему сразу тычут локалками, утечками, непонятным кодом и статьями, на одно чтение которых уйдёт несколько дней
Смотря что подразумевать под элементарным. Или вы хотели волшебную кнопку?

Если на православном гуй-муй. Исходим из того, что один игрок - один охотник. Заводим массив таймеров, юнитов, окон таймеров. Всё по номеру игрока. Когда даём управление игроку - стартуем таймер, показываем окно, отбираем контроль записывая в custom value юнита номер игрока. Если нужно продлить таймер - то получаем из custom value номер игрока - он же индекс массива. Останавливаем таймер и запускаем заново.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.