Sprzedawanie przedmiotów

*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.

Dla następnego etapu pętli gry gracze muszą sprzedać swoje przedmioty za złoto, aby móc kupić więcej miejsca w ich plecakach.

Tworzenie platformy sprzedaży

Gracze będą sprzedawać swoje przedmioty, krocząc na platformę, która daje im złoto za każdy przedmiot w ich torbie.

Ustawienie platformy

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

  1. Utwórz nową część nazyającą się SellPlatform. Dostosuj ją do motywu swojego doświadczenia.

  2. W SellPlatform stwó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

Przyczepność do zdarzeń dotykowych

Aby użyć platforma, skrypt potrzebuje funkcji, aby sprawdzić, czy którykolwiek graczy ją dotyka.

  1. Utwórz funkcję nazwaną onTouch(), która sprawdza, czy gracz dotyka platforma.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Aby zmienić dowolną z statystyk na liście ranking, skrypt musi wiedzieć, który gracz kontroluje postać. W if statystyki użyj funkcji GetPlayerFromCharacter() , aby znaleźć gracza.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. W następnej linii zdobądź Container Leaderboard gracza.


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


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Dostarcza rankinggracza. Potrzebne, aby uzyskać przedmioty i pieniądze
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Dostarcza przedmioty i pieniądze gracza
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Aby sprawdzić swą pracę, dodaj oświadczenie drukowania, które będzie działać, jeśli gracz dotknie sprzedać część.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. W dalszej części skryptu połącz onTouch() z wydarzeniem dotykającym sprzedaży części.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Dostarcza rankinggracza. Potrzebne, aby uzyskać przedmioty i pieniądze
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Dostarcza 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. Zagraj w swoją projektę i wejdź na sellPart; powinieneś zobaczyć wiadomość "A Player touched sellPart" w oknie wyjścia.

Sprzedawanie przedmiotów

W tej experiencie gracz otrzyma 100 złota za każdy przedmiot. Po zdobyciu pieniędzy, ich przedmioty zostaną ustawione na 0, pozwalając graczom na odkrywanie świata przez więcej przedmiotów.

Kodowanie nowej funkcji sprzedaży

  1. Pod zmienne, utwórz funkcję nazwę sellItems() , która otrzymuje dwa parametry nazwane 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, którą powinni otrzymywać za każdy przedmiot. Ten przykład daje sto sztuk złota za każdy przedmiot.

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


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


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Dodaj, ile gracz zarabia do swoich pieniędzy
    playerGold.Value += totalSell
    end
  4. Typ playerItems.Value = 0 . Ustawia z powrotem przedmioty gracza na 0. Jeśli przedmioty gracza nie są ustawione na 0, skrypt będzie nadal podawał graczom złoto bez przerwy.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. W funkcji onTouch() pod drugim if-nym zdaniem, wezwij funkcję sellItems() . Przekaż parametry, sellItems() i 1> playerGold1>, aby można je zmienić.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Dostarcza rankinggracza. Potrzebne, aby uzyskać przedmioty i pieniądze
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Dostarcza 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. Graj w swoje projekty; sprawdź, że za każdym razem, gdy gracz krok na platforma, ich złoto rośnie i przedmioty ustawione na 0.

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

W tym momencie sprzedaż przedmiotów nie działa tak, jak było to zamierzone, spróbuj jednej z poniższych opcji.

  • sellItems() jest wezwany w drugiej deklaracji, jeśli sprawdza przedmioty gracza.
  • Każdy IntValue, podobnie jak playerItems, używa .Value na końcu, jeśli dokonujesz zmiany w nim. Wartość zawsze jest zaznaczona.
  • sellPart.Touched:Connect(onTouch) jest wpisywany w dolnej części skryptu.
  • sellItems(playerItems, playerGold) jest wpisywany przed końcem oświadczenia, jeśli humanoid.