Player

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Un objet Joueur est un client qui est actuellement connecté. Ces objets sont ajoutés au service Players lorsqu'un nouveau joueur se connecte, puis sont supprimés lorsqu'ils se déconnectent finalement du serveur.

La propriété Instance.Name reflète le nom d'utilisateur du joueur. Lors de l'enregistrement d'informations sur un joueur, vous devriez utiliser leur Player.UserId car il est possible qu'un joueur change son nom d'utilisateur.

Il existe plusieurs méthodes similaires dans le service Players pour travailler avec les objets Player. Utilisez-les par rapport à leurs méthodes respectives Instance.

  • Vous pouvez obtenir un tableau des objets actuels du joueur en utilisant Players:GetPlayers() ; encore une fois, utilisez ceci au lieu de Instance:GetChildren() .
  • Pour détecter l'ajout d'objets Player, il est recommandé d'utiliser l'événement Players.PlayerAdded (au lieu de Instance.ChildAdded sur le service Players).
  • De même, vous pouvez détecter la suppression d'objets Player en utilisant Players.PlayerRemoving, qui se déclenche juste avant que le Player soit supprimé (au lieu de Instance.ChildRemoved, qui se déclenche après). Ceci est important si vous enregistrez des informations sur le joueur qui pourraient être supprimées ou nettoyées lors de l'enlèvement.

Échantillons de code

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)

Résumé

Propriétés

Méthodes

  • Supprime tous les accessoires et autres objets d'apparence du personnage d'un joueur.

  • Renvoie la distance entre la tête du personnage et le point Vector3 donné. Renvoie 0 si le joueur n'a pas de personnage.

  • Retourne un dictionnaire contenant des informations décrivant comment le Player rejoint l'expérience.

  • Renvoie la souris utilisée par le client.

  • Écrire en parallèle

    Renvoie la latence réseau isolée en secondes.

  • Renvoie si oui ou non l'apparence du personnage du joueur a été chargée.

  • Renvoie si le joueur est vérifié avec des signaux concrets et réels.

  • Kick(message : string):void

    Déconnecte forcément un joueur du jeu, en optionnant éventuellement un message.

  • Move(walkDirection : Vector3,relativeToCamera : bool):void

    Faites marcher le personnage du joueur dans la direction donnée jusqu'à ce qu'il s'arrête, ou interrompu par le joueur (en utilisant ses contrôles).

  • SetAccountAge(accountAge : number):void
    Sécurité des plugins

    Définit l'âge du compte du joueur.

  • SetSuperSafeChat(value : bool):void
    Sécurité des plugins

    Définit si le joueur voit des chats filtrés ou non, plutôt que des chats normaux.

  • Rendement

    Renvoie un dictionnaire d'amis en ligne.

  • Rendement

    Renvoie le rang du joueur dans le groupe comme un nombre entre 0 et 255, où 0 est un non-membre et 255 est le propriétaire du groupe.

  • Rendement

    Renvoie le rôle du joueur dans le groupe comme une chaîne, ou « Guest » si le joueur n'est pas membre du groupe.

  • Rendement

    Vérifie si un joueur est un ami de l'utilisateur avec le Player.UserId donné.

  • IsInGroup(groupId : number):bool
    Rendement

    Vérifie si un joueur est un membre d'un groupe avec l'ID donné.

  • Rendement

    Crée un nouveau personnage pour le joueur, en supprimant l'ancien. Effectue également la suppression de l'ancien Backpack et PlayerGui du joueur.

  • Rendement

    Génère un avatar pour qu'il a tout équipé dans le passe dans HumanoidDescription .

  • RequestStreamAroundAsync(position : Vector3,timeOut : number):void
    Rendement

    Demandes que le serveur envoie au joueur autour de l'emplacement spécifié.

Évènements

Propriétés

AccountAge

Lecture uniquement
Non répliqué
Lecture parallèle

L'Âge du compte est une propriété Player qui décrit le temps qu'il y a écoulé avant que le compte d'un joueur soit enregistré dans les jours. Il est défini à l'aide de la fonction Player:SetAccountAge(), qui ne peut pas être accessible par les scripts.

Cette propriété est utile pour afficher conditionnellement le contenu des nouveaux joueurs Roblox, tels que les tutoriels.

Échantillons de code

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

Lecture parallèle

La propriété AutoJumpEnabled détermine si le Player.Character d'un Player à l'aide d'un appareil mobile sautera automatiquement lorsqu'il touchera un obstacle. Cela peut rendre les niveaux plus navigables lorsqu'on est sur un appareil mobile.

Lorsque le joueur rejoint le jeu, la valeur StarterPlayer.AutoJumpEnabled détermine l'état initial de cette propriété. Puis, cette propriété détermine la valeur de la propriété Humanoid.AutoJumpEnabled de la propriété Player.Character au moment de la régénération, apparition. En d'autres

Échantillons de code

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

Lecture parallèle

La valeur CameraMaxZoomDistance Player détermine la distance maximum en studs que la caméra peut avoir du personnage avec les caméras par défaut.

En d'autres termes, il contrôle la distance maximale que la caméra du joueur peut zoomer.

La valeur par défaut de cette propriété est définie par StarterPlayer.CameraMaxZoomDistance. Si cette valeur est définie à un niveau inférieur à Player.CameraMinZoomDistance, elle sera augmentée à CameraMinZoomDistance.

Échantillons de code

Setting Camera Zoom Distance

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

CameraMinZoomDistance

Lecture parallèle

La CameraMinZoonDistance Player propriété définit la distance minimum en studs que la caméra peut être du personnage avec les caméras par défaut.

En d'autres termes, il contrôle la distance minimale que la caméra du joueur peut zoomer.

