Project: ActiveNPCs: An interactive-NPC controller
Back to project
File name: NotecardHUD.lsl
Code: View Raw Code
integer channel;
integer listener = -1;
string status;
list btns ;
key owner;
string cardName = "_script.scr";
string scriptText;
list order_buttons(list buttons)
{
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) +
llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
}
string anim = "";
integer menuindex;
DialogPlus(key avatar, string message, list buttons, integer channel, integer CurMenu)
{
if (12 < llGetListLength(buttons))
{
list lbut = buttons;
list Nbuttons = [];
if(CurMenu == -1)
{
CurMenu = 0;
menuindex = 0;
}
if((Nbuttons = (llList2List(buttons, (CurMenu * 10), ((CurMenu * 10) + 9)) + ["<<", ">>"])) == ["<<", ">>"])
{
menuindex =0;
DialogPlus(avatar, message, lbut, channel, menuindex);
}
else
llDialog(avatar, message, order_buttons(Nbuttons), channel);
}
else
llDialog(avatar, message, order_buttons(buttons), channel);
}
showDialog()
{
btns = ["Close", "movetov", "AddCode", "Clear", "SaveCard", "Reload"];
llDialog(llGetOwner(), "Current Script: \n"+llGetSubString(scriptText, -480, -1), btns, channel);
}
startListen()
{
channel = -1 - (integer)("0x" + llGetSubString( (string) llGetOwner(), -6, -1) ) - 12313 ;
llListen(channel, "","","");
}
default
{
state_entry()
{
llSetText("Notecard Editor", <1,1,1>, 1.0);
startListen();
}
attach(key u)
{
startListen();
}
on_rez(integer n)
{
llResetScript();
}
touch_start(integer num)
{
showDialog();
status = "";
}
listen(integer chan, string who, key id, string msg)
{
if (status == "entertext")
{
scriptText = llStringTrim(scriptText, STRING_TRIM) + "\n"+msg+"\n";
status = "";
}
else if (msg == "movetov" )
{
list res = llGetObjectDetails(llGetOwner(), [OBJECT_POS]);
scriptText += "movetov " +(string)llList2Vector(res,0) + "\n";
llOwnerSay("movetov " +(string)llList2Vector(res,0) );
}
else if (msg == "AddCode")
{
llTextBox(llGetOwner(), "" +llGetSubString(scriptText, -120,-1)+ "\nAdd code:" , channel);
status = "entertext";
return;
}
else if (msg == "Clear")
{
scriptText = "";
}
else if (msg == "Reload")
{
scriptText = osGetNotecard(cardName);
}
else if (msg == "SaveCard")
{
if (llGetInventoryType(cardName)==INVENTORY_NOTECARD)
{
llRemoveInventory(cardName);
llSleep(0.25);
}
osMakeNotecard(cardName,scriptText);
llOwnerSay("Card Saved");
}
else if (msg == "Close")
{
return;
}
showDialog();
}
}