Usuarios y Jugadores

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Cuando un usuario se une a una experiencia, Roblox lo representa como un Jugador en el aplicación de modeladode datos. El objeto Player contiene información sobre el usuario que es universal en todas las experiencias, como su nombre de usuario, lista de amigos, personaje de avatar guardado y introducirde membresía de Roblox, así como propiedades, métodos y eventos que afectan el ciclo de vida del usuario entre unirse y salir de su experiencia.

El Players servicio contiene todas las Player instancias en una experiencia. Cada Player objeto representa a un usuario en la experiencia, y tiene cuatro contenedores importantes que puede usar para personalizar la experiencia de un usuario: Backpack , StarterGear , PlayerGui , y PlayerScripts .

Ciclo de vida

Los scripts del lado del cliente y del lado del servidor se pueden conectar a los eventos Players.PlayerAdded y Players.PlayerRemoved para realizar acciones en respuesta al ciclo de vida de un objeto Player. También se pueden conectar a los eventos Player.CharacterAdded , Player.CharacterRemoving y Humanoid.Died para realizar acciones relacionadas con el juego cuando el personaje aparece, desaparece y muere.

Usa Scripts para acceder a servicios relacionados con el servidor, como un almacén de datos para recuperar y guardar datos cuando un usuario se une o sale. Usa LocalScripts si el cliente necesita crear y eliminar instancias de juego vinculadas al nuevo usuario, como una pantalla GUI para las estadísticas del usuario en una tabla de clasificación personalizada.

Usuario Uniéndose

Cuando un cliente se conecta a una experiencia, su Player objeto se asocia al Players servicio. El Players.PlayerAdded representa a los usuarios que se unen a la experiencia. Algunos casos de uso incluyen cargar datos de usuario, asignar equipos y cambiar la ropa del personaje de un usuario. El evento Players.PlayerAdded pasa el objeto Player del usuario que se une, que puede usar al llamar otras funciones, como el almacén de datos y RemoteEvent objetos.

Cargando Datos de Usuario al Unirse

Para cargar los datos de un usuario cuando se unan a una experiencia, use el evento Players.PlayerAdded en un Script . El siguiente ejemplo Script escucha el evento e intenta recuperar los datos de un usuario usando su ID de usuario como clave de almacenamiento de datos. Después de recuperar con éxito los datos del usuario, puede usarlo para cargar el progreso y las estadísticas del usuario.


local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerAdded:Connect(function(player)
local userId = player.UserId
-- Leer clave de almacenamiento de datos
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- Realiza más acciones con los datos actuales
end)

Usuario Saliendo

Cuando un cliente se desconecta de una experiencia, el servidor destruye su objeto asociado Player del servicio Players. El evento Players.PlayerRemoving representa a los usuarios que abandonan la experiencia. Algunos casos de uso incluyen guardar datos de usuarios, eliminar sus estadísticas de un marcador y destruir cualquiera de sus modelos, como su casa. El evento Players.PlayerRemoving pasa el objeto Player del usuario que sale, que puede usar al llamar otras funciones, como el almacén de datos y RemoteEvent objetos.

Tenga en cuenta que el evento se llama Player.PlayerRemoving , no Player.PlayerRemoved , porque "eliminado" implicaría que el objeto Player ya está eliminado y, por lo tanto, es inaccesible para los scripts.

Guardando Datos del Usuario al Salir

Para guardar los datos de un usuario cuando abandone una experiencia, use el evento Players.PlayerRemoving en un Script . El siguiente ejemplo Script escucha el evento e intenta guardar los datos de un usuario usando su ID de usuario como clave de almacenamiento de datos.

Script en ServerScriptService

local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- Obtén el estado de los datos del jugador en el juego
local currentData = getCurrentData(player)
-- Guardar en el tiendade datos
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)

Generación de personajes

El Player.Character modelo de un usuario representa su avatar. Por defecto, Player.CharacterAutoLoads es verdadero, y el modelo de personaje de un usuario se genera automáticamente cuando se une a la experiencia. Si Player.CharacterAutoLoads es falso, entonces debe llamar a Player:LoadCharacter() para generar el personaje manualmente.

Cuando el Player.Character de un usuario genera, Scripts y LocalScripts en StarterCharacterScripts se clonan en el modelo de personaje y el Player.CharacterAdded evento se activa. El Player.CharacterAdded evento pasa el nuevo modelo de personaje a cualquier oyente de eventos, que puede usar para encontrar el Humanoid objeto del personaje y modificar su comportamiento. Por ejemplo, puede usar Humanoid:ApplyDescription() para cambiar el atuendo del avatar y Humanoid.WalkSpeed o Humanoid.JumpHeight para modificar el movimiento del avatar.

Despawning de personaje

