Player

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Objek Pemain adalah objek klien yang saat ini terhubung. Objek ini ditambahkan ke layanan Class.Players ketika seorang pemain baru terhubung, lalu dihapus ketika mereka akhirnya terputus dari server.

Properti Instance.Name mewakili nama pengguna pemain. Saat menyimpan informasi tentang pemain, Anda harus menggunakan Player.UserId mereka karena mungkin seorang pemain dapat mengubah nama pengguna mereka.

Ada beberapa metode serupa dalam layanan Players untuk bekerja dengan objek Pemain. Gunakan ini di atas metode masing-masing mereka Instance :

Contoh Kode

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)

Rangkuman

Properti

Metode

Acara

Properti

AccountAge

Hanya Baca
Tidak Direplikasi
Baca Paralel

The AccountAge adalah property Player yang menggambarkan berapa lama waktu yang telah diperbarui account pemain dalam hari. Ini diatur menggunakan fungsi Player:SetAccountAge(), yang tidak dapat diakses oleh skrip.

Item ini berguna untuk menampilkan konten pemain Roblox baru secara kondisional seperti tutorial.

Contoh Kode

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

Baca Paralel

Properti AutoJumpEnabled menentukan apakah Player.Character dari Class.Player menggunakan perangkat seluler akan secara otomatis melompat ketika mereka menabrakkan rintangan. Ini dapat membuat tingkat lebih terselubung saat berada di perangkat seluler.

Ketika pemain bergabung dengan game, nilai StarterPlayer.AutoJumpEnabled menentukan status awal dari prop ini. Kemudian, prop ini menentukan nilai Humanoid.AutoJumpEnabled dari prop Player.Character saat menelur. Secara kata l

Contoh Kode

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

Baca Paralel

Hak CameraMaxZoomDistance Player menetapkan jarak maksimum dalam studs kamera dapat berasal dari karakter dengan kamera default.

Dengan kata lain, itu mengontrol jarak maksimum yang diizinkan kamera pemain untuk mengekspor.

Nilai default dari properti ini ditetapkan oleh StarterPlayer.CameraMaxZoomDistance . Jika nilai ini ditetapkan ke nilai yang lebih rendah dari Player.CameraMinZoomDistance, itu akan ditingkatkan ke CameraMinZoomDistance.

Contoh Kode

Setting Camera Zoom Distance

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

CameraMinZoomDistance

Baca Paralel

KameraMinZoonDistance Player property menetapkan jarak minimum dalam studs kamera dapat berasal dari karakter dengan kamera default.

Dengan kata lain, itu mengontrol jarak minimum yang diizinkan kamera pemain untuk zoom dalam.

Nilai default dari properti ini ditetapkan oleh StarterPlayer.CameraMinZoomDistance . Jika nilai ini ditetapkan ke nilai yang lebih tinggi dari Player.CameraMaxZoomDistance itu akan dikurangi menjadi CameraMaxZoomDistance.

Contoh Kode

Setting Camera Zoom Distance

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

CameraMode

Baca Paralel

Properti CameraMode mengatur mode kamera pemain, beralih ke mode pihak ketiga.

Orang Ketiga

Dalam mode orang ketiga default ( Enum.CameraMode.Classic ) , karakter dapat dilihat di kamera. Saat dalam mode ini, perilaku default adalah:

  • Pemain dapat menekan tombol kanan dan menyeret (mouse), mengetuk dan menyeret (Mobile), menggunakan tombol penggeseran sekunder (Gamepad), atau menekan tombol kiri/kanan (Keyboard) untuk memutar kamera di sekitar karakter mereka.
  • Ketika pemain menggerakkan karakter mereka, itu menghadap ke arah gerakan yang sesuai.
  • Pemain dapat mengeklik dan mengeklik keluar secara bebas, bahkan kepada orang pertama di zoom penuh.

Orang Pertama

Pada mode orang pertama ( Enum.CameraMode.LockFirstPerson )), kamera pemain diperbesar sepanjang jalan. Kecuali ada GUI yang terlihat dengan set kepemilikan GuiButton.Modal , menyesuaikan pemindah mouse, mengetuk-拖动 di perangkat seluler, atau menggunakan tombol penggeseran sekunder di gamepad akan

Contoh Kode

Playing in First Person

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

CanLoadCharacterAppearance

Baca Paralel

Karakteristik CanLoadCharacter Player property menentukan apakah tampilan karakter akan dimuat saat pemain bertelur.Nilai default dari property ini ditetapkan oleh StarterPlayer.LoadPlayerAppearance.

Jika benar , karakter akan memuat tampilan pemain yang sesuai dengan Player.CharacterAppearanceId pemain.

Jika palsu, pemain akan muncul dengan tampilan default - model karakter abu-abu tanpa topi, kemeja, celana, dll.

Mencoba untuk menetapkan property setelah karakter telah bertelur tidak akan mengubah karakter, Anda harus memanggil Player:LoadCharacter() untuk memuat penampilanbaru.

Contoh Kode

Disabling a Player's Appearance

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

Character

Baca Paralel

Properti Karakter memuat referensi ke Model yang berisi Humanoid , bagian tubuh, skrip, dan objek lainnya yang di

Awalnya property ini adalah nil dan diatur ketika karakter pemain pertama kali muncul. Gunakan acara Player.CharacterAdded untuk mendeteksi ketika karakter pemain benar-benar dimuat, dan acara Player.CharacterRemoving untuk mendeteksi ketika karakter akan despawn. hind

Catat bahwa LocalScripts yang diklon dari StarterGui atau StarterPack


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
if not character or character.Parent == nil then
character = player.CharacterAdded:Wait()
end

CharacterAppearanceId

Baca Paralel

Properti ini menentukan ID pengguna akun cuy karakter tampilannya digunakan untuk Class.Player.Character pemain. Secara default, properti ini adalah Player.Character, yang menggunakan avatar pemain sebagai mereka telah menciptakannya di situs web Roblox.

Mengubah property ini menjadi ID pengguna account lain akan menyebabkan pemain muncul dengan penampilan akuntersebut (topi, kemeja, celana, dll).

Game juga dapat menyalakan apakah atau tidak tampilan karakter pemain dimuat dalam game dengan mengubah StarterPlayer.LoadCharacterAppearance property.

Contoh Kode

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

Baca Paralel

Mendefinisikan cara skrip kamera default menangani objek di antara kamera dan subjek kamera. Diatur oleh StarterPlayer.DevCameraOcclusionMode dan tidak dapat diubah untuk pemain individual.

Nilai default adalah Zoom (0). Lihat Enum.DevCameraOcclusionMode untuk daftar mode yang tersedia.

Baca Paralel

Prop DevComputerCameraMode menentukan cara pemain menggerakkan kamera mereka saat menggunakan perangkat dengan mouse dan keyboard. Lihat Enum.DevComputerCameraMovementMode untuk deskripsi setiap mode kontrol kamera yang tersedia. Prop ini tidak dapat diatur menggunakan LocalScript (harus diatur di server menggunakan Script).

Nilai default dari properti ini ditentukan oleh StarterPlayer.DevComputerCameraMovementMode .

Kata "Komputer" dalam nama kepemilikan ini mengacu pada perangkat tidak- TouchEnabled , perangkat tidak- GamepadEnabled .

Ketika diatur ke Pilihan Pengguna , seorang pemain dapat memilih antara mode kontrol apa pun (kecuali Scriptable ) dalam pengaturan permainan Roblox. Secara umum, ide yang baik adalah memungkinkan pemain untuk memilih mode kontrol mereka untuk meningkatkan aksesibilitas.

Mungkin untuk membuat skema kontrol khusus dengan menetapkan propperti ini ke Scriptable .

Properti ini tidak meng影响 pemain yang menggunakan perangkat sentuh yang aktif. Lihat Player.DevTouchCameraMode sebagai gantinya.

Contoh Kode

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

Baca Paralel

Propiedad DevComputerMovementMode menentukan cara pemain menggerakkan karakter mereka ketika menggunakan perangkat dengan mouse dan keyboard. Lihat Enum.DevComputerMovementMode untuk deskripsi setiap mode gerakan kontrol tersedia. Propiedad ini tidak dapat diatur menggunakan LocalScript (harus diatur di server menggunakan Script).

Nilai default dari properti ini ditentukan oleh StarterPlayer.DevComputerMovementMode .

Kata "Komputer" dalam nama kepemilikan ini mengacu pada perangkat non- TouchEnabled .

Ketika diatur ke Pilihan Pengguna , seorang pemain dapat memilih antara mode kontrol apa pun (kecuali Scriptable ) dalam pengaturan permainan Roblox. umum, ide yang baik adalah memungkinkan pemain untuk memilih mode kontrol mereka untuk meningkatkan aksesibilitas.

Mungkin untuk membuat skema kontrol khusus dengan menetapkan propperti ini ke Scriptable .

Properti ini tidak meng影响 pemain yang menggunakan perangkat yang didukung sentuh. Lihat Player.DevTouchMovementMode sebagai gantinya.

Contoh Kode

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

Baca Paralel

Elemen ini menentukan apakah seorang pemain dapat mengubah Mouse kunci dengan menekan Shift . Seorang pemain dapat menonaktifkan tombol kunci mouse di pengaturan permainan Roblox. Secara default, elemen ini diatur ke nilai Class.StarterPlayer.Enable

Ketika mouse lock aktif, cursor pemain dikunci ke tengah layar. Menggerakkan mouse akan mengorbit kamera di sekitar pemain character , dan karakter akan menghadapi arah yang sama dengan camera . Ini juga menyetel tampilan kamera hanya di atas bahun pemain.

Catat bahwa API terkait geser-lock sedang dalam proses dihapus, jadi disarankan untuk menggunakan UserInputService.MouseBehavior alih-alih mengunci mouse.

Contoh Kode

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

속성 DevTouchCameraMode menentukan cara pemain menggerakkan kamera mereka ketika menggunakan perangkat TouchEnabled. Lihat Enum.DevTouchCameraMovementMode untuk deskripsi setiap mode kontrol kamera yang tersedia. Hal ini tidak dapat diatur menggunakan Class.LocalScript

Nilai default dari properti ini ditentukan oleh StarterPlayer.DevTouchCameraMovementMode .

Ketika diatur ke Pilihan Pengguna , seorang pemain dapat memilih antara mode kontrol apa pun (kecuali Scriptable ) dalam pengaturan permainan Roblox. umum, ide yang baik adalah memungkinkan pemain untuk memilih mode kontrol mereka untuk meningkatkan aksesibilitas.

Mungkin untuk membuat skema kontrol khusus dengan menetapkan propperti ini ke Scriptable .

Properti ini tidak meng影响 menggunakan perangkat yang tidak menggunakan sentuh-aktif. Lihat Player.DevComputerCameraMovementMode sebagai gantinya.

Contoh Kode

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

Baca Paralel

Propiedad DevTouchMovementMode menentukan cara pemain menggerakkan karakter mereka ketika menggunakan perangkat TouchEnabled. Lihat Enum.DevTouchMovementMode untuk deskripsi setiap mode gerakan kontrol tersedia. Propiedad ini tidak dapat diatur menggunakan Class.

Nilai default dari properti ini ditentukan oleh StarterPlayer.DevTouchMovementMode .

Ketika diatur ke Pilihan Pengguna , seorang pemain dapat memilih antara mode kontrol apa pun (kecuali Scriptable ) dalam pengaturan permainan Roblox. Secara umum, ide yang baik adalah memungkinkan pemain untuk memilih mode kontrol mereka untuk meningkatkan aksesibilitas.

Mungkin untuk membuat skema kontrol khusus dengan menetapkan propperti ini ke Scriptable .

Properti ini tidak meng影响 pemain yang tidak menggunakan perangkat yang didukung sentuh. Lihat Player.DevComputerMovementMode sebagai gantinya.

Contoh Kode

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

Baca Paralel

DisplayName adalah properti Player yang berisi nama layar pengguna yang terkait dengan objek Player. Beda dengan nama pengguna, nama layar adalah nama yang tidak unik yang pemain menunjukkan kepada orang lain. Jika pengguna Roblox belum memilih salah sat

Catatan:

  • Karena nama layar tidak unik, mungkin bagi dua pemain di instansi tunggal untuk memiliki nama yang sama. Jika Anda memerlukan identitas unik global untuk pemain, gunakan Player.UserId (yang merupakan identitas statis) atau Player.Name (yang merupakan nama pengguna saat ini) alih-alih.
  • Karakter yang dihasilkan dengan Player.LoadCharacter atau oleh mesin Roblox akan memiliki property Humanoid.DisplayName yang ditetapkan ke properti Player.DisplayName .
  • Nama tampilan mungkin memiliki karakter unicode di string. Lihat UTF-8 untuk lebih banyak informasi tentang cara bekerja dengan string dengan karakter unicode.

FollowUserId

Hanya Baca
Tidak Direplikasi
Baca Paralel

The FollowUserId adalah properti Player yang berisi Player.UserId dari pengguna yang diikuti ke dalam game. Jika pemain tidak mengikuti siapa pun ke dalam game, properti ini akan menjadi 0. Properti ini berguna untuk mengirimkan pemain yang telah diikuti oleh pemain lain ke dalam game.

Anda dapat mendapatkan nama pemain yang diikuti menggunakan user ID ini dan fungsi Players:GetNameFromUserIdAsync() .

Contoh Kode

Followed Alert

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

GameplayPaused

Keamanan Tidak Dapat Diakses
Baca Paralel

GameplayPaused property menunjukkan apakah pemain berada dalam kondisi暂停 di tempat dengan StreamingEnabled yang aktif. Ini ditetapkan di klien tetapi direplikasi ke server. Untuk menentukan status暂停, Anda dapat menggunakan property ini.

Lihat juga:

HasVerifiedBadge

Baca Paralel

Properti HasVerifiedBadge Player menunjukkan apakah pemain memiliki Lencana Terverifikasi.

HealthDisplayDistance

Baca Paralel

Properti HealthDisplayDistance Player menetapkan jarak dalam studs di mana pemain ini akan melihat bar kesehatan lainnya Humanoid . Jika diatur ke 0, bar kesehatan tidak akan ditampilkan. Propperti ini diatur ke StarterPlayer.HealthDisplayDistance secara default.

Jika bar kesehatan Humanoid terlihat, Anda dapat mengatur jenis tampilan menggunakan Humanoid.DisplayDistanceType .

Contoh Kode

Hiding Player Health and Names

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

LocaleId

Tersembunyi
Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti LocaleId Player menunjukkan lokasi lokasi yang telah ditetapkan oleh pemain lokal untuk akun Roblox mereka. Ini berisi string dengan dua kode huruf (seperti, "en-us") untuk lokasi.

Hal ini dapat digunakan untuk menentukan demografi geografis pemain base game Anda, dan juga lokasi yang akan digunakan untuk lokalisasi otomatis lokal (lihat GuiBase2d.AutoLocalize ) dari konten dalam pengalaman. Hal ini memungkinkan akses ke lokasi pemain dari server.

Lihat juga LocalizationService.RobloxLocaleId, ID lokasi yang digunakan untuk lokalisasi konten internal. Ini akan menjadi nilai yang berbeda ketika Roblox belum secara internal mendukung lokasi pemain lokal.

Contoh Kode

Checking a Player's Locale

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

MembershipType

Hanya Baca
Tidak Direplikasi
Baca Paralel

Item ini hanya dapat dibaca untuk menentukan keanggotaan (tidak dapat disetel ke ketikkeanggotaan lain). Ini berisi Enum.MembershipType enum dari ketikkeanggotaan akun.

Contoh Kode

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

Baca Paralel

NamaDisplayDistance StarterPlayer property menyetel jarak dalam studs di mana pemain ini akan melihat nama Humanoid lainnya. Jika property di set ke 0, nama dikurung. This property set to StarterPlayer.NameDisplayDistance by default.

Jika bar kesehatan Humanoid terlihat, Anda dapat mengatur jenis tampilan menggunakan Humanoid.DisplayDistanceType .

Contoh Kode

Hiding Player Health and Names

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

Neutral

Baca Paralel

Prop Neutral menentukan apakah pemain berada di tim tertentu.

  • Ketika benar , pemain tidak berada di tim khusus. Ini juga berarti bahwa properti Player.Team akan menjadi nol dan Player.TeamColor akan menjadi putih.
  • Ketika false , pemain berada di tim khusus. Proprietas Player.Team akan sesuai dengan Team yang pemain berada di, sementara 1> Class.Player.TeamColor1> .

Contoh Kode

Checking if a Player is Neutral

local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end

ReplicationFocus

Baca Paralel

Properti ReplicationFocus Player menetapkan bagian untuk fokus replikasi di sekitar seorang Pemain. Berbagai sistem Roblox yang berkomunikasi melalui jaringan (seperti fisika, streaming, dll) mengkloning pada tingkat yang berbeda tergantung pada seberapa dekat objek berada dengan fokus replikasi.

Ketika nilValue ini nol, itu kembali ke perilaku defaultnya yang adalah untuk mengolah karakter lokal pemain sebagai fokus replikasi.

Properti ini hanya boleh diatur di server dengan Script, bukan LocalScript. Catat bahwa properti ini tidak mengubah atau menyetujui kepemilikan jaringan bagian.

Contoh Kode

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

Baca Paralel

Jika diatur, pemain akan respawn di SpawnLocation yang diberikan. Properti ini hanya dapat ditetapkan melalui Lua dan harus berisi referensi ke SpawnLocation yang valid, yang harus memenuhi kriteria berikut:

Jika RespawnLocation tidak diatur ke lokasi bertarif yang valid maka logika bertarif bawaan akan diterapkan. Untuk lebih banyak informasi tentang hal ini, lihat halaman untuk SpawnLocation.

Alternatif untuk RespawnLocation

Contoh Kode

Change Spawn on Touch

local Players = game:GetService("Players")
local function addSpawn(spawnLocation)
-- listen for the spawn being touched
spawnLocation.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if character then
local player = Players:GetPlayerFromCharacter(character)
if player and player.RespawnLocation ~= spawnLocation then
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- make sure the character isn't dead
if humanoid and humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
print("spawn set")
player.RespawnLocation = spawnLocation
end
end
end
end)
end
local firstSpawn
-- look through the workspace for spawns
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("SpawnLocation") then
if descendant.Name == "FirstSpawn" then
firstSpawn = descendant
end
addSpawn(descendant)
end
end
local function playerAdded(player)
player.RespawnLocation = firstSpawn
end
-- listen for new players
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end

Team

Tidak Direplikasi
Baca Paralel

Properti Tim adalah referensi ke objek Team di dalam layanan

Contoh Kode

Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Join Team Command

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

TeamColor

Baca Paralel

Prop TeamColor menentukan tim mana yang dimiliki Pemain berdasarkan Class.Team.TeamColor tim tersebut. Mengubah prop ini akan mengubah Class.Player.Team menjadi Player.Team sesuai dengan tim mana yang memiliki BrickColor yang sama untuk

Seringkali merupakan ide yang lebih baik untuk menetapkan Player.Team ke Team masing-masing alih-alih menggunakan nilai BrickColor ini. Mengatur nilai BrickColor ini sering menyebabkan duplikasi nilai BrickColor yang sama untuk tim tertentu di banyak script; ini adalah sesuatu yang ingin Anda hindari saat mengik

Contoh Kode

Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

