Aller au contenu

[Claim] Skript de claim


Messages recommandés

Posté(e)

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 ! )

  • J'aime 2
Posté(e)
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 ^^

  • J'aime 1
Posté(e)

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.

Posté(e)

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)

  • J'aime 1
Posté(e)
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...

Posté(e)

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

Posté(e)
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...

Posté(e)
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) ;-)

Posté(e)
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.

Posté(e)

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 :/

Posté(e)
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é...

Posté(e)
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

  • J'aime 3
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • 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.