Player

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bir Oyuncu nesnesi, mevcut olarak bağlantıda olan bir kliendir. Bu nesneler, yeni bir oyuncu bağlandığında Players hizmetine eklenir ve sonra sunucudan ayrıldığında kaldırılır.

Class.Instance.Name özelliği, oyuncunun kullanıcı adını yansıtır. Bir oyuncu hakkında bilgi kaydederken, kullanıcı adını değiştirebilirsiniz.

Oyuncu nesneleriyle çalışmak için Player hizmetindeki birkaç benzer yöntem var. Onların her biri ile ayrı Players yöntemlerini kullanın:

  • Mevcut Oyuncu nesnelerinin bir tablosunu elde etmek için Players:GetPlayers() ; yine, bunu Instance:GetChildren() yerine kullanın.
  • Oyuncu nesnelerinin eklenmesini tespit etmek için, Players.PlayerAdded etkinliğini kullanmak (Instance.ChildAdded değil) tavsiye edilir.
  • Aynı şekilde, Player nesnelerinin kaldırılmasını Players.PlayerRemoving kullanarak tespit edebilirsiniz, bu sadece Player'ın kaldırıldığından önce şu anda önceki Player'ın kaldırıldığından önce yanlış olabilir (bunun yerine Class.Instance.ChildRemoved</

Kod Örnekleri

This code sample demonstrates the creation of leaderboard stat values in Roblox's default player list UI. It creates a "Score" leaderstat that starts at 0.

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)

Özet

Özellikler

Yöntemler

Etkinlikler

Özellikler

AccountAge

Salt Okunur
Çoğaltılmamış
Paralel oku

Hesabınız yaşı ile bir Player özelliğidir ki oyuncunun hesabının kaç günde kaydedildiğini tarif eder. Bu, Player:SetAccountAge() işlevi kullanılarak ayarlanır ve bu, skriptlerin erişimine izin vermez olabilir.

Bu özellik, öğreticiler gibi yeni Roblox oyuncularının içeriğini kondisyonlara bağlı olarak göstermek için kullanışlıdır.

Kod Örnekleri

This code sample adds a mark to players showing about how old their account is. The mark uses a player's account age to determine if they are a New Player, Veteran Player or Regular Player.

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

Paralel oku

AutoJumpEnabled özelliği, bir Player.Character ın mobil bir cihaz kullanarak Player ının çarpıştığında otomatik olarak atlayıp atlamayacağını belirler. Bu, seviyeleri mobil bir cihazda daha yönlendirilebilir hale getirebilir.

Oyuncu oyuna katıldığında, StarterPlayer.AutoJumpEnabled değeri bu özelliğin başlangıç ​​durumunu belirler. Sonra, bu özellik, Humanoid.AutoJumpEnabled özelliğinin oluşturulduğu oyun içinde o

Kod Örnekleri

This code sample is meant for a TextButton. It allows the player to toggle the auto-jumping behavior while on a mobile device.

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

Paralel oku

KameraMaxZoomDistance özelliği, kamera'nın varsayılan kameralardan karakterle olan maksimum mesafeyi belirler.

Başka bir deyişle, oyuncunun kamerasının çıkarılabileceği maksimum mesafeyi kontrol eder.

Bu öğünün varsayılan değeri StarterPlayer.CameraMaxZoomDistance ile ayarlanır. Eğer bu değer Player.CameraMinZoomDistance 以下 değerleriyle ayarlanırsa, bu değer Kameranın MinZoomDistance ile artırılacaktır.

Kod Örnekleri

The example demonstrates how to set a player's camera minimum and maximum zoom distance.

In this example, we set the Player.CameraMinZoomDistance and Player.CameraMaxZoomDistance to set the min and max distance in studs a player's camera can be from their character.

Note that since the example attempts to set the CameraMinZoomDistance to be greater than the CameraMaxZoomDistance, the CameraMinZoomDistance value will be decreased and set to the value of the max zoom distance.

To change the default min and max zoom distance values for a player when they first enter the game, you can change the StarterClass.Player.CameraMinZoomDistance and StarterClass.Player.CameraMaxZoomDistance properties.

Setting Camera Zoom Distance

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

CameraMinZoomDistance

Paralel oku

CameraMinZoonDistance Player özelliği, kamera standardaki kameradan karakterinizin kamerasından olabileceği minimum mesafeyi ayarlar.

Başka bir deyişle, oyuncunun kamerasının minimum mesafeyi yakalayabilmesine izin verir.

Bu öğünün varsayılan değeri StarterPlayer.CameraMinZoomDistance ile ayarlandı. Eğer bu değer Player.CameraMaxZoomDistance ile daha yüksek bir değere ayarlandıysa, Kameranın MaxZoomDistance'i azaltılacaktır.

Kod Örnekleri

The example demonstrates how to set a player's camera minimum and maximum zoom distance.

In this example, we set the Player.CameraMinZoomDistance and Player.CameraMaxZoomDistance to set the min and max distance in studs a player's camera can be from their character.

Note that since the example attempts to set the CameraMinZoomDistance to be greater than the CameraMaxZoomDistance, the CameraMinZoomDistance value will be decreased and set to the value of the max zoom distance.

To change the default min and max zoom distance values for a player when they first enter the game, you can change the StarterClass.Player.CameraMinZoomDistance and StarterClass.Player.CameraMaxZoomDistance properties.

Setting Camera Zoom Distance

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

CameraMode

Paralel oku

KameraModu özelliği, oyuncunun kamerasını ayarlar ve üçüncü kişiye varsayılır.

Üçüncü Kişi

Varsayılan üçüncü kişi modunda (Enum.CameraMode.Classic), karakter kamerada görülebilir. Bu modda, varsayılan davranış şu şekildedir:

  • Oyuncular sağ tıklayıp sürükleme (fare), dokun ve sürükleme (mobil), sekizlilik çubuğunu kullan (游戏板) veya sol/sağ oklarını (键盘) basınca kamerayı karakterleri etrafında döndürebilir.
  • Bir oyuncu karakterini hareket ettirirse, ilgili hareket yönüne bakar.
  • Oyuncular, hatta tamamen kaydırılmış olarak ilk kişiye kadar özgürce yakınlaştırılabilir veya uzaklaştırılabilir.

Birinci Kişisel

Birinci kişisel modunda ( Enum.CameraMode.LockFirstPerson ) oyuncunun kamerası tüm yol boyunca yuvarlaklanır. Görünür bir GUI ile GuiButton.Modal özelliği setlenmiş değilse, hareket ettirerek, dokunarak veya oyunpadının yanındaki görüntülenen

Kod Örnekleri

This example demonstrates how to change the character's CameraMode to first person using the LockFirstPerson value of the Enum.CameraMode enum.

Playing in First Person

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

CanLoadCharacterAppearance

Paralel oku

CanLoadCharacterAppearance Player özelliği, karakterin oyuncu doğduğunda görünümünün yükleneceğini belirler. Bu özelliğin varsayılan değeri StarterPlayer.LoadPlayerAppearance tarafından ayarlanır.

Eğer doğru ise, karakter oyuncunun Player.CharacterAppearanceId ile eşleşen oyuncu görünümünü yükleyecektir.

Eğer falso , oyuncu bir varsayılan görünümle oluşturulur - herhangi bir şapka, gömlek, pantolon vb. olmadan bir gri karakter modeli.

