--[[ ============================================================== 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:

  1. Masukkan Token Widget Anda dari dashboard stream.isonet.id
  2. Klik tombol [ ⚡ Generate Semua Scene & Widget ]
  3. 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