Vendre des articles

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Pour la prochaine étape du game loop, les joueurs doivent vendre leurs objets pour le gold pour leur permettre d'acheter plus d'espace dans leurs sacs à dos.

Créer une plate-forme de vente

Les joueurs vendront leurs articles en montant sur une plate-forme qui leur donne de l'or pour chaque article dans leur sac.

Configurer la plate-forme

La plate-forme peut être n'importe quelle partie et inclura un script qui gère la vente.

  1. Créez une nouvelle partie nommée SellPlatform. Personnalisez-la pour refléter le thème de votre expérience.

  2. Dans SellPlatform, créez un nouveau script nommé SellScript et ajoutez un commenter.

  3. Dans SellScript, typez local sellPart = script.Parent pour obtenir la partie SellPlatform.


    -- Vend tous les articles d'un joueur et les donne en or
    local sellPart = script.Parent

Gestion des événements de touche

Pour utiliser la plateforme, le script a besoin d'une fonction pour vérifier si un joueur le touche.

  1. Créer une fonction nommée onTouch() qui vérifie si un joueur touche la plateforme.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Pour modifier l'une des statistiques sur le tableau de bord, 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)
  3. Sur la prochaine ligne, obtenez le conteneur de statistiques leader 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'argent
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Sur la prochaine ligne, créez des variables pour obtenir l'argent et les articles 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'argent
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtient les articles et l'argent du joueur
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Pour vérifier votre travail, ajoutez une déclaration d'impression qui s'exécute si un joueur touche vendPart.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. Au bas du script, connectez le onTouch() pour vendre l'événement Touched de la partie.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtient le classementsdu joueur. Nécessaire pour obtenir des articles et de l'argent
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtient les articles et l'argent du joueur
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. Jouez votre projet et passez 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.

Codage d'une nouvelle fonction de vente

  1. Sous les variables, créez une fonction nommée sellItems() qui obtient deux paramètres nommés playerItems et playerGold.


    -- Vend tous les articles d'un joueur et les donne en or
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Pour donner aux joueurs le bon montant d'or, prenez la valeur des playerItems et multipliez-la par le montant d'or qu'ils doivent recevoir par item. Cet exemple donne 100 pièces d'or par item.

    Dans la fonction sellItems(), typez local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- Obtient le nombre d'objets que le joueur a et multiplie ce nombre par leur valeur d'objet.
    local totalSell = playerItems.Value * 100
    end
  3. Tapez playerGold.Value += totalSell pour ajouter l'or pour les articles à leur or actuel.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Ajouter combien le joueur gagne à son argent
    playerGold.Value += totalSell
    end
  4. Tapez playerItems.Value = 0 . Ceci réinitialise les éléments d'un joueur à 0. Si les éléments d'un joueur ne sont pas réinitialisés à 0, le script continuera à donner aux joueurs de l'or sans s'arrêter.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. Dans la fonction onTouch(), sous la deuxième if statement:, appelez la fonction sellItems() . Passer les paramètres, sellItems() et 1> playerGold1> 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'argent
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtient les articles et l'argent du joueur
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Jouez votre projet ; vérifiez que chaque fois qu'un joueur marche sur la plateforme, leur or augmente et leurs articles sont réglés sur 0.

Conseils de débogage

À ce stade, la vente d'objets ne fonctionne pas comme prévu, essayez l'un des suivants ci-dessous.

  • sellItems() est appelé dans la deuxième ligne si la déclaration vérifie les articles du joueur.
  • Tout intérêt, comme les éléments de joueur, utilise .Value à la fin si vous apportez une modification à celui-ci. La valeur est toujours en majuscules.
  • sellPart.Touched:Connect(onTouch) est saisi au bas * de * le script.
  • sellItems(playerItems, playerGold) est écrit avant la fin du if humanoid then statement.