NumPad

From Second Life Wiki
Revision as of 19:48, 16 January 2013 by Madpeter Zond (talk | contribs) (Created page and released the first version.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Scripting tools to allow display of text on a prim: XyText 1.5 , XyzzyText, XyyyyzText, XyText-UTF8, XyzzyText-UTF8, ZZText, VariText

NumPad is a variant of the text on a prim but with some changes

  • 1 texture vs 5 textures needed for XyText 1.5 'to render numbers'
  • Numbers and spaces only.
  • About 73 lines of code.

Copyright & Licensing

  • Madpeter Zond hereby releases his contributions to this under the MIT license. [Starting texture and Starting code]

NumPad 10digits

Quickstart:

* Take a copy of the 10 char prim setup from [[XyText 1.5]] and setup a prim
* After running the code create a new script and copy the NumPad code to it.

Usage:

* Set render_to_prim_number to the number of the prim you wish to render to,
* if you dont know the number you can put the script inside of the prim you want
* and not change this.

Main Script

<lsl> /*

   NumPad
   ----------------
   Version: 1.0
   By: Madpeter Zond
   About: A 1 texture 10 digit number display
          great for a score output.
  • /

string texture = "31f72af5-dee3-72f5-3981-bde21bf85e9c"; integer render_to_prim_number = LINK_THIS; vector render_color = <1,1,1>; float glow_amount = 0.00;

// please dont change this unless you want to break something ^_^ list faces = [3,7,4,6,1]; list grid_offset_starts = [<-0.38941,-0.54747,0> ,<-0.44939,-0.54750,0>, <0.01800,0.45256,0>,<-0.44939,-0.54750,0>,<-0.50941,-0.54747,0>]; list repeats_corrections = [<0.1,0,0>,<0,0,0>,<-1.35,0,0>,<0,0,0>,<0.1,0,0>]; vector repeats_config = <0.1,0.083333,0>; float fix(float input) // render blocking fix [haxy] {

    if(input > 1.0) input -= 1.0;
    else if(input < -1.0) input += 1.0;
    return input; 

} render(string output) {

   while(llStringLength(output) < 10) { output = ""+output+" "; }
   list renderrules = [];
   integer loop = 0;
   while(loop < 5)
   {
       string part = llGetSubString(output,(2*loop),(2*loop)+1);
       if(part == "  ") 
       {
           // empty
           renderrules = renderrules + [PRIM_COLOR,llList2Integer(faces,loop),<1,1,1>,0,PRIM_GLOW,llList2Integer(faces,loop),0];
       }
       else
       {
           integer Y_offset = (integer)llGetSubString(part,0,0);
           integer X_offset = (integer)llGetSubString(part,1,1);
           if(llGetSubString(part,0,0) == " ")  Y_offset = 11; // left side empty 
           else if(llGetSubString(part,1,1) == " ") Y_offset = 12; // right side empty
           vector start = llList2Vector(grid_offset_starts,loop);
           start = <fix(start.x + (0.1 * X_offset)),fix(start.y + (-0.083333333 * Y_offset)),0>;
           renderrules = renderrules + [PRIM_TEXTURE,llList2Integer(faces,loop),texture,repeats_config+llList2Vector(repeats_corrections,loop),start,0,PRIM_COLOR,llList2Integer(faces,loop),render_color,1,PRIM_GLOW,llList2Integer(faces,loop),glow_amount];
       }
       loop++;        
   }
   llSetLinkPrimitiveParamsFast(render_to_prim_number,renderrules);
           

} default {

   state_entry()
   {
       render("1234567890");
   }    

} </lsl>