Sprzedaj przedmioty

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Na następny etap pętli gry gracze muszą sprzedać swoje przedmioty za złoto, aby móc kupić więcej miejsca w swoich plecakach.

Stwórz platformasprzedażową

Gracze sprzedadzą swoje przedmioty, wsiąkając na platformę, która da im złoto za każdy przedmiot w ich torbie.

Ustaw platforma

Platforma może być dowolną częścią i będzie zawierać skrypt, który zajmuje się sprzedażą.

  1. Stwórz nową część o nazwie SellPlatform. Dostosuj ją do tematu swojego doświadczenia.

  2. W SellPlatform utwórz nowy skrypt o nazwie SellScript i dodaj komentować.

  3. W SellScript wpisz local sellPart = script.Parent, aby uzyskać część SellPlatform.


    -- Sprzedaje wszystkie przedmioty gracza i daje im złoto
    local sellPart = script.Parent

Ręczne zdarzenia dotykowe

Aby korzystać z platforma, skrypt potrzebuje funkcji, aby sprawdzić, czy którykolwiek gracz go dotknie.

  1. Stwórz funkcję o nazwie onTouch(), która sprawdza, czy gracz dotyka platforma.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Aby zmienić którąkolwiek ze statystyk na rankingwyników, skrypt musi wiedzieć, który gracz kontroluje postać.W oświadczeniu if użyj funkcji GetPlayerFromCharacter(), aby znaleźć gracza.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. Na następnej linii uzyskaj kontener statystyk gracza.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Zdobywa rankingwyników gracza. Potrzebne do zdobycia przedmiotów i pieniędzy
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Na następnej linii utwórz zmienne, aby uzyskać pieniądze i przedmioty gracza.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Zdobywa rankingwyników gracza. Potrzebne do zdobycia przedmiotów i pieniędzy
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Zdobywa przedmioty i pieniądze gracza
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Aby sprawdzić swoją pracę, dodaj oświadczenie drukujące, które zostanie wykonane, jeśli gracz dotknie sprzedaj część.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. Na dole skryptu połącz onTouch() z wydarzeniem Touched sprzedawcy części.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Zdobywa rankingwyników gracza. Potrzebne do zdobycia przedmiotów i pieniędzy
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Zdobywa przedmioty i pieniądze gracza
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. Odtwórz swój projekt i wejdź na sprzedać część; powinieneś zobaczyć wiadomość "A Player touched sellPart" w oknie wyjścia.

Sprzedaj przedmioty

W tym doświadczeniu gracz otrzyma 100 złota za każdy przedmiot.Po otrzymaniu pieniędzy ich przedmioty zostaną zresetowane do 0, co pozwoli graczom odkrywać świat dla więcej przedmiotów.

Zaprogramuj nową funkcję sprzedaży

  1. Pod zmiennymi stwórz funkcję o nazwie sellItems(), która otrzymuje dwa parametry o nazwie playerItems i playerGold.


    -- Sprzedaje wszystkie przedmioty gracza i daje im złoto
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Aby dać graczom odpowiednią ilość złota, weź wartość playerItems i pomnóż ją przez ilość złota, jaką powinni otrzymać za każdy przedmiot.Ten przykład daje sto sztuk złota na przedmiot.

    W funkcji sellItems() wpisz local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- Liczba przedmiotów, które posiada gracz, i mnoży ją przez wartość przedmiotu.
    local totalSell = playerItems.Value * 100
    end
  3. Wpisz playerGold.Value += totalSell, aby dodać złoto do przedmiotów do ich obecnego złota.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Dodaj, ile gracz zarabia na swoje pieniądze
    playerGold.Value += totalSell
    end
  4. Typ playerItems.Value = 0 .Ustawia przedmioty gracza z powrotem do 0.Jeśli przedmioty gracza nie zostaną zresetowane do 0, skrypt będzie nadal dawać graczom złoto bez przerwania.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. W funkcji pod drugim if oświadczeniem wezwij funkcję .Przekaż parametry, playerItems i playerGold, aby mogły zostać zmienione.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Zdobywa rankingwyników gracza. Potrzebne do zdobycia przedmiotów i pieniędzy
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Zdobywa przedmioty i pieniądze gracza
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Odtwórz swój projekt; sprawdź, że za każdym razem, gdy gracz wkroczy na platforma, jego złoto wzrasta, a przedmioty są ustawione na 0.

Wskazówki dotyczące rozwiązywania problemów

W tym momencie sprzedaż przedmiotów nie działa tak, jak zakładano, spróbuj jednego z poniższych.

  • sellItems() jest wzywany w drugiej stwierdzeniu, które sprawdza przedmioty gracza.
  • Każda wartość IntValue, tak jak playerItems, używa .Value na końcu, jeśli dokonujesz zmiany w niej. Wartość zawsze jest pisana wielką literą.
  • sellPart.Touched:Connect(onTouch) jest wpisane na dole skryptu .
  • sellItems(playerItems, playerGold) jest wpisane przed końcem oświadczenia if humanoid then.