import { world, Player, system } from '@minecraft/server';
let playerTimers = {};
let testtime = 2.5;
let maxTime = 4; //seconds (its x - 1 is true number to compare)
world.afterEvents.entityHitEntity.subscribe(({ damagingEntity: damage }) => {
if (damage.typeId !== 'minecraft:player') return;
let playerId = damage.id;
let currentTimer = playerTimers[playerId];
let time = 0;
let intervalId = system.runInterval(() => {
if (++time >= testtime * 20) {
if (currentTimer) {
system.clearRun(currentTimer.intervalId);
damage.sendMessage(`The counter has been reset due to the new attack!`); //command
}
} else if (++time >= maxTime * 20) {
system.clearRun(intervalId);
delete playerTimers[playerId];
damage.sendMessage(`Player ${damage.name}'s counter completed after ${maxTime - 1} seconds.`); //notice when done
}
});
playerTimers[playerId] = { intervalId };
});```
this is my code, but it keeps looping, I want to
1. Player 1 hit, start the timer
2. before 3.5 secs if P1 hit again -> nothing happens
3. after 3.5 secs if P1 hit again -> both reset timer and execute //command
4. If P1 doesnt do anything -> after 0.5 secs the timer reset, stop and wait till P1 hit again to run again
#Help me fix the logic
1 messages · Page 1 of 1 (latest)