Mindustry

Mindustry

Not enough ratings
Guide en français Mindustry: la logique (mlog)
By Furax and 2 collaborators
Automatiser avec les blocs de logique dans Mindustry
2
   
Award
Favorite
Favorited
Unfavorite
Intro
Un processeur comporte plusieurs options ainsi que plusieurs "dérivés"
Voici l'écran des processeurs :
Et voici les différents "dérivés" :
Comme vous le voyez le processeur ce divise en 5 parts :
La première permet de d'interagir avec " les dérivés
La seconde permet d'interagir avec des bâtiments
La troisième permet de gérer les variables
La quatrième permet d'adapter votre programme à différent changement de données
Et le dernier permet d'interagir avec des unités
Les "dérivés" ce composent :
De cellules de mémoire
D'interrupteur
De cellules de messages
D'écran
Et de processeur ( plus ils sont gros plus ils sont rapides )

Exécution du programme
Le programme dans le processeur est une suite d'instruction qui s'exécute en boucle.

C'est à dire que quand le programme arrive à la fin, il recommence au début et ceci une infinité de fois. (Sauf utilisation de l'instruction Stop)

Le programme se lance automatiquement à la 1er instruction lors de la fermeture de la page d'édition.

Lors de la modification après la 1ere exécution les variables sont remise dans leur état initial
Print
Originally posted by Anuke:
Ajoute du texte dans la mémoire tampon de l'imprimante.
Ne montrera aucun texte tant que Print Flush ne sera pas utilisé.

Exemple: si on lie un processeur avec un bloc de message taggué "message1"


Code source:
print "mlog " print "c'est " print "ez" printflush message1

Sur le bloc de message il sera afficher:
mlog c'est ez

Sensor
Permet de récupérer une information dans un bâtiment/unité

Originally posted by Anuke:
Récupère des données depuis un bâtiment ou une unité

Ce bloc prend en compte 3 paramètre:
  1. La variable ou vous allez mettre la valeur
  2. L'élément que vous allez récupérer (je les détaillerai plus loin)
  3. La cible de votre senseur

Par exemple voici un programme qui vas allez récupérer le nombre de tissu phasé dans le coffre (vault en anglais)


sensor result vault1 @phase-fabric print "il y a " print result print " tissu phasé" printflush message1

Et vous obtenez:

Dans la 3éme case vous pouvez entrer le nom d'un bâtiment lié au processeur ou entrer @unit afin de pouvoir tester les unité lié au processeur (cf bind)

Lorsque vous cliquez sur le petit crayon dans la 2ème case vous pouvez voir un menu contenant toute les ressources du jeux, cliqué dessus pour la cibler par votre senseur.

Aussi il existe la même chose pour les liquide et pour d'autre valeur propre à certains bâtiments.

Je vais vous montrer les plus importantes.

Nom
description
TotalItems
retourne la quantité global de ressource dans un bâtiment
firstItem
retourne la 1er ressource présente dans un bâtiment
totalLiquids
retourne la quantité global de liquide présent dans un conteneur à liquide
totalPower
retourne la quantité d'énergie présente dans le bloc ciblé
ItemCapacity
retourne la capacité de stockage d'objet du bloc ciblé
liquidCapacity
retourne la capacité de stockage de liquide du bloc ciblé
powerCapacity
retourne la capacité de stockage d'énergie du bloc ciblé
powerNetStored
retourne la quantité d'énergie stocké dans votre réseau énergétique
powerNetIn
retourne la quantité d'énergie qui rentre dans votre réseau énergétique
powerNetOut
retourne la quantité d'énergie qui sort dans votre réseau énergétique
ammo
retourne la quantité de muniton présent dans votre tourelle
ammoCapacity
retourne le stockage maximal de munition d'une tourelle
health
retourne la quantité de point de vie d'un bâtiment/unité
maxHealth
retourne la quantité la quantité maximal de point de vie d'un bâtiment/unité
heat
retourne la chaleur produit par un réacteur à thorium entre 0 et 1 (1 le réacteur explose)
efficiency
retourne l'efficacité d'un bâtiment en pourcentage
rotation
retourne l'orientation en degrés d'une tourelle/unité
x et y
retourne les coordonnées x et y du bâtiment/unité ciblé
shootx et shooty
retourne les coordonnées x et y de la cible d'une tourelle
size
retourne la taille d'un bâtiment/unité ciblé
dead
retourne l'état du bâtiment ciblé, 0 = en vie, 1 = détruit/non-utilisable
range
retourne la portée de la tourelle/bâtiment ciblé









