
Pour la prochaine étape de la boucle de jeu, les joueurs doivent vendre leurs articles contre de l'or pour pouvoir acheter plus d'espace dans leurs sacs à dos.
Créer une plateformede vente
Les joueurs vendent leurs articles en se rendant sur une plate-forme qui leur donne de l'or pour chaque article dans leur sac.
Configurer la plateforme
La plate-forme peut être n'importe quelle partie et inclura un script qui gère la vente.
Créez une nouvelle partie nommée SellPlatform. Personnalisez-la pour qu'elle soit en rapport avec le thème de votre expérience.
Dans la plate-forme de vente, créez un nouveau script nommé SellScript et ajoutez un commenter.
Dans SellScript, tapez local sellPart = script.Parent pour obtenir la partie SellPlatform.
-- Vend tous les objets d'un joueur et leur donne de l'orlocal sellPart = script.Parent
Gérer les événements de toucher
Pour utiliser la plateforme, le script a besoin d'une fonction pour vérifier si des joueurs le touchent.
Créez une fonction nommée onTouch() qui vérifie si un joueur touche la plateforme.
local function onTouch(partTouched)local character = partTouched.ParentendPour modifier l'une des statistiques sur le tableau des scores, le script doit savoir quel joueur contrôle le personnage.Dans la déclaration if, utilisez la fonction GetPlayerFromCharacter() pour trouver un joueur.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)Sur la ligne suivante, obtenez le conteneur leaderstats de ce joueur.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Obtient le classementsdu joueur. Nécessaire pour obtenir des articles et de l'argentlocal playerStats = player:FindFirstChild("leaderstats")endSur la ligne suivante, créez des variables pour obtenir l'argent et les objets du joueur.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Obtient le classementsdu joueur. Nécessaire pour obtenir des articles et de l'argentlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Obtient les objets et l'argent du joueurlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendPour vérifier votre travail, ajoutez une déclaration d'impression qui s'exécutera si un joueur touche sellPart.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")En bas du script, connectez le onTouch() à l'événement Touched de sellPart.
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Obtient le classementsdu joueur. Nécessaire pour obtenir des articles et de l'argentlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Obtient les objets et l'argent du joueurlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)Jouez votre projet et marchez sur sellPart ; vous devriez voir le message "A Player touched sellPart" dans la fenêtre de sortie.
Vendre des articles
Dans cette expérience, un joueur obtiendra 100 or pour chaque item.Après avoir obtenu de l'argent, leurs articles seront réinitialisés à 0, permettant aux joueurs d'explorer le monde pour plus d'articles.
Coder une nouvelle fonction de vente
Sous les variables, créez une fonction nommée sellItems() qui reçoit deux paramètres nommés playerItems et playerGold.
-- Vend tous les objets d'un joueur et leur donne de l'orlocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)Pour donner aux joueurs la bonne quantité d'or, prenez la valeur du playerItems et multipliez-la par la quantité d'or qu'ils devraient recevoir par item.Cet exemple donne cent pièces d'or par item.
Dans la fonction sellItems(), saisissez local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- Obtient le nombre d'objets que le joueur a et les multiplie par la valeur de l'objet.local totalSell = playerItems.Value * 100endTapez playerGold.Value += totalSell pour ajouter l'or aux objets à leur or actuel.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- Ajouter combien le joueur gagne à son argentplayerGold.Value += totalSellendType playerItems.Value = 0 .Cela remet les articles d'un joueur à 0.Si les articles d'un joueur ne sont pas réinitialisés à 0, le script continuera à donner de l'or aux joueurs sans s'arrêter.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endDans la fonction onTouch() , appelez la fonction sous la deuxième if statement , appelez la fonction sellItems() .Passez les paramètres, playerItems et playerGold afin qu'ils puissent être modifiés.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Obtient le classementsdu joueur. Nécessaire pour obtenir des articles et de l'argentlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Obtient les objets et l'argent du joueurlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendJouez votre projet ; vérifiez que chaque fois qu'un joueur marche sur la plateforme, son or augmente et ses articles sont réglés sur 0.
Conseils de dépannage
À ce stade, la vente d'articles ne fonctionne pas comme prévu, essayez l'une des options suivantes.
- sellItems() est appelé dans le deuxième si la déclaration qui vérifie les articles du joueur.
- Toute valeur IntValue, comme les éléments du joueur, utilise .Value à la fin si vous apportez une modification. La valeur est toujours en majuscules.
- sellPart.Touched:Connect(onTouch) est saisi en bas du script au niveau .
- sellItems(playerItems, playerGold) est saisi avant la fin de la déclaration if humanoid alors.