Aller au contenu

Messages recommandés

Posté(e)

Hello !

Je codais un script de jeu et j'ai rencontré un problème :eek:

Je voyais aussi que pas mal de demandes d'aide étaient postées sur ce sujet, dorénavant on pourra les punir pour "Non recherche" ou leur donner ce lien ! :D

Comment regen efficacement une map ou un fragment de map ?

J'ai donc essayé de mes propres moyens mais sans succès, j'ai cherché un peu et je suis tombé sur ce que je voulais mais sous forme de script pas hyper optimisé et long :')

 

Mon code est parti de cela je mets donc la référence -> World_Regenerate par brianx2x

 

Le code contient plusieurs parties, la partie sauvegarde de blocs cassés et détruits, la fonction de régénération de ces blocs et enfin une commande pour accéder à la fonction.

Sauvegarder les blocs dans des variables n'est sûrement pas le plus optimisé mais je ne me suis pas plus penché sur le sujet.

# FONCTION DE RÉGÉNÉRATION
function regenWorld(i: integer):
   set {_Count} to size of {BlockLoc::*}
   loop {BlockLoc::*}:
       set block at {BlockLoc::%{_Count}%} to {BlockType::%{_Count}%}
       remove 1 from {_Count}
   delete {BlockLoc::*}
   delete {BlockType::*}


# SAUVEGARDE DES BLOCS DÉTRUITS
on break:
   add type of block to {BlockType::*}
   add location of block to {BlockLoc::*}


# SAUVEGARDE DES BLOCS POSÉS
on place:
   add air to {BlockType::*}
   add location of block to {BlockLoc::*}


# COMMANDE DE RÉGÉNÉRATION
command /worldregenerate:
   aliases: /wr, /wrg, /rg, /regen
   trigger:
      regenWorld(1)
      send "&aMonde regénéré."

 

Il faut donc utiliser Skript 2.2 pour pouvoir se servir des fonctions.

  • J'aime 1
Posté(e)

Oui c'est sûr, avec Multiverse pour regen totalement un monde c'est largement le best ! :P

Mais là c'était juste pour la map et totalement Skript, puis je suis tombé dessus et y'a plein de demandes donc autant en profiter xD

Et désolé je n'avais pas vu tes posts :/

Posté(e)

Après, il et possible de vérifier les blocks détruit par la TNT puis les faire regen ^^

[spoiler=code]

on explode:

add type of exploded blocks to {BlockType::*}

loop exploded blocks:

add location of loop-block to {BlockLoc::*}

 

 

  • 2 semaines après...
Posté(e)
Y'a un léger problème, si tu cases un bloc et que tu replace le même, si tu régen la map ça le ré-enlèvera a part si tu le recasse avant de régen la map :/

Après, c'est un fragment de code, rien ne t'empêche de le modifier à ta guise c:

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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.