アイテムを販売する

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

ゲームループの次のステージでは、プレイヤーはアイテムをゴールドで売り、バックパックに余裕を持つことができるようになります。

売却プラットフォームの作成

プレイヤーは、バッグに金を与えるためのプラットフォームに乗って、各アイテムを販売します。

プラットフォームのセットアップ

プラットフォームは任意の部分であり、販売を処理するスクリプトを含みます。

  1. 新しいパーツを作成し、SellPlatform という名前です。テーマに合わせてカスタマイズしてください。

  2. In SellPlatform, 新しいスクリプトを作成し、SellScript という名前のコメンコメントするを追加します。

  3. In SellScript, type local sellPart = script.Parent をタイプして、SellPlatform 部分を取得します。


    -- プレイヤーのアイテムをすべて売り、金を与えます
    local sellPart = script.Parent

タッチイベントを処理する

プラットフォームを使用するには、スクリプトにはチェックする必要があるプレイヤーが触れているかどうかの機能が必要です。

  1. プレイヤーがプラットフォームに触れているかどうかをチェックする名前の機能を作成します。 onTouch()


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. リーダーボードの任意の統計を変更するには、スクリプトはプレイヤーがキャラクターをコントロールしていることを知る必要があります。在 if 文で、GetPlayerFromCharacter() 機能を使用してプレイヤーを見つけます。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. 次の行で、そのプレイヤーのリーダー統計コンテナを取得します。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- プレイヤーのリーダーボードを取得します。アイテムとマネーを取得するために必要
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. 次の行で、プレイヤーのマネーとアイテムを取得する変数を作成します。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- プレイヤーのリーダーボードを取得します。アイテムとマネーを取得するために必要
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- プレイヤーのアイテムとマネーを取得
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. 作業を確認するには、プレイヤーが sellPart をタッチした場合に実行されるプリントステートメントを追加します。


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. スクリプトの底部で、onTouch() を接続して、SellPart's Touched イベントを販売します。


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- プレイヤーのリーダーボードを取得します。アイテムとマネーを取得するために必要
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- プレイヤーのアイテムとマネーを取得
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. プロジェクトをプレイし、sellPart に乗る; 出力ウィンドウにメッセージが表示されるでしょう "A Player touched sellPart"

アイテムを販売する

このエクスペリエンスでは、プレイヤーは各アイテムについて 100 ゴールドを獲得します。マネーを取得した後、プレイヤーのアイテムは 0 に戻され、プレイヤーが世界を探索できるようになります。

新しい販売機能のコーディング

  1. 変数の下で、 sellItems() という名前の関数を作成します。これには、 playerItems という名前のパラメータ 2つと、 playerGold です。


    -- プレイヤーのアイテムをすべて売り、金を与えます
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. プレイヤーに正しい量のゴールドを与えるには、playerItems の値を取得し、金の量 をアイテムごとに受け取る必要のある金の量に乗算します。この例では、アイテムあたり 100 個のゴールドコインが返されます。

    In the sellItems() 関数、型 local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- プレイヤーが持っているアイテムの数を取得し、それぞれのアイテムの価値を掛け算します。
    local totalSell = playerItems.Value * 100
    end
  3. Type playerGold.Value += totalSell をタイプして、アイテムのゴールドを現在のゴールドに追加します。


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- プレイヤーがお金に稼いだ量を追加する
    playerGold.Value += totalSell
    end
  4. playerItems.Value = 0 を入力します。これは、プレイヤーのアイテムを 0 に戻します。プレイヤーのアイテムが 0 に設定されていない場合は、スクリプトはプレイヤーに金を与え続けます。


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. In the onTouch() 関数, 文の第2文の下にある if 文の下に, sellItems() 関数を呼び出します。パラメータを通過する、 1> playerItems1> と、 4> playerGold4> を通過するので、それらを変更できます。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- プレイヤーのリーダーボードを取得します。アイテムとマネーを取得するために必要
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- プレイヤーのアイテムとマネーを取得
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. プロジェクトをプレイし、プレイヤーがプラットフォームに踏み入れるたびに、金が増加し、アイテムが 0 に設定されます。

トラブルシューティングのヒント

この時点で、アイテムを販売することはできません。以下の 1つを試してください。

  • sellItems() は、プレイヤーのアイテムをチェックする 第2 文で呼び出されます。
  • プレイヤーアイテムのような任意の IntValue は、変更を行った場合、最後に .Value を使用します。Value は常に大文字で表示されます。
  • sellPart.Touched:Connect(onTouch) はスクリプトの 下部 に入力されています。
  • sellItems(playerItems, playerGold) は、人形の終わりの前に入力されます。