Cuando el Humanoid del jugador muere, sus partes del cuerpo caen al suelo y el Humanoid.Died evento se dispara. El servidor elimina automáticamente el modelo de personaje y cualquier script dentro de él después de una cantidad de tiempo que determina la propiedad Players.Respawntime. Puede usar el evento Player.CharacterRemoving para restablecer otros objetos asociados con el personaje, como la propiedad de red de un vehículo que conducía.

Contando Muertes de Jugadores

Puedes usar el evento Humanoid.Died para manejar la puntuación de una muerte o crear un aplicación de modeladode ragdoll personalizado. El siguiente Script se conecta a Player.CharacterAdded para recuperar el aplicación de modeladode personaje de cada usuario, luego se conecta al objeto Humanoid del personaje. Cuando se dispara el evento Humanoid.Died del humanoide, el script aumenta el número de veces que el humanoide del usuario ha muerto y produce ese número.

Script en ServerScriptService

game:GetService("Players").PlayerAdded:Connect(function(player)
local deaths = 0
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(function()
deaths += 1
print(player.Name .. " death count: " .. deaths)
end)
end)
end)

Contenedores

El objeto Player almacena varios contenedores importantes:

Mochila

El Player.Backpack contenedor almacena el inventario del usuario. Los Tool objetos en los Backpack de un usuario se muestran en su inventario en la parte inferior de su pantalla. Si un usuario selecciona un Tool del inventario, lo equipa y se mueve desde el Player.Backpack al Player.Character .

Cuando el Player.Character de un usuario aparece, el contenido del StarterPack servicio y su Player.StarterGear clones a su Player.Backpack . Cuando el personaje muere, el cliente destruye su Backpack y lo reemplaza con uno nuevo.

El Backpack también almacena y ejecuta Scripts y LocalScripts a los que el cliente y el servidor pueden acceso.

Roblox proporciona una interfaz para que un jugador acceda a su Backpack e inventario en la parte inferior de la pantalla. Para desactivar la interfaz gráfica de usuario predeterminada de la mochila de Roblox y reemplazarla con la suya en posesión, llame StarterGui:SetCoreGuiEnabled() en un script local. Para más información, consulte StarterGui .

Engranaje de inicio

El contenedor StarterGear clona su contenido al Player.Backpack cuando su personaje aparece. Además, si su lugar permite el engranaje y un usuario posee el equipamiento, los Tool objetos de su clon de regeneracióna su Player.StarterGear cuando aparecen.

A diferencia de StarterPack, Player.StarterGear no es un servicio, sino más bien un hijo de cada Player objeto, por lo que su contenido es específico del usuario. Cada usuario puede tener diferentes Tool objetos dentro de su Player.StarterGear. Para usar Player.StarterGear, habilite el engranaje en la página de configuración de su experiencia en Permisos . En la página de permisos, puede habilitar el engranaje por su introducir. Para desactivar el equipamiento, deseleccione su introducir.

Siempre prueba los juegos después de agregar equipamiento a ellos para verificar que los usuarios no puedan abusar fácilmente de ellos allí. El equipamiento incluye Script objetos y permite al jugador realizar acciones que no podrías considerar. Por ejemplo, un equipamiento de navegación podría permitirle al jugador acceder a una parte del mapa que no quieres que acceda. Las armas permiten a los jugadores con equipamiento dañar a otros jugadores, posiblemente sin represalias o represalias.

Guía del Jugador

El PlayerGui contenedor almacena objetos que crean la Interfaz gráfica (o GUI)del jugador. Si un ScreenGui es un descendiente de un PlayerGui , entonces cualquier GuiObject dentro del ScreenGui se muestra en la pantalla del jugador. Cualquier LocalScript se ejecuta cuando se clona a PlayerGui . Cuando el Player.Character del jugador aparece por primera vez, todo el contenido de StarterGui se copia automáticamente en el PlayerGui del jugador.

Si Players.CharacterAutoLoads está configurado como falso, el personaje no regeneración, y el contenido de StarterGui no se copia hasta que se llame Player:LoadCharacter(). Si StarterGui.ResetPlayerGuiOnSpawn está configurado como verdadero, cada vez que el personaje del jugador reaparece, todo el contenido de PlayerGui de ese jugador se limpia y se reemplaza por el contenido de StarterGui .

Scripts de Jugador

Cuando un usuario se une a la experiencia, el contenido en StarterPlayer.StarterPlayerScripts contenedor se clona a PlayerScripts . Cualquier LocalScripts y ModuleScripts se ejecutan cuando se clonan.

A diferencia de los contenedores Backpack y PlayerGui, el contenedor PlayerScripts no es accesible al servidor, y el contenedor PlayerScripts de un usuario no se reinicia cuando su personaje muere y reaparece. Los objetos del lado del servidor Script tampoco se ejecutan cuando se tienen como padres a PlayerScripts. El contenedor PlayerScripts es útil para scripts que no están vinculados al ciclo de vida del personaje de un usuario, como el sistema de chat general o los controles de entrada del jugador.