La valeur par défaut de cette propriété est définie par StarterPlayer.CameraMinZoomDistance. Si cette valeur est définie à un niveau supérieur à Player.CameraMaxZoomDistance, elle est réduite à CameraMaxZoomDistance.

Échantillons de code

Setting Camera Zoom Distance

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

CameraMode

Lecture parallèle

La propriété CameraMode définie le mode de caméra du joueur, par défaut à la troisième personne.

Troisième personne

Dans le mode de troisième personne par défaut ( Enum.CameraMode.Classic ) le personnage peut être vu dans la caméra. Dans ce mode, le comportement par défaut est :

  • Les joueurs peuvent cliquer avec le bouton droit (souris), faire un clic avec le bouton de souris (souris), appuyer et faire glisser (touche mobile), utiliser le joystick secondaire (gamepad), ou appuyer sur les flèches de gauche à droite (clavier) pour faire pivoter la caméra autour de leur personnage.
  • Lorsqu'un joueur déplace son personnage, il fait face dans la direction de déplacement correspondante.
  • Les joueurs peuvent zoomer vers l'intérieur et vers l'extérieur librement, même à la première personne en full zoom.

Première personne

En mode première personne ( Enum.CameraMode.LockFirstPerson ) la caméra du joueur est zoomée tout le long de l'axe. À moins qu'il n'y ait une GUI visible avec la propriété GuiButton.Modal définie sur true , en déplaçant la souris, en faisant un clic droit sur mobile ou en utilisant le joystick secondaire sur un gamepad, la caméra tourner

Échantillons de code

Playing in First Person

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

CanLoadCharacterAppearance

Lecture parallèle

La propriété CanLoadCharacterAppearance Player détermine si l'apparence du personnage sera chargée lorsque le joueur apparaîtra. La valeur par défaut de cette propriété est définie par StarterPlayer.LoadPlayerAppearance.

Si vrai, le personnage chargera l'apparence du joueur correspondant à la classe du joueur Player.CharacterAppearanceId.

Si faux, le joueur apparaîtra avec une apparence par défaut - un modèle de personnage gris sans chapeaux, chemises, pantalons, etc.

Tenter de définir la propriété après la réapparition du personnage ne changera pas le personnage, vous devez appeler Player:LoadCharacter() pour charger la nouvelle apparence.

Échantillons de code

Disabling a Player's Appearance

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

Character

Lecture parallèle

La propriété Personnage contient une référence à un Model contenant un Humanoid , des parties du corps, des scripts et d'autres objets requis pour simuler l'av

Initialement, cette propriété est nil et elle est définie lorsque le personnage d'un joueur apparaît pour la première fois. Utilisez l'événement Player.CharacterAdded pour détecter lorsque un personnage apparaît correctement, et l'événement Player.CharacterRemoving pour détecter quand le personnage est sur le point de dispara

Notez que LocalScripts qui sont clonés à partir de StarterGui ou Class.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

Lecture parallèle

Cette propriété détermine l'ID de l'utilisateur du compte dont la réapparition du personnage est utilisée pour le jeu d'un joueur. Par défaut, cette propriété est la Player.Character, qui utilise l'avatar du joueur tel qu'il l'a créé sur le site Web de Roblox.

Changer cette propriété en ID d'utilisateur d'un autre compte fera apparaître le joueur avec l'apparence de cet compte (chapeaux, chemises, pantalons, etc).

Les jeux peuvent également activer ou non l'apparence du personnage d'un joueur en changeant la propriété StarterPlayer.LoadCharacterAppearance.

Échantillons de code

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

Lecture parallèle

Définit comment les scripts de caméra par défaut gèrent les objets entre la caméra et le sujet de caméra. Défini par StarterPlayer.DevCameraOcclusionMode et ne peut pas être modifié pour les joueurs individuels.

La valeur par défaut est Zoom (0). Voir Enum.DevCameraOcclusionMode pour une liste de modes disponibles.

Lecture parallèle

La propriété DevComputerCameraMode détermine la manière dont un joueur déplace sa caméra lorsqu'il utilise un appareil avec une souris et un clavier. Voir Enum.DevComputerCameraMovementMode pour une description de chaque mode de contrôle de caméra disponible. Cette propriété ne peut pas être définie en utilisant un LocalScript (il doit être défini sur le serveur en utilisant un Script).

La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevComputerCameraMovementMode.

Le mot « Computer » dans ce nom de propriété fait référence aux appareils non- TouchEnabled , non- GamepadEnabled .

Lorsqu'il est réglé sur Choix de l'utilisateur , un joueur peut choisir entre n'importe quel mode de contrôle (y compris Scriptable ) dans les paramètres du jeu Roblox. En général, il est une bonne idée d'autoriser les joueurs à choisir leur mode de contrôle pour maximiser l'accessibilité.

Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .

Cette propriété n'affecte pas les joueurs qui utilisent un appareil tactile. Voir Player.DevTouchCameraMode à la place.

Échantillons de code

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

Lecture parallèle

La propriété DevComputerMovementMode détermine la manière dont un joueur déplace son personnage lorsqu'il utilise un appareil avec une souris et un clavier. Voir Enum.DevComputerMovementMode pour une description de chaque mode de déplacement disponible. Cette propriété ne peut pas être définie en utilisant un LocalScript (il doit être défini sur le serveur en utilisant un Script ).

La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevComputerMovementMode.

Le mot « Computer » dans ce nom de propriété fait référence aux appareils non TouchEnabled.

Lorsqu'il est réglé sur Choix de l'utilisateur , un joueur peut choisir entre n'importe quel mode de contrôle (y compris Scriptable ) dans les paramètres du jeu Roblox. En général, il est une bonne idée d'autoriser les joueurs à choisir leur mode de contrôle pour maximiser l'accessibilité.

Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .

Cette propriété n'affecte pas les joueurs qui utilisent un appareil tactile. Voir Player.DevTouchMovementMode à la place.

Échantillons de code

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

Lecture parallèle

Cette propriété détermine si un joueur peut activer le verrouillage Mouse en appuyant sur Maj . Un joueur peut désactiver le verrouillage de la souris dans les paramètres de jeu de Roblox. Par défaut, cette propriété est réglée sur la valeur de StarterPlayer.EnableMouseLockOption. Cela peut être

Lorsque la verrouillage de la souris est activé, le curseur du joueur est verrouillé au centre de l'écran. En déplaçant la souris, vous orbitez la caméra autour du joueur character , et le personnage face à la même direction que la caméra camera . Il déplace également la vue de la caméra juste au-dessus de l'épaule du personnage du joueur.

Notez que les API de verrouillage de changement de vitesse sont en cours de marquer comme obsolète, il est donc recommandé d'utiliser UserInputService.MouseBehavior à la place pour verrouiller la souris.

Échantillons de code

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)
Lecture parallèle

La propriété DevTouchCameraMode détermine la manière dont un joueur déplace sa caméra lorsqu'il utilise un appareil TouchEnabled. Voir Enum.DevTouchCameraMovementMode pour une description de chaque mode de contrôle de caméra disponible. Cette propriété ne peut pas être définie en utilisant un LocalScript (

La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevTouchCameraMovementMode.

Lorsqu'il est réglé sur Choix de l'utilisateur , un joueur peut choisir entre n'importe quel mode de contrôle (y compris Scriptable ) dans les paramètres du jeu Roblox. En général, il est une bonne idée d'autoriser les joueurs à choisir leur mode de contrôle pour maximiser l'accessibilité.

Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .

Cette propriété n'affecte pas les joueurs qui ne utilisent pas un appareil de touche. Voir Player.DevComputerCameraMovementMode à la place.

Échantillons de code

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

Lecture parallèle

La propriété DevTouchMovementMode détermine la manière dont un joueur déplace son personnage lorsqu'il utilise un appareil TouchEnabled. Voir Enum.DevTouchMovementMode pour une description de chaque mode de déplacement disponible. Cette propriété ne peut pas être définie en utilisant un LocalScript (il doit être

La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevTouchMovementMode.

Lorsqu'il est réglé sur Choix de l'utilisateur , un joueur peut choisir entre n'importe quel mode de contrôle (y compris Scriptable ) dans les paramètres du jeu Roblox. En général, il est une bonne idée d'autoriser les joueurs à choisir leur mode de contrôle pour maximiser l'accessibilité.

Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .

Cette propriété n'affecte pas les joueurs qui ne utilisent pas un appareil de touche. Voir Player.DevComputerMovementMode à la place.

Échantillons de code

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

Lecture parallèle

La DisplayName est une propriété de Player qui contient le nom d'affichage de l'utilisateur associé à l'objet Player. Contrairement aux noms d'utilisateur, les noms d'affichage sont des noms non uniques que le joueur affiche à d'autres. Si l'utilisateur Roblox n'a pas choisi, la propriété lira la même chose que la propriété <

Remarque :

  • Puisque les noms d'affichage ne sont pas uniques, il est possible que deux joueurs dans une seule instance aient des noms identiques. Si vous avez besoin d'un identifiant unique au niveau mondial pour un joueur, utilisez Player.UserId (qui est statique) ou Player.Name (qui est le nom actuel) au lieu de cela.
  • Les personnages générés avec Player.LoadCharacter ou par le moteur Roblox auront leur propriété Humanoid.DisplayName attribuée à la propriété Player.DisplayName.
  • Les noms peuvent avoir des caractères inexistants dans la chaîne. Voir UTF-8 pour plus d'informations sur le fonctionnement des chaînes avec des caractères inexistants.

FollowUserId

Lecture uniquement
Non répliqué
Lecture parallèle

Le FollowUserId est une propriété Player qui contient le Player.UserId de l'utilisateur que le joueur a suivi dans le jeu. Si le joueur n'a pas suivi personne dans le jeu, cette propriété sera 0. Cette propriété est utile pour avertir les joueurs qui ont été suivis par un autre joueur dans le jeu.

Vous pouvez obtenir le nom du joueur suivant en utilisant ce Players:GetNameFromUserIdAsync() fonction.

Échantillons de code

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

Lecture parallèle
Sécurité inaccessible

La propriété GameplayPaused indique si le joueur est actuellement dans un état de pause dans un lieu avec StreamingEnabled activé. Elle est configurée sur le client, mais répliquée sur le serveur. Pour déterminer le statut de pause, vous pouvez utiliser cette propriété.

Voir aussi :

HasVerifiedBadge

Lecture parallèle

La propriété HasVerifiedBadge Player indique si le joueur a un Vérification badge/ Badge vérifié.

HealthDisplayDistance

Lecture parallèle

La propriété HealthDisplayDistance Player détermine la distance en studs à laquelle ce joueur verra d'autres barres de santé Humanoid. Si elle est réglée sur 0, les barres de santé ne seront pas affichées. Cette propriété est réglée sur StarterPlayer.HealthDisplayDistance par défaut.

Si la barre de santé d'un humanoid est visible, vous pouvez définir le type d'affichage en utilisant Humanoid.DisplayDistanceType .

Échantillons de code

Hiding Player Health and Names

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

LocaleId

Caché
Lecture uniquement
Non répliqué
Lecture parallèle

La propriété LocaleId Player montre l'identifiant du lieu que le joueur local a défini pour son compte Roblox. Il contient une chaîne contenant le code de deux lettres (par exemple, «en-us») pour le lieu.

