Задержка скрипта JS

  • Автор темы Автор темы roufon
  • Дата начала Дата начала

roufon

Trainee
Не могу разобраться с одним моментом.
Я пытаюсь настроить спаун, после смерти. Как только игрок погибает, должно пройти какое то время, после чего он появится на выбранной мной точке.

Вопрос: Каким образом подключить таймер(задержку) и какой должен быть скрипт, чтобы после смерти прошло пару секунд и человек появился на спауне? Заранее спасибо!

Вот пример:

Код:
mp.events.add('playerDeath', (player,) => {
    player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length,)]);
    player.health = 100;
});
 
Тебе нужен setTimeout
Что то вроде
JavaScript:
mp.events.add('playerDeath', (player) => {
    setTimeout(
        () => {
            if(!mp.players.exists(player)) return; //Пока ждали игрок мог выйти с сервера
            player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length,)]);
            player.health = 100;
        },
        4000 // Ждем 4 секунды
    );
});
 
Тебе нужен setTimeout
Что то вроде
JavaScript:
mp.events.add('playerDeath', (player) => {
    setTimeout(
        () => {
            if(!mp.players.exists(player)) return; //Пока ждали игрок мог выйти с сервера
            player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length,)]);
            player.health = 100;
        },
        4000 // Ждем 4 секунды
    );
});
Спасибо большое, буду пробовать. Очень интересуюсь, но знаний не хватает пока что. Спасибо за ответ)
 
Тебе нужен setTimeout
Что то вроде
JavaScript:
mp.events.add('playerDeath', (player) => {
    setTimeout(
        () => {
            if(!mp.players.exists(player)) return; //Пока ждали игрок мог выйти с сервера
            player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length,)]);
            player.health = 100;
        },
        4000 // Ждем 4 секунды
    );
});
Лучше уже очищать таймаут после выполнения

Код:
mp.events.add('playerDeath', (player) => {
    let deathTimer = setTimeout(
        () => {
            if(!mp.players.exists(player)) return; //Пока ждали игрок мог выйти с сервера
            player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length,)]);
            player.health = 100;
            clearTimeout(deathTimer);
        },
        4000
    );
});
 
Объясни пожалуйста чем лучше?
Когда писал систему фермы, столкнулся с такой проблемой что таймаут ведет себя неадекватно, есть такое понятие очередь, и когда у тебя возникает несколько таймаутов они стакаются и теряется id самого таймера, для того чтобы исключить такой вот баг, после выполнения приходилось чистить таймаут по идентификатору
Довольно интересная статья
 
Когда писал систему фермы, столкнулся с такой проблемой что таймаут ведет себя неадекватно, есть такое понятие очередь, и когда у тебя возникает несколько таймаутов они стакаются и теряется id самого таймера, для того чтобы исключить такой вот баг, после выполнения приходилось чистить таймаут по идентификатору
Довольно интересная статья
А у тебя случайно не остался фрагмент кода где этот баг был? Ну, хотя бы в упрощенном виде. Было бы интересно с этим поиграться и подебажить.
Таймеры не должны стакаться в event loop:unsure:
 
Увы
Напиши простой скриптец
Создание чекпоинта
Удаление чекпоинта
При входе в чек удаляй чекпоинт и стартуй таймер при этом по окончанию таймера создавай чек на той же позиции

У меня были жестко завязыны id чекпоинтов у каждого чека свои кординаты
И после нескольких входов выходов
Начиналась вакханалия
Чек с 6 айди мог стакаться с 11 идом, при всём при этом я дебажил enterCheckpoint иды верные а координаты с заднице (=
Скрин нашел (=8wCo5Xn3U1M.jpg
 
Последнее редактирование:
Прикольно. Буду иметь в виду, что могут быть такие приколы. Спасибо что поделился!
 
Назад
Верх