Strife Onizuka in game,
I'm an immigrant from URU. Was in all 3 of it's beta's.
Wiki Troll (I'm a good troll, I'm not here to cause drama).
I had a
webpage but I hadn't updated it in several years and then Geocities closed.
Wiki's are the way of the future when it comes to making documentation Ad-hoc. A wiki attracts all sorts of contributes, starting with basic users all the way through experts; likewise contributions can range in quality and overall cohesiveness. The majority of contributes are casual contributes, they may add a paragraph, an example or just fix spelling. The average contribute will try to expand and correct existing articles. While the wiki format can make it easy for users to contribute, articles have a tendency to be of average quality but generally up to date, a book on the otherhand would tend to be of higher quality but would quickly be out of date. The average quality is caused by the types of contributions authors make, additions and corrections, once an article becomes sufficient large it is hard for the users to see just how to improve it further. As the articles grow they aren't being redesigned, reorganized, they aren't being properly refocused on the important & key content and presenting it in an aesthetic way. This gives the articles an unprofessional feel, the problem isn't how factual the content is but how it is presented and organized. However reworking an article in this fashion, refocusing it, is highly controversial as it involves transforming existing content. Technical content is extremely hard to transform because of the subtle meanings of the vocabulary, consequently it's transformation is often the focus of controversy. The technical vocabulary makes it a target for transformation as the goal of the transformation is to improve the presentation and making the content more accessible. In these situations the transformation has to be carefully coordinated and it helps if it is done by an expert. The amount of care required is more often then not more than a casual contributor is willing to invest. The result is a poisoning of the wiki community, dissatisfaction grows not just because of the quality but also from the apparent lack of improvement (both community and self loathing can occur). This dissatisfaction can be exacerbated by continued content creation that is perceived as sub-par (the reasoning goes that it demonstrates the contributors haven't learned how to produces quality content).
http://history.secondserver.net/index.php/Main_Page
AviSynth:BlindWanderer
This may not be the newest version of this code, check my userpage on the
SecondLife wiki:
User:Strife Onizuka
string TightListDump(list a, string b) {
string c = (string)a;
if(llStringLength(b)==1)
if(llSubStringIndex(c,b) == -1)
jump end;
integer d = 1 - llStringLength(b += "|\\/?!@#$%^&*()_=:;~{}[],\n\" qQxXzZ");
while(1+llSubStringIndex(c,llGetSubString(b,d,d)) && d)
++d;
b = llGetSubString(b,d,d);
@end;
c = "";//save memory
return b + llDumpList2String(a, b);
}
list TightListParse(string a) {
string b = llGetSubString(a,0,0);//save memory
return llParseStringKeepNulls(llDeleteSubString(a,0,0), [a=b],[]);
}
list quickread(string a)
{
string c = llGetSubString(a,0,6);
return llDeleteSubList([a]+//a = llGetSubString(c,0,0) by this point
llParseStringKeepNulls(llDeleteSubString(a,0,5), [],[a=llGetSubString(c,0,0),
llGetSubString(c,1,1),llGetSubString(c,2,2),llGetSubString(c,3,3),
llGetSubString(c,4,4),llGetSubString(c,5,5)]),
(llSubStringIndex(c,llGetSubString(c,6,6))==-1),1);
}
integer TightListTypeLength(string a)
{
return llGetListLength(quickread(a))/2;
}
integer TightListTypeEntryType(string a, integer b)
{
string c = llGetSubString(a,0,6);
a = llList2String(quickread(a), b * 2);
return 1 + llSubStringIndex(c, a) - !llStringLength(a);
}
list TightListTypeParse(string a) {
if(llStringLength(a) < 7) return [];
string m = llGetSubString(a,0,6);
list b = quickread((a = "") + a);
integer c = -llGetListLength(b);
list f;
integer d;
do
{
f = [a = llList2String(b,c + 1)]; //TYPE_STRING || TYPE_INVALID (though we don't care about invalid)
if((d = (1 + llSubStringIndex(m, llList2String(b,c)))) == TYPE_FLOAT)
f = [(float)a];
else if(d == TYPE_VECTOR)
f = [(vector)a];
else if(d == TYPE_ROTATION)
f = [(rotation)a];
else if(d == TYPE_KEY)
f = [(key)a];
else if(d == TYPE_INTEGER)
f = [(integer)a];
b = llListReplaceList(b, f, c, c+1);
}while(0 > (c+=2));
return b;
}
string TightListTypeDump(list a, string b) {
b += "|\\/?!@#$%^&*()_=:;~{}[],\n\" qQxXzZ";
string c = (string)a;
integer d = 0;
do
if(1+llSubStringIndex(c,llGetSubString(b,d,d)))
b = llDeleteSubString(b,d,d);
else
++d;
while(d<6);
b = " " + c = llGetSubString(b,0,5);
integer e;
string f;
if((d = -llGetListLength(a)))
{
do
{
e = llGetListEntryType(a,d);
if(e == TYPE_VECTOR)
f = vec(llList2Vector(a,d));
else if(e == TYPE_ROTATION)
f = rot(llList2Rot(a,d));
else if(e == TYPE_FLOAT)
f = flo(llList2Float(a,d));
else
f = llList2String(a,d);
c+= llGetSubString(b,e,e) + f;
}while(++d);
}
return c;
}
integer fui(float a){//union float to integer
if(a){//is it non zero?
integer b = (a < 0) << 31;//the sign, but later this variable is reused to store the shift
if((a = llFabs(a)) < 2.3509887016445750159374730744445e-38)//Denormalized range check & last stirde of normalized range
return b | (integer)(a / 1.4012984643248170709237295832899e-45);//this works because the math overlaps; saves cpu time.
integer c = llFloor(llLog(a) / 0.69314718055994530941723212145818);//extremes will error towards extreme. following yuch corrects it.
return (0x7FFFFF & (integer)(a * (0x1000000 >> b))) | (((c + 126 + (b = ((integer)a - (3 <= (a /= (float)("0x1p"+(string)(c -= (c == 128)))))))) << 23 ) | b);
}//for grins, detect the sign on zero. it's not pretty but it works. the previous requires alot of unwinding to understand it.
return ((string)a == (string)(-0.0)) << 31;
}
float iuf(integer a)
{//union integer to float
return ((float)("0x1p"+(string)((a | !a) - 150))) * ((!!(a = (0xff & (a >> 23))) << 23) | ((a & 0x7fffff))) * (1 | (a >> 31));
}//will crash if the raw exponent == 0xff; reason for crash deviates from float standard; though a crash is warented.
integer FloatCompare(float a, float b, integer c)
{//compare floats and allow for a margin of error, requires fui().
if(a - b)//(c) Strife Onizuka 2006
{//they are not equal
//First we convert the floats to integer form, as they would be in memory;
integer a_i = fui(a);
integer b_i = fui(b);
integer a_e = (a_i >> 23) & 0xff;
integer b_e = (b_i >> 23) & 0xff;
if(!(a_e || b_e) || ((a_i & 0x80000000) == (b_i & 0x80000000)))//sign match check
{//start by getting and testing the difference, this is what limits c
integer diff = a_e - b_e;//ugly is fast, basicly, it gets the mantissa, sets the sign on the mantisa,
if(!(diff && ~diff && ~-diff))//shifts it depending on exponent, finaly executes the test.
if(llAbs(((((a_i & 0x7FFFFF) | ((!!a_e) << 23)) * ((a_i >> 31) | 1)) >> diff) -
((((b_i & 0x7FFFFF) | ((!!b_e) << 23)) * ((b_i >> 31) | 1)) >> -diff)) <= c)
jump out;//they were close enough for government work :P
}
return (a > b) - (a < b);
}
@out;
return 0;
}
string FUI2HexFloat(integer b)
{//Dump FUI float-integer to a hex-float string
string c = "";
integer d = 0;
integer e = 0xff & (b >> 23);
string f = "0x"+(string)(!!e) + ".";
if(b & 0x80000000)
f = "-"+ f;
if(e ^ 127) c = "p" + (string)((e | !e) - 127);
if((e = 0xfffffe & (b << 1)))
{
while(!((e >> d) & 0xf))
d+=4;
while(d < 24)
{
c = llGetSubString(hexc, b = 0xf & (e >> d), b) + c;
d += 4;
}
}
return f + c;
}
string Float2Hex(float a)
{//Another way to do Float2Hex, i wrote this for the heck of it; not because it's a good idea.
return FUI2HexFloat(fui(a));
}
integer bitcount(integer n)
{//MIT Hackmem 169, modified to work in LSL
integer tmp = n - ((n >> 1) & 0x5B6DB6DB)//modified mask
- ((n >> 2) & 0x49249249);
return (((tmp + (tmp >> 3)) & 0xC71C71C7) % 63) + (n < 0);
}
string fuis(float a){//float union to base64ed integer
if(a){//is it non zero?
integer b = (a < 0) << 31;//the sign, but later this variable is reused to store the shift
if((a = llFabs(a)) < 2.3509887016445750159374730744445e-38)//Denormalized range check & last stirde of normalized range
b = b | (integer)(a / 1.4012984643248170709237295832899e-45);//the math overlaps; saves cpu time.
else
{
integer c = llFloor(llLog(a) / 0.69314718055994530941723212145818);//extremes will error towards extremes. following yuch corrects it.
b = (0x7FFFFF & (integer)(a * (0x1000000 >> b))) | (((c + 126 + (b = ((integer)a - (3 <= (a /= (float)("0x1p"+(string)(c -= (c == 128)))))))) << 23 ) | b);
}
return llGetSubString(llIntegerToBase64(b),0,5)
}//for grins, detect the sign on zero. it's not pretty but it works. the previous requires alot of unwinding to understand it.
if((string)a == (string)(0.0))
return "AAAAAA";
return "gAAAAA";
}
float siuf(string b)
{//base64ed integer union to float
integer a = llBase64ToInteger(b);
return ((float)("0x1p"+(string)((a | !a) - 150))) * ((!!(a = (0xff & (a >> 23))) << 23) | ((a & 0x7fffff))) * (1 | (a >> 31));
}//will crash if the raw exponent == 0xff; reason for crash deviates from float standard; though a crash is warented.
Asset Types by number
Hex | Value | Inventory Flag | Handle | 8 char name | Nice Name | Description |
| | | BAD TYPE | | |
0x0000 | 0 | INVENTORY_TEXTURE | TEXTURE | texture | | JPEG2000 encoded image |
0x0100 | 1 | INVENTORY_SOUND | SOUND | sound | | Ogg-Vorbis encoded Sound |
0x0200 | 2 | | CALLINGCARD | callcard | calling card | Calling card |
0x0300 | 3 | INVENTORY_LANDMARK | LANDMARK | landmark | | Landmark, there are 2 versions of this format |
0x0400 | 4 | | SCRIPT | script | legacy script | LSL1 we assume |
0x0500 | 5 | INVENTORY_CLOTHING | CLOTHING | clothing | | LLWearable |
0x0600 | 6 | INVENTORY_OBJECT | OBJECT | object | | Object |
0x0700 | 7 | INVENTORY_NOTECARD | NOTECARD | notecard | note card | Notecard, only one version of the format exists |
0x0800 | 8 | | CATEGORY | category | | Something to do with inventory |
0x0900 | 9 | | ROOT_CATEGORY | | | Something to do with inventory |
0x0A00 | 10 | INVENTORY_SCRIPT | LSL_TEXT | lsltext | lsl2 script | lsl2 script text |
0x0B00 | 11 | | LSL_BYTECODE | lslbyte | lsl bytecode | lsl bytecode and memory space, 16k |
0x0C00 | 12 | | TEXTURE_TGA | txtr_tga | tga texture | tga image, used in static cache |
0x0D00 | 13 | INVENTORY_BODYPART | BODYPART | bodypart | body part | LLWearable |
0x0E00 | 14 | | TRASH | trash | | Something to do with inventory |
0x0F00 | 15 | | SNAPSHOT_CATEGORY | snapshot | | Something to do with inventory |
0x1000 | 16 | | LOST_AND_FOUND | lstndfnd | lost and found | Something to do with inventory |
0x1100 | 17 | | SOUND_WAV | snd_wav | | Decoded Ogg-Vorbis |
0x1200 | 18 | | IMAGE_TGA | img_tga | targa image | Standard Targa Image - decoded texture |
0x1300 | 19 | | IMAGE_JPEG | jpeg | jpeg image | Standard Jpeg Image - decoded texture or postcard |
0x1400 | 20 | INVENTORY_ANIMATION | ANIMATION | animatn | animation | binary file format |
0x1500 | 21 | INVENTORY_GESTURE | GESTURE | gesture | | 2 Versions? |
0x1600 | 22 | | SIMSTATE | simstate | | Unknown |
LLWearable version matches value of "wearable_definition_version" found in ".\character\avatar_lad.xml"
Backlinks: