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, şu anda bağlı olan bir istemci.Bu nesneler, yeni bir oyuncu bağlandığında Players servise eklenir ve sonunda sunucudan koparıldığında kaldırılır.

The Instance.Name özelliği oyuncunun kullanıcı adını yansıtır.Bir oyuncu hakkında bilgi kaydederken, bir oyuncunun kullanıcı adını değiştirebileceği olasılığı nedeniyle onların Player.UserId kullanması gerekir.

Oyuncu nesneleri ile çalışmak için Players hizmetinde birkaç benzer yöntem bulunmaktadır. Bunları şu ilgili Instance yöntemleri üzerinde kullanın:

  • Players:GetPlayers() kullanarak mevcut Oyun nesnelerinin bir tablosunu alabilirsiniz; yine, bunu Instance:GetChildren() yerine kullanın.
  • Oyuncu nesnelerinin eklenmesini tespit etmek için, Players.PlayerAdded etkinliğini kullanmanız önerilir (Instance.ChildAdded hizmetindeki Players yerine).
  • Benzer şekilde, Oyuncu nesnelerinin kaldırılmasını Players.PlayerRemoving kullanarak tespit edebilirsiniz, bu da Oyuncu kaldırıldıktan hemen önce ateş eder (daha sonra ateş eden Instance.ChildRemoved yerine).Bu, oyuncunun kaldırılması veya temizlenmesi sırasında kaldırılabilecek veya temizlenebilecek bilgileri kaydederken önemlidir.

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

Hesap Yaşı, bir oyuncunun hesabının günlerce ne kadar önce kaydedildiğini tanımlayan bir Player özelliktir.Senaryolar tarafından erişilemeyen Player:SetAccountAge() işlevi kullanılarak ayarlanır ve bu ayar kodlar tarafından değiştirilemez.

Bu özellik, koşullu olarak yeni Roblox oyuncularının içeriğini göstermek için kullanışlıdır, örneğin eğitimler.

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 mobil cihaz kullanarak Player.Character bir Player 'in bir engelle karşılaştığında otomatik olarak atlayıp atlaymayacağını belirler.Bu, bir mobil cihazda seviyeleri daha gezinebilir 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şturulması sırasında Player.Character özelliğinin değerini belirler.Diğer bir deyişle, bu üç özellik kullanılarak her karakter, oyuncu ve oyun üzerinde otomatik atlama davranışını ayarlamak mümkündür.

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

CameraMaxZoomDistance Player özelliği, kameranın varsayılan kameralardan karakter ile olan maksimum mesafesini ayarlar.

Diğer bir deyişle, oyuncunun kamerasının dışarıya yakınlaşmasına izin verilen maksimum mesafeyi kontrol eder.

Bu özelliğin varsayılan değeri StarterPlayer.CameraMaxZoomDistance tarafından ayarlanır.Bu değer Player.CameraMinZoomDistance 'dan daha düşük bir değere ayarlanırsa, KameraMinZoomDistance'a yükseltilecektir.

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, kameranın varsayılan kameralarla karakterden alabileceği minimum mesafeyi santimetre olarak ayarlar.

Diğer bir deyişle, oyuncunun kamerasının küçülmesine izin verilen minimum mesafeyi kontrol eder.

Bu özelliğin varsayılan değeri StarterPlayer.CameraMinZoomDistance tarafından ayarlanır.Bu değer Player.CameraMaxZoomDistance 'dan daha yüksek bir değere ayarlanırsa, CameraMaxZoomDistance'a düşürülecektir.

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

Kamera Modu özelliği oyuncunun kamera modunu ayarlar, varsayılan olarak üçüncü kişiye.

Üçüncü Kişi

Varsayılan üçüncü şahıs modunda ( Enum.CameraMode.Classic ), karakter kamerada görülebilir. Bu modda, varsayılan davranış şudur:

  • Oyuncular sağ tıklayabilir ve sürükleyebilir (fare), dokunabilir ve sürükleyebilir (mobil), ikincil joystick'i (oyun kolu) kullanabilir veya sol/sağ ok tuşlarına (klavye) basarak kamerayı karakterlerinin etrafında döndürebilir.
  • Bir oyuncu karakterini hareket ettirdiğinde, karşılık gelen hareket yönüne bakar.
  • Oyuncular, tümüyle yakınlaşıp uzaklaşabilir, hatta ilk kişiye bile tümüyle yakınlaşabilir.

İlk Kişi

İlk kişi modunda ( Enum.CameraMode.LockFirstPerson ), oyuncunun kamerası tüm yola kadar yakınlaştırılır.Ekranda görünen bir GUI yoksa, GuiButton.Modal özellik seti true ile fare'u hareket ettirerek, mobil cihazda dokunarak veya bir oyun kumandasındaki ikincil joystick kullanarak kamera etrafında dönecektir.

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, oyuncunun oluştuğunda karakterin görünümünün yüklenecek olup olmadığını belirler.Bu özelliğin varsayılan değeri StarterPlayer.LoadPlayerAppearance tarafından ayarlanır.

Eğer doğru ise, karakter oyuncunun Player.CharacterAppearanceId 'ine karşılık gelen oyuncunun görünümünü yükleyecektir.

Eğer yanlış ise, oyuncu varsayılan bir görünümle doğacaktır - herhangi bir şapka, gömlek, pantolon vb. olmadan gri bir karakter modeli

Karakter oluştuktan sonra özelliği ayarlamaya çalışmak karakteri değiştirmeyecektir, yeni görünümü yüklemek için Player:LoadCharacter() 'yi aramanız gerekir.

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, deneyimde oyuncunun avatarını simüle etmek için gereken bir , vücut parçaları, senaryolar ve diğer nesneler içeren bir referans içerir.Model, Workspace ebeveyn olarak atanmıştır, ancak taşınabilir. olduğunda otomatik olarak yüklenir ve aksi takdirde kullanarak manuel olarak yüklenebilir.

Başlangıçta bu özellik nil ve oyuncunun karakteri ilk oluştuğunda ayarlanır.Bir oyuncunun karakterinin doğru yüklendiğini tespit etmek için Player.CharacterAdded etkinliğini ve karakterin yok olmak üzere olduğunu tespit etmek için Player.CharacterRemoving etkinliğini kullanın.Bu özellik üzerinde Object:GetPropertyChangedSignal() kullanımından kaçının.

Not that örneğin bir oyuncunun veya örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun örneğin bir oyuncunun bir oyuncunun örneğin bir oyuncunun bir oyuncunun bir oyuncunun bir oyuncunun bir oyuncunun bir oyuncunun bir oyuncunun bir oyuncunun bir oyuncun bir oyuncun bir oyuncun bir oyuncunun bir oyuncunun bir oyuncununun bir oyuncununun bir oyuncunun bir oyuncunun bir oyuncunun bir oyunununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununununBu nedenle, altında veya , örneğin kullanmadan önce Karakterin ebeveyninin olmadığından emin olmak gerekir, örneğin:


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, karakter görünümü bir oyuncunun için kullanılan hesabın kullanıcı kimliğini belirler character.Varsayılan olarak, bu özellik oyuncunun avatarını kullanır Player.UserId, Roblox web sitesinde oluşturduğu gibi.

Bu özelliği başka bir hesabın kullanıcı kimliğine değiştirmek, oyuncunun bu hesapgörünümüyle doğmasına neden olacaktır (şapkalar, tişörtler, pantolonlar vb.).

Oyunlar ayrıca bir oyuncunun karakterinin oyunda yüklü olup olmadığını değiştirerek StarterPlayer.LoadCharacterAppearance özelliğini değiştirerek oyuncunun karakterinin oyunda yüklü olup olmadığını değiştirebilir.

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 kamera senaryolarının kamera ve kamera konusu arasındaki nesneleri nasıl ele aldığını tanımlar.StarterPlayer.DevCameraOcclusionMode tarafından ayarlanır ve bireysel oyuncular için değiştirilemez.

Varsayılan değer Zoom (0) dir. Mevcut modların bir listesi için Enum.DevCameraOcclusionMode bakın.

Paralel oku

DevComputerCameraMode özelliği, bir oyuncunun bir cihazla fare ve klavye kullanarak kamerasını hareket ettirdiği şekli belirler.Kullanılabilir her kamerakontrol modu için bir açıklama görmek için Enum.DevComputerCameraMovementMode bakın.Bu özellik bir (sunucuda bir kullanarak ayarlanmalıdır) kullanılarak ayarlanamaz (sunucuda bir kullanılarak ayarlanmalıdır).

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

Bu özellik adındaki "Bilgisayar" kelimesi, TouchEnabled , GamepadEnabled cihazlara referans verir.

Kullanıcı Seçimi olarak ayarlanırken, bir oyuncu Roblox oyun ayarlarında herhangi bir kontrol modu arasında seçim yapabilir ( Yazılabilir hariç).Genel genel, oyuncuların erişilebilirliği maksimuma çıkarmak için kontrol modunu seçmelerine izin vermek iyi bir fikirdir.

Bu özelliği Yazılabilir olarak ayarlayarak özel bir kontrol şeması oluşturmak mümkündür.

Bu özellik, dokunma etkinleştirilmiş bir cihaz kullanan oyuncuları etkilemez. Bunun yerine Player.DevTouchCameraMode görün.

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 bir cihazla fare ve klavye kullanarak karakterini hareket ettirdiği şekli belirler.Mevcut her bir hareket kontrol modunun açıklaması için Enum.DevComputerMovementMode bakın.Bu özellik bir (sunucuda bir kullanarak ayarlanmalıdır) kullanılarak ayarlanamaz (sunucuda bir kullanılarak ayarlanmalıdır).

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

Bu özellik adındaki "Bilgisayar" kelimesi, TouchEnabled cihazlara referans vermez.

Kullanıcı Seçimi olarak ayarlanırken, bir oyuncu Roblox oyun ayarlarında herhangi bir kontrol modu arasında seçim yapabilir ( Yazılabilir hariç).Genel genel, oyuncuların erişilebilirliği maksimuma çıkarmak için kontrol modunu seçmelerine izin vermek iyi bir fikirdir.

Bu özelliği Yazılabilir olarak ayarlayarak özel bir kontrol şeması oluşturmak mümkündür.

Bu özellik, dokunma etkinleştirilmiş bir cihaz kullanan oyuncuları etkilemez. Bunun yerine Player.DevTouchMovementMode görün.

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 Mouse tuşuna basarak kilidi açıp açamayacağını belirler.Bir oyuncu, Roblox'un oyun ayarlarındaki fare kilitleme geçişini devre dışı bırakabilir.Varsayılan olarak, bu özellik StarterPlayer.EnableMouseLockOption değerine ayarlanır.Bu, bir Script kullanarak çalışma sırasında sunucu tarafında ayarlanabilir.Client tarafında ayarlanamaz.

Fare kilidi etkinleştirildiğinde, oyuncunun kuruluşu ekranın merkezine kilitlenir.Fare hareketi, oyuncunun çevresinde kamerayı döndürecek ve karakter aynı yöne bakacaktır: .Ayrıca kameranın görüşünü oyuncunun karakterinin sağ omzunun üzerinde dengeleyerek azaltır.

Vurgu kilidi ile ilgili API'lerin yeniden düşürülme sürecinde olduğunu unutmayın, bu yüzden fareyi kilitlemek için UserInputService.MouseBehavior yerine kullanmanız ö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 oyuncunun bir TouchEnabled cihaz kullanırken kamerasını hareket ettirdiği şekli belirler.Kullanılabilir her kamerakontrol modu için bir açıklama görmek için Enum.DevTouchCameraMovementMode bakın.Bu özellik bir (sunucuda bir kullanarak ayarlanmalıdır) kullanılarak ayarlanamaz (sunucuda bir kullanılarak ayarlanmalıdır).

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

Kullanıcı Seçimi olarak ayarlanırken, bir oyuncu Roblox oyun ayarlarında herhangi bir kontrol modu arasında seçim yapabilir ( Yazılabilir hariç).Genel genel, oyuncuların erişilebilirliği maksimuma çıkarmak için kontrol modunu seçmelerine izin vermek iyi bir fikirdir.

Bu özelliği Yazılabilir olarak ayarlayarak özel bir kontrol şeması oluşturmak mümkündür.

Bu özellik, dokunma etkinleştirilmiş bir cihaz kullanmayan oyuncuları etkilemez. Bunun yerine Player.DevComputerCameraMovementMode görün.

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 oyuncunun bir TouchEnabled cihaz kullanırken karakterini hareket ettirdiği şekli belirler.Hazır olan her bir hareket kontrol modu için açıklamayı Enum.DevTouchMovementMode görün.Bu özellik bir (sunucuda bir kullanarak ayarlanmalıdır) kullanılarak ayarlanamaz (sunucuda bir kullanılarak ayarlanmalıdır).

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

Kullanıcı Seçimi olarak ayarlanırken, bir oyuncu Roblox oyun ayarlarında herhangi bir kontrol modu arasında seçim yapabilir ( Yazılabilir hariç).Genel genel, oyuncuların erişilebilirliği maksimuma çıkarmak için kontrol modunu seçmelerine izin vermek iyi bir fikirdir.

Bu özelliği Yazılabilir olarak ayarlayarak özel bir kontrol şeması oluşturmak mümkündür.

Bu özellik, dokunma etkinleştirilmiş bir cihaz kullanmayan oyuncuları etkilemez. Bunun yerine Player.DevComputerMovementMode görün.

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 özellik, Player nesnesiyle ilişkili doğrulanmış kullanıcının görüntü adını içeren bir özelliktir.Kullanıcı adlarından farklı olarak, görüntü adları bir oyuncunun diğerlerine gösterdiği benzersiz olmayan isimlerdir.Roblox kullanıcısı birini seçmediyse, özellik aynı şekilde okunur Name özelliği.

Not:

  • Görüntü adları benzersiz olmadığından, tek bir durumda iki oyuncunun aynı adlara sahip olması mümkündür.Bir oyuncu için küresel olarak benzersiz bir tanımlayıcıya ihtiyacınız varsa, Player.UserId (statik) veya Player.Name (mevcut Kullanıcı Adı) yerine kullanın.
  • Player.LoadCharacter veya Roblox motoru tarafından oluşturulan karakterlerin Humanoid.DisplayName özellikleri, Player.DisplayName özelliğine atanacaktır.
  • Görüntü adlarının metinde ünikode karakterleri olabilir. Ünikode karakterlerle çalışmanın nasıl olduğuna dair daha fazla bilgi için UTF-8 bakın.

FollowUserId

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

FollowUserId, bir oyuncunun oyuna takip ettiği kullanıcının özelliğini içeren bir özelliktir.Oyuncu kimseyi oyuna takip etmediyse, bu özellik 0 olacaktır.Bu özellik, başka bir oyuncu tarafından oyuna takip edilen oyuncuları uyarmak için yararlıdır.

Bu kullanıcı kimliği ve Players:GetNameFromUserIdAsync() işlevi kullanılarak takip edilen oyuncunun adını alabilirsiniz.

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

Oyun Duraklattırıldı özelliği, oyuncunun şu anda aktifleştirilmiş bir yerde duraklama durumunda olduğunu gösterir, StreamingEnabled aktif edilmiş bir yerde.Müşteride ayarlanır, ancak sunucuya yeniden yazılır.Duraklama durumunu belirlemek için, bu özelliği kullanabilirsiniz.

Ayrıca bakın:

HasVerifiedBadge

Paralel oku

HasVerifiedBadge Player özelliği, oyuncunun doğrulanmış bir rozete sahip olup olmadığını gösterir.

HealthDisplayDistance

Paralel oku

SağlıkGörüntüleme Mesafesi Player özelliği, bu oyuncunun diğer Humanoid sağlık çubuklarını göreceği mesafe üzerinde santimetre cinsinden mesafe ayarlar.0 olarak ayarlanırsa, sağlık çubukları görüntülenmez.Bu özellik varsayılan olarak StarterPlayer.HealthDisplayDistance olarak ayarlanır.

Bir Insanoid'in sağlık çubuğu görülebilirse, görüntüleme türünü Humanoid.DisplayDistanceType kullanarak 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

Yerel kimlik Player özelliği, yerel oyuncunun Roblox hesapiçin ayarladığı yerel kimliği gösterir.Yerel için iki harfli kodla bir dize tutar ("örneğin, en-us") .

Bu, oyununuzun oyuncu tabanının coğrafik demografisini belirlemek için kullanılabilir ve ayrıca deneyim içeriğinin otomatik çevirisi için kullanılacak yerel dilidir (bakın GuiBase2d.AutoLocalize ).Bu özellik, oyuncunun yerelinden sunucudan erişimi sağlar.

Ayrıca bakın LocalizationService.RobloxLocaleId , içeriği yerelleştirmek için kullanılan yerel ID.Bu, Roblox henüz yerel oyuncunun set yerelini içsel olarak desteklemediğinde 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

Bu özellik yalnızca üyelik belirlemek için okunabilir (başka bir üyelik yazayarlanamaz).hesapüyelik yazbir Enum.MembershipType listesini 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

NameDisplayDistance StarterPlayer özelliği, bu oyuncunun diğer Humanoid isimleri göreceği mesafe üzerindeki metreleri ayarlar.Özellik 0 olarak ayarlanırsa, isimler gizlenir.Bu özellik varsayılan olarak StarterPlayer.NameDisplayDistance olarak ayarlanır.

Bir Insanoid'in sağlık çubuğu görülebilirse, görüntüleme türünü Humanoid.DisplayDistanceType kullanarak 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

Doğal mülk, oyuncunun belirli bir takımda olup olmadığını belirler.

  • When doğru, oyuncu belirli bir takımda değildir.Bu da demektir ki Player.Team özelliği nil olacak ve Player.TeamColor beyaz olacak.
  • When false , oyuncu belirli bir takımda.The Player.Team özelliği, oyuncunun bulunduğu Team 'e eşitlenecektir, tıpkı Player.TeamColor 'de olduğu gibi.

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

PartyId

Gizli
Çoğaltılmamış
Roblox Güvenliği
Paralel oku

ReplicationFocus

Paralel oku

ReplicationFocus Player özelliği, parçayı bir Oyun etrafında yeniden yazma odaklanmasına ayarlar.Ağ üzerinden iletişim kuran farklı Roblox sistemleri (fizik, yayın gibi), nesnelerin yeniden yapım odaklarına ne kadar yakın olduğuna bağlı olarak farklı oranlarda yeniden yapılır.

Bu özellik nil olduğunda, yerel oyuncunun karakterinin PrimaryPart 'ini yeniden yazma odak olarak ele alan varsayılan davranışına geri döner.

Bu özellik yalnızca bir Script ile sunucuya ayarlanmalıdır, bir LocalScript değil.Bu özellik parça ağ sahipliğini değiştirmediğini veya güncellemediğini unutmayın.

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

Ayarlandıysa, oyuncu verilen SpawnLocation 'de yeniden doğacaktır.Bu özellik yalnızca Luau aracılığıyla ayarlanabilir ve aşağıdaki kriterleri karşılamalıdır: SpawnLocation , geçmeli bir referans içermelidir:

RespawnLocation geçerli bir SpawnLocation olarak ayarlanmadıysa, varsayılan oluşturma mantığı uygulanacaktır.Bu konuda daha fazla bilgi için SpawnLocation sayfasına bakın.

RespawnLocation'a Alternatifler
  • Bir ekibine ait olacak ve oyuncunun yerine değiştirilmesi daha basit olabilir. Bazı durumlarda, oyuncunun yerine değiştirilmesi daha basit olabilir.
  • Kendi özel oluşturma mantığınızı uygulayın PVInstance:PivotTo() ile manuel olarak Player.Character 'yi hareket ettirin kullanarak.

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

StepIdOffset

Roblox Güvenliği
Paralel oku

Team

Çoğaltılmamış
Paralel oku

Takım özelliği, Team servis içindeki bir Teams nesneye referans verir.Oyuncunun hangi takımda olduğunu belirler; eğer Player bir takımda değilse veya geçersiz bir Player.TeamColor varsa, bu özellik nil dir.Bu özellik ayarlanırsa, oyuncu Team 'e katıldı ve Team.PlayerAdded etkinlik bağlı ekibe ateşlendi.Benzer şekilde, Team.PlayerRemoved özellik belirli bir Team dan kaldırıldığında ateşlenir.

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ım Rengi özelliği, bir oyuncunun hangi takımla ilişkili olduğunu belirler Team.TeamColor bir takımın çerçevesinde.Bu özelliği değiştirmek, hangi takımın aynı Player.Team 'ye sahip olduğuna bağlı olarak değişecektir BrickColor , çünkü çalışanları için aynı Team.TeamColor 'e sahiptir.Eğer bir Takım nesnesinin ilişkili bir TakımRenk'i yoksa, oyuncu bir takıma bağlanmayacaktır.

Bu özelliği kullanmak yerine genellikle Player.Team ile ilgili Team ayarlanması daha iyi bir fikirdir.Bu özelliği ayarlamak genellikle birçok koda yayılan aynı BrickColor değerinin tekrarlanmasına neden olur; bu, "Kendini Tekrarlamayın" (DRY) ilkesine uyarken kaçınmak istediğiniz bir şeydir.

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)

ThirdPartyTextChatRestrictionStatus

Salt Okunur
Çoğaltılmamış
Roblox Betik Güvenliği
Paralel oku

UserId

Paralel oku

Kullanıcı Kimliği, Roblox'taki her kullanıcı hesabını benzersiz ve tutarlı bir şekilde tanımlayan okunabilir bir sayı içeren bir özelliktir.Bir Oyuncunun Instance.Name 'undan farklı olarak, kullanıcının mevcut kullanıcı adına göre değişebilecek bu değer asla aynı hesap için değişmeyecek.

Bu özellik, GlobalDataStores kullanılarak oyuncu verileri kaydedilirken/yüklenirken çok önemlidir.Her oyuncunun benzersiz bir anahtara sahip olması için bir oyuncunun Kullanıcı Kimliğini veri depolama anahtarı olarak kullanın.

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

AddReplicationFocus

()

Parametreler

part: BasePart
Varsayılan değer: ""

Dönüşler

()

ClearCharacterAppearance

()

ClearCharacterAppearance işlevi, verilen oyuncunun , , , ve 'undan tümünü kaldırır.Ayrıca, oyuncunun gövdesindeki tişört Decal 'yi de kaldırır.Karakterin vücut kısmı renkleri ve yüzü değişmeden kalacaktır.Oyuncu bir Karaktere sahip değilse, bu yöntem hiçbir şey yapmaz.

t-shirts , kafa örgüleri veya yüzleri kaldırmaz.


Dönüşler

()

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, karakterin başı ve verilen Vector3 noktası arasındaki mesafeyi döndürür.Oyuncunun Player.Character 'ye sahip olmadığı durumda 0 döndürür.

Bu, bir oyuncu ve diğer bir nesne veya konum arasındaki mesafeyi belirlerken yararlıdır.

Eğer iki oyuncu olmayan instans veya pozisyon arasındaki mesafeyi belirlemek istiyorsanız, takip edilenşeyleri kullanabilirsiniz:


local distance = (position1 - position2).Magnitude

Parametreler

point: Vector3

oyuncumesafesinin ölçüldüğü yer.

Varsayılan değer: ""

Dönüşler

Oyuncu ve konum arasındaki çubuk mesafesi.

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

Oyuncunun deneyime nasıl katıldığını tanımlayan bilgileri içeren bir sözlük döndürür. Sözlük aşağıdaki alanlardan herhangi birini içerir:


<th>Değer Türü</th>
<th>Açıklama</th>
</tr>
</thead>
<tbody>
<tr>
<th>Kaynak Oyun ID'si</th>
<td>sayı</td>
<td>Deneyimden <code>Class.DataModel.GameId</code> ı çıkan <code>Oyuncu</code> 'nun teleport edildiği deneyimin.Sadece oyuncu mevcut deneyime ışınlanır ve bir sunucu teleport işlevini çağırırsa mevcuttur.</td>
</tr>
<tr>
<th>Kaynak Yeri ID'si</th>
<td>sayı</td>
<td>Oyuncunun <code>yerden</code> yönlendirildiği yerin <code>Class.DataModel.PlaceId</code> 'si.Sadece oyuncu mevcut yere ışınlanır ve bir sunucu teleport işlevini çağırırsa mevcuttur.</td>
</tr>
<tr>
<th>Tarafından referans edildiOyuncuId</th>
<td>sayı</td>
<td>Oyuncuyu deneyime davet eden oyuncunun <code>Class.Player.UserId</code> 'si.Bu verileri kullanarak referansı tanımlayın ve ödül mantığını tetikleyin.</td>
</tr>
<tr>
<th>Üyeler</th>
<td>array
yazım tarihi: 2020-04-10</td>
<td>Kullanıcıların yanında ışınlanan <code>Class.Player.UserId</code> sayılarını içeren bir dizi, <code>Oyuncu</code> .Sadece oyuncu bir grupparçası olarak ışınlandıysa mevcuttur.</td>
</tr>
<tr>
<th>IşınlanmaVerisi</th>
<td>çeşit</td>
<td>Orijinal ışınlamada belirtilen <code>teleportData</code> yansıtır.Oyuncunun yönlendirildiği sunucular arasında bilgi paylaşımı için yararlı.Sadece <code>teleportData</code> belirtildiğinde ve bir sunucu teleport işlevini çağırdığında mevcuttur.</td>
</tr>
<tr>
<th>BaşlatmaVerisi</th>
<td>dizi</td>
<td>Bir <a href="../../../production/promotion/deeplinks.md">derin bağlantı</a> URL'sinde belirtilen başlatma verilerini içeren basit veya JSON kodlanmış bir dize veya <code>Class.ExperienceInviteOptions.LaunchData</code>.</td>
</tr>
<tr>
<th>OyunKatılmaKonteksi</th><td>sözlük</td>
<td>
Oyun katılımının konumuna dayalı önemli bilgileri içeren bir sözlük. İçinde şu anahtarlar bulunur:
<ul>
<li><code>JoinSource</code> : <code>Enum.JoinSource</code></li><li><code>ItemType</code> : isteğe bağlı <code>Enum.AvatarItemType</code></li><li><code>AssetId</code> : isteğe bağlı <code>string</code> ></li><li><code>OutfitId</code> : isteğe bağlı <code>string</code> ></li><li><code>AssetType</code> : isteğe bağlı <code>Enum.AssetType</code> ></li>
</ul>
</td>
</tr>
</tbody>
Anahtar

