Difference between revisions of "User:Maddox Deluxe"

From Second Life Wiki
Jump to navigation Jump to search
(Notecard Configuration Reader by Maddox Deluxe)
 
m (-cat, script is already included)
 
(40 intermediate revisions by one other user not shown)
Line 1: Line 1:
<lsl>
[[File:profile.png|200px|thumb|left|Maddox Deluxe -(PF)- Picture]]
// Notecard Configuration Reader by Maddox Deluxe
// This script is free; you can redistribute it and/or modify it
// Just read the comments on the script


key notecardQueryId; //name key of the notecard
I'm Maddox Deluxe from USA. I been out of Second Life for a long time, but I'm back now to work on some new projects ideas.
integer line; // note card line tracker


// Variables
'''Languages''': [http://en.wikipedia.org/wiki/English_language English]
string Author_Name = "";
string Menu_Button_Name = "";
string Back_Drop_UUID = "";
string Floor_Drop_UUID = "";
string data; // note card data
string GetNoteName; // incoming note card name


list Themes; // our list database for testing
----


integer ThemesCount; // counts how many themes they are in the note card configuration
{{ColorPanel
|background=#cdd
|bordercolor=#000
|Second Life Skills List|
* Builder
* Scripter
}}


key User; // user tracker key
{{ColorPanel
|background=#cdd
|bordercolor=#000
|Real World Skills List|
* Photoshop CC
* Dreamweaver CC
* Flash Professional CC
* 3ds Max 2014
* DAZ Studio v4.x
* iClone v5.x PRO
* Unity v4.x
* Visual Studio 2012 (#C/C++)
* PHP v5.x and MySQL v5.x
}}


// Function by Maddox Deluxe
{{ColorPanel
// test to dump all 3 elements in the list that goes with each other.
|background=#cdd
DumpListFind(list db, string name)
|bordercolor=#000
{
|My Free Scripts|
integer index = llListFindList(db, [name]);
# v1.6 [[Notecard_Configuration_Reader_by_Maddox_Deluxe]]
        if (~index)
}}
        {
            list Found = llList2List(db, index, index + 2);
           
            string BN = llList2String(Found,0); 
            string BD = llList2String(Found,1);
            string FD = llList2String(Found,2);
           
            llOwnerSay("Dunp Testing for list database search\nButton Name: "+(string)BN+ "\nBackdrop Texture: "+(string)BD+ "\nFloor drop Texture: "+(string)FD);
           
    llOwnerSay("List Dump Found test: "+llDumpList2String(Found, ","));
           
  //  llMessageLinked(LINK_SET, 0,"SET BACKDROP TEXTURE",(string)BD);
            if(FD != "00000000-0000-0000-0000-000000000000")
            {
//    llMessageLinked(LINK_SET, 0,"SET FLOOR DROP TEXTURE",(string)FD);
            }
           
        }
}
// Function by Maddox Deluxe
// looks for 3 elements and the search string is the first element of the set
integer IsElement(list db, string search)
{
integer index = llListFindList(db, [search]);
        if (~index)
        {
            list Found = llList2List(db, index, index + 2);
           
            string i = llList2String(Found,0); 
            if (i == search)
            return TRUE; // was found
        }
        return FALSE; // was not found
}
// just for testing on this demo script to check keys
integer isKey(key test)
{
    if (llStringLength(test) != 36)
        return FALSE;
       


    // Hyphenation test:
{{skills
    if  (    (llGetSubString(test, 8, 8) != "-")
|Builder=*
          ||  (llGetSubString(test, 13, 13) != "-")
|Scripter=*
          ||  (llGetSubString(test, 18, 18) != "-")
|}}
          ||  (llGetSubString(test, 23, 23) != "-"))
            return FALSE;
           
    // Remove dashes
    test = llDeleteSubString(llDeleteSubString(llDeleteSubString(llDeleteSubString((string)test, 8, 8), 12, 12), 16, 16), 20, 20);
    // Hex test
    integer i;
    for (i = 0; i < 32; i+=4)
    {
        string char = llGetSubString(test, i, i+3 );
        if ((integer)("0x"+char) == 0 && char != "0000")
            return FALSE;
    }
    return TRUE; // Passed all tests
}
// note card loader
NoteCardInit(string GrabNoteCardName, key id) // key id could be use for dialog messages or llInstantMessages
{
  if(llGetInventoryType(GrabNoteCardName) != INVENTORY_NOTECARD)
    {
  llInstantMessage(id,"Theme note card was not found. "+(string)GrabNoteCardName+". Note card not found in the content");
  return; 
    }
    Themes = [];// clear the themes list
    line = 0; //start reading from first line 0
    ThemesCount = 0; // counts how many themes they are
    notecardQueryId = llGetNumberOfNotecardLines(GetNoteName);
    llInstantMessage(id,"Please stand by, reading themes configuration for " +GetNoteName);
}
 
ProcessThemes(string data, key id) // key id could be use for dialog messages or llInstantMessages
{
list cmd;
string cmd_grab;
string value;
 
//  if we are at the end of the file
    if(data == EOF)
    {
        llInstantMessage(id,"Done reading themes configuration for "+GetNoteName+ "\n\nTotal Themes: "+(string)ThemesCount);
        // lets use the 2nd search string for this test. The search strings are the button names in the note card configuration.
        string search_test = "Fantasy Car";
       
        if(IsElement(Themes,search_test)==TRUE)
        {
          DumpListFind(Themes,search_test);
          return;
        }
        else
        return;
    }
    if(data != "")
    {
          // speed is the key when scripting, I always write fast codes
 
        if ( llGetSubString(data, 0, 0) != "//" && llStringTrim(data, STRING_TRIM) != "" )
        {
            integer index = llSubStringIndex(data, " ");
            if(~index)
            {
            cmd = llParseString2List(data, ["="], []);
cmd_grab = llStringTrim(llToLower(llList2String(cmd, 0)),STRING_TRIM);
value = llStringTrim(llList2String(cmd, 1), STRING_TRIM);
         
            // should always add block if statements for error checking
 
            if(cmd_grab == "author name")
            {
            Author_Name = value;
            // error checking for Author Name
            if(value == "")
            {
            llInstantMessage(id,"Themes Configuration Error: on line " +(string)line+ ". Author Name can not be empty");
            return;
            }
          }
            else
            if(cmd_grab == "menu button name")
            {
            Menu_Button_Name = value;
            // error checking for Menu Button Name
            if(value == "")
            {
            llInstantMessage(id,"Themes Configuration Error: on line " +(string)line+ ". Menu Button Name can not be empty");
            return;
            }
            }
            else
            if(cmd_grab == "backdrop texture uuid")
          {
            Back_Drop_UUID = llToLower(value);
            // error checking for BackDrop Texture UUID
            if(value == "" || (isKey((string)value) != TRUE))
            {
            llInstantMessage(id,"Themes Configuration Error: on line " +(string)line+ ". (1) The Backdrop Texture UUID is empty. (2) The Backdrop UUID is not a key.");
            return;
            }
          }
            else
            if(cmd_grab == "floordrop texture uuid")
            {
            Floor_Drop_UUID = llToLower(value);
            // error checking for FloorDrop Texture UUID
            if(value == "" || (isKey((string)value) != TRUE))
            {
            llInstantMessage(id,"Themes Configuration Error: on line " +(string)line+ ". (1) The Floor-drop Texture UUID is empty. (2) The Floor-drop UUID is not a key.");
            return;
            }
 
// add to our test list database
Themes += [Menu_Button_Name,Back_Drop_UUID,Floor_Drop_UUID];
ThemesCount = ThemesCount + 1; // we don't count the note lines
          }
        }
    }
}
    // lets move on to the next lines in our note card configuration
    ++line;
    notecardQueryId = llGetNotecardLine(GetNoteName, line);
}
// we don't need a state entry to run this script, best thing is you don't even have to reset the script at all.
 
default
{
 
link_message(integer sender_num, integer num, string str, key id)
{
if(str == "SetUserKey")
{
// sets up the user key that click the object
User = (key)id;
}
if(str == "LoadThemes")
{
// loads up our test note card
GetNoteName = id;
NoteCardInit((string)GetNoteName, User);
  }   
}
//  Triggered when task receives asynchronous data
dataserver(key request_id, string data)
  {
  if(request_id == notecardQueryId)
  {
  ProcessThemes(data, User);
  }
}
}
Our script that will load the note card is called (CODE).Notecard.Tester
// Our test script for loading the notecard
// place this script with the main note card one and then just click the object
 
// our test notecard name for reading
string NotecardName = "(Category Theme).Fantasy";
 
default
{
    state_entry()
    {
     
    }
 
    touch_start(integer total_number)
    {
    key User = llDetectedKey(0); // sets the user key
    // sending user key to the note card reader script
    llMessageLinked(LINK_SET,0,"SetUserKey",User);
 
    // sending the note card name to the note card reader script
    llMessageLinked(LINK_SET,0,"LoadThemes",(string)NotecardName);
    }
}
</lsl>

Latest revision as of 11:02, 25 January 2015

Maddox Deluxe -(PF)- Picture

I'm Maddox Deluxe from USA. I been out of Second Life for a long time, but I'm back now to work on some new projects ideas.

Languages: English


Second Life Skills List
  • Builder
  • Scripter


Real World Skills List
  • Photoshop CC
  • Dreamweaver CC
  • Flash Professional CC
  • 3ds Max 2014
  • DAZ Studio v4.x
  • iClone v5.x PRO
  • Unity v4.x
  • Visual Studio 2012 (#C/C++)
  • PHP v5.x and MySQL v5.x


My Free Scripts
  1. v1.6 Notecard_Configuration_Reader_by_Maddox_Deluxe