Penetapan Harga Regional

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

Dengan Penetapan Harga Terkelola, Anda dapat menawarkan harga yang spesifik untuk wilayah untuk item Anda dan membangun ekonomi global yang lebih inklusif dan dapat diakses. Setelah Anda menentukan harga global default untuk suatu item, Roblox menggunakan berbagai sinyal seperti daya beli wilayah, kurs mata uang, dan perilaku pengeluaran lokal untuk menetapkan harga yang paling tepat untuk item tersebut, wilayah demi wilayah.

Anda dapat memilih item mana yang ingin Anda tetapkan harganya secara regional. Ketika Anda mengaktifkan Penetapan Harga Terkelola untuk item dalam permainan Anda, Roblox secara otomatis menyesuaikan harga item tersebut untuk pengguna berdasarkan lokasi ekonomi mereka.

Lokasi ekonomi tidak selalu sama dengan lokasi akun. Untuk menentukan lokasi ekonomi pengguna, Roblox melihat sinyal-sinyal, termasuk penggunaan VPN, riwayat penagihan, dan riwayat akun. Jika lokasi ekonomi mereka tidak dapat ditentukan, pengguna akan melihat harga global default untuk item tersebut.

Untuk mencegah arbitrase harga ketika pengguna memberikan atau memperdagangkan item dengan harga yang dikelola yang berbeda, Anda dapat mengelola transfer dalam permainan dengan API GetUsersPriceLevelsAsync.

Aktifkan penetapan harga regional

Untuk passes

Penetapan harga regional diaktifkan secara default untuk semua passes baru dan yang sudah ada melalui Harga Terkelola.

Untuk menonaktifkan harga terkelola untuk sebuah pass:

  1. Pergi ke Kreasi dan pilih sebuah game.
  2. Pergi ke MonetisasiPasses.
  3. Pilih satu atau lebih passes yang sudah ada.
  4. Klik Nonaktifkan Harga Terkelola.
  5. OPSI
    Untuk melihat harga terkelola menurut negara atau wilayah, pilih sebuah pass dan pergi ke halaman Penjualan. Daftar Negara/Wilayah Teratas diperbarui untuk menunjukkan harga yang disesuaikan berdasarkan harga default pass. Untuk melihat harga untuk semua negara dan wilayah, klik Lihat semua negara.

Untuk produk pengembang

Untuk mengaktifkan harga terkelola untuk produk pengembang:

  1. Pastikan produk pengembang Anda memiliki harga yang discript secara dinamis.
  2. Terapkan metode GetUsersPriceLevelsAsync untuk mengatur transfer item berdasarkan level harga pengguna.
  3. Pergi ke Kreasi dan pilih sebuah game.
  4. Pergi ke MonetisasiProduk Pengembang.
  5. Pilih satu atau lebih produk yang sudah ada, atau buat produk baru.
  6. Klik Aktifkan Harga Terkelola.
  7. OPSI
    Untuk melihat Harga Terkelola menurut negara atau wilayah, pilih sebuah produk dan pergi ke halaman Pengaturan Dasar. Daftar Negara/Wilayah Teratas diperbarui untuk menunjukkan harga yang disesuaikan berdasarkan harga default produk. Untuk melihat Harga Terkelola untuk semua negara dan wilayah, klik Lihat semua negara.

Untuk langganan

Harga terkelola diaktifkan secara default untuk langganan yang dipatok dalam Robux dan tidak dapat dimatikan. Untuk informasi lebih lanjut, lihat Buat langganan.

Harga terkelola tidak tersedia untuk langganan yang dipatok dalam mata uang lokal.

Untuk item Avatar

Untuk mengaktifkan Harga Terkelola untuk item Avatar, lihat Penetapan Harga di halaman Publikasi ke Marketplace.

Periksa harga dinamis

Ketika Anda mengaktifkan Harga Terkelola, harga item disesuaikan untuk pengguna di berbagai wilayah baik itu untuk dijual di dalam maupun di luar game Anda. Namun, jika Anda telah mengkodekan harga tersebut ke dalam UI game Anda, angka tersebut tidak akan diperbarui karena tidak dinamis atau dapat diakses oleh Roblox. Sebagai hasilnya, pengguna dikenakan biaya harga spesifik wilayah yang benar tetapi UI masih menunjukkan nilai yang dikodekan secara keras.

Alat pemeriksa harga dinamis memperbarui semua item yang dijual di dalam game Anda dengan harga Robux palsu atau lokasi ekonomi palsu untuk membantu Anda mengidentifikasi harga mana yang dikodekan secara keras di UI game Anda dan mana yang discript secara dinamis dengan MarketplaceService dan dipanggil dari skrip klien. Setelah Anda mengidentifikasi passes yang dikodekan secara keras, Anda dapat memperbaruinya untuk menggunakan fungsi MarketplaceService.