Ceci peut être utilisé pour déterminer la démographie géographique de la base de joueurs de votre jeu, et est également la langue utilisée pour la localisation automatique (voir GuiBase2d.AutoLocalize) du contenu dans l'expérience. Cette propriété permet d'accéder à la langue du joueur du serveur.

Voir aussi LocalizationService.RobloxLocaleId, l'identifiant de la langue utilisée pour localiser le contenu interne. Ce sera une valeur différente lorsque Roblox ne prendra pas encore en charge localement le langage de l'joueur.

Échantillons de code

Checking a Player's Locale

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

MembershipType

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété ne peut être lue que pour déterminer l'adhésion (elle ne peut pas être définie pour un autre taperd'adhésion). Elle contient un Enum.MembershipType ensemble de taperd'adhésion du compte.

Échantillons de code

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

Lecture parallèle

La propriété Nom de l'écran StarterPlayer détermine la distance en studs à laquelle ce joueur verra d'autres noms Humanoid. Si la propriété est réglée sur 0, les noms sont cachés. Cette propriété est réglée sur StarterPlayer.NameDisplayDistance par défaut.

Si la barre de santé d'un humanoid est visible, vous pouvez définir le type d'affichage en utilisant Humanoid.DisplayDistanceType .

Échantillons de code

Hiding Player Health and Names

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

Neutral

Lecture parallèle

La propriété Neutre détermine si le joueur est dans une équipe spécifique.

  • Lorsque vrai, le joueur n'est pas dans une équipe spécifique. Cela signifie également que la propriété Player.Team sera nul et que la couleur Player.TeamColor sera blanche.
  • Lorsque faux , le joueur est dans une équipe spécifique. La propriété Player.Team correspondra à la Team que le joueur est sur, ainsi que la couleur de l'équipe 1> Class.Player.TeamColor1>.

Échantillons de code

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

Lecture parallèle

La propriété ReplicationFocus Player définit la partie pour se concentrer sur la réplication autour d'un joueur. Différents systèmes Roblox qui communiquent via le réseau (tels que la physique, le streaming, etc) répliquent à différents taux en fonction de la proximité des objets du point de vue de la réplication.

Lorsque cette propriété est nulle, elle revient à son comportement par défaut qui est de traiter le personnage du joueur local comme le PrimaryPart de la réplication comme le point focal de réplication.

Cette propriété ne doit être définie que sur le serveur avec un Script, pas un LocalScript. Notez que cette propriété ne modifie pas ou ne met à jour la propriété réseau de parties.

Échantillons de code

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

Lecture parallèle

Si configurer, le joueur réapparaîtra à la valeur donnée SpawnLocation. Cette propriété ne peut être définie que via Lua et doit contenir une référence à un SpawnLocation valide, qui doit répondre aux critères suivants :

Si RespawnLocation n'est pas défini comme un SpawnLocation valide, la logique de génération par défaut s'appliquera. Pour plus d'informations à ce sujet, voir la page pour SpawnLocation.

Alternatives à RespawnLocation

Échantillons de code

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 répliqué
Lecture parallèle

La propriété de l'équipe est une référence à un objet Team dans le service Class.

Échantillons de code

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

Lecture parallèle

La propriété TeamColor détermine avec quelle équipe un Joueur est associé en fonction de la valeur de Team.TeamColor de l'équipe. Changer cette propriété changera Player.Team selon le même BrickColor pour leur 1> Class.Team.TeamColor1> . Si aucun objet d'équ

Il est souvent une meilleure idée de définir Player.Team sur le respectif Team au lieu d'utiliser cette propriété. En définissant cette propriété, vous pouvez souvent entraîner la répétition de la même valeur BrickColor pour un certain équipe dans de nombreux scripts ; c'est quelque chose que vous voulez éviter lorsque vous adhérez au principe « Ne vous répétez pas » (DRY).

Échantillons de code

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

Lecture parallèle

L'UserId est une propriété Player qui contient un nombre entier lire seulement qui unique et cohérent identifie chaque compte d'utilisateur sur Roblox. Contrairement à la Instance.Name d'un Player, qui peut changer selon le nom d'utilisateur actuel de l'utilisateur, ce que ce value ne changera jamais pour le même compte.

Cette propriété est essentielle lors de l'enregistrement/du chargement des données du joueur à l'aide de GlobalDataStores. Utilisez le mot de clé du joueur comme clé de la boutique de données pour que chaque joueur ait une clé unique.

Échantillons de code

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)

Méthodes

ClearCharacterAppearance

void

La fonction ClearCharacterAppearance supprime tous les Accessory, Shirt, Pants, 1> Class.CharacterMesh1> et <

Il ne supprime pas t-shirts , les maillages de tête ou les visages.


Retours

void

Échantillons de code

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 fonction DistanceFromCharacter Player renvoie la distance entre la tête du personnage et le point Vector3 donné. Elle renvoie 0 si le joueur n'a pas de Player.Character.

Ceci est utile pour déterminer la distance entre un joueur et un autre objet ou lieu dans le jeu.

Si vous souhaitez déterminer la distance entre deux instances ou positions non joueurs, vous pouvez utiliser le suivre:


local distance = (position1 - position2).magnitude

Paramètres

point: Vector3

L'emplacement à partir duquel la distance du joueur est mesurée.


Retours

La distance entre le joueur et l'emplacement.

Échantillons de code

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

Renvoie un dictionnaire contenant des informations décrivant comment le Joueur rejoint l'expérience. Le dictionnaire contient l'un des champs suivants :


