Player
*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 :
- Anda dapat mendapatkan tabel objek Pemain saat ini menggunakan Players:GetPlayers(); lagi, gunakan ini sebagai gantinya dari Instance:GetChildren() .
- Untuk mendeteksi tambahan objek Pemain, disarankan menggunakan acara Players.PlayerAdded (alih-alih Instance.ChildAdded di layanan Players).
- Demikian pula, Anda dapat mendeteksi penghapusan objek Pemain menggunakan Players.PlayerRemoving, yang menyebutkan hanya sebelum Pemain dihapus (dibandingkan dengan Instance.ChildRemoved, yang dihapus setelah). Ini penting jika Anda menyimpan informasi tentang pemain yang mungkin dihapus atau dibers
Contoh Kode
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
Menggambarkan usia akun pemain dalam hari.
Menentukan apakah karakter pemain menggunakan perangkat seluler akan secara otomatis melompat saat menghantam rintangan.
Jarak maksimum yang dapat ditarik kamera pemain diizinkan untuk menarik keluar.
Jarak minimum yang diizinkan untuk kamera pemain.
Mengubah mode kamera menjadi pertama atau ketiga orang.
Mengidentifikasi apakah tampilan karakter akan dimuat saat pemain bertelur. Jika benar, pemain akan muncul dengan penampilandefault.
Sebuah Model yang dikendalikan oleh pemain yang berisi Humanoid , bagian tubuh, skrip, dan objek lainnya.
Mengidentifikasi ID pengguna akun yang cuacanya digunakan untuk pemain의 Class.Player.Character|karakter .
Mengatur cara penanganan kamera default menangani objek di antara kamera dan pemain.
Mengubah mode gerakan kamera pemain saat menggunakan versi desktop Roblox.
Mengidentifikasi mode gerakan karakter pemain saat menggunakan versi desktop Roblox.
Menentukan apakah pemain dapat menyalakan kunci mouse.
Mengubah mode gerakan kamera pemain saat menggunakan perangkat sentuh.
Mengubah mode gerakan karakter pemain saat menggunakan perangkat sentuh.
Nama Layar pengguna bersama dengan Player.
Menggambarkan ID pengguna pemain yang diikuti ke dalam permainan oleh pemain.
Apakah permainan antarmuka pemain saat ini dihentikan.
Menunjukkan apakah seorang pemain memiliki Lencana Terverifikasi.
Tetapkan jarak di mana pemain ini akan melihat bar kesehatan Humanoid lainnya. Jika diatur ke 0, bar kesehatan tidak akan ditunjukkan.
Item ini menunjukkan id lokasi yang telah ditetapkan pemain lokal untuk akun Roblox mereka.
Menggambarkan ketikkeanggotaan akun.
Tetapkan jarak di mana pemain ini akan melihat nama-nama Humanoid lainnya. Jika diatur ke 0, nama tersembunyi.
Menentukan apakah pemain berada di tim tertentu.
Mengatur bagian untuk fokus replikasi di sekitar.
Jika atur, pemain akan respawn di SpawnLocation yang diberikan.
Mengidentifikasi Tim dengan tim mana seorang Pemain bergabung.
Mengidentifikasi Tim dengan tim mana seorang Pemain bergabung.
Angka identifikasi unik yang ditetapkan untuk semua akun pengguna.
Metode
Menghapus semua aksesori dan item tampilan karakter lainnya dari Karakter pemain.
Mengembalikan jarak antara kepala karakter dan titik Vector3 yang diberikan. Mengembalikan 0 jika pemain tidak memiliki karakter.
Mengembalikan kamus yang berisi informasi tentang cara bergabung Player dengan pengalaman.
Mengembalikan mouse yang digunakan oleh klien.
Mengembalikan ketinggalan jaringan yang dasingin dalam detik.
Mengembalikan apakah atau tidak penampilan karakter pemain telah dimuat.
Mengembalikan apakah pemain diverifikasi dengan sinyal dunia nyata dan konkret.
Nonaktifkan pemain dari gamesecara diam-diam, dengan memberikan pesan opcional.
Menyebabkan karakter pemain berjalan dalam arah yang diberikan sampai dihentikan, atau terputus oleh pemain (dengan menggunakan kendalimereka).
Tetapkan Usia Akun pemain.
Mengatur apakah atau tidak pemain melihat obrolan yang disaring, bukan obrolan normal.
Mengembalikan definisi teman online.
Mengembalikan peringkat pemain di grup sebagai angka antara 0 dan 255, di mana 0 adalah non-mitra dan 255 adalah pemilik grup.
Mengembalikan peran pemain di grup sebagai string, atau "Guest" jika pemain bukan bagian dari grup.
Memeriksa apakah pemain adalah teman pengguna dengan Player.UserId yang diberikan.
Memeriksa apakah pemain anggota kelompok dengan ID yang diberikan.
Membuat karakter baru untuk pemain, menghapus yang lama. Juga menghapus Backpack dan PlayerGui pemain.
Memunculkan avatar sehingga memiliki semua yang dibutuhkan dalam HumanoidDescription .
Permintaan yang server stream ke pemain di sekitar lokasi yang ditentukan.
Acara
Diaktifkan ketika karakter pemain muncul atau respawn.
Dibakar saat penampilan penuh dari Player.Character telah ditambahkan.
Dibakar sebelum karakter pemain dihapus.
Tembak ketika seorang pemain mengobrol dalam game menggunakan chat bar yang disediakan Roblox.
Acara ini diaktifkan setelah kelas mesin game menghasilkan player sebagai diam. Waktu adalah jumlah detik yang telah berlalu sejak saat itu.
Diaktifkan ketika TeleportState seorang pemain berubah.
Properti
AccountAge
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
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
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
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
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
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.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
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
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
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.
DevComputerCameraMode
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
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
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
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
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
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)
DevTouchCameraMode
속성 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
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
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
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
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
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
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
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:
- Workspace.StreamingEnabled yang mengontrol apakah streaming konten diaktifkan
- Workspace.StreamingIntegrityMode dan Enum.StreamingIntegrityMode untuk lebih banyak informasi tentang kapan gameplay dihentikan.
HasVerifiedBadge
Properti HasVerifiedBadge Player menunjukkan apakah pemain memiliki Lencana Terverifikasi.
HealthDisplayDistance
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
Item ini hanya dapat dibaca untuk menentukan keanggotaan (tidak dapat disetel ke ketikkeanggotaan lain). Ini berisi Enum.MembershipType enum dari ketikkeanggotaan akun.
Contoh Kode
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
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
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
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
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
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
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:
- Cetus dari Workspace
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
- Sebuah Player akan muncul dari SpawnLocations yang berada di bawah kendali tim mereka. Dalam beberapa kasus, mungkin lebih mudah untuk mengubah Player.Team pemain daripada.
- Menerapkan logika spawn khusus Anda dengan menggunakan PVInstance:PivotTo() untuk secara manual pindahkan Player.Character .
Contoh Kode
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
Properti Tim adalah referensi ke objek Team di dalam layanan
Contoh Kode
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)
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
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
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
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
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
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
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)
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
Fungsi ClearCharacterAppearance menghapus semua Accessory, Shirt, Pants, 1> Class.CharacterMesh1>
Ini tidak menghapus t-shirts , head meshes, atau wajah.
Memberikan nilai
Contoh Kode
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
Lokasi di mana jarak pemain diukur.
Memberikan nilai
Jarak dalam studs antara pemain dan lokasi.
Contoh Kode
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>
Kunci | JenisNilai | Deskripsi |
---|
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
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)
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)
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
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)
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
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
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
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
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
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
Pesan untuk menunjukkan pengguna saat diusir.
Memberikan nilai
Move
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
Arah Vector3 yang harus diambil pemain.
Boolean yang menunjukkan apakah pemain harus bergerak relatif terhadap kamera pemain.
Memberikan nilai
Contoh Kode
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
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
Usia akun dalam hari.
Memberikan nilai
Contoh Kode
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
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
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.LocalPlayerplayer: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
Boolean yang menunjukkan apakah atau tidak pemain melihat chat yang disaring.
Memberikan nilai
GetFriendsOnline
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>
Nama | Jenis | Deskripsi |
---|
Parameter
Jumlah maksimum teman online yang akan dikembalikan.
Memberikan nilai
Sebuah kamus teman online (lihat tabel di atas).
Contoh Kode
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
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
The groupId of the specified grup.
Memberikan nilai
Peringkat pemain di grup.
Contoh Kode
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
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 dari grup yang ditentukan.
Memberikan nilai
Peran pemain dalam grupyang ditentukan, atau Guest jika pemain bukan anggota.
Contoh Kode
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
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
Class.Player.UserId dari pemain yang ditentukan.
Memberikan nilai
Boolean yang menunjukkan apakah pemain adalah teman pengguna yang ditentukan.
Contoh Kode
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
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 dari grup yang ditentukan.
Memberikan nilai
Boolean yang menunjukkan apakah pemain berada di grup yang ditentukan.
Contoh Kode
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
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):
- Pemain.Character menetapkan
- Pemain.CharacterAdded kebakaran
- Player.Changed menembak dengan nilai "Character"
- Karakter tampilan awal
- Player.CharacterAppearanceLoaded berapi-api
- Character.Parent ditetapkan ke DataModel
- Rig Karakter dibangun, dan skala Karakter
- Karakter pindah ke lokasi spawn
- Memuat karakter kembali
Memberikan nilai
Contoh Kode
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
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
Sebuah HumanoidDescription berisi karakteristik seperti bagian tubuh/warna, skala tubuh, aksesori, pakaian, dan animasi yang akan dipakai ke karakter yang dimuat.
Memberikan nilai
Contoh Kode
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
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
Lokasi dunia di mana streaming diminta.
Waktu batas waktu permintaan.
Memberikan nilai
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
Sebuah instansi dari karakter yang telah muncul/respawn.
Contoh Kode
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)
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)
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
Contoh Kode
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
Sebuah instansi dari karakter yang dihapus.
Contoh Kode
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
Konten pesan yang diketik pemain di chat.
Ditinggalkan. Untuk pesan mendengus, ini adalah Pemain yang merupakan target tujuan pesan chat.
Contoh Kode
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)
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)
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
Waktu dalam detik yang pemain telah diam.
Contoh Kode
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
Class.Player yang baru.
Nama lokasi bertelur untuk di teleportasi, jika TeleportService:TeleportToSpawnByName() telah digunakan.
Contoh Kode
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)