Aller au contenu

Mr_Kofte

Membre
  • Compteur de contenus

    77
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Messages posté(e)s par Mr_Kofte

  1. Il y a 20 heures, DKSM a dit :

    Oula, si tu veux envoi moi ton discord en MP pour en parler ^^

    Mais en brouillon ca donnerai

    on place unBloc:
        if le bloc et un bloc utilisé dans les métiers:
            if {bloc::%player's world%} is not set:
                add player's world to {bloc::*}
            if {bloc::player's world%::%chunk at event-block%} is not set:
                add chunk at event-block to {bloc::player's world%::*}
             add location of event-block to {bloc::player's world%::%chunk at event-block%::*}
     
    on break:
        if {bloc::player's world%::%chunk at event-block%} is set:
            if {bloc::player's world%::%chunk at event-block%::%location of event-block%} is set:
                on donne pas d'xp
                remove location of event-block from {bloc::player's world%::%chunk at event-block%::*}

     

    Alors, on est sur un truc très dégueulasse pas utilisable pour l'exemple. C'est juste pour donner une potentiel idée de la démarche ^^
    Il pourrait être optimisé pour être plus précis et minimiser encore les calculs inutiles
    Pour pas conserver certaines variables vides inutilement, il faudrait aussi nettoyer les variables

    Le tout de manière plus propre, probablement avec des fonctions pour que ce soit plus propres et une manière simple de vérifier si c'est un bloc de métier


    Ok, alors voici mon discord : Conor#2001 ou sans le hastag 🙂

  2. Le 10/06/2023 à 19:22, DKSM a dit :

    En faite, tu as pas besoin de stocker de variable sur la buche cassé, de toute façon, elle ne la retiendra pas ^^

    Techniquement, tout ce qui est posé par un joueur n'est pas censé apporté d'XP si on le recasse dans ton système de métier

    Donc ce qu'il faudrait je pense, c'est stocker la position du bloc qui est posé par un joueur, et ensuite vérifier quand on casse un bloc:
    Si le bloc en question fait partie de la liste:
    - on ne donne pas d'XP mais aussi
    - supprimer le bloc de la liste vu qu'il n'existe plus

    Je te recommande aussi pour que la vérif ne soit pas trop lourde de segmenté la recherche du bloc

    Par exemple, si une variable fini par contenir 200 000 blocs, on va pas passer au travers des 200 000 blocs à chaque fois qu'un joueur casse un bloc
    On peut commencer par trier par Monde, ensuite par chunk et enfin par bloc, tu peux aussi segmenter pour optimiser encore plus sur plusieurs couche en Y

    Bien sûr, pour encore optimiser la variable, on ne stockera que les blocs en rapport avec les métiers et pas tous les blocs que pose tous les joueurs ^^


    Salut merci pour ta réponse !

    Aurais-tu un exemple de skript pour que je comprenne comment tu réaliserais celui-ci ?

  3. Version de Minecraft : 1.19.4
    Version de Skript : 2.6.3

    Addons utilisés: /

    Type du skript : Variable bloc

    Description du script :

    Bonsoir !

    J'aimerai faire un petit système qui permet quand le joueur casse une buche ça set une variable sur la buche cassée et s'il l'a pose et qu'il la recasse ça ne lui donne pas d'expérience job...


     

        if {metier.%player's uuid%} is "Bûcheron":
            if event-block is oak log or birch log or spruce log or jungle log or acacia log or mangrove log:
                if {Bloc::%targeted block%} is event-block:
                    send "impossible de faire ça !"
                    stop
                set {Bloc::%targeted block%} to event-block
                add 3 to {experience::jobbucheron::%player's uuid%}
                send action bar "&b➠ &rVous recevez &e+3 &rd'expérience !" to player
                edit score id "xp.%player%" to "&e• &eExpérience: &7%{experience::jobbucheron::%player's uuid%}% / %requiredExpBucheron({level::jobbucheron::%player's uuid%})%" and 90



    Merci à vous !

  4. Pour ce que ça intéresse voici la solution avec le skript-gui :

     

    command /test [<text>] [<text>]:
        trigger:
            if arg 1 is not set:
                create a gui with virtual chest inventory with size 3 named "test":
                    wait 1 tick
                    set {_s} to 0
                    loop {warp::*}:
                        set {_tp} to loop-value
                        make gui slot {_s} with enchanted book named "Warp: %loop-index%":
                            teleport player to {_tp}
                        add 1 to {_s}
                open last created gui to player 

     

    A savoir que le loop value dans le make gui n'est pas fonctionnel et de fait il faut set une variable provisoire en indiquant que c'est bien la valeur définie. Enjoy et RESOLU !

  5. Du coup, comment je peux récupérer ma variable temporaire pour l'ajouter au menu gui ? @Souipi

     

    command /warp [<text>] [<text>]:
        trigger:
            if arg 1 is not set:
                create a gui with virtual chest inventory with size 3 named "&6Warps disponibles:":
                    wait 1 tick
                    set {_s} to 0
                    loop {warp::*}:
                        make gui slot {_s} named "test" with lore "test"
                    #format slot {_s} of player with enchanted book named "&eWarp: %loop-index%" to be unstealable
                        add 1 to {_s}



     

  6. Quand bien même j'utiliserai Tuske le problème reste le même: comment récupérer le nom de l'item sur lequel le joueur va cliquer ? 
    J'ai check la documentation de Tuske et rien n'est expliqué sur ce sujet ou du moins ma problématique...

  7. il y a 21 minutes, Souipi a dit :

    Il y a plusieurs manières de faire un GUI avec Skript :


    (recommandé) Avec skript-gui — Vous avez sûrement entendu parler de TuSKe. L'addon skript-gui est exactement la même chose, mais spécialisé dans les GUIs. L'avantage est qu'il présente beaucoup moins de bugs, et celui-ci est régulièrement mis à jour. Si vous utilisez TuSKe vous devriez changer, c'est toujours mieux ! Vous retrouverez toutes les informations avec la commande .auto skript-gui sur le discord.
    Avec Skript de base — Oui, c'est possible ! Ça fonctionne même très bien. Les syntaxes sont par contre beaucoup moins pratiques : pour empêcher de bouger un item ou faire une action au clic, il faudra utiliser un événement séparé et vérifier qu'il s'agit du bon inventaire.

    Avec SkQuery — Non ! SkQuery est extrêmement déconseillé pour faire des GUIs : ils présentent beaucoup de bugs, sont vieux et pas pratiques. Tournez vous plutôt vers skript-gui, voire Skript.

    Oui alors le GUI fonctionne ce n'est pas le problème c'est dans le inventory click ou je n'arrive pas à récupérer le nom de mon item tout simplement 🙂

  8. Version de Minecraft : 1.19.4
    Version de Skript : 2.6.2

    Addons utilisés: SkQuery

    Type du skript : Ecrivez ici le type de skript souhaité

    Description du script :

    Bonjour, j'ai fais un système de warp par menu gui et j'aimerai maintenant pouvoir m'y téléporter. Pour cela j'aimerai récupérer l'item sur lequel le joueur va cliqué qui est pour toutes les warps un livre enchanté avec le nom du warp défini précédemment.

    Je me doute que c'est dans le on inventory click, mais je ne sais pas faire (loop ? While ?)

    Merci à vous !

    La commande warp qui fonctionne sans problème :

     

    command /warp [<text>] [<text>]:
        trigger:
            if arg 1 is not set:
                open chest with 2 rows named "&6Warps dispos" to player
                wait 1 tick
                set {_s} to 0
                loop {warp::*}:
                    format slot {_s} of player with enchanted book named "&eWarp: %loop-index%" to be unstealable
                    add 1 to {_s}
    
            if arg 1 is "set":
                if arg 2 is set:
                    set {warp::%arg 2%} to player's position
                    send "&7[&6ADMIN +&7] &b» &e&oWarp &c&o&l%arg 2% &e&odéfini en %location of player%"
    
            if arg 1 is "remove":
                if arg 2 is set:
                    if {warp::*} contains {warp::%arg 2%}:
                        clear {warp::%arg 2%}
                        send "&7[&6ADMIN +&7] &b» &c&oVous avez supprimer la warp &e&o%arg 2%"
                    else:
                        send "&7[&cErreur&7] &b» &c&oLa warp &e&o%arg 2% &c&on'existe pas !"


    LA PARTIE ICI QUI NOUS INTERESSE :

    on inventory click:
        if inventory name of player's current inventory is "&6Warps dispos":
            loop {warp::*}:
                if clicked item's name is "&eWarp: %loop-index%":
                    send "ok"

     

  9. Il y a 5 heures, mhugg a dit :

    Hello, tu aurais ton code avec le add? Ou c'est le set?

    tout est la dans le code

    J'ai pu trouver la solution que je partage ici pour supprimer le warp set

     

    if arg 1 is "remove":
                if arg 2 is set:
                    if {warp::*} contains {warp::%arg 2%}:
                        clear {warp::%arg 2%}
                        send "&7[&6ADMIN +&7] &b» &c&oVous avez supprimer la warp &e&o%arg 2%"
                    else:
                        send "&7[&cErreur&7] &b» &c&oLa warp &e&o%arg 2% &c&on'existe pas !"


    Maintenant j'aimerai pouvoir me téléporter à mes warps, comment faire ? J'ai essayé plusieurs choses :

     

    on inventory click:
        if inventory name of player's current inventory is "&6Warps dispos":
            loop {warp::*}:
                if loop-item is {warp::%loop-value%}:
                    send "test"

     

  10. Version de Minecraft : 1.19.4
    Version de Skript : 2.6.3

    Addons utilisés: SkQuery

    Type du skript : Retirer une variable dans une liste GUI

    Description du script :

    Salut à tous !

    Je viens demander un peu d'aide car je ne comprends pas comment retirer un argument émis par le joueur dans ma liste ouverte par un menu GUI. En effet le système est simple, l'admin fait la commande /warp add <nom> et ça ajoute un papier avec les infos du warp dans le menu. Le problème c'est que je n'arrive pas du tout à supprimer le warp existant dans le menu GUI et ni faire de téléportation en cliquant sur le papier du warp.


     

    command /warp [<text>] [<text>]:
        trigger:
            if arg 1 is not set:
                open chest with 2 rows named "&6Warps dispos" to player
                wait 1 tick
                set {_s} to 0
                loop {warp::*}:
                    format slot {_s} of player with paper named "&eWarp: %loop-index%" with lore "&5Clique pour te téléporter" to close
                    add 1 to {_s}
    
            if arg 1 is "set":
                if arg 2 is set:
                    set {warp::%arg 2%} to player's position
                    send "&7[&6ADMIN +&7] &b» &c&oWarp &e&o%arg 2% &c&odéfini en &e&o%location of player%"
    
            if arg 1 is "remove":
                if {warp::*} contains "%arg 2%":
                    remove arg 2 from {warp::*}
                    send "ok remove !"

     

  11. Cela fonctionne merci à toi @scooby906

    Serais-tu comment retirer un item déjà dans la liste de ma commande du style /retireritem:

     

    command /item:
    	trigger:
    		if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur":
    			send "&cCommande réservée pour les hr's de l'équipe admin !"
    			stop
    		else:
    			set {_n} to 0
    			open chest with 6 rows named "&9Listing" to player
    			wait 2 ticks
    			loop {item::*}:
    				format slot {_n} of player  with loop-value to close
    				add 1 to {_n}

     

  12. Il y a 22 heures, scooby906 a dit :

    Bonsoir,

    tu peux faire comme ceci pour sauvegarder ton item:

    
    command /saveitem <text>:
        usage: &cTu dois faire /saveitem NOM
    	trigger:
    		if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur":
    			send "&cCommande réservée pour les hr's de l'équipe admin !"
    			stop
    		set {item::%arg-1%} to player's tool
    		send "Nouvel item sauvegardé: &b%{item::%arg-1%}% !"
    


    Et comme ceci pour le récupérer:

    
    command /retrieveitem <text>:
        usage: &cTu dois faire /saveitem NOM
    	trigger:
    		if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur":
    			send "&cCommande réservée pour les hr's de l'équipe admin !"
    			stop
            if {item::%arg-1%} is set:
                give {item::%arg-1%} to player
                send "Vous venez de recevoir %{item::%arg-1%}%"
            else:
                send "&cErreur, aucun objet avec le nom ""&e%arg-1%""&c n'est enregistré."

    Si tu as des questions sur le code, n'hésite pas à me le dire.

    Bonne fin de soirée à toi ^^


    Super ça fonctionne et comment je peux le give sur un event sans avoir l'argument 1 dans la variable de type :

    On break:
    Code ?

  13. Version de Minecraft : 1.16.5
    Version de Skript : 2.6

    Addons utilisés: SkQuery, SkRayFall, WildSkript

    Type du skript : Récupérer plusieurs item dans une variable dynamique

    Description du script :

    Bonsoir l'équipe !

    Je viens vers vous car j'aimerai faire une commande dyanmique à savoir un /saveitem qui va sauvegarder l'item en question avec le lore et le name custom que j'ai défini avant.

    Le problème c'est que la commande d'effectue comme suivant : /saveitem <nom>

    J'aimerai pouvoir par une variable récupérer donc l'item en question dont la variable aura été <nom> et je ne sais pas comment faire parce que actuellement je suis obligé de le définir moi même comme ça :µ


     

    command /saveitem [<text>]:
    	trigger:
    		if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur":
    			send "&cCommande réservée pour les hr's de l'équipe admin !"
    			stop
    		else:
    			if arg 1 is "cuivre":
    				set {itemcuivre} to player's tool
    				send "Save item: &b%{itemcuivre}% !"
    			if arg 1 is "argent":
    				set {itemargent} to player's tool
    				send "Save item: &b%{itemargent}% !"
    			if arg 1 is "or":
    				set {itemor} to player's tool
    				send "Save item: &b%{itemor}% !"
    				
    			if arg 1 is "pain":
    				set {itempain} to player's tool
    				send "Save item: &b%{itempain}% !"

    Donc j'aimerai pouvoir récupérer la variable <text> donc que l'admin va définir...

    J'espère que j'ai été clair dans mes explications, merci de votre aide !

  14. Ok j'ai trouvé la solution que je vous partage ici :

     

    if {adminrank.%uuid of player%} is "Gestion Loup" or "Garde_loup" or "Héros" or "Développeur":
    		loop all players:
    			
    			if {staffchat.%uuid of loop-player%} is true:
    				if message contains "!":
    					cancel event
    					send "&c[Admin]: %message%" to loop-player
    					
    			else if {staffchat.%uuid of loop-player%} is not set:
    				if message contains "!":
    					stop


    RESOLU

  15. Salut, merci cela fonctionne ;

    En revanche, j'aimerai comprendre comment faire :

    Pour que les autres mecs ayant des permissions autres puisse aussi parler sur le tchat général :


     

    loop all players:
    		if {staffchat.%uuid of loop-player%} is set:
    			cancel event
    			send "Admin: %message%" to loop-player
    		else:
    			if {adminrank.%uuid of player%} is "Gestion Loup":
    				if {aduty.%player%} is true:
    					set the chat format to "&c[&6&l&o%{adminrank.%uuid of player%}%&c] &e&o%player% &7: %message%"
    				else:
    					set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%"


    En gros je veux que juste les mecs qui ont le staff de true = envoie un message uniquement aux mecs qui ont la variable sur true

    ET que les gens classiques n'ayant pas la variable sur true puisse quand même parler... Voici en tout mon chat :


     

    on chat:
    	replace all "&" in message with "§"
    		
    	if {tempmute.%uuid of player%} is true:
    		set {_tempmute} to {time.tempmute.%uuid of player%}
    		remove difference between now and {start.tempmute.%uuid of player%} from {_tempmute}
    		if difference between now and {start.tempmute.%uuid of player%} is less than {time.tempmute.%uuid of player%}:
    			cancel event
    			send "&6[Mute] &fVous êtes réduit au silence pendant &c%{_tempmute}%" to player
    			#wait {_tempmute}
    			
    		else:
    			send "&6[Mute] &fVous pouvez de nouveau parler %player% !"		
    			delete {tempmute.%uuid of player%}
    			delete {time.tempmute.%uuid of player%}
    			delete {now.tempmute.%uuid of player%}
    			stop
    			
    	if {tempjail.%uuid of player%} is true:
    		#set {_test} to difference between now and {start.tempjail.%uuid of player%}
    		set {_mute} to {time.tempjail.%uuid of player%}
    		remove difference between now and {start.tempjail.%uuid of player%} from {_mute}
    		if difference between now and {start.tempjail.%uuid of player%} is less than {time.tempjail.%uuid of player%}:
    			cancel event
    			replace "second" with "seconde" in {_mute}
    			replace "hour" with "heure(s)" in {_mute}
    			replace "day" with "jours" in {_mute}
    			send "&6[Mute] &fVous êtes réduit au silence pendant &c%{_mute}%" to player
    		else:
    			send "&6[Mute] &fVous pouvez de nouveau parler %player% !"		
    			delete {tempjail.%uuid of player%}
    			delete {time.tempjail.%uuid of player%}
    			delete {now.tempjail.%uuid of player%}
    			stop
    
    	
    			
    	if {adminrank.%uuid of player%} is "Garde_loup":
    		if {aduty.%player%} is true:
    			set the chat format to "&c[&3&l&o%{adminrank.%uuid of player%}%&c] &b&o%player% &7: %message%"
    		else:
    			set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%"
    	if {adminrank.%uuid of player%} is "Développeur":
    		if {aduty.%player%} is true:
    			set the chat format to "&c[&b&l&o%{adminrank.%uuid of player%}%&c] &b&o%player% &7: %message%"
    		else:
    			set the chat format to "&c[&9&l&oDév&c] &9&o%player% &7: %message%"		
    				
    	if {adminrank.%uuid of player%} is "Héros":
    		if {gduty.%player%} is true:
    			set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%"
    		else: 	
    			set the chat format to "(Aventurier) %player% : %message%"
    			
    	loop all players:
    		if {staffchat.%uuid of loop-player%} is set:
    			cancel event
    			send "Admin: %message%" to loop-player
    		else:
    			if {adminrank.%uuid of player%} is "Gestion Loup":
    				if {aduty.%player%} is true:
    					set the chat format to "&c[&6&l&o%{adminrank.%uuid of player%}%&c] &e&o%player% &7: %message%"
    				else:
    					set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%"


    Je n'arrête pas d'essayer différente forme et je ne comprends pas la mécanique...

  16. Version de Minecraft : 1.16.5
    Version de Skript : 2.6

    Addons utilisés: SkQuery, WildSkript

    Type du skript : Admin chat

    Description du script :

    Salut l'équipe !

    Je viens vers vous, car je souhaite faire un admin tchat avec une variable définie.

    Je n'arrive pas à faire un loop correct pour vérifier que le joueur ait bien la variable activée

    J'ai cherché sur internet et je trouve souvent ça :


     

    Citation

    loop-player has not permission "test.test"


    Et moi je veux juste vérifier si mon joueur parmi tous les joueurs a cette variable :
     

    set {staffchat.%uuid of player%} to true


    Et ensuite dans le on chat envoyer UNIQUEMENT le message du joueur ayant la variable set à TOUS LES JOUEURS ayant cette même variable set.

    si quelqu'un peut m'aider je vous remercie par avance...
    En effet les loops ne sont pas trop mon fort.

  17. Il y a 2 heures, Zeedix a dit :

    Bonjour,

    As-tu essayé de déclarer ta variable comme ceci :

    
    set {_sender} to arg 1's name

    Ca fonctionne chez moi

    Bonne journée

     

    EDIT:

    Je pense avoir compris le problème. Comme tu set une variable temporaire elle s'efface avant l'inventory click.

    personnellement je ferais comme ça :

    
    set {sender} to arg 1's name

    Ensuite dans l'inventory click:

    
    send "Le joueur défini est: %{sender}% "
    clear {sender}

    Normalement ça devrait le faire 🙂

    Salut, merci pour le coup de pouce cela fonctionne !

    Dernière petite question pour en revenir au skript de base, comment puis-je récupérer le {sender} donc le nom du joueur afin de le mute dans une variable type :

     

    set {muteok.%{mute.sender}%}

     

  18. Non non !

    En fait la commande fonctionne ce n'est pas le problème.

    La commande /mute ouvre un gui jusque la pas de" problème aussi.

    Ensuite je vais dans l'événement ON INVENTORY CLICK

    Et c'est la que j'y arrive pas. Dans l'évent je souhaite récupérer le nom du joueur de la commande /mute et le mettre dans on inventory click

     

    Genre voilà je définie ça dans le menu GUI  
    Donc la logiquement je récupère le pseudo du joueur dans la variable _sender :
     

    set {_sender} to name of arg 1


    Et dans l'event on inventory click je souhaite savoir qui est le joueur définie :
     

    send "Le joueur défini est: %{_sender}% "


    Et ça me marque dans minecraft : "Le joueur défini est <none>"

×
×
  • 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.