Karakter oluşturulduktan sonra özellik ayarlanmayacaktır, yeni görünümü yüklemek için şimdi Player:LoadCharacter() çağırın.

Kod Örnekleri

This example demonstrates how to disable loading a player's character appearance. Instead, the player loads as a grey model without any hats, shirts, pants, etc.

This is useful for games using custom clothing and accessories.

Note that if the character has already spawned, this change will not take affect until the player respawns or the Player:LoadCharacter() function is called.

Disabling a Player's Appearance

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

Character

Paralel oku

Karakter özelliği, Class.Model içinde bir Model , vücut parçaları, kodlar ve diğer nesneleri içeren bir referans i

Önceleri bu özellik nil ve oyuncunun karakterinin ilk kez doğduğunda ayarlanır. Oyuncunun karakterinin doğru yüklenmesini tespit etmek için kullanın Player.CharacterAdded etkinliğini kullanın Player.CharacterRemoving

Not that LocalScripts that are cloned from StarterGui or 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

Paralel oku

Bu özellik, oyuncunun Player.Character görünümünü kullanan hesabın kullanıcı ID'sini belirler.Varsayılan olarak, bu özellik Player.UserId dir, bu oyuncunun avatarını Roblox web sitesinde oluşturduğu gibi kullanır.

Bu özelliği başka bir hesabın kullanıcı ID'ine değiştirmek oyuncunun bu hesapgörünümüyle (şapkalar, gömlekler, pantolonlar vb) oluşmasına neden olacaktır.

Oyunlar ayrıca bir oyuncunun karakterinin oyunda yükleneceğini veya yüklenmeyeceğini değiştirerek StarterPlayer.LoadCharacterAppearance özelliğini değiştirebilirler.

Kod Örnekleri

This code sample allows players to chat "/disguise xyz", where xyz is a user ID or username, and they will respawn appearing like that account's avatar. Try typing "/disguise 261" or "/disguise Shedletsky"!

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

Paralel oku

Varsayılan kameraların kullanıcılar arasında kamerayla ve kamerayla ilgili nesneleri nasıl ele alacağını tanımlar. StarterPlayer.DevCameraOcclusionMode tarafından ayarlanır ve bireysel oyuncular için değiştirilemez.

Varsayılan değer, Zoom (0) dir. Aşağıdaki mod listesini görmek için Enum.DevCameraOcclusionMode eşine bakın.

Paralel oku

DevComputerCameraMode özelliği, bir oyuncu bir cihaz kullanırken kamerasını hareket ettirmenin yolunu belirler. Açıklamak için Enum.DevComputerCameraMovementMode bakın. Bu özellik Class.Script ile yüklenmiş olmalıdır.

Bu öğenin varsayılan değeri StarterPlayer.DevComputerCameraMovementMode tarafından belirlenir.

Bu özellik adındaki "Bilgisayar" kelimesi, "Class.UserInputService.TouchEnabled|TouchEnabled" olmayan, "Class.UserInputService.GamepadEnabled|GamepadEnabled" cihazlarını işaret eder.

Kullanıcı Seçimi'ne ayarlandığında, bir oyuncu Roblox oyun ayarlarındaki herhangi bir kontrol modunda seçim yapabilir ( Scriptable dışında) arasında. genelolarak, oyuncuların kontrol modunu seçmelerine izin vermeniz iyi bir fikirdir.

Bu özelliği Scriptable olarak ayarlayarak özel bir kontrol sistemi oluşturulabilir.

Bu özellik, dokunmatik bir cihaz kullanan oyuncuları etkilemez. Bunun yerine Player.DevTouchCameraMode der.

Kod Örnekleri

The example demonstrates how to set a player's camera movement mode for players on a computer.

In this example, we set the camera movement mode to Classic via the Enum.DevComputerCameraMovementMode enum. This means that the camera of players on touch enabled devices will track the player but will not automatically rotate if the player walks left or right.

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

Paralel oku

DevComputerMovementMode özelliği, bir oyuncunun karakterini bir cihazda fare ve klavye kullanarak hareket ettirme yöntemini belirler. See Enum.DevComputerMovementMode for a description of each movement control mode available. This property cannot be set using a LocalScript (it must be set on the server using a Script).

Bu özelliğin varsayılan değeri StarterPlayer.DevComputerMovementMode tarafından belirlenir.

Bu özellik adındaki "Bilgisayar" kelimesi, "Class.UserInputService.TouchEnabled|TouchEnabled" dışındaki cihazları işaret eder.

Kullanıcı Seçimi'ne ayarlandığında, bir oyuncu Roblox oyun ayarlarındaki herhangi bir kontrol modunda seçim yapabilir ( Scriptable dışında) arasında. Genel genel, oyuncuların kontrol modunu seçmelerine izin vermeniz iyi bir fikirdir, böylece erişilebilirlik için mümkün olduğunca fazla erişim seçeneği sunabilirsiniz.

Bu özelliği Scriptable olarak ayarlayarak özel bir kontrol sistemi oluşturulabilir.

Bu özellik, dokunmatik bir cihaz kullanan oyuncuları etkilemez. Bunun yerine, Player.DevTouchMovementMode görüyor.

Kod Örnekleri

Demonstrates how to set the movement mode for players on computers using the Player.DevComputerMovementMode property.

Setting a Player's Movement Mode (Desktop)

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

Paralel oku

Bu özellik, bir oyuncunun Shift tuşuna basarak kilidi açabilir miğini belirler. Bir oyuncu, Roblox'un oyun ayarlarındaki farenin kilidi seçeneğini değiştirebilir.Varsayılan olarak, bu özellik Class.StarterPlayer.EnableMouseLockOption değerine ay

Farenin kilitlenmesi etkinleştirildiğinde, oyuncunun kurşörü ekranın merkezine kilitlenir. Mouse'un hareketi, kamerayı oyuncu'nun character etrafında döndürür ve karakter aynı yönde hareket eder. Ayrıca oyuncu karakterinin sağ omuzunun üzerindeki kamera görüşünü de yer

Shift-lock ilgili API'lerin depreciyon sürecinde olduğunu unutmayın, bu nedenle fare'ı kilitlemek için UserInputService.MouseBehavior yerine kullanılması önerilir.

Kod Örnekleri

This code sample demonstrates how to toggle whether mouse lock is available to a player using a chat command. When a player types "mouselock", their ability to toggle mouse lock is toggled. Note that this does not toggle the actual state of mouse lock; rather, it changes whether a player is able to toggle it themselves.

This code can be run by pasting it into a Script within ServerScriptService.

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)
Paralel oku

DevTouchCameraMode özelliği, bir TouchEnabled cihazını kullanırken bir oyuncunun kamerasını hareket ettirme biçimini belirler. Ayrıntılar için Enum.DevTouchCameraMovementMode bakın. Bu özellik kullanılıyor

Bu özelliğin varsayılan değeri StarterPlayer.DevTouchCameraMovementMode tarafından belirlenir.

Kullanıcı Seçimi'ne ayarlandığında, bir oyuncu Roblox oyun ayarlarındaki herhangi bir kontrol modunda seçim yapabilir ( Scriptable dışında) arasında. Genel genel, oyuncuların kontrol modunu seçmelerine izin vermeniz iyi bir fikirdir, böylece erişilebilirlik için mümkün olduğunca fazla erişim seçeneği sunabilirsiniz.

