ゲームループの次のステージでは、プレイヤーはアイテムをゴールドで売り、バックパックに余裕を持つことができるようになります。
売却プラットフォームの作成
プレイヤーは、バッグに金を与えるためのプラットフォームに乗って、各アイテムを販売します。
プラットフォームのセットアップ
プラットフォームは任意の部分であり、販売を処理するスクリプトを含みます。
新しいパーツを作成し、SellPlatform という名前です。テーマに合わせてカスタマイズしてください。
In SellPlatform, 新しいスクリプトを作成し、SellScript という名前のコメンコメントするを追加します。
In SellScript, type local sellPart = script.Parent をタイプして、SellPlatform 部分を取得します。
-- プレイヤーのアイテムをすべて売り、金を与えますlocal sellPart = script.Parent
タッチイベントを処理する
プラットフォームを使用するには、スクリプトにはチェックする必要があるプレイヤーが触れているかどうかの機能が必要です。
プレイヤーがプラットフォームに触れているかどうかをチェックする名前の機能を作成します。 onTouch()
local function onTouch(partTouched)local character = partTouched.Parentendリーダーボードの任意の統計を変更するには、スクリプトはプレイヤーがキャラクターをコントロールしていることを知る必要があります。在 if 文で、GetPlayerFromCharacter() 機能を使用してプレイヤーを見つけます。
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)次の行で、そのプレイヤーのリーダー統計コンテナを取得します。
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- プレイヤーのリーダーボードを取得します。アイテムとマネーを取得するために必要local playerStats = player:FindFirstChild("leaderstats")end次の行で、プレイヤーのマネーとアイテムを取得する変数を作成します。
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")endend作業を確認するには、プレイヤーが sellPart をタッチした場合に実行されるプリントステートメントを追加します。
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")スクリプトの底部で、onTouch() を接続して、SellPart's Touched イベントを販売します。
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal 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")endendendsellPart.Touched:Connect(onTouch)プロジェクトをプレイし、sellPart に乗る; 出力ウィンドウにメッセージが表示されるでしょう "A Player touched sellPart" 。
アイテムを販売する
このエクスペリエンスでは、プレイヤーは各アイテムについて 100 ゴールドを獲得します。マネーを取得した後、プレイヤーのアイテムは 0 に戻され、プレイヤーが世界を探索できるようになります。
新しい販売機能のコーディング
変数の下で、 sellItems() という名前の関数を作成します。これには、 playerItems という名前のパラメータ 2つと、 playerGold です。
-- プレイヤーのアイテムをすべて売り、金を与えますlocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)プレイヤーに正しい量のゴールドを与えるには、playerItems の値を取得し、金の量 をアイテムごとに受け取る必要のある金の量に乗算します。この例では、アイテムあたり 100 個のゴールドコインが返されます。
In the sellItems() 関数、型 local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- プレイヤーが持っているアイテムの数を取得し、それぞれのアイテムの価値を掛け算します。local totalSell = playerItems.Value * 100endType playerGold.Value += totalSell をタイプして、アイテムのゴールドを現在のゴールドに追加します。
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- プレイヤーがお金に稼いだ量を追加するplayerGold.Value += totalSellendplayerItems.Value = 0 を入力します。これは、プレイヤーのアイテムを 0 に戻します。プレイヤーのアイテムが 0 に設定されていない場合は、スクリプトはプレイヤーに金を与え続けます。
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endIn 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 thensellItems(playerItems, playerGold)endendendプロジェクトをプレイし、プレイヤーがプラットフォームに踏み入れるたびに、金が増加し、アイテムが 0 に設定されます。
トラブルシューティングのヒント
この時点で、アイテムを販売することはできません。以下の 1つを試してください。
- sellItems() は、プレイヤーのアイテムをチェックする 第2 文で呼び出されます。
- プレイヤーアイテムのような任意の IntValue は、変更を行った場合、最後に .Value を使用します。Value は常に大文字で表示されます。
- sellPart.Touched:Connect(onTouch) はスクリプトの 下部 に入力されています。
- sellItems(playerItems, playerGold) は、人形の終わりの前に入力されます。