JPP de ce bot pas d'idée pour le titre

  • Auteur de la discussion ZZZ
  • Date de début
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
en HTLM:

HTML:
<canvas onclick="shoot()" id="myCanvas"></canvas>

et en JS:

JavaScript:
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');

canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.width = document.body.clientWidth;
canvas.height = document.body.clientHeight;

var keys = {};
var mouse = {
    x: 0,
    y: 0
};
var angle = 0;

window.addEventListener('mousemove', function (event) {
    mouse.x = event.clientX;
    mouse.y = event.clientY;
});

window.addEventListener('keydown', function (event) {
    keys[event.keyCode] = true;
});

window.addEventListener('keyup', function (event) {
    delete keys[event.keyCode];
});

var player = {
    x: (canvas.width / 2),
    y: (canvas.height / 2),
    width: 41,
    height: 174,
    speed: 3,
    speedDiag: 3 / Math.sqrt(2),
};

player.image = new Image();
player.image.src = "./img/cursor.png";
player.image.onload = function () {
    loop();
};

player.shotLightImage = new Image();
player.shotLightImage.onload = function () {
    loop();
}
player.shotLightImage.src = "./img/shotLight Img.png";

function updateAngle() {
    var dx = mouse.x - player.x;
    var dy = mouse.y - player.y;
    angle = Math.atan2(dy, dx);
}

function update() {
    if (keys[38] && !keys[37] && !keys[39]) {
        player.y -= player.speed;
    }
    if (keys[40] && !keys[37] && !keys[39]) {
        player.y += player.speed;
    }
    if (keys[37] && !keys[38] && !keys[40]) {
        player.x -= player.speed;
    }
    if (keys[39] && !keys[38] && !keys[40]) {
        player.x += player.speed;
    }
    if (keys[38] && keys[37]) {
        player.y -= player.speedDiag;
        player.x -= player.speedDiag;
    }
    if (keys[38] && keys[39]) {
        player.y -= player.speedDiag;
        player.x += player.speedDiag;
    }
    if (keys[40] && keys[37]) {
        player.y += player.speedDiag;
        player.x -= player.speedDiag;
    }
    if (keys[40] && keys[39]) {
        player.y += player.speedDiag;
        player.x += player.speedDiag;
    }
    updateAngle();
}

function shoot() {
    ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);
    ctx.restore();
}

function loop() {
    update();
    draw();
    requestAnimationFrame(loop);
}

l'affichage du shotLight ne s'éxecute pas.
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 206
Fofocoins
101 977
Le code présenté semble correct pour afficher l'image `shotLightImage` lorsque l'événement `onclick` est déclenché sur le canvas. Cependant, le dessin de l'image `shotLightImage` devrait également se produire dans la fonction `draw` pour que l'image soit visible constamment.

Voici un exemple de modification du code pour que l'image `shotLightImage` soit dessinée à chaque appel de la fonction `draw` :

```
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

// dessiner l'image shotLightImage
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);

ctx.restore();
}
```

Avec cette modification, l'image `shotLightImage` devrait être dessinée en plus de l'image du joueur à chaque appel de la fonction `draw`.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Le code présenté semble correct pour afficher l'image `shotLightImage` lorsque l'événement `onclick` est déclenché sur le canvas. Cependant, le dessin de l'image `shotLightImage` devrait également se produire dans la fonction `draw` pour que l'image soit visible constamment.

Voici un exemple de modification du code pour que l'image `shotLightImage` soit dessinée à chaque appel de la fonction `draw` :

```
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

// dessiner l'image shotLightImage
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);

ctx.restore();
}
```

Avec cette modification, l'image `shotLightImage` devrait être dessinée en plus de l'image du joueur à chaque appel de la fonction `draw`.
Je veux que le shotLightImage ne s'affiche que quand on click, tu pige ??
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 206
Fofocoins
101 977
Je veux que le shotLightImage ne s'affiche que quand on click, tu pige ??
Je suis désolé pour la confusion précédente. Pour faire en sorte que l'image `shotLightImage` ne s'affiche qu'à la suite d'un clic, vous pouvez ajouter une variable `shotLightVisible` qui est définie sur `true` lorsqu'un clic est détecté et qui est définie sur `false` après que l'image a été affichée une fois.

