Уже пять лет задаю вопросы и ответы здесь, как моя личная записная книжка по редактору варика. Спасибо вам, люди)

Все постоянно ругают вейт, даже как то кто то кидал мне наработку, чтобы вейт не глючил, только наработка не работает.
Все твердят заменять таймером, как я понял, это то же самый таймер что только на локалках и без окна? Если вас хватит скиньте пример такого таймера, если возможно без использования хэш таблицы( я не понимаю ее смысл)
Буду заменять вейты))

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

SсRealm:
То есть я пишу этот код и вейты больше не глючат?
Нет)) это так не работает.
Если ты хотя бы немного понимаешь как работает Jass, то просто используй это вместо вэйта.
Вот так. В данном случае 10. это 10 секунд.

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
26
3 года назад
0
SсRealm, ты лучше напиши что именно ты пытаешься сделать.
0
20
3 года назад
0
Extremator:
SсRealm, ты лучше напиши что именно ты пытаешься сделать.
Мне просто нужно что то что заменит вейт, для короткого периода в триггере.
То что сможет отсчитать секунды вместо вейта. Да я уже поставил WAIT_EX( 20. ) Он работает. Но если есть возможность сделать таймер для короткого периода на custom script - вообще буду счастлив!
0
26
3 года назад
0
SсRealm, ты меня не понял. Я прошу тебя сформулировать конкретную ситуацию, когда тебе нужна такая 20-ти секундная отсрочка. Тот вэйт что я тебе дал, точно так же косячит как и обычный, просто в другом месте. У него погрешность от 0.075 до 0.125 (чаще всего всё же выдаёт 0.100), которую надо либо вычитать из стартового времени, либо допускать как побочную (т.е. внутри можно сделать set s = s - .1 , но это всё равно не поможет если время меньше 0.1 сек).
Лучше всего - юзать таймеры. Как их юзать - тут надо уже понимать чуть больше, чем просто то как из запускать и реагировать на них.
0
20
3 года назад
0
Extremator:
SсRealm, ты меня не понял. Я прошу тебя сформулировать конкретную ситуацию, когда тебе нужна такая 20-ти секундная отсрочка. Тот вэйт что я тебе дал, точно так же косячит как и обычный, просто в другом месте. У него погрешность от 0.075 до 0.125 (чаще всего всё же выдаёт 0.100), которую надо либо вычитать из стартового времени, либо допускать как побочную (т.е. внутри можно сделать set s = s - .1 , но это всё равно не поможет если время меньше 0.1 сек).
Лучше всего - юзать таймеры. Как их юзать - тут надо уже понимать чуть больше, чем просто то как из запускать и реагировать на них.
Понимаешь, у меня триггер огромный, там безумное число if( если) Методом научного тыка я пришел к выводу, что один огромный триггер для 50 волн работает лучше чем пятьдесят отдельных. Сам понимаешь, никакого вейта там быть не может, но паузы в нем, мне необходимы, хотя бы 20- 50 секунд в нутри одной волны
Его запускает другой триггер, который секет постоянно, как переменная убитых юнитов ноль так и запускает. Заюзать внутрь таймер вместо вейта- самое то!
3
21
3 года назад
3
SсRealm, понимаешь, нельзя просто взять и вставить таймер вместо вейта? Они немного по разному работают. Вейт просто приостанавливает на время выполнение кода в текущем потоке, а таймер создаёт новый поток, запуская указанную функцию. В гуи нельзя создавать функции, единственный способ как-то взаимодействовать с этим таймером, - это триггер, регистрирующий завершение отсчёта времени. Тебе для каждого таймера придётся создавать свой триггер, а уже там выполнять продолжение твоего кода.
0
18
3 года назад
0
безумное число if( если)
Если проверяется номер волны, то проще через массивы и базу данных сделать.
Например, при запуске карты создать целочисленную переменную (означающую номер волны) Wave = 1 и установить переменную-массив UnitType[1] = Скелет, UnitType[2] = Зомби и т. д. Когда все юниты в волне убиты, установить Wave = Wave+1. И действовать уже не через конкретный тип, а через переменную - создать UnitType[Wave] в нужном месте на карте
1
27
3 года назад
1
есть счетчики триггера. сколько раз они запускались. вот их можно использовать
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.