<tbody>
<tr>
<th>Jeu de source</th>
<td>number</td>
<td>Le <code>Class.DataModel.GameId</code> de l'expérience que le <code>Joueur</code> a téléportée. Ne s'applique que si le joueur se téléporte dans l'expérience actuelle et si un serveur appelle la fonction de téléportation.</td>
</tr>
<tr>
<th>ID de lieu source</th>
<td>number</td>
<td>Le <code>Class.DataModel.PlaceId</code> du lieu où le <code>Joueur</code> se téléporte. Ne s'y présente que si le joueur se téléporte dans le lieu actuel et qu'un serveur appelle la fonction de téléportation.</td>
</tr>
<tr>
<th>Joueur par référence</th>
<td>number</td>
<td>Le <code>Class.Player.UserId</code> du joueur qui a invité le joueur actuel dans l'expérience. Utilisez ces données pour identifier la logique de récompense de référence et déclencher la logique de récompense.</td>
</tr>
<tr>
<th>Membres</th>
<td>matrice</td>
<td>Une tableau contenant les <code>Class.Player.UserId</code> numéros des utilisateurs téléportés avec le <code>Player</code> . Présent uniquement si le joueur s'est téléporté comme une partie d'un groupe.</td>
</tr>
<tr>
<th>Téléportation des données</th>
<td>variante</td>
<td>Réflète le <code>teleportData</code> spécifié dans le téléport original. Utile pour partager des informations entre les serveurs que le joueur téléporte. Ne s'applique qu'à la version actuelle et qu'un serveur appelle la fonction de téléportation.</td>
</tr>
<tr>
<th>Données de lancement</th>
<td>chaîne</td>
<td>Une chaîne de texte ou de JSON codée en clair qui contient les données de lancement spécifiées dans une URL ou un Class.ExperienceInviteOptions.LaunchData .</td>
</tr>
</tbody>
CléType de valeurDescription

Obtenez JoinData et TeleportData

Si un serveur initialise la téléportation du joueur, le dictionnaire que ce méthode renvoie inclut les données de téléportation du joueur. La méthode Player:GetJoinData() ne peut être utilisée que pour récupérer les données sur le serveur. Pour récupérer les données sur le client, utilisez TeleportService:GetLocalPlayerTeleportData().

Contrairement à TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() ne fournit que des données de téléportation qui répondent aux critères de sécurité suivants :

  • Il est garanti d'avoir été envoyé par un serveur Roblox dans les 48 heures passées.
  • Il est garanti d'avoir été envoyé avec ce Player .
  • Le SourcePlaceId et le SourceGameId sont garantis d'être le lieu et l'univers d'où les données ont été envoyées. Cela signifie que vous pouvez vérifier que les données de téléportation viennent d'un emplacementapprouvé.

Puisque ces données sont transmises par le client, elles peuvent toujours être abusées par un exploiter. Les données sensibles telles que la monnaie du joueur doivent être transmises via une solution sécurisée comme Memory Stores.


Retours

Un dictionnaire contenant les valeurs PlaceId et UserId (voir table dans la description).

Échantillons de code

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 fonction GetMouse Player renvoie la valeur Mouse utilisée par le client. L'instance de la souris du joueur peut être utilisée pour suivre l'entrée de la souris par le client, y compris les clics de bouton gauche et droite et les mouvements et les emplacements.

Le service UserInputService fournit des fonctions et des événements supplémentaires pour suivre l'entrée de l'utilisateur - spécialement pour les appareils qui ne utilisent pas de souris.

Remarque :

  • Cet élément doit être utilisé dans un LocalScript pour fonctionner comme prévu en connecté.
  • Après une mise à jour en juillet 2014, l'icône de la souris peut désormais être définie avec cette méthode.

Retours

Échantillons de code

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

Écrire en parallèle

GetNetworkPing renvoie la latence réseau isolée du Player dans secondes. «Ping» est une mesure du temps pris pour envoyer les données du client au serveur, puis de retour. Il n' implique pas la déesarcznalisation des données ou le traitement.

Pour les scripts côté client LocalScripts, cette fonction ne peut être appelée que sur le Players.LocalPlayer. Cette fonction est utile pour identifier et déboguer les problèmes qui se produisent dans les scénarios de haute latence. Elle est également utile pour masquer la latence, telle que l'ajustement de la vitesse de lancer des animations pour les projectiles.


Retours

HasAppearanceLoaded

La fonction HasAppearanceLoaded Player renvoie si oui ou non l'apparence du joueur Player.Character a été chargée.

L'apparence d'un joueur inclut des articles tels que le Shirt , le Pants et le Accessories .

Ceci est utile pour déterminer si l'apparence d'un joueur s'est chargée après qu'il se soit d'abord joint à la jeu, ce qui peut être suivi en utilisant l'événement Players.PlayerAdded.


Retours

Un booléen indiquant si oui ou non l'apparence du personnage du joueur a été chargée.

Échantillons de code

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

Renvoie une valeur booléenne indiquant le statut de vérification de ce joueur. Lorsque cela est vrai, le joueur est vérifié. La vérification inclut, mais n'est pas limitée, la non-vérification du numéro de téléphone non-VOIP ou de l'identifiant gouvernemental.

Lors de l'implémentation de IsVerified , exercez la prudence pour vous assurer que l'implémentation ne bloque pas inadvertiment tous les utilisateurs non vérifiés.

Notez que la méthode ne peut être appelée que sur le serveur d'arrière-plan. L'appeler du côté du client entraîne une erreur. De plus, cette méthode renvoie toujours false dans Studio.


Retours

Un booléen indiquant si le joueur est vérifié.

Échantillons de code

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

La méthode Kick() permet à une expérience de gracieusement déconnecter un client et d'optionner un message à l'utilisateur déconnecté. Ceci est utile pour modérer les utilisateurs abusifs. Vous devriez seulement permettre aux utilisateurs spécifiques que vous confiez pour déclencher cette méthode sur d'autres utilisateurs.