Voici un exemple de modification du code pour afficher l'image `shotLightImage` uniquement lorsqu'un clic est détecté :

```
var shotLightVisible = false;

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

// dessiner l'image shotLightImage si elle est visible
if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}

ctx.restore();
}

function shoot() {
if (!shotLightVisible) {
shotLightVisible = true;
setTimeout(function () {
shotLightVisible = false;
}, 1000); // définir une durée pour que l'image soit visible
}
}
```

Avec cette modification, l'image `shotLightImage` ne sera affichée que pendant une durée spécifiée après un clic et ne sera pas affichée constamment.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    // dessiner l'image shotLightImage si elle est visible
    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}

document.onclick = function () {
    if (shotLightVisible == false) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100); // définir une durée pour que l'image soit visible
    }
}

Le shotLightImage ne s'affiche que quand on relâche la souris après l'avoir cliqué, je veux l'inverse, que ça arrive quand on clique
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Je suis désolé pour la confusion précédente. Pour faire en sorte que l'image `shotLightImage` ne s'affiche qu'à la suite d'un clic, vous pouvez ajouter une variable `shotLightVisible` qui est définie sur `true` lorsqu'un clic est détecté et qui est définie sur `false` après que l'image a été affichée une fois.

Voici un exemple de modification du code pour afficher l'image `shotLightImage` uniquement lorsqu'un clic est détecté :

```
var shotLightVisible = false;

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

// dessiner l'image shotLightImage si elle est visible
if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}

ctx.restore();
}

function shoot() {
if (!shotLightVisible) {
shotLightVisible = true;
setTimeout(function () {
shotLightVisible = false;
}, 1000); // définir une durée pour que l'image soit visible
}
}
```

Avec cette modification, l'image `shotLightImage` ne sera affichée que pendant une durée spécifiée après un clic et ne sera pas affichée constamment.
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    // dessiner l'image shotLightImage si elle est visible
    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}

document.onclick = function () {
    if (shotLightVisible == false) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100); // définir une durée pour que l'image soit visible
    }
}

Le shotLightImage ne s'affiche que quand on relâche la souris après l'avoir cliqué, je veux l'inverse, que ça arrive quand on clique
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 206
Fofocoins
101 977
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    // dessiner l'image shotLightImage si elle est visible
    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}

document.onclick = function () {
    if (shotLightVisible == false) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100); // définir une durée pour que l'image soit visible
    }
}

Le shotLightImage ne s'affiche que quand on relâche la souris après l'avoir cliqué, je veux l'inverse, que ça arrive quand on clique
Je suis désolé pour la confusion précédente. Pour faire en sorte que l'image `shotLightImage` s'affiche immédiatement lors du clic, vous pouvez simplement appeler la fonction `shoot()` dans l'événement `onclick` du canvas.

Voici un exemple de modification du code pour afficher l'image `shotLightImage` immédiatement lors d'un clic :

```
var shotLightVisible = false;

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

// dessiner l'image shotLightImage si elle est visible
if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}

ctx.restore();
}

function shoot() {
shotLightVisible = true;
setTimeout(function () {
shotLightVisible = false;
}, 1000); // définir une durée pour que l'image soit visible
}

canvas.onclick = function () {
shoot();
};
```

Avec cette modification, l'image `shotLightImage` sera affichée immédiatement lors d'un clic sur le canvas.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}
window.addEventListener("mousedown", function () {
    for (let i = 0; i < 100; i++) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100);
    }
})

la boucle for de fait pas de scintillement comme je voulais, le flash n'apparaît qu'une fois et c'est tout
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Je suis désolé pour la confusion précédente. Pour faire en sorte que l'image `shotLightImage` s'affiche immédiatement lors du clic, vous pouvez simplement appeler la fonction `shoot()` dans l'événement `onclick` du canvas.

Voici un exemple de modification du code pour afficher l'image `shotLightImage` immédiatement lors d'un clic :

```
var shotLightVisible = false;

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

// dessiner l'image shotLightImage si elle est visible
if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}

ctx.restore();
}

function shoot() {
shotLightVisible = true;
setTimeout(function () {
shotLightVisible = false;
}, 1000); // définir une durée pour que l'image soit visible
}

canvas.onclick = function () {
shoot();
};
```

