Channel Number Generator
De DigiWiki.
Version du 20 mars 2012 à 13:53 par Djphil (discuter | contributions)
Do you have a tough time choosing and remembering unique channel numbers? I did, so I wrote a script to do it for me, kind of like domain names on the Internet represent IP addresses.
Sometimes I use the object name as the string, sometimes the script name; it all depends. The choice is yours.
I keep my functions and their "test drivers" in scripts in a function library folder. Because LSL has no #include or anything, I copy just the comment and the function into other scripts.
// generateChannel(): Given a text string, generate a (relatively) unique channel number. // This conversion is repeatable, so you can use it to easily communicate with a script by // remembering a text string instead of a channel number. // // You can copy or modify this script if you give me credit. // Petre Lamar, 2006-07-31 // integer generateChannel(string text) { list hexDigits = ["dummy", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; string md5 = llMD5String(text, 0); integer length = llStringLength(md5); integer channelNumber = 1; // zero makes a bad multiplier :-) integer hexValue; string character; for (length--; length >= 0; length--) { character = llGetSubString(md5, length, length); hexValue = llListFindList(hexDigits, [ character ]); channelNumber *= hexValue; if (channelNumber == 0) { // zero times anything remains zero, so force it to one channelNumber++; } } return channelNumber; } default { state_entry() { llWhisper(0, "Type something and I'll convert that into a channel number!"); llListen(0, "", llGetOwner(), ""); } listen(integer channel, string name, key id, string message) { integer result = generateChannel(message); llWhisper(0, "'" + message + "' yields '" + (string)result + "'"); } }


