Player

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Un oggetto Player è un client che è attualmente connesso. Questi oggetti vengono aggiunti al servizio Players quando un nuovo giocatore si connette, quindi vengono rimossi quando alla fine si disconnettono dal Server.

La proprietà Instance.Name riflette il Nome utentedel Giocatore. Quando si salva l'informazione su un Giocatore, si dovrebbe utilizzare il loro Player.UserId poiché è possibile che un giocatore possa cambiare il loro Nome utente.

Ci sono diversi metodi simili nel servizio Players per lavorare con gli oggetti Player. Usa questi oltre ai loro rispettivi metodi Instance :

Campioni di codice

Leaderstats

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)

Sommario

Proprietà

Metodi

Eventi

Proprietà

AccountAge

Sola Lettura
Non Replicato
Lettura Parallela

The AccountAge è una proprietà Player che descrive quanto tempo fa è stato registrato un account di un Giocatorein giorni. È impostato utilizzando la funzione Player:SetAccountAge() , che non può essere accessibile dagli script.

Questa proprietà è utile per mostrare condizionalmente il nuovo contenuto dei giocatori Roblox come tutorial.

Campioni di codice

Account Age Mark

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

Lettura Parallela

La proprietà AutoJumpEnabled determina se il Player.Character di un Player che usa un dispositivo mobile salterà automaticamente quando incontrerà un ostacolo. Ciò può rendere i livelli più navigabili mentre si è su un Dispositivomobile.

Quando il giocatore si unisce al Gioco, il valore StarterPlayer.AutoJumpEnabled determinare lo stato iniziale di questa Proprietà. Quindi, questa proprietà determina il valore della proprietà Humanoid.AutoJumpEnabled della Player.Character al Rigenerare. In altre parole, è possibile impostare il comport

Campioni di codice

Auto-Jump Toggle

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

Lettura Parallela

La proprietà CameraMaxZoomDistance Player imposta la distanza massima in studs dalla quale la fotocamera può essere dal personaggio con le telecamere predefinite.

In altre parole, controlla la distanza massima che la fotocamera del Giocatoreè autorizzata a rimpicciolire.

Il valore predefinito di questa proprietà è impostato da StarterPlayer.CameraMaxZoomDistance . Se questo valore viene impostato su un valore inferiore a Player.CameraMinZoomDistance , viene aumentato a CameraMinZoomDistance.

Campioni di codice

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMinZoomDistance

Lettura Parallela

La proprietà CameraMinZoonDistance Player imposta la distanza minima in studs dalla quale la fotocamera può essere dal personaggio con le telecamere predefinite.

In altre parole, controlla la distanza minima che la fotocamera del Giocatoreè autorizzata a ingrandire.

Il valore predefinito di questa proprietà è impostato da StarterPlayer.CameraMinZoomDistance . Se questo valore viene impostato su un valore maggiore di Player.CameraMaxZoomDistance verrà ridotto a CameraMaxZoomDistance.

Campioni di codice

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMode

Lettura Parallela

La proprietà CameraMode imposta la modalità della fotocamera del Giocatore, impostata su terza persona.

Terza persona

Nella modalità terza persona predefinita ( Enum.CameraMode.Classic ) la persona può essere vista nella Telecamera. In questo modo, il comportamento predefinito è:

  • I giocatori possono fare clic con il pulsante destro del mouse e trascinare (Mouse), toccare e trascinare (Mobile), usare il joystick secondario (gamepad), o premere le frecce sinistra / destra (tastiera) per ruotare la fotocamera intorno al loro personaggio.
  • Quando un giocatore muove il suo personaggio, si muove nella direzione di movimento corrispondente.
  • I giocatori possono zoom in e out liberamente, anche alla prima persona in full ingrandire.

Prima persona

In modalità prima persona ( Enum.CameraMode.LockFirstPerson ) la fotocamera del Giocatoreè zoomata in tutto il modo. A meno che non sia presente un'interfaccia utente visibile con la proprietà GuiButton.Modal impostata su true , facendo clic con il Topo, or mouse as computer mouse, toccando con il dito sullo schermo o utilizzando il joystick secondario su un gamepad la fot

Campioni di codice

Playing in First Person

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson

CanLoadCharacterAppearance

Lettura Parallela

La proprietà CanLoadCharacterAppearance Player determinare se l'aspetto del personaggio sarà caricato quando il giocatore spawna. Il valore predefinito di questa proprietà è impostato da StarterPlayer.LoadPlayerAppearance .

Se vero , il personaggio caricherà l'aspetto del giocatore corrispondente all'aspetto del GiocatorePlayer.CharacterAppearanceId .

Se falso , il giocatore apparirà con un aspetto predefinito - un modello di personaggio grigio senza cappelli, camicie, pantaloni, ecc.

Tentando di impostare la proprietà dopo che il personaggio è stato generato non cambierà il personaggio, devi chiamare Player:LoadCharacter() per caricare la nuova aspetto.

Campioni di codice

Disabling a Player's Appearance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false

Character

Lettura Parallela

La proprietà Personaggio contiene un riferimento a un Model che contiene un Humanoid , parti del corpo, script e altri oggetti richiesti per simulare l

Inizialmente questa proprietà è nil e viene impostata quando il personaggio del Giocatoreviene generato per la prima volta. Usa l'evento Player.CharacterAdded per rilevare quando il personaggio del Giocatoreviene caricato correttamente e l'evento Player.CharacterRemoving per rilevare quando il personaggio sta per despawnare. Evita di utilizzare

Nota che LocalScripts che sono clonati da StarterGui o StarterPack


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
if not character or character.Parent == nil then
character = player.CharacterAdded:Wait()
end