Bu özelliği Scriptable olarak ayarlayarak özel bir kontrol sistemi oluşturulabilir.

Bu özellik, dokunmatik bir cihaz kullanmayan oyuncuları etkilemez. Bunun yerine, Player.DevComputerCameraMovementMode görür.

Kod Örnekleri

The example demonstrates how to set a player's camera movement mode.

In this example, we set the camera movement mode to Classic via the Enum.DevTouchCameraMovementMode enum. This means that the camera of players on touch enabled devices will track the player but will not automatically rotate if the player walks left or right.

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

Paralel oku

DevTouchMovementMode özelliği, bir TouchEnabled cihazını kullanırken bir oyuncunun karakterini hareket ettirmenin yolunu belirler. See Enum.DevTouchMovementMode for a description of each movement control mode available. This property cannot be set using a LocalScript

Bu özelliğin varsayılan değeri StarterPlayer.DevTouchMovementMode tarafından belirlenir.

Kullanıcı Seçimi'ne ayarlandığında, bir oyuncu Roblox oyun ayarlarındaki herhangi bir kontrol modunda seçim yapabilir ( Scriptable dışında) arasında. genelolarak, oyuncuların kontrol modunu seçmelerine izin vermeniz iyi bir fikirdir.

Bu özelliği Scriptable olarak ayarlayarak özel bir kontrol sistemi oluşturulabilir.

Bu özellik, dokunmatik bir cihaz kullanmayan oyuncuları etkilemez. Bunun yerine Player.DevComputerMovementMode görüyor.

Kod Örnekleri

The example demonstrates how to set the movement mode for players on touch enabled devices.

In this example, we set the movement mode to Thumbstick via the Enum.DevTouchMovementMode enum. This means that players on touch enabled devices are able to move via a virtual thumbstick on their screen.

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

Paralel oku

The DisplayName is a Player property that contains the display name of the authenticated user associating the Player object. Unlike usernames, display names are non-unique names a player displays to others. If the Roblox user has not chosen one, the property will read the same as the 1> Name1> property.

Not:

  • Ekran adları benzersiz olmadığından, aynı anda iki oyuncunun aynı isimleri olması mümkündür. Eğer bir oyuncunun küresel benzersiz bir kimliğe ihtiyacı varsa, Player.UserId (静) veya Player.Name (当前 Kullanıcı adı) yerine kullanın.
  • Karakterler Player.LoadCharacter veya Roblox motoru tarafından oluşturulmuşsa, Humanoid.DisplayName özelliğine sahip olacaklar.
  • İsimlerde unicode karakterleri olabilir. UTF-8 için daha fazla bilgi için, unicode karakterleri olan isimleri nasıl çalıştıracağınız hakkında.

FollowUserId

Salt Okunur
Çoğaltılmamış
Paralel oku

The FollowUserId, bir oyuncunun takip ettiği Player özelliğidir, içinde Player.UserId bulunan kullanıcının oyuna takip ettiği kullanıcıyı içerir. Eğer oyuncu başka bir oyuncu tarafından takip edilmediyse, bu özellik 0 olacaktır. Bu özellik, oyuncuları başka bir oy

Bu kullanıcı kimliğini kullanarak oyuncunun adını alabilirsiniz ve Players:GetNameFromUserIdAsync() işlevini kullanarak.

Kod Örnekleri

This code sample alerts players if a new player follows the local player into the game. Place this in a LocalScript in StarterPlayerScripts.

Followed Alert

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player:WaitForChild("PlayerGui")
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local textLabel = Instance.new("TextLabel")
textLabel.Parent = screenGui
textLabel.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if textLabel then
textLabel:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GameplayPaused

Erişilemez Güvenliği
Paralel oku

OyunYenidenOynatmaYavaşlatma özelliği, oyunun şu anda StreamingEnabled aktifleştirilmiş yerinde birbekleidir. Bu özellik kliente ayarlanır, ancak sunucuya replikat edilir. Pause durumunu belirlemek için bu özelliği kullanabilirsiniz.

Ayrıca bakınız:

HasVerifiedBadge

Paralel oku

HasVerifiedBadge Player özelliği, oyuncunun bir Doğrulanmış Rozet alıp almadığını gösterir.

HealthDisplayDistance

Paralel oku

HealthDisplayDistance Player özelliği, bu oyuncunun diğer Humanoid sağlık çubuklarını göreceği mesafeyi milim olarak ayarlar. 0'a ayarlandığında, sağlık çubukları görüntülenmez. Bu özellik, varsayılan olarak StarterPlayer.HealthDisplayDistance

Bir Humanoid'in sağlık çubuğu görünürse, Humanoid.DisplayDistanceType kullanarak görüntü türünü ayarlayabilirsiniz.

Kod Örnekleri

This example demonstrates how to hide other Humanoid's (Player and NPC) health bars and names.

This is done by setting the player's Player.HealthDisplayDistance and Player.NameDisplayDistance properties to 0.

If you would like to display health bars and names, you set the properties to a value greater than 0. For instance, setting the properties to 100 means that the player will see other player's health and names up to 100 studs away.

To modify the default values for players, you can change the values of the StarterClass.Player.HealthDisplayDistance and StarterClass.Player.NameDisplayDistance properties.

Hiding Player Health and Names

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

LocaleId

Gizli
Salt Okunur
Çoğaltılmamış
Paralel oku

LocaId Player özelliği, yerel oyuncu hesapiçin yerel oyuncu tarafından ayarlanan lokasyon kimliğini gösterir. Aşağıdaki iki harf kodunu (örneğin, "en-us") için yerel kimliği tutar.

Bu, oyununuzun oyuncu tabanının coğrafi demografisini belirlemek için kullanılabilir ve ayrıca deneyim içi içerik için otomatik yerelleştirme için kullanılan yerleşim yerini de içerir (GuiBase2d.AutoLocalize). Bu özellik, sunucudan oyuncu lokasyonuna erişim sağlar.

Ayrıca bakınız LocalizationService.RobloxLocaleId, içerikleri yerelleştirmek için kullanılan yerelleştirme ID'si. Bu, Roblox henüz yerelleştirilen setin yerelleştirme oyuncuolarak kullanılmayacağında farklı bir değer olacaktır.

Kod Örnekleri

This example demonstrates how to check the locale of a local player using the Player.LocaleId property. It prints a string with the two letter locale code for the locale of the local player.

For instance, if the player's local is within the US, the locale will be:

en-us

Checking a Player's Locale

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

MembershipType

Salt Okunur
Çoğaltılmamış
Paralel oku

Üyelik kaydedilmesini belirlemek için sadece okunabilir (başka bir üyelik yazayarlanmaz). Bir hesapüyelik yaziçeren bir Enum.MembershipType열i tutar.

Kod Örnekleri

The following example checks whether a player has Premium membership.

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

Paralel oku

The NameDisplayDistance StarterPlayer özelliği, bu oyuncunun diğer Humanoid isimlerini gördüğü mesafeyi belirler. Eğer özellik 0 olarak ayarlandıysa, isimler gizlenir. Bu özellik, varsayılan olarak StarterPlayer.NameDisplayDistance ile ayarlandı.