UserId

Baca Paralel

UserId adalah Player property yang berisi angka integer yang unik dan konsisten yang mengidentifikasi setiap account pengguna di Roblox. Berbeda dengan Instance.Name dari seorang Pemain, nilai ini tidak akan pernah berubah untuk akun yang sama.

Elemen ini penting saat menyimpan/memuat data pemain menggunakan GlobalDataStores . Gunakan kunci penyimpanan pemain sebagai kunci penyimpanan data sehingga setiap pemain memiliki unitunik.

Contoh Kode

Player.UserId

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players:GetPlayerByUserId

local Players = game:GetService("Players")
local player = Players:GetPlayerByUserId(1)
if player then
print("Player with userId 1 is in this server! Their name is: " .. player.Name)
else
print("Player with userId 1 is not in this server!")
end
Met the Creator Badge

local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local OWNER_ID = 212423 -- can use game.CreatorId for published places
local BADGE_ID = 1
local ownerInGame = false
local function playerAdded(newPlayer)
if newPlayer.UserId == OWNER_ID then
-- if new player is the owner, set ownerInGame to true and give everyone the badge
ownerInGame = true
for _, player in pairs(Players:GetPlayers()) do
-- don't award the owner
if player ~= newPlayer then
BadgeService:AwardBadge(player.UserId, BADGE_ID)
end
end
elseif ownerInGame then
-- if the owner is in the game, award the badge
BadgeService:AwardBadge(newPlayer.UserId, BADGE_ID)
end
end
local function playerRemoving(oldPlayer)
if oldPlayer.UserId == OWNER_ID then
ownerInGame = false
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerRemoving:Connect(playerRemoving)
Data Store to Leaderboard

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local goldDataStore = DataStoreService:GetDataStore("Gold")
local STARTING_GOLD = 100
local function onPlayerAdded(player)
local playerKey = "Player_" .. player.UserId
local leaderstats = Instance.new("IntValue")
leaderstats.Name = "leaderstats"
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Parent = leaderstats
local success, result = pcall(function()
return goldDataStore:GetAsync(playerKey) or STARTING_GOLD
end)
if success then
gold.Value = result
else
-- Failed to retrieve data
warn(result)
end
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)

Metode

ClearCharacterAppearance

void

Fungsi ClearCharacterAppearance menghapus semua Accessory, Shirt, Pants, 1> Class.CharacterMesh1>

Ini tidak menghapus t-shirts , head meshes, atau wajah.


Memberikan nilai

void

Contoh Kode

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

Fungsi DistanceFromCharacter Player mengembalikan jarak antara kepala karakter dan titik Vector3 yang diberikan. Ini mengembalikan 0 jika pemain tidak memiliki Player.Character.

Ini berguna ketika menentukan jarak antara pemain dan lokasi atau objek lain dalam game.

Jika Anda ingin menentukan jarak antara dua instans non-player atau posisi, Anda dapat menggunakan mengikuti:


local distance = (position1 - position2).magnitude

Parameter

point: Vector3

Lokasi di mana jarak pemain diukur.


Memberikan nilai

Jarak dalam studs antara pemain dan lokasi.

Contoh Kode

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

Mengembalikan kamus yang menggambarkan cara pemain bergabung dengan pengalaman. Kamus ini berisi salah satu dari berikut:


<tbody>
<tr>
<th>Permainan Sumber</th>
<td>nomor</td>
<td>The <code>Class.DataModel.GameId</code> of the experience the <code>Pemain</code> teleported from. Hadir hanya jika pemain teleport ke pengalaman saat ini dan jika server menelepon fungsi teleport.</td>
</tr>
<tr>
<th>Penempatan Sumber</th>
<td>nomor</td>
<td>The <code>Class.DataModel.PlaceId</code> of the place the <code>Pemain</code> teleported from. Hadir hanya jika pemain teleport ke tempat saat ini dan server menelepon fungsi teleport.</td>
</tr>
<tr>
<th>Direferensikan oleh pemain</th>
<td>nomor</td>
<td>The <code>Class.Player.UserId</code> of the player who invited the current player to the experience. Gunakan data ini untuk mengidentifikasi referrer dan menyetel logika hadiah.</td>
</tr>
<tr>
<th>Anggota</th>
<td>array</td>
<td>Sebuah matriks yang berisi Class.Player.UserId nomor pengguna yang diteleportasi bersama dengan Pemain. Hanya hadir jika pemain diteleportasi sebagai bagian dari grup.</td>
</tr>
<tr>
<th>Teleportasi Data</th>
<td>varian</td>
<td>Mengembalikan <code>teleportData</code> yang ditentukan dalam berteleportasiasli. Berguna untuk berbagi informasi antara server pemain yang ditempatkan. Hanya hadir jika <code>teleportData</code> ditentukan dan server memanggil fungsi teleport.</td>
</tr>
<tr>
<th>Data Peluncuran</th>
<td>string</td>
<td>String sederhana atau JSON yang dimodifikasi dalam URL <a href="../../../production/promotion/deeplinking.md">深 link</a> atau <code>Class.ExperienceInviteOptions.LaunchData</code> .</td>
</tr>
</tbody>
KunciJenisNilaiDeskripsi

DapatkanJoinData dan TeleportData

Jika server menginisialisasi berteleportasiPemain, definisi yang dikembalikan metode ini termasuk data teleportasi pemain. Metode Player:GetJoinData() hanya dapat digunakan untuk mengambil data teleportasi di server. Untuk mengambil data di klien, gunakan TeleportService:GetLocalPlayerTeleportData().

Tidak seperti TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() hanya menyediakan data teleport yang memenuhi kriteria keamanan berikut:

  • Ini dijamin telah dikirim oleh server Roblox dalam 48 jam terakhir.
  • Dijamin telah dikirim dengan ini Player .
  • SourcePlaceId dan SourceGameId dijamin untuk menjadi tempat dan alam semesta di mana data dikirim. Ini berarti Anda dapat memverifikasi bahwa data teleport berasal dari tempat yang disetujui.

Karena data ini dikirim oleh klien, itu masih bisa dimanfaatkan oleh seorang pengeksploiter. Data sensitif seperti mata uang pemain harus dikirim melalui solusi keamanan seperti Memori Tokens.


Memberikan nilai

Sandera yang berisi nilai PlaceId dan UserId (lihat tabel dalam deskripsi).

Contoh Kode

Tracking Traffic Sources

