아이템 판매

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

게임 루프의 다음 단계에서 플레이어는 골드로 아이템을 판매하여 배낭에 더 많은 공간을 구매할 수 있도록 해야 합니다.

판매 플랫폼 생성

플레이어는 가방에 있는 각 아이템에 대해 골드를 제공하는 플랫폼에 서면 아이템을 판매할 것입니다.

플랫폼 설정

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

  1. SellPlatform라는 새 부품을 만들고 경험의 테마에 맞게 사용자 지정합니다.

  2. SellPlatform에서 SellScript라는 새 스크립트를 만들고 코멘트를 달다/남기다, 의견을 내다추가합니다.

  3. SellScript에서 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()를 연결하여 팔부품의 터치 이벤트를 판매합니다.


    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개의 골드 조각을 제공합니다.

    sellItems() 함수에서 유형 local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- 플레이어가 가진 아이템 수를 가져와 아이템 가치로 곱합니다.
    local totalSell = playerItems.Value * 100
    end
  3. 유형 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. onTouch() 함수에서, 두 번째 if 문 아래에서 , sellItems() 함수를 호출합니다.매개 변수를 전달하고, playerItemsplayerGold 그래서 변경할 수 있습니다.


    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() 은 플레이어의 아이템을 확인하는 두 번째 문에서 호출됩니다.
  • 플레이어 아이템처럼 모든 IntValue는 변경하는 경우 끝에 .Value를 사용합니다. 값은 항상 대문자로 표시됩니다.
  • sellPart.Touched:Connect(onTouch)는 스크립트의 하단에 타이핑됩니다. **** * sellItems(playerItems, playerGold)는 로봇이 아닌 문이 끝나기 전에 타이핑됩니다.