Bir Humanoid'in sağlık çubuğu görünürse, Humanoid.DisplayDistanceType kullanarak görüntü türünü ayarlayabilirsiniz.

Kod Örnekleri

This example demonstrates how to hide other Humanoid's (Player and NPC) health bars and names.

This is done by setting the player's Player.HealthDisplayDistance and Player.NameDisplayDistance properties to 0.

If you would like to display health bars and names, you set the properties to a value greater than 0. For instance, setting the properties to 100 means that the player will see other player's health and names up to 100 studs away.

To modify the default values for players, you can change the values of the StarterClass.Player.HealthDisplayDistance and StarterClass.Player.NameDisplayDistance properties.

Hiding Player Health and Names

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

Neutral

Paralel oku

Neutral özellik, oyuncunun belirli bir takımda olup olmadığını belirler.

  • doğru olduğunda, oyuncu belirli bir takımda değil. Bu ayrıca Player.Team özelliğinin nul olmasını ve Player.TeamColor sınıfının beyaz olmasını sağlar.
  • false , oyuncu bir belirli takımda. Player.Team özelliği, oyuncunun olduğu takımla eşleşecektir, Team da.

Kod Örnekleri

This example checks if a player is neutral. If the player is neutral, the game prints:

Player is neutral!

If the player is not neutral, the game prints:

Player is not neutral!

Note: Although this example prints the value of the local player's neutral property, you can change the example to get the value for any player.

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

Paralel oku

ReplicationFocus Player özelliği, parçayı bir Oyuncunun etrafında reklam yeniden oluşturma konusunda odaklanmak için ayarlar. Roblox ağı üzerinden iletişim kuran farklı Roblox sistemleri (örneğin fizik, yayın, vb) reklam yeniden oluşturma odaklanma oranını farklı yüzde olarak değiştirir.

Bu özellik nul olduğunda, lokal oyuncunun karakterinin PrimaryPart kopyalama odak olarak ele alınır.

Bu özellik sadece bir Script ile sunucuda ayarlanmalıdır, bir LocalScript ile değil. Bu özellik, parçaların ağ sahibiğini değiştirmez veya güncellemez.

Kod Örnekleri

This example creates a new BasePart and sets the Player's Player.ReplicationFocus to that part.

This demonstrates the functionality of the ReplicationFocus property. You can easily change the part that the focus is set to to change the replication focus.

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

Paralel oku

Ayarlanırsa, oyuncu verilen SpawnLocation 'de yeniden doğacak. Bu özellik sadece Lua aracılığıyla ayarlanabilir ve geçerli bir SpawnLocation referansı içermelidir, bu da şu kriterleri yerine getirmelidir:

  • Class.Workspace İnşağı
  • Class.SpawnLocation.TeamColor``Class.Player.TeamColor veya SpawnLocation.Neutral 0> şeklinde ayarlanmış

RespawnLocation geçerli bir SpawnLocation olarak ayarlanmıyorsa, varsayılan yeniden oluşturma mantığı uygulanır. For more information on this see the page for SpawnLocation .

RespawnLocation'a Alternatifler
  • Bir Class.Player``Class.SpawnLocation|SpawnLocations onların takımına ait. Bazı durumlarda oyuncunun Player.Team yerine değiştirilmesi daha basit olabilir.
  • Class.Player.Character 'i manuel olarak hareket ettirmek için Player.Character kullanarak kendi özel oluşturma mantığınızı uygulayın.

Kod Örnekleri

This code sample will set the player to always respawn from the last SpawnLocation they touched. New players will respawn from the SpawnLocation named 'FirstSpawn' until they touch a different SpawnLocation.

This is an alternative to using the AllowTeamChangeOnTouch property to switch SpawnLocations and does not require Teams.

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

Çoğaltılmamış
Paralel oku

Takım özelliği, Team hizmetindeki bir takımı işaret

Kod Örnekleri

This code sample, although lengthy, is quite simple: detect when a player chats /play, then put them on the "Playing" team. When they die, move them back to the "Spectating" team.

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)

This code sample allows any player to chat "/jointeam " where is the name of a team. It uses string manipulation using string.sub and string.lower to make the command case-insensitive and allow for partial matches. For example, "/jointeam red" will match the team "Red Robins".

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

Paralel oku

TakımRenkIşını property, bir Player'ın aynı Takım'ın Team.TeamColor ile ilişkili olduğunu belirler. Değiştirmeniz bu özelliği takımınızın aynı Player.Team ile değişeceğini de

Bu genellikle özellik kullanılmadan önce Player.Team 'i kendi Team 'ine ayarlamak daha iyi bir fikirdir. Bu özellik, bu değerin bir takım için belirli bir takım için tekrarlanmasına neden olur; bu, "Bir Kendini Yenilemez" (DRY) ilkesine uyması i

Kod Örnekleri

This code sample, although lengthy, is quite simple: detect when a player chats /play, then put them on the "Playing" team. When they die, move them back to the "Spectating" team.

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

Paralel oku

UserId, Roblox'un her kullanıcı hesabını benzersiz ve tutarlı bir şekilde tanımlayan <a href="/reference/engine/databases/player-databases.md">Class.Player</a> özelliğidir. Class.Instance.Name ile bir Instance.Name arasındaki farklılık, kullanıcının mevcut kullanıcı adına göre değişebil

Bu özellik, GlobalDataStores kullanarak oyuncu verilerini kaydetirken veya yüklerken esastır. Bir oyuncunun benzersiz bir anahtarolsun.

Kod Örnekleri

The below example would print the UserId of every user who entered a game.

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

The following code sample gives an example of a 'met the creator' badge system. This script will award a specified badge (BADGE_ID) to anyone who is in a server at the same time as the user associated with OWNER_ID.

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)

This code sample retrieves a player's saved gold from a data store and puts the returned value onto the leaderboard. Note that this sample does not save players' gold — it only loads it.

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)

Yöntemler

ClearCharacterAppearance

void

ClearCharacterAppearance işlevi, Accessory, Shirt, Pants, 1> Class.CharacterMesh1> ve

Bunlar t-shirts , kafa şebekeleri veya yüzleri kaldırmaz.


Dönüşler

void

Kod Örnekleri

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

DistanceFromCharacter Player işlevi, karakterinin kafasından verilen Vector3 noktası arasındaki mesafeyi iade eder. 0 döndürürse oyuncu Player.Character ile değil.

Bu, bir oyuncunun başka bir nesneye veya yerleştirmeye olan mesafeyi belirlemek için yararlıdır.

Eğer iki oyuncu olmayan istan veya pozisyon arasındaki mesafeyi belirlemek istiyorsanız, takip edilenkullanılabilir:


local distance = (position1 - position2).magnitude

Parametreler

point: Vector3

oyuncumesafesinin ölçüldüğü yer.


Dönüşler

Oyuncu ve yer arasındaki mesafe.

Kod Örnekleri

This example demonstrates how to measure the distance between a player's Player.Character and another location.

This code will print the distance of each player's character from the origin (0, 0, 0):

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

Oyuncu'nun deneyime nasıl katıldığını açıklayan bir sözlük döndürür. Sözlük, aşağıdaki alanlardan herhangi birini içerir:


