Les contenus d'un matriceseront souvent modifiés, comme lorsque vous devez supprimer un élément de l'inventaire d'un joueur. Lua a des fonctions prédéfinies à utiliser avec des tables pour rendre cela plus facile.
Cet article abordera les fonctions prédéfinies pour les tables comme ajouter et supprimer tout en décrivant comment rechercher une valeur.
Pour appliquer ces compétences, vous créerez un script qui aide à gérer l'inventaire d'un joueur dans un jeu.
Ajouter des valeurs aux tableaux
Pour ajouter une nouvelle valeur à un matrice, utilisez table.insert(array, valueToInsert) . Le deuxième paramètre peut être n'importe quelle valeur, comme une chaîne, un nombre ou un objet entier, comme Player ou Class.IntValue ».
Pour pratiquer, vous créerez un script qui stockera les articles du joueur dans une table, puis les ajouterez. Étant donné que cet exemple est un script, il peut être utilisé avec n'importe quel fichier ou projet. Le test du code sera effectué en utilisant la fenêtre d'Output.
Créer un tableau vide nommé playerItems .
playerItems = {}Ajoutez des éléments d'inventaire à l'arrêt en tapant table.insert(). Dans la parenthèse, tapez playerItems, la table à ajouter, suivie d'une chaîne pour chaque item. Insérez au moins trois valeurs.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)Exécutez le projet. Dans la sortie, élargissez les trois points ... pour voir la table imprimée.
Suppression des valeurs des tableaux
Pour supprimer une valeur, comme si un joueur a utilisé un élément ou quelqu'un dans une liste de joueurs actifs quittait une expérience, usez table.remove(). Selon les paramètres fournis, la fonction peut soit supprimer la dernière valeur d'une table, soit à un index spécifique.
Suppression de la dernière valeur
Parfois, un script doit supprimer un itemspécifique. Par instance, en supprimant le premier élément dans l'inventaire d'un joueur, ou en choisissant le premier joueur dans une liste. Pour supprimer la dernière valeur dans un matrice, utilisez table.remove(arrayName) . Dans ce cas d'utilisation, le seul paramètre nécessaire est la table elle-même.
Utilisez l' array de l' élément d'例 précédent. Ensuite, pour supprimer la dernière valeur de la table, dans ce cas "Sleeping Bag", type table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems)print(playerItems)Exécutez le projet. Dans la fenêtre sortie, la dernière valeur, "Sleeping Bag", ne devrait pas s'imprimer.
Suppression par l'index
Pour supprimer une valeur à un moment spécifique dans l'matrice, saisissez dans le deuxième paramètre l'index à retirer, comme table.remove(arrayName, 1).
En utilisant la même table, tapez table.remove(). Dans les paramètres, entrez le nom de la table et 1, la valeur à retirer.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems, 1)Exécutez le projet. Vérifiez que la première valeur, « Potion » a été supprimée.
Recherche des valeurs dans un tableau
Pour trouver des valeurs spécifiques dans les tableaux, comme le nom d'un joueur gagnant, utilisez la fonction table.find(). Alternativement, vous pouvez codifier votre propre fonction de recherche en utilisant for boucles et if déclarations.
Recherche et retour d'une valeur unique
Pour trouver une valeur dans un matrice, créez une fonction nommée findValue() qui passe à travers un tableau et arrête la première fois qu'il trouve une valeur correspondant.
Une fois qu'il a trouvé la valeur, la fonction utilise le mot-clé return pour retourner l'index de cette valeur. Avec un index, vous pouvez le supprimer de l'matrice.
Copiez l' array nommé playerItems ci-dessous.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Cliquez sur une nouvelle fonction nommée findValue() avec deux paramètres :
whichArray - l'arrêt à rechercher.
itemName - la chaîne spécifique à vérifier.
local function findValue(whichArray, itemName)end
Dans findValue(), utilisez un for loop pour vérifier si n'importe quelle valeur dans l'arrêt correspond à itemName . Si la valeur correspond, utilisez le mot-clé return pour retourner la valeur trouvée dans 1> currentIndex1> .
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendTestez la fonction de recherche en créant une variable nommée valueFound et en appelant findValue() . Passez dans l' array pour rechercher, et quelle valeur il devrait rechercher. Exécutez le code pour confirmer que la sortie attendue est l'index 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--Envoye la valeur de l'index actuelreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("The value is at index " .. valueFound)
Suppression d'une valeur
Si une valeur a été trouvée en utilisant la fonction trouver, il peut être supprimé. Vérifiez si une valeur a été trouvée avec une if statement.
Vérifiez si une valeur est à l'intérieur de valueFound ; si oui, supprimez la valeur en utilisant table.remove().
if valueFound thentable.remove(playerItems, valueFound)endImprimez l' array en utilisant le code ci-dessous.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endTestez le matriceet vérifiez que la première valeur "Bread" de l'arrêt a été supprimée de l'arrêt. Essayez de supprimer d'autres valeurs en modifiant le deuxième paramètre dans findValue() .
Remarquez que parce que cette fonction a été appelée une fois, seule la première instance de "Bread" a été supprimée. La section suivante couvrira comment trouver et supprimer toutes les instances.
Recherche et suppression de toutes les valeurs spécifiques
Bien que le code précédent ne puisse que supprimer la première instance d'une valeur trouvée, ce fragment de code trouvera et supprira toutes les occurrences d'un matrice. Par exemple, si, disons, un joueur voulait vendre tout leur pain dans un boutiquedans le jeu.
Utilisez un tableau nommé playerItems avec au moins quatre valeurs et un ensemble de duplicates .
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Pour aller à travers l' matrice, créez un for loop qui va en arrière à travers playerItems, en commençant à #playerItems et en terminant à 1, et en augmentant de -1.
for index = #playerItems, 1, -1 doendDans le boucle, utilisez une if statement pour vérifier si la valeur à l'intérieur de playerItems[index] est égale à "Bread", et si oui, supprimez l'item.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endendUtilisez le code ci-dessous pour ajouter une seconde pour boucler qui imprime l'matrice.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endExécutez le script et vérifiez que tous les valeurs nommées « Bread » sont supprimées.
Résumé
Les valeurs peuvent être supprimées ou ajoutées à un matrice, mais attention aux indexes déplaçant cela. Utilisez des boucles pour itérer à travers une table pour supprimer toutes les instances d'une valeur, ou juste la première instance trouvée.
Le mot-clé return peut être utilisé pour arrêter un boucle et envoyer l'information où nécessaire.
Une version finie du script peut être référencée ci-dessous.
Le projet suivant inclut tous les scripts dans ce tutoriel. Téléchargez ici.
Notez que tous les scripts sont dans ServerScriptService et désactivés . Pour utiliser un script, dans ses propriétés, désélectionnez le champ Disabled et exécutez Studio.