Simple Colour Change Script?
|
|
Sabrina Doolittle
Registered User
Join date: 15 Nov 2005
Posts: 214
|
05-21-2006 19:27
I need to change the colour of a single non-primary prim in a multi-prim object. I just need say six preset colour options, not the entire House of Fun "Make your Shoes 37 Bazillion Colours!" deal.
The wiki hates me and refuses to deliver up the goods. Could someone be kind enough to point me on my way? Thanks so much!
|
|
Zodiakos Absolute
With a a dash of lemon.
Join date: 6 Jun 2005
Posts: 282
|
05-21-2006 19:44
I couldn't find the original thread, but I did find the script. // This code is public domain. // masa was here 20050302, 20051102, 20051114
integer CHANNEL = 1; // channel to listen for commands on integer OWNER_ONLY = TRUE; // only owner can control integer USE_OWNER_SAY = TRUE; // use llOwnerSay() to talk to owner integer USE_IMS = TRUE; // send IMs instead of using chat string COMMAND_CHANGE_COLOR = "color"; // command to change color string COMMAND_LIST_COLORS = "listcolors"; // command to list colors integer MAX_CHAT_LENGTH = 255; // max size for one message string PREFIX_HEX = "#"; // prefix to specify hex code string PREFIX_VECTOR = "<"; // prefix to specify vector code list LINKS_TO_SET = [LINK_SET, ALL_SIDES]; // [link number, link face, ...]
list COLORS;
integer listen_id;
// Initialize COLORS list // LSL can't seem to handle large list definitions, so it has to be // broken up. Note that you may get syntax errors and need to rearrange // this list if you change the script much.
init_colors() { COLORS = [ // http://halflife.ukrpack.net/csfiles/help/colors.shtml "steelblue", "#4682B4", "royalblue", "#041690", "cornflowerblue", "#6495ED", "lightsteelblue", "#B0C4DE", "mediumslateblue", "#7B68EE", "slateblue", "#6A5ACD", "darkslateblue", "#483D8B", "midnightblue", "#191970", "navy", "#000080", "darkblue", "#00008B", "mediumblue", "#0000CD", "blue", "#0000FF", "dodgerblue", "#1E90FF", "deepskyblue", "#00BFFF", "lightskyblue", "#87CEFA", "skyblue", "#87CEEB", "lightblue", "#ADD8E6", "powderblue", "#B0E0E6", "azure", "#F0FFFF", "lightcyan", "#E0FFFF", "paleturquoise", "#AFEEEE", "mediumturquoise", "#48D1CC", "lightseagreen", "#20B2AA", "darkcyan", "#008B8B", "teal", "#008080", "cadetblue", "#5F9EA0", "darkturquoise", "#00CED1" ] + [ "aqua", "#00FFFF", "cyan", "#00FFFF", "turquoise", "#40E0D0", "aquamarine", "#7FFFD4", "mediumaquamarine", "#66CDAA", "darkseagreen", "#8FBC8F", "mediumseagreen", "#3CB371", "seagreen", "#2E8B57", "darkgreen", "#006400", "green", "#008000", "forestgreen", "#228B22", "limegreen", "#32CD32", "lime", "#00FF00", "chartreuse", "#7FFF00", "lawngreen", "#7CFC00", "greenyellow", "#ADFF2F", "yellowgreen", "#9ACD32", "palegreen", "#98FB98", "lightgreen", "#90EE90", "springgreen", "#00FF7F", "mediumspringgreen", "#00FA9A", "darkolivegreen", "#556B2F", "olivedrab", "#6B8E23", "olive", "#808000", "darkkhaki", "#BDB76B", "darkgoldenrod", "#B8860B", "goldenrod", "#DAA520", "gold", "#FFD700", "yellow", "#FFFF00", "khaki", "#F0E68C", "palegoldenrod", "#EEE8AA" ] + [ "blanchedalmond", "#FFEBCD", "moccasin", "#FFE4B5", "wheat", "#F5DEB3", "navajowhite", "#FFDEAD", "burlywood", "#DEB887", "tan", "#D2B48C", "rosybrown", "#BC8F8F", "sienna", "#A0522D", "saddlebrown", "#8B4513", "chocolate", "#D2691E", "peru", "#CD853F", "sandybrown", "#F4A460", "darkred", "#8B0000", "maroon", "#800000", "brown", "#A52A2A", "firebrick", "#B22222", "indianred", "#CD5C5C", "lightcoral", "#F08080", "salmon", "#FA8072", "darksalmon", "#E9967A", "lightsalmon", "#FFA07A", "coral", "#FF7F50", "tomato", "#FF6347", "darkorange", "#FF8C00", "orange", "#FFA500", "orangered", "#FF4500", "crimson", "#DC143C", "red", "#FF0000", "deeppink", "#FF1493", "fuchsia", "#FF00FF" ] + [ "magenta", "#FF00FF", "hotpink", "#FF69B4", "lightpink", "#FFB6C1", "pink", "#FFC0CB", "palevioletred", "#DB7093", "mediumvioletred", "#C71585", "purple", "#800080", "darkmagenta", "#8B008B", "mediumpurple", "#9370DB", "blueviolet", "#8A2BE2", "indigo", "#4B0082", "darkviolet", "#9400D3", "darkorchid", "#9932CC", "mediumorchid", "#BA55D3", "orchid", "#DA70D6", "violet", "#EE82EE", "plum", "#DDA0DD", "thistle", "#D8BFD8", "lavender", "#E6E6FA", "ghostwhite", "#F8F8FF", "aliceblue", "#F0F8FF", "mintcream", "#F5FFFA", "honeydew", "#F0FFF0", "lightgoldenrodyellow", "#FAFAD2", "lemonchiffon", "#FFFACD", "cornsilk", "#FFF8DC", "lightyellow", "#FFFFE0", "ivory", "#FFFFF0", "floralwhite", "#FFFAF0", "linen", "#FAF0E6" ] + [ "oldlace", "#FDF5E6", "antiquewhite", "#FAEBD7", "bisque", "#FFE4C4 ", "peachpuff", "#FFDAB9", "papayawhip", "#FFEFD5", "beige", "#F5F5DC", "seashell", "#FFF5EE", "lavenderblush", "#FFF0F5", "mistyrose", "#FFE4E1", "snow", "#FFFAFA", "white", "#FFFFFF", "whitesmoke", "#F5F5F5", "gainsboro", "#DCDCDC", "lightgrey", "#D3D3D3", "silver", "#C0C0C0", "darkgray", "#A9A9A9", "gray", "#808080", "lightslategray", "#778899", "slategray", "#708090", "dimgray", "#696969", "darkslategray", "#2F4F4F", "black", "#000000" ] + [ // "carnationpink", "#FA7FC1" ]; }
// Create/recreate listener init_listen() { llListenRemove(listen_id); if ( OWNER_ONLY ) listen_id = llListen( CHANNEL, "", llGetOwner(), "" ); else listen_id = llListen( CHANNEL, "", NULL_KEY, "" ); }
// Send a message to the specified id, based on settings say(key id, string str) { if ( id == llGetOwner() && USE_OWNER_SAY ) llOwnerSay( str ); else if ( USE_IMS ) llInstantMessage( id, str ); else llWhisper(0, str); }
// Convert a #RRGGBB style color string to an LSL vector color vector color_from_hex(string str) { return <(integer)("0x" + llGetSubString(str,1,2)), (integer)("0x" + llGetSubString(str,3,4)), (integer)("0x" + llGetSubString(str,5,6))> / 255; }
// Convert a vector color string to an LSL vector color // Supports ranges 0.0-1.0 and 0-255 // caveat: 1,1,1 will be treated as #ffffff, not #010101 vector color_from_vector(string vec) { list l = llParseString2List(vec, [" ", ",", "<", ">"], []); vector v;
v.x = (float)llList2String(l, 0); v.y = (float)llList2String(l, 1); v.z = (float)llList2String(l, 2);
if ( v.x > 1 || v.y > 1 || v.z > 1 ) v /= 255;
return v; }
// Remove all spaces from a string string strip_spaces(string str) { return llDumpList2String( llParseString2List(str, [" "], []), "" ); }
// Convert a color name to an LSL vector color vector color_from_name(string name) { integer x = llListFindList( COLORS, [llToLower(strip_spaces(name))] ); if ( x == -1 ) return <-1,-1,-1>; return color_from_hex( llList2String(COLORS, x+1) ); }
// Set configured links/faces to the color specified by str set_color(key id, string str) { vector color; integer i; if ( llGetSubString(str, 0, 0) == PREFIX_HEX ) // hex code color = color_from_hex( str ); else if ( llGetSubString(str, 0, 0) == PREFIX_VECTOR ) // vector color = color_from_vector( str ); else color = color_from_name( str );
if ( color.x < 0 || color.x > 1 || color.y < 0 || color.y > 1 || color.z < 0 || color.z > 1 ) { say( id, "Invalid color specified: " + str ); return; }
for ( i = 0; i < llGetListLength( LINKS_TO_SET ); i += 2 ) llSetLinkColor( llList2Integer(LINKS_TO_SET, i), color, llList2Integer(LINKS_TO_SET, i+1) ); }
// List known color names list_colors(key id) { string str = ""; string nstr = ""; integer i;
for ( i = 0; i < llGetListLength( COLORS ); i += 2 ) { nstr = str + llList2String(COLORS, i) + ", ";
if ( llStringLength(nstr) > MAX_CHAT_LENGTH ) { say(id, str); str = llList2String(COLORS, i) + ", "; } else { str = nstr; } } if ( str != "" ) say(id, str); }
default { state_entry() { init_colors(); init_listen(); }
on_rez(integer param) { init_listen(); }
changed(integer what) { if ( what & CHANGED_OWNER ) init_listen(); }
listen(integer channel, string name, key id, string msg) { string command; string argument; list l;
l = llParseStringKeepNulls( msg, [" "], [] ); command = llList2String(l, 0); argument = llDumpList2String( llList2List(l, 1, -1), " " );
if ( command == COMMAND_CHANGE_COLOR ) set_color(id, argument); else if ( command == COMMAND_LIST_COLORS ) list_colors(id);
} }
Yes, I realize it's badly formated, but I didn't have the time to add all the indents. For your uses, just replace the list 'COLORS' with your own 6 shades instead of the built-in 141. You can easily get the hexadecimal color codes from the photoshop color picker.
|
|
Sabrina Doolittle
Registered User
Join date: 15 Nov 2005
Posts: 214
|
woo hoo!
05-21-2006 20:25
Woot, thank you for that! The formatting was no problem (Notepad is my friend) and the color codes are also simple to manage, but... yay, it works, but it's turning *all* of my prims to the command color, and I need to just change one prim's color. Is this set by the LINKS_TO_SET = [LINK_SET, ALL_SIDES] part? Oh wait, it's LINK_THIS isn't it? Holy guachamole. It is!! I found something in the Wiki, finally! Monkies are gonna fly, I tell you... Note for anyone other non-scripters who need this in the future... put the script in the prim who's colour you wish to change, and set LINKS_TO_SET = [ LINK_THIS, ALL_SIDES] Cheers 
|
|
Zodiakos Absolute
With a a dash of lemon.
Join date: 6 Jun 2005
Posts: 282
|
05-22-2006 12:10
I'm glad it worked out for you. =D
|
|
Ashlee Switchblade
Registered User
Join date: 8 Jan 2006
Posts: 4
|
Oui!
05-24-2006 08:07
Hmm, I Need this script too..but I have no idea how to make it work (of course, for specific prims) 
|
|
Jacob Lassard
Registered User
Join date: 22 Mar 2006
Posts: 2
|
05-24-2006 14:35
Ashley; This first line is clue ; channel 1 - means the prim is listening on channel 1 - not the default chat channel of '0' - so one must specify - channel 1 - /1 color pink - in chat to change the prim to pink; Hope this helps!!
integer CHANNEL = 1; // channel to listen for commands on
|
|
Morgana Hilra
Addicted to....Hair
Join date: 25 Oct 2006
Posts: 25
|
06-28-2007 03:11
From: Zodiakos Absolute I couldn't find the original thread, but I did find the script. // This code is public domain. // masa was here 20050302, 20051102, 20051114 integer CHANNEL = 1; // channel to listen for commands on integer OWNER_ONLY = TRUE; // only owner can control integer USE_OWNER_SAY = TRUE; // use llOwnerSay() to talk to owner integer USE_IMS = TRUE; // send IMs instead of using chat string COMMAND_CHANGE_COLOR = "color"; // command to change color string COMMAND_LIST_COLORS = "listcolors"; // command to list colors integer MAX_CHAT_LENGTH = 255; // max size for one message string PREFIX_HEX = "#"; // prefix to specify hex code string PREFIX_VECTOR = "<"; // prefix to specify vector code list LINKS_TO_SET = [LINK_SET, ALL_SIDES]; // [link number, link face, ...] list COLORS; integer listen_id; // Initialize COLORS list // LSL can't seem to handle large list definitions, so it has to be // broken up. Note that you may get syntax errors and need to rearrange // this list if you change the script much. init_colors() { COLORS = [ // http://halflife.ukrpack.net/csfiles/help/colors.shtml "steelblue", "#4682B4", "royalblue", "#041690", "cornflowerblue", "#6495ED", "lightsteelblue", "#B0C4DE", "mediumslateblue", "#7B68EE", "slateblue", "#6A5ACD", "darkslateblue", "#483D8B", "midnightblue", "#191970", "navy", "#000080", "darkblue", "#00008B", "mediumblue", "#0000CD", "blue", "#0000FF", "dodgerblue", "#1E90FF", "deepskyblue", "#00BFFF", "lightskyblue", "#87CEFA", "skyblue", "#87CEEB", "lightblue", "#ADD8E6", "powderblue", "#B0E0E6", "azure", "#F0FFFF", "lightcyan", "#E0FFFF", "paleturquoise", "#AFEEEE", "mediumturquoise", "#48D1CC", "lightseagreen", "#20B2AA", "darkcyan", "#008B8B", "teal", "#008080", "cadetblue", "#5F9EA0", "darkturquoise", "#00CED1" ] + [ "aqua", "#00FFFF", "cyan", "#00FFFF", "turquoise", "#40E0D0", "aquamarine", "#7FFFD4", "mediumaquamarine", "#66CDAA", "darkseagreen", "#8FBC8F", "mediumseagreen", "#3CB371", "seagreen", "#2E8B57", "darkgreen", "#006400", "green", "#008000", "forestgreen", "#228B22", "limegreen", "#32CD32", "lime", "#00FF00", "chartreuse", "#7FFF00", "lawngreen", "#7CFC00", "greenyellow", "#ADFF2F", "yellowgreen", "#9ACD32", "palegreen", "#98FB98", "lightgreen", "#90EE90", "springgreen", "#00FF7F", "mediumspringgreen", "#00FA9A", "darkolivegreen", "#556B2F", "olivedrab", "#6B8E23", "olive", "#808000", "darkkhaki", "#BDB76B", "darkgoldenrod", "#B8860B", "goldenrod", "#DAA520", "gold", "#FFD700", "yellow", "#FFFF00", "khaki", "#F0E68C", "palegoldenrod", "#EEE8AA" ] + [ "blanchedalmond", "#FFEBCD", "moccasin", "#FFE4B5", "wheat", "#F5DEB3", "navajowhite", "#FFDEAD", "burlywood", "#DEB887", "tan", "#D2B48C", "rosybrown", "#BC8F8F", "sienna", "#A0522D", "saddlebrown", "#8B4513", "chocolate", "#D2691E", "peru", "#CD853F", "sandybrown", "#F4A460", "darkred", "#8B0000", "maroon", "#800000", "brown", "#A52A2A", "firebrick", "#B22222", "indianred", "#CD5C5C", "lightcoral", "#F08080", "salmon", "#FA8072", "darksalmon", "#E9967A", "lightsalmon", "#FFA07A", "coral", "#FF7F50", "tomato", "#FF6347", "darkorange", "#FF8C00", "orange", "#FFA500", "orangered", "#FF4500", "crimson", "#DC143C", "red", "#FF0000", "deeppink", "#FF1493", "fuchsia", "#FF00FF" ] + [ "magenta", "#FF00FF", "hotpink", "#FF69B4", "lightpink", "#FFB6C1", "pink", "#FFC0CB", "palevioletred", "#DB7093", "mediumvioletred", "#C71585", "purple", "#800080", "darkmagenta", "#8B008B", "mediumpurple", "#9370DB", "blueviolet", "#8A2BE2", "indigo", "#4B0082", "darkviolet", "#9400D3", "darkorchid", "#9932CC", "mediumorchid", "#BA55D3", "orchid", "#DA70D6", "violet", "#EE82EE", "plum", "#DDA0DD", "thistle", "#D8BFD8", "lavender", "#E6E6FA", "ghostwhite", "#F8F8FF", "aliceblue", "#F0F8FF", "mintcream", "#F5FFFA", "honeydew", "#F0FFF0", "lightgoldenrodyellow", "#FAFAD2", "lemonchiffon", "#FFFACD", "cornsilk", "#FFF8DC", "lightyellow", "#FFFFE0", "ivory", "#FFFFF0", "floralwhite", "#FFFAF0", "linen", "#FAF0E6" ] + [ "oldlace", "#FDF5E6", "antiquewhite", "#FAEBD7", "bisque", "#FFE4C4 ", "peachpuff", "#FFDAB9", "papayawhip", "#FFEFD5", "beige", "#F5F5DC", "seashell", "#FFF5EE", "lavenderblush", "#FFF0F5", "mistyrose", "#FFE4E1", "snow", "#FFFAFA", "white", "#FFFFFF", "whitesmoke", "#F5F5F5", "gainsboro", "#DCDCDC", "lightgrey", "#D3D3D3", "silver", "#C0C0C0", "darkgray", "#A9A9A9", "gray", "#808080", "lightslategray", "#778899", "slategray", "#708090", "dimgray", "#696969", "darkslategray", "#2F4F4F", "black", "#000000" ] + [ // "carnationpink", "#FA7FC1" ]; } // Create/recreate listener init_listen() { llListenRemove(listen_id); if ( OWNER_ONLY ) listen_id = llListen( CHANNEL, "", llGetOwner(), "" ); else listen_id = llListen( CHANNEL, "", NULL_KEY, "" ); } // Send a message to the specified id, based on settings say(key id, string str) { if ( id == llGetOwner() && USE_OWNER_SAY ) llOwnerSay( str ); else if ( USE_IMS ) llInstantMessage( id, str ); else llWhisper(0, str); } // Convert a #RRGGBB style color string to an LSL vector color vector color_from_hex(string str) { return <(integer)("0x" + llGetSubString(str,1,2)), (integer)("0x" + llGetSubString(str,3,4)), (integer)("0x" + llGetSubString(str,5,6))> / 255; } // Convert a vector color string to an LSL vector color // Supports ranges 0.0-1.0 and 0-255 // caveat: 1,1,1 will be treated as #ffffff, not #010101 vector color_from_vector(string vec) { list l = llParseString2List(vec, [" ", ",", "<", ">"], []); vector v; v.x = (float)llList2String(l, 0); v.y = (float)llList2String(l, 1); v.z = (float)llList2String(l, 2); if ( v.x > 1 || v.y > 1 || v.z > 1 ) v /= 255; return v; } // Remove all spaces from a string string strip_spaces(string str) { return llDumpList2String( llParseString2List(str, [" "], []), "" ); } // Convert a color name to an LSL vector color vector color_from_name(string name) { integer x = llListFindList( COLORS, [llToLower(strip_spaces(name))] ); if ( x == -1 ) return <-1,-1,-1>; return color_from_hex( llList2String(COLORS, x+1) ); } // Set configured links/faces to the color specified by str set_color(key id, string str) { vector color; integer i; if ( llGetSubString(str, 0, 0) == PREFIX_HEX ) // hex code color = color_from_hex( str ); else if ( llGetSubString(str, 0, 0) == PREFIX_VECTOR ) // vector color = color_from_vector( str ); else color = color_from_name( str ); if ( color.x < 0 || color.x > 1 || color.y < 0 || color.y > 1 || color.z < 0 || color.z > 1 ) { say( id, "Invalid color specified: " + str ); return; } for ( i = 0; i < llGetListLength( LINKS_TO_SET ); i += 2 ) llSetLinkColor( llList2Integer(LINKS_TO_SET, i), color, llList2Integer(LINKS_TO_SET, i+1) ); } // List known color names list_colors(key id) { string str = ""; string nstr = ""; integer i; for ( i = 0; i < llGetListLength( COLORS ); i += 2 ) { nstr = str + llList2String(COLORS, i) + ", "; if ( llStringLength(nstr) > MAX_CHAT_LENGTH ) { say(id, str); str = llList2String(COLORS, i) + ", "; } else { str = nstr; } } if ( str != "" ) say(id, str); } default { state_entry() { init_colors(); init_listen(); } on_rez(integer param) { init_listen(); } changed(integer what) { if ( what & CHANGED_OWNER ) init_listen(); } listen(integer channel, string name, key id, string msg) { string command; string argument; list l; l = llParseStringKeepNulls( msg, [" "], [] ); command = llList2String(l, 0); argument = llDumpList2String( llList2List(l, 1, -1), " " ); if ( command == COMMAND_CHANGE_COLOR ) set_color(id, argument); else if ( command == COMMAND_LIST_COLORS ) list_colors(id); } } Yes, I realize it's badly formated, but I didn't have the time to add all the indents. For your uses, just replace the list 'COLORS' with your own 6 shades instead of the built-in 141. You can easily get the hexadecimal color codes from the photoshop color picker. THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! OH... DID I FORGET .... THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! THANK YOU!! TEHE I HAVE BEEN TRYING TO FIND THIS.. NOW I HAVE IT.. I CAN FINALLY FINSH MY NECKLACES.
|
|
TXGorilla Falcone
KWKAT Planetfurry DJ
Join date: 4 May 2004
Posts: 176
|
07-24-2007 17:35
Howdy all Sorry to be a bother but but does anyone know how to fix this script to seek out linked prims and change them via the link prim name?
_____________________
Drunken Monkeys danceing on the tables. Falling from the sky just like in a fable.
|
|
Shep Planer
Registered User
Join date: 9 Apr 2007
Posts: 153
|
08-03-2007 01:36
Hi, can this script be used so that it only changes one prim and not the whole lot? Thnaks
|
|
Qie Niangao
Coin-operated
Join date: 24 May 2006
Posts: 7,138
|
08-03-2007 04:05
From: Shep Planer Hi, can this script be used so that it only changes one prim and not the whole lot? Thnaks Looks like the line near the top, list LINKS_TO_SET = [LINK_SET, ALL_SIDES]; could be changed to, say, list LINKS_TO_SET = [LINK_THIS, ALL_SIDES]; to color only the scripted prim. For some other prim, it's number in the linkset would be supplied as the first element of that list. To color multiple links depending on the name (preceding post), one could just populate that list at state_entry, looping through llGetNumberOfPrims times, pushing link-number/sides pairs when llGetLinkName matches the name. Would need to keep in mind that prims in a linkset are 1-indexed, and might want to repopulate or reset when CHANGED_LINK or on_rez happens.
|