GetJoinData ve TeleportData alın

Bir sunucu Oyuncunun ışınlanmasını başlatırsa, bu yöntemin döndürdüğü sözlük oyuncunun ışınlanma verilerini içerir.The Player:GetJoinData() yöntemi yalnızca sunucuda ışınlanma verilerini almak için kullanılabilir.Müşterideki verileri almak için TeleportService:GetLocalPlayerTeleportData() kullanın.

Farklı olarak TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() sadece aşağıdaki güvenlik kriterlerini karşılayan teleport verileri sağlar:

  • Son 48 saat içinde bir Roblox sunucusu tarafından gönderilmiş olması garantilidir.
  • Bu ile gönderilmiş olması garantilidir Player .
  • The SourcePlaceId ve SourceGameId verilerin gönderildiği yer ve evren olduğu garanti edilir.Bu, yönlendirme verilerinin onaylanmış bir dünyageldiğini doğrulayabileceğiniz anlamına gelir.

Bu veriler istemci tarafından iletildiğinden, bir saldırgan tarafından hala potansiyel olarak kötüye kullanılabilir.Oyuncu para birimi gibi hassas veriler Hafıza Düzenleri gibi güvenli bir çözüm aracılığıyla iletilmelidir.


Dönüşler

PlaceId ve UserId değerlerini 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, müşteri tarafından kullanılan Mouse işlevini geri döndürür.oyuncufare istemcisi, sol ve sağ fare düğmesi tıklamaları ve hareket ve konum dahil kullanıcı fare girişini izlemek için kullanılabilir.

The UserInputService servisi, kullanıcı girişini izlemek için ek fonksiyonlar ve olaylar sağlar - özellikle de fare kullanmayan cihazlar için.

Not:

  • Bu öğe beklenen şekilde çalışmak için bir LocalScript.
  • Temmuz 2014'te bir güncellemeden sonra, fare simgesi 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 saniyeler içinde izole ağ gecikmesini Player geri verir.“Ping” verilerin istemciden sunucuya gönderilmesi ve ardından geri gönderilmesi için gereken sürenin bir ölçüsüdür.Veri çözümleme veya işleme dahil değildir.

Müşteri tarafı için LocalScripts, bu işlev yalnızca Players.LocalPlayer üzerinde çağrılabilir.Bu işlev, yüksek ağ gecikme senaryolarında meydana gelen sorunları tanımlamak ve gidermek için yararlıdır.Ayrıca, mermiler için atış animasyonlarının hızını ayarlamak gibi gecikmeyi gizlemeye de yararlıdır.


Dönüşler

HasAppearanceLoaded

HasAppearanceLoaded Player işlevi, oyuncunun Player.Character görünümünün yüklendiği veya yüklenmediği konusunda geri döner.

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

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


Dönüşler

oyuncukarakterinin görünümünün yüklendiğini veya yüklenmediğini gösteren bir mantık değeri.

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 true/false değeri döndürür.Gerçek olduğunda, oyuncu doğrulanır.Doğrulama, ancak sınırlı değil, VOIP telefon numarası veya hükümet kimlik doğrulaması içerir.

IsVerified uygularken, uygulamanın tüm doğrulanmamış kullanıcıları kasıtsız olarak engellemediğinden emin olmak için dikkat gösterin.

Yöntemin sadece arka plandaki sunucuda çağrılabileceğini unutmayın.Bunu istemci tarafından çağırmak bir hata ile sonuçlanır.Ayrıca, bu yöntem Studio'da daima false döndürecektir.


Dönüşler

Oyuncunun doğrulandığını gösteren bir mantık değeri.

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

()

The Kick() yöntemi, bir deneyin bir istemciyi zarif bir şekilde bağlantıdan koparmasına ve bağlantı kesilmiş kullanıcıya isteğe bağlı olarak bir mesaj vermesine izin verir.Bu, saldırgan kullanıcıları moderasyon etmek için yararlıdır.Bu yöntemi diğer kullanıcılara tetiklemek için güvendiğiniz belirli kullanıcılara izin vermelisiniz.

Bu yöntemi hiçbir argümanla çağırmak, kullanıcıyı sunucudan koparır ve varsayılan bir uyarı mesajı sağlar. PlayerBu yöntemi bir dize ile birlikte Player çağırarak, varsayılan mesajı verilen diziile değiştirmek, varsayılan mesajı değiştirir.

Bu yöntemi bir LocalScript 'dan kullandığınızda, yalnızca yerel kullanıcının istemcisi atılabilir.

Parametreler

message: string

Kullanıcıyı tekme attıktan sonra gösterecek mesaj.

Varsayılan değer: ""

Dönüşler

()

Move

()

Hareket Player işlevi, oyuncunun karakterinin verilen yönde yürümesine neden olur, durdurulana veya oyuncu tarafından kesilene kadar (denetimlerkullanarak).

Bu, bir harita etrafında dolaşan NPC Humanoids yazarken yararlıdır - ancak gerçek bir oyuncunun girişi tarafından kontrol edilmez.

İşlevin ikinci argümanı, sağlanan Vector3 'in oyuncuyu dünya koordinatlarına hareket ettirmesini gerektirip gerektirmediğini gösterir (false). Oyuncunun Camera 'unu (true) hareket ettirmesi gerektirir.

Parametreler

walkDirection: Vector3

Oyuncunun hareket etmesi gereken Vector3 yönü.

Varsayılan değer: ""
relativeToCamera: boolean

