Sulfu Posté(e) le 15 avril 2018 Posté(e) le 15 avril 2018 Version de minecraft / skript : 1.10 Type du skript : Skript de claim Description du script : Bonjour, je souheterais un skript qui permet de claim bloc par bloc, par exemple, si je fais /claim 100 100, cela claim un 100x100 etc... Pour le message pour dire que c'est claim j'aimerais bien "La région a bien été claim !" Et aussi que l'on puisse ajouter des personnes dedans avec /claim add (pseudo). Pour le message pour dire que on a bien ajouté la personne j'aimerais bien "Vous avez ajouté (joueur) dans votre claim ! " Et finalement le /claim delete pour supprimer une région ^^ Message de réussite : "La région a bien été unclaim !" Cordialement, Sulfukodin Merci de votre aide et bonne journée. PS : ( Je n'ai pas envie que vous me donnez le lien d'un plugin car je voudrais faire un serveur FULL skript ! ) 2
lazerda456 Posté(e) le 15 avril 2018 Posté(e) le 15 avril 2018 Version de minecraft / skript : 1.10 Type du skript : Skript de claim Description du script : Bonjour, je souheterais un skript qui permet de claim bloc par bloc, par exemple, si je fais /claim 100 100, cela claim un 100x100 etc... Pour le message pour dire que c'est claim j'aimerais bien "La région a bien été claim !" Et aussi que l'on puisse ajouter des personnes dedans avec /claim add (pseudo). Pour le message pour dire que on a bien ajouté la personne j'aimerais bien "Vous avez ajouté (joueur) dans votre claim ! " Et finalement le /claim delete pour supprimer une région ^^ Message de réussite : "La région a bien été unclaim !" Cordialement, Sulfukodin Merci de votre aide et bonne journée. PS : ( Je n'ai pas envie que vous me donnez le lien d'un plugin car je voudrais faire un serveur FULL skript ! ) Faisable mais chiant ^^ 1
LeCraftDeOuf Posté(e) le 15 avril 2018 Posté(e) le 15 avril 2018 Risque de faire lag le serveur :/ Ont doit calculer chaque blocs
Sulfu Posté(e) le 15 avril 2018 Auteur Posté(e) le 15 avril 2018 Ce n'est pas grave je veux juste le script ^^ si il fait lag je l'enlève
Mark Alonzo Posté(e) le 16 avril 2018 Posté(e) le 16 avril 2018 C'est compliqué ce que tu demandes car imaginons que je claim un endroit 10x10 (juste 10x10 ça fait un peu lag car toutes les coordonées des blocs tu loop 10x10 seront stockés) puis que dans l'endroit du 10x10 se trouve un arbre une autre personne claim et claim l'arbre il y aura donc conflit car les coordonées seront dans 2 variables de 2 différents joueurs qui ne voulaient surement pas se partager l'arbre.
lijo62 Posté(e) le 16 avril 2018 Posté(e) le 16 avril 2018 Pour information il n'est pas nécessaire de calculer chaque block .-. Il suffit de faire une variable par Chunk : if {chunk.%Chunk at location of player%} is set:[/Code] J'ai dev tout un skript de ville, avec gestion d'habitants, taxes, claim, système de guerre etc, simplement avec ce système x) 1
Mark Alonzo Posté(e) le 16 avril 2018 Posté(e) le 16 avril 2018 Pour information il n'est pas nécessaire de calculer chaque block .-. Il suffit de faire une variable par Chunk : if {chunk.%Chunk at location of player%} is set:[/Code] J'ai dev tout un skript de ville, avec gestion d'habitants, taxes, claim, système de guerre etc, simplement avec ce système x) [b][size=7][color=#660000][u]T'es un GENIE TOi TU LE SAIS ?[/u][/color][/size][/b] @lijo62 ton truc c'est super simple, "CLAIM DES CHUNKS" soit 1 chunk = 16x16, moi je parlais de claim de block, soit de leur localisation en gros... Si ce que Sulfu cherche c'est un système de Claimd e chunk il y en a déjà plusieurs sur SKRIPT MC qui sont fonctionels & marche super bien il n'a que les télécharger...
lijo62 Posté(e) le 16 avril 2018 Posté(e) le 16 avril 2018 Bah le mieux dans ce cas la est de découper le monde en tronçons prédéfini à l'image de chunk ne vois pas vraiment l'intérêt de claim block par block ... Juste dans une zone de rayon 10 ça fait : 10x10x256 = 25 600 blocks .-. Je vois mal un serveur pouvant analyser des milliards de variables juste pour savoir si un block à été claim ! Ouai ou alors le but est de definir par troncons pour créer des "mini-chunk" par exemple des troncons de 8x8 ou 4x avec rayon modifiable, c'est ce qui serait le mieux dans son cas, faut juste être un minimum bon en maths xD
Mark Alonzo Posté(e) le 16 avril 2018 Posté(e) le 16 avril 2018 Bah le mieux dans ce cas la est de découper le monde en tronçons prédéfini à l'image de chunk ne vois pas vraiment l'intérêt de claim block par block ... Juste dans une zone de rayon 10 ça fait : 10x10x256 = 25 600 blocks .-. Je vois mal un serveur pouvant analyser des milliards de variables juste pour savoir si un block à été claim ! Ouai ou alors le but est de definir par troncons pour créer des "mini-chunk" par exemple des troncons de 8x8 ou 4x avec rayon modifiable, c'est ce qui serait le mieux dans son cas, faut juste être un minimum bon en maths xD L'intérêt de claim en block par block non seulement ça peut être plus précis et non seulement ça peut être plus précis, j'ai pas d'argument mdr mais ça ne sert qu'a être précis imaginons que tu veuilles donner (t'es admin) 1 zone de 4x4 à un joueur, tu vas pas lui donner un chunk entier... le problème aussi avec les chunk surtout dans les VILLES c'est qu'ils seront en carrés et non naturel... Vive WorldGuard & WorldEdit...
juliope33 Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 sinon les claims s'enregistre dans un fichier ?
lijo62 Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 L'intérêt de claim en block par block non seulement ça peut être plus précis et non seulement ça peut être plus précis, j'ai pas d'argument mdr mais ça ne sert qu'a être précis imaginons que tu veuilles donner (t'es admin) 1 zone de 4x4 à un joueur, tu vas pas lui donner un chunk entier... le problème aussi avec les chunk surtout dans les VILLES c'est qu'ils seront en carrés et non naturel... Vive WorldGuard & WorldEdit... Oui mais être près à faire cracher un serveur pour être plus précis c'est moyen xD Mais sinon par un système de troncons tu peux être beaucoup plus précis et beaucoup moins faire crash : Pour une zone de 10x10x256 ça fait 25600 blocs donc 25600 variables ... Au contraire sI tu etablis un système de troncons de 4 blocks (ce qui n'est pas grand chose) tu passes de 25600 variables à enregistrer à 6400 ce qui est beaucoup mieux ! Une machine n'a pas des caractéristiques illimitées x) sinon les claims s'enregistre dans un fichier ? Ça serait possible à faire mais c'est en soit ce qu'il se passe lorsque le joueur met une variable par blocks (la variable s'ajoutant dans le fichier variables.csv) ;-)
Mark Alonzo Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 Oui mais être près à faire cracher un serveur pour être plus précis c'est moyen xD Mais sinon par un système de troncons tu peux être beaucoup plus précis et beaucoup moins faire crash : Pour une zone de 10x10x256 ça fait 25600 blocs donc 25600 variables ... Au contraire sI tu etablis un système de troncons de 4 blocks (ce qui n'est pas grand chose) tu passes de 25600 variables à enregistrer à 6400 ce qui est beaucoup mieux ! Une machine n'a pas des caractéristiques illimitées x) Ça serait possible à faire mais c'est en soit ce qu'il se passe lorsque le joueur met une variable par blocks (la variable s'ajoutant dans le fichier variables.csv) ;-) 6400 coordonées stocké dans une variable list -> ::* c'est trop long & à peine la difference entre 25600 et 6400 ne change pas dans les deux cas ça lag à mort, imaginons que tu casses un bloc, l''évenement se déclenche, la variable list est regardé et vue qu'il y a 6400 coordonées c'est super énorme.
lijo62 Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 Oui je sais c'est pour cela que personnellement je préfère le système de chunk, certe plus traditionnel que le système de block. Par contre par obligé de passer par une liste mais vraiment par "une variable par block" pour éviter les lags, il suffirait juste de regarder si la variable du block est défini ... Seul soucis ... Ça prendrait énormément de place juste au niveau du stockage de variables :/
Mark Alonzo Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 Oui je sais c'est pour cela que personnellement je préfère le système de chunk, certe plus traditionnel que le système de block. Par contre par obligé de passer par une liste mais vraiment par "une variable par block" pour éviter les lags, il suffirait juste de regarder si la variable du block est défini ... Seul soucis ... Ça prendrait énormément de place juste au niveau du stockage de variables :/ Oui, au lieu de faire une liste pour claim une région on peut directement mettre la variable sur le block met comme tu le dis dans ton fichier variables.csv sera saturé...
Mark Alonzo Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 Exactement x) Sinon, tu peux aller voir ma demande d'aide stp en espérant que tu pourra m'aider x')
McLincoln2 Posté(e) le 19 avril 2018 Posté(e) le 19 avril 2018 Faisable sans aucun lag avec n'importe quelle taille, je vais te le faire.
Mastersfelix Posté(e) le 19 avril 2018 Posté(e) le 19 avril 2018 Ou sinon tu stock 2 coordonnées et tu compares les coordonnées du joueurs avec les 2 coordonnées
McLincoln2 Posté(e) le 19 avril 2018 Posté(e) le 19 avril 2018 Ou sinon tu stock 2 coordonnées et tu compares les coordonnées du joueurs avec les 2 coordonnées Les coordonnées de deux coins opposés, le principe d'un cuboid.
Mark Alonzo Posté(e) le 19 avril 2018 Posté(e) le 19 avril 2018 Faisable sans aucun lag avec n'importe quelle taille, je vais te le faire. Ambitieux & rêveur à ce que je vois x'), ah bon ? Si t'arrives à faire sa demande tes vraiment chaud toi
McLincoln2 Posté(e) le 19 avril 2018 Posté(e) le 19 avril 2018 Ambitieux & rêveur à ce que je vois x'), ah bon ? Si t'arrives à faire sa demande tes vraiment chaud toi Ended. function bigger(numbers:numbers) :: number: loop {_numbers::*}: if {_max} is not set: set {_max} to loop-value else if loop-value is bigger or equal to {_max}: set {_max} to loop-value return {_max} function smaller(numbers:numbers) :: number: loop {_numbers::*}: if {_min} is not set: set {_min} to loop-value else if loop-value is smaller or equal to {_min}: set {_min} to loop-value return {_min} function index(x:text="") :: objects: loop {claims::*}: loop {claims::%loop-value%::*}: add loop-value-2 to {_result::*} return {_result::*} function randomIndex(s:number) :: string: set {_char} to "abcdefghijklmnopqrstuvwxzABCDEFGHIJKLMNOPQRSTUVWXZ0123456789" loop {_s} times: add a random element of {_char} split by "" to {_result::*} return join {_result::*} function canEdit(p:player,uuid:string,loc:location) :: boolean: loop {claims::*}: loop {claims::%loop-value%::*}: set {_c} to {claims::%loop-value-1%::%loop-value-2%::1} set {_c2} to {claims::%loop-value-1%::%loop-value-2%::2} if {claims::%loop-value-1%::%loop-value-2%::world} is world of {_p}: if {_loc} is within {_c} to {_c2}: if loop-value-1 is {_uuid}: set {_o} to true else if {_p} has permission "unclaim.another": set {_o} to true else if {claims::%loop-value-1%::%loop-value-2%::players::%{_uuid}%} is set: set {_o} to true if {_o} is true: return true stop return false stop return true command /claim <integer> <integer>: trigger: if {claims::%uuid of player%} is not set: set {claims::%uuid of player%} to uuid of player set {_corner} to location x-location of block at player-(int-arg-1), 256, z-location of block at player-(int-arg-2) of world of player set {_corner2} to location x-location of block at player+(int-arg-1), 0, z-location of block at player+(int-arg-2) of world of player set {_x::*} to x-location of block at player-(int-arg-1) and x-location of block at player+(int-arg-1) set {_z::*} to z-location of block at player-(int-arg-2) and z-location of block at player-(int-arg-2) loop {claims::*}: loop {claims::%loop-value%::*}: set {_world} to {claims::%loop-value-1%::%loop-value-2%::world} set {_c} to {claims::%loop-value-1%::%loop-value-2%::1} set {_c2} to {claims::%loop-value-1%::%loop-value-2%::2} set {_c3} to location x-location of {_c}, 256, z-location of {_c2} of {_world} set {_c4} to location x-location of {_c2}, 0, z-location of {_c} of {_world} if {_world} is world of player: if {_c} is within {_corner} to {_corner2}: send "§cLa région appartient au joueur:§7 %offline player from loop-value-1%§c." to player stop if {_c2} is within {_corner} to {_corner2}: send "§cLa région appartient au joueur:§7 %offline player from loop-value-1%§c." to player stop if {_c3} is within {_corner} to {_corner2}: send "§cLa région appartient au joueur:§7 %offline player from loop-value-1%§c." to player stop if {_c4} is within {_corner} to {_corner2}: send "§cLa région appartient au joueur:§7 %offline player from loop-value-1%§c." to player stop set {_r} to randomIndex(10) while "%index()%" contains "%{_r}%": set {_r} to randomIndex(10) send "§aLa région est protégée et enregistrée dans vos régions en tant que:§f %{_r}%§a." to player set {claims::%uuid of player%::%{_r}%} to {_r} set {claims::%uuid of player%::%{_r}%::1} to {_corner} set {claims::%uuid of player%::%{_r}%::2} to {_corner2} set {claims::%uuid of player%::%{_r}%::world} to world of player command /unclaim: trigger: loop {claims::*}: loop {claims::%loop-value%::*}: set {_c} to {claims::%loop-value-1%::%loop-value-2%::1} set {_c2} to {claims::%loop-value-1%::%loop-value-2%::2} if {claims::%loop-value-1%::%loop-value-2%::world} is world of player: if block at player is within {_c} to {_c2}: if loop-value-1 is uuid of player: set {_o} to true else if player has permission "unclaim.another": set {_o} to true if {_o} is true: send "§aLa région qui était enregistrée en tant que:§f %loop-value-2%§a, a été supprimée." to player delete {claims::%loop-value-1%::%loop-value-2%::players::*} delete {claims::%loop-value-1%::%loop-value-2%::1} delete {claims::%loop-value-1%::%loop-value-2%::2} delete {claims::%loop-value-1%::%loop-value-2%::world} delete {claims::%loop-value-1%::%loop-value-2%} stop send "§cVous ne possédez pas les droits pour supprimer la région:§7 %loop-value-2%§c, appartenant au joueur:§7 %offline player from loop-value-1%§c." to player stop send "§cVous n'êtes pas dans une région." to player command /claimadd <player>: trigger: loop {claims::*}: loop {claims::%loop-value%::*}: set {_c} to {claims::%loop-value-1%::%loop-value-2%::1} set {_c2} to {claims::%loop-value-1%::%loop-value-2%::2} if {claims::%loop-value-1%::%loop-value-2%::world} is world of player: if block at player is within {_c} to {_c2}: if loop-value-1 is uuid of player: set {_o} to true else if player has permission "invite.another": set {_o} to true if {_o} is true: if {claims::%loop-value-1%::%loop-value-2%::players::%uuid of arg%} is not set: if arg is not player: set {claims::%loop-value-1%::%loop-value-2%::players::%uuid of arg%} to uuid of arg send "§aLe joueur:§f %arg%§a, a été ajouté dans la région:§f %loop-value-2%§a." to player else: send "§cVous ne pouvez pas vous inviter vous-même." to player send "§cLe joueur:§7 %arg%§c, est dans cette région." to player stop send "§cVous ne possédez pas les droits pour ajouter des joueurs dans la région:§7 %loop-value-2%§c, appartenant au joueur:§7 %offline player from loop-value-1%§c." to player stop send "§cVous n'êtes pas dans une région." to player command /claimremove <offline player>: trigger: loop {claims::*}: loop {claims::%loop-value%::*}: set {_c} to {claims::%loop-value-1%::%loop-value-2%::1} set {_c2} to {claims::%loop-value-1%::%loop-value-2%::2} if {claims::%loop-value-1%::%loop-value-2%::world} is world of player: if block at player is within {_c} to {_c2}: if loop-value-1 is uuid of player: set {_o} to true else if player has permission "kick.another": set {_o} to true if {_o} is true: if {claims::%loop-value-1%::%loop-value-2%::players::%uuid of arg%} is set: if arg is not player: delete {claims::%loop-value-1%::%loop-value-2%::players::%uuid of arg%} send "§aLe joueur:§f %arg%§a, a été retiré de la région:§f %loop-value-2%§a." to player else: send "§cVous ne pouvez pas vous exclure vous-même." to player send "§cLe joueur:§7 %arg%§c, n'est pas dans cette région." to player stop send "§cVous ne possédez pas les droits pour exclure des joueurs de la région:§7 %loop-value-2%§c, appartenant au joueur:§7 %offline player from loop-value-1%§c." to player stop send "§cVous n'êtes pas dans une région." to player break: cancel event if canEdit(player,uuid of player,event-location) is true: uncancel event place: cancel event if canEdit(player,uuid of player,event-location) is true: uncancel event rightclick on door item or chest or trapped chest or furnace or ender chest or note block or dispenser or dropper or anvil or enchantment table or hopper or crafting table or bed: cancel event if canEdit(player,uuid of player,event-location) is true: uncancel event 0 lag, taille infinie. # EDIT 3
Messages recommandés