// SKODIN Video Media Prim // Put this in a prim you own. Touch the prim to load the SKODIN video page as Shared Media. // If the video appears on the wrong side of the prim, change MEDIA_FACE below. integer MEDIA_FACE = 0; string VIDEO_PAGE_URL = "https://cavemans.us/skodin-video-lhf.html"; string VIDEO_MP4_URL = "https://cavemans.us/assets/videos/SKODIN_v11.mp4"; integer MENU_CHANNEL; integer LISTEN_HANDLE; key OWNER; showMenu(key toucher) { MENU_CHANNEL = -1 - (integer)llFrand(1000000.0); if (LISTEN_HANDLE) llListenRemove(LISTEN_HANDLE); LISTEN_HANDLE = llListen(MENU_CHANNEL, "", toucher, ""); llDialog(toucher, "SKODIN Video Media", ["LOAD PAGE", "LOAD MP4", "STOP", "OWNER SAY"], MENU_CHANNEL); } loadMedia(string url) { llSetPrimMediaParams(MEDIA_FACE, [ PRIM_MEDIA_CURRENT_URL, url, PRIM_MEDIA_HOME_URL, url, PRIM_MEDIA_AUTO_PLAY, TRUE, PRIM_MEDIA_CONTROLS, PRIM_MEDIA_CONTROLS_STANDARD, PRIM_MEDIA_PERMS_INTERACT, PRIM_MEDIA_PERM_ANYONE, PRIM_MEDIA_PERMS_CONTROL, PRIM_MEDIA_PERM_OWNER, PRIM_MEDIA_WIDTH_PIXELS, 1280, PRIM_MEDIA_HEIGHT_PIXELS, 720 ]); llOwnerSay("SKODIN video media loaded: " + url); } default { state_entry() { OWNER = llGetOwner(); llOwnerSay("SKODIN video media prim ready. Touch for menu. Media face: " + (string)MEDIA_FACE); } touch_start(integer total_number) { key toucher = llDetectedKey(0); if (toucher == OWNER) { showMenu(toucher); } else { llInstantMessage(toucher, "This SKODIN video screen is owner controlled."); } } listen(integer channel, string name, key id, string message) { if (LISTEN_HANDLE) { llListenRemove(LISTEN_HANDLE); LISTEN_HANDLE = 0; } if (message == "LOAD PAGE") { loadMedia(VIDEO_PAGE_URL); } else if (message == "LOAD MP4") { loadMedia(VIDEO_MP4_URL); } else if (message == "STOP") { llClearPrimMedia(MEDIA_FACE); llOwnerSay("SKODIN video media cleared."); } else if (message == "OWNER SAY") { llOwnerSay("Second Life page: " + VIDEO_PAGE_URL); llOwnerSay("Direct MP4: " + VIDEO_MP4_URL); } } }