Oyuncunun oyuncunun kamerasına göre hareket etmesi gerektiğini gösteren bir boolean.

Varsayılan değer: false

Dönüşler

()

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)

RemoveReplicationFocus

()

Parametreler

part: BasePart
Varsayılan değer: ""

Dönüşler

()

SetAccountAge

()
Eklenti Güvenliği

SetAccountAge işlevi, oyuncunun günlerdeki Player.AccountAge sınırını ayarlar.

Bir oyuncunun hesabının günler önce ne kadar süredir kaydedildiğini tanımlayan Player özelliğini ayarlamak için kullanılır.

Bu, hesapoyuncusunun yaşını ayarlamaz, ancak hesabın kendisinin ilk oluşturulduğu süreyle ilgili yaşı.

Parametreler

accountAge: number

Hesabın günlerdeki yaşı.

Varsayılan değer: ""

Dönüşler

()

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

()
Eklenti Güvenliği

Bu yöntem, oyuncunun normal sohbetler yerine TextService:FilterStringAsync() tarafından filtrelenen sohbeti görüp görmediğini ayarlar.


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

Bir oyuncunun sohbet filtrelemeye sahip olup olmadığına bakılmaksızın, tüm sohbetler diğer oyunculara veya oyuncunun kendi ekranına yayınlandığında TextService tarafından filtrelenmelidir.TextService:FilterStringAsync() geri döndürür bir mesajın niyet edilen kullanımına göre farklı şekilde filtrelenebilecek bir TextFilterResult nesne.

Parametreler

value: boolean

Oyuncunun filtrelenmiş sohbeti görüp görmediğini gösteren bir mantık değeri.

Varsayılan değer: ""

Dönüşler

()

GetFriendsOnline

Bekletir

Bu işlev, maxFriends değeriyle sınırlı bir online arkadaşlar sözlük dizesi döndürür. İşlev, 30 saniye süreyle bir önbellek kullanır.

Geri döndürülen dizeye, bazı alanlar yalnızca belirli konum türleri için mevcuttur.Örneğin, Yer Kimliği Konum Türü 0 olduğunda mevcut olmayacaktır (Mobil Web Sitesi).


<th>Tür</th>
<th>Açıklama</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>ZiyaretçiID</b></td>
<td>sayı</td>
<td>Arkadaşın <code>Class.Player.UserId</code> 'arkadaş.</td>
</tr>
<tr>
<td><b>Kullanıcı Adı</b></td>
<td>dizi</td>
<td>arkadaşkullanıcı adı.</td>
</tr>
<tr>
<td><b>Görüntüleme Adı</b></td>
<td>dizi</td>
<td>Arkadaşın <code>Class.Player.DisplayName</code> 'arkadaş.</td>
</tr>
<tr>
<td><b>Sonraki Online</b></td>
<td>dizi</td>
<td>Arkadaş son kez çevrimiçiolduğunda.</td>
</tr>
<tr>
<td><b>Çevrimiçi IsOnline</b></td>
<td>boşluklı</td>
<td>Arkadaş şu anda çevrimiçiyse.</td>
</tr>
<tr>
<td><b>Son Konum</b></td>
<td>dizi</td>
<td>arkadaşmevcut konumunun adı.</td>
</tr>
<tr>
<td><b>YerId</b></td>
<td>sayı</td>
<td>arkadaşson konumunun yer kimliği.</td>
</tr>
<tr>
<td><b>OyunId</b></td>
<td>dizi</td>
<td>arkadaşson konumunun <code>DataModel/JobId</code>'si.</td>
</tr>
<tr>
<td><b>Konum Türü</b></td><td>sayı</td>
<td>
Arkadaşın son konumunun konum türü: 0 Mobil Web sayfası > > Mobil Oyun sayfası > > 2 3 4 5 İnternet sayfası İnternet sayfası İnternet sayfası İnternet sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayfası sayı sayfası sayfası sayfası sayı sayı sayfası sayı sayı sayfası sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı sayı
</td>
</tr>
</tbody>
Adı

Parametreler

maxFriends: number

Geri dönmek için maksimum çevrimiçi arkadaş sayısı.

Varsayılan değer: 200

Dönüşler

Çevrimiçi arkadaşların 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 grubdaki rütbesini 0 ile 255 arasında bir tamsayı olarak döndürür, 0 bir üye değildir ve 255 grup sahibidir.

Bunu bir Script 'de kullanmak, bir LocalScript 'e göre en yeni bilgileri almayacaktır.Bir oyuncu oyunda olduğu sırada bir grubu terk ederse, GetRankInGroup hala ayrılana kadar o grubun içinde olduklarını düşünecektir.Ancak, bunlar yerel bir Script ile kullanıldığında gerçekleşmez.

Bunun nedeni, yöntemin sonuçlarını depolamasıdır, bu nedenle aynı oyuncuya aynı grup kimliği ile verilen çok sayıda GetRankInGroup çağrısı, yöntem ilk kez verilen grup kimliği ile aynı sonucu verecektir.Önbellekleme davranışı per-peer tabanlıdır: bir sunucu aynı önbelleği bir istemci ile paylaşmaz.

Parametreler

groupId: number

Belirtilen grupgroupId 'si.

Varsayılan değer: ""

Dönüşler

oyuncugrubdaki rü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 grubdaki rolünü bir diziolarak veya Konuk oyuncu grupbir parçası değilse geri döndürür.

Bunu bir Script 'de kullanmak, bir LocalScript 'e göre en yeni bilgileri almayacaktır.Bir oyuncu oyundayken bir grubu terk ederse, GetRoleInGroup hala ayrılana kadar o grubun içinde olduklarını düşünecektir.Ancak, bunlar yerel bir Script ile kullanıldığında gerçekleşmez.

Bunun nedeni, yöntemin sonuçlarını depolamasıdır, bu nedenle aynı oyuncuya aynı grup kimliği ile verilen çok sayıda GetRoleInGroup çağrısı, yöntem ilk kez verilen grup kimliği ile aynı sonucu verecektir.Önbellekleme davranışı per-peer tabanlıdır: bir sunucu aynı önbelleği bir istemci ile paylaşmaz.

Parametreler

groupId: number

Belirtilen grubun grupId grubu.

Varsayılan değer: ""

Dönüşler

