// // HYPEvents in-world teleporter board script // // Author: Tom Frost // // GPLv3 // // configuration: float refreshTime = 1800; // internal, do not touch: integer lineHeight = 30; integer startY = 90; integer texWidth = 512; integer texHeight = 512; key httpRequest; list events; integer channel; integer listenHandle; integer listening = 0; list avatarDestinations = []; // // manipulate global avatarDestinations list // // insert or overwrite destination for agent with dest // tfSetAvatarDest(key agent, string dest) { list newList = []; integer idx; integer len = llGetListLength(avatarDestinations)/2; integer set = FALSE; for(idx=0;idx0;in=llGetSubString(in,0,-2)) { vector extents = osGetDrawStringSize("vector",in,fontname,fontsize); if(extents.x<=width) { if(trimmed) { return in + ".."; } else { return in; } } trimmed = TRUE; } return ""; } refreshTexture() { string commandList = ""; integer fontSize=50; commandList = osMovePen(commandList, 20, 5); commandList = osDrawImage(commandList, 400, 70, "http://linkwater.org/dyntex/hypevents_logo.png"); commandList = osSetPenSize(commandList, 1); commandList = osDrawLine(commandList, 0, 80, 512, 80); integer numEvents = llGetListLength(events)/3; integer i; integer y = startY; commandList = osSetFontName(commandList, "Arial"); commandList = osSetFontSize(commandList, 20); for(i=0;i, <1.0,1.0,0.0> ); } } } } touch_end(integer num) { integer i; for(i=0;i=startY) { integer touchIndex; touchIndex = (integer)((touchY - startY) / lineHeight); tfGoToEvent(avatar, touchIndex); } } } timer() { // timeout listener if(listening!=0) { if( (listening + 300) < (integer)llGetTime() ) { llListenRemove(listenHandle); avatarDestinations=[]; listening = 0; } } // refresh texture doRequest(); } }