<tbody>
<tr>
<th>KaynaktanımId</th>
<td>sayı</td>
<td>Oyunun ışınlanıldığı Class.DataModel.GameId deneyiminin. Player tarafından ışınlanıldığından sadece mevcut deneyime giriş yap ve bir sunucu ışınlanma işlevini çağırıyorsa.</td>
</tr>
<tr>
<th>Kaynağın Yeri</th>
<td>sayı</td>
<td>Oyuncu'nun ışınlanıldığı yerin Class.DataModel.PlaceId kısmı. Sadece oyuncu ışınlanıldığı yere gittiğinde görünür.</td>
</tr>
<tr>
<th>Referanslandığı Oyuncu</th>
<td>sayı</td>
<td>Oyunu deneyim için davet eden oyuncunun <code>Class.Player.UserId</code> kayıdı. Bu verileri kullanarak referans ve tetik ödül mantığını belirleyin.</td>
</tr>
<tr>
<th>Üyeler</th>
<td>ematik</td>
<td>Class.Player.UserId kullanıcılarının <code>Player</code> ile birlikte ışınlanan numaralarını içeren bir matris. Sadece oyuncu bir grup parçası olarak ışınlandıysa görüntülenir.</td>
</tr>
<tr>
<th>Işınlanma Verileri</th>
<td>değiştirici</td>
<td>Orijinal ışınlanmada belirtilen <code>teleportData</code>ı yansıtır. Oyuncu ışınlanmak için kullandığınız sunucu arasında bilgi paylaşımı için yararlıdır. Sadece <code>teleportData</code> belirtilmiş ve bir sunucu ışınlanma işlevini çağırırsa görünür.</td>
</tr>
<tr>
<th>Kalkış Verileri</th>
<td>dizi</td>
<td>Bir <a href="../../../production/promotion/deeplinking.md">深 link</a> URL'sinde belirlenen başlatma verilerini içeren basit veya JSON kodlanmış bir yapı.</td>
</tr>
</tbody>
AnahtarDeğer TürüAçıklama

GetJoinData ve TeleportData alın

Bir sunucu Player'ın ışınlanmasını başlatırsa, bu yöntemin döndüğü sözlük, oyuncunun ışınlanma verilerini içerir. Class.Player:GetJoinData() yöntemi sadece sunucudaki ışınlanma verilerini alabilir. Para almak için kullanıcının verilerini almak için Class.TeleportService:GetLocalPlayerTeleport

Class.Player:GetJoinData() , Player:GetJoinData() , Class.TeleportService:GetLocalPlayerTeleportData() 1>Class.TeleportService:GetJoinData()1> , 4>Class.TeleportService:GetLocalPlayerTeleportData() 7>Class.TeleportService:GetJoinData()7> , 0>Class.TeleportService:GetLocalPlayerTeleportData() 3>Class.TeleportService:GetJoinData()3> , 6>Class.TeleportService:GetLocalPlayerTeleportData() 9>Class.TeleportService:GetJoinData()9> ,

  • Geçmiş 48 saat içinde bir Roblox sunucusu tarafından gönderilmiş olması garantilidir.
  • Bu Player ile gönderildiğine dair garanti var.
  • The SourcePlaceId ve SourceGameId garanti olarak gönderilen yer ve evrenden olmalıdır. Bu, gönderilen verilerin onaylanmış bir dünyageldiğini doğrulayabilirsiniz.

Bu veri kliente tarafından iletilmiş olmasına rağmen, bir istismarci tarafından potansiyel olarak kullanılabilir. Oyun para birimi gibi hassas verilerin Hafıza Depolama gibi güvenli bir çözüm aracılığıyla iletilmesi gerekir.


Dönüşler

PlaceId ve UserId değerleri içeren bir sözlük (açıklamadaki tabloya bakın).

Kod Örnekleri

The following example tracks sources of traffic for analytics. By creating URLs with unique launch data for each social platform, you can determine the most popular traffic sources. The sample checks the source against a list of possible samples and discards any invalid sources because users can modify the launch data.

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)

The following example generates a URL with the user's ID used as launch data. It then displays the URL in a read-only text box that makes it easy for the user to copy and share the link with their friends. When a user joins the game using a referral link, you can use the launch data to reward the referrer.

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)

The following example is a function that converts a table into a string you can use as launch data. The provided data is JSON encoded, checked for valid character length, and escaped with percent signs.

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

The following example attempts to decode launch data, using pcall to prevent an error in case the data is corrupt.

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)

The following code sample is an example of how teleport data can be retrieved on the server using Player:GetJoinData(). This code, when ran in a Script in ServerScriptService, will listen for new Player|Players joining the game. When they join it will retrieve their teleport data (verifying it came from a valid place) to find their current level.

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

GetMouse Player işlevi, kullanıcının sağ ve sol mouse butonlarının tıklamalarını ve hareket ve konumu izlemek için kullanılan Mouse'i geri verir. oyuncu'nun mouse instansı, sol ve sağ fare butonlarının tıklamalarını ve hareket ve konumu izlemek için kullanılabilir.

Class.UserInputService hizmeti, kullanıcının girişini takip etmek için ek görevler ve etkinlikler sağlar - özellikle fareyi kullanmayan cihazlar için.

Not:

  • Bu öğe Class.LocalScript içinde kullanılmalıdır çalışır beklenen şekilde çevrimiçi olarak.
  • Temmuz ayındaki bir güncellemeden sonra, fare'nin ikonu artık bu yöntemle ayarlanabilir.

Dönüşler

Kod Örnekleri

The below example will print:

Button 1 is down

whenever the Players.LocalPlayer left clicks.

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

Paralel yaz

GetNetworkPing Player 'in saniyelerde izolasyonlanmış ağ gecikme süresini döndürür. "Ping" bir verinin gönderilmesinden sonra sunucuya geri döndüğüne kadar alınan gecikme süresidir. Bu, veri deşifreleme veya işleme dahil değildir.

For client-side LocalScripts , this function can only be called on the Players.LocalPlayer . This function is useful in identification and debugging issues that occur in high network latency scenarios. It's also useful for masking latency, such as adjusting the speed of throwing animations for projectiles.


Dönüşler

HasAppearanceLoaded

HasAppearanceLoaded Player işlevi, oyuncunun Player.Character görünümünün yüklendiğini veya yüklendiğini de döndürür.

Bir oyuncunun görünümü, oyuncunun Shirt , Pants ve Accessories gibi öğeleri içerir.

Bu, bir oyuncunun ilk oyuna katıldıktan sonra görünümünün yüklendiğini belirlemek için yararlıdır, bu da Players.PlayerAdded etkinliği kullanılarak takip edilebilir.


Dönüşler

oyuncukarakterinin görünümünün yüklendiğini gösterip göstermediğini belirtir.

Kod Örnekleri

This example prints the result of Player:HasAppearanceLoaded() after a player joins the game until the player's appearance has loaded.

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

Oyuncunun doğrulama durumunu gösteren bir booleto değer döndürür. Eğer doğruysa, oyuncu doğrulanır. Doğrulama, VOIP telefon numarası veya hükümet kimlik doğrulaması dahil olmak üzere şifreleme dışında değildir.

IsVerified uygulandığında, uygulamanın tüm geçersiz kullanıcıları yanlışlıkla engellemediğinden emin olmak için dikkat et.

Yöntem sadece back-end sunucusunda çağrılabilir. Onu client-side çağırmak bir hata yüzüğünde sonuçlanır. Ayrıca, bu yöntem Studio'da daima false döndürür.


