Player
*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.
Obiekt Gracz jest klientem, który jest obecnie połączony. Te obiekty są dodawane do usługi Players , gdy nowy gracz się połączy, a następnie usunięte, gdy ostatecznie odłączy się od serwera.
Właściwość Instance.Name odzwierciedla nazwa gracz. Podczas zapisywania informacji o graczpowinieneś używać ich Player.UserId, ponieważ możliwe jest, że użytkownik może zmienić nazwa użytkownika.
Istnieje kilka podobnych metod w Players usłudze do pracy z obiektami gracza. Użyj tych nad ich odpowiednich metod Instance :
- Możesz uzyskać tabelę obiektów aktualnego gracza używając Players:GetPlayers() ; ponownie użyj tego zamiast Instance:GetChildren() .
- Aby wykryć dodanie obiektów gracza, należy użyć wydarzenia Players.PlayerAdded (zamiast Instance.ChildAdded na usłudze Players).
- Podobnie możesz wykryć usunięcie obiektów Players.PlayerRemoving, który uruchamia tylko przed usunięciem gracza (zamiast Instance.ChildRemoved, który uruchamia się po). To ważne, jeśli zapisujesz informacje o graczu, które mogą być usunięte lub czyszczone po usunięciu.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Create a container for leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
-- Create one leaderstat value
local vScore = Instance.new("IntValue")
vScore.Name = "Score"
vScore.Value = 0
vScore.Parent = leaderstats
-- Add to player (displaying it)
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)
Podsumowanie
Właściwości
Opisuje wiek konta gracza w dniach.
Określa, czy postać gracza używającego urządzenia mobilnego automatycznie skoczę po trafieniu przez przeszkodę.
Maksymalna odległość, którą kamera gracza może skorygować.
Minimalna odległość, w którą kamera gracza może się zbliżyć.
Zmienia tryb kamerze na pierwszy lub trzeci.
Określa, czy wygląd postaci zostanie załadowany, gdy gracz się pojawi. Jeśli nie, gracz pojawi się z domyślnym wyglądem.
A Model kontrolowany przez gracza, który zawiera Humanoid, części ciała, skrypty i inne obiekty.
Określa tożsamość użytkownika konta, którego postać wygląda na gracza jego character .
Ustawia, jak domyślna kamera traktuje obiekty między kamerą a graczem.
Określa tryb ruchu kamery gracza podczas używania wersji na biurku Roblox.
Określa sposób przemieszczania postaci gracza, gdy używa się wersji na biurku Roblox.
Określa, czy gracz może ustawić zatrzymanie myszy.
Określa tryb ruchu kamery gracza podczas używania urządzeniedotykowego.
Określa tryb ruchu postaci gracza, gdy używać urządzeniedotykowego.
Nazwa wyświetlania związanego z graczem.
Opisuje ID użytkownika gracza, który został podążony do gry przez gracza.
Czy gra na stronie klienta jest obecnie zawieszone.
Wskazuje, czy gracz ma zweryfikowany znчок.
Ustawia odległość, w której ten gracz będzie widział inne paski zdrowia. Jeśli ustawiony na 0, paski zdrowia nie będą wyświetlane.
Ten właściwość pokazuje lokalne ID, które lokalny gracz ustawił dla swojego kontoRoblox.
Opisuje wpisywaćczłonkowstwa konta.
Ustawia odległość, w której ten gracz będzie widział imiona innych ludzi. Jeśli ustawiony na 0, nazwiska są ukryte.
Określa, czy gracz jest w konkretnej drużynie.
Ustawia część, aby skupić replikację wokół.
Jeśli ustawiać, gracz będzie odzyskiwał się na podanym SpawnLocation .
Określa zespół, z którym związany jest gracz.
Określa zespół, z którym związany jest gracz.
Unikalny identyfikator liczby przydzielony wszystkim kontom użytkowników.
Metody
Usuwa wszystkie akcesoria i inne obiekty wyglądu postaci z postaci gracza.
Zwraca dystans między głową postaci a podanym punktem Vector3. Wynosi 0, jeśli gracz nie ma postaci.
Zwraca słownik zawierający informacje opisujące sposób dołączenia Player do doświadczenia.
Zwraca mikser, który jest używany przez klienta.
Wyświetla siecię w trybie izolacji w sekundach.
Wyświetla czy wysoka postaci gracza została załadowana.
Wyjaśnia, czy gracz jest zweryfikowany za pomocą konkretnych, rzeczywistych sygnałów.
Siłowo odłącz gracza od gry, opcjonalnie dostarczając wiadomość.
Powoduje, że postać gracza chodzi w określonym kierunku, aż zatrzyma się lub zostanie przerwana przez gracza (używając jego elementy sterujące).
Ustawia wiek konta gracza.
Ustawia, czy gracz widzi filtrowane czaty, czy nie, zamiast normalnych czatów.
Zwraca dyktariusz online'ów przyjaciół.
Zwraca rangę gracza w grupie jako całkowity pomiędzy 0 i 255, gdzie 0 jest nieczłonkiem a 255 jest właścicielem grupa.
Zwraca rolę gracza w grupie jako ciąg, lub "Guest" jeśli gracz nie jest częścią grupa.
Sprawdza, czy gracz jest przyjacielem użytkownika z podanym Player.UserId .
Sprawdza, czy gracz jest członkiem grupy z podanym ID.
Tworzy nowego gracza dla gracza, usuwając starego. также oczyщает Backpack i PlayerGui gracza.
Generuje awatar, aby miał wszystko założone w przepustce w HumanoidDescription .
Zgłaszającemu graczowi określone położenie.
Zdarzenia
Wystrzelony, gdy postać gracza się pojawia lub odchodzi.
Wystąpi, gdy pełen wygląd Class.Player.Character zostanie wstawiony.
Wystrzelony wprost przed usunięciem postaci gracza.
Wystrzela, gdy gracz czat w grze za pomocą dostarczonej przez Roblox czatu bar.
Ten ewent zostanie wywołany około 2 minut po tym, jak silnik gry klasyfikuje player jako bezczynność. Czas to liczba sekund od tego punktu.
Wystrzelony, gdy zmienia się TeleportState gracza.
Właściwości
AccountAge
AgeKonto to właściwość Player, która opisuje, ile dni temu zostało zarejestrowane konto gracza. Ustawione jest przy użyciu funkcji Player:SetAccountAge(), która nie może być dostępna przez skrypty.
Właściwość ta jest przydatna do okazania nowym graczom Roblox treści, która może być wyświetlana kondycyjnie, takiej jak tutoriale.
Przykłady kodu
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
AutoJumpEnabled
Właściwość AutoJumpEnabled określa, czy Player.Character Class.Player używającego urządzenia mobilnego będzie automatycznie skakiować, gdy dotknie ono przeszkody. To może ułatwić poziomy do przeglądania po poziomie, gdy jest używany na urządzeniemobilnym.
Gdy gracz dołącza do gry, wartość StarterPlayer.AutoJumpEnabled określa początkowy stan tej właściwości. Następnie ta właściwość określa wartość Humanoid.AutoJumpEnabled właściwości Player.Character podczas wchodzenia. Innymi słowy
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()
CameraMaxZoomDistance
Właściwość CameraMaxZoomDistance Player ustawia maksymalną odległość w studsach, jaką może mieć kamera od postaci z domyślnymi kamerkami.
Innymi słowy, kontroluje maksymalną odległość, jaką kamera gracza może skorygować.
Domyślna wartość tego właściwości jest ustawiona przez StarterPlayer.CameraMaxZoomDistance. Jeśli ta wartość zostanie ustawiona na niższą wartość niż Player.CameraMinZoomDistance, zostanie ona zwiększona do CameraMinZoomDistance.
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
Właściwość CameraMinZoonDistance Player ustawia minimalną odległość w studsach, z której kamera może być od kamery z domyślnymi kamerkami.
Innymi słowy, kontroluje minimalną odległość, jaką kamera gracza może zoomować.
Domyślną wartością tego właściwości jest ustawiony przez StarterPlayer.CameraMinZoomDistance. Jeśli ta wartość jest ustawiona na większą niż Player.CameraMaxZoomDistance zostanie zmniejszona do CameraMaxZoomDistance.
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
Właściwość KameraModuł ustawia tryb kamerze gracza, domyślnie na trzeci osobnik.
Trzecia osoba
W trybie postaci w trzeciej osobie domyślnej ( Enum.CameraMode.Classic ) widoczny jest postać w kamery. W tym trybie domyślnym zachowaniem jest:
- Gracze mogą prawić kliknąć i przeciągnąć (myszka), naciąć i przeciągnąć (telefon), użyć współczynnika rotacji (gamepad), lub naciąć lewą / prawą strzałkę (klawiatura), aby obrócić kamerę wokół ich postaci.
- Gdy gracz porusza swoją postacią, to twarzy w kierunku odpowiednim ruchu.
- Gracze mogą przyjmować i oddawać darmową skalę, nawet do pierwszej osoby w pełnym skali w.
Pierwsza osoba
W trybie pierwszej osoby ( Enum.CameraMode.LockFirstPerson ) kamerka gracza jest skalowana w całym kadrze. Chyba, że istnieje widoczna GUI z własnością GuiButton.Modal ustawioną na true , ruszając myszką, dotykając na telefonie lub używając dodatkowego joysticka na gamepadzie, k
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
Właściwość CanLoadCharacterAppearance Player określa, czy wygląd postaci zostanie załadowany, gdy gracz się pojawi. Domyślną wartość tej właściwości ustawia StarterPlayer.LoadPlayerAppearance.
Jeśli prawda, postać załadować będzie wygląd gracza odpowiadającego Player.CharacterAppearanceId gracza.
Jeśli fałszywy , gracz pojawi się z domyślnym wyglądem - model postaci czarnego postaci bez żadnych czapek, koszul, spodni itp.
Próbując ustawić właściwość po pojawieniu się postaci nie zmieni postaci, musisz wywołać Player:LoadCharacter(), aby załadować nowy wygląd.
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
Właściwość Postać zawiera odniesienie do Model zawierającego Humanoid, części ciała, skrypty i inne obiekty w
Początkowo właściwość ta jest nil i jest ustawiona, gdy postać gracza po raz pierwszy się pojawia. Użyj wydarzenia Player.CharacterAdded, aby wykryć, gdy postać gracza zostanie prawidłowo załadowana, a wydarzenia Player.CharacterRemoving, aby wyk
Uwaga, że LocalScripts, które są sklonowane z StarterGui lub StarterPack do gracza 2>
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
Ten parametr określa ID użytkownika konta, którego postać wygląda na gracza Class.Player.Character . Domyślnie, ten parametr jest Player.Character, który używa awatara gracza, jakim został stworzony na stronie Roblox.
Zmiana tego właściwości na ID użytkownika innego konta spowoduje, że gracz zostanie zespawnowany z wyglądem tego konto(czapki, koszule, spodnie itp).
Gry mogą również zmieniać, czy wygląd postaci gracza jest ładowany w grze poprzez zmianę właściwości StarterPlayer.LoadCharacterAppearance.
Przykłady kodu
local Players = game:GetService("Players")
local disguiseCommand = "/disguise "
local function onPlayerChatted(player, message)
if message:sub(1, disguiseCommand:len()):lower() == disguiseCommand:lower() then
local input = message:sub(disguiseCommand:len() + 1)
local id = tonumber(input)
if not id then -- Number failed to parse, maybe they typed a username instead
pcall(function() -- This call can fail sometimes!
id = Players:GetUserIdFromNameAsync(input) -- Fetch ID from name
end)
end
if id then
-- Set character appearance then respawn
player.CharacterAppearanceId = id
player:LoadCharacter()
else
-- We couldn't get an ID from their input
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevCameraOcclusionMode
Definiuje sposób, w jaki domyślne skrypty kamery poruszają obiekty między kamera a kamera subiektu. Ustawione przez StarterPlayer.DevCameraOcclusionMode i nie może być zmienione dla poszczególnych graczy.
Domyślną wartością jest Zoom (0). Zobacz Enum.DevCameraOcclusionMode dla listy dostępnych trybów.
DevComputerCameraMode
Właściwość DevComputerCameraMode określa sposób, w jaki gracz porusza kamerę, gdy używa urządzenia z myszką i klawiaturą. Zobacz Enum.DevComputerCameraMovementMode dla opisu każdego dostępnego trybu kamerowego. Ta właściwość nie może być ustawiona za pomocą LocalScript (musi być ustawiona na serwerze za pomocą
Domyślną wartość tego właściwości jest określona przez StarterPlayer.DevComputerCameraMovementMode .
Słowo „komputer” w tej nazwie właściwości odnosi się do nie- TouchEnabled , nie- GamepadEnabled urządzeń.
Gdy ustawiony na Wybór użytkownika , gracz może wybrać pomiędzy dowolnym trybem kontroli (za wyjątkiem Skrypty ) w ustawieniach gry Roblox. W ogólnedobrym pomysłem jest pozwolenie graczom wybrać swój tryb kontroli, aby zwiększyć dostępność.
Możliwe jest utworzenie niestandardowego schemu kontroli ustawiając tę właściwość na Scriptable .
Ta właściwość nie dotyczy graczy, którzy używają włączonego urządzeniedotykowego. Zobacz Player.DevTouchCameraMode zamiast tego.
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on computers to classic
player.DevComputerCameraMode = Enum.DevComputerCameraMovementMode.Classic
DevComputerMovementMode
Właściwość DevComputerMovementMode określa sposób, w jaki gracz porusza swojego postaci, gdy używa urządzenia z myszką i klawiaturą. Zobacz Enum.DevComputerMovementMode dla opisu każdego trybu ruchu dostępnego. Ta właściwość nie może być ustawiona za pomocą LocalScript (musi być ustawiona na serwerze za pom
Domyślną wartość tego właściwości jest zdeterminowana przez StarterPlayer.DevComputerMovementMode .
Słowo „komputer” w tej nazwie właściwości odnosi się do nie- TouchEnabled urządzeń.
Gdy ustawiony na Wybór użytkownika , gracz może wybrać pomiędzy dowolnym trybem kontroli (za wyjątkiem Skrypty ) w ustawieniach gry Roblox. W ogólne, dobrym pomysłem jest pozwolenie graczom wybrać swój tryb kontroli, aby zwiększyć dostępność.
Możliwe jest utworzenie niestandardowego schemu kontroli ustawiając tę właściwość na Scriptable .
Ta właściwość nie dotyczy graczy używających urządzeniez możliwością dotyku. Zobacz Player.DevTouchMovementMode zamiast tego.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player: Player)
-- Set the player's movement mode on desktop devices to click-to-move
-- Once set, the player can right click in the game world and the character will move there.
player.DevComputerMovementMode = Enum.DevComputerMovementMode.ClickToMove
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevEnableMouseLock
Ta właściwość określa, czy gracz jest w stanie przełączyć Mouse zablokowanie poprzez naciśnięcie Shift . Gracz może wyłączyć przełącznik zablokowania myszy w ustawieniach gry Roblox. Domyślnie ta właściwość jest ustawiona na wartość
Gdy ustawiony jest mikropomiar, kursorek gracza jest zablokowany w centrum ekranu. Przesuwanie myszy po orbicie kamery wokół gracza character i znajduje się w tym samym kierunku co camera . Przesunięcie kamery również zdefiniuje widok kamery w okolicy prawego ramienia gracza.
Uwaga, że API związane z zamkiem zmiany stanu przesuwane są w trakcie deprecji, więc zaleca się używanie UserInputService.MouseBehavior zamiast zamkiem myszy.
Przykłady kodu
local Players = game:GetService("Players")
local function toggleMouseLock(player)
player.DevEnableMouseLock = not player.DevEnableMouseLock
if player.DevEnableMouseLock then
print("Mouse lock is available")
else
print("Mouse lock is not available")
end
end
local function onPlayerChatted(player, message, _recipient)
if message == "mouselock" then
toggleMouseLock(player)
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevTouchCameraMode
Właściwość DevTouchCameraMode określa sposób, w jaki gracz porusza kamerę, gdy używa urządzenieTouchEnabled. Patrz Enum.DevTouchCameraMovementMode dla opisu każdego trybu sterowania kamerą dostępnego. Nie można ustawić właściwości używając <
Domyślną wartość tego właściwości jest określona przez StarterPlayer.DevTouchCameraMovementMode .
Gdy ustawiony na Wybór użytkownika , gracz może wybrać pomiędzy dowolnym trybem kontroli (za wyjątkiem Skrypty ) w ustawieniach gry Roblox. W ogólne, dobrym pomysłem jest pozwolenie graczom wybrać swój tryb kontroli, aby zwiększyć dostępność.
Możliwe jest utworzenie niestandardowego schemu kontroli ustawiając tę właściwość na Scriptable .
Ta właściwość nie dotyczy graczy, którzy nie używają włączonego dotykowo urządzenie. Zobacz Player.DevComputerCameraMovementMode zamiast tego.
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on mobile devices to classic
player.DevTouchCameraMovementMode = Enum.DevTouchCameraMovementMode.Classic
DevTouchMovementMode
Właściwość DevTouchMovementMode określa sposób, w jaki gracz porusza swojego postaci, gdy używa urządzenieTouchEnabled. Patrz Enum.DevTouchMovementMode dla opisu każdego trybu ruchu dostępnego. Ta właściwość nie może być ustawiona za pomocą <
Domyślną wartość tego właściwości jest zdeterminowana przez StarterPlayer.DevTouchMovementMode .
Gdy ustawiony na Wybór użytkownika , gracz może wybrać pomiędzy dowolnym trybem kontroli (za wyjątkiem Skrypty ) w ustawieniach gry Roblox. W ogólnedobrym pomysłem jest pozwolenie graczom wybrać swój tryb kontroli, aby zwiększyć dostępność.
Możliwe jest utworzenie niestandardowego schemu kontroli ustawiając tę właściwość na Scriptable .
Ta właściwość nie dotyczy graczy, którzy nie używają urządzeniew pełni włączonego dotykowo. Zobacz Player.DevComputerMovementMode zamiast tego.
Przykłady kodu
local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevTouchMovementMode = Enum.DevTouchMovementMode.DynamicThumbstick
end)
DisplayName
DisplayName jest własnością Player, która zawiera nazwę wyświetlaną przez autoryzowanego użytkownika powiązanego z obiektem Player. W przeciwieństwie do imion użytkowników, nazwy wyświetlanie są niepowtarzalnymi nazwami, które gracz wyświetla dla innych. Jeśli u
Notatka:
- Ponieważ nazwy wyświetlanych są niepowtarzalne, może być dla dwóch graczy w jednej instancji identycznych nazw. Jeśli potrzebujesz unikalnego identyfikatora dla gracza, użyj Player.UserId (który jest statyczny) lub Player.Name (który jest obecnym nazwą użytkownika).
- Zwierzęta generowane za pomocą Player.LoadCharacter lub przez silnik Roblox będą posiadać ich właściwość Humanoid.DisplayName przypisaną do właściwości Player.DisplayName.
- Nazwy mogą zawierać znaki niezgodne z polską wersją języka. See UTF-8 for more information on how to work with strings with unicode characters.
FollowUserId
FollowUserId to właściwość Player, która zawiera Player.UserId użytkownika, którego gracz podążył do gry. Jeśli gracz nie podążył za nikim w grze, ta właściwość będzie 0. Ta właściwość jest użyteczna do alarmowania graczy, którzy podążają za innym graczem w grę.
Możesz uzyskać nazwę gracza podążając używając tego użytkownika ID i funkcji Players:GetNameFromUserIdAsync().
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local hint = Instance.new("Hint")
hint.Parent = player:WaitForChild("PlayerGui")
hint.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if hint then
hint:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GameplayPaused
Właściwość GameplayPaused wskazuje, czy gracz jest obecnie w stanie zawieszenia w miejscu z włączonym StreamingEnabled . Jest ustawiony na klienta, ale skopiowany na serwer. Aby określić statuszawieszenia, możesz użyć tej właściwości.
Zobacz również:
- Workspace.StreamingEnabled Który kontroluje czy włączone jest przesyłanie treści
- Workspace.StreamingIntegrityMode i Enum.StreamingIntegrityMode dla więcej szczegółów na temat tego, kiedy gry wstrzymane są.
HealthDisplayDistance
Właściwość HealthDisplayDistance Player ustawia odległość w studsach, w których ten gracz będzie widział inne Humanoid bary zdrowia. Jeśli ustawiono na 0, bary zdrowia nie będą wyświetlane. Ta właściwość jest ustawiona na StarterPlayer.HealthDisplayDistance przez domyślnie.
Jeśli widać barwę zdrowia ludoidu, możesz ustawić typ wyświetlania używając Humanoid.DisplayDistanceType .
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
Właściwość Player z lokalnym ID pokazuje lokalny identyfikator lokalizacji, który ustawił lokalny gracz dla swojego kontoRoblox. Zawiera strunę z dwóch kodów literowych (na przykład „en-us”) dla lokalizacji.
Można użyć tego, aby określić demografię geograficzną graczy w bazie grze, a jest to również lokalizacja używana do automatycznej lokalizacji (patrz GuiBase2d.AutoLocalize), która jest w grze. Ta właściwość umożliwia dostęp do lokalizacji gracza z serwera.
Zobacz również LocalizationService.RobloxLocaleId , lokalizator lokalizacji używany do lokalizacji treści wewnętrznej. Będzie to inna wartość, gdy Roblox jeszcze nie wspiera lokalnie lokalizatora lokalizacji lokalnej.
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
Ta właściwość może być czytana tylko z tożsamości (nie może być ustawione na inny wpisywaćczłonkowstwa). Zawiera Enum.MembershipType enkumenium wpisywaćczłonkowstwa konto.
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Take some action specifically for Premium members
end
NameDisplayDistance
Właściwość StarterPlayer ustawia odległość w studsach, przy której ten gracz będzie widział inne imiona Humanoid. Jeśli właściwość jest ustawiona na 0, imiona są ukryte. Ta właściwość jest ustawiona na StarterPlayer.NameDisplayDistance przez domyślnie.
Jeśli widać barwę zdrowia ludoidu, możesz ustawić typ wyświetlania używając Humanoid.DisplayDistanceType .
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
Właściwość Neutralna określa, czy gracz jest w konkretnej drużynie.
- Gdy prawda, gracz nie jest w konkretnej drużynie. Oznacza to również, że właściwość Player.Team będzie nil i kolor Player.TeamColor będzie biały.
- Gdy fałszywy, gracz jest w drużynie specyficznej. Właściwość Player.Team będzie odpowiadać Team, na której znajduje się gracz, a 1> Class.Player.TeamColor1> .
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end
ReplicationFocus
Właściwość ReplicationFocus Player ustawia część, aby skupić replikację wokół gracza. Różne systemy Roblox, które komunikują się poprzez sieć (takie jak fizyka, przesyłanie i inne) replikują się w różnych szybkościach w zależności od tego, jak blisko obiektów jest fokusu replikacji.
Gdy ta właściwość jest nil, zwraca się do jej domyślnego zachowania, które jest traktowanie lokalnego gracza jego postaci PrimaryPart jako obiektu skupienia.
Ten właściwość powinien być ustawiony tylko na serwerze z Script , a nie LocalScript. Uwaga, że ta właściwość nie zmienia lub aktualizuje własności sieci części.
Przykłady kodu
local Players = game:GetService("Players")
local PLAYER_NAME = "polarpanda16"
local player = Players:WaitForChild(PLAYER_NAME)
local part = Instance.new("Part")
part.Parent = workspace
part.Name = "ReplicationFocusPart"
part.Anchored = true
player.ReplicationFocus = part
RespawnLocation
Jeśli ustawiać, gracz będzie respawnować na podanym SpawnLocation . Ta właściwość może być ustawiona tylko poprzez Lua i musi zawierać odniesienie do ważnego SpawnLocation , który musi spełniać następujące kryteria:
- Potomstwo Workspace
Jeśli RespawnLocation nie jest ustawiony na ważną SpawnLocation to wtedy zastosuje się domyślna logika spawningu. Aby uzyskać więcej informacji na ten temat, zobacz stronę dla SpawnLocation .
Alternatywy dla RespawnLocation
- A Player pojawi się z SpawnLocations należące do ich zespołu. W niektórych przypadkach może być prostsze zmienienie gracza Player.Team zamiast tego.
- Wdroż swoją własną niestandardową logikę spawnu używając PVInstance:PivotTo() , aby ręcznie przenieść Player.Character .
Przykłady kodu
local Players = game:GetService("Players")
local function addSpawn(spawnLocation)
-- listen for the spawn being touched
spawnLocation.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if character then
local player = Players:GetPlayerFromCharacter(character)
if player and player.RespawnLocation ~= spawnLocation then
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- make sure the character isn't dead
if humanoid and humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
print("spawn set")
player.RespawnLocation = spawnLocation
end
end
end
end)
end
local firstSpawn
-- look through the workspace for spawns
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("SpawnLocation") then
if descendant.Name == "FirstSpawn" then
firstSpawn = descendant
end
addSpawn(descendant)
end
end
local function playerAdded(player)
player.RespawnLocation = firstSpawn
end
-- listen for new players
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end
Team
Właściwość Zespół określa obiekt Team w usłudze Class
Przykłady kodu
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
TeamColor
Właściwość TeamColor określa, z którym zespołem gracz jest powiązany zgodnie z jego Team.TeamColor . Zmienie tego właściwości zmieni Player.Team według tego, którego zespołu ma tę samą BrickColor dla ich 1>
Często lepszym rozwiązaniem jest ustawienie Player.Team na odpowiedni Team zamiast używania tej właściwości. Ustawienie tej właściwości często prowadzi do powtórzenia tej samej wartości BrickColor dla pewnej drużyny na wielu skryptach; to jest coś, czego chcesz uniknąć, gdy przestrzegasz zasady "N
Przykłady kodu
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
UserId
Id użytkownika to właściwość Class.Player , która zawiera czytelny identyfikator liczby, który Instance.Name identyfikuje każde konto użytkownika na Roblox. W przeciwieństwie do 1> Class.Instance.Name1> gracza, który może się zmieniać w zależności od obecnego nazwa użytkownikaużytkownika, ta w
Ten parametr jest niezbędny podczas zapisywania/ładowania danych gracza używając GlobalDataStores . Użyj unikalnego klucza gracza, aby każdy gracz miał unikalny klucz.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local player = Players:GetPlayerByUserId(1)
if player then
print("Player with userId 1 is in this server! Their name is: " .. player.Name)
else
print("Player with userId 1 is not in this server!")
end
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local OWNER_ID = 212423 -- can use game.CreatorId for published places
local BADGE_ID = 1
local ownerInGame = false
local function playerAdded(newPlayer)
if newPlayer.UserId == OWNER_ID then
-- if new player is the owner, set ownerInGame to true and give everyone the badge
ownerInGame = true
for _, player in pairs(Players:GetPlayers()) do
-- don't award the owner
if player ~= newPlayer then
BadgeService:AwardBadge(player.UserId, BADGE_ID)
end
end
elseif ownerInGame then
-- if the owner is in the game, award the badge
BadgeService:AwardBadge(newPlayer.UserId, BADGE_ID)
end
end
local function playerRemoving(oldPlayer)
if oldPlayer.UserId == OWNER_ID then
ownerInGame = false
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerRemoving:Connect(playerRemoving)
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local goldDataStore = DataStoreService:GetDataStore("Gold")
local STARTING_GOLD = 100
local function onPlayerAdded(player)
local playerKey = "Player_" .. player.UserId
local leaderstats = Instance.new("IntValue")
leaderstats.Name = "leaderstats"
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Parent = leaderstats
local success, result = pcall(function()
return goldDataStore:GetAsync(playerKey) or STARTING_GOLD
end)
if success then
gold.Value = result
else
-- Failed to retrieve data
warn(result)
end
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)
Metody
ClearCharacterAppearance
Funkcja ClearCharacterAppearance usuwa wszystkie Accessory, Shirt, Pants, 1> Class.CharacterMesh
Nie usuwa t-shirts , sieci głowicy lub twarzy.
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local function onChildRemoved(child)
print(child.ClassName, "removed from character")
end
character.ChildRemoved:Connect(onChildRemoved)
player:ClearCharacterAppearance()
--> BodyColors removed from character
--> ShirtGraphic removed from character
--> Shirt removed from character
--> Pants removed from character
--> CharacterMesh removed from character
--> Hat removed from character
--> Shirt removed from character
DistanceFromCharacter
Funkcja DistanceFromCharacter Player zwraca dystans między głową znaku a podanym punktem Vector3. Wynika 0, jeśli gracz nie ma Player.Character.
Przydatny jest to, gdy określa się dystans między innym obiektem lub lokalizacją w gra.
Jeśli chcesz określić dystans między dwoma nieobsługującymi instancjami lub pozycji, możesz użyć obserwuje:
local distance = (position1 - position2).magnitude
Parametry
Lokalizacja, z której liczona jest odległość gracza.
Zwroty
Dystans w klombach między graczem a lokalizacją.
Przykłady kodu
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end
GetJoinData
Zwraca słownik zawierający informacje opisujące, jak gracz doświadcza. Słownik zawiera dowolne z następujących poles:
<tbody><tr><th>Idź do źródła</th><td>liczba</td><td>The <code>Class.DataModel.GameId</code> of the experience the <code>Player</code> teleported from. Only present if the player teleports to the current experience and if a server calls the teleport function.</td></tr><tr><th>Idź do źródła</th><td>liczba</td><td>Class.DataModel.PlaceId of the place the <code>Player</code> teleported from. Only present if the player teleports to the current place and a server calls the teleport function.</td></tr><tr><th>Zgłoszony przez gracza</th><td>liczba</td><td>Class.Player.UserId gracza, który zaprosił bieżącego gracza do doświadczenia. Użyj tych danych, aby zidentyfikować referera i związać zasadę nagrody.</td></tr><tr><th>Członkowie</th><td>masz</td><td>Materiały <code>Class.Player.UserId</code> zawierające liczby użytkowników teleportowanych obok <code>Player</code>. Obecny tylko wtedy, gdy gracz teleportował się jako część grupa.</td></tr><tr><th>Teleportacja danych</th><td>wartiant</td><td>Odbiera <code>teleportData</code> określoną w oryginalnym teleportować się. Przydatny do udostępniania informacji między serwerami, do których teleportuje się gracz. Tylko prezentuje się, jeśli <code>teleportData</code> została określona i serwer wzywa funkcję teleportacji.</td></tr><tr><th>Dane o uruchomieniu</th><td>ciąg</td><td>Oczywisty lub zaszyfrowany JSONowy ciąg, który zawiera dane uruchomienia określone w adresie URL <a href="../../../production/promotion/deeplinking.md">深链</a> lub <code>Class.ExperienceInviteOptions.LaunchData</code> .</td></tr></tbody>
Klucz | Typ wartości | Opis |
---|
ZdobądźJoinData i TeleportData
Jeśli serwer inicjuje teleportować sięgracza, to słownik, który ten metodę zwraca, zawiera dane teleportacji gracza. Metoda Player:GetJoinData() może być używana tylko do uzyskania danych teleportacji na serwerze. Aby uzyskać dane na klienta, użyj metody TeleportService:GetLocalPlayerTeleportData().
Oprócz TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() dostarcza tylko dane teleportu, które spełniają następujące kryteria bezpieczeństwa:
- Gwarantujemy, że został wysłany przez serwer Roblox w ciągu ostatnich 48 godzin.
- Gwarantujemy, że został wysłany z tym Player .
- SourcePlaceId i SourceGameId gwarantują, że są to miejsca i wszechświaty, z których dane zostały wysłane. Oznacza to, że możesz sprawdzić, że dane o teleportacji pochodzą z zatwierdzonego miejsce.
Ponieważ dane te są przesyłane przez klienta, nadal może być potencjalnie wykorzystywane przez eksploitera. Delikatne dane, takie jak waluta gracza, powinny być przesyłane za pośrednictwem bezpiecznego rozwiązania, takiego jak Przechowywanie pamięci.
Zwroty
Dictionarium zawierające wartości PlaceId i UserId (zobacz tabelę w opisie).
Przykłady kodu
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local analyticsStore = DataStoreService:GetDataStore("Analytics")
local ALLOWED_SOURCES = {
"twitter";
"youtube";
"discord";
}
local function onPlayerAdded(player)
local source = player:GetJoinData().LaunchData
-- check if the provided source is valid
if source and table.find(ALLOWED_SOURCES, source) then
-- update the data store to track the source popularity
local success, result = pcall(analyticsStore.IncrementAsync, analyticsStore, source)
if success then
print(player.Name, "joined from", source, "- total:", result)
else
warn("Failed to record join source: " .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local DIRECT_JOIN_URL = "https://www.roblox.com/games/start?placeId=%d&launchData=%s"
local textBox = script.Parent
local function generateReferralURL(player)
return DIRECT_JOIN_URL:format(
game.PlaceId,
player.UserId
)
end
local function highlightAll()
if -- avoid recursive property updates
textBox:IsFocused()
and not (
textBox.SelectionStart == 1
and textBox.CursorPosition == #textBox.Text + 1
)
then
textBox.SelectionStart = 1
textBox.CursorPosition = #textBox.Text + 1
end
end
textBox.Focused:Connect(highlightAll)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(highlightAll)
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(highlightAll)
textBox.TextEditable = false
textBox.ClearTextOnFocus = false
textBox.Text = generateReferralURL(player)
local HttpService = game:GetService("HttpService")
local DATA_CHARACTER_LIMIT = 200
local function encodeTableAsLaunchData(data)
-- convert the table to a string
local jsonEncodedData = HttpService:JSONEncode(data)
if #jsonEncodedData <= DATA_CHARACTER_LIMIT then
-- escape potentially invalid characters, such as spaces
local urlEncodedData = HttpService:UrlEncode(jsonEncodedData)
return true, urlEncodedData
else
-- report character limit error
return false, ("Encoded table exceeds %d character limit"):format(DATA_CHARACTER_LIMIT)
end
end
local sampleData = {
joinMessage = "Hello!";
urlCreationDate = os.time();
magicNumbers = {
534;
1337;
746733573;
};
}
local success, encodedData = encodeTableAsLaunchData(sampleData)
if success then
print(encodedData)
else
warn("failed to encode launch data: " .. encodedData)
end
local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local launchData = player:GetJoinData().LaunchData
if launchData then
-- attempt to decode the data
local success, result = pcall(HttpService.JSONDecode, HttpService, launchData)
if success then
print(player.Name, "joined with data:", result)
else
-- this is probably due to the user messing with the URL
warn("Failed to parse launch data:" .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local approvedPlaceIds = { 1 } -- insert approved PlaceIds here
local function isPlaceIdApproved(placeId)
for _, id in pairs(approvedPlaceIds) do
if id == placeId then
return true
end
end
return false
end
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
-- verify this data was sent by an approved place
if isPlaceIdApproved(joinData.SourcePlaceId) then
local teleportData = joinData.TeleportData
if teleportData then
local currentLevel = teleportData.currentLevel
print(player.Name .. " is on level " .. currentLevel)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GetMouse
Funkcja GetMouse Player zwraca Mouse używany przez gracz. Instancja miksera można używać do śledzenia wejścia miksera lewego i prawego przycisku myszy i ruchu i lokalizacji.
Usługa UserInputService dostarcza dodatkowe funkcje i wydarzenia do śledzenia wejścia użytkownika - szczególnie dla urządzeń, które nie używają myszy.
Notatka:
- Ten przedmiot musi być używany w LocalScript , aby działał jak oczekiwano online.
- Po aktualizacji w lipcu 2014 r. ikona myszy można teraz ustawić za pomocą tego metody.
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onButton1Down()
print("Button 1 is down")
end
mouse.Button1Down:Connect(onButton1Down)
GetNetworkPing
GetNetworkPing zwraca izolowaną sieć latency z Player w sekundach. "Ping" to pomiar czasu potrzebnego na wysłanie danych z klienta na serwer, a następnie ponownie. Nie wiąże się to z dezserwowaniem lub przetwarzaniem danych.
Dla strony klienta LocalScripts , ta funkcja może być wywołana tylko na Players.LocalPlayer . Ta funkcja jest użyteczna w identyfikowaniu i debugowaniu problemów, które występują w wysokich sieciach zależności. Jest również użyteczna do maskowania latencji, takiej jak dostosowywanie szybkości rzucania animacji dla projektli.
Zwroty
HasAppearanceLoaded
Funkcja HasAppearanceLoaded Player zwraca, czy ładowanie widoku gracza Player.Character ładowane jest.
Wygląd gracza zawiera elementy, takie jak Shirt gracza, Pants i Accessories.
Przydatne jest ustalenie, czy wygląd gracza załadował się po raz pierwszy po dołączeniu do gry, co można śledzić za pomocą wydarzenia Players.PlayerAdded.
Zwroty
Boolean wskazujący, czy wygląd postaci gracza został załadowany lub nie.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local loaded = player:HasAppearanceLoaded()
print(loaded)
while not loaded do
loaded = player:HasAppearanceLoaded()
print(loaded)
task.wait()
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsVerified
Zwraca wartość prawdziwą określającą status weryfikacji gracza. Gdy prawda, gracz jest weryfikowany. Weryfikacja obejmuje, ale nie jest ograniczona do, nie-VOIP numer telefonu lub weryfikacji tożsamości rządowego.
Podczas wdrożenia IsVerified uważaj, aby zagwarantować, że implementacja nie zablokuje niezweryfikowanych użytkowników nieprzypadkowo.
Uwaga, że metoda może być wywołana tylko na serwerze back-end. Wywołanie jej na stronie klienta spowoduje błąd. Ponadto ta metoda zawsze zwraca false w Studio.
Zwroty
Boolean wskazujący, czy gracz jest zweryfikowany.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player:IsVerified())
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Kick
Methode Kick() pozwala na ładne odłączenie klienta i możliwość opcjonalnego dostarczania wiadomości użytkownikowi odłączonemu. To użyteczne dla moderowania nadużywających użytkowników. Powinieneś pozwolić tylko zaufanym użytkownikom, którzy ufają, aby ten metod działał na innych użytkowników.
Calling this method on a Player with no arguments disconnects the user from the server and provides a default notice wiadomość. Calling this method on a Player along with a string as the first argument replaces the default message with the provided ciąg.
Kiedy używa się tego metody z LocalScript, tylko lokalny użytkownik może zostać wyrzucony.
Parametry
Wiadomość do pokazania użytkownikowi po wyrzuceniu.
Zwroty
Move
Funkcja Przenieś Player powoduje, że postać gracza chodzi w określonym kierunku do końca, lub jest przerwana przez gracza (używając jego elementy sterujące).
Przydatne jest to, gdy skryptuje się NPC Humanoids, który porusza się po mapie - ale nie jest kontrolowany przez rzeczywisty wpis gracza.
Uwaga, że drugi argument funkcji wskazuje, czy dostarczony Vector3 powinien przesuwać gracza względem światowych koordynat ( fałszywy ) lub gracza's Camera ( 1> prawdziwy1> ).
Parametry
Kierunek Vector3, w którym powinien poruszać się gracz.
Boolean wskazujący, czy gracz powinien poruszać się względem kamery gracza.
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
-- Wait for the player's character and humanoid, which must exist before calling :Move()
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
character:WaitForChild("Humanoid")
-- The player will move until they are 50 studs away from the camera's position at the time of running
localPlayer:Move(Vector3.new(0, 0, -50), true)
SetAccountAge
Funkcja SetAccountAge ustawia Player.AccountAge gracza w dni.
Służy do ustawienia właściwości Player, która opisuje, ile dni temu zostało zarejestrowane konto gracza.
To nie ustawia wieku gracza na konto, ale wieku konta sam w sobie w odniesieniu do czasu jego pierwszego utworzenia.
Parametry
Wiek konta w dniach.
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
SetSuperSafeChat
Ten metod ustawia, czy gracz widzi czat filtrowany przez TextService:FilterStringAsync() lub zwykłe czaty.
local Players = game:GetService("Players")local player = Players.LocalPlayerplayer:SetSuperSafeChat(true)
Niezależnie czy gracz miał włączoną filtrację czatu, cały czat powinien być filtrowany przez TextService przy nadawaniu do innych graczy lub na ekranie gracza. TextService:FilterStringAsync() zwraca obiekt TextFilterResult, który można filtrować w zależności od przeznaczenia wiadomość.
Parametry
Boolean wskazujący, czy gracz widzi filtrowany czat.
Zwroty
GetFriendsOnline
Funkcja ta zwraca arkusz znajomych online, ograniczony przez wartość maxFriends. Funkcja używa 30-sekundowego zapisu.
W zwróconym arkuszu obiektów niektóre pola są tylko dla pewnych typów lokalizacji. Na przykład, PlaceId nie będzie obecny, gdy TypeLocation ma 0 (strona mobilna).
<tbody><tr><td><b>Id wizytówki</b></td><td>liczba</td><td>Class.Player.UserId of the znajomy.</td></tr><tr><td><b>Imię użytkownika</b></td><td>ciąg</td><td>Imię znajomy.</td></tr><tr><td><b>Imię wyświetlanie</b></td><td>ciąg</td><td>Class.Player.DisplayName znajomy.</td></tr><tr><td><b>LastOnline)</b></td><td>ciąg</td><td>Kiedy przyjaciel był ostatnio online.</td></tr><tr><td><b>Jest w trybie online</b></td><td>boolean</td><td>Jeśli przyjaciel jest obecnie online.</td></tr><tr><td><b>Ostatni lokalizacja.</b></td><td>ciąg</td><td>Imię lokalizacji znajomy.</td></tr><tr><td><b>Identyfikator miejsca</b></td><td>liczba</td><td>ID miejsca ostatniej lokalizacji znajomy.</td></tr><tr><td><b>Id gry</b></td><td>ciąg</td><td>Model danych/Id punktu końca znajomy.</td></tr><tr><td><b>Typ lokalizacji</b></td><td>liczba</td><td>Typ lokalizacji ostatniej lokalizacji znajomy:<table>0 > Strona główna mobilna > 1> Strona główna1> > 4> Strona główna Xbox4> ><tbody>7> Strona główna Xbox</tbody>7> > 0> Strona główna mobilna0> > 3> Strona główna3> > 6> Strona główna Xbox6> ><tr>9> Strona główna mobilna</tr>9> > 2> Strona główna2> > 5> Strona główna mobilna5> >8> Strona główna8> > 1> Strona główna</table></td></tr></tbody>
Nazwa | Typ | Opis |
---|
Parametry
Maksymalna liczba przyjaciół online do zwrócenia.
Zwroty
Dizionarium przyjaciół online (zobacz tabelę powyżej).
Przykłady kodu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local success, result = pcall(player.GetFriendsOnline, player, 10)
if success then
for _, friend in pairs(result) do
print(friend.UserName)
end
else
warn("Failed to get online players: " .. result)
end
GetRankInGroup
Funkcja GetRankInGroup Player zwraca rangę gracza w grupie jako całkowity numer pomiędzy 0 i 255, gdzie 0 jest nieczłonkiem i 255 jest właścicielem grupa.
Używanie tego w Script , a nie w LocalScript, nie dostarczy Ci najnowszych informacji. Jeśli gracz opuści grupę podczas gdy jest w grze, GetRankInGroup nadal będzie myśleć, że jest w tej grupie, dopóki nie opuszczać. Ale to nie dzieje się, gdy używasz lokalnego skryptu.
Dzieje się tak dlatego, że metoda caches wyniki, więc wiele wezwania GetRankInGroup na tym samym graczu z tym samym ID grupy będzie wykonywać taki sam wynik, jak kiedy metoda została po raz pierwszy wezwana z tym samym grupowym ID. Zachowanie kachingowe jest na bazie per-peer: serwer nie dzieli się tą samą kasą jak klient.
Parametry
groupId grupaokreślonej.
Zwroty
Ranga gracza w grupa.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:GetRankInGroup(2) == 255 then
print("Player is the owner of the group, 'LOL'!")
else
print("Player is NOT the owner of the group, 'LOL'!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GetRoleInGroup
Funkcja GetRoleInGroup Player zwraca rolę gracza w grupie jako strungę lub Guest jeśli gracz nie jest częścią grupa.
Używanie tego w Script , a nie w LocalScript, nie dostarczy Ci najnowszych informacji. Jeśli gracz opuści grupę podczas gdy jest w grze, GetRoleInGroup nadal będzie myśleć, że jest w tej grupie, dopóki nie opuszczać. Ale to nie dzieje się, gdy używasz lokalnego skryptu.
Dzieje się tak dlatego, że metoda caches wyniki, więc wiele wezwania GetRoleInGroup na tym samym graczu z tym samym ID grupy będzie wykonywać taki sam wynik, jak kiedy metoda została po raz pierwszy wezwana z danej grupy ID. Zachowanie kachingowe jest na bazie per-peer: serwer nie dzieli się tą samą kasą jak klient.
Parametry
grupowy identyfikator grupaokreślonej.
Zwroty
Rola gracza w określonej grupalub Gość jeśli gracz nie jest członek.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("Player is ranked as '", player:GetRoleInGroup(2), "' in group, 'LOL'!")
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsFriendsWith
Funkcja ta wysyła prośbę do strony Roblox, pytając, czy gracz jest przyjacielem innego użytkownika, biorąc pod uwagę Player.UserId tego użytkownika. Ta funkcja ukrywa wyniki, więc wiele wezwanych funkcji na tym samym graczu z tym samym Player.UserId nie może zwró
Parametry
Class.Player.UserId gracza określonego.
Zwroty
Boolean wskazujący, czy gracz jest przyjacielem określonego użytkownika.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsFriendsWith(146569) then
print(player.Name .. " is friends with gordonrox24!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsInGroup
Funkcja IsInGroup Player wysyłuje prośbę o witrynę Roblox, aby zapytać, czy gracz jest członkiem grupa, biorąc pod uwagę ID tej grupa.
Używanie tego w Script , a nie w LocalScript, nie dostarczy Ci najnowszych informacji. Jeśli gracz opuści grupę podczas gdy jest w grze, IsInGroup nadal będzie myśleć, że jest w tej grupie, dopóki nie opuszczać. Jest to jednak nieprawdopodobne, gdy używasz lokalnego skryptu.
Dzieje się tak dlatego, że metoda caches wyniki, więc wiele wezwania IsInGroup na tym samym graczu z tym samym ID grupy będzie wykonywane tego samego wyniku, jak kiedy metoda została po raz pierwszy wezwana z danej grupy ID. Zachowanie kaching jest na bazie per-peer: serwer nie dzieli się tego samego karta pamięci, jak klient.
Parametry
grupowy identyfikator grupaokreślonej.
Zwroty
Boolean wskazujący, czy gracz jest w określonej grupa.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsInGroup(7) then
print("Player is in the Roblox Fan club!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
LoadCharacter
Funkcja LoadCharacter Player utworza nowego gracza dla gracza, usuwając starego. Usuwa również Backpack i PlayerGui gracza.
Przydatne jest to w przypadkach, gdy chcesz ponownie załadować postać bez zabijania gracza, takich jak gdy chcesz załadować nowy wygląd postaci po zmianie Player.CharacterAppearance gracza.
Uwaga: Funkcja jest podobna do Player:LoadCharacterBlocking() , ale prośba jest przetwarzana asynchronicznie zamiast być przetwarzana szybko. Oznacza to, że inne zadania będą mogły się kontynuować, podczas gdy postać jest ładowana, w tym renderowanie gry i inne zadania. Również, ta funkcja może być używana w skrypcie, podczas gdy LoadCharacterBlocking nie może.
Po wezwaniu LoadCharacter dla jednego gracza, nie zaleca się go ponownie wzywać do tego samego gracza, aż po zakończeniu wydarzenia Player.CharacterAppearanceLoaded tego gracza.
Charakter Loading Event order
Wezwanie Player:LoadCharacter() z użyciem R15 Avatar wyzwala następujące wydarzenia w kolejności (Uwaga: R6 ma inny algorytmu sortowania):
- Player.Character ustawia
- Dodane pożary gracza
- Player.Changed wygrywa z wartością „Character”
- Wygląd postaci inicjalizuje
- Player.CharacterAppearanceLoaded ogniste
- Character.Parent ustawiony na DataModel
- Ryglika postaci tworzy się, a postać skaluje się
- Znaki poruszają się do lokalizacji spawn
- Zwraca postać
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local RESPAWN_DELAY = 5
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
task.wait(RESPAWN_DELAY)
player:LoadCharacter()
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
player:LoadCharacter()
end
Players.PlayerAdded:Connect(onPlayerAdded)
LoadCharacterWithHumanoidDescription
Ta funkcja tworzy awatar, więc ma wszystko założone w przepustkach w HumanoidDescription .
Po wezwaniu LoadCharacterWithHumanoidDescription dla jednego gracza, nie zaleca się ponownie wzywać funkcji dla tego samego gracza, aż po zakończeniu wydarzenia Player.CharacterAppearanceLoaded tego gracza.
Zobacz również:
- System opisu ludzkiego, artykuł, który wyjaśnia system opisu ludzkiego w większym szczególe i zapewnia kilka przykładów skryptów
Parametry
A HumanoidDescription zawierające cechy, takie jak części ciała/kolory, skalowanie ciała, akcesoria, ubraniei animacje, które zostaną założone do załadowanego postaci.
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
Players.PlayerAdded:Connect(onPlayerAdded)
RequestStreamAroundAsync
Dla doświadczeń, w których włączone jest przesyłanie instancji strream, wnioski, które serwer przesyła do regionów graczy (części i terenu) wokół określonego X , Y ,
Efekt tego wezwania będzie tymczasowy, a nie ma gwarancji, co zostanie przesłane wokół określonego lokalizacji. Ograniczenia pamięci klienta i warunki sieci mogą wpływać na to, co będzie dostępne na klencie.
Ostrze?enie o u?ywaniu
Żądanie przesyłania wokół obszaru nie jest gwarancją , że treść będzie obecna, gdy prośba zostanie zakończona, ponieważ przesyłanie jest wpływane przez sieciową przepustowość, ograniczenia pamięci i inne czynniki.
Parametry
Lokalizacja na świecie, gdzie wymagana jest transmisja.
Opcjonalny czas wygasa dla prośba.
Zwroty
Zdarzenia
CharacterAdded
Wydarzenie CharacterAdded uruchomione jest, gdy postać gracza pojawia się (lub odzyskuje). To wydarzenie uruchomione jest wkrótce po ustawieniu Player.Character na nieznaną wartość lub wezwaniu Class.Player:LoadCharacter() , co jest przed tym, jak znak znakuje 2>Class.Workspace2>.
Można go używać wraz z wydarzeniem Player.CharacterRemoving, które wstrzyma gracza tuż przed usunięciem gracza, zwykle po śmierci. Jako takie, obie te wydarzenia mogą potencjalnie spalić wiele razy, gdy gracz dołącza lub wychodzi z gry. Jeśli chcesz wykryć
Uwaga, że Humanoid i jego domyślne części ciała (głowa, tułówko i kończyny) będą istnieć, gdy ten incydent się zet
Parametry
Instancja postaci, która się pojawiła/odrodziła.
Przykłady kodu
local Players = game:GetService("Players")
local function onCharacterAdded(character)
print(character.Name .. " has spawned")
end
local function onCharacterRemoving(character)
print(character.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- This table maps "Player" objects to Vector3
local respawnLocations = {}
local function onCharacterAdded(character)
local player = Players:GetPlayerFromCharacter(character)
-- Check if we saved a respawn location for this player
if respawnLocations[player] then
-- Teleport the player there when their HumanoidRootPart is available
local hrp = character:WaitForChild("HumanoidRootPart")
-- Wait a brief moment before teleporting, as Roblox will teleport the
-- player to their designated SpawnLocation (which we will override)
RunService.Stepped:wait()
hrp.CFrame = CFrame.new(respawnLocations[player] + Vector3.new(0, 3.5, 0))
end
end
local function onCharacterRemoving(character)
-- Get the player and their HumanoidRootPart and save their death location
local player = Players:GetPlayerFromCharacter(character)
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
respawnLocations[player] = hrp.Position
end
end
local function onPlayerAdded(player)
-- Listen for spawns/despawns
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
local function onPlayerRemoved(player)
-- Forget the respawn location of any player who is leaving; this prevents
-- a memory leak if potentially many players visit
respawnLocations[player] = nil
end
-- Note that we're NOT using PlayerRemoving here, since CharacterRemoving fires
-- AFTER PlayerRemoving, we don't want to forget the respawn location then instantly
-- save another right after
Players.PlayerAdded:Connect(onPlayerAdded)
Players.ChildRemoved:Connect(onPlayerRemoved)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function destroyAccessory(object)
if object:IsA("Hat") or object:IsA("Accessory") then
object:Destroy()
end
end
local function onCharacterAdded(character)
-- Wait a brief moment before removing accessories to avoid the
-- "Something unexpectedly set ___ parent to NULL" warning
RunService.Stepped:Wait()
-- Check for any existing accessories in the player's character
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hats may be added to the character a moment after
-- CharacterAdded fires, so we listen for those using ChildAdded
character.ChildAdded:Connect(destroyAccessory)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
CharacterAppearanceLoaded
Ten wążdź się uruchomi, gdy pełen wygląd Player.Character zostanie wstawiony.
A Player.Character ma ogólnie zasięg obiektów modyfikujących jego wygląd, w tym Accoutrements, Shirts, 1> Class.Pants1> i 4> Class.
Jednym z użyć dla tego wydarzenia jest upewnienie się, że wszystkie akcesoria załadowane zanim je usuniesz. Zobacz poniżej przykład tego.
Parametry
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
CharacterRemoving
Wydarzenie CharacterRemoving występuje właśnie przed usunięciem postaci gracza, takie jak gdy gracz się odrodza.
Ten wydarzenie można używać wraz z wydarzeniem Player.CharacterAdded, które jest uruchiwane, gdy postać gracza się pojawia lub odchodzi. Na instancja, jeśli chcesz wydrukować wiadomość za każdym razem, gdy gracz się pojawia i umiera:
local Players = game:GetService("Players")
local function onCharacterSpawned(player)
print(player.Name .. " is spawning")
end
local function onCharacterDespawned(player)
print(player.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function()
onCharacterSpawned(player)
end)
player.CharacterRemoving:Connect(function()
onCharacterDespawned(player)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
To wydarzenie dotyczy tylko Character Class.Player . Jeśli jednak musisz śledzić, kiedy gracz dołącza/wychodzi z gry, użyj wydarzeń Player i Players.PlayerAdded.
Parametry
Instancja postaci, która jest usuwana.
Przykłady kodu
game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)
Chatted
Wydarzenie Chatted włącza się, gdy Player wpisuje wiadomość i naciśnie enter w Roblox's zapewnionym wiadomościach barze. To jest zrobione za pomocą kilku wiązań Lua przez domyślną skryptu czatu. Możesz zapobiec graczom czatu, używając StarterGui:SetCoreGuiEnabled() i wyłączając Chat <
Komendy czatu
Używając tego wydarzenia i kilku funkcji manipulacji strungi, takich jak string.sub() i string.lower(), można tworzyć komendy czatu, nawet z argumentami takimi jak nazwy
Filtrowanie
Tekst wiadomości uruchomiony tym wydarzeniem jest niefiltrowany . Jeśli wyświetlasz wejście gracza jak czat do innych graczy w jakiejkolwiek formie, musi być filtrowane za pomocą Chat:FilterStringAsync() . Pamiętaj o tym, gdy tworzysz własne systemy czatu; jeśli twoja gra nie prawidłowo filtruje czatu, może to być podjęte działanie moder
Parametry
Treść wiadomości, którą gracz wpisał do czatu.
Deprecated. Dla wiadomości wącha była to osoba, która była zamierzonym celem wiadomośćw czacie.
Przykłady kodu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onChatted(message)
-- do stuff with message and player
print(message)
end
player.Chatted:Connect(onChatted)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Idled
Ten ewent wywołuje około 2 minut po tym, jak silnik gry klasyfikuje player jako bezczynność. Czas to liczba sekund, które minęły od tego punktu. Wydarzenie nadal jest uruchamiane co 30 sekund przez cały czas, dopóki gracz pozostaje bezczynność.
Ten wydarzenie tylko zostanie wykonany w skryptach klienta, a nie w skryptach serwera; użyj RemoteEvent , aby poinformować serwer o nieaktywnych graczach.
Roblox automatycznie odłącza graczy, którzy byli nieaktywni przez co najmniej 20 minut, więc ten incydent jest użyteczny do ostrzeżenia graczy, że zostaną odłączeni wkrótce, odłączając graczy przed tymi 20 minutami lub innymi funkcjami dala od klawiatury (AFK).
Aby śledzić, jak często występowaćautomatyczne odłączenie, spróbuj związać to wydarzenie z zdarzeniami Players.PlayerRemoving .
Parametry
Czas w sekundach, który gracz spędził w bezczynność.
Przykłady kodu
local Players = game:GetService("Players")
local function onIdled(idleTime)
print(`Player has been idle for {idleTime} seconds`)
if idleTime > 900 then
-- warn player that they've been idle for 15 minutes
-- and will be disconnected in another 5
end
end
Players.LocalPlayer.Idled:Connect(onIdled)
OnTeleport
Wystąpił, gdy zmienił się TeleportState gracza. Ten wątek jest użyteczny do wykrywania, czy teleportacja była udana.
Czym jest TeleportState?
Gdy wysyłany jest żądanie teleportacji za pomocą TeleportService, następuje seria etapów przed teleportacją Player. Obecny etap jest reprezentowany przez wartość Enum.TeleportState, która jest dana przez OnTeleport. Zobacz poniżej dla praktycznego przykładu tego.
Parametry
Nowy Enum.TeleportState``Class.Player .
Nazwa obszaru pochodzenia do teleportacji, jeśli TeleportService:TeleportToSpawnByName() został użyty.
Przykłady kodu
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local playerOnTeleport = player
player.OnTeleport:Connect(function(teleportState, _placeId, _spawnName)
if teleportState == Enum.TeleportState.Started then
print("Teleport started (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.WaitingForServer then
print("Teleport waiting for server (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.InProgress then
print("Teleport in progress (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.Failed then
print("Teleport failed! (" .. playerOnTeleport.Name .. ")")
end
end)
end)