Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 15/04/2017 dans Messages

  1. Bonjour, aujourd'hui je vous partage ma dernière création en Skript : un algorithme Soundex Merci de laisser le commentaire avec mon nom avant la fonction si vous l'utiliser dans votre code. Vous pouvez aussi me citer sur le post si vous êtes quelqu'un de gentil Il est très important d'avoir SkUtilities et skQuery pour que la fonction marche ! Qu'est ce que l'algorithme Soundex ? L'algorithme Soundex est un algorithme phonétique d'indexation de noms par prononciations (merci Wikipedia). En gros, il va transformer les mots en chiffres selon certains critères, et permettra ainsi de reconnaitre deux mots proches, deux mots qui ont une correspondance entre eux malgré des différences dans l'écriture. Il est utilisé par beaucoup de sites, du moins est repris par beaucoup de sites (moteurs de recherches, etc.). Je prefère vous le partager plutôt que le voir copier coller depuis mes futurs skripts qui l'utiliseront. L'algorithme L'algorithme Soundex est plutôt simple à comprendre. Je vais le décrire grossièrement, si vous voulez le voir en détail, rendez-vous ici. (le wikipedia anglais indique les exceptions et les règles, alors que la page française non) On retire les espaces, les voyelles (dont celles anglaises), et les lettres doublées puis on met le mot en majuscule On garde la première lettre On attribue un numéro à chaque lettre que l'on a encore sauf la première On garde seulement 3 chiffres, ou bien on ajoute des 0 pour avoir 3 chiffres On met la première lettre suivi des trois chiffres, voilà. Prenons par exemple le mot "Comment" COMMENT CMMNT CMNT M = 5, N = 5, T = 3 C553 La personne écrit mal le mot, et écrit "Cament" CAMENT CMNT M = 5, N = 5, T = 3 C553 Même code, donc mot proche Exceptions Il y a néanmoins quelques exceptions. L'algorithme les respecte parfaitement ! Si 3 chiffres sont les même de suite dans le code final, on en garde qu'un seul. C'est à dire que si 3 lettres avec le même chiffre se suivent, on en garde qu'une. Par exemple, "Jackson" ne donne pas pas "A222" mais "A250" Si deux lettres avec le même chiffre sont séparés d'un H ou d'un W, il n'y a qu'un chiffre et pas deux. Par exemple, "Ashcraft" n'est pas "A226" mais "A261" Le code, la fonction, l'algorithme donc pour l'utiliser, il suffit de faire soundex("text") et cela retournera un code. Par exemple "set {var} to soundex("salut")" Le code expliqué Utilisation théorique Vous allez sûrement vous dire "ok mais je fais quoi de cette fonction". Exemple théorique Il suffit de comparer ce que retourne la fonction pour un terme, et pour l'autre. On peut comparer 'soundex("salut")' et 'soundex("solut")', on aura le même code. Exemple command /money <text>:[/size][/size] [size=5][size=4] trigger: if arg 1 is not "remove": if soundex("remove") is soundex(arg 1): send "The command is /money remove and not /remove %arg 1% :)" Corrige la commande /money remove Il y a des tonnes de choses à faire avec cela ! Des corrections, des anti-spam développés, pleins de trucs ! A vous de voir maintenant... Si vous avez besoin d'aide n'hésitez pas à me demander, et n'hésitez pas non plus à lâcher un petit j'aime et un commentaire si vous aimez l'algorithme. Polymeth.
    4 points
  2. Bonjour, J'ai un problème de radius , c'est a dire que sa fait les 2 actions de l'avant et après le else. Le code: on break obsidian: if player's world is "Event": loop all players in radius 5 around the event-block: if loop-players is player: add 1 to {obsi.%player%} broadcast "&9TOTEM > &3%player% à cassé &b%{obsi.%player%}% bloc(s) d'obsidienne(s)" if {obsi.%player%} >= 5: broadcast "&9TOTEM > &a%player% &2à miné le Totem entier !" execute console command "/crate key %player% Diamant" message " " message "&9TOTEM > &aTu as miné tout les blocs d'obsidienne et tu reçois une clé de diamant !" message " " play "CLICK" to player at volume 0.2 show 100 "lava" particles at location of player for player offset by 1, 1 and 1 teleport player to {spawn.totem} set {obsi.%player%} to 0 else: message "&9TOTEM > &3Il y a un joueur dans un rayon de 5 blocs ! Tuez le avant de miner." set block at {block1.totem} to obsidian set block at {block2.totem} to obsidian set block at {block3.totem} to obsidian set block at {block4.totem} to obsidian set block at {block5.totem} to obsidian cancel event stop
    1 point
  3. Sûrement. Si c'est pas possible directement, ça doit l'être avec des bases de données. Après, je doute que ce soit facile à faire.
    1 point
  4. En fait, la condition que tu as écrites signifie : Si la distance entre le bloc au dessus du joueur et le bloc 25 mètres au dessus du joueur est inférieure à 19 mètres La valeur étant toujours 25 - 1 = 24, ta condition va toujours être fausse. Maintenant, si tu veux vérifier que les 20 blocs au dessus du joueur sont de l'air, faut tous les vérifier un à un. Me semble que tu peux utiliser une boucle : set {_bloc} to 0 while {_bloc} is less than 20: add 1 to {_bloc} if block {_bloc} blocks above player isn't air: set {_bloc} to 30 if {_bloc} is 20: #Suite du code
    1 point
  5. on damage: event-entity is a villager: cancel event Par contre il est invincible je ne sais pas si c'est un problème :/
    1 point
  6. Bah le système de else , car sa ne fait pas ce que je veux.
    1 point
  7. Je veux que sa détecte si il y a un autre joueur dans un rayon de 5 blocs , et si c'est le cas sa annule et lui dis de le tuer , et si il y a personne sa casse et fait l'autre truc.
    1 point
  8. donc comme la dit @Buttkill ses impossible en skript
    1 point
  9. D'accord beh on va faire un skript :) Télécharge cet addon qui te seras utile :) Ensuite voilà le code: on world change: wait 0.5 second clear player's inventory set player's helmet to {inv.%world of player%.%player%.helmet.main} set player's chestplate to {inv.%world of player%.%player%.chest.main} set player's leggings to {inv.%world of player%.%player%.legs.main} set player's boots to {inv.%world of player%.%player%.feet.main} set player's inventory's serialized contents to {inventory.%world of player%.%player%} On any move: wait 1 seconds set {inventory.%world of player%.%player%} to player's serialized inventory set {inv.%world of player%.%player%.helmet.main} to the helmet of the player set {inv.%world of player%.%player%.chest.main} to the chestplate of the player set {inv.%world of player%.%player%.legs.main} to the leggings of the player set {inv.%world of player%.%player%.feet.main} to the boots of the player
    1 point
  10. Je viens de tester sur un serveur avec spigot 1.8, et skript, SkRayFall et SkQuery dans les versions du zSkriptPack, et au reload il n'y a aucune erreur. Je me connecte avec minecraft 1.8.9 et tout fonctionne. Donc oui c'est censé être bon c'est bien ça le problème... Je vois vraiment pas le soucis, je pense pas que le fait d'utiliser spigot 1.8.8 changer beaucoup par rapport à spigot 1.8.. EDIT : si ça ne concerne plus Dynamic Arrow, passe en conversation privée ;)
    1 point
  11. Si j'ai bien compris, je dois faire: loop all players: truc de l'intro 1 loop all players: truc de l'intro2 etc. Merci de ta réponse. Dis-moi si je dois suivre cette intuition.
    1 point
×
×
  • 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.