Untuk menggunakan alat pemeriksa harga dinamis:

  1. Pergi ke Monetisasi.
    • Untuk passes, pergi ke Passes.
    • Untuk produk pengembang, pergi ke Produk Pengembang.
  2. Klik dan pilih Pemeriksa Harga Dinamis.
  3. Di bawah Tambahkan akun uji, masukkan hingga lima pengguna Roblox untuk memeriksa harga yang dikodekan secara keras.
  4. Pilih jenis pengujian.
    • Harga yang dipin memperbarui semua harga yang discript secara dinamis dengan jumlah Robux palsu yang ditentukan.
    • Lokasi yang dipin memperbarui semua harga yang discript secara dinamis dengan harga spesifik wilayah untuk lokasi ekonomi palsu.
  5. Klik Aktifkan. Setelah beberapa menit, masuk ke game Anda untuk mengidentifikasi harga yang dikodekan secara keras.

Untuk menonaktifkan alat pemeriksa harga dinamis, pergi ke halaman Pemeriksa Harga Dinamis dan klik Nonaktifkan.

Untuk informasi lebih lanjut tentang harga produk yang dikodekan secara keras versus yang discript secara dinamis, lihat Periksa harga dinamis di halaman Optimasi Harga. Untuk informasi lebih lanjut tentang menjual passes dan produk pengembang dengan fungsi MarketplaceService, lihat Jual pass di dalam game Anda dan Jual produk pengembang di dalam game Anda.

Tampilkan harga regional di game Anda

Dengan Harga Terkelola, harga yang dilihat pengguna dapat bervariasi berdasarkan lokasi mereka. Jika Anda menampilkan harga dalam UI khusus dalam game, seperti TextLabel, Anda dapat mengambil informasi produk saat runtime untuk memastikan harga yang ditampilkan sesuai dengan harga yang ditunjukkan dalam prompt pembelian.

Untuk menampilkan harga regional untuk satu produk pengembang atau pass, gunakan GetProductInfoAsync.

Untuk menampilkan harga regional untuk semua produk pengembang, gunakan GetDeveloperProductsAsync.

Lindungi perdagangan dan hadiah Anda

Harga terkelola dapat memengaruhi transfer dalam game seperti perdagangan dan pemberian hadiah. Karena perbedaan harga di seluruh wilayah, arbitrase harga (memanfaatkan perbedaan harga antara produk yang sama untuk menghasilkan keuntungan) dapat terjadi. Untuk mengelola potensi arbitrase harga, Anda dapat menggunakan API GetUsersPriceLevelsAsync, yang memungkinkan Anda menentukan level harga relatif pengguna agar Anda dapat menerapkan logika untuk mengatur transfer item berdasarkan level ini.

GetUsersPriceLevelsAsync memberikan nilai numerik antara 1 dan 1000 yang menunjukkan level harga pengguna. Nilai ini dirancang untuk mewakili persentase dari harga penuh yang diharapkan dibayar pengguna. Level harga 1000 mewakili harga global penuh, sementara level harga yang lebih rendah menunjukkan bahwa pengguna umumnya membayar harga yang lebih rendah karena lokasi ekonomi mereka.

Perbedaan level harga yang lebih rendah berarti bahwa terdapat perbedaan harga yang lebih kecil antara harga global penuh dan harga terkelola pengguna. Perbedaan level harga yang lebih tinggi berarti bahwa terdapat perbedaan harga yang lebih besar antara keduanya. Sebagai contoh:

  • Pengguna A memiliki level harga 1000, yang mewakili harga global penuh. Pengguna ini membayar 100% dari harga dasar untuk suatu item.
  • Pengguna B memiliki level harga 500, yang mewakili 50% dari harga global penuh. Pengguna ini membayar 50% dari harga dasar untuk suatu item.
  • Setelah Anda mengetahui level harga masing-masing pengguna, Anda dapat memilih untuk menyetujui atau memblokir pemberian hadiah atau perdagangan antara Pengguna A dan Pengguna B berdasarkan perbedaan level harga mereka sebesar 500.

Implementasi GetUsersPriceLevelsAsync

Untuk mendapatkan level harga pengguna yang terlibat dalam transfer item, panggil fungsi GetUsersPriceLevelsAsync di MarketplaceService. Fungsi ini mengambil array ID pengguna sebagai argumennya, dan mengembalikan array objek PriceLevelInfo dengan field berikut:


type PriceLevelInfo = {
UserId: number,
PriceLevel: number
}

