Aller au contenu

DKSM

Membre
  • Compteur de contenus

    98
  • Inscription

  • Dernière visite

  • Jours gagnés

    5

Messages posté(e)s par DKSM

  1. Salut, j'ai fais ce que tu demandes avec une petite optimisation légère

     

    on left click with a stone sword on a door:
    	if {crochet::%player%} is not set:
    		set {crochet::%player%} to true
    		while target block is a door:
    			add 1 to {_counter}
    			clear {_bar::*}
    			loop 10 times:
    				if {_counter} >= loop-value:
    					add "&c▌" to {_bar::*}
    				else:
    					add "&3▌" to {_bar::*}
    			set {_bar} to "%{_bar::*}%"
    			replace all ", " and " and " in {_bar} with ""
    			send action bar "&3Crochetage: %{_bar}%" to player
    			if {_counter} = 10:
    				send action bar "&3Crochetage: &aDéverouillé !" to player
    				remove 1 of stone sword from player's inventory
    				toggle clicked block
    				clear {crochet::%player%}
    				stop
    			wait 20 tick
    		clear {crochet::%player%}

     

    • J'aime 1
  2. En effet, à cause d'une limitation dans le fichier de config de skript, voici un autre code qui esquive le problème

     

    on right click with magma cream:
    	if name of player's tool is "&bBatisseuse":
    		cancel event
    		set {_loc} to event-block's location
    		loop 256 times:
    			if block above {_loc} is air:
    				set block above {_loc} to stone
    				add 1 to {_loc}'s y-coord

     

  3. Hi

     

    command /batisseuse:
    	trigger:
    		give 1 of magma cream named "&bBatisseuse" to player
    
    on right click with magma cream:
    	if name of player's tool is "&bBatisseuse":
    		cancel event
    		loop blocks above event-block:
    			set block above loop-block to stone

     

  4. J'ai fait ça, je ne m'occupe pas de la commande skinrestorer par contre, c'est la dernière ligne en bas qu'il faudra modifier
    J'ai ajouté un délai de 15 secondes pour choisir

     

    on right click on entity:
        if name of event-entity is "NomDuNpc":
            if {skin::%player%::status} is not set:
                send "&eVeuillez indiquer dans le chat le nom du skin que vous souhaitez avoir:" to player
                set {skin::%player%::status} to true
                set {skin::%player%::time} to 15
                while {skin::%player%::time} is set:
                    remove 1 from {skin::%player%::time}
                    if {skin::%player%::time} = 0:
                        clear {skin::%player%::*}
                    wait 1 second
            else:
                send "&cVous avez déjà une demande de skin en cours." to player
    
    on chat:
        if {skin::%player%::status} = true:
            cancel event
            clear {skin::%player%::*}
            send "&eVous avez changé votre skin en &b%message%&e." to player
            # ICI LA COMMANDE SKINRESTORER pour changer le skin en %message%


     

     

  5. Voici une nouvelle version avec l'exemple >> https://scr.dksm.fr/dksm_11_38_15-11-2023.mp4
     

    on disconnect:
        if {netherStarSpeed::%player%} is set:
            set player's walk speed to 0.2
            clear {netherStarSpeed::%player%}
    
    on right click with nether star:
        if name of player's tool is "speed":
            add dandelion and poppy to {_flowers::*} # Liste des fleurs
            set {_areaSize} to 20 # Rayon de la zone
            set {_effectDuration} to 8*10 # Durée 8 secondes (garder le *10 pour convertir en ticks)
            set {_areaEffet} to player's location
            set {netherStarSpeed::%player%} to true
            loop all blocks in radius {_areaSize} around player:
                if loop-value is not air:
                    if loop-value is dirt or grass block: # Blocs ou les fleurs peuvent apparaitres
                        if block above loop-block is air:
                            chance of 60%:
                                set block above loop-block to random element of {_flowers::*}
                                add location above loop-block to {_flowersLocation::*} # SUPPRESSION AUTOMATIQUE DES FLEURS
            while {_effectDuration} > 0:
                if distance between player and {_areaEffet} < {_areaSize}:
                    set player's walk speed to 0.8
                else:
                    set player's walk speed to 0.2
                remove 1 from {_effectDuration}
                wait 2 tick
            set player's walk speed to 0.2
            clear {netherStarSpeed::%player%}
            loop {_flowersLocation::*}: # SUPPRESSION AUTOMATIQUE DES FLEURS
                set block at loop-value to air # SUPPRESSION AUTOMATIQUE DES FLEURS

    Pour la partie fleurs qui ne fonctionnent pas, je n'utilise pas la version 1.8 qui peut potentiellement poser un problème, j'ai gardé que dandelion et poppy dans celui là au cas ou ce sera à toi de corriger la partie fleurs

    Sinon voila, au lieu d'appliquer un effet speed, je change carrément la vitesse de marche du joueur tant qu'il est dans la zone et ajoute une petite sécurité si il déconnecte avec l'effet speed

  6. Salut,
    Tu aura besoin de l'addons Skript-GUI si tu as pas: https://github.com/APickledWalrus/skript-gui/releases/tag/1.3

    Voici une base pour faire la suite :
     

    command /navigation:
        trigger:
            create a gui with virtual chest with 6 rows named "Le nom du menu":
                make gui slot 0 to diamond pickaxe named "Minage":
                    make player execute command "/minage"
                    close player's inventory
                make gui slot 1 .....:
                    blabla
                    blabla
                make gui slot 2 .....:
                    blabla
                    blabla
                etc....
    
            open last created gui to player


    C'est assez répétitif, tu devrais t'en sortir.

  7. Ta demande fait mal au yeux ^^'

    Met ton code dans des balises code..
    Pour ton message principal essai de respirer, ca va bien se passer tu sais... Tu es autorisé à mettre des . et , ainsi que sauter des lignes.

  8. 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



     

    • J'aime 1
  9. 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

     

    • J'aime 1
  10. Typiquement le genre de skript ou je recommanderais l'utilisation d'un plugins, c'est assez casse tête pour faire quelque chose de propre et sécurisé.


    Tu peux en revanche faire un skript qui ajoute/enlève la permission d'utiliser le plugins en question ce qui fera finalement ce que tu souhaites 😃

  11. J'ai fait un petit code de démonstration et un exemple du résultat https://scr.dksm.fr/dksm_14_49_09-11-2023.mp4
     

    on right click with nether star:
        if name of player's tool is "speed":
            add dandelion, poppy, blue orchid and red tulip to {_flowers::*} # liste des fleurs
            loop all players in radius 10 around player:
                apply speed 2 to loop-player for 5 seconds # durée et puissance de l'effet
            loop all blocks in radius 10 around player:
                if loop-value is not air:
                    if loop-value is dirt or grass block: # bloc ou la fleur peut apparaitre
                        if block above loop-block is air:
                            chance of 3%:
                                set block above loop-block to random element of {_flowers::*}
    # A PARTIR d'ICI, C'EST SI ON VEUT SUPPRIMER LES FLEURS AUTOMATIQUEMENTS APRES UN CERTAIN TEMPS
                                add location above loop-block to {_flowersLocation::*}
            wait 5 seconds # temps avant de supprimer les fleurs
            loop {_flowersLocation::*}:
                set block at loop-value to air
                wait 1 tick

     

  12. 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

     

  13. J'ai une question un peu bête, si le joueur clique droit avec la nether star, ca crée une zone et si celui-ci se trouve dedans, il obtiens vitesse ???

    Euh mais comment pourrait-il être ailleurs ? lol

    Tu voulais peut-être dire que ca donne vitesse à celui qui a cliqué droit ainsi que tous les joueurs qui sont dans la zone de 20 blocs ?

  14. Bon, je t'ai fait une base en utilisant l'addons très populaire Skript-yaml qui est le plus adapté pour pas trop se prendre la tête.

    Donc il te faudra pour commencer l'addons Skript-yaml >> https://github.com/Sashie/skript-yaml

     

    Voici le code fonctionnel qui pourra te servir de base avec les explications :

    on join:
        load yaml "plugins/Skript/scripts/logs/%player%.yml" as "%player%"
    on quit:
        save yaml "%player%"
    
    on load:
    	load yaml "plugins/Skript/scripts/logs/publicChat.yml" as "publicChat"
    on unload:
        save yaml "publicChat"
    
    
    
    
    on chat:
        set {_time} to now formatted as "dd/M/yy HH:MM"
        add "[%{_time}%][Chat] %player% > %message%" to yaml list "logs" of "%player%"
        add "[%{_time}%][Chat] %player% > %message%" to yaml list "logs" of "publicChat"
    
    on damage:
        if attacker is a player:
            set {_time} to now formatted as "dd/M/yy HH:MM"
            add "[%{_time}%][Attack] %attacker% > %victim% | %tool of attacker%/%damage% dégâts" to yaml list "logs" of "%attacker%"
    
    
    
    command /logs [<player>]:
        trigger:
            save yaml "%arg-1%" and "publicChat"
            set {_logSize} to 10
            if arg-1 is not set:
                send "%nl%&eLogs du chat public:"
                set {_chat::*} to yaml list "logs" from "publicChat"
                loop {_chat::*}:
                    if loop-index parsed as integer > size of {_chat::*} - {_logSize}:
                        send loop-value
            else:
                send "%nl%&eLogs du joueur &b%arg-1%:"
                set {_chat::*} to yaml list "logs" from "%arg-1%"
                loop {_chat::*}:
                    if loop-index parsed as integer > size of {_chat::*} - {_logSize}:
                        send loop-value

    Voici la façon dont sa fonctionne:

    • Un joueur se connecte: On charge un fichier yml en mémoire à son nom, si le fichier/dossier n'existe pas, il sera automatiquement créé.
    • Si il se déconnecte: On sauvegarde le fichier en dur
    • Quand le skript se charge: On charge un fichier yml qui s'appel publicChat
    • Quand le skcript se décharge: On sauvegarde le fichier
    • Quand un message est tapé dans le chat: On ajoute le message dans le yml du joueur et aussi celui du chatPublic
    • Lorsque un joueur fait des dommages: On ajoute dans le yml du joueur le joueur, la victime, l'arme et les dégats...


    Ensuite pour la commande logs:

    Si on indique pas le nom d'un joueur, ca va envoyer les logs du globalChat sinon, on envoi les logs du joueur.
    Il y a une variable {_logSize} configuré à 10 qui permet d'afficher les 10 dernières lignes du fichier logs, tu peux le changer comme bon te semble.

    Maintenant à savoir que ceci est une base pour faire quelque chose de plus poussé comme:

    • Ajouté ton truc de "un joueur dans les 15 blocs qui fait quelque chose"
    • Supprimer les historiques trop vieux ou qui commence à être très gros ?
    • etcc etcc

    Et voilà en gros ce que ca donne > https://scr.dksm.fr/dksm_13_41_09-11-2023.mp4

    Bonne journée

  15. C'est vrai qu'on ne peut pas récupérer le contenu du log directement sans addons.. Donc tu peux faire soit  :

    • Un addons pour lire le fichier .log
    • Utiliser les variables listes de Skript de base mais faut pas en abuser en terme d'historique
    • Skript-Yaml qui lui sera un choix entre deux car il fera des fichiers plus optimisés que les variables liste de Skript et tu pourra aussi faire la commande
    • Une base de donnée, mais ce sera un peu plus technique à setup et bien sur, il te faut une base de donnée + un addons pour intéragir avec
×
×
  • 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.