Bind
Bloc permettant de lier une unité allié au processeur et de la contrôler.

Originally posted by Anuke:
Se lie à une unité du type donné et la stocke dans @unit

ce code lie l'unité "poly" (T2 aérien reconstructeur), puis affiche le nombre de silicium stocké dans cette unité

ubind @poly sensor result @unit @silicon print result printflush message1

Avec ce code vous obtenez ceci:



Control
Bloc permettant le contrôle de bâtiment

Originally posted by Anuke:
Contrôle un bâtiment

Ce bloc possède plusieurs modes:
  1. enabled
  2. shoot
  3. shootp
  4. config
  5. color

enabled
enabled sers à allumer ou a éteindre un bâtiment (0=éteint, 1=allumé)
Vous pouvez repérer qu'un bâtiment est éteint quand une croix rouge est présente sur ce dernier


Lorsque le batiment est éteint il ne consomme plus de carburant ni d’énergie et ne crée plus de chaleur mais n'en perd pas (pratique pour les réacteurs à thorium)

shoot
shoot permet de faire tirer une tourelle à des coordonnées précises (si la cible est hors de portée, le tourelle visera, tirera mais ne touchera pas)

par exemple
control shoot duo1 0 0 100 0

Dans ce bloc vous entrez le batiment concerné, les coordonées de tirs et le shoot doit être à 1 (ou supérieur) pour que la tourelle envoi la sauce.

shootp
shootp est très proche du shoot sauf qu'il permet de viser une unité en anticipant ses mouvements. (en gros ce que fais une tourelle de base)

il fonctionne avec le bloc radar que je vais rapidement vous détaillé

.
  1. le "from" désigne le bâtiment d'où part la détection (batiment)
  2. le "target" désigne les cibles avec différent choix, (aérienne, ennemi, allié...)
  3. le "order" sert à activer ou à désactiver le bloc (1 actif, 0 inactif)
  4. le "sort" trie les unité détecté en fonction de différents paramètres (vie, distance...)
  5. le "outpout" contient une variable qui va être utilisé par le bloc control pour cibler l'unité

