Aller au contenu

PX_007

Membre
  • Compteur de contenus

    43
  • Inscription

  • Dernière visite

  • Jours gagnés

    3
  • Crédits

    20 [Faire un don]

PX_007 a gagné pour la dernière fois le 12 juin 2022

PX_007 a eu le contenu le plus aimé !

Réputation sur la communauté

11 Neutre

À propos de PX_007

  • Rang
    Apprenti

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. ça te rajoute de nouvelles possibilités de codage comme les fonctions
  2. C'est parce que tu as mal écrit le dernier mot. Voici la correcte orthographe: "unstealable"
  3. En réalité il n'est pas nécessaire d'ajouter un enchantement pour rendre un objet brillant. Il suffit de rajouter "glowing" devant le nom de l'item comme par exemple ceci: format slot 18 of player with glowing diamond sword named "" to be unstealable
  4. Bon vieillissement :v
  5. Bonsoir, j'ai essayé de faire un skript pour annuler certaines commandes que l'on éxécute mais en fonction des effets que produit une commande que l'on execute, les lignes de codes nécéssaires pour tout rétablir en cas de /Cancel peuvent être très longues et compliquées voire impossible à faire car cela nécessiterait un code en java. J'ai tout de même réussi à faire un système pour récupérer le stuff en cas de /clear pour te montrer un petit peu le principe mais pour certaines commandes ça sera teès compliqué. on command: if command is "clear": clear {sauvegarde.stuff.%player%::*} set {cancel.%player%} to "%command%" loop all items in player's inventory: add loop-item to {sauvegarde.stuff.%player%::*} if command is "gamemode 1": set {cancel.%player%} to "%command%" command /cancel: trigger: if {cancel.%player%} is "clear": loop {sauvegarde.stuff.%player%::*}: give {sauvegarde.stuff.%player%::%loop-index%} to player clear {sauvegarde.stuff.%player%::*} En espérant avoir pu t'aider ;) PS: Si tu cherches à annuler directement une commande pour éviter les boulettes tu as aussi ceci: on command: if command is "<le nom de ta commande>": cancel event (juste au cas où :D)
  6. en effet j'ai tendance à malheureusement bâcler un peu la présentation pour passer plus de temps sur le code ^^' j'essayerais d'y remédier Merci à tous les 2 :D
  7. Bonjour à tous :D Aujourd'hui je vous propose un petit tutoriel de compte à rebours pour vos serveurs. Ce compte à rebours est surtout destiné aux mini-jeux que vous souhaitez faire. Ce tuto vous servira à faire par exemple un compte à rebours qui peut s'interrompre si un joueur se déco durant le décompte. (Note: j'ai fait ce code pour un mini jeu mais je n'ai gardé que la partie décompte. Pour un jeu du type uhc, plusieurs ajouts s'imposent :)) Nous allons voir comment faire ceci pas à pas ^^' Tout d'abord, lorsque le joueur rejoint l'uhc on veut l'ajouter dans la liste avec tous les autres joueurs présents options: uhclogo: &9[&2UhcRun&9] #Ici c'est une variable crée pour pas avoir à placer 50 fois le [uhcRun] mais inutile ici ^^ on join: add player to {uhc.players::*} broadcast "{@uhclogo} &a%player% a rejoint la partie &b(%size of {uhc.players::*}%/20)" #Quand le joueur rejoint, il est ajouté dans la liste et un message est envoyé avec le nombre de joueurs. #%size of {uhc.players::*}% détecte le nombre d'éléments dans la liste (en l’occurrence, ici c'est des joueurs) Ensuite, on veut lancer le compte à rebours lorsqu'il y a 8 joueurs ou plus. Pour cela on utilise encore le type %size of {uhc.players::*}% mais pour une condition cette fois ^^ if size of {uhc.players::*} = 8: set {_time} to 60 broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes. #S'il y a 8 joueurs ou plus de connectés, on lance alors le décompte. On définit une variable (locale pour éviter les problèmes) sur une valeur de 60. (pour une minute, à vous de mettre plus si vous voulez un décompte plus long ^^) Mais cela ne s'arrête pas ici ! Et il ne suffit pas de mettre des messages à la suite avec le 20/15/10/5 secondes. Car on veut qu'il y ait obligatoirement 8 joueurs ou plus pour commencer la partie. Si quelqu'un déco, le décompte doit s'interrompre et devra reprendre à 60 secondes lorsqu'il y en aura assez. while size of {uhc.players::*} >= 8: remove 1 from {_time} wait 1 second if {_time} = 30 or 20 or 15 or 10 or 5 or 4 or 3 or 2: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes." else if {_time} = 1: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &eseconde." else if {_time} = 0: broadcast "{@uhclogo} &eLancement de la partie..." stop else: wait 0 tick Avec ce bout de code, on va vérifier en permanence à l'aide d'une boucle while si le nombre de joueurs est de 8 ou plus. Si effectivement, il y a plus de 8 joueurs, nous allons retirer 1 "point" de la variable (donc de 60 on passe à 50) et ce à 1 seconde d'intervalle toujours ! (ceci nous fait notre chrono). Mais on veut aussi executer certaines actions lorsqu'il reste x secondes. pour cela il faut à l'aide de la boucle vérifier à chaque seconde écoulée si on arrive à 30/20/15 ou 10 secondes restantes. le " if {_time} = 30 or 20 or 15 or 10 or 5 or 4 or 3 or 2: " sert à regarder justement combien de secondesi l reste dans le décompte ! A ce moment là, on pourra envoyer un message précisant combien de secondes il reste en analysant le nombre de "points" dans la variable à l'aide une fois de plus de %{_time}% Et enfin, lorsque la variable est arrivée à 0 c'est le top départ :D. pour les 2 dernières lignes, cela sert juste à relancer la boucle (tant évidemment qu'il y aura toujours 8 joueurs) depuis le haut quand le nombre de seconde qu'il reste n'est pas égal à 30/20/10 et les autres. Il est possible que certaines de mes explications ne soient pas claires. Je vais vous mettre le code en entier et préciser chaque ligne :D options: uhclogo: &9[&2UhcRun&9] on join: add player to {uhc.players::*} broadcast "{@uhclogo} &a%player% a rejoint la partie &b(%size of {uhc.players::*}%/20)" if size of {uhc.players::*} = 8: set {_time} to 60 broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes." while size of {uhc.players::*} >= 8: remove 1 from {_time} wait 1 second if {_time} = 30 or 20 or 10 or 5 or 4 or 3 or 2: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes." else if {_time} = 1: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &eseconde." else if {_time} = 0: broadcast "{@uhclogo} &eLancement de la partie..." stop else: wait 0 tick #Quand le joueur rejoint le serveur... #...on l'ajoute à la liste des joueurs... #...et on lance un message de join avec le nombre de joueurs connectés en analysant le nombres d'éléments dans la liste #Si le nombre de joueurs présents dans la liste est superieur ou égal à 8... #...on crée une variable qui sera notre décompte et on lui donne l'équivalent d'une minute... #...et on lance un message pour prévenir le début du décompte ! #Maintenant on va en permanence vérifier s'il y a 8 joueurs ou plus grâce à la liste. si c'est le cas alors... #...on enlève "1" de la variable {_time} (pour notre décompte) #Pour éviter un décompte trop rapide, on rajoute un délai de 1 seconde entre chaque retrait de la variable (et ainsi faire un décompte toute les secondes (classique quoi :D)) #Désormais, on va vérifier après un certain nombre de retrais de la variable (1 retrait équivaut à une seconde d'écoulée) on vérifie à combien est la variable et donc combien de secondes reste-t-il. S'il reste 30/20/10/5/4/3 ou 2 secondes... #...on envoie un message prévenant précisément le nombre de secondes qu'il reste en "lisant la variable" #S'il ne reste par contre qu'une seconde... #...on envoie le même message mais cette fois au singulier et non pluriel (l'orthographe :):):)) #Si maintenant il n'y a plus de secondes (donc si on est à 0)... #...On lance la partie :D... #...et on arrête le skript pour éviter que la boucle tourne inutilement (car elle continuera de tourner tant qu'il y aura plus de 8 joueurs rappelez vous !) #mais par contre si le nombre de secondes restantes est supérieur à 5 mais n'est pas multiple de 10... #...on met un délai nul pour relancer la boucle et ainsi continuer le chrono en toute sérénité :) Nous sommes déjà rendus à la fin de ce tutoriel ! Merci à vous d'avoir pris le temps de le lire. S'il vous à plu n'hésitez pas à mettre un like ou à me le dire en message. S'il y a des choses qui ne sont pas assez claires et/ou mal expliquées et/ou que vous ne comprenez pas, faites le moi savoir et j'essayerais de rendre une partie plus compréhensible :) Sachez aussi que je prend toute critique constructive afin que je puisse progresser encore et encore :) A très bientôt <3
  8. Bonjour, J'ai fait un petit code pour le blé mais je n'ai pas pu le tester par manque de temps. Par contre, sache qu'il te faudra l'addon ExtrasSk pour que le code suivant puisse marcher: on crop trample: cancel event Tu peux aussi rajouter des conditions qui impliquerait par exemple une région prédéfinie. Pour le give de la tête du joueur qui join je n'ai pas pu non plus tester le code mais j'ai celui là dans mes archives: on join: set {_headplayer} to player's skull give 1 {_headplayer} to player En espérant avoir pu t'aider ^^ Bonne journée :)
  9. J'ai testé et tout marche bien ! Merci beaucoup d'avoir pris le temps de m'aider :)
  10. Bonjour à tous. Je suis actuellement dans le développement d'un QuakeCraft mais bloquant sur quelque chose je fais appel à vous dans l'espoir que quelqu'un puisse me venir en aide :) Pour vous expliquer le principe: je cherche à créer un délai entre 2 tirs avec le railgun (par exemple 1 seconde par tir) Jusque là rien de bien sorcier. Mais ça se complique un peu car en fonction du railgun de la personne le délai serait plus ou moins long. Là aussi j'ai réussi à faire un délai. Le problème que je rencontre est que je n'arrive pas à faire une progression du niveau d'xp en fonction du délai qui se base sur le raigun. Par exemple: Si le joueur a un railgun en diamant, le délai serait d'une seconde et la barre d'xp se remplierait significativement en 1 seconde de 0 à 0.99999 (et non 1 car cela compte 1 lvl) Par contre si le joueur à un raigun en bois et que le délai est de 1.5 secondes, la barre d'xp se remplierait significativement en 1.5 seconde. Mais je n'ai pas réussi à trouver un moyen que la barre se remplisse de 0 à 0.99999 en fonction du cooldown défini pour chaque railgun. C'est pourquoi je fais appel à la communauté dans l'espoir de trouver quelqu'un pour m'aider :) Je vous donne le code que j'utilise on right click: if player is holding diamond hoe or gold hoe or stone hoe or iron hoe or wooden hoe: if player is holding diamond hoe: set {_wait} to 0.5 second if player is holding gold hoe: set {_wait} to 1.05 second if player is holding iron hoe: set {_wait} to 1.1 second if player is holding stone hoe: set {_wait} to 1.15 second if player is holding wooden hoe: set {_wait} to 1.2 second cancel event set {_fire} to difference between {fire.%player%.lastused} and now#ICI je regarde le temps de recharge if {_fire} is less than {_wait}: stop else: set {fire.%player%.lastused} to now set {_location.1} to location of player set {_location.2} to location of targeted block increase y-coordinate of {_location.1} by 1 set {_x.1} to x-coordinate of {_location.1} set {_x.2} to x-coordinate of {_location.2} set {_y.1} to y-coordinate of {_location.1} set {_y.2} to y-coordinate of {_location.2} set {_z.1} to z-coordinate of {_location.1} set {_z.2} to z-coordinate of {_location.2} set {_x.difference} to ({_x.2} - {_x.1}) / 100 set {_y.difference} to ({_y.2} - {_y.1}) / 100 set {_z.difference} to ({_z.2} - {_z.1}) / 100 play raw sound "fireworks.launch" at player with pitch 1 volume 500 loop 100 times: increase x-coordinate of {_location.1} by {_x.difference} increase y-coordinate of {_location.1} by {_y.difference} increase z-coordinate of {_location.1} by {_z.difference} if player is holding diamond hoe: execute console command "particle flame %x-coordinate of {_location.1}% %y-coordinate of {_location.1}% %z-coordinate of {_location.1}% 0 0 0 0 1 force" else if player is holding gold hoe: execute console command "particle reddust %x-coordinate of {_location.1}% %y-coordinate of {_location.1}% %z-coordinate of {_location.1}% 0 0 0 0 1 force" else if player is holding iron hoe: execute console command "particle mobSpell %x-coordinate of {_location.1}% %y-coordinate of {_location.1}% %z-coordinate of {_location.1}% 0 0 0 0 1 force" else if player is holding stone hoe: execute console command "particle portal %x-coordinate of {_location.1}% %y-coordinate of {_location.1}% %z-coordinate of {_location.1}% 0 0 0 0 1 force" else if player is holding wooden hoe: execute console command "particle smoke %x-coordinate of {_location.1}% %y-coordinate of {_location.1}% %z-coordinate of {_location.1}% 0 0 0 0 1 force" damage target entity by 0.1 set level progress of player to 0 loop 18 times: add 0.05 to level progress of player set level progress of player to 0.9 wait {_wait} set level progress of player to 0.99999 Merci d'avance :) PS: Ne m'y connaissant pas beaucoup sur les functions je n'ai pas essayé d'en faire une pour les délais
  11. J'ai réussi entre temps à trouver la solution grâce à @EnderRaider (merci à lui) Je vous donne le code corrigé pour ceux que cela intéresserait: on right click with a packed ice: if name of tool is "&bGrande Glaciation &7(clic droit)": cancel event loop blocks in radius 10 around player: set {_blocks::%location of loop-block%::type} to type of loop-block set {_loc} to location of player loop blocks in radius 10 around {_loc}: if loop-block is not air: set loop-block to ice wait 5 seconds loop blocks in radius 10 around {_loc}: set loop-block to {_blocks::%location of loop-block%::type}
  12. Bonjour à vous, Je rencontre un problème assez gênant dans une variable liste qui comporte des blocks issus d'un loop-block qui changent lors d'un effet particulier: on right click with a diamond: set {_loc} to location of player loop blocks in radius 2 around {_loc}: add loop-block to {_test::*} if loop-block is not air: set loop-block to ice wait 2 seconds loop blocks in radius 2 around {_loc}: loop {_test::*}: if loop-block is not air: set loop-block to {_test::%loop-value-2%} Pour mieux comprendre voici comment devrait se comporter le skript s'il marchait correctement : Le joueur qui clique sur un diamant change tous les blocs qui ne sont pas de l'air dans un rayon de 2 blocs en glace. 2 secondes plus tard, les blocs se reposent normalement c'est à dire comme ils étaient avant l'event. Pour cela je mets tous les blocks lors du click dans une liste dans le but de reposer tous les blocs de cette même liste là où se trouvait le joueur lors de l'event avec le set {_loc} Mais le problème est le suivant: Les blocs de glace ne sont pas remplacés car ceux qui sont normalement dans la variable car les blocs dans la variable sont modifiés. Pour expliquer le bug: Quand je clique sur le diams les blocs dans un rayon de 2 autour de moi sont ajoutés à la variable et quelques ticks plus tard les blocs sont changés en glace et 2 secondes plus tard les blocs de la liste doivent normalement être replacés mais les blocs dans la liste sont changés par ceux qui sont dans un rayon de 2 autour de {_loc} dès lors qu'ils se transforment en glace. Pour faire simple: la liste est comme actualisée en terme de blocs lors du changement de ces derniers quand on clique sur le diams et c'est justement ce que je ne veux pas pour pouvoir "reset" l'endroit à la manière des paintball gun dans certains plugins cosmétiques. J'ai essayé beaucoup de choses pour remédier à ce problème mais je ne sais même pas si c'est possible de faire une telle chose. Si quelqu'un sait comment s'y prendre je lui en serait très reconnaissant de m'aider :) Merci d'avance
  13. PX_007

    Clique droit

    De rien :)
×
×
  • 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.