Belirtilen grupoyuncunun rolü veya Konuk 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şı olup olmadığını sormak için Roblox web sitesine bir istek gönderir, bu kullanıcının Player.UserId 'sine göre.Bu işlev sonuçları önbelleğe alır, böylece aynı oyuncuda aynı Player.UserId ile aynı işlevin birden fazla çağrısı en son sonucu vermeyebilir.Bu, bir LocalScript içinde kullanıldığında gerçekleşmez.

Parametreler

userId: number

Belirtilen oyuncunun Player.UserId 'si.

Varsayılan değer: ""

Dönüşler

Bir oyuncunun belirtilen kullanıcının arkadaşı olup olmadığını gösteren bir mantık değeri.

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

IsInGroup Player işlevi, bir oyuncunun bir grupüyesi olup olmadığını sormak için Roblox web sitesine bir istek gönderir, bu grupkimliğine göre.

Bunu bir Script 'de kullanmak, bir LocalScript 'e göre en yeni bilgileri almayacaktır.Bir oyuncu oyunda olduğu sırada bir grubu terk ederse, IsInGroup hala ayrılana kadar o grubun içinde olduklarını düşünecektir.Ancak, bunlar yerel bir Script ile kullanıldığında gerçekleşmez.

Bunun nedeni, yöntemin sonuçlarını önbelleğe almasıdır, bu nedenle aynı oyuncuya aynı grup kimliği ile verilen çok sayıda IsInGroup çağrısı, yöntem ilk kez verilen grup kimliği ile aynı sonucu verecektir.Önbellekleme davranışı per-peer tabanlıdır: bir sunucu aynı önbelleği bir istemci ile paylaşmaz.

Parametreler

groupId: number

Belirtilen grubun grupId grubu.

Varsayılan değer: ""

Dönüşler

Oyuncunun belirtilen grupait olup olmadığını gösteren bir mantık değeri.

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

()
Bekletir

LoadCharacter Player işlevi oyuncu için yeni bir karakter oluşturur ve eskisini kaldırır.Ayrıca oyuncunun Backpack ve PlayerGui 'sini temizler.

Bu, oyuncuyu öldürmeden karakteri yeniden yüklemeyi istediğiniz durumlarda yararlıdır, örneğin oyuncunun Player.CharacterAppearance görünümünü değiştirdikten sonra yeni bir karakter görünümü yüklemeyi istediğinizde.

Not: İşlev Player:LoadCharacterBlocking() ile benzer, ancak istek senkron olarak değil asenkron olarak işlenir.Bu, karakterin yüklenmesi sırasında diğer görevlerin devam edebileceği ve oyunun renderlenmesi ve diğer görevler dahil olmak üzere herhangi bir görevin devam edebileceği anlamına gelir.Ayrıca, bu işlev bir senaryoda kullanılabilirken, LoadCharacterBlocking kullanılamaz.

Bir oyuncu için LoadCharacter'ı çağırdıktan sonra, o oyuncunun Player.CharacterAppearanceLoaded etkinliği ateşlenene kadar aynı oyuncu için tekrar çağırmak önerilmez.

Karakter Yükleme Etkinliği sırası

R15 Avatar ile Player:LoadCharacter() 'yi aramak, aşağıdaki sırayla olayları ateş eder (Not: R6 siparişi farklıdır):

  1. Oyuncu.Karakter setleri
  2. Oyuncu.CharacterAdded ateşler
  3. Oyuncu.Changed değeri "Karakter" ile ateş eder
  4. Karakter görünümü başlatılır
  5. Oyuncu.CharacterAppearanceLoaded ateşler
  6. Karakter.Parent, DataModel'e ayarlanır
  7. Karakter modeli oluşturulur ve Karakter ölçekleri
  8. Karakter doğum konumuna hareket eder
  9. LoadCharacter dönüşleri

Dönüşler

()

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

()
Bekletir

Bu işlev bir avatar oluşturur, böylece geçirilen HumanoidDescription 'de her şey takılıdır.

Bir oyuncuya LoadCharacterWithHumanoidDescription çağrısı yapıldıktan sonra, o oyuncunun Player.CharacterAppearanceLoaded etkinliği ateşlenene kadar aynı oyuncu için işlevi tekrar çağırmak önerilmez.

Ayrıca bakın:

  • İnsansız Açıklama Sistemi , insansız açıklama sistemini daha ayrıntılı olarak açıklayan ve birkaç kod örneği sağlayan bir makale

Parametreler

humanoidDescription: HumanoidDescription

Vücut parçaları/renkleri, vücut ölçekleme, aksesuarlar, kıyafetler ve yüklenecek karaktere donatılacak animasyonlar gibi özellikler içeren bir HumanoidDescription Turkish:Yüklenecek karaktere donatılacak vücut parçaları/renkler, vücut ölçekleme, aksesuarlar, kıyafetler ve animasyonlar gibi özellikler içeren bir

Varsayılan değer: ""

Dönüşler

()

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

()
Bekletir

Örnek yayını etkinleştirilmiş deneyimler için, sunucunun belirtilen X , Y , Z konumundaki 3B dünyada oyuncu bölgelerine (parçalar ve arazi) yayın yapması isteği.Deneyim, oyuncunun CFrame yakın gelecekte belirtilen konuma ayarlanacağını bildiğinde yararlıdır.Konumu bu çağrıyla sağlamadan, oyuncu hedef için içerik yayınlamayabilir ve bu da yayın duraklamasına veya diğer istenmeyen davranışlara neden olabilir.

Bu çağrının etkisi geçici olacak ve belirtilen konuma yayınlanacak şeyler konusunda hiçbir garanti yok.Müşteri bellek sınırları ve ağ koşulları, müşteride neyin mevcut olacağını etkileyebilir.

Kullanım Önlemi

Bir alan etrafında yayın isteği göndermek garanti değildir , çünkü yayın, istemcinin ağ genişliği, hafıza sınırları ve diğer faktörler tarafından etkilendiği için içerik istek tamamlandığında mevcut olacaktır.

Parametreler

position: Vector3

Yayın istenen dünya konumu.

Varsayılan değer: ""
timeOut: number

Talebin için talepbağlı süre sınırı.

Varsayılan değer: 0

Dönüşler

()

Etkinlikler

CharacterAdded

Karakter Eklendi etkinliği, bir oyuncunun karakteri doğduğunda (veya yeniden doğduğunda) ateşlenir.Bu olay, Player.Character 'yi bir nil değerine ayarladıktan veya Player:LoadCharacter() 'yi çağırdıktan kısa bir süre sonra ateş edilir, ki bu karakterin Workspace 'ye ebeveyn olmasından önce.