local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local analyticsStore = DataStoreService:GetDataStore("Analytics")
local ALLOWED_SOURCES = {
"twitter";
"youtube";
"discord";
}
local function onPlayerAdded(player)
local source = player:GetJoinData().LaunchData
-- check if the provided source is valid
if source and table.find(ALLOWED_SOURCES, source) then
-- update the data store to track the source popularity
local success, result = pcall(analyticsStore.IncrementAsync, analyticsStore, source)
if success then
print(player.Name, "joined from", source, "- total:", result)
else
warn("Failed to record join source: " .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Referral URL Generator

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local DIRECT_JOIN_URL = "https://www.roblox.com/games/start?placeId=%d&launchData=%s"
local textBox = script.Parent
local function generateReferralURL(player)
return DIRECT_JOIN_URL:format(
game.PlaceId,
player.UserId
)
end
local function highlightAll()
if -- avoid recursive property updates
textBox:IsFocused()
and not (
textBox.SelectionStart == 1
and textBox.CursorPosition == #textBox.Text + 1
)
then
textBox.SelectionStart = 1
textBox.CursorPosition = #textBox.Text + 1
end
end
textBox.Focused:Connect(highlightAll)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(highlightAll)
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(highlightAll)
textBox.TextEditable = false
textBox.ClearTextOnFocus = false
textBox.Text = generateReferralURL(player)
Using a Table as Launch Data

local HttpService = game:GetService("HttpService")
local DATA_CHARACTER_LIMIT = 200
local function encodeTableAsLaunchData(data)
-- convert the table to a string
local jsonEncodedData = HttpService:JSONEncode(data)
if #jsonEncodedData <= DATA_CHARACTER_LIMIT then
-- escape potentially invalid characters, such as spaces
local urlEncodedData = HttpService:UrlEncode(jsonEncodedData)
return true, urlEncodedData
else
-- report character limit error
return false, ("Encoded table exceeds %d character limit"):format(DATA_CHARACTER_LIMIT)
end
end
local sampleData = {
joinMessage = "Hello!";
urlCreationDate = os.time();
magicNumbers = {
534;
1337;
746733573;
};
}
local success, encodedData = encodeTableAsLaunchData(sampleData)
if success then
print(encodedData)
else
warn("failed to encode launch data: " .. encodedData)
end
Decoding JSON Launch Data

local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local launchData = player:GetJoinData().LaunchData
if launchData then
-- attempt to decode the data
local success, result = pcall(HttpService.JSONDecode, HttpService, launchData)
if success then
print(player.Name, "joined with data:", result)
else
-- this is probably due to the user messing with the URL
warn("Failed to parse launch data:" .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Server TeleportData Example

local Players = game:GetService("Players")
local approvedPlaceIds = { 1 } -- insert approved PlaceIds here
local function isPlaceIdApproved(placeId)
for _, id in pairs(approvedPlaceIds) do
if id == placeId then
return true
end
end
return false
end
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
-- verify this data was sent by an approved place
if isPlaceIdApproved(joinData.SourcePlaceId) then
local teleportData = joinData.TeleportData
if teleportData then
local currentLevel = teleportData.currentLevel
print(player.Name .. " is on level " .. currentLevel)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GetMouse

Fungsi GetMouse Player mengembalikan Mouse yang digunakan oleh klien. Instans mouse pemain dapat digunakan untuk melacak masukan mouse pengguna termasuk klik mouse kiri dan kanan mouse dan lokasi dan lokasi.

Layanan UserInputService menyediakan fungsi dan acara tambahan untuk melacak masukan pengguna - terutama untuk perangkat yang tidak menggunakan mouse.

Catatan:

  • Item ini harus digunakan dalam LocalScript untuk bekerja seperti yang diharapkan secara online.
  • Setelah pembaruan pada bulan Juli 2014, icon mouse sekarang dapat diatur dengan metode ini.

Memberikan nilai

Contoh Kode

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

Tulis Paralel

DapatkanNetworkPing mengembalikan kelambatan jaringan yang terisolasi dari Player dalam detik. "Ping" adalah pengukuran waktu yang dibutuhkan untuk mengirim data dari klien ke server, lalu kembali lagi. Ini tidak melibatkan desialisasi atau pemrosesan data.

Untuk client-side LocalScripts, fungsi ini hanya dapat dipanggil di Players.LocalPlayer. Fungsi ini berguna dalam mengidentifikasi dan men-debug masalah yang terjadi dalam skenario jaringan tinggi. Ini juga berguna untuk menyembunyikan latensi, seperti menyesuaikan kecepatan animasi untuk proyektil.


Memberikan nilai

HasAppearanceLoaded

Fungsi HasAppearanceLoaded Player mengembalikan apakah atau tidak penampilan pemain Player.Character telah dimuat.

Penampilan pemain termasuk item seperti Class.Shirt pemain, Shirt , dan Pants .

Ini berguna ketika menentukan apakah penampilan pemain telah dimuat setelah mereka pertama kali bergabung dengan game, yang dapat diperbarui menggunakan acara Players.PlayerAdded.


Memberikan nilai

Boolean yang menunjukkan apakah atau tidak penampilan karakter pemain telah dimuat.

Contoh Kode

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

Mengembalikan nilai booleh yang menunjukkan status verifikasi pemain. Saat benar, pemain dinyatakan verifikasi. Verifikasi termasuk, tetapi bukan terbatas pada, nomor telepon non-VOIP atau verifikasi ID pemerintah.

Saat menerapkan IsVerified, latih perhatian untuk memastikan bahwa implementasi tidak secara tidak sengaja memblokir semua pengguna yang tidak terverifikasi.

Catat bahwa metode ini hanya dapat dipanggil di server backend. Menangginya dari sisi klien akan menghasilkan kesalahan. Selain itu, metode ini akan selalu mengembalikan false di Studio.


Memberikan nilai

Boolean yang menunjukkan apakah pemain diverifikasi.

Contoh Kode

Using IsVerified

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player:IsVerified())
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Kick

void

Metode Kick() memungkinkan pengalaman untuk dengan sopan menghubungkan klien dan opsi untuk memberikan pesan kepada pengguna yang terputus. Ini berguna untuk moderasi pengguna yang berlebihan. Anda hanya boleh mengizinkan pengguna spesifik yang Anda percaya untuk mengaktifkan metode ini pada pengguna lain.

Memanggil metode ini di Player tanpa argumen menghubungkan pengguna dari server dan menyediakan pesan pemberitahuan default. Memanggil metode ini di Player bersama dengan string sebagai argumen pertama menghapus pesan default dengan string yang disediakan.

Ketika menggunakan metode ini dari LocalScript, hanya klien pengguna lokal yang bisa diusir.

Parameter

message: string

Pesan untuk menunjukkan pengguna saat diusir.

Nilai Default: ""

Memberikan nilai

void

Move

void

Fungsi Pindah Player menyebabkan karakter pemain berjalan dalam arah yang diberikan sampai dihentikan, atau ditangani oleh pemain (menggunakan kendalimereka).

Ini berguna ketika menyetel NPC Humanoids yang bergerak di sekitar peta - tetapi tidak dikendalikan oleh masukan pemain nyata.

Catat bahwa argumen kedua fungsi menunjukkan apakah Vector3 yang disediakan harus pindah pemain relatif ke koordinat dunia ( false ) atau Camera ( 1> true1> ) pemain.

Parameter

walkDirection: Vector3

Arah Vector3 yang harus diambil pemain.

relativeToCamera: bool

Boolean yang menunjukkan apakah pemain harus bergerak relatif terhadap kamera pemain.

Nilai Default: false

Memberikan nilai

void

Contoh Kode

Moving the Player relative to their Camera

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
-- Wait for the player's character and humanoid, which must exist before calling :Move()
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
character:WaitForChild("Humanoid")
-- The player will move until they are 50 studs away from the camera's position at the time of running
localPlayer:Move(Vector3.new(0, 0, -50), true)

SetAccountAge

void
Keamanan Plugin

Fungsi SetAccountAge menetapkan Player.AccountAge pemain dalam hari.

Ini digunakan untuk menetapkan Player property yang menggambarkan berapa lama waktu sejak akun pemain terdaftar dalam hari.

Ini tidak menetapkan usia pemain di akun, tetapi usia akun itu sendiri relatif terhadap ketika dibuat pertama kali.

Parameter

accountAge: number

Usia akun dalam hari.


Memberikan nilai

void

Contoh Kode

Setting the Player's Account Age

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

local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

SetSuperSafeChat

void
Keamanan Plugin

Metode ini menetapkan apakah atau tidak pemain melihat obrolan yang disaring oleh TextService:FilterStringAsync() daripada chatting normal.


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

Terlepas dari apakah pemain telah menyaring obrolan diaktifkan, semua obrolan harus disaring oleh TextService saat dibث ke pemain lain atau di layar pemain sendiri. TextService:FilterStringAsync() mengembalikan objek TextFilterResult yang dapat disaring secara berbeda menurut tujuan pengguna.

Parameter

value: bool

Boolean yang menunjukkan apakah atau tidak pemain melihat chat yang disaring.


Memberikan nilai

void

GetFriendsOnline

Hasil

Fungsi ini mengembalikan array teman online, terbatas oleh nilai maxFriends. Fungsi menggunakan cache 30 detik.

Dalam array yang dikembalikan, beberapa kolom hanya hadir untuk jenis lokasi tertentu. Misalnya, PlaceId tidak akan hadir ketika TypeLokasi adalah 0 (Situs Web Seluler).


<tbody>
<tr>
<td><b>KunjungiId</b></td>
<td>nomor</td>
<td>The <code>Class.Player.UserId</code> of the teman.</td>
</tr>
<tr>
<td><b>Nama Pengguna</b></td>
<td>string</td>
<td>Nama pengguna teman.</td>
</tr>
<tr>
<td><b>Nama Layar</b></td>
<td>string</td>
<td>Class.Player.DisplayName teman.</td>
</tr>
<tr>
<td><b>Terakhir Online</b></td>
<td>string</td>
<td>Ketika teman terakhir online.</td>
</tr>
<tr>
<td><b>Adalah Online</b></td>
<td>boolean</td>
<td>Jika teman itu saat ini online.</td>
</tr>
<tr>
<td><b>LastLocation</b></td>
<td>string</td>
<td>Nama lokasi teman saat ini.</td>
</tr>
<tr>
<td><b>TempatId</b></td>
<td>nomor</td>
<td>ID tempat teman terakhir.</td>
</tr>
<tr>
<td><b>GameId</b></td>
<td>string</td>
<td>DataModel/JobId dari lokasi terakhir teman.</td>
</tr>
<tr>
<td><b>Jenis Lokasi</b></td>
<td>nomor</td>
<td>
Jenis lokasi tempat teman terakhir berada:
<table>
</table>
</td>
</tr>
</tbody>
NamaJenisDeskripsi

Parameter

maxFriends: number

Jumlah maksimum teman online yang akan dikembalikan.

Nilai Default: 200

Memberikan nilai

Sebuah kamus teman online (lihat tabel di atas).

Contoh Kode

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

Hasil

Fungsi GetRankInGroup Player mengembalikan peringkat pemain di kelompok sebagai angka antara 0 dan 255, di mana 0 adalah non-mitra dan 255 adalah pemilik grup.

Menggunakan ini di sebuah Script, bukan di sebuah LocalScript, tidak akan memberi Anda informasi terbaru. Jika seorang pemain meninggalkan kelompok mereka saat mereka berada dalam game, GetRankInGroup masih akan berpikir mereka berada di kelompok itu sampai mereka keluar. Namun, ini tidak terjadi saat menggunakan sebuah

Ini karena metode menyimpan hasil, jadi panggilan GETRankInGroup pada pemain yang sama dengan ID grup yang sama akan menghasilkan hasil yang sama seperti ketika metode pertama kali dipanggil dengan ID grup yang diberikan. Perilaku penyimpanan ini berbasis per-peer: server tidak berbagi cache seperti klien.

Parameter

groupId: number

The groupId of the specified grup.


Memberikan nilai

Peringkat pemain di grup.

Contoh Kode

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

Hasil

Fungsi GetRoleInGroup Player mengembalikan peran pemain di grup sebagai string, atau Guest jika pemain bukan bagian dari grup.

Menggunakan ini di sebuah Script, bukan di sebuah LocalScript, tidak akan memberi Anda informasi terbaru. Jika seorang pemain meninggalkan kelompok mereka saat mereka berada dalam game, GetRoleInGroup masih akan berpikir mereka berada di kelompok itu sampai mereka keluar. Namun, ini tidak berlaku saat digunakan dengan se

Ini karena metode menyimpan hasil, jadi panggilan GETRoleInGroup pada pemain yang sama dengan ID grup yang sama akan menghasilkan hasil yang sama seperti ketika metode pertama kali dipanggil dengan ID grup yang diberikan. Perilaku penyimpanan ini berbasis per-peer: server tidak berbagi cache seperti klien.

Parameter

groupId: number

groupId dari grup yang ditentukan.


Memberikan nilai

Peran pemain dalam grupyang ditentukan, atau Guest jika pemain bukan anggota.

Contoh Kode

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

Hasil

Fungsi ini mengirim permintaan ke situs Roblox menanyakan apakah pemain adalah teman pengguna lain, berdasarkan Player.UserId pengguna itu. Fungsi ini menyembunyikan hasil sehingga panggilan fungsi pada pemain yang sama dengan Player.UserId yang paling up-

Parameter

userId: number

Class.Player.UserId dari pemain yang ditentukan.


Memberikan nilai

Boolean yang menunjukkan apakah pemain adalah teman pengguna yang ditentukan.

Contoh Kode

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

Hasil

Fungsi IsInGroup Player mengirim permintaan ke situs web Roblox menanyakan apakah seorang pemain anggota grup, berdasarkan ID gruptersebut.

Menggunakan ini di sebuah Script, bukan di sebuah LocalScript, tidak akan memberi Anda informasi terbaru. Jika seorang pemain meninggalkan kelompok mereka saat mereka berada dalam game, IsInGroup masih akan berpikir mereka berada di kelompok itu sampai mereka keluar. Namun, ini tidak berlaku saat digunakan dengan sebuah

Ini karena metode menyimpan hasil, jadi panggilan berulang dari IsInGroup pada pemain yang sama dengan ID grup yang sama akan menghasilkan hasil yang sama seperti ketika metode pertama kali dipanggil dengan grup ID yang diberikan. Perilaku penyimpanan ini berbasis per-peer: server tidak berbagi cache seperti klien.

Parameter

groupId: number

groupId dari grup yang ditentukan.


Memberikan nilai

Boolean yang menunjukkan apakah pemain berada di grup yang ditentukan.

Contoh Kode

How to Check if a Player is in a Group

local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsInGroup(7) then
print("Player is in the Roblox Fan club!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadCharacter

void
Hasil

Fungsi LoadCharacter Player membuat karakter baru untuk pemain, menghapus yang lama. Ini juga menghapus Backpack dan PlayerGui pemain.

Ini berguna dalam kasus di mana Anda ingin memuat ulang karakter tanpa membunuh pemain, seperti ketika Anda ingin memuat tampilan karakter baru setelah mengubah penampilan pemainnya Player.CharacterAppearance .

Catatan: Fungsi ini mirip dengan Player:LoadCharacterBlocking() , tetapi permintaan diolak secara asinkron alih-alih secara sinkron. Ini berarti bahwa tugas lain dapat dilakukan sementara karakter sedang dimuat, termasuk render game dan setiap tugas lainnya. Juga, fungsi ini dapat digunakan dalam script, sementara LoadCharacterBlocking tidak dapat.

Setelah memanggil LoadCharacter untuk pemain individual, tidak disarankan untuk memanggilnya lagi untuk pemain yang sama sampai setelah acara Player.CharacterAppearanceLoaded pemain itu diaktifkan.

Acara Pemuatan Karakter memesan

Memanggil Player:LoadCharacter() dengan Avatar R15 menyetel acara berikut (Catatan: Pemesanan R6 berbeda):

  1. Pemain.Character menetapkan
  2. Pemain.CharacterAdded kebakaran
  3. Player.Changed menembak dengan nilai "Character"
  4. Karakter tampilan awal
  5. Player.CharacterAppearanceLoaded berapi-api
  6. Character.Parent ditetapkan ke DataModel
  7. Rig Karakter dibangun, dan skala Karakter
  8. Karakter pindah ke lokasi spawn
  9. Memuat karakter kembali

Memberikan nilai

void

Contoh Kode

Turn Off Auto-Loading and Simulate Character Respawn

local Players = game:GetService("Players")
local RESPAWN_DELAY = 5
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
task.wait(RESPAWN_DELAY)
player:LoadCharacter()
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
player:LoadCharacter()
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadCharacterWithHumanoidDescription

void
Hasil

Fungsi ini munculkan avatar sehingga memiliki semua yang dibutuhkan dalam HumanoidDescription .

Setelah memanggil LoadCharacterWithHumanoidDescription untuk pemain individual, tidak disarankan untuk memanggil fungsi lagi untuk pemain yang sama sampai setelah acara Player.CharacterAppearanceLoaded pemain itu diaktifkan.

Lihat juga:

  • Sistem Deskripsi Manusia, artikel yang menjelaskan sistem deskripsi manusia dengan lebih rinci dan memberikan beberapa contoh script

Parameter

humanoidDescription: HumanoidDescription

Sebuah HumanoidDescription berisi karakteristik seperti bagian tubuh/warna, skala tubuh, aksesori, pakaian, dan animasi yang akan dipakai ke karakter yang dimuat.


Memberikan nilai

void

Contoh Kode

Spawn Characters With HumanoidDescription

local Players = game:GetService("Players")
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
Players.PlayerAdded:Connect(onPlayerAdded)

RequestStreamAroundAsync

void
Hasil

Untuk pengalaman di mana streaming instans dapat diaktifkan, permintaan bahwa server menyiarkan ke wilayah pemain (bagian dan wilayah) di sekitar lokasi X, Y, dan 2>Z2>

Efek panggilan ini akan sementara dan tidak ada jaminan tentang apa yang akan diputar di sekitar lokasi yang ditentukan. Batas memori klien dan kondisi jaringan dapat mempengaruhi apa yang tersedia di klien.

Penggunaan Perhatian

Meminta streaming di sekitar area adalah bukan jaminan bahwa konten akan hadir saat permintaan selesai, karena streaming terpengaruh oleh bandwidth jaringan klien, keterbatasan memori, dan faktor lainnya.

Parameter

position: Vector3

Lokasi dunia di mana streaming diminta.

timeOut: number

Waktu batas waktu permintaan.

Nilai Default: 0

Memberikan nilai

void

Acara

CharacterAdded

Acara CharacterAdded terjadi ketika karakter pemain muncul (atau respawns). Acara ini terjadi segera setelah menetapkan Player.Character ke nil atau memanggil nil, yang merupakan sebelum karakter diwarisi ke 1> Class.Workspace1> .

Ini dapat digunakan bersama dengan acara Player.CharacterRemoving , yang berfungsi sebelum karakter pemain akan dihapus, biasanya setelah kematian. Sebagai solusi, kedua acara ini dapat potensialnya berfungsi berkali-kali ketika pemain bergabung atau men

Catat bahwa Humanoid dan bagian tubuhnya (kepala, torso, dan anggota tubuh) akan ada ketika acara ini diaktifkan, tetapi item pakaian sepert

Parameter

character: Model

Sebuah instansi dari karakter yang telah muncul/respawn.


Contoh Kode

Detecting Player Spawns and Despawns

local Players = game:GetService("Players")
local function onCharacterAdded(character)
print(character.Name .. " has spawned")
end
local function onCharacterRemoving(character)
print(character.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Respawn at Despawn Location

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- This table maps "Player" objects to Vector3
local respawnLocations = {}
local function onCharacterAdded(character)
local player = Players:GetPlayerFromCharacter(character)
-- Check if we saved a respawn location for this player
if respawnLocations[player] then
-- Teleport the player there when their HumanoidRootPart is available
local hrp = character:WaitForChild("HumanoidRootPart")
-- Wait a brief moment before teleporting, as Roblox will teleport the
-- player to their designated SpawnLocation (which we will override)
RunService.Stepped:wait()
hrp.CFrame = CFrame.new(respawnLocations[player] + Vector3.new(0, 3.5, 0))
end
end
local function onCharacterRemoving(character)
-- Get the player and their HumanoidRootPart and save their death location
local player = Players:GetPlayerFromCharacter(character)
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
respawnLocations[player] = hrp.Position
end
end
local function onPlayerAdded(player)
-- Listen for spawns/despawns
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
local function onPlayerRemoved(player)
-- Forget the respawn location of any player who is leaving; this prevents
-- a memory leak if potentially many players visit
respawnLocations[player] = nil
end
-- Note that we're NOT using PlayerRemoving here, since CharacterRemoving fires
-- AFTER PlayerRemoving, we don't want to forget the respawn location then instantly
-- save another right after
Players.PlayerAdded:Connect(onPlayerAdded)
Players.ChildRemoved:Connect(onPlayerRemoved)
Accessory Remover

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function destroyAccessory(object)
if object:IsA("Hat") or object:IsA("Accessory") then
object:Destroy()
end
end
local function onCharacterAdded(character)
-- Wait a brief moment before removing accessories to avoid the
-- "Something unexpectedly set ___ parent to NULL" warning
RunService.Stepped:Wait()
-- Check for any existing accessories in the player's character
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hats may be added to the character a moment after
-- CharacterAdded fires, so we listen for those using ChildAdded
character.ChildAdded:Connect(destroyAccessory)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

CharacterAppearanceLoaded

Acara ini diaktifkan ketika penampilan penuh dari Class.Player.Character telah ditambahkan.

Sebuah Player.Character umumnya memiliki berbagai objek yang mengubah penampilan, termasuk Accoutrements , Shirts , 1> Class.Pants1> dan <

Satu penggunaan untuk acara ini adalah untuk memastikan semua aksesori telah dimuat sebelum menghancurkannya. Lihat di bawah ini untuk contohnya.

Parameter

character: Model

Class.Player.CharacterModel


Contoh Kode

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

Acara CharacterRemoving menembakkan tepat sebelum karakter pemain dihapus, seperti saat pemain respawn.

Acara ini dapat digunakan bersama dengan acara Player.CharacterAdded, yang menyebutkan ketika karakter pemain muncul atau respawn. kejadian, jika Anda ingin mencetak pesan setiap kali pemain muncul dan mati:


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)

Acara ini hanya mengkhawatirkan Class.Player.Character|Character dari Class.Player . Jika Anda sebaliknya perlu melacak kapan seorang pemain bergabung/meninggalkan game, gunakan acara Player dan Players.PlayerAdded.

Parameter

character: Model

Sebuah instansi dari karakter yang dihapus.


Contoh Kode

Player.CharacterRemoving

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

Chatted

Acara Chatting diaktifkan ketika Player mengetik pesan dan menekan enter di bilah chat yang disediakan Roblox. Ini dilakukan menggunakan beberapa ikatan Lua oleh script chat default. Anda dapat mencegah pengguna dari mengobrol dengan menggunakan beberapa ikatan StarterGui:SetCoreGuiEnabled() dan menonaktifkan

Perintah Obrolan

Menggunakan acara ini dan beberapa fungsi manipulasi string seperti string.sub() dan string.lower(), itu mungkin untuk menciptakan perintah chat, bahkan dengan

Menafsirkan

Teks pesan yang ditembak dengan acara ini adalah tidak disaring . Jika Anda menampilkan input pemain seperti obrolan kepada pemain lain dalam bentuk apa pun, itu harus disaring menggunakan Chat:FilterStringAsync() . Ingat ini saat membuat sistem chat Anda sendiri; jika game Anda tidak dapat dengan benar menyaring obrolan, maka mungkin tindakan moderasi diambil

Parameter

message: string

Konten pesan yang diketik pemain di chat.

recipient: Player

Ditinggalkan. Untuk pesan mendengus, ini adalah Pemain yang merupakan target tujuan pesan chat.


Contoh Kode

Player.Chatted

local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onChatted(message)
-- do stuff with message and player
print(message)
end
player.Chatted:Connect(onChatted)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Join Team Command

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Idled

Acara ini diaktifkan setelah kelas mesin game menghasilkan player sebagai diam. Waktu adalah jumlah detik yang telah berlalu sejak saat itu. Acara terus diaktifkan setiap 30 detik selama pemain tetap diam.

Acara ini hanya diaktifkan di script klien, bukan script server; gunakan RemoteEvent untuk mengirimkan server pemain yang tidak aktif.

Roblox secara otomatis menghubungkan kembali pemain yang telah diam selama setidaknya 20 menit, jadi acara ini berguna untuk mengingatkan pemain bahwa mereka akan terputus segera, menghubungkan pemain sebelum 20 menit tersebut, atau fitur lainnya jauh dari keyboard (AFK).

Untuk melacak seberapa sering terputus otomatis terjadi, coba mengkorelasikan acara ini dengan kejadian Players.PlayerRemoving .

Parameter

time: number

Waktu dalam detik yang pemain telah diam.


Contoh Kode

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

Diaktifkan ketika TeleportStatus seorang pemain berubah. Acara ini berguna untuk mendeteksi apakah teleportasi berhasil.

Apa itu TeleportState?

Ketika permintaan teleportasi dibuat menggunakan TeleportService, ada beberapa tahap sebelum Player dipanggil. Tahap saat ini diwakili oleh nilai Enum.TeleportState yang diberikan oleh OnTeleport. Lihat di bawah ini untuk contoh praktis dari ini.

Parameter

teleportState: Enum.TeleportState

Class.Player yang baru.

placeId: number

ID tempat yang Player dikirim ke.

spawnName: string

Nama lokasi bertelur untuk di teleportasi, jika TeleportService:TeleportToSpawnByName() telah digunakan.


Contoh Kode

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)