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ż.
Utwórz nową część nazyającą się SellPlatform. Dostosuj ją do motywu swojego doświadczenia.
W SellPlatform stwórz nowy skrypt o nazwie SellScript i dodaj komentować.
W SellScript, wpisz local sellPart = script.Parent, aby uzyskać część SellPlatform.
-- Sprzedaje wszystkie przedmioty gracza i daje im złotolocal sellPart = script.Parent
Przyczepność do zdarzeń dotykowych
Aby użyć platforma, skrypt potrzebuje funkcji, aby sprawdzić, czy którykolwiek graczy ją dotyka.
Utwórz funkcję nazwaną onTouch(), która sprawdza, czy gracz dotyka platforma.
local function onTouch(partTouched)local character = partTouched.ParentendAby 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)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ądzelocal playerStats = player:FindFirstChild("leaderstats")endNa 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ądzelocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Dostarcza przedmioty i pieniądze graczalocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendAby 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")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.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Dostarcza rankinggracza. Potrzebne, aby uzyskać przedmioty i pieniądzelocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Dostarcza przedmioty i pieniądze graczalocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)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
Pod zmienne, utwórz funkcję nazwę sellItems() , która otrzymuje dwa parametry nazwane playerItems i playerGold.
-- Sprzedaje wszystkie przedmioty gracza i daje im złotolocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)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 * 100endWpisz 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ędzyplayerGold.Value += totalSellendTyp 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 * 100playerGold.Value += totalSellplayerItems.Value = 0endW 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ądzelocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Dostarcza przedmioty i pieniądze graczalocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendGraj 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.