Aller au contenu
  • 0

Tuer un joueur si il est sur un block d'éponge


Question

Posté(e) (modifié)

Version de Minecraft : 1.8.8
Version de Skript : 2.6.5

Type du skript : event script

Description du script :

Salut , j'aimerais un script qui tue les joueurs qui sont sur un block d'éponge dans une certaine zone world guard pour éviter qu'ils fassent un pont avec 

j'ai fait cela :

on steping on sponge:
   if "%region at player%" contains "test":
      kill player

cela fonction mais si quelqu'un pose des blocks d'eponge avant la zone puis la traverse en bridgeant , il ne sera pas kill

quelqu'un a une solution ?

 

Modifié par AIGLE25
ajout d'une vidéo

15 réponses à cette question

Messages recommandés

  • 0
Posté(e) (modifié)

Une boucle qui vérifie constamment le bloc sous le joueur ne serait pas beaucoup plus lourd que le on walk mais plus fiable probablement

on join:
    while player is online:
        if "%region at player%" contains "test":
            if block below player is sponge:
                kill player
                stop
        wait x ticks/seconds # vitesse de vérification


Je connais pas le serveur et comment il fonctionne, mais on pourrait utiliser un on world change, on region enter... comme event pour démarrer la boucle pour éviter qu'elle ne tourne constamment.

Bref, c'est une base à améliorer

 

Modifié par DKSM
  • 0
Posté(e) (modifié)

salut , j'ai déjà essayé ,ca ne marche pas car si tu est sur le coté du block , ca ne détecte pas comme si tu est dessus

il faut trouver un moyen de détecter sur un joueur est posé sur un block ou check si il y a un block d'éponge très près du joueur au niveau du sol (et le script que tu m'as donner fait crash mon serv)

Modifié par AIGLE25
maj
  • 0
Posté(e) (modifié)

Si tu as pas remplacé le  wait x ticks/seconds par quelques choses de logique genre wait 5 ticks, c'est normal xD
Le but étant de t'aiguiller, pas de te pondre le truc parfait ^^


Voici un code de test à ne pas utiliser dans l'état mais à intégrer dans mon code précédent pour analyser une zone de 3x3 sous le joueur
Voici ce que ca donne comme detection: https://scr.dksm.fr/dksm_15_46_09-11-2023.mp4

Il ne restera plus qu'a dire à la place des particules, SI le bloc est une éponge, kill le joueur et stop la boucle

every 5 ticks:
    loop all players:
        set {_locA} and {_locB} to block at loop-player's location
        remove 1 from {_locA}'s y-coord and {_locB}'s y-coord
        add 1 to {_locA}'s x-coord and {_locA}'s z-coord
        remove 1 from {_locB}'s x-coord and {_locB}'s z-coord
        loop all blocks within {_locA} and {_locB}:
            play firework's spark at loop-block

 

Modifié par DKSM
  • J'aime 1
  • 0
Posté(e)
il y a 16 minutes, DKSM a dit :

Ca permet juste de visualiser ca, au final on en a pas besoin ^^ (les particules)

si je met kill player , ca ne fonctionne pas image.png.3069fdff072d7bbd3a2ad203f77817cc.png ducoup aucun moyen de voir si ca marche 

  • 0
Posté(e)

Car tu copies colle sans comprendre le fonctionnement ^^'
J'ai bien précisé avant "Voici un code de test à ne pas utiliser dans l'état"
 

Tu as du copier cette partie de code ci-dessous qu'il ne faut pas utiliser car c'etait juste pour un test donc c'est normal que tu ais une erreur.

every 5 ticks:
    loop all players:
  • 0
Posté(e)
il y a 31 minutes, DKSM a dit :

Car tu copies colle sans comprendre le fonctionnement ^^'
J'ai bien précisé avant "Voici un code de test à ne pas utiliser dans l'état"
 

Tu as du copier cette partie de code ci-dessous qu'il ne faut pas utiliser car c'etait juste pour un test donc c'est normal que tu ais une erreur.


every 5 ticks:
    loop all players:

le script ne semble pas fonction sur la version 2.6.5 car j'ai tester en 2.7.2 et il marche à moitié 

  • 0
Posté(e) (modifié)

Le code final devrait que tu devrais obtenir doit ressembler à ça (pas testé)

 

on join:
    while player is online:
        if "%region at player%" contains "test":
            set {_locA} and {_locB} to block at player's location
            remove 1 from {_locA}'s y-coord and {_locB}'s y-coord
            add 1 to {_locA}'s x-coord and {_locA}'s z-coord
            remove 1 from {_locB}'s x-coord and {_locB}'s z-coord
            loop all blocks within {_locA} and {_locB}:
                if loop-block is sponge:
                    kill player
        wait 10 ticks



 

Modifié par DKSM
  • J'aime 1
  • 0
Posté(e)
il y a 27 minutes, DKSM a dit :

Le code final devrait que tu devrais obtenir doit ressembler à ça (pas testé)

 


on join:
    while player is online:
        if "%region at player%" contains "test":
            set {_locA} and {_locB} to block at player's location
            remove 1 from {_locA}'s y-coord and {_locB}'s y-coord
            add 1 to {_locA}'s x-coord and {_locA}'s z-coord
            remove 1 from {_locB}'s x-coord and {_locB}'s z-coord
            loop all blocks within {_locA} and {_locB}:
                if loop-block is sponge:
                    kill player
        wait 10 ticks



 

merci mec ca a l'air de marche , même si je doit modifs quelques trucs parceque j'ai été imprécis , je testerais ca avec un pote et je te dirais si j'ai besoins d'aide , merci de fou car sans ca je peut pas rendre mon serv publique 

  • 0
Posté(e) (modifié)

j'ai l'impression que "if "%region at player%" contains "test"" ne marche pas car quand je designe une autre région ca me kill quand même (ca ne me donne aucune erreur au chargement) et est-il possible de mettre 0.5 au lieux de 1 ?

Modifié par AIGLE25
ajout
  • 0
Posté(e)

Je n'ai pas testé le comportement avec 0.5, à tester

J'avais fini par me faire une fonction qui récupères le nom de la région exacte pour éviter le contains et faire un is pour être plus précis et sinon pour être sur et si possible utiliser autre chose que la région (World, Position A et B, etc...)

  • 0
Posté(e) (modifié)

Est-ce que je peut mettre plusieurs {_locB} pour pouvoir former un group de position ? car j'aimerais faire check si il y a une éponge sur le coté du joueur mais que si il y a un autre block qui n'est pas de l'air sous le joueur et ben ca ne le kill pas (pareil pour devant , sur et sur chaque cotés) car actuellement on peut cacher des block dans le pont pour ghost kill et abuser de la méchanique

 

Capture d’écran 2023-11-10 110712.png

Modifié par AIGLE25
  • 0
Posté(e)

Je suis pas sur de comprendre..
Actuellement on analyse 9 blocs sous le joueur vu que c'est du 3x3
Si il y a un seul bloc d'éponge dans les 9 blocs, on kill le joueur

Tu veux que si dans ce groupe de 9 blocs, il y a UN bloc qui n'est pas une éponge, on kill pas ?

  • 0
Posté(e) (modifié)

oui c'est un peu ca , je veut bien essayer cela pour voir si ca remplit les condition de kill optimales mais il faudrais vraiment check le block sous le joueur si possible , si il manque quelque choses je t'envérais une vidéo , je pense c'est plus pratique 

Modifié par AIGLE25

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.