CharacterAppearanceId

Lettura Parallela

Questa proprietà determina l'ID utente dell'account il cui aspetto del personaggio è utilizzato per il personaggio di un Giocatore. Per impostazione predefinita, questa proprietà è il Player.Character, che usa l'avatar del Giocatorecome lo hanno creato sul sito Web Roblox.

Cambiare questa proprietà all'ID utente di un altro account farà si che il giocatore venga generato con l'aspetto di quell'Account(cappelli, camicie, pantaloni, ecc).

I giochi possono anche attivare o disattivare l'aspetto del personaggio di un Giocatorein gioco modificando la ProprietàStarterPlayer.LoadCharacterAppearance .

Campioni di codice

Disguise Command

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

Lettura Parallela

Difini come gli script della telecamera predefiniti gestiscono gli oggetti tra la telecamera e il soggetto della telecamera. Impostato da StarterPlayer.DevCameraOcclusionMode e non può essere modificato per i singoli giocatori.

Il valore predefinito è Zoom (0). Vedi Enum.DevCameraOcclusionMode per una lista di modalità disponibili.

Lettura Parallela

La proprietà DevComputerCameraMode determina il modo in cui un giocatore muove la sua telecamera quando usa un dispositivo con un mouse e una tastiera. Vedi Enum.DevComputerCameraMovementMode per una descrizione di ogni modo di controllo della telecamera disponibile. Questa proprietà non può essere impostata usando un LocalScript (deve essere impostata sul server usando un Script ).

Il valore predefinito di questa proprietà è determinato da StarterPlayer.DevComputerCameraMovementMode .

La parola "Computer" in questo nome di proprietà si riferisce a dispositivi non- TouchEnabled , non- GamepadEnabled .

Quando impostato su Scegliere utente , un giocatore può scegliere tra qualsiasi modalità di controllo (esclusa Scriptabile ) nelle impostazioni di gioco Roblox. In Generale, è una buona idea consentire ai giocatori di scegliere il loro modo di controllo per ottimizzare l'accessibilità.

È possibile creare un sistema di controllo personalizzato impostando questa proprietà su Scriptabile .

Questa proprietà non si applica ai giocatori che utilizzano un Dispositivotouch abilitato. Vedi Player.DevTouchCameraMode invece.

Campioni di codice

Setting a Player's Camera Movement Mode (Desktop)

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

Lettura Parallela

La proprietà DevComputerMovementMode determina il modo in cui un giocatore muove il loro personaggio quando usa un dispositivo con un mouse e una tastiera. Vedi Enum.DevComputerMovementMode per una descrizione di ogni modalità di movimento disponibile. Questa proprietà non può essere impostata usando un LocalScript (deve essere impostata sul server usando un Script).

Il valore predefinito di questa proprietà è determinato da StarterPlayer.DevComputerMovementMode .

La parola "Computer" in questo nome di proprietà si riferisce a dispositivi non- TouchEnabled .

Quando impostato su UserChoice , un giocatore può scegliere tra qualsiasi modalità di controllo (eccezion fatta Scriptable ) nelle impostazioni di gioco Roblox. In Generale, è una buona idea consentire ai giocatori di scegliere il loro modo di controllo per ottimizzare l'accessibilità.

È possibile creare un sistema di controllo personalizzato impostando questa proprietà su Scriptabile .

Questa proprietà non influisce sui giocatori che utilizzano un Dispositivoabilitato al tocco. Vedi Player.DevTouchMovementMode invece.

Campioni di codice

Setting a Player's Movement Mode (Desktop)

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.DevComputerMovementMode = Enum.DevComputerMovementMode.DynamicThumbstick
end)

DevEnableMouseLock

Lettura Parallela

Questa proprietà determina se un giocatore è in grado di attivare Mouse lock by pressing Shift . Un giocatore può disabilitare il pulsante di blocco del mouse nelle impostazioni di gioco di Roblox. Per impostazione predefinita, questa proprietà è impostata sul valore di Class.StarterPlayer.EnableMouseLockOption

Quando la chiave del mouse è abilitata, il cursore del Giocatoreè bloccato al centro dello schermo. Muovendo il mouse, si orbita la fotocamera intorno al Giocatorecharacter , e il personaggio si faccia verso la stessa direzione della camera . Offseta anche la vista della fotocamera solo sulla parte destra del personaggio del Giocatore.

Nota che le API correlate a shift-lock sono in corso di Deprecare, quindi si consiglia di utilizzare UserInputService.MouseBehavior invece per bloccare il Topo, or mouse as computer mouse.

Campioni di codice

Toggling Mouse Lock Ability

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)
Lettura Parallela

La proprietà DevTouchCameraMode determina il modo in cui un giocatore muove la sua telecamera quando utilizza un DispositivoTouchEnabled. Vedi Enum.DevTouchCameraMovementMode per una descrizione di ogni modalità di controllo della telecamera disponibile. Questa proprietà non può essere impostata utilizzando un LocalScript (de

Il valore predefinito di questa proprietà è determinato da StarterPlayer.DevTouchCameraMovementMode .

Quando impostato su UserChoice , un giocatore può scegliere tra qualsiasi modalità di controllo (eccezion fatta Scriptable ) nelle impostazioni di gioco Roblox. In Generale, è una buona idea consentire ai giocatori di scegliere il loro modo di controllo per ottimizzare l'accessibilità.

È possibile creare un sistema di controllo personalizzato impostando questa proprietà su Scriptabile .

Questa proprietà non si applica ai giocatori che non stanno usando un Dispositivoabilitato al touch. Vedi Player.DevComputerCameraMovementMode invece.

Campioni di codice

Setting a Player's Camera Movement Mode (Touch)

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

Lettura Parallela

La proprietà DevTouchMovementMode determina il modo in cui un giocatore muove il loro personaggio quando utilizza un DispositivoTouchEnabled. Vedi Enum.DevTouchMovementMode per una descrizione di ogni modalità di movimento disponibile. Questa proprietà non può essere impostata utilizzando un LocalScript (deve essere impost

Il valore predefinito di questa proprietà è determinato da StarterPlayer.DevTouchMovementMode .

Quando impostato su Scegliere utente , un giocatore può scegliere tra qualsiasi modalità di controllo (esclusa Scriptabile ) nelle impostazioni di gioco Roblox. In Generale, è una buona idea consentire ai giocatori di scegliere il loro modo di controllo per ottimizzare l'accessibilità.

È possibile creare un sistema di controllo personalizzato impostando questa proprietà su Scriptabile .

Questa proprietà non si applica ai giocatori che non stanno usando un Dispositivoabilitato al touch. Vedi Player.DevComputerMovementMode invece.

Campioni di codice

Setting a Player's Movement Mode (Touch)

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

Lettura Parallela

Il DisplayName è una proprietà Player che contiene il nome visualizzato dell'utente autenticato associato all'oggetto Player . A differenza dei nomi utente, i nomi visualizzati sono nomi non unici che un giocatore mostra agli altri. Se l'utente Roblox non ha scelto uno, la proprietà leggerà lo stesso come la Proprietà1>

Nota:

  • Poiché i nomi di visualizzazione non sono unici, è possibile che due giocatori in un'unica istanza abbiano nomi identici. Se hai bisogno di un identificatore globale unico per un Giocatore, usa Player.UserId (che è statico) o Player.Name (che è il nome attuale) invece.
  • I personaggi generati con Player.LoadCharacter o dall'ingegno Roblox avranno la loro proprietà Humanoid.DisplayName assegnata alla proprietà Player.DisplayName.
  • I nomi possono avere caratteri in codice unico nella Stringa. Vedi UTF-8 per ulteriori informazioni su come lavorare con le stringhe con caratteri in codice unico.

FollowUserId

Sola Lettura
Non Replicato
Lettura Parallela

Il FollowUserId è una proprietà Player che contiene il Player.UserId del giocatore che un giocatore ha seguito nel Gioco. Se il giocatore non ha seguito nessuno nel Gioco, questa proprietà sarà 0. Questa proprietà è utile per allertare i giocatori che sono stati seguiti da un altro giocatore nel Gioco.

Puoi ottenere il nome del giocatore seguendo usando questo ID utente e la funzione Players:GetNameFromUserIdAsync() .

Campioni di codice

Followed Alert

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

Lettura Parallela
Sicurezza Non Accessibile

La proprietà GameplayPaused indica se il giocatore è attualmente in uno stato di pausa in un luogo con StreamingEnabled attivato. È impostato sul client ma replicato sul Server. Per determinare lo Statodi pausa, puoi utilizzare questa Proprietà.

Vedi anche:

HasVerifiedBadge

Lettura Parallela

La proprietà HasVerifiedBadge Player indica se il giocatore ha un Badge di verifica/Badge verificato.

HealthDisplayDistance

Lettura Parallela

La proprietà HealthDisplayDistance Player imposta la distanza in studs in cui questo giocatore vedrà le altre barre di salute Humanoid . Se impostato su 0, le barre di salute non saranno visualizzate. Questa proprietà è impostata su StarterPlayer.HealthDisplayDistance per impostazione predefinita.

Se la barra della salute di un umanoide è visibile, puoi impostare il tipo di visualizzazione utilizzando Humanoid.DisplayDistanceType .

Campioni di codice

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

LocaleId

Nascosto
Sola Lettura
Non Replicato
Lettura Parallela

La proprietà LocaleId Player mostra l'ID della lingua che il giocatore locale ha impostato per il loro AccountRoblox. Contiene una stringa con il codice letterale (per esempio, "en-us") per la lingua.

Questo può essere utilizzato per determinare il target demografico geografico della tua base di Gioco, e è anche il luogo di utilizzo che verrà utilizzato per la localizzazione automatica (vedi GuiBase2d.AutoLocalize ) del contenuto in-experience. Questa proprietà consente l'accesso al luogo di utilizzo del Giocatoredal Server.

Vedi anche LocalizationService.RobloxLocaleId , l'ID della lingua usato per localizzare i contenuti interni. Questo sarà un valore diverso quando Roblox non supporta ancora internamente la lingua del Giocatorelocale.

Campioni di codice

Checking a Player's Locale

local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)

MembershipType

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà può essere letta solo per determinare la memoria (non può essere impostata su un altro inserisci / scrividi memoria del tipo account). Contiene un Enum.MembershipType enum del inserisci / scrividi memoria dell'Account.

Campioni di codice

Check Player Membership Status

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

Lettura Parallela

La proprietà NameDisplayDistance StarterPlayer imposta la distanza in studs in cui questo giocatore vedrà altri nomi Humanoid . Se la proprietà è impostata su 0, i nomi sono nascosti. Questa proprietà è impostata su StarterPlayer.NameDisplayDistance per impostazione predefinita.

Se la barra della salute di un umanoide è visibile, puoi impostare il tipo di visualizzazione utilizzando Humanoid.DisplayDistanceType .

Campioni di codice

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

Neutral

Lettura Parallela

La proprietà Neutral indica se il giocatore è in una teamspecifica.

  • Quando vero , il giocatore non è in una teamspecifica. Ciò significa anche che la proprietà Player.Team sarà nulla e il colore Player.TeamColor sarà bianco.
  • Quando falso , il giocatore è in una teamspecifica. La proprietà Player.Team corrisponderà alla squadra Team che il giocatore è su, così come la proprietà 1> Class.Player.TeamColor1> .

Campioni di codice

Checking if a Player is Neutral

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

Lettura Parallela

La proprietà ReplicationFocus Player imposta la parte per concentrare la replicazione attorno a un giocatore. Diversi sistemi Roblox che comunicano attraverso la rete (come la fisica, lo streaming, ecc.) replicano a differenti livelli a seconda di quanto sono le parti vicino al focus di replicazione.

Quando questa proprietà è nulla, torna al suo comportamento predefinito che è di trattare il personaggio del Giocatorelocale il suo Class.Model.PrimaryPart|PrimaryPart come punto di focus di replicazione.

Questa proprietà dovrebbe essere impostata solo sul server con un Script , non un LocalScript . Nota che questa proprietà non cambia o aggiorna la proprietà di rete delle parti.

Campioni di codice

Setting a Player's Replication Focus

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

Lettura Parallela

Se Impostare, il giocatore respawnerà al SpawnLocation . Questa proprietà può essere impostata solo attraverso Lua e deve contenere un riferimento a un valido SpawnLocation , che deve soddisfare i seguenti criteri:

Se RespawnLocation non è impostato su un valido SpawnLocation allora la logica di spawn predefinita si applica. Per ulteriori informazioni su questo, vedi la pagina per SpawnLocation .

Alternative a RespawnLocation

Campioni di codice

Change Spawn on Touch

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

Non Replicato
Lettura Parallela

La proprietà Team è una riferimento a un oggetto Team all'interno del servizio Class.

Campioni di codice

Playing/Spectating Teams

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)
Join Team Command

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