L'appel de cette méthode sur un Player sans argument déconnecte l'utilisateur du serveur et fournit un message d'avertissement par défaut. L'appel de cette méthode sur un Player avec une chaîne en tant que premier argument remplace le message d'avertissement par le message fourni.

Lors de l'utilisation de cette méthode à partir d'un LocalScript, seul le client de l'utilisateur local peut être expulsé.

Paramètres

message: string

Le message à afficher à l'utilisateur lors du tir.

Valeur par défaut : ""

Retours

void

Move

void

La fonction Move Player provoque la marche du personnage du joueur dans la direction donnée jusqu'à ce qu'il s'arrête, ou interrompu par le joueur (en utilisant leurs contrôles).

Ceci est utile lorsque vous scriptez NPC Humanoids qui se déplace autour d'une carte - mais n'est pas contrôlé par l'entrée d'un joueur réel.

Remarquez que le deuxième argument de la fonction indique si le Vector3 fourni devrait déplacer le joueur par rapport aux coordonnées mondiales ( non ) ou le joueur's Camera ( 1> oui1>).

Paramètres

walkDirection: Vector3

La direction Vector3 que le joueur devrait mouvement.

relativeToCamera: bool

Un booléen indiquant si le joueur devrait se déplacer par rapport à la caméra du joueur.

Valeur par défaut : false

Retours

void

Échantillons de code

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
Sécurité des plugins

La fonction SetAccountAge définit l'âge du joueur dans les jours.

Il est utilisé pour définir la propriété Player qui décrit la date à laquelle le compte d'un joueur a été enregistré dans les jours.

Ceci ne définira pas l'âge du joueur sur le compte, mais l'âge du compte lui-même par rapport à la création de celui-ci.

Paramètres

accountAge: number

L'âge du compte en jours.


Retours

void

Échantillons de code

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
Sécurité des plugins

Cette méthode détermine si oui ou non le joueur voit le chat filtré par TextService:FilterStringAsync() plutôt que les chats normaux.


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

Que le filtre de chat soit activé ou non, le chat doit être filtré par TextService lors de la broadcast vers d'autres joueurs ou sur l'écran du joueur lui-même. TextService:FilterStringAsync() renvoie un objet TextFilterResult qui peut être filtré différemment selon l'utilisation prévue du message.

Paramètres

value: bool

Un booléen indiquant si oui ou non le joueur voit le chat filtré.


Retours

void

GetFriendsOnline

Rendement

Cette fonction renvoie un tableau de dictionnaire d'amis en ligne, limité par la valeur maxFriends. La fonction utilise un cache de 30 secondes.

Dans le matricerenvoyé, certains champs ne sont présents que pour certains types d'emplacement. Par exemple, PlaceId ne sera pas présent lorsque Type d'emplacement est 0 (site Web mobile).


<tbody>
<tr>
<td><b>VisiteurId</b></td>
<td>number</td>
<td>Le <code>Class.Player.UserId</code> de l'ami.</td>
</tr>
<tr>
<td><b>Nom d'utilisateur</b></td>
<td>chaîne</td>
<td>Le nom d'utilisateur de l'ami.</td>
</tr>
<tr>
<td><b>Nom d'affichage</b></td>
<td>chaîne</td>
<td>Le <code>Nom de classe.Player.DisplayName</code> de l'ami.</td>
</tr>
<tr>
<td><b>Dernier en ligne</b></td>
<td>chaîne</td>
<td>Lorsque l'ami a été en connectépour la dernière fois.</td>
</tr>
<tr>
<td><b>est en ligne</b></td>
<td>boîtier</td>
<td>Si l'ami est actuellement en connecté.</td>
</tr>
<tr>
<td><b>Dernière emplacement</b></td>
<td>chaîne</td>
<td>Le nom de l'emplacement actuel de l'ami.</td>
</tr>
<tr>
<td><b>PlaceId</b></td>
<td>number</td>
<td>L'identifiant de lieu de l'emplacement dernier de l'ami.</td>
</tr>
<tr>
<td><b>GameId.</b></td>
<td>chaîne</td>
<td>Le <code>modèle de données/JobId</code> de l'emplacement de l'ami.</td>
</tr>
<tr>
<td><b>Type d'emplacement</b></td>
<td>number</td>
<td>
Le type d'emplacement du dernier emplacement de l'ami :
<table>
<tbody>
</tbody>
0> 1> 2> 3> 4> 5> 6> 7> 8> 9> 0> 1> 2> 3> 4> 5> 6> 7> 8> 9> 0>
</table>
</td>
</tr>
</tbody>
NomTypeDescription

Paramètres

maxFriends: number

Nombre max d'amis en ligne à renvoyer.

Valeur par défaut : 200

Retours

Un dictionnaire d'amis en ligne (voir le tableau ci-dessus).

Échantillons de code

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

Rendement

La fonction GetRankInGroup Player renvoie le rang du joueur dans le groupe en tant qu'intégral entre 0 et 255, où 0 est un non-membre et 255 est le propriétaire du groupe.

En utilisant ceci dans un Script , au lieu d'un LocalScript , vous ne recevrez pas les informations les plus récentes. Si un joueur quitte un groupe pendant qu'il est dans le jeu, GetRankInGroup pensera toujours qu'il est dans ce groupe jusqu'à ce qu'il quitter. Cependant, cela ne se produit pas lors de l'utilisation d'un LocalScript.

Ceci est parce que la méthode stocke les résultats, de sorte que plusieurs appels de GetRankInGroup sur le même joueur avec le même ID de groupe produiront le même résultat que lorsque la méthode a été initialement appelée avec le même ID de groupe. Le comportement de cachage est sur une base per-peer : un serveur ne partage pas la même cache qu'un client.

Paramètres

groupId: number

