Player
*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 :
- Puoi ottenere una tabella di oggetti Player attuali usando Players:GetPlayers() ; ancora, usa questo invece di Instance:GetChildren() .
- Per rilevare l'aggiunta di oggetti Player, si consiglia di utilizzare l'evento Players.PlayerAdded (invece di Instance.ChildAdded sul servizio Players .
- Allo stesso modo, puoi rilevare la rimozione di oggetti Player utilizzando Players.PlayerRemoving , che viene attivata solo prima che il Player venga rimosso (invece di Instance.ChildRemoved che viene attivata dopo). Questo è importante se stai salvando informazioni sul giocatore che potrebbero essere rimosse o pulite dopo la rimozione.
Campioni di codice
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à
Descrive l'età del Giocatorenel giorno.
Determina se il personaggio di un giocatore che usa un dispositivo mobile salterà automaticamente quando colpisce un ostacolo.
La distanza massima che la fotocamera del Giocatoreè in grado di ingrandire.
La distanza minima che la fotocamera del Giocatoreè autorizzata a ingrandire.
Cambia la modalità della Telecamerain prima o terza persona.
Determina se l'aspetto del personaggio verrà caricato quando il giocatore si genera. Se falso, il giocatore si genererà con un aspetto predefinito.
Un Model controllato dal giocatore che contiene un Humanoid , parti del corpo, script e altri oggetti.
Determina l'ID utente dell'account il cui aspetto del personaggio è utilizzato per il character di un Giocatore.
Imposta il modo in cui le maniglie della fotocamera gestiscono gli oggetti tra la fotocamera e il Giocatore.
Determina il modo in cui si muove la telecamera del Giocatorequando si usa una versione desktop di Roblox.
Determina il modo di movimento del personaggio del Giocatorequando si utilizza una versione desktop di Roblox.
Determina se il giocatore può attivare o meno la blocco del mouse.
Determina il modo in cui si muove la telecamera del Giocatorequando si utilizza un Dispositivotouch.
Determina il modo di movimento del personaggio del Giocatorequando si utilizza un Dispositivotouch.
Il DisplayName dell'Utente associato al Player.
Descrive l'ID utente del giocatore che è stato seguito in un gioco da un Giocatore.
Se la giocabilità lato client del giocatore è attualmente in pausa.
Indica se un giocatore ha un Badge di verifica/Badge verificato.
Imposta la distanza in cui questo giocatore vedrà le barre della salute di altri Humanoid. Se impostato su 0, le barre della salute non saranno visualizzate.
Questa proprietà mostra l'ID della lingua locale che il giocatore locale ha impostato per il suo AccountRoblox.
Descrivi il inserisci / scrividi iscrizione dell'Account.
Imposta la distanza in cui questo giocatore vede i nomi di altri umanoidi. Se impostato su 0, i nomi sono nascosti.
Determina se il giocatore è in una teamspecifica.
Imposta la parte per concentrare la replicazione intorno.
Se Impostare, il giocatore respawnerà al SpawnLocation specificato.
Determina il Team con cui un giocatore è associato.
Determina il Team con cui un giocatore è associato.
Un numero identificativo unico assegnato a tutti gli account utente.
Metodi
Rimuove tutti gli accessori e altri oggetti dell'aspetto di un Giocatoredal suo Personaggio.
Restituisce la distanza tra la testa del personaggio e il punto Vector3 fornito. Restituisce 0 se il giocatore non ha personaggio.
Restituisce un dizionario che contiene informazioni che descrivono come il Player si unisce all'esperienza.
Restituisce il mouse utilizzato dal client.
Restituisce la latenza di rete isolata in secondi.
Restituisce se è caricato o meno l'aspetto del personaggio del Giocatore.
Restituisce se il giocatore è verificato con segnali concreti e del mondo reale.
Disconnetti forzatamente un giocatore dal Gioco, facendo in modo opzionale una Messaggio.
Fa in modo che il personaggio del Giocatorecammini nella direzione specificata fino a quando non si ferma, o viene interrotto dal giocatore (utilizzando i suoi Controlli).
Imposta l'età del Giocatore.
Imposta se il giocatore vede o meno la chat filtrata, invece della chat normale.
Restituisce un dizionario di amici online.
Restituisce il rango del Giocatorenel gruppo come un intero tra 0 e 255, dove 0 è un non membro e 255 è il proprietario del Gruppo.
Restituisce il ruolo del Giocatorenel gruppo come una Stringa, o "Guest" se il giocatore non è parte del Gruppo.
Controlla se un giocatore è un amico dell'utente con il Player.UserId .
Controlla se un giocatore è un membro di un gruppo con l'ID fornito.
Crea un nuovo personaggio per il Giocatore, rimuovendo quello vecchio. Inoltre, pulisce il Backpack e PlayerGui del Giocatore.
Genera un avatar in modo che abbia tutto l'equipaggiamento nel passato in HumanoidDescription .
Richieste che il server stream al giocatore intorno alla posizione specificata.
Eventi
Si attiva quando il personaggio di un Giocatoresi genera o si replica.
Si attiva quando l'aspetto completo di un Player.Character è stato inserito.
Spara proprio prima che il personaggio di un Giocatorevenga rimosso.
Si attiva quando un giocatore chatta in gioco usando la chat bar fornita da Roblox.
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 dal punto.
Fuori quando lo stato di teletrasporto di un giocatore cambia.
Proprietà
AccountAge
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
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
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
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
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
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.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
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
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
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.
DevComputerCameraMode
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
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
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
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
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
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
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
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
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
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
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
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
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
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:
- Workspace.StreamingEnabled che controlla se la riproduzione del contenuto è abilitata
- Workspace.StreamingIntegrityMode e Enum.StreamingIntegrityMode per maggiori dettagli su quando il gameplay è interrotto.
HasVerifiedBadge
La proprietà HasVerifiedBadge Player indica se il giocatore ha un Badge di verifica/Badge verificato.
HealthDisplayDistance
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
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
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
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
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
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
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
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
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:
- Discendente di Workspace
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
- Un Player sorgerà da SpawnLocations appartenente alla loro team. In alcuni casi potrebbe essere più semplice cambiare il Player.Team del Giocatoreinvece.
- Realizza la tua logica di spawn personalizzata utilizzando PVInstance:PivotTo() per spostare manualmente il Player.Character .
Campioni di codice
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
La proprietà Team è una riferimento a un oggetto Team all'interno del servizio Class.
Campioni di codice
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
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
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
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
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)
Metodi
ClearCharacterAppearance
La funzione ClearCharacterAppearance rimuove tutti Accessory , Shirt , Pants , 1> Class.CharacterMesh
Non rimuove t-shirts , maglie, o volti.
Restituzioni
Campioni di codice
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
La posizione in cui la distanza del Giocatoresi misura.
Restituzioni
La distanza in studs tra il giocatore e la posizione.
Campioni di codice
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>
Chiave | Tipo di valore | Descrizione |
---|
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
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
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
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 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
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
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
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
Il messaggio per mostrare l'utente dopo l'espulsione.
Restituzioni
Move
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
La direzione Vector3 che il giocatore dovrebbe Sposta.
Un booleto che indica se il giocatore dovrebbe muoversi rispetto alla Telecameradel Giocatore.
Restituzioni
Campioni di codice
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
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
L'età dell'account in giorni.
Restituzioni
Campioni di codice
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
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.LocalPlayerplayer: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
Un bool che indica se il giocatore vede o meno la chat filtrata.
Restituzioni
GetFriendsOnline
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>
Nome | Tipo | Descrizione |
---|
Parametri
Il numero massimo di amici online da Riportare.
Restituzioni
Un dizionario di amici online (vedi la tabella sopra).
Campioni di codice
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
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
Il groupId del Gruppospecificato.
Restituzioni
Il rango del Giocatorenel Gruppo.
Campioni di codice
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
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
Il groupId del Gruppospecificato.
Restituzioni
Il ruolo del Giocatorenel Gruppospecificato, o Guest se il giocatore non è un Membri.
Campioni di codice
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
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
Il Player.UserId del Giocatorespecificato.
Restituzioni
Un bool che indica se un giocatore è un amico dell'utente specificato.
Campioni di codice
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
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
Il groupId del Gruppospecificato.
Restituzioni
Un bool che indica se il giocatore è nel Gruppospecificato.
Campioni di codice
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
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):
- Player.Character impostazioni
- Player.CharacterAdded fuochi
- Player.Changed fuochi con un valore di "Character"
- L'aspetto del personaggio inizializza
- Player.CharacterAppearanceLoaded fuochi
- Character.Parent impostato su DataModel
- Il Character rig build, e il Character scale
- I personaggi si muovono nella posizione di spawn
- CaricaPersonaggio restituisce
Restituzioni
Campioni di codice
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
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:
- Sistema di Descrizione Umanoide, un articolo che spiega il sistema di descrizione umanoide in dettaglio maggiore e fornisce diversi esempi di script
Parametri
Un HumanoidDescription contenente tratti come parti del corpo/colori, scala del corpo, accessori, Abiti/Abbigliamentoe animazioni che saranno equipaggiati al personaggio caricato.
Restituzioni
Campioni di codice
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
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
Localizzazione mondiale in cui viene richiesto lo streaming.
Opzionaletimeout per la Richiesta.
Restituzioni
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
Un'istanza del personaggio che è spawnato/respawnato.
Campioni di codice
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
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
Il Class.Player.Character``Class.Model .
Campioni di codice
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
Un'istanza del personaggio che viene rimosso.
Campioni di codice
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
Il contenuto del messaggio che il giocatore ha digitato nella chat.
Deprecated. Per i messaggi di sottovento, questo era il giocatore che era il bersaglio intenzionale del Messaggiodi chat.
Campioni di codice
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
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
Il tempo in secondi che il giocatore è stato Inattivo, Inattiva, Inattivi.
Campioni di codice
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
Il nuovo Enum.TeleportState di Player .
Il nome del punto di rigenerazione a cui teletrasportarsi, se TeleportService:TeleportToSpawnByName() è stato utilizzato.
Campioni di codice
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)