Lettura Parallela

La proprietà TeamColor determina quale squadra un giocatore è associato con in base al Team.TeamColor della squadra. Cambiando questa proprietà cambierà Player.Team in base al team che ha lo stesso BrickColor per il loro 1> Class.Team.TeamColor1> . Se nessun oggetto Team

È spesso una migliore idea impostare Player.Team su Team rispettivamente invece di utilizzare questa Proprietà. Impostare questa proprietà porta spesso alla ripetizione dello stesso valore BrickColor per un determinato team in molti script; questo è qualcosa che si vuole evitare quando si aderisce al principio "Non ripetere te stesso" (DRY).

Campioni di codice

Playing/Spectating Teams

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

Lettura Parallela

L'UserId è una proprietà Player che contiene un numero intero che unicamente e coerentemente identifica ogni account utente su Roblox. A differenza del Instance.Name di un Player, questo valore non cambierà per la stessa Account.

Questa proprietà è essenziale quando si salva/carica i dati del giocatore usando GlobalDataStores . Usa l'ID utente di un Giocatorecome chiave di archiviazione dei dati per consentire a ciascun giocatore di avere una chiave unica.

Campioni di codice

Player.UserId

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players:GetPlayerByUserId

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
Met the Creator Badge

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)
Data Store to Leaderboard

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)

Metodi

ClearCharacterAppearance

void

La funzione ClearCharacterAppearance rimuove tutti Accessory , Shirt , Pants , 1> Class.CharacterMesh

Non rimuove t-shirts , maglie, o volti.


Restituzioni

void

Campioni di codice

How to Clear a Character's Appearance

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

La funzione DistanceFromCharacter Player restituisce la distanza tra la testa del personaggio e il punto Vector3 fornito. Ritorna 0 se il giocatore non ha Player.Character .

Questo è utile per determinare la distanza tra un giocatore e un altro oggetto o posizione nel Gioco.

Se vuoi determinare la distanza tra due istanze o posizioni non player, puoi usare il Seguendo:


local distance = (position1 - position2).magnitude

Parametri

point: Vector3

La posizione in cui la distanza del Giocatoresi misura.


Restituzioni

La distanza in studs tra il giocatore e la posizione.

Campioni di codice

Measuring the Distance Between a Player and a Position

local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end

GetJoinData

Restituisce un dizionario che contiene informazioni che descrive come il giocatore si unisce all'esperienza. Il dizionario contiene qualsiasi campo seguente:


<tbody>
<tr>
<th>ID di gioco di origine</th>
<td>number</td>
<td>Il <code>Class.DataModel.GameId</code> dell'esperienza che il giocatore ha teletrasportato. Presente solo se il giocatore si teletrasporta nell'esperienza corrente e se un server chiama la funzione di teletrasporto.</td>
</tr>
<tr>
<th>ID luogo di origine</th>
<td>number</td>
<td>Il <code>Class.DataModel.PlaceId</code> del luogo in cui il <code>Player</code> si teletrasporta. Presente solo se il giocatore si teletrasporta nel luogo corrente e un server chiama la funzione di teletrasporto.</td>
</tr>
<tr>
<th>Riferito da PlayerId</th>
<td>number</td>
<td>Il <code>Class.Player.UserId</code> del giocatore che ha invitato il giocatore attuale nell'esperienza. Usa questi dati per identificare il referrer e la logica di attivazione della ricompensa.</td>
</tr>
<tr>
<th>Membri</th>
<td>vettore</td>
<td>Un array che contiene i <code>Class.Player.UserId</code> numeri degli utenti teletrasportati insieme al <code>Player</code> . Presente solo se l'utente si teletrasporta come parte di un Gruppo.</td>
</tr>
<tr>
<th>Teleportato</th>
<td>variante</td>
<td>Riflette il <code>teleportData</code> specificato nell'originale Teletrasporto. Utile per condividere informazioni tra i server ai quali il giocatore si teletrasporta. Presente solo se <code>teleportData</code> è stato specificato e un server chiama la funzione di teletrasporto.</td>
</tr>
<tr>
<th>Dati di avvio</th>
<td>stringa</td>
<td>Una semplice o JSON codificata stringa che contiene i dati di avvio specificati in un link profondo URL o Class.ExperienceInviteOptions.LaunchData .</td>
</tr>
</tbody>
ChiaveTipo di valoreDescrizione