Setelah menerapkan fungsi, gunakan level harga yang diterima untuk memilih apakah Anda ingin mengizinkan transfer item terjadi. Sebagai contoh, Anda dapat membiarkan pengguna dengan level harga yang lebih tinggi memberikan item kepada pengguna dengan level harga yang lebih rendah, tetapi hanya mengizinkan perdagangan antara pengguna yang memiliki level harga yang sama. Lihat contoh yang tersedia untuk informasi lebih lanjut.

Untuk informasi lebih lanjut tentang API GetUsersPriceLevelsAsync, lihat MarketplaceService.

Contoh

Contoh bagaimana Anda dapat menggunakan GetUsersPriceLevelsAsync dengan harga regional.

Contoh 1: Periksa level harga untuk daftar pengguna

Contoh ini menunjukkan cara mengambil level harga untuk daftar pengguna, yang dapat membantu Anda memilih apakah Anda ingin mengizinkan transfer item terjadi.


-- Dapatkan MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Definisikan fungsi untuk mengambil level harga untuk daftar pengguna dan membuat tabel pencarian UserId ke PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Peta setiap PriceLevelInfo ke tabel pencarian UserId -> PriceLevel
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Kesalahan saat mendapatkan level harga:", result)
return nil
end
end
-- Contoh menggunakan ID placeholder
local user1Id = 123456789
local user2Id = 987654321
-- Panggil fungsi dan simpan hasilnya
local priceLevels = getPriceLevelsLookup({user1Id, user2Id})
-- Jika berhasil, cetak level masing-masing pengguna
if priceLevels then
print("Level harga untuk Pengguna 1:", priceLevels[user1Id])
print("Level harga untuk Pengguna 2:", priceLevels[user2Id])
else
print("Gagal mengambil level harga.")
end
Contoh 2: Bandingkan level harga pengirim dengan level harga penerima

Contoh ini menunjukkan kepada Anda implementasi contoh tentang cara memeriksa level harga pengirim terhadap level harga penerima. Ini dapat membantu Anda mengatur pemberian hadiah dari pengguna di wilayah dengan harga lebih tinggi kepada pengguna di wilayah dengan harga lebih rendah.


-- Dapatkan MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Definisikan fungsi untuk mengambil level harga untuk daftar pengguna dan membuat tabel pencarian UserId ke PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Peta setiap PriceLevelInfo ke tabel pencarian UserId -> PriceLevel
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Kesalahan saat mendapatkan level harga:", result)
return nil
end
end
-- Definisikan fungsi yang memeriksa apakah pengirim memiliki level harga lebih tinggi atau sama dengan penerima
-- Parameter adalah Pemain yang mengirim item dan Pemain yang menerima item
-- Fungsi mengembalikan true jika level harga pengirim lebih besar dari atau sama dengan level harga penerima
function isSenderPriceLevelHigherOrEqualforGifting(sender, recipient)
local priceLevelsLookup = getPriceLevelsLookup({ sender.UserId, recipient.UserId })
if not priceLevelsLookup then
error("MarketplaceService:GetUsersPriceLevelsAsync gagal. Tidak dapat mengambil level harga pengguna.")
end
local senderPriceLevel = priceLevelsLookup[sender.UserId]
local recipientPriceLevel = priceLevelsLookup[recipient.UserId]
return senderPriceLevel >= recipientPriceLevel
end
Contoh 3: Periksa apakah dua pengguna memiliki level harga yang sama

Contoh ini menunjukkan kepada Anda implementasi contoh tentang cara memeriksa apakah dua pengguna memiliki level harga yang sama. Ini dapat membantu Anda mengatur perdagangan dan memastikan pertukaran yang adil antara pengguna dari berbagai wilayah.


-- Dapatkan MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Definisikan fungsi untuk mengambil level harga untuk daftar pengguna dan membuat tabel pencarian UserId ke PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Peta setiap PriceLevelInfo ke tabel pencarian UserId -> PriceLevel
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Kesalahan saat mendapatkan level harga:", result)
return nil
end
end
-- Definisikan fungsi yang memeriksa apakah dua pengguna memiliki level harga yang sama
-- Parameter adalah dua pengguna yang ingin Anda bandingkan level harganya
-- Fungsi mengembalikan true jika kedua pengguna memiliki level harga yang sama
function haveSamePriceLevelForTrading(userA, userB)
local priceLevelsLookup = getPriceLevelsLookup({ userA.UserId, userB.UserId })
if not priceLevelsLookup then
error("MarketplaceService:GetUsersPriceLevelsAsync gagal. Tidak dapat mengambil level harga pengguna.")
end
local userAPriceLevel = priceLevelsLookup[userA.UserId]
local userBPriceLevel = priceLevelsLookup[userB.UserId]
return userAPriceLevel == userBPriceLevel
end
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.