Notecard Giver Dialog

Thread Started By deadpool

2308
0
  • 42 Vote(s) - 2.98 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rate Thread
#1
allowing anyone to touch an object and fish out a notecard of choice.

How-to/Info:

•Copy paste the script below into a new script inworld.
•Save it & then put the script into an object (if not there already).
•Add some notecards then touch it.. Info dispenser 2000 ;)
PHP Code:
// Inventory Menu modified to be a notecard giver, for public use
 
key user;
string object_desc "(Touch for Menu;)";
list 
inventory_list;
integer being_used FALSE;
integer menu_channel;
integer menu_handle;
integer menu_counter;
integer menu_parts;
integer inventory_type INVENTORY_NOTECARD;
integer prim_face ALL_SIDES;
float menu_timeout 30.0;
 
set_listen(){
    
llListenRemove(menu_handle);
    
llSetTimerEvent(menu_timeout);
    
menu_handle llListen(menu_channel""""""); 
}
 
inventory_load(){
    
integer i;
    
menu_parts=0;
    
inventory_list = [];
    for(
i=0< = -llGetInventoryNumber(inventory_type);i++){
        
inventory_list += [llGetInventoryName(inventory_type,i)];
        
menu_parts++;
    }
}
 
inventory_menu(){
    list 
menu_buttons;
    
integer i;
    
menu_buttons = [];
    if(
menu_counter 0)
        
menu_buttons += ["•Back"];
    else
        
menu_buttons += [" "];
        
menu_buttons += ["1st Page"];
    if(
menu_counter*8+menu_parts 1)
        
menu_buttons += ["Next•"];
    else
        
menu_buttons += [" "];
    for(
i=menu_counter*8; (<= menu_counter*8+8) && (<= menu_parts 1);i++){
        
menu_buttons += [llGetSubString(llGetInventoryName(inventory_typei),0,23)];
    }
    
llDialog(user"\n\n         (select \"Ignore\" when done.)"menu_buttonsmenu_channel);
}
 
string Name2full(string str1){//Hen Streeter
    
integer u=0;
    for(;
u<llGetInventoryNumber(inventory_type);u++){
        if(
llGetSubString(llGetInventoryName(inventory_type,u),0,23)==str1)//33..
        
return llGetInventoryName(inventory_type,u);
    }return 
"";
}
 
default{
//
    
state_entry(){
        
menu_channel = (integer)llFrand(DEBUG_CHANNEL) * -1;
        
inventory_load();
        
llSetObjectDesc(object_desc);
    } 
//
    
changed(integer c){
        if(
CHANGED_OWNERllResetScript();
        if(
CHANGED_INVENTORYinventory_load();
    }
//   
    
touch_start(integer total_number){
        if(
being_used){
            
llSay(0,"Sorry, I'm currently being used by someone else.");
            return;
        }
        
being_used TRUE;
        
user llDetectedKey(0);
        
set_listen();
        
inventory_menu();
    }
// 
    
timer(){
        
being_used FALSE;
        
user NULL_KEY;
        
llSetTimerEvent(0.0);
        
llListenRemove(menu_handle);
    } 
//
    
listen(integer chanstring whokey idstring msg){
        if(
llGetOwnerKey(id) != user) return;
        if(
chan == menu_channel){
            
llSetTimerEvent(menu_timeout);
            if(
msg == "•Back"){
                
menu_counter--;
                
inventory_menu();
            }
            else if(
msg == "1st Page"){
                
menu_counter=0;
                
inventory_menu();
            }
            else if(
msg == "Next•"){
                
menu_counter++;
                
inventory_menu();
            }            
            else if(
llListFindList(inventory_list,[Name2full(msg)])!=-1){ 
                
msg=Name2full(msg);
                
llGiveInventory(user,msg);
                
llSetTimerEvent(0.1);
            }    
        }
    }
//

Reply




Forum Jump:

1 Guest(s)
Share this:

About Second Life Copybot

Second Life CopyBot Forum is a place where you can get items for Second Life and other vitual worlds for free. With our CopyBot viewers you can export and import any content from these virtual worlds and modify them in 3D software such as Blender, 3D studio Macx etc...