Ottieni JoinData e TeleportData

Se un server inizia il Teletrasportodel giocatore, il dizionario che questo metodo restituisce include i dati di teletrasporto del Giocatore. Il metodo Player:GetJoinData() può essere utilizzato solo per ottenere i dati sul Server. Per ottenere i dati sul client, usa TeleportService:GetLocalPlayerTeleportData() .

A differenza di TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() fornisce solo i dati di teletrasporto che soddisfino i seguenti criteri di sicurezza:

  • È garantito di essere stato inviato da un server Roblox negli ultimi 48 ore.
  • È garantito di essere stato inviato con questo Player .
  • Il SourcePlaceId e SourceGameId sono garantiti per essere il luogo e l'universo in cui i dati sono stati inviati. Ciò significa che puoi verificare che i dati di teletrasporto provengono da un Postoapprovato.

Poiché i dati vengono trasmessi dal client, potrebbe ancora essere abusato da un exploiter. I dati sensibili, come la valuta del giocatore, devono essere trasmessi tramite una soluzione sicura come Negozi di memoria.


Restituzioni

Un dizionario che contiene i valori PlaceId e UserId (vedi la tabella in Descrizione).

Campioni di codice

Tracking Traffic Sources

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)
Referral URL Generator

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)
Using a Table as Launch Data

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
Decoding JSON Launch Data

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)
Server TeleportData Example

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

La funzione GetMouse Player restituisce il Mouse in uso dal client. L'istanza del mouse del Giocatorepuò essere utilizzata per tracciare l'input del mouse del giocatore, tra cui i clic del pulsante sinistro e destro e le mosse e le posizioni.

Il servizio UserInputService fornisce funzioni e eventi aggiuntivi per tracciare l'input dell'utente - in particolare per i dispositivi che non utilizzano un Topo, or mouse as computer mouse.

Nota:

  • Questo oggetto deve essere usato in un LocalScript per funzionare come previsto Connesso, Online.
  • Dopo un aggiornamento nel luglio 2014, l'icona del Topo, or mouse as computer mousepuò ora essere impostata con questo metodo.

Restituzioni

Campioni di codice

How to Track Mouse Input

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

Scrivi Parallelo

GetNetworkPing restituisce la latenza di rete isolata del Player in secondi. "Ping" è una misura del tempo richiesto per l'invio dei dati dal client al Server, quindi restituito nuovamente. Non coinvolge la deserializzazione o il trattamento dei dati.

Per il lato client-side LocalScripts , questa funzione può essere chiamata solo sul Players.LocalPlayer . Questa funzione è utile per identificare e debugare problemi che si verificano in scenari di alta latenza. È anche utile per mascherare la latenza, come regolare la velocità di lancio delle animazioni per i proiettili.


Restituzioni

HasAppearanceLoaded

La funzione HasAppearanceLoaded Player restituisce se o no l'aspetto del GiocatorePlayer.Character è stato caricato.

L'aspetto di un Giocatoreinclude oggetti come il GiocatoreShirt , Pants , e Accessories .

Questo è utile per determinare se l'aspetto di un Giocatoreè stato caricato dopo che si è unito per la prima volta al Gioco, che può essere tracciato utilizzando l'evento Players.PlayerAdded .


Restituzioni

Un bool che indica se o no l'aspetto del personaggio del Giocatoreè stato caricato.

Campioni di codice

Check if a Player's Appearance Has Loaded

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

Restituisce un valore booleano che indica lo Statodi verifica del Giocatore. Quando è vero, il giocatore è verificato. La verifica include, ma non è limitata, alla non-VOIP numero di telefono o l'identificatore del governo ID.

Quando si implementa IsVerified , esercitare la cautela per assicurarsi che l'implementazione non blocchi inadvertitamente tutti gli utenti non verificati.

Nota che il metodo può essere chiamato solo sul Serverdi backend. Chiamandolo client-side risulta in un errore. Inoltre, questo metodo restituirà sempre false in Studio.


Restituzioni

Un bool che indica se il giocatore è verificato.

Campioni di codice

Using IsVerified

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

void

Il metodo Kick() consente a un'esperienza di graziose disconnessione di un client e opzionalmente fornire un messaggio all'utente disconnesso. Questo è utile per moderare gli utenti abusivi. Dovresti consentire solo gli utenti che hai fiducia di attivare questo metodo su altri utenti.

Chiamare questo metodo su un Player senza argomenti disconnette l'utente dal server e fornisce un Messaggiodi avviso predefinito. Chiamare questo metodo su un Player insieme a una stringa come primo argomento sostituisce il messaggio predefinito con la Stringafornita.

Quando si utilizza questo metodo da un LocalScript, solo il client dell'utente locale può essere espulso.

Parametri

message: string

Il messaggio per mostrare l'utente dopo l'espulsione.

Valore predefinito: ""

Restituzioni

void

Move

void

La funzione Move Player fa in modo che il personaggio del Giocatorecammini nella direzione specificata fino a quando non è fermato, o interrotto dal giocatore (utilizzando i suoi Controlli).

Questo è utile quando si scripta NPC Humanoids che si muove intorno a una mappa - ma non è controllato dall'input di un Giocatorereale.

Nota che il secondo argomento della funzione indica se il Vector3 fornito dovrebbe spostare il giocatore rispetto ai coordinatori mondiali ( falso ) o al Giocatore's Camera ( 1> vero1> ).