Le groupId du groupe spécifié.


Retours

Le rang du joueur dans le groupe.

Échantillons de code

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

Rendement

La fonction GetRoleInGroup Player renvoie le rôle du joueur dans le groupe comme une chaîne, ou Invité si le joueur n'est pas membre du groupe.

En utilisant ceci dans un Script, au lieu d'un LocalScript, vous ne recevrez pas les informations les plus récentes. Si un joueur quitte un groupe pendant qu'il est dans le jeu, GetRoleInGroup pense toujours qu'il est dans ce groupe jusqu'à ce qu'il quitter. Cependant, cela ne se produit pas lorsque vous utilisez un LocalScript.

Ceci est parce que la méthode stocke les résultats, de sorte que plusieurs appels de GetRoleInGroup sur le même joueur avec le même ID de groupe produiront le même résultat que lorsque la méthode a été initialement appelée avec le même ID de groupe. Le comportement de cachage est sur une base per-peer : un serveur ne partage pas la même cache qu'un client.

Paramètres

groupId: number

Le groupId du groupe spécifié.


Retours

Le rôle du joueur dans le groupe spécifié, ou invité si le joueur n'est pas un membre.

Échantillons de code

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

Rendement

Cette fonction envoie une demande sur le site Web de Roblox pour savoir si un joueur est un ami d'un autre utilisateur, en fonction de l'identifiant de Player.UserId de cet utilisateur. Cette fonction cache les résultats afin que plusieurs appels de la fonction sur le même joueur avec le même Player.UserId ne puissent pas produire le resultatsle plus récent. Cela ne se produit pas lorsque vous

Paramètres

userId: number

Le Player.UserId du joueur spécifié.


Retours

Un booléen indiquant si un joueur est un ami de l'utilisateur spécifié.

Échantillons de code

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

Rendement

La fonction IsInGroup envoie une demande sur le site Web de Roblox pour savoir si un joueur est un membre d'un groupe, en fonction de l'ID de ce groupe.

En utilisant ceci dans un Script, au lieu d'un LocalScript, vous ne recevrez pas les informations les plus récentes. Si un joueur quitte un groupe pendant qu'il est dans le jeu, IsInGroup pense toujours qu'il est dans ce groupe jusqu'à ce qu'il quitter. Cependant, cela ne se produit pas lorsque vous utilisez un Class.Script.

Ceci est parce que la méthode stocke les résultats, donc plusieurs appels d' IsInGroup sur le même joueur avec le même ID de groupe produiront le même résultat que lorsque la méthode a été appelée pour la première fois avec le même ID de groupe. Le comportement de cachage est sur une base per-peer : un serveur ne partage pas la même cache qu'un client.

Paramètres

groupId: number

Le groupId du groupe spécifié.


Retours

Un booléen indiquant si le joueur est dans le groupe spécifié.

Échantillons de code

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
Rendement

La fonction LoadCharacter Player crée un nouveau personnage pour le joueur, en supprimant l'ancien. Il supprime également le Backpack et PlayerGui du joueur.

Ceci est utile dans les cas où vous voulez recharger le personnage sans tuer le joueur, comme lorsque vous voulez charger une nouvelle apparence de personnage après avoir changé le Player.CharacterAppearance du joueur.

Remarque : La fonction est similaire à Player:LoadCharacterBlocking() , mais la demande est traitée en asynchrone au lieu de synchronisation. Cela signifie que d'autres tâches pourront continuer pendant que le personnage est en cours de chargement, y compris le rendu du jeu et toutes les autres tâches. De plus, cette fonction peut être utilisée dans un script, tandis que LoadCharacterBlocking ne peut pas.

Après avoir appelé LoadCharacter pour un joueur individuel, il n'est pas recommandé de l'appeler à nouveau pour le même joueur jusqu'à ce que l'événement Player.CharacterAppearanceLoaded de ce joueur ait déclenché.

Charakter chargement de l'événement

L'appel de Player:LoadCharacter() avec un Avatar R15 lance les événements dans le suivant ordre (Remarque : l'ordre R6 est différent) :

  1. Player.Character ensembles
  2. Player.CharacterAdded feux
  3. Player.Changed tire avec une valeur de « Character »
  4. L'apparence du personnage se初始化
  5. Player.CharacterAppearanceLoaded feux
  6. Character.Parent défini sur le DataModel
  7. La rigure de caractère construit et la hauteur de caractère
  8. Les personnages se déplacent à l'emplacement d'apparition
  9. Chargement de personnage renvoyé

Retours

void

Échantillons de code

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
Rendement

Cette fonction génère un avatar pour qu'il a tout équipé dans le passe dans HumanoidDescription .

Après avoir appelé LoadCharacterWithHumanoidDescription pour un joueur individuel, il n'est pas recommandé d'appeler la fonction à nouveau pour le même joueur jusqu'à ce que l'événement Player.CharacterAppearanceLoaded du joueur ait déclenché.

Voir aussi :

Paramètres

humanoidDescription: HumanoidDescription

Une description de HumanoidDescription contenant des traits comme des parties du corps/des couleurs, l'échelle du corps, les accessoires, les vêtements et les animations qui seront équipés sur le personnage chargé.


Retours

void

Échantillons de code

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
Rendement

Pour les expériences où le streaming d'instance est activé, les demandes que le serveur envoie aux régions du joueur (les parties et le terrain) autour de l'emplacement spécifié X, Y, 2>Z2> sont en cours de lecture. Il est

L'effet de ce appel sera temporaire et il n'y a pas de garanties que ce qui sera diffusé sera disponible autour de l'emplacement spécifié. Les limites de mémoire du client et les conditions réseau peuvent affecter ce qui sera disponible sur le client.

Prudence d'utilisation

