
게임 루프의 다음 단계에서 플레이어는 골드로 아이템을 판매하여 배낭에 더 많은 공간을 구매할 수 있도록 해야 합니다.
판매 플랫폼 생성
플레이어는 가방에 있는 각 아이템에 대해 골드를 제공하는 플랫폼에 서면 아이템을 판매할 것입니다.
플랫폼 설정
플랫폼은 어떤 부분이든 될 수 있으며 판매를 처리하는 스크립트를 포함합니다.
SellPlatform라는 새 부품을 만들고 경험의 테마에 맞게 사용자 지정합니다.
SellPlatform에서 SellScript라는 새 스크립트를 만들고 코멘트를 달다/남기다, 의견을 내다추가합니다.
SellScript에서 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()를 연결하여 팔부품의 터치 이벤트를 판매합니다.
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와 playerGold을 가져옵니다.
-- 플레이어의 모든 아이템을 판매하고 골드를 제공합니다local sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)플레이어에게 적절한 금액의 금을 제공하려면 playerItems의 값을 가져와 아이템당 받아야 할 금의 양으로 곱하십시오.이 예제에서는 아이템당 100개의 골드 조각을 제공합니다.
sellItems() 함수에서 유형 local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- 플레이어가 가진 아이템 수를 가져와 아이템 가치로 곱합니다.local totalSell = playerItems.Value * 100end유형 playerGold.Value += totalSell를 추가하여 아이템에 현재 금을 더합니다.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- 플레이어가 돈에 얼마를 벌어들이는지 추가playerGold.Value += totalSellend유형 playerItems.Value = 0 입력.플레이어의 아이템을 0으로 다시 설정합니다.플레이어의 아이템이 0으로 재설정되지 않으면 스크립트가 중지하지 않고 계속해서 플레이어에게 골드를 줄 것입니다.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endonTouch() 함수에서, 두 번째 if 문 아래에서 , sellItems() 함수를 호출합니다.매개 변수를 전달하고, playerItems 및 playerGold 그래서 변경할 수 있습니다.
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으로 설정되는지 확인합니다.
문제 해결 팁
이 시점에서 아이템 판매가 의도한 대로 작동하지 않으면 다음 중 하나를 시도하십시오.
- sellItems() 은 플레이어의 아이템을 확인하는 두 번째 문에서 호출됩니다.
- 플레이어 아이템처럼 모든 IntValue는 변경하는 경우 끝에 .Value를 사용합니다. 값은 항상 대문자로 표시됩니다.
- sellPart.Touched:Connect(onTouch)는 스크립트의 하단에 타이핑됩니다. **** * sellItems(playerItems, playerGold)는 로봇이 아닌 문이 끝나기 전에 타이핑됩니다.