아이템 판매

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

게임 루프의 다음 단계에서 플레이어는 백팩에 더 많은 공간을 구입할 수 있도록 금을 위해 아이템을 판매해야 합니다.

판매 플랫폼 생성

플레이어는 플랫폼에 서서 가방에 있는 각 아이템에 대해 금을 판매합니다.

플랫폼 설정

플랫폼은 어떤 부분이든 될 수 있으며 판매를 처리하는 스크립트를 포함합니다.

  1. SellPlatform이라는 이름의 새로운 부품을 생성합니다. 경험의 테마에 맞게 사용자 정의하십시오.

  2. In SellPlatform, 새로운 스크립트인 SellScript를 만들고 코멘트를 달다/남기다, 의견을 내다추가합니다.

  3. In SellScript, type local sellPart = script.Parent to get the SellPlatform part.


    -- 모든 플레이어의 아이템을 판매하고 골드를 제공합니다.
    local sellPart = script.Parent

터치 이벤트 처리

플랫폼을 사용하려면 스크립트에서 플레이어가 그것을 터치하는지 여부를 확인할 함수가 필요합니다.

  1. 플레이어가 플랫폼을 터치하는지 여부를 확인하는 함수 onTouch() 를 생성합니다.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. 리더보드통계를 변경하려면 스크립트는 어떤 플레이어가 캐릭터를 제어하는지 알아야 합니다. 이 문에서는 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() 를 연결하여 부품 터치 이벤트를 판매합니다.


    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() 라는 이름의 함수를 만들어 두 매개 변수를 각각 playerItemsplayerGold 로 지정합니다.


    -- 모든 플레이어의 아이템을 판매하고 골드를 제공합니다.
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. 플레이어에게 올바른 양의 금을 제공하려면 playerItems 의 값을 가져가 금당 받아야 하는 금액을 곱하십시오. 이 예에서는 각 항목당 100개의 금 코인이 지정됩니다.

    In the sellItems() 함수에서, type 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() 함수, 두 번째 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으로 설정됩니다.

문제 해결 팁

이 시점에서는 아이템을 판매하는 것이 원하는 대로 작동하지 않습니다. 다음 중 하나를 시도해 보세요.

  • sellItems() 은 플레이어의 아이템을 검사하는 두 번째 문에서 호출됩니다.
  • playerItems와 마찬가지로 모든 IntValue는 변경하면 끝에 .Value를 사용합니다. 값은 항상 대문자로 표시됩니다.
  • sellPart.Touched:Connect(onTouch) 는 스크립트의 하단에 입력됩니다.
  • sellItems(playerItems, playerGold)는 인간형 문장의 끝에 입력됩니다.