Aller au contenu

Liock

Membre
  • Compteur de contenus

    12
  • Inscription

  • Dernière visite

  • Crédits

    24 [Faire un don]

Réputation sur la communauté

3 Neutre

À propos de Liock

  • Rang
    Nouveau

Visiteurs récents du profil

Le bloc de visiteurs récents est désactivé et il n’est pas visible pour les autres utilisateurs.

  1. Re, Finalement, je suppose que le code que tu m'avais envoyé en réponse est la meilleure chose que je puisse utiliser pour l'instant. Je vais commencer à manquer de temps (ce qui explique ma réponse tardive, d'ailleurs, et je m'en excuse). Merci pour l'aide apportée encore une fois.
  2. Je n'ai pas l'impression que le if répété fonctionne, je vais faire un dernier essai et tenter le loop, si ça ne fonctionne pas je laisserai le code tel qu'il est en attendant de trouver une solution alternative dans le futur : - )
  3. Oui, peut-être que c'est une solution, même si j'avais cru comprendre qu'on pouvait stocker des éléments dans une variable, j'avais pensé alors qu'il était possible de l'annuler mais après je ne vais pas me plaindre si cette technique là fonctionne. Je vais soumettre ceci à essai et voir ce que ça donne.
  4. J'en ai entendu parler. Néanmoins j'aimerais éviter, du fait que beaucoup de mes codes vont devoir arborer la même mécanique, et qu'en vue d'une ouverture prochaine de mon serveur au grand public, je risque effectivement d'avoir des risques concernant les performances assez conséquents ^^ Déjà, la bonne nouvelle est qu'on semble se rapprocher d'une solution. Je vais parler du code qui semble fonctionner en ce qui concerne la mécanique de déco/reco en elle-même. Lorsque le joueur se déconnecte alors que le code /malus prison (joueur) est lancé, ce dernier est téléporté de nouveau dans le monde « world ». Le message « Petit malin... Tu as échappé à mon test...! Bravo petit cobaye » s'affiche. Semi coup de tête de ma part, il était tard et effectivement j'ai constaté que cela fonctionnait. Le fait est, que le code fonctionne car le joueur se fait directement téléporter en prison, et que plus rien n'arrive après, les événements s'achèvent net. Il y a peu de commandes et j'ai effectivement manqué d'attention sur ce coup. Lorsque j'ai rajouté d'autres effets et événements, il s'est avéré que ces derniers survenaient même après la reconnexion du joueur, et se mélangeaient alors aux autres commandes qui elles avaient pour but de se lancer pour libérer le joueur et envoyer le message de libération (cf. ci-dessus) lorsqu'il se reconnecte. Pour être plus clair, voici la version du code-test : command /malus [<text>] [<offline player>]: permission: malus.command permission message: "Permission de la commande /malus." trigger: arg-1 isn't "prison": send "Erreur, veuillez définir le malus à infliger." stop trigger arg-2 isn't set: send "Veuillez sélectionner une cible." stop trigger arg-1 and arg-2 are set: arg-2 is online: if {prison::%arg-2%} doesn't exist: set {prison::%arg-2%} to true execute console command "/jail %arg-2% cellule4" send "PrisonnnnnNnNnn !!" to arg 2 #< laps de temps très court car on a que 2 commandes, une pour TP le joueur, une pour un texte. stop trigger if {prison::%arg-2%} is set: execute console command "/unjail %arg-2%" execute console command "/mv tp %arg-2% world" send "Annulé." else: send "Veuillez choisir un joueur connecté." stop trigger on join: {prison::%player%} is set: wait a tick delete {prison::%player%} execute console command "/unjail %player%" execute console command "/heal %player%" execute console command "/mv tp %player% world" send "&cPetit malin... Tu as échappé à mon test...! Bravo petit cobaye" #<- ces commandes téléportent le joueur au spawn en le relâchant. Maintenant, si j'ajoute d'autres effets : command /malus [<text>] [<offline player>]: permission: malus.command permission message: "Permission de la commande /malus." trigger: arg-1 isn't "prison": send "Erreur, veuillez définir le malus à infliger." stop trigger arg-2 isn't set: send "Veuillez sélectionner une cible." stop trigger arg-1 and arg-2 are set: arg-2 is online: if {prison::%arg-2%} doesn't exist: set {prison::%arg-2%} to true execute console command "/jail %arg-2% cellule4" send "PrisonnnnnNnNnn !!" to arg 2 wait 200 ticks #<- on attend 10 secs après avoir été TP en prison. execute console command "/effect give %arg-2% minecraft:blindness 20 1 true" #<- +1 effet de potion après 200 ticks (10 secondes donc). #On admet que je vais ajouter pas mal d'autres commandes « send » / « /effect give », avec des temps d'attente. stop trigger if {prison::%arg-2%} is set: execute console command "/unjail %arg-2%" execute console command "/mv tp %arg-2% world" send "Annulé." else: send "Veuillez choisir un joueur connecté." stop trigger on join: {prison::%player%} is set: wait a tick delete {prison::%player%} execute console command "/unjail %player%" execute console command "/heal %player%" execute console command "/mv tp %player% world" send "&cPetit malin... Tu as échappé à mon test...! Bravo petit cobaye" Le processus de libération du joueur fonctionne toujours. Néanmoins, les effets de potion et autres commandes vont quand-même s'exécuter après s'être reco. Le joueur n'est plus en prison, mais il subit les effets quand-même au fur que le temps passe. Sauf si cela gêne, je peux les supprimer, mais j'ai illustré mon propos avec quelques screens avant / après : Ce qui me frustre, c'est que je suis persuadé d'être à deux doigts de réussir à terminer ce code, que je fais une erreur toute bête (j'ai au moins 5-7 variations de ce code, certaines qui fonctionnent, d'autres non, mais le code que je t'ai envoyé ici est le plus fonctionnel de tous). Je ne sais pas s'il existe véritablement un moyen de faire ce que je souhaite, mais dans le doute je me dis qu'il vaut mieux que je puisse encore tenter. Je ne sais pas si j'ai été très clair dans mes explications, si c'est le cas n'hésites pas à me redemander, même si je pense pouvoir à demi-moitié tenter de trouver des pistes dans le futur, même si ça risque encore d'être une rude tâche.
  5. Liock

    inactif ✖ Effet de potion

    Bonsoir, il est aussi possible d'assigner un effet de potion avec la commande : execute console command "/effect give minecraft:speed %player% 180 2" Ou, pour en plus enlever les particules. execute console command "/effect give minecraft:speed %player% 180 2 true" = désactive les particules.
  6. Je vais peut-être mettre un peu plus de temps avant de publier le code terminé, même si j'ai déjà eu quelques éclaircissements à ne pas ignorer avec ton code qui m'a été très utile. Je bloque juste sur la phase « annuler les événements présents dans une variable », car je cumule plusieurs commandes mais je pense bientôt pouvoir achever ce code. Et oui, j'en ferais sûrement un tutoriel une fois que cela sera terminé. Je ne vais pas te déranger plus longtemps et voir ce que je peux faire de mon côté. Merci encore. PS : Je n'ai malencontreusement pas vraiment de « code concret » à mettre en ligne pour l'heure qu'il est. Si quelqu'un rencontre le même souci que moi je ne peux que recommander le code de @KneaXy qui permet tout de même d'être plutôt bien avancé sur le problème.
  7. Ça semble fonctionner à merveille après plusieurs essais. Pour ceux qui seraient dans le même cas que moi je vais prendre le temps de mettre en ligne le code demain avec les explications qui vont avec : - )
  8. Re, Navré de la réponse tardive, j'ai été assez occupé aujourd'hui. C'est très sympa de ta part de t'être dévoué à refaire un code. Je vais le compléter de suite et voir si ça fonctionne pour voir si le sujet peut être ensuite mis en résolu. Encore merci !
  9. Oui, et tout ce code fonctionne à merveille. Et du coup j'aimerais faire en sorte d'annuler tout ça si le joueur ciblé se déconnecte pendant que ça a lieu, de téléporter le joueur dans un autre endroit (le monde « world ») et d'empêcher toutes ces commandes de s'exécuter. À chaque fois que moi ou un cobaye (ah, oui, j'aime les cobayes !) se reconnecte, ça continue, et je souhaite justement éviter ça.
  10. C'est sympa, merci pour dédier de ton temps pour aider Quand j'exécute la commande /malus prison, le joueur subit des textes et jusqu'à là tout va bien, se téléporte en prison. J'avais trouvé un moyen d'assigner un code qui permettait de sauvegarder l'inventaire du joueur sélectionné, avant de le lui enlever lorsqu'il se fait téléporter en prison (prison qui se trouve dans un autre monde, du nom de « parcelle », je l'indique juste au cas où ça puisse avoir une quelconque importance pour permettre à mon code d'être achevé). En faisant tester le code à un joueur qui s'est déconnecté, je me suis aperçu que si ce dernier se déconnectait avant que l'inventaire lui soit enlevé, ce dernier apparaît dans la cellule avec celui-ci. Et j'ai bien peur (même si je n'en suis pas encore sûr, il faudra que je teste) que des risques de perte d'inventaire définitive soient présents si le joueur en question se déconnecte après que son inventaire lui ait été supprimé. Pour éviter tout ce mélange confus, et quand-bien même pour éviter à ce que le joueur perdre des « parties du scénario », donc des textes qui, comme on peut le voir se jouent au bout de quelques ticks de manière successive. Ce que je nomme « malus », c'est en fait cette succession de commandes, sur cette partie là tout fonctionne à merveille, c'est vrai que je me suis sans-doute mal exprimé, j'aurais pu appeler la commande « /script » ou « /scenario ». Je ne sais pas exactement si nous sommes sur la même longueur d'ondes, car il est vrai qu'il est possible que mes explications puissent prêter à confusion. #Rien ne fonctionne ici. Les variables ne sont soit pas détectées, soit pas placées correctement. on quit: {malus.%player%} is true: set {malus.%player%} to false #En retirant le {malus.%player%}, la commande a fonctionnée et le message a été aperçu, sauf que bien-sûr ça s'est fait même sans la commande #du fait que la variable n'était pas assignée. En la remettant, ça ne fonctionne tout simplement plus. on join: {malus.%player%} is false: wait 2 second execute console command "/mv tp %player% world" broadcast "&2[&5Action avortée&2] &5Vous avez fui durant une action scénaristique." broadcast "(Test) on join détecté." clear {malus.%player%} J'ai un peu modifié le code pour ajouter des indicateurs "(Test)" En ce qui concerne la commande en elle-même (sachant que je ne me base actuellement que sur le « prison » et non pas sur l'autre commande « danger »). if arg 1 and arg 2 are set: {malus.%arg-1%} is false: broadcast "(test) L'argument malus a été défini sur false. Normalement, le reste des commandes ne s'exécute pas." stop trigger {malus.%arg-1%} is true: message "&cVous sentez que vous n'êtes pas seul. Quelque chose, ou quelqu'un, vous observe. Vous vous sentez mal à l'aise... vous commencez à paniquer." to arg 2 message "&7Message envoyé à la cible : &cVous sentez que vous n'êtes pas seul. Quelque chose, ou quelqu'un, vous observe. Vous vous sentez mal à l'aise... vous commencez à paniquer." to player wait 20 ticks broadcast "(Test) L'argument malus est sur true. Les commandes sont en train de s'exécuter." wait 200 ticks execute console command "/effect give %arg-2% minecraft:nausea 15 2 true" execute console command "/effect give %arg-2% minecraft:blindness 999 2 true" wait 200 ticks execute console command "/effect give %arg-2% minecraft:hunger 5 10 true" wait 60 ticks send title "&8..." to arg 2 for 3 seconds execute console command "/sudo %arg-2% me est mal en point..." wait 100 ticks send title "&4Vous êtes observé." to arg 2 for 3 seconds execute console command "/effect give %arg-2% minecraft:instant_health 5" execute console command "/strike %arg-2%" wait 20 ticks execute console command "/strike %arg-2%" wait 100 ticks execute console command "/jail %arg-2% cellule1 2m" wait 20 ticks set {_num} to 0 loop 36 times: set {lastinv::%arg-2%::%{_num}%} to slot {_num} of arg 2's inventory add 1 to {_num} set {lastinv::helm::%arg-2%} to arg 2's helmet set {lastinv::chest::%arg-2%} to arg 2's chestplate set {lastinv::legs::%arg-2%} to arg 2's legging set {lastinv::boots::%arg-2%} to arg 2's boots wait 20 ticks clear arg 2's inventory wait 20 ticks execute console command "/playsound minecraft:block.anvil.land master %arg-2% 0 0 0 2 0.1 1" wait 200 ticks message "&aIls font... quelque chose... que se passe-t-il ?" to arg 2 wait 100 ticks message "&aEst-ce un mauvais rêve ? Je suis... perdu..." to arg 2 wait 160 ticks message "&aJe... je ne me sens pas très bien..." to arg 2 wait 200 ticks execute console command "/sudo %arg-2% c:Hé ! laissez-moi sortir !" wait 160 ticks execute console command "/sudo %arg-2% c:Il y a quelqu'un ? Hé ho ?" wait 160 ticks execute console command "/sudo %arg-2% c:C'est pas drôle, hein ! Allez bordel ! Laissez-moi sortir, là, maintenant !" wait 100 ticks message "&aIls ne me laisseront pas sortir décidément... que ce que ?" to arg 2 wait 80 ticks execute console command "/effect give %arg-2% minecraft:poison 20 1" execute console command "/effect give %arg-2% minecraft:confusion 20 1 true" message "&aBordel, je me suis fait empoisonn..." to arg 2 wait 200 ticks execute console command "/unjail %arg-2%" wait 20 ticks set {_num} to 0 loop 36 times: set slot {_num} of arg 2's inventory to {lastinv::%arg-2%::%{_num}%} add 1 to {_num} set arg 2's helmet to {lastinv::helm::%arg-2%} set arg 2's chestplate to {lastinv::chest::%arg-2%} set arg 2's leggings to {lastinv::legs::%arg-2%} set arg 2's boots to {lastinv::boots::%arg-2%} wait 20 ticks execute console command "/effect clear %arg-2%" Je vais essayer de traficoter encore le code, je suis allé revoir d'autre forums qui parlaient de sujets d'annuler des commandes / actions en cas de mouvement du joueur, moi, c'est juste en cas de déconnexion que ça gêne. Si ça peut aider, je peux plus ou moins comparer ce que je souhaite faire à un mini-jeu dans lequel un joueur serait plongé via une commande qu'on exécuterait "/minijeu prison (joueur)", les effets de potion & textes étant le jeu (un peu sadique comme jeu quand-même), et si le joueur s'en va en pleine partie, il est de nouveau téléporté à son monde d'origine et le mini-jeu s'annule comme si rien ne s'était produit. Navré si je ne suis plus très clair, si tu n'as pas compris certaines choses je pourrais tenter de réexpliquer ça plus simplement. Mais en l'état actuel ça va faire deux jours que je dédie pas mal de temps à tenter de trouver réponse à ce code, et j'ai le sentiment que mon erreur est toute bête, et qu'il ne me manque plus que quelques éclaircissements pour parvenir à le terminer et semer la terreur sur le serveur, ahah.
  11. Il me semble que c'est ce que j'ai fait, ou du moins ce que j'ai voulu faire pour le coup ^^ Sauf si je ne comprends pas dans ce cas-là, sinon oui c'est très exactement ce que je souhaite. Il faut juste que je parvienne à trouver le moyen d'annuler les malus en cas de déconnexion, chose que je ne parviens toujours pas à faire. J'ai tenté plusieurs combinaisons de variables pour faire fonctionner ce système, en vain. Si j'ai bien tout compris, mon {malus.%arg-1%} sur la commande /malus "prison" "joueur" se transforme en {malus.%player%} sur le "on quit:", du fait qu'il soit impossible de mettre %arg-1% à la place (ce que j'avais d'ailleurs essayé de faire hier par plusieurs moyens, là aussi sans succès). Lorsque qu'actuellement je tape la commande, les variables {malus...} ne semblent pas s'appliquer, ou du moins, je dois justement ne pas les avoir configurées correctement étant donné qu'en revenant sur le serveur suite à ma déconnexion (ou celle d'un cobaye), je subit encore les effets de potion, les éclairs et la téléportation en prison.
  12. Version de Minecraft : 1.15.2 Version de Skript : 2.4.1 Addons utilisés: Skelett & SkQuery Type du skript : Script de commandes successives avec annulation d'événements en cas de déconnexion du joueur cible. Description du script : Bonjour, Étant actuellement au développement d'un serveur jeu de rôle Minecraft, je me permets aujourd'hui de solliciter de l'aide sur ce forum en ce qui concerne la réalisation d'un script, sur lequel je rencontre un souci en particulier. Je m'explique. Ce script a pour objectif de faire s'exécuter plusieurs commandes pour notamment emprisonner le joueur cible (défini tel que « arg-1 »), ainsi que de lui affecter plusieurs effets de potion, textes... Ayant effectué plusieurs essais - notamment avec quelques cobayes car je suis un peu sadique - je me suis aperçu par la suite que les commandes s'exécutaient même après la déconnexion du joueur. Ainsi, lorsque ce dernier revient sur le serveur, les événements reliés à la commande s'affectent toujours sur ce dernier. À l'issue de nombreuses recherche effectuées, et plusieurs tests orchestrés, je constate malencontreusement que malgré tous mes essais, je ne parviens pas à empêcher ces mêmes commandes de s'exécuter après déco / reco. Voici le script en question : command /malus [<text>] [<player>]: trigger: if player doesn't have permission "malus.execute": message "&5Vous n'avez pas assez de puissance afin d'accomplir cette/ces action(s)." stop trigger if arg 1 is not "danger" or "prison": message "Mauvaise commande, veuillez choisir entre prison / danger." stop trigger if arg 1 is "danger": if arg 2 is not set: message "&5Veuillez choisir une cible." stop trigger if arg 1 and arg 2 are set: message "&cLe danger rôde autour de vous. Vous n'êtes pas en sécurité !" to arg 2 message "&7Message envoyé à la cible : &cLe danger rôde autour de vous. Vous n'êtes plus en sécurité ! &7(%arg-2%&7)" to player wait 20 ticks play sound "block.bell.resonate" to arg 2 execute console command "/effect give %arg-2% minecraft:blindness 60 1 true" wait 200 ticks execute console command "/effect give %arg-2% minecraft:nausea 10 1 true" wait 60 ticks execute console command "/effect give %arg-2% minecraft:slowness 30 1 true" wait 60 ticks play sound "entity.ender_dragon.growl" to arg 2 wait 200 ticks ignite arg 2 for 10 seconds if arg 1 is "prison": if arg 2 is not set: message "&5Veuillez choisir une cible." stop trigger if arg 1 and arg 2 are set: {malus.%arg-1%} is false: stop trigger broadcast "Echec (test)" {malus.%arg-1%} is true: message "&cVous sentez que vous n'êtes pas seul. Quelque chose, ou quelqu'un, vous observe. Vous vous sentez mal à l'aise... vous commencez à paniquer." to arg 2 message "&7Message envoyé à la cible : &cVous sentez que vous n'êtes pas seul. Quelque chose, ou quelqu'un, vous observe. Vous vous sentez mal à l'aise... vous commencez à paniquer." to player wait 200 ticks execute console command "/effect give %arg-2% minecraft:nausea 15 2 true" execute console command "/effect give %arg-2% minecraft:blindness 999 2 true" wait 200 ticks execute console command "/effect give %arg-2% minecraft:hunger 5 10 true" wait 60 ticks send title "&8..." to arg 2 for 3 seconds execute console command "/sudo %arg-2% me est mal en point..." wait 100 ticks send title "&4Vous êtes observé." to arg 2 for 3 seconds execute console command "/effect give %arg-2% minecraft:instant_health 5" execute console command "/strike %arg-2%" wait 20 ticks execute console command "/strike %arg-2%" wait 100 ticks execute console command "/jail %arg-2% cellule1 2m" wait 20 ticks set {_num} to 0 loop 36 times: set {lastinv::%arg-2%::%{_num}%} to slot {_num} of arg 2's inventory add 1 to {_num} set {lastinv::helm::%arg-2%} to arg 2's helmet set {lastinv::chest::%arg-2%} to arg 2's chestplate set {lastinv::legs::%arg-2%} to arg 2's legging set {lastinv::boots::%arg-2%} to arg 2's boots wait 20 ticks clear arg 2's inventory wait 20 ticks execute console command "/playsound minecraft:block.anvil.land master %arg-2% 0 0 0 2 0.1 1" wait 200 ticks message "&aIls font... quelque chose... que se passe-t-il ?" to arg 2 wait 100 ticks message "&aEst-ce un mauvais rêve ? Je suis... perdu..." to arg 2 wait 160 ticks message "&aJe... je ne me sens pas très bien..." to arg 2 wait 200 ticks execute console command "/sudo %arg-2% c:Hé ! laissez-moi sortir !" wait 160 ticks execute console command "/sudo %arg-2% c:Il y a quelqu'un ? Hé ho ?" wait 160 ticks execute console command "/sudo %arg-2% c:C'est pas drôle, hein ! Allez bordel ! Laissez-moi sortir, là, maintenant !" wait 100 ticks message "&aIls ne me laisseront pas sortir décidément... que ce que ?" to arg 2 wait 80 ticks execute console command "/effect give %arg-2% minecraft:poison 20 1" execute console command "/effect give %arg-2% minecraft:confusion 20 1 true" message "&aBordel, je me suis fait empoisonn..." to arg 2 wait 200 ticks execute console command "/unjail %arg-2%" wait 20 ticks set {_num} to 0 loop 36 times: set slot {_num} of arg 2's inventory to {lastinv::%arg-2%::%{_num}%} add 1 to {_num} set arg 2's helmet to {lastinv::helm::%arg-2%} set arg 2's chestplate to {lastinv::chest::%arg-2%} set arg 2's leggings to {lastinv::legs::%arg-2%} set arg 2's boots to {lastinv::boots::%arg-2%} wait 20 ticks execute console command "/effect clear %arg-2%" on join: {malus.%player%} is true: set {malus.%player%} to false wait 2 second execute console command "/mv tp %player% world" broadcast "&2[&5Action avortée&2] &5Vous avez fui durant une action scénaristique." clear {malus.%player%} Ici, j'ai voulu tenter d'assigner la donnée {malus.%arg 1%} en true si le joueur ne se déconnecte pas, ce qui permet aux commandes suivantes d'avoir lieu. Si le joueur se déconnecte, et revient lors de « on join », je souhaiterai alors que la donnée en question puisse me permettre de faire s'exécuter les commandes présentes à partir de « execute console command "/mv tp %player% world" » pour faire cesser le /malus. Je précise au passage que j'ai débuté Skript il y a de cela quelques jours seulement. J'émets ici cette requête du fait simple que je risque d'avoir à me servir de ce type de commande de manière assez régulière, et afin d'empêcher tout abus ou bug de la part des joueurs, il me faudrait être en mesure de corriger ce code. Je remercie d'avance toute personne pouvant éventuellement m'assister dans cette démarche.
×
×
  • 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.