Bu, oyuncunun karakterinin kaldırılmasından hemen önce ateşlenen Player.CharacterRemoving etkinliğiyle birlikte kullanılabilir, genellikle ölümden sonra.Bu nedenle, bu iki olay potansiyel olarak oyuncular öldükten sonra bir dünyayeniden doğduklarında birçok kez ateş edebilir.Bir oyuncu katıldığında veya oyundan ayrıldığında tespit etmek istiyorsanız, bunun yerine Players.PlayerAdded ve Players.PlayerRemoving etkinliklerini kullanın.

Bu olay ateşlendiğinde Humanoid ve varsayılan vücut parçaları (baş, gövde ve uzuvlar) mevcut olacak, ancak Hats , Shirts ve Pants gibi kıyafet öğeleri karaktere eklenmesi birkaç saniye sürebilir.Bunları tespit etmek için eklenen karaktere Instance.ChildAdded bağlanın veya Player.CharacterAppearanceLoaded etkinliğinin karakterin her şeye sahip olduğundan emin olmasını bekleyin.

Parametreler

character: Model

Karakterin oluşturuldu/yeniden oluşturuldu bir örneği.


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 'nin tüm görünümü yerleştirildiğinde ateşlenir.

Bir Player.Character genellikle görünümünü değiştiren bir dizi nesneye sahiptir, bunlar arasında Accoutrements , Shirts , Pants ve CharacterMeshes bulunur.Bu olay, tüm bu nesneler Player.Character içine yerleştirildiğinde ateşlenecektir.

Bu olay yalnızca sunucuda ateşlenir.

Bu etkinlik için bir kullanım, onları yok etmeden önce tüm aksesuarların yüklendiğinden emin olmaktır. Bunun bir örneğini aşağıda görün.

Parametreler

character: Model

The Class.Player.Character``Class.Model .


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

KarakterKaldırma etkinliği, oyuncunun karakteri kaldırılmadan hemen önce ateşlenir, örneğin oyuncu yeniden doğduğunda.

Bu etkinlik, oyuncunun karakteri doğduğunda veya yeniden doğduğunda ateşlenen Player.CharacterAdded etkinliği ile birlikte kullanılabilir.durum, bir oyuncu her oluştuğunda ve öldüğünde bir mesaj basmak istiyorsanız:


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 olay yalnızca bir Character 'nin Player 'sine ilgilidir.Bunun yerine bir oyuncunun oyuna katıldığını/oyundan ayrıldığını izlemeniz gerekiyorsa, olayları Players.PlayerAdded ve Players.PlayerRemoving kullanın.

Parametreler

character: Model

Kaldırılan karakterin bir örneği.


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 etkinliği, bir Player bir mesaj yazdığında ve Roblox'un sağladığı sohbet çubuğuna gir butonuna basıldığında ateşlenir.Bu, varsayılan sohbet senaryosu tarafından bazı Luau bağlantıları kullanılarak yapılır.Oyuncuların sohbet etmesini engellemek için StarterGui:SetCoreGuiEnabled() ve Sohbeti devre dışı bırakarak Enum.CoreGuiType engelleyebilirsiniz.

Sohbet Komutları

Bu olayı ve string.sub() ve string.lower() gibi bazı dize manipülasyon işlevlerini kullanarak, oyuncu isimleri gibi argümanlarla bile sohbet komutları oluşturmak mümkündür.Genellikle, komutlar heal PlayerName gibi ön ekler.Bir dizibir ön ek kontrol etmek için, mesajın bir kısmını kontrol etmek için string.sub() kullanın: string.sub(message, 1, 6) == "/heal " (boşluğun dahil edilmesini not edin).Sonra, komutanın geri kalanını string.sub() yeniden çıkarın: string.sub(message, 7) oyuncu adına eşit olacaktır.O oyuncunun var olup olmadığını kontrol edin ve varsa, komutun eylemini gerçekleştirin (bu örnekte, onları iyileştirme).Sohbet komutlarının örnekleri için kod örneklerini kontrol edin.

Süzme

Bu olayla ateşlenen mesaj metni filtresizdir .Oyuncu girişini herhangi bir şekilde diğer oyunculara sohbet gibi gösteriyorsanız, bunun Chat:FilterStringAsync() kullanılarak filtrelenmesi gerekir.Kendi sohbet sistemlerinizi oluştururken bunu göz önünde bulundurun; eğer oyununuz sohbeti doğru bir şekilde filtrelemezse, ona karşı moderasyon eylemi yapılabilir.

Parametreler

message: string

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

recipient: Player

Eskitildi. Fısıltı mesajları için, bu, sohbet mesajının hedeflendiği oyuncuydu.


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 player 'yi boş olarak sınıflandırdıktan yaklaşık iki dakika sonra boşta durmaeder.Süre, bu noktadan beri geçen saniye sayısıdır.Oyuncu duraksadığı sürece olay her 30 saniye boyunca boşta durmaedilmeye devam eder.

Bu olay yalnızca istemci kodlarında ateş edilir, sunucu kodlarında değil; sunucuya boş oyuncuları bildirmek için bir RemoteEvent kullanın.

Roblox, en az 20 dakika boyunca aktif olmayan oyuncuları otomatik olarak bağlantıdan koparır, bu nedenle bu olay, oyunculara yakında bağlantı kesileceği konusunda uyarı yapmak ve 20 dakika öncesinden oyuncuları bağlantıdan koparmak veya diğer klavyeden uzak (AFK) özelliklerden uzak gibi diğer özellikler için yararlıdır.

Otomatik kopma sıklığını izlemek için, bu olayı Players.PlayerRemoving olaylarıyla ilişkilendirmeyi deneyin.

Parametreler

time: number

Oyuncunun saniyeler içinde boşta durmakaldığı 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 TeleportState'i değiştiğinde ateş edilir. Bu etkinlik, bir teleportasyonun başarılı olup olmadığını tespit etmek için yararlıdır.

TeleportState nedir?

Bir ışınlanma isteği TeleportService kullanılarak yapıldığında, Player ışınlanmadan önce bir dizi aşama vardır.Mevcut aşama, OnTeleport tarafından verilen Enum.TeleportState değeriyle temsil edilir.Bunun pratik bir örneğini aşağıda görün.

Parametreler

teleportState: Enum.TeleportState

Enum.TeleportState 'nin yeni Player 'si.

placeId: number

Player nereye ışınlanıyor yerinin kimliği.

spawnName: string

Işınlanmak için yaratılan isim, TeleportService:TeleportToSpawnByName() kullanıldıysa.


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)