Below is the notecard instructions and then followed by the source code. This is freeware, not supported, please have fun with it! =)
======== HiroTV ========
- easy, low-lag picture display script.
Freeware by Hiro Pendragon
----------------------------------------
Table of Contents:
1. Setup
2. Commands
3. Frequently Asked Questions
-----------------
1. SETUP
Step 1: Drop the HiroTV script into any prim you'd like to display pictures on.
Step 2: Add pictures.
Step 3: say, "HiroTV:reset"
-------------------------
2. COMMANDS
NOTE: All commands are case sensitive
HiroTV

--------
Changes the name your HiroTV responds to. This is useful if you have more than one up in a room.
For example -
HiroTV

changes the name to "MyTV". All commands now will begin with "MyTV" instead of "HiroTV".
GetHiroTVName
--------
If you've forgotten the name of your HiroTV, you can use this command and any HiroTV in range that you
own will tell you its name.
HiroTV

--------
Changes the color of the floating text, using 0-255 values for Red, Green, and Blue.
Example -
HiroTV

changes the floating text to white.
HiroTV

changes the floating text to magenta
HiroTV

turns off the floating text. You can turn it on again by simply doing the setcolor command with what color you want.
HiroTV

--------
Changes how many seconds between change of picture
Example -
HiroTV

changes the time between display to 10 seconds
-----------------------
3. Frequently Asked Questions
Q: It won't let me add pictures!
A: Make sure you are: (a) adding them to the Content folder of the TV (b) Not trying to add the pictures while the picture changes.
Q: How do I make the pictures stop changing!
A: HiroTV

Q: I added pictures but why won't they display?
A: HiroTV:reset
Q: Can I modify HiroTV?
A: Yes, it's open source freeware. Please do not delete any comments from the code if you modify. Thanks!
Q: Can I resell HiroTV or modified HiroTV?
A: No, please keep this freeware.
Q: Does the creator offer help with this product?
A: No. Play at your own risk.
Have fun!
CODE
key ownerkey;
string tvname = "HiroTV";
integer numberitems = 0;
integer selected = 1;
integer storelisten = 0;
float r=1.0;
float g=1.0;
float b=1.0;
integer switchtime = 15;
updatetext()
{
if(r==-1)
llSetText("",<0,0,0>,100);
else
llSetText(llGetInventoryName(INVENTORY_TEXTURE,( selected - 1))+
"\nPicture "+(string)selected+" of "+(string)numberitems, <r,g,b>, 1.5);
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE,(selected - 1)),ALL_SIDES);
}
Init()
{
ownerkey = llGetOwner();
llInstantMessage(ownerkey,"HiroTV script reset!");
numberitems = llGetInventoryNumber(INVENTORY_TEXTURE);
updatetext();
llListenRemove(storelisten);
storelisten = llListen(0,"",ownerkey,"");
}
switchpic()
{
selected++;
if (selected > numberitems)
selected = selected - numberitems;
updatetext();
}
default
{
state_entry()
{
Init();
llSetTimerEvent(switchtime);
}
on_rez(integer param)
{
Init();
llSetTimerEvent(switchtime);
}
listen(integer channel, string name, key id, string msg)
{
list command = llParseString2List(msg,[":"],[]);
if(llList2String(command,0)==tvname)
// ALL COMMANDS MUST START WITH THE TVNAME
{
string whichcommand=llList2String(command,1);
if(whichcommand=="setname")
{
string newname=llList2String(command,2);
if(newname!="")
{
llSay(0,"HiroTV '"+tvname+"' has been renamed: '"+newname+"'.");
tvname=newname;
}
else
{
llSay(0,"Sorry, you must enter a name for your vendor. Please try again.");
}
}
else if(whichcommand == "setcolor")
{
list colors = llParseString2List(llList2String(command,2),[","],[]);
r = (float)(llList2String(colors,0));
if(r != -1)
{
r = r / 255;
}
g = ((float)(llList2String(colors,1))/255);
b = ((float)(llList2String(colors,2))/255);
updatetext();
}
else if(whichcommand == "settimer")
{
switchtime = (integer)llList2String(command,2);
llInstantMessage(ownerkey,"HiroTV will now switch every "+(string)switchtime+" seconds.");
llSetTimerEvent(switchtime);
}
else if(whichcommand == "reset")
{
llResetScript();
}
}
else
if(llList2String(command,0)=="GetHiroTVName")
{
llSay(0,"My name is: "+tvname);
}
} // end listen
touch( integer n)
{
// llSay(0,"changing");
switchpic();
}
timer()
{
switchpic();
}
}