--[[
==============================================================
IsoNet Stream Studio - Official OBS Studio Native Lua Plugin
Versi: 3.5 Ultra Edition
Kompatibel: OBS Studio v28, v29, v30+ (Windows / Mac / Linux)
Fungsi:
- 1-Klik Otomatis Buat Semua Scene (Gaming, Chatting, Gameplay, BRB, dll)
- Konfigurasi Otomatis Browser Source Resolusi 1080p & 9:16 Portrait
- Menghubungkan Browser Dock Stream Deck Controller
==============================================================
--]]
local obs = obslua
local server_url = "https://stream.isonet.id"
local widget_token = "token_alerts_demo_123456789"
local tiktok_user = "isonet.official"
-- Deskripsi Plugin di Menu Tools -> Scripts
function script_description()
return [[
🚀 IsoNet Stream Studio OBS Plugin
Plugin resmi untuk stream.isonet.id. Memudahkan streamer memasang semua widget, layout TikTok LIVE 9:16, dan scene overlay ke OBS Studio hanya dengan SATU KLIK tanpa perlu membuat browser source satu per satu secara manual!
Petunjuk Cepat:
- Masukkan Token Widget Anda dari dashboard stream.isonet.id
- Klik tombol [ ⚡ Generate Semua Scene & Widget ]
- OBS akan otomatis membuat 6 Scene lengkap siap live!
]]
end
-- Helper: Buat Browser Source di dalam Scene
local function add_browser_source(scene, name, url, width, height, custom_css)
local settings = obs.obs_data_create()
obs.obs_data_set_string(settings, "url", url)
obs.obs_data_set_int(settings, "width", width)
obs.obs_data_set_int(settings, "height", height)
obs.obs_data_set_bool(settings, "fps_custom", true)
obs.obs_data_set_int(settings, "fps", 60)
obs.obs_data_set_bool(settings, "restart_when_active", false)
obs.obs_data_set_bool(settings, "shutdown", false)
if custom_css then
obs.obs_data_set_string(settings, "css", custom_css)
else
obs.obs_data_set_string(settings, "css", "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }")
end
local source = obs.obs_source_create("browser_source", name, settings, nil)
obs.obs_data_release(settings)
if source then
local scene_item = obs.obs_scene_add(scene, source)
obs.obs_source_release(source)
return scene_item
end
return nil
end
-- Helper: Cari atau Buat Scene
local function get_or_create_scene(scene_name)
local scene_source = obs.obs_get_source_by_name(scene_name)
if scene_source then
local scene = obs.obs_scene_from_source(scene_source)
obs.obs_source_release(scene_source)
return scene
else
return obs.obs_scene_create(scene_name)
end
end
-- Fungsi Utama: Otomatis Membuat Semua Scene & Widget
local function generate_all_scenes()
obs.script_log(obs.LOG_INFO, "[IsoNet] Mulai membuat koleksi Scene IsoNet Stream...")
-- 1. Scene: TikTok Mobile Gaming 9:16 Portrait
local sc_gaming = get_or_create_scene("📱 IsoNet - TikTok Mobile Gaming (9:16)")
if sc_gaming then
add_browser_source(sc_gaming, "Overlay - TikTok Gaming Layout", server_url .. "/w/layout-portrait-gaming.html", 1080, 1920)
add_browser_source(sc_gaming, "Widget - Alert Box", server_url .. "/w/alert.html?token=" .. widget_token, 800, 600)
add_browser_source(sc_gaming, "Widget - Soundboard SFX", server_url .. "/w/soundboard.html?token=" .. widget_token, 400, 300)
add_browser_source(sc_gaming, "Widget - TTS Reader", server_url .. "/w/tts.html?token=" .. widget_token, 300, 150)
end
-- 2. Scene: TikTok Just Chatting & Podcast 9:16 Portrait
local sc_chat = get_or_create_scene("🎙️ IsoNet - Just Chatting & Podcast (9:16)")
if sc_chat then
add_browser_source(sc_chat, "Overlay - Just Chatting Layout", server_url .. "/w/layout-portrait-justchatting.html", 1080, 1920)
add_browser_source(sc_chat, "Widget - Alert Box", server_url .. "/w/alert.html?token=" .. widget_token, 800, 600)
add_browser_source(sc_chat, "Widget - Soundboard SFX", server_url .. "/w/soundboard.html?token=" .. widget_token, 400, 300)
end
-- 3. Scene: Landscape 1080p Main Stream (Gameplay + Widgets Lengkap)
local sc_main = get_or_create_scene("🎮 IsoNet - Main 1080p Gameplay")
if sc_main then
add_browser_source(sc_main, "Overlay - Cyberpunk HUD Frame", server_url .. "/w/theme-cyberpunk.html", 1920, 1080)
add_browser_source(sc_main, "Widget - Alert Box Pop-up", server_url .. "/w/alert.html?token=" .. widget_token, 800, 600)
add_browser_source(sc_main, "Widget - TikTok Live Chat", server_url .. "/w/chat.html?token=" .. widget_token, 450, 700)
add_browser_source(sc_main, "Widget - PK Battle Bar", server_url .. "/w/pk-battle.html?token=" .. widget_token, 900, 120)
add_browser_source(sc_main, "Widget - Subathon HUD", server_url .. "/w/subathon.html?token=" .. widget_token, 480, 200)
add_browser_source(sc_main, "Widget - 3D Social Rotator", server_url .. "/w/social-rotator.html", 340, 70)
add_browser_source(sc_main, "Widget - Saweran QRIS Float", server_url .. "/w/qris-float.html", 320, 180)
add_browser_source(sc_main, "Widget - Media Share Video", server_url .. "/w/mediashare.html?token=" .. widget_token, 640, 360)
add_browser_source(sc_main, "Widget - Emote Rain Shower", server_url .. "/w/emote-rain.html?token=" .. widget_token, 1920, 1080)
add_browser_source(sc_main, "Widget - Soundboard SFX", server_url .. "/w/soundboard.html?token=" .. widget_token, 400, 300)
add_browser_source(sc_main, "Widget - TTS Voice Engine", server_url .. "/w/tts.html?token=" .. widget_token, 300, 150)
end
-- 4. Scene: Starting Soon (1080p Countdown)
local sc_starting = get_or_create_scene("🎬 IsoNet - Starting Soon (1080p)")
if sc_starting then
add_browser_source(sc_starting, "Overlay - Starting Countdown 5M", server_url .. "/w/overlay-starting.html?minutes=5&tiktok=" .. tiktok_user, 1920, 1080)
end
-- 5. Scene: Be Right Back (BRB)
local sc_brb = get_or_create_scene("☕ IsoNet - Be Right Back (1080p)")
if sc_brb then
add_browser_source(sc_brb, "Overlay - BRB Break Screen", server_url .. "/w/overlay-brb.html", 1920, 1080)
end
-- 6. Scene: Ending & Movie Credits
local sc_ending = get_or_create_scene("⭐ IsoNet - Ending & Movie Credits (1080p)")
if sc_ending then
add_browser_source(sc_ending, "Overlay - Movie Credits Roll", server_url .. "/w/credits.html", 1920, 1080)
end
obs.script_log(obs.LOG_INFO, "[IsoNet] SUKSES! Seluruh 6 Scene dan Browser Source telah berhasil dibuat secara otomatis di OBS Studio.")
end
-- Form Pengaturan Properties di OBS
function script_properties()
local props = obs.obs_properties_create()
obs.obs_properties_add_text(props, "server_url", "Server Hub URL:", obs.OBS_TEXT_DEFAULT)
obs.obs_properties_add_text(props, "widget_token", "Streamer Widget Token:", obs.OBS_TEXT_DEFAULT)
obs.obs_properties_add_text(props, "tiktok_user", "Username TikTok (tanpa @):", obs.OBS_TEXT_DEFAULT)
obs.obs_properties_add_button(props, "btn_generate", "⚡ Generate Semua Scene & Widget Otomatis", function()
generate_all_scenes()
return true
end)
return props
end
function script_defaults(settings)
obs.obs_data_set_default_string(settings, "server_url", "https://stream.isonet.id")
obs.obs_data_set_default_string(settings, "widget_token", "token_alerts_demo_123456789")
obs.obs_data_set_default_string(settings, "tiktok_user", "isonet.official")
end
function script_update(settings)
server_url = obs.obs_data_get_string(settings, "server_url")
widget_token = obs.obs_data_get_string(settings, "widget_token")
tiktok_user = obs.obs_data_get_string(settings, "tiktok_user")
end
function script_load(settings)
obs.script_log(obs.LOG_INFO, "[IsoNet Stream Plugin] Loaded successfully! Ready to generate scenes.")
end