простая карта в которой можно покидать коил нову форкед, узнав время прокаста
  1. почему то время таймера часто получается кратным 0.025 сек. как это решить?
  2. как запустить таймер с момента как нажимается кнопка способности а не когда эта наведённая способность на юнита нажата?
  3. иногда в целом подсчёт сбивается и показывает какие то большие цифры, не понял когда именно это происходит.
подскажите как лучше сделать триггеры подсчёта, любые предложения приветствую
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
29
1 год назад
0
Приложи код создания таймера, не у всех варкрафт под рукой.
0
29
1 год назад
0
Предупреждение автору публикации

1 пункт: 10.1 Размещение нескольких вопросов в одном ресурсе.
2
13
1 год назад
2
Попробуй отследить события - связаные с началом каста, старт каста, отдал приказ. Возможно что то и сработает
2
29
1 год назад
2
Попробуй отследить события - связаные с началом каста
0
13
1 год назад
0
nazarpunk, в идеале хочу отследить первое нажатие на кнопку способности а не наведение на цель
0
29
1 год назад
0
easypeasy, версия варкрафта то какая?
0
13
1 год назад
Отредактирован easypeasy
0
nazarpunk, 1.26 и ещё интересно из за чего случается так что если таймер идёт больше секунды или 2 то значения не кратны 0.025 сек. а если меньше то обязательно кратен 25 милисекундам
0
29
1 год назад
0
easypeasy, без кода сложно сказать.
0
13
1 год назад
0
Загруженные файлы
0
29
1 год назад
0
easypeasy, ууухх, логику я не что-то не пойму. У тебя один таймер на всех юнитов.
Тебе какое время узнать то нужно?
0
13
1 год назад
0
nazarpunk, суммарное время прокаста всех 3 способностей в идеале от момента нажатия кнопки первой способности(в любой последовательности коил, нова или форкед) и до момента нажатия кнопки третьей способности. для этого я и использую 1 таймер
2
29
1 год назад
Отредактирован nazarpunk
2
easypeasy, по идее должно работать, не проверял. Здесь ловятся любые три способности, думаю проверку сам сможешь дописать.
//! zinc
    library SpellTimer {
        constant real tick = .01;
        real elapsed = 0;
        integer counter = 0;
        timer tmr = CreateTimer();

        function onInit() {
            t = CreateTrigger();
            for (0 <= i < bj_MAX_PLAYER_SLOTS) {
                TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_CAST, null);
            }
            TriggerAddAction(t, function() {
                local real time;

                if (counter == 0) {
                    TimerStart(tmr, tick, true, function() {
                        elapsed += tick;
                    });
                }
                counter += 1;

                if (counter < 3) {
                    return 
                };

                PauseTimer(tmr);
                time = elapsed;
                elapsed = 0;
                counter = 0;
                BJDebugMsg("TimeElapsed: " + R2S(time));
            });

            t = null;
        }
    }  
//! endzinc
Чтобы оставить комментарий, пожалуйста, войдите на сайт.