Difference between revisions of "User:Strife Onizuka"

From Second Life Wiki
Jump to navigation Jump to search
m
m (→‎Tenebrous: Replaced <source> with <syntaxhighlight>)
 
(82 intermediate revisions by 9 users not shown)
Line 1: Line 1:
<div style="float:right;">__TOC__</div>
<div style="float:right;"><videoflash>hTIsIjZCvHk</videoflash></div>
==About Me ==
<div style="float:right; clear:right; border:1px solid #AAAAAA; margin-top:8px; background-color:white;"><div style="margin: 0 8px;">
I'm an immigrant from URU. Was in all 3 of it's beta's.
'''Subpages'''
* Personal
** {{Sub|Miscellaneous}}
* Code
** {{Sub|int2hex}}
** {{Sub|int2hexdword}}
** {{Sub|hexchars}}
** {{Sub|Float Functions}}
** {{Sub|String Tree}}
** [[GetRootLocalPos]]
* Articles
** {{Sub|The State of State}}
</div></div>
{{RightToc|clear:right;}}
{| class="sortable" {{prettytable|style=float:right; clear:right; margin:0;}}
|- {{Hl2}}
! | Updates:
! class="unsortable" | Preview
{{/Grid|DMZ}}
{{/Grid|Agni}}
{{/Grid|Colo|strike=*}}
{{/Grid|Siva}}
{{/Grid|Durga}}
{{/Grid|Aditi}}
{{/Grid|Soma}}
{{/Grid|Ganga}}
{{/Grid|Uma}}
{{/Grid|Shakti}}
{{/Grid|Vaak}}
{{/Grid|Mohini}}
{{/Grid|Yami}}
{{/Grid|Nandi}}
{{/Grid|Mitra}}
{{/Grid|Radha}}
{{/Grid|Ravi}}
{{/Grid|Aruna}}
{{/Grid|Damballah}}
{{/Grid|Bharati}}
{{/Grid|Chandra}}
{{/Grid|Danu}}
{{/Grid|Parvati}}
{{/Grid|Skanda}}
|}


Wiki Gnome (causing drama isn't why I'm here).
== About Strife ==


I have a webpage but haven't updated it in a few months...
=== Synopses ===


Wiki's are the way of the future when it comes to making documentation Ad-hoc but eventually become static as graffiti grows with popularity as a way of controlling it.
Strife joined 3/3/2004, and is an avid scripter, wiki author and SL forum denizen. Not content in selfish information gathering, he shares what he knows through various mediums, so that others may benefit and learn. He volunteers his time to work on many public projects which include: giving scripting advice, writing LSL documentation, providing and improving LSL scripts and libraries. Secondlife has been on Strife's brain for that last {{AgeUnit|03|03|2004}}.