Pour le shootp:
vous devez rentrer le nom du bâtiment qui doit tirer (foreshadow1 dans l'exemple) ensuite l'unité ciblé (dans l'exemple, l'unité est stocké dans la variable result) et enfin l'ordre de tire (1 FEUX !!, 0 pas feux)

config
le config permet de configurer un bloc (trieur, usine...)

Vous devez entrer le nom du bloc à configurer et rentrer le nom de l'item/fluid/unité que vous voulez laisser passer/construire

voici un tableau qui à tout les noms des éléments vanilla
nom FR
nom IG
cuivre
@copper
plomb
@lead
Verre
@metaglass
graphite
@graphite
sable
@sand
Verre
@metaglass
Charbon
@coal
sable
@sand
titane
@titanium
thorium
@thorium
feraille
@scrap
silicium
@silicon
plastanium
@plastanium
tissu phasé
@phase-fabric
alliage superchargé
@surge-alloy
spore
@spore-pod
mélange explosif
@blast-compound
pyratite
@pyratite
Pour les unité rajoutez un @ devant leur nom

color

Color sert a modifier la couleur d'un illuminateur (bloc ultra utile)
vous entrez le nom de l'illuminateur avec les valeurs RGB (RVB dans la langue de wejdene) et ça modifie la couleur.
Draw
Draw et la commande principale pour utiliser les écrans, elle comporte plusieurs options et n'affichera rien temps que draw flush n'est pas utilisé.
Voici les différentes options :
1- clear
2- color
3- stroke
4- line
5- rect
6- line rect
7- poly
8- line poly
9- triangle
10- image

Aussi les écrans sont fait de pixel les grands font du 176 par 176 et les petits du 100 par 100 pour trouver un point c'est le principe de la bataille navale

Clear

Remplit l'écran d'une seul couleur en masquant tout déjà présent ( avec les valeurs RGB ).

Color
Permet de donner de la couleur aux figures que vous allez dessiner sur les écrans ( toujours avec les valeurs RGB )

Strock
Permet de définir l'épaisseur quand t'on dessine des lignes ( très pratique quand t'on veux des rectangles en diagonale )

Line

Permet de tracer des lignes.
Pour l'utiliser on définit le premier point x,y puis le deuxième point x2, y2. ( on peux très bien utiliser des variables.
On peut donc tracer des lignes dans tout les sens de toute les couleurs et de toute taille.

Rect
Pour dessiner un rectangle ( plein ) on utilise cette commande.
Pour l'utiliser on marque les coordonnées du premier point et on définit sa largeur dans width et sa hauteur dans height. A savoir qu'on peut utiliser des variables et des valeurs négative.

Line rect
Le fonctionnement et EXACTEMENT comme rect seulement on obtient un rectangle vide.

Poly
Commençons la complexité, poly permet de dessiner des polygones très variés en taille nombre de côté et autres. A savoir que les figures sont pleines.
Voici un aperçu.

Les premières coordonnées permettent de définir le centre de la figure, sizes permet de définir le nombre de côté ( à savoir qu'il on tous la même taille ), radius permet de définir la taille et rotation permet de définir la rotation.

Line poly
Permet de dessiner des figures complexe vide ( comme pour le rect et le line rect ).

Triangle

Permet de dessiner des triangles. Pour l'utiliser il faut définir le premier point le second point et le dernier point cela permet de tracer des triangles très variés ( cependant le "line triangle" n'existe pas, une solution serait d'utiliser des lignes.

Image

Outils très pratique permettant d'afficher des images près enregistrée. Pour l'utiliser entré les coordonnées, l'image, la taille et la rotation.
Voici tout les types d'image.
Read, write & memory
Read & Write sont les deux éléments nécessaires pour utiliser les cellules de mémoires.
Une cellule contient 64 "emplacements" ou "slot" et une grande appelé "banque" peux en avoir 512 ( ce qui est largement suffisant ).

Voici un aperçu.

Dans write on écrit la variable que l'on veut sauvegarder ( ça ne sauvegarde pas qu'un chiffre ), le "to" permet de définir la cellule utiliser et le "at" permet de définir l'emplacement.
Write signifie écrire dans la langue de Maitre Gims.

Read
Read permet de lire, dans read. On définit la variable où l'on veut inscrire les données, dans = on définit la cellule où l'on veut extraire les données ( elle resteront inscrites ) et dans "at" on indique l'emplacement d'où l'on veut extraire les données.

Le principal intérêt des cellules de mémoire et de pouvoir faire coopérer des processeurs ( utille quand on veut définir les tâches ( un processeur extrait les données les inscrits et l'autre les lits et les retranscrit )).
Unité
ATTENTION les unités sont des objets très pratique mais assez complexe à utiliser
Work in progress
Jump, Wait, End & Stop
Voici la partie logique
Originally posted by Anuke:
Manipule le fil d'exécution


Cette partie est composé de 4 instructions:

  1. Jump
    Originally posted by Anuke:
    Saute conditionnellement vers une autre instruction


    Le bloc est composé à gauche de 2 emplacements libre où vous pouvez y définir ce que vous souhaitez (variable, nombre, matière 1ere, bloc, unité...).

    Sur l'image il s'agit de la variable "result" et du nombre 10

    Entre ces 2 cases vous pouvez choisir l'opération logique à réaliser entre ces 2 éléments.

    Operation
    Description
    ==
    égalité non typé (déconseillé)
    Not
    Transforme une opération vrai en faux et faux en vrai
    <
    strictement inférieur à
    <=
    inférieur ou égal à
    >
    strictement supérieur à
    >=
    supérieur ou égal à
    ===
    égalité typé (recommandé) permet de tester un type null
    always
    toujours vrai

    Si la condition est vrai alors le jump renvoi vers l'opération pointé avec la flèche situé à droite du bloc

    set result 0 wait 0.5 op add result result 1 print result printflush message1 jump 1 lessThan result 10 end

    Dans cette exemple tant que la variable "result" est inférieur à 10 alors on retourne à l'opération pointé par la flèche. Sinon on continu normalement le programme

  2. Wait
    Originally posted by Anuke:
    Permet d'attendre un certains nombre de secondes

    Cette instruction permet de rajouter un délai (en seconde)



    Pendant ce temps le processeur ne sera plus capable d'effectuer la moindre instruction (détection, opération...)

  3. End
    Originally posted by Anuke:
    Saute au sommet de la série d'instruction


    Cette instruction permet de recommencer au tout début du programme (peut importe ce qu'il y'a en dessous)

  4. Stop
    Originally posted by Anuke:
    Stop l'exécution du programme


    Stop l'exécution du programme, il ne recommencera pas.
3 Comments
RaphaBlox Jun 9 @ 8:09am 
merci
mesgrandsenfants.libert Aug 20, 2022 @ 7:27am 
merci grace a ca j'ai enfin pus fair un systeme fonctionnel
ZetaMap Oct 2, 2021 @ 7:05am 
super projet