Parametri

walkDirection: Vector3

La direzione Vector3 che il giocatore dovrebbe Sposta.

relativeToCamera: bool

Un booleto che indica se il giocatore dovrebbe muoversi rispetto alla Telecameradel Giocatore.

Valore predefinito: false

Restituzioni

void

Campioni di codice

Moving the Player relative to their Camera

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

void
Sicurezza Plugin

La funzione SetAccountAge imposta il Player.AccountAge del giocatore in giorni.

Viene utilizzato per impostare la proprietà Player che descrive quanti giorni fa è stato registrato l'account di un Giocatore.

Questo non imposta l'età del giocatore sull'Account, ma l'età dell'account stesso rispetto a quando è stato creato per la prima volta.

Parametri

accountAge: number

L'età dell'account in giorni.


Restituzioni

void

Campioni di codice

Setting the Player's Account Age

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
Account Age Mark

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

void
Sicurezza Plugin

Questo metodo imposta se il giocatore vede la chat filtrata da TextService:FilterStringAsync() invece che la chat normale.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetSuperSafeChat(true)

Indipendentemente dal fatto che un giocatore abbia abilitato o meno la chat, tutta la chat dovrebbe essere filtrata da TextService quando viene diffusa agli altri giocatori o sullo schermo del Giocatore. TextService:FilterStringAsync() restituisce un oggetto TextFilterResult che può essere filtrato in base all'uso previsto del Messaggio.

Parametri

value: bool

Un bool che indica se il giocatore vede o meno la chat filtrata.


Restituzioni

void

GetFriendsOnline

Resa

Questa funzione restituisce un' array di amici online, limitata dal valore maxFriends. La funzione utilizza un cache di 30 secondi.

Nell' vettorerestituito, alcuni campi sono presenti solo per determinati tipi di posizione. Ad esempio, PlaceId non sarà presente quando LocationType è 0 (sito Web mobile).


<tbody>
<tr>
<td><b>VisitorId</b></td>
<td>number</td>
<td>Il <code>Class.Player.UserId</code> del tuo Amico/Amica.</td>
</tr>
<tr>
<td><b>Nome utente</b></td>
<td>stringa</td>
<td>Il nome utente dell'Amico/Amica.</td>
</tr>
<tr>
<td><b>Nome visualizzato</b></td>
<td>stringa</td>
<td>Il <code>Class.Player.DisplayName</code> del tuo Amico/Amica.</td>
</tr>
<tr>
<td><b>UltimaOnline</b></td>
<td>stringa</td>
<td>Quando l'amico è stato l'ultima volta Connesso, Online.</td>
</tr>
<tr>
<td><b>Isonline</b></td>
<td>booleano</td>
<td>Se l'amico è attualmente Connesso, Online.</td>
</tr>
<tr>
<td><b>Ultima posizione.</b></td>
<td>stringa</td>
<td>Il nome della posizione attuale dell'Amico/Amica.</td>
</tr>
<tr>
<td><b>PlaceId</b></td>
<td>number</td>
<td>L'ID del luogo dell'ultima posizione dell'Amico/Amica.</td>
</tr>
<tr>
<td><b>GameId</b></td>
<td>stringa</td>
<td>Il <code>DataModel/JobId</code> della ultima posizione dell'Amico/Amica.</td>
</tr>
<tr>
<td><b>LocationType ]</b></td>
<td>number</td>
<td>
Il tipo di posizione del luogo dell'ultimo Amico/Amica:
<table>
0 Mobile Website 0>
<tbody>
1> 2> 3>1
</tbody>
3> 4> 5> 6> 7> 8> 9> 0> 1> 2> 3> 4> 5> 6> 7> 8> 9> 0> 1> 2> 3> 4> 5> 6> 7> 8> 9> 0> 1> 2> 3> 4> 5> 6> 7> 8>
</table>
</td>
</tr>
</tbody>
NomeTipoDescrizione

Parametri

maxFriends: number

Il numero massimo di amici online da Riportare.

Valore predefinito: 200

Restituzioni

Un dizionario di amici online (vedi la tabella sopra).

Campioni di codice

Get a List of Online Friends

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

Resa

La funzione GetRankInGroup Player restituisce il rango del Giocatorenel gruppo come un numero intero tra 0 e 255, dove 0 è un non membro e 255 è il proprietario del Gruppo.

Usando questo in un Script , invece di un LocalScript , non otterrà le informazioni più recenti. Se un giocatore lascia un gruppo mentre è in Gioco, GetRankInGroup penserà ancora che sono in quel gruppo fino a quando non se ne Uscire. Tuttavia, questo non accade quando si usa con uno script locale.

Questo perché il metodo memorizza i risultati, quindi più chiamate di GetRankInGroup sullo stesso giocatore con lo stesso ID di gruppo restituiranno lo stesso risultato quando il metodo è stato chiamato per la prima volta con l'ID di gruppo fornito. Il comportamento di caching è basato su una base per-peer: un server non condivide la stessa cache di un client.

Parametri

groupId: number

Il groupId del Gruppospecificato.


Restituzioni

Il rango del Giocatorenel Gruppo.

Campioni di codice

How to Check a Player's Rank in a Group

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

Resa

La funzione GetRoleInGroup Player restituisce il ruolo del Giocatorenel gruppo come una Stringa, o Guest se il giocatore non è parte del Gruppo.

Usando questo in un Script , invece di un LocalScript , non otterrete le informazioni più recenti. Se un giocatore lascia un gruppo mentre è in Gioco, GetRoleInGroup penserà ancora che sono in quel gruppo fino a quando non se ne Uscire. Tuttavia, questo non accade quando si usa con uno script locale.