Demander le streaming autour d'une zone n'est pas une garantie que le contenu soit présent lorsque la demande est terminée, car le streaming est affecté par la bande passante du client, les limites de mémoire et d'autres facteurs.

Paramètres

position: Vector3

Emplacement mondial où le streaming est requis.

timeOut: number

Délai d'expiration facultatif pour la demande.

Valeur par défaut : 0

Retours

void

Évènements

CharacterAdded

L'événement CharacterAdded se déclenche lorsqu'un personnage apparaît (ou réapparaît) d'un joueur (ou si le personnage est déjà parenté à la valeur non Player.Character de Class.Player.Character). Cet événement se déclenche peu après avoir défini nil sur une valeur non 2> nil2> ou d'avoir appelé 5>

Ceci peut être utilisé avec l'événement Player.CharacterRemoving, qui se déclenche juste avant que le personnage d'un joueur soit sur le point d'être supprimé, généralement après la mort. En tant que tel, les deux événements peuvent potentiellement se déclencher de nombreuses fois lorsque les joueurs rejoignent ou quittent le jeu, puis réapparaissent dans un emplacement.

Remarquez que le Humanoid et ses parties du corps par défaut (tête, torse et membres) existent lorsque cet événement se déclenche, mais les articles de vêtements comme Class.Hat|H

Paramètres

character: Model

Une instance du personnage qui s'est généré/est réapparu.


Échantillons de code

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

Cet événement se déclenche lorsque la présentation complète d'un Player.Character a été insérée.

Un Player.Character généralement a une gamme d'objets modifiant son apparence, y compris Accoutrements , Shirts , 1> Class.Pants1> et 4> Class.CharacterMesh|CharacterM

L'un des usages pour cet événement est de s'assurer que tous les accessoires ont été chargés avant de les détruire. Voir ci-dessous pour un exemple de cela.

Paramètres

character: Model

Le Class.Player.Character``Class.Model .


Échantillons de code

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'événement CharacterRemoving se déclenche juste avant que le personnage d'un joueur soit supprimé, comme lorsque le joueur réapparaît.

Cet événement peut être utilisé avec l'événement Player.CharacterAdded, qui se déclenche lorsqu'un personnage de joueur apparaît ou réapparaît. Par instance, si vous souhaitez imprimer un message chaque fois qu'un joueur apparaît et meurt :


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)

Cet événement n'est intéressé que par le Character d'un Player . Si vous avez plutôt besoin de suivre quand un joueur rejoint/quitte le jeu, utilisez les événements Players.PlayerAdded et 1> Class.Players.PlayerRemoving1>.

Paramètres

character: Model

Une instance du personnage qui est en cours de suppression.


Échantillons de code

Player.CharacterRemoving

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

Chatted

L'événement Chatted se déclenche lorsqu'un Player écrit un message et appuie sur entrée dans la barre de discussion fournie par Roblox. Cela est fait en utilisant quelques liens Lua par le script de chat par défaut. Vous pouvez empêcher les joueurs de discuter en utilisant StarterGui:SetCoreGuiEnabled() et en désactivant le chat Enum.CoreGuiType.

Commandes de chat

En utilisant cet événement et quelques fonctions de manipulation de chaîne comme string.sub() et string.lower(), il est possible de créer des commandes de chat, même avec des arguments comme les noms des joueurs. Habituel

Filtrage

Le texte du message est tiré avec cet événement est non filtré . Si vous affichez l'entrée du joueur comme un chat à d'autres joueurs dans n'importe quelle forme, il doit être filtré en utilisant Chat:FilterStringAsync() . Gardez ceci à l'esprit lors de la création de vos propres systèmes de chat; si votre jeu ne filtre pas correctement le chat, il peut prendre une action de modération contre lui.

Paramètres

message: string

Le contenu du message que le joueur a saisi dans le chat.

recipient: Player

Désactivé. Pour les messages de chat, c'était le joueur qui était la cible prévue du message de chat.


Échantillons de code

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

Cet événement se déclenche environ deux minutes après que le moteur de jeu a classé le player comme inactif. Le temps est le nombre de secondes qui ont écoulé depuis ce moment. L'événement continue de s'exécuter toutes les 30 secondes pendant que le joueur reste inactif.

Cet événement ne se produit que dans les scripts du client, pas dans les scripts du serveur ; utilisez un RemoteEvent pour informer le serveur des joueurs inactifs.

Roblox se déconnecte automatiquement des joueurs qui sont restés inactifs pendant au moins 20 minutes, ce qui rend cet événement utile pour avertir les joueurs qu'ils seront déconnectés bientôt, déconnectant les joueurs avant ces 20 minutes ou d'autres fonctionnalités loin du clavier (AFK).

Pour suivre avec quelle fréquence se survernirautomatiquement, essayez de corriger cet événement avec des occurrences de Players.PlayerRemoving.

Paramètres

time: number

Le temps en secondes qu'a passé le joueur inactif.


Échantillons de code

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

Activé lorsque l'état de téléportation d'un joueur change. Cet événement est utile pour détecter si une téléportation a été réussie.

Qu'est-ce que TeleportState ?

Lorsqu'une demande de téléportation est faite à l'aide de TeleportService, il y a une série de étapes avant que le Player soit téléporté. Le niveau actuel est représenté par la valeur Enum.TeleportState qui est donnée par OnTeleport. Voir ci-dessous pour un exemple pratique de cela.

Paramètres

teleportState: Enum.TeleportState

Le nouveau Enum.TeleportState``Class.Player .

placeId: number

L'identifiant du lieu auquel le Player est en train d'être téléporté.

spawnName: string

Le nom du lieu d'apparition vers lequel se téléporter, si TeleportService:TeleportToSpawnByName() a été utilisé.


Échantillons de code

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)