Dönüşler

Oyuncunun doğrulandığını gösteren bir booleoid.

Kod Örnekleri

The following example prints "true" if the player is verified.

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

Class.Player.Kick|Kick() yöntemi, bir deneyimin bir istemcisi başarıyla bağlayıp seçenek olarak bağlantı kesmek için güzel bir şekilde bağlantıyı kesmene izin verir. Bu, kötüye kullanıcıları moderasyon etmek için sadece güvenilen kullanıcıların bu yöntemi başlatmasına izin vermeniz gerekir. Bu yöntemi başka kullanıcılar i

Bu yöntemi bir Player ile çağırmak, kullanıcıyı sunucudan ayrık ve bir varsayılan uyarı mesajı sağlar. Bu yöntemi bir Player ile bir yığın olarak çağırmak, varsayılan mesajı sağlayan diziile değiştirilir.

Bu yöntemi bir LocalScript kullanırken sadece yerel kullanıcının istemcisi kovulabilir.

Parametreler

message: string

Kullanıcıyı şutçuğa çıkarıldığında gösteren mesaj.

Varsayılan değer: ""

Dönüşler

void

Move

void

Hareket Player işlevi, oyuncunun karakterinin durdurulduğu yönü (denetimlerkullanarak) geçici olarak yürüyebilmesine neden olur.

Harita etrafında hareket eden NPC Humanoids script'i kullanırken yararlıdır - ancak gerçek bir oyuncunun girişi tarafından kontrol edilmez.

Ayrıca, ikinci argümanın sağladığı Vector3 ile oyuncu ile dünya koordinatları arasında hareket edilmesi gerektiğini gösterir ( false).

Parametreler

walkDirection: Vector3

Oyuncunun hareket etmesi gereken Vector3 yönü.

relativeToCamera: bool

Oyuncunun kamerasına kıyasla oyuncunun hareket etmesi gerektiğini gösteren bir booleoid.

Varsayılan değer: false

Dönüşler

void

Kod Örnekleri

Demonstrates moving a player relative to their camera's position using Player:Move().

The script first waits for the player's Character and Humanoid to load, as both are required before calling Player:Move(). Otherwise a warning will display in the Output.

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
Eklenti Güvenliği

SetAccountAge fonksiyonu oyuncunun günlerde Player.AccountAge ını ayarlar.

Günlerde bir oyuncunun hesabının kaç günde kaydedildiğini açıklayan Player özelliğini ayarlar.

Bu, oyuncunun hesapyaşı ayarlmaz, ancak hesabın kendisiyle ilgili yaşı ilk oluşturulduğunda belirir.

Parametreler

accountAge: number

Hesabın gün sayısında yaşı.


Dönüşler

void

Kod Örnekleri

This example demonstrates how the Player:SetAccountAge() function would be used if it was accessible. It sets the local player's account age to 100 days.

Setting the Player's Account Age

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

This code sample adds a mark to players showing about how old their account is. The mark uses a player's account age to determine if they are a New Player, Veteran Player or Regular Player.

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
Eklenti Güvenliği

Bu yöntem oyuncunun normal sohbetleri görüp görmediğini belirler: TextService:FilterStringAsync()


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

Bir oyuncunun sohbeti filtrelemesi etkinleştirilmiş olup olmadığına bağlı olarak, tüm sohbetler TextService tarafından filtrelenmelidir, yayınlanırken diğer oyunculara veya oyuncunun kendi ekranında gösterilir. TextService:FilterStringAsync() , mesajın niyetine göre f

Parametreler

value: bool

Oyuncunun filtreli sohbeti gördüğünü gösterip göstermediğini gösteren bir booleoid.


Dönüşler

void

GetFriendsOnline

Bekletir

Bu işlev, maxFriends değerine sahip bir online arkadaşlarının sözlüğünü içerir. İşlev 30 saniye süreli bir geçici önbelleği kullanır.

Döndürilen matematiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel aritmetiksel


<tbody>
<tr>
<td><b>Ziyaretçi Kimliği</b></td>
<td>sayı</td>
<td>Arkadaşnızın <code>Class.Player.UserId</code> arkadaş.</td>
</tr>
<tr>
<td><b>Kullanıcı Adı</b></td>
<td>dizi</td>
<td>arkadaşkullanıcısı.</td>
</tr>
<tr>
<td><b>Görüntü Adınızı Gösteriniz</b></td>
<td>dizi</td>
<td>Arkadaşın <code>Class.Player.DisplayName</code> 'arkadaş.</td>
</tr>
<tr>
<td><b>Sonraki Online Olanların Sonu</b></td>
<td>dizi</td>
<td>Arkadaş son kez çevrimiçiolduğunda.</td>
</tr>
<tr>
<td><b>IsOnline olup değilim.</b></td>
<td>boo</td>
<td>Eğer arkadaş şu anda çevrimiçi.</td>
</tr>
<tr>
<td><b>SonYerLastLocation</b></td>
<td>dizi</td>
<td>arkadaşmevcut konumunun adı.</td>
</tr>
<tr>
<td><b>YerleştirmeKodu</b></td>
<td>sayı</td>
<td>arkadaşson yerinin ID'si.</td>
</tr>
<tr>
<td><b>Oyun kimliği</b></td>
<td>dizi</td>
<td>arkadaşson konumunun <code>DataModel/JobId</code> 'i.</td>
</tr>
<tr>
<td><b>YerTipi</b></td>
<td>sayı</td>
<td>
arkadaşson konumunun yerleşim türü:
<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>
İsimTürAçıklama

Parametreler

maxFriends: number

Dönüştürmek için maksimum çevrim içi arkadaş sayısı.

Varsayılan değer: 200

Dönüşler

Online arkadaşlarınızın bir sözlüğü (yukarıdaki tabloya bakın).

Kod Örnekleri

This example demonstrates how to get a dictionary of a player's online friends. It returns the maximum number of friends specified by the argument, or 200 if an argument is not provided.

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

Bekletir

GetRankInGroup Player işlevi, oyuncunun grubaki rütbesini 0 ile 255 arasındaki bir sayı olarak gruba iade eder, 0 bir üye değildir ve 255 grupsahibidir.

Bu, bir Script kullanıyorsa, bir LocalScript kullanıyorsa, en son bilgileri almazsınız. Eğer bir oyuncu oyundan ayrılırken bir grup bırakırsa, GetRankInGroup hala o grubun içinde olana kadar düşüneceklerdir. Ancak, bunu yerel bir kullanımla kullan

Bu, yöntemin sonuçlarını önbelleğe alması nedeniyle, aynı oyuncu ile aynı grup ID'si olan çok sayıda GetRankInGroup çağrısının aynı sonucunu vereceği için. Kaching davranışı grup başına bir per-peer temelinde içinde bulunduğundan: bir sunucu, aynı önbelleği bir istemci ile paylaşmaz.

Parametreler

groupId: number

Belirlenen grupgroupId 'i.


Dönüşler

oyuncugruprütbesi.

Kod Örnekleri

The code below will check if a player that has entered the game has a rank equal to 255, in a group with an ID of 2. If they are, it will print "Player is the owner of the group, 'LOL'!", otherwise "Player is NOT the owner of the group, 'LOL'!" will be printed to the output.

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