Questo perché il metodo memorizza i risultati, quindi più chiamate di GetRoleInGroup sullo stesso giocatore con lo stesso ID di gruppo restituiranno lo stesso risultato quando il metodo è stato chiamato per la prima volta con l'ID di gruppo fornito. Il comportamento di caching è basato su una base per-peer: un server non condivide lo stesso cache di un client.

Parametri

groupId: number

Il groupId del Gruppospecificato.


Restituzioni

Il ruolo del Giocatorenel Gruppospecificato, o Guest se il giocatore non è un Membri.

Campioni di codice

How to Check a Player's Role in a Group

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

Resa

Questa funzione invia una richiesta al sito Web di Roblox chiedendo se un giocatore è un amico di un altro utente, dato il Player.UserId di quel giocatore. Questa funzione nasconde i risultati in modo che più chiamate della funzione sullo stesso giocatore con lo stesso Player.UserId non possano fornire il Risultatopiù aggiornato. Ciò non accade quando

Parametri

userId: number

Il Player.UserId del Giocatorespecificato.


Restituzioni

Un bool che indica se un giocatore è un amico dell'utente specificato.

Campioni di codice

How to Check if a Player is a Friend

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

Resa

La funzione IsInGroup Player invia una richiesta al sito Web Roblox chiedendo se un giocatore è un membro di un Gruppo, dato l'ID di quel Gruppo.

Usando questo in un Script , invece di un LocalScript , non otterrete le informazioni più recenti. Se un giocatore lascia un gruppo mentre è in Gioco, IsInGroup penserà ancora che sono in quel gruppo fino a quando non se ne Uscire. Tuttavia, questo non accade quando si usa con uno Script locale.

Questo perché il metodo memorizza i risultati, quindi più chiamate di IsInGroup sullo stesso giocatore con lo stesso ID gruppo producono lo stesso risultato quando il metodo è stato chiamato per la prima volta con l'ID gruppo fornito. Il comportamento di caching è basato su una base per pari: un server non condivide la stessa cache di un client.

Parametri

groupId: number

Il groupId del Gruppospecificato.


Restituzioni

Un bool che indica se il giocatore è nel Gruppospecificato.

Campioni di codice

How to Check if a Player is in a Group

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

void
Resa

La funzione LoadCharacter Player crea un nuovo personaggio per il Giocatore, rimuovendo quello vecchio. Inoltre, pulisce il Backpack e PlayerGui del Giocatore.

Questo è utile in casi in cui vuoi ricaricare il personaggio senza uccidere il Giocatore, come quando vuoi caricare una nuova apparenza del personaggio dopo aver cambiato il Giocatore's Player.CharacterAppearance .

Nota: La funzione è simile a Player:LoadCharacterBlocking() , ma la richiesta viene elaborata in modo asincrono invece che in modo sincrono. Ciò significa che le altre attività saranno in grado di continuare mentre il personaggio viene caricato, tra cui il rendimento del gioco e qualsiasi altra attività. Inoltre, questa funzione può essere utilizzata in uno script, mentre LoadCharacterBlocking non può.

Dopo aver chiamato LoadCharacter per un Giocatoreindividuale, non è raccomandato chiamarlo di nuovo per lo stesso giocatore fino a quando non è stato attivato l'evento Player.CharacterAppearanceLoaded del Giocatore.

Caricamento evento di carattere

Chiamando il Player:LoadCharacter() con un Avatar R15 attiva gli eventi nell'ordine seguente (Nota: l'ordine R6 è diverso):

  1. Player.Character impostazioni
  2. Player.CharacterAdded fuochi
  3. Player.Changed fuochi con un valore di "Character"
  4. L'aspetto del personaggio inizializza
  5. Player.CharacterAppearanceLoaded fuochi
  6. Character.Parent impostato su DataModel
  7. Il Character rig build, e il Character scale
  8. I personaggi si muovono nella posizione di spawn
  9. CaricaPersonaggio restituisce

Restituzioni

void

Campioni di codice

Turn Off Auto-Loading and Simulate Character Respawn

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

void
Resa

Questa funzione genera un avatar in modo che abbia tutto l'equipaggiamento nel passato in HumanoidDescription .

Dopo aver chiamato LoadCharacterWithHumanoidDescription per un singolo Giocatore, non è raccomandato chiamare la funzione nuovamente per lo stesso giocatore fino a quando l'evento Player.CharacterAppearanceLoaded del Giocatorenon ha avuto successo.

Vedi anche:

Parametri

humanoidDescription: HumanoidDescription

Un HumanoidDescription contenente tratti come parti del corpo/colori, scala del corpo, accessori, Abiti/Abbigliamentoe animazioni che saranno equipaggiati al personaggio caricato.


Restituzioni

void

Campioni di codice

Spawn Characters With HumanoidDescription

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

void
Resa

Per le esperienze in cui è abilitato il streamming istantaneo, le richieste che il server stream alla regione del Giocatore(parti e terreno) intorno alla posizione specificata X, Y, 2>Z2> nella 3D Mondo. È utile

L'effetto di questa chiamata sarà temporaneo e non ci sono garanzie di ciò che verrà streamed in around the specified location. Client memory limits and network conditions potrebbero influenzare ciò che sarà disponibile sul client.

Precauzione d'uso

Richiesto uno streaming in un'area non è una garanzia che il contenuto sarà presente quando la richiesta completa, poiché lo streaming è influenzato dalla rete del client, dalle limitazioni della memoria e da altri fattori.

Parametri

position: Vector3

Localizzazione mondiale in cui viene richiesto lo streaming.

timeOut: number

