Aller au contenu

PX_007

Membre
  • Compteur de contenus

    43
  • Inscription

  • Dernière visite

  • Jours gagnés

    3
  • Crédits

    20 [Faire un don]

Tout ce qui a été posté par PX_007

  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 :)
  14. PX_007

    Clique droit

    essaye de remplacer les %entity% par %target entity% car le pattern que tu utilises prend en compte l'entité de manière générale et pas celle qui est ciblée par ton curseur et ce même s'il y a une condition (si je dis une bêtise dites-le moi :)) Donc le mieux est de mettre %target entity% qui ciblera à coup sur l'entité ciblée par ton curseur. Ensuite il se peut que les commandes /menotte et /taser aient des problèmes. Les commandes ont-elles été faites en skript ou viennent-elles d'un plugin ? Si elles ont été codées en skript pourrais-tu nous envoyer le skript de ces dernière pour que nous puissions les analyser ? Merci d'avance :)
  15. PX_007

    Skript potion

    Bonsoir, En fait tout dépend de ce que tu veux dire par inventer une recette: Est-ce que tu cherches un moyen de faire une potion qui donne un effet spécial avec alambic ou sans alambic ? Si mes souvenirs sont bons, il est possible de give une potion donnant des effets prédéfinis grâce à un command block mais je crois qu'il n'est pas possible d'inventer un craft dans un alambic, je me renseignerais demain dans la journée :)
  16. PX_007

    Skript paye 1.7.10

    Il y a quelques petits fails à ton skript: -Pour le "every 600 seconds" comme expliqué en haut, c'est considéré comme un event et ne peut donc pas être placé en 2nde ligne et non plus après un autre event. De plus, je crois qu'on ne peut pas exécuter un effet ou une condition sur un joueur à partir de l'event every car ce dernier n'est pas déclenché par sur un joueur mais à intervalle régulier dans le temps (contrairement au "on join" qui lui est déclenché par un joueur se connectant) -Admettons donc que si l'on prend compte du premier tiret, on enlève le "every 600 seconds", dans cette situation, ce n'est pas toutes les 10 secondes que le joueur va recevoir sa paye mais indéfiniment tant qu'il aura la perm rank.civil et ce, jusqu'au crash du serveur (j'ai essayé ça marche très bien xD ) Mais l'idée est bonne dans l'ensemble ;) Il faut juste enlever le "every 600 seconds" et rajouter un "wait 10 minutes" après la ligne "while player...." :) Si tu parles de base de données, en effet cela reste le plus efficace d'enregistrer l'argent du joueur dans une base de données MySql par exemple si l'on veut effectuer un reset général de l'argent ou une hausse générale. Mais si l'on ne veut rien faire de tout ça, le plus pratique reste la variable ;)
  17. PX_007

    Skript paye 1.7.10

    Si on se déconnecte et que la variable est remove et set quand on se reco, les valeurs stockées dans la variable (ici, l'argent du joueur) sont reset. Donc je doute que cela soit utilisé de la sorte par les joueurs à moins qu"ils veulent tout perdre lors d'un déco x')
  18. PX_007

    Skript paye 1.7.10

    L'idée est bonne mais le "every 600 seconds" est un événement donc ne peut pas se retrouver en 3ème ligne ce qui fait que dans cette situation le skript ne peut pas marcher ;) J'ai rapidement essayé de coder un skript mais je n'ai pas eu le temps de le tester. on join: while player has permission "rank.civil": #à changer par la permission que tu utilise pour ce grade execute console command "/pay 1000 %player%" #si tu utilises un plugin pour donner et recevoir de l'argent add 1000 to {Argent.%player's UUID%} #si tu utilises une variable wait 10 minutes A noter que sur les 2 dernières lignes, il faudra en supprimer une en fonction de ce que tu utilises pour l'argent (si tu utilises un plugin, la dernière ligne sera inutile; mais si tu utilises une variable, il faudra supprimer l'avant-dernière ligne) En espérant avoir pu t'aider :)
  19. Bonsoir, J'ai testé le code et malheureusement, j'ai 3 erreurs dessus :/ : [Contenu masqué]
  20. Bonsoir à vous. Je recherche depuis quelques jours un skript permettant de: -Give l'inventaire d'un joueur (J1) à un autre joueur (J2) -Give l'inventaire du joueur J2 au joueur J1 Plus concrètement, j'aimerais que ce skript puisse faire un échange d'inventaire entre le joueur qui entre la commande ainsi que le joueur qu'il entrera dans cette dernière ou qu'il pointera avec son curseur. @EnderRaider m'a déjà été à en faire un que voici: (Merci à lui :)) command /InventaireGive: trigger: loop player's inventory: add loop-value to {inventory.%player%::*} loop {inventory.%player%::*}: give loop-value to target player loop target player's inventory: add loop-value to {inventory.%target player%::*} loop {inventory.%target player%::*}: give loop-value to player Cependant, j'ai 2 erreurs: [Contenu masqué] J'ai essayé plusieurs choses mais rien ne marche :/ Merci d'avance :)
  21. Personnellement j'ai quelques problèmes avec Umbaska (et je crois que beaucoup de joueurs aussi) J'ai récemment codé un skript pour ça mais il ne drop qu'un spawner de type cochon. Je n'arrive malheureusement pas à trouver un moyen de placer le type de spawner que le joueur à cassé sans utiliser Umbaska (car il bug :/) Voici voila :D on break a mob spawner: if player is in world "world": cancel event set event-block to air drop 1 monster spawner at block above target block PS: je n'ai pas pu tester le code
×
×
  • 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.