also contribute to some other wiki's
=== SL Status ===
[http://history.secondserver.net/index.php/Main_Page History Wiki]
[http://www.AviSynth.org/BlindWanderer AviSynth:BlindWanderer]


When it comes to writing I tend to go towards concise. A short accurate description is better then a long equally accurate description; less to get confused with, easier to find the important information (because it is ''all'' important).
Strife is unemployed. Leave me a note on my talk page.


==Downloads==
=== Honors ===


{|style="padding:2px;" border="1" cellspacing="0" valign="top"
Through his public works Strife became a pillar of the SL community.
|-{{Hl2}}
!Updates:
!Preview Download
|-
|[[http://secondlife.com/update.php?userserver=userserver.dmz.lindenlab.com  DMZ]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=DMZ  Preview]]
|-
|[[http://secondlife.com/update.php?userserver=userserver.agni.lindenlab.com  Agni]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=AGNI  Preview]]
|-
|<s>[[http://secondlife.com/update.php?userserver=userserver.colo.lindenlab.com  Colo]]</s>
|<s>[[http://secondlife.com/preview/download-preview.php?os=windows&grid=COLO  Preview]]</s>
|-
|[[http://secondlife.com/update.php?userserver=userserver.siva.lindenlab.com  Siva]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=SIVA  Preview]]
|-
|[[http://secondlife.com/update.php?userserver=userserver.durga.lindenlab.com  Durga]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=DURGA  Preview]]
|-
|[[http://secondlife.com/update.php?userserver=userserver.aditi.lindenlab.com  Aditi]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=ADITI  Preview]]
|-
|[[http://secondlife.com/update.php?userserver=userserver.soma.lindenlab.com  Soma]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=SOMA  Preview]]
|-
|[[http://secondlife.com/update.php?userserver=userserver.ganga.lindenlab.com  Ganga]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=GANGA  Preview]]
|-
|[[http://secondlife.com/update.php?userserver=userserver.uma.lindenlab.com  Uma]]
|[[http://secondlife.com/preview/download-preview.php?os=windows&grid=UMA Preview]]
|}


==TightList==
<!-- please see http://en.wikipedia.org/wiki/Wikipedia:Barnstars for the motivation here -->
<pre>
Strife is a Hippo award winner, [http://blog.secondlife.com/2007/08/25/innovation-award-winners-announced/ awarded "Best Community Organizer" in the 2007 Linden Lab Innovation Awards], and here is [[Linden Lab Innovation Awards|his mention as a runner-up in the 2008 "Best Documentation" category:]] "Last year's winner, Strife Onizuka, continued to be insanely prolific, with thousands of edits over the past year.... Anyone learning LSL is almost certainly indebted to Strife's work in some way."
//Tightlist family of functions Version 1.0
//Copyright Strife Onizuka 2004-2006
//Free to use and distribute as long as this message is not removed.


list TightListParse(string input)
=== Own Words ===
{
    string seperator = llGetSubString(input,(0),(0));//save memory
    return llParseStringKeepNulls(llDeleteSubString(input,(0),(0)), [input=seperator],[]);
}


string TightListDump(list input, string possibles)
I'm an immigrant from URU. Was in all 3 of it's beta's.
{//TLD( complex) makes a string from a list using a seperator that is supposed to be unique to the string
    string buffer = (string)(input);//dump the list without a seperator
    integer counter = -39 - llStringLength(possibles);
    if(counter == -40)
        if(!~llSubStringIndex(buffer,possibles))
            jump end;//woot, we were given a unique seperator
    possibles += "|/?!@#$%^&*()_=:;~`'<>{}[],.\n\" qQxXzZ\\";//Good character set of rarely used letters.
    do; while(~llSubStringIndex(buffer,llGetSubString(possibles,counter,counter)) && (counter=-~counter));//search for unique seperator


    possibles = llGetSubString(possibles,counter,counter);
Wiki Gnome (causing drama isn't why I'm here) for about {{#expr:(({{ #time: U | {{LOCALDAY2}}.{{LOCALMONTH}}.{{LOCALYEAR}} }} - {{ #time: U | 3.3.2004 }}) / 31557600) round 0}} years.


    @end;
I <del>have</del><ins>had</ins> a webpage but I haven't updated it in <del>a few</del><ins>many</ins> <del>months</del><ins>years</ins>...
    buffer = "";//save memory
    return possibles + llDumpList2String((input = []) + input, possibles);
}


integer TightListTypeLength(string input)
Wiki's are the way of the future when it comes to making documentation Ad-hoc. With popularity graffiti becomes a worsening problem. The wiki owner is left between a rock and a hard place: cope with graffiti edits or cope with out-of-data information. The popular choice is to restrict editing, which ultimately drives away legitimate editors.
{
    string seperators = llGetSubString(input,(0),6);
    return ((llParseStringKeepNulls(llDeleteSubString(input,(0),5), [],[input=llGetSubString(seperators,(0),(0)),
          llGetSubString(seperators,1,1),llGetSubString(seperators,2,2),llGetSubString(c,3,3),
          llGetSubString(seperators,4,4),llGetSubString(seperators,5,5)]) != []) + (llSubStringIndex(seperators,llGetSubString(seperators,6,6)) < 6)) >> 1;
}


integer TightListTypeEntryType(string input, integer index)
I also contribute to some other wikis:
{
*[http://history.secondserver.net/index.php/Main_Page History Wiki]
    string seperators = llGetSubString(input,(0),6);
*[http://www.AviSynth.org/BlindWanderer AviSynth:BlindWanderer]
    return llSubStringIndex(seperators, input) + ((input = llList2String(llList2List(input + llParseStringKeepNulls(llDeleteSubString(input,(0),5), [],[input=llGetSubString(seperators,(0),(0)), llGetSubString(seperators,1,1),llGetSubString(seperators,2,2),llGetSubString(seperators,3,3), llGetSubString(seperators,4,4),llGetSubString(seperators,5,5)]), (llSubStringIndex(seperators,llGetSubString(seperators,6,6)) < 6) << 1, -1),  index << 1)) != "");
*[http://en.wikipedia.org/wiki/User:BlindWanderer Wikipedia:BlindWanderer]
}


list TightListTypeParse(string input) {
When it comes to writing I tend to go towards concise. A short accurate description is better then a long equally accurate description; less to get confused with, easier to find the important information (because it is ''all'' important).
    list partial;
    if(llStringLength(input) > 6)
    {
        string seperators = llGetSubString(input,(0),6);
        integer pos = ([] != (partial = llList2List(input + llParseStringKeepNulls(llDeleteSubString(input,(0),5), [],[input=llGetSubString(seperators,(0),(0)), llGetSubString(seperators,1,1),llGetSubString(seperators,2,2),llGetSubString(seperators,3,3), llGetSubString(seperators,4,4),llGetSubString(seperators,5,5)]), (llSubStringIndex(seperators,llGetSubString(seperators,6,6)) < 6) << 1, -1)));
        integer type = (0);
        integer sub_pos = (0);
        do
        {
            list current = (list)(input = llList2String(partial, sub_pos= -~pos));//TYPE_STRING || TYPE_INVALID (though we don't care about invalid)
            if(!(type = llSubStringIndex(seperators, llList2String(partial,pos))))//TYPE_INTEGER
                current = (list)((integer)input);
            else if(type == 1)//TYPE_FLOAT
                current = (list)((float)input);
            else if(type == 3)//TYPE_KEY
                current = (list)((key)input);
            else if(type == 4)//TYPE_VECTOR
                current = (list)((vector)input);
            else if(type == 5)//TYPE_ROTATION
                current = (list)((rotation)input);
            partial = llListReplaceList(partial, current, pos, sub_pos);
        }while((pos= -~sub_pos) & 0x80000000);
    }
    return partial;
}


string TightListTypeDump(list input, string seperators) {//This function is dangerous
{{Jira Reporter}}
    seperators += "|/?!@#$%^&*()_=:;~`'<>{}[],.\n\" qQxXzZ\\";
{{skills
    string cumulator = (string)(input);
|Builder=*
    integer counter = (0);
|Scripter=*
    do
|}}
        if(~llSubStringIndex(cumulator,llGetSubString(seperators,counter,counter)))
            seperators = llDeleteSubString(seperators,counter,counter);
        else
            counter = -~counter;
    while(counter<6);
    seperators = llGetSubString(seperators,(0),5);


        cumulator = "";
== Scite/ESL ==
My config files:
*[https://drive.google.com/folderview?id=0B78L5DGHe6YrV2FFWlE2VTJ4S28&usp=sharing Google Drive]
** lsl.api
** lsl.properties
** stripper.zip - Whitespace stripper
** clipboard.zip - copies text to clipboard
*[https://github.com/Makopo/lslint lslint] (Makopo's fork)
**[http://kwdb.googlecode.com/hg/outputs/builtins.txt builtins.txt] - Up to date keyword file for lslint (generated by [http://code.google.com/p/kwdb/ kwdb])
*[http://gnuwin32.sourceforge.net/packages/indent.htm indent - code beautifier] (picks up where the whitespace stripper leaves off)
*[http://msdn.microsoft.com/vstudio/express/visualc/ MSVC Express]


    if((counter = (input != [])))
==TightList==
    {
See [[TightList]]
        do
        {
            integer type = ~-llGetListEntryType(input, counter = ~-counter);


            cumulator = (cumulator = llGetSubString(seperators,type,type)) + llList2String(input,counter) + cumulator;
==Float Functions==
        }while(counter);
See [[/Float Functions]]
    }
    return seperators + cumulator;
}
</pre>
 
==Float {{LSL_VR|-Union-}} Integer==
<pre>integer fui(float a)
{//union float to integer
    integer b = (a<0) << 31;
    if(a)
    {
        if((a = llFabs(a)) < 1.1754943508222875079687365372222e-38)
            return b | (integer)(a / 1.4012984643248170709237295832896e-45);
        integer c = llFloor(llLog(a) / 0.69314718055994530941723212145818);
        if(c > 127){c = 127;}
        if((a /= (float)("0x1p"+(string)c)) < 1){a*=2; --c;}
        return ((c + 127) << 23 ) | (integer)((a - 1) * 8388608.0) | b;
    }
    return ((string)a == (string)(-0.0)) << 31;
}
 
float iuf(integer a)
{//union integer to float
    integer c= (a >> 23) & 0xff;
    float b = (a & 0x7fffff) * 1.1920928955078125e-7;
    if(c == 0xff)
        b = 1 / 0; //NaN or Infinity (since getting them crashes the script, thats we do).
    else if(c)
        b = (b + 1) * (float)("0x1p"+(string)(c - 127));
    else
        b = b * 1.1754943508222875079687365372222e-38;
    return b * ((a >> 31) | 1);
}
 
string hexc="0123456789ABCDEF";
 
string int6hex(integer x)
{
    integer x0 = 0;
    string res = "";
    integer c = 26;
    do res += llGetSubString(hexc,x0 = (x >> c-=4) & 0xf , x0); while(c > 0);
    return res;
}
 
float iuf_alt(integer a)
{//union integer to float
    integer c = (a >> 23) & 0xff;
    float b;
    if(c == 0xff)
        b = 1 / 0; //NaN or Infinity (since getting them crashes the script, thats we do).
    else if(c)
        b = (float)("0x1."+int6hex(a << 1)+"p"+(string)(c - 127));
    else
        b = (a & 0x7fffff) * 1.4012984643248170709237295832896e-45;
    return b * ((a >> 31) | 1);
}</pre>
 
==Float Compare==
<pre>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) || //to disable the +/- roll under support put a // just before the !
            ((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 >= -1 || diff <= 1)//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;
        }
        return (a > b) - (a < b);
    }
    @out;
    return 0;
}</pre>


==BitCount==
==BitCount==
<pre>integer bitcount(integer n)
<syntaxhighlight lang="lsl2">integer bitcount(integer n)
{//MIT Hackmem 169, modified to work in LSL
{//MIT Hackmem 169, modified to work in LSL
     integer tmp = n - ((n >> 1) & 0x5B6DB6DB)//modified mask
     integer tmp = n - ((n >> 1) & 0x5B6DB6DB)//modified mask
                     - ((n >> 2) & 0x49249249);
                     - ((n >> 2) & 0x49249249);
     return (((tmp + (tmp >> 3)) & 0xC71C71C7) % 63) + (n < 0);
     return (((tmp + (tmp >> 3)) & 0xC71C71C7) % 63) - (n >> 31);
}</pre>
}</syntaxhighlight>
 
==Tenebrous==
<syntaxhighlight lang="lsl2">string ignore = "c228d1cf-4b5d-4ba8-84f4-899a0796aa97";
list Tenebrous(){
    integer link = llGetNumberOfPrims();
    list out;
    string s;
    for(link -= (link == 1); !llGetLinkNumberOfSides(link);)
    {
        list t = llGetLinkPrimitiveParams(link, [PRIM_TEXTURE, ALL_SIDES]);
        integer i = t != [];
        while((i -= 4) >= 0)
            if(ignore != (s = llList2String(t, i)))
                out = [i >> 2, s] + out;
        out = llGetLinkKey(link--) + out;
    }
    return out;
}</syntaxhighlight>
 
{{visl
|name=Strife Onizuka
|Greeters=
|Helpers=
|Instructors=
|Mentors=
|LSL=*
|i18n=
|l10n=
|SL4B=
|}}
[[Category:SL Certification Participant|{{PAGENAME}}]]
[[Category:User pages in need of haiku|{{PAGENAME}}]]

Latest revision as of 16:26, 3 February 2023

<videoflash>hTIsIjZCvHk</videoflash>
Updates: Preview
DMZ Preview
Agni Preview
Colo Preview
Siva Preview
Durga Preview
Aditi Preview
Soma Preview
Ganga Preview
Uma Preview
Shakti Preview
Vaak Preview
Mohini Preview
Yami Preview
Nandi Preview
Mitra Preview
Radha Preview
Ravi Preview
Aruna Preview
Damballah Preview
Bharati Preview
Chandra Preview
Danu Preview
Parvati Preview
Skanda Preview

About Strife

Synopses

Strife joined 3/3/2004, and is an avid scripter, wiki author and SL forum denizen. Not content in selfish information gathering, he shares what he knows through various mediums, so that others may benefit and learn. He volunteers his time to work on many public projects which include: giving scripting advice, writing LSL documentation, providing and improving LSL scripts and libraries. Secondlife has been on Strife's brain for that last 2 decades.

SL Status

Strife is unemployed. Leave me a note on my talk page.

Honors

Through his public works Strife became a pillar of the SL community.

Strife is a Hippo award winner, awarded "Best Community Organizer" in the 2007 Linden Lab Innovation Awards, and here is his mention as a runner-up in the 2008 "Best Documentation" category: "Last year's winner, Strife Onizuka, continued to be insanely prolific, with thousands of edits over the past year.... Anyone learning LSL is almost certainly indebted to Strife's work in some way."

Own Words

I'm an immigrant from URU. Was in all 3 of it's beta's.

Wiki Gnome (causing drama isn't why I'm here) for about 20 years.

I havehad a webpage but I haven't updated it in a fewmany monthsyears...

Wiki's are the way of the future when it comes to making documentation Ad-hoc. With popularity graffiti becomes a worsening problem. The wiki owner is left between a rock and a hard place: cope with graffiti edits or cope with out-of-data information. The popular choice is to restrict editing, which ultimately drives away legitimate editors.

I also contribute to some other wikis:

When it comes to writing I tend to go towards concise. A short accurate description is better then a long equally accurate description; less to get confused with, easier to find the important information (because it is all important).

View the issues Strife Onizuka has filed at jira.secondlife.com

Scite/ESL

My config files:

TightList

See TightList

Float Functions

See /Float Functions

BitCount

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 >> 31);
}

Tenebrous

string ignore = "c228d1cf-4b5d-4ba8-84f4-899a0796aa97";
 
list Tenebrous(){
    integer link = llGetNumberOfPrims();
    list out;
    string s;
    for(link -= (link == 1); !llGetLinkNumberOfSides(link);)
    {
        list t = llGetLinkPrimitiveParams(link, [PRIM_TEXTURE, ALL_SIDES]);
        integer i = t != [];
        while((i -= 4) >= 0)
            if(ignore != (s = llList2String(t, i)))
                out = [i >> 2, s] + out;
        out = llGetLinkKey(link--) + out;
    }
    return out;
}