Opzionaletimeout per la Richiesta.

Valore predefinito: 0

Restituzioni

void

Eventi

CharacterAdded

L'evento CharacterAdded viene attivato quando il personaggio di un Giocatoreviene generato (o respawna). Questo evento viene attivato poco dopo aver impostato Player.Character su un valore non nil o aver chiamato 2> Class.Player:LoadCharacter()2>, che è prima dell'avvio del personaggio alla 5>Class.Area di lavoro5> .

Questo può essere utilizzato insieme all'evento Player.CharacterRemoving , che si attiva proprio prima che il personaggio di un Giocatoresia pronto per essere rimosso, tipicamente dopo la morte. Come tale, entrambi questi eventi possono potenzialmente essere attivati molte volte quando un giocatore si unisce o lascia il Gioco, invece di utilizzare il <

Nota che il Humanoid e le sue parti del corpo predefinite (testa, torso e arti) esisteranno quando si attiva questo evento, ma gli articoli come Class.Hat|

Parametri

character: Model

Un'istanza del personaggio che è spawnato/respawnato.


Campioni di codice

Detecting Player Spawns and Despawns

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)
Respawn at Despawn Location

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)
Accessory Remover

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

Questo evento si attiva quando l'aspetto completo di un Player.Character è stato inserito.

Un Player.Character generalmente ha una gamma di oggetti che modificano il suo aspetto, tra cui Accoutrements , Shirts , 1> Class.Pants1> e 4> Class.CharacterMesh

Un uso per questo evento è di assicurarsi che tutti gli accessori siano caricati prima di distruggerli. Vedi sotto per un esempio di questo.

Parametri

character: Model

Il Class.Player.Character``Class.Model .


Campioni di codice

Remove Accessories After Loading

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

L'evento CharacterRemoving si attiva proprio prima che il personaggio di un Giocatorevenga rimosso, come quando il giocatore respawna.

Questo evento può essere utilizzato insieme all'evento Player.CharacterAdded, che si attiva quando un personaggio del Giocatoreviene generato o respawnato. Ad esempio, se desideri stampare un messaggio ogni volta che un giocatore si genera e muore:


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)

Questo evento si riferisce solo alla Character di un Player . Se invece devi tracciare quando un giocatore si unisce/lascia il Gioco, usa gli eventi Class.Players.PlayerAdded e 2>Class.Players.PlayerRemoving2> .

Parametri

character: Model

Un'istanza del personaggio che viene rimosso.


Campioni di codice

Player.CharacterRemoving

game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)

Chatted

L'evento Chatted si attiva quando un Player digita un messaggio e premere enter nella barra di chat fornita da Roblox. Questo viene fatto utilizzando alcuni legami Lua dal script di chat predefinito. Puoi impedire ai giocatori di chattare utilizzando StarterGui:SetCoreGuiEnabled() e disabilitando il Chat Enum.CoreGuiType.

Comandi di chat

Usando questo evento e alcune funzioni di manipolazione della Stringacome string.sub() e string.lower(), è possibile creare comandi di chat, anche con argomenti come il nome del giocatore. Di solito

Filtraggio

Il testo del messaggio è stato attivato con questo evento è non filtrato . Se stai visualizzando l'input del giocatore come chat a altri giocatori in qualsiasi forma, deve essere filtrato usando Chat:FilterStringAsync() . Tieni questo a mente quando crei i tuoi sistemi di chat; se il tuo gioco non filtra correttamente la chat potrebbe essere presa un'azione di moderazione .

Parametri

message: string

Il contenuto del messaggio che il giocatore ha digitato nella chat.

recipient: Player

Deprecated. Per i messaggi di sottovento, questo era il giocatore che era il bersaglio intenzionale del Messaggiodi chat.


Campioni di codice

Player.Chatted

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)
Playing/Spectating Teams

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)
Join Team Command

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

Questo evento si attiva circa due minuti dopo che il motore di gioco classifica il player come Inattivo, Inattiva, Inattivi. Il tempo è il numero di secondi che sono passati da quel punto. L'evento continua ad essere eseguito ogni 30 secondi per quanto il giocatore rimane Inattivo, Inattiva, Inattivi.

Questo evento si attiva solo negli script del client, non negli script del server; usa un RemoteEvent per notificare al server dei giocatori inattivi.

Roblox disconnette automaticamente i giocatori che sono stati inattivi per almeno 20 minuti, quindi questo evento è utile per avvisare i giocatori che saranno disconnessi presto, disconettendo i giocatori prima di questi 20 minuti o altre funzionalità lontane dal tastierino (AFK).

Per tracciare con quale frequenza si Si verificanole disconnessioni automatiche, prova a corrispondere questo evento con le occorrenze di Players.PlayerRemoving .

Parametri

time: number

Il tempo in secondi che il giocatore è stato Inattivo, Inattiva, Inattivi.


Campioni di codice

Player.Idled

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

Si attiva quando lo stato di teletrasporto di un giocatore cambia. Questo evento è utile per rilevare se una teletrasportazione è stata un successo.

Cos'è il TeleportState?

Quando una richiesta di teletrasporto viene eseguita utilizzando TeleportService , ci sono una serie di fasi prima che il Player venga teletrasportato. Il valore attuale è rappresentato dal valore Enum.TeleportState che viene fornito da OnTeleport. Vedi sotto per un esempio pratico di questo.

Parametri

teleportState: Enum.TeleportState
placeId: number

L'ID del luogo in cui il Player viene teletrasportato.

spawnName: string

Il nome del punto di rigenerazione a cui teletrasportarsi, se TeleportService:TeleportToSpawnByName() è stato utilizzato.


Campioni di codice

Player.OnTeleport

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)