Bekletir

GetRoleInGroup Player işlevi, oyuncunun grubaki rolünü bir dizim olarak iade eder veya oyuncu grubun dışındaysa Guest olur.

Bu, bir Script kullanıyorsa, bir LocalScript kullanıyorsa, en son bilgileri almazsınız. Eğer bir oyuncu oyundan ayrılırken bir grup bırakırsa, GetRoleInGroup hala o grupta kalana kadar düşünecek. Ancak, bunu yerel bir script ile yaparsanız, bunu

Bu, çünkü yöntem sonuçlarını kaydeder, bu yüzden aynı oyuncu ile aynı grup ID'si olan yöntemin ilk çağrısından bu yana GetRoleInGroup'un aynı sonucunu verecek. Bu kayıt davranışı grup başına: bir sunucu, aynı kaydı bir istemci ile paylaşmaz.

Parametreler

groupId: number

Belirlenen grupgroupId'si.


Dönüşler

Oyuncunun belirlenen grupkatılma rolü, veya Misafir eğer oyuncu bir üye değilse.

Kod Örnekleri

The code below will print the name of the rank that the player is currently a part of, in a specific group. In this instance we're checking what rank the player is within a group which has a group ID of 2.

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

Bekletir

Bu işlev, bir oyuncunun başka bir kullanıcının arkadaşı olduğunu sormak için Roblox web sitesine bir istek gönderir. Bu işlev, Player.UserId olarak oyuncunun aynı Player.UserId ile çok sayıda sonuçgizleyebilir

Parametreler

userId: number

Belirlenen oyuncunun Player.UserId kimliği.


Dönüşler

Bir oyuncunun belirli bir kullanıcının arkadaşı olduğunu gösteren bir booleoid.

Kod Örnekleri

The below example would print whether or not a recently added player is friends with Gordonrox24.

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

Bekletir

The IsInGroup Player işlevi, bir oyuncunun bir grupüyesi olup olmadığını Roblox web sitesine sorarak gönderir.

Bu, bir Script kullanıyorsa, bir LocalScript kullanıyorsa, en güncel bilgileri almazsınız. Eğer bir oyuncu oyundan ayrılırken bir gruba bırakırsa, IsInGroup hala o grubun içinde kalana kadar oyundaki kalacağını düşünecek. Ancak, bunu 0>

Bu, çünkü yöntem sonuçlarını kaydeder, bu yüzden aynı oyuncu ile aynı grup ID'si olan çok sayıda IsInGroup çağrısı aynı sonucu verecektir. Bu kayıt davranışı grup başına bir per-peer temelinde gerçekleştirilir: bir sunucu, aynı grup ID'siyle ilk kez çağrıldığında aynı kayıtı paylaşmaz.

Parametreler

groupId: number

Belirlenen grupgroupId'si.


Dönüşler

Oyuncunun belirlenen grupdahil olup olmadığını gösteren bir booleoid.

Kod Örnekleri

The below example will print "Player is in the Roblox Fan club!" if the newly added player is in the group with a groupId of 7.

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
Bekletir

LoadCharacter Player işlevi oyuncunun eski karakterini kaldırır ve yeni bir karakter oluşturur. Ayrıca oyuncunun Backpack ve PlayerGui iletkenlerini temizler.

Bu, oyuncuyu öldürmek zorunda kalmadan karakteri yeniden yüklemeyi istediğiniz durumlarda yararlıdır, örneğin player'ın Player.CharacterAppearance'ını yükledikten sonra yeni bir karakter görünümü yüklemeyi istediğinizde.

Not: Fonksiyon Player:LoadCharacterBlocking() ile benzer, ancak istek asenkron olarak işlenir, yani asenkron olarak işlenir. Bu, diğer görevlerin oyun yüklenirken veya herhangi bir görev yaparken devam edebileceğini ifade eder. Ayrıca, bu işlev bir koda kullanılabilir, yüklemeyi gerektiren kodlar dışında.

Bir bireysel oyuncu için LoadCharacter çağrıldıktan sonra, o oyuncunun Player.CharacterAppearanceLoaded etkinliği sona erene kadar tekrar çağrılmamalıdır.

Karakter Yükleme Etkinliği Sırası

R15 Avatar ile Player:LoadCharacter() çağrılırsa aşağıdaki etkinlikler seri olarak çalışır (Not: R6 sırası farklıdır):

  1. Player.Character setleri
  2. Player.CharacterAdded yangınlar
  3. Player.Changed "Character" bir değerle ateş eder
  4. Karakter görünümü başlatılır
  5. Player.CharacterAppearanceLoaded ateşleri
  6. Character.Parent, DataModel'e ayarlandı
  7. Karakter şekillendirmeyi ve Karakter ölçeğini oluşturur
  8. Karakter oluşturma yerine hareket eder
  9. LoadCharacter dönüşleri

Dönüşler

void

Kod Örnekleri

This script turns off auto-loading and simulates character respawning.

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
Bekletir

Bu işlev bir avatar oluşturur, böylece HumanoidDescription'de eklenen her şeye sahiptir.

Bir bireysel oyuncu için LoadCharacterWithHumanoidDescription çağrılırken, o oyuncunun Player.CharacterAppearanceLoaded etkinliği sona erene kadar işlevi tekrar çağırmak önerilmez.

Ayrıca bakınız:

  • HumanoidDescription System, insanoid açıklama sisteminin daha ayrıntılı bir şekilde açıklanmasını sağlayan bir makale ve birkaç kod örneği sağlar

Parametreler

humanoidDescription: HumanoidDescription

Bir HumanoidDescription içeren, vücut parçaları / renkleri, vücut ölçeği, aksesuarlar, kıyafetler ve animasyonlar içeren özellikler içeren özellikler.


Dönüşler

void

Kod Örnekleri

To create a HumanoidDescription and then spawn a character with that description applied, add a Script (not a LocalScript) to the workspace and add this code to it.

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
Bekletir

For experiences where instance streaming is enabled, requests that the server stream to the player regions (parts and terrain) around the specified X , Y , 1>Z1> location in the 3D world. It is useful if the experience knows that the oyuncu's 4> Dat

Bu çağrının etkisi geçici olacak ve belirlenen yerin etrafında yayınlanacak olan şey için hiçbir garanti yoktur. Client hafıza sınırları ve ağ koşulları, klien üzerinde mevcut olan şeyin müsait olup olmadığını etkileyebilir.

Kullanım Dikkat

Bir alanın etrafında akış isteği göndermek garanti değildir , içerik isteğin tamamlanmasıyla birlikte mevcut olacak, çünkü akış etkili olabilir klien ağ bant genişliği, hafıza sınırları ve diğer faktörlerden etkilenir.

Parametreler

position: Vector3

Yayınlanması istediğiniz dünya konumu.

timeOut: number

talepiçin zorunlu süresi dolmasına izin verilen süre.

Varsayılan değer: 0

Dönüşler

void

Etkinlikler

CharacterAdded

KarakterAdded etkinliği, bir oyuncunun karakteri oluşturulduğunda (ya da yeniden doğduğunda) başlar. Bu etkinlik, Class.Player.Character 'i bir Player.Character değeri olarak ayarladıktan kısa bir süre sonra çağrılır (ya da Class.Player:LoadCharacter() 'i çağır