Avec cette modification, l'image `shotLightImage` sera affichée immédiatement lors d'un clic sur le canvas.
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}
window.addEventListener("mousedown", function () {
    for (let i = 0; i < 100; i++) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100);
    }
})

la boucle for de fait pas de scintillement comme je voulais, le flash n'apparaît qu'une fois et c'est tout
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 206
Fofocoins
101 977
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}
window.addEventListener("mousedown", function () {
    for (let i = 0; i < 100; i++) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100);
    }
})

la boucle for de fait pas de scintillement comme je voulais, le flash n'apparaît qu'une fois et c'est tout
Sorry I couldn't contact the ChatGPT think tank :(
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 206
Fofocoins
101 977
Je suis désolé, j'ai fait une erreur en copiant et collant une réponse précédente qui n'a aucun rapport avec votre question. En ce qui concerne votre question initiale, la boucle for que vous avez ajoutée dans l'événement "mousedown" ne fonctionne pas car elle définit la variable "shotLightVisible" à "true" pendant 100 fois très rapidement, ce qui ne permet pas de voir l'image "shotLight" clignoter.

Au lieu de cela, vous pouvez utiliser la fonction "setInterval" pour définir un intervalle de temps pour l'image "shotLight" visible / invisible. Voici un exemple de code qui clignote "shotLight
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Je suis désolé, j'ai fait une erreur en copiant et collant une réponse précédente qui n'a aucun rapport avec votre question. En ce qui concerne votre question initiale, la boucle for que vous avez ajoutée dans l'événement "mousedown" ne fonctionne pas car elle définit la variable "shotLightVisible" à "true" pendant 100 fois très rapidement, ce qui ne permet pas de voir l'image "shotLight" clignoter.

Au lieu de cela, vous pouvez utiliser la fonction "setInterval" pour définir un intervalle de temps pour l'image "shotLight" visible / invisible. Voici un exemple de code qui clignote "shotLight
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}
window.addEventListener("mousedown", function () {
    for (let i = 0; i < 100; i++) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100);
    }
})

la boucle for de fait pas de scintillement comme je voulais, le flash n'apparaît qu'une fois et c'est tout
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 206
Fofocoins
101 977
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}
window.addEventListener("mousedown", function () {
    for (let i = 0; i < 100; i++) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100);
    }
})

la boucle for de fait pas de scintillement comme je voulais, le flash n'apparaît qu'une fois et c'est tout
Je suis désolé pour ma réponse précédente. Vous pouvez utiliser l'événement "mousedown" pour faire clignoter l'image "shotLight" en utilisant la méthode "setInterval". Voici un exemple de code qui fonctionne :

```
var shotLightVisible = false;
var intervalId;

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}

ctx.restore();
}

canvas.addEventListener("mousedown", function (event) {
// initialiser la variable shotLightVisible à true au début du clignotement
shotLightVisible = true;

// afficher l'image shotLightImage toutes les 100 millisecond
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Je suis désolé pour ma réponse précédente. Vous pouvez utiliser l'événement "mousedown" pour faire clignoter l'image "shotLight" en utilisant la méthode "setInterval". Voici un exemple de code qui fonctionne :

```
var shotLightVisible = false;
var intervalId;

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}

ctx.restore();
}

canvas.addEventListener("mousedown", function (event) {
// initialiser la variable shotLightVisible à true au début du clignotement
shotLightVisible = true;

// afficher l'image shotLightImage toutes les 100 millisecond
JavaScript:
var shotLightVisible = false;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(player.x, player.y);
    ctx.rotate(angle + Math.PI / 2);
    ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);

    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
    }

    ctx.restore();
}
window.addEventListener("mousedown", function () {
    for (let i = 0; i < 100; i++) {
        shotLightVisible = true;
        setTimeout(function () {
            shotLightVisible = false;
        }, 100);
    }
})

la boucle for de fait pas de scintillement comme je voulais, le flash n'apparaît qu'une fois et c'est tout
 

🚫 Alerte AdBlock !

Vous avez activé le mode Ninja, et il cache toutes les pubs ! 😆 Un petit coup de pouce pour notre site serait super apprécié si vous pouvez le désactiver. 🙏

🦸‍♂️ J'ai Désactivé AdBlock !