Bu, oyuncunun karakteri silineceğinden hemen önceki Player.CharacterRemoving etkinliği ile birlikte kullanılabilir, genellikle ölümden sonra. Bu yüzden, bu iki etkinliğin her biri potansiyel olarak birçok kez yanlışlıkla ölüp

Not: Bu olay patladığında Humanoid ve onun varsayılan vücut bölümleri (baş, gövde ve bilekler) mevcut olacak, ancak gi

Parametreler

character: Model

Karakterin oluşturulduğu/yeniden doğduğu yer.


Kod Örnekleri

This code sample demonstrates the usage of Players.PlayerAdded, Player.CharacterAdded and Player.CharacterRemoving in order to detect the spawning and despawning of players' characters. You can use this as a boilerplate script to make changes to players' characters as they spawn, such as changing Humanoid.WalkSpeed.

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)

This code sample will cause players to respawn at the same place they died. It does this by keeping track of where the player despawned using Player.CharacterRemoving. Note that the player's location is saved on-despawn, not on-death. This can be problematic if the player falls off a ledge and dies due to Workspace.FallenPartsDestroyHeight - their respawn position won't be saved in this case.

It's also important to note the need to "forget" the location of players who leave the game. We use Instance.ChildRemoved on Players instead of Players.PlayerRemoving. This is because PlayerRemoving fires before CharacterRemoving - and we need to make sure we don't forget the player's respawn location then immediately remember a new one (this is a memory leak; potentially many players could visit, respawn and leave). So, we use ChildRemoved on Players so the event fires after the character is removed.

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)

This code sample automatically removes Accessory objects like hats from the Player's character when they respawn. Warning: this includes hair, so this script may cause acute baldness.

When the Character() is added, we wait for RunService.Stepped to fire once (using the wait function of events). This is so the accessory removal logic runs one frame after the character spawns. A warning can appear if you delete accessories too quickly after the player spawns, so waiting one frame will avoid that.

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

Bu olay, bir Player.Character 'in tam görünümü girildiğinde başlar.

Bir Player.Character genellikle görünümünü değiştiren bir dizi nesne ile görünür. Bunlar arasında şunlar var: Accoutrements, Shirts, <

Bu etkinliğin bir kullanımı, tüm aksesuarların yüklendiğinden emin olmak. Aşağıda bunun bir örneği.

Parametreler

character: Model

Class.Player.CharacterModel .


Kod Örnekleri

This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.

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

Karakter kaldırma etkinliği, oyuncunun karakterini yeniden oluşturma işlemi yaparken doğrudan etkili olur, bunun gibi oyuncu yeniden doğduğunda.

Bu etkinlik, bir oyuncunun karakteri oluşturulduğunda veya öldüğünde başlayan Player.CharacterAdded etkinliği ile birlikte kullanılabilir. Mesajı her oyuncu oluşturduğunda veya öldüğünde yazdırmak isterseniz:


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)

Bu etkinlik sadece bir Character ın Player ı ile ilgilidir. Eğer oyuna bir oyuncu katıldığında/gitmesi gerektiğinde takip etmek için ayrıca Players.PlayerAdded ve 1> Class.Players.PlayerRemoving1> etkinliklerini kullanın.

Parametreler

character: Model

Kaldırılacak karakterin bir instanı.


Kod Örnekleri

This example prints the name of the character being removed, followed by "has died".

For instance, if Shedletsky's character was to die in-game, "Shedletsky has died." would be printed.

Player.CharacterRemoving

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

Chatted

Sohbet etme etkinliği, bir Player tarafından bir mesaj yazıldığında ve Roblox'un sağladığı sohbet kutusuna enter tuşuna basıldığında başlar. Bu, varsayılan sohbet kripti tarafından bazı Lua bağlantıları kullanarak önlenir. Class.StarterGui:SetCoreGui

Sohbet Komutları

Bu etkinliği ve bazı strung manipülasyon işlevleri, string.sub() ve string.lower() gibi, sohbet komutlarını oluşturmak mümkündür,

Sıralama

Bu olayla bağlantılan mesaj metni filtre edilmemiştir . Eğer oyununuzun diğer oyunculara herhangi bir şekilde gösterdiği oyun girişi gibi görüntüleniyorsa, bunu Chat:FilterStringAsync() kullanarak filtrelemelisiniz. Kendi sohbet sistemlerinizin oluşturulmasında bunu unutmayın;

Parametreler

message: string

Oyuncunun sohbete yazdığı mesajın içeriği.

recipient: Player

Deprecated. Sohbet mesajının hedefi olan oyuncu bu,


Kod Örnekleri

Setting chatted for all players. There is an easy way to make the Chatted event registered on all players. Simply use the Players.PlayerAdded event in combination with this event.

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)

This code sample, although lengthy, is quite simple: detect when a player chats /play, then put them on the "Playing" team. When they die, move them back to the "Spectating" team.

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)

This code sample allows any player to chat "/jointeam " where is the name of a team. It uses string manipulation using string.sub and string.lower to make the command case-insensitive and allow for partial matches. For example, "/jointeam red" will match the team "Red Robins".

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

Bu olay, oyun motoru sınıflandırmasının player'yı boşta durmaolarak olmasından yaklaşık iki dakika sonra başlar. Zaman, oyuncu'nun boş kaldığından bu noktadan itibaren olan saniye sayısıdır. Etkinliğin her 30 saniyesinde bir devam ettiği sürece oyuncu boşta durmakaldığından sürecek.

Bu olay sadece client script'lerinde çalışır, sunucu script'lerinde çalışmaz; bir RemoteEvent kullanarak sunucuya boş oyuncu bildirin.

Roblox, en az 20 dakika boyunca oyunu terk eden oyuncuları otomatik olarak bağlantıdan çıkarır, bu yüzden bu olay, oyuncuları yakında bağlayacaklarını hatırlatmak için kullanılır, oyuncuları 20 dakikadan önce veya diğer klavye uzaktayken (AFK) özelliklerinden bağlayıp bağlantıyı kesmek.

Otomatik olarak bağlantının meydana gelne sıklıkta olduğunu izlemek için, bu olayı Players.PlayerRemoving ile etkileşimlerine göre korrelasyon yaparak takip edin.

Parametreler

time: number

Oyuncunun saniye içinde boşta durmaolmadığı süre.


Kod Örnekleri

Prints how long a player has been idle for.

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

Bir oyuncunun TeleportDevleti değiştiğinde ateşlendi. Bu olay, bir ışınlanmanın başarılı olup olmadığını tespit etmek için yararlıdır.

TeleportState nedir?

Class.TeleportService kullanılarak bir ışınlanma isteği gönderildiğinde, Player ışınlanmadan önce bir dizi aşamalar vardır. Mevcut aşama OnTeleport tarafından verilen Enum.TeleportState değerine gösterilir. Aşağıda bunun pratik bir örneğine bakınız.

Parametreler

teleportState: Enum.TeleportState

Class.Player ın yeni Player .

placeId: number

Class.Player ın ışınlanacağı yerin ID'si.

spawnName: string

Işınlanmak için kullanılan nesnenin adı, if TeleportService:TeleportToSpawnByName() kullanılmışsa.


Kod Örnekleri

This example prints which stage of a teleport a player is at, as well as printing if the teleport was a failure.

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)