Category:Scripts

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
Line 365: Line 365:
  
  
[[Category:Categories]]
+
[[Category:Scripting]]

Revision as of 05:59, 19 November 2010

Hi all. As this page is still here i guess it's either been overlooked or it may be useful. I'll continue to put scripts that I've found that work.. It will i hope be obvious that they are not mine, and that i am not nor claim to be the author.

The scripts are gleemed from anywhere open source, and my thanks go out to all those bright people who write this stuff :-)

I am running opensim from the svn (Latest build daily) thing, then compile it in visual studio it occasionally wants to update the code to 2008 vers so i let it :-) where possible i will show the author and a link :-) Any problems let me know zoon@edenrealm.co.uk copy all below the "heading" into a new script in your in-world inventory, then drag and drop into your prim..... as if you didnt know :-) Samantha can be located on Openlife grid, Oh yes, i have played with the settings a little. There are lots of sources to look at and OsGrid would be a great place to start.

Contents

Particles

// *** Fountian Particles ***
// *** by Samantha Fuller ***
// *** ver 1 for OLG alpha .5 - March 5 /08 ***
integer on;
start_particles()
{
    llParticleSystem([
    PSYS_PART_FLAGS, PSYS_PART_EMISSIVE_MASK //PSYS_PART_TARGET_POS_MASK 
    | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK, 
//|PSYS_PART_WIND_MASK,
//PSYS_PART_FOLLOW_VELOCITY_MASK,
    PSYS_SRC_PATTERN,
// ***  Choose 1 pattern from the following ***
    // PSYS_SRC_PATTERN_EXPLODE,
       PSYS_SRC_PATTERN_DROP,
    // PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY,
    // PSYS_SRC_PATTERN_ANGLE_CONE,
    // PSYS_SRC_PATTERN_ANGLE,
 
    PSYS_SRC_ANGLE_BEGIN, 5.015, 
    PSYS_SRC_ANGLE_END, 10.5,
    PSYS_PART_START_SCALE, <0.1, 0.3, 0.1>,
    PSYS_PART_END_SCALE, <5.05,5.05,5.05>,
    PSYS_PART_START_ALPHA, .9,
    PSYS_PART_END_ALPHA, 0.05,
    PSYS_PART_START_COLOR, <1.0, 1.0, 1.0>,
    PSYS_PART_END_COLOR, <1.0, 0.0, 1.0>,
    PSYS_PART_MAX_AGE, 5.5,
    PSYS_SRC_ACCEL, < 0.0, 0.0, 0.2>,
    PSYS_SRC_BURST_RATE, 0.500,
    PSYS_SRC_BURST_PART_COUNT, 10,
    PSYS_SRC_BURST_RADIUS, 1.075,
    PSYS_SRC_BURST_SPEED_MAX, 2,
    PSYS_SRC_BURST_SPEED_MIN, 1,
    PSYS_SRC_TARGET_KEY, llGetKey()
    ]);
}
 
default
{
    state_entry()
    {
        start_particles();
        llSleep(6);
        //llParticleSystem([]);
        llWhisper(0,"particle change");
    }
 touch_start(integer touches)
    {
        if (on == 0)
        {
            on = 1;
            start_particles();
            llWhisper(0,"fountian on");
        }
        else
        {
            on = 0;
            llParticleSystem([]);
            llWhisper(0,"fountian off");
        }
    }
}

Sound loop

default
{
    state_entry()
    {
        llSetTimerEvent(9.9);
        llSay(0,"reset.");
    }
 
    timer()
    {
        llPlaySound("rightclick on your sound and copy the UUID here, with care",1.0);
    }
}

Smooth rotate texture

default
{
    state_entry()                                   
    {                                               
       float SPEED = 0.2; 
       llSetTextureAnim(ANIM_ON | SMOOTH | LOOP, ALL_SIDES, 0, 0, 1.0, 1000, SPEED);
    }
}

Sit and position

Just drop into an object and play with the vector rot stuff and llsitTarget till happy :-)

default{
 
state_entry()
        {
         llSetText("sit here ", <0,1,0>,1);
         llSay(0,"started");
         vector rot=<180.0, -180.0, 0.0>*DEG_TO_RAD;
         rotation finalrot=llEuler2Rot(rot);
         llSitTarget(<-0.35, 0.0, 0.75>,finalrot);
        }
}

Rotating Prim

I think this came from Nebaden :-).....

default 
  {
    state_entry()
     {
      llSetText("put your text in here", <1,1,1>,1);
      llTargetOmega(<0,0,1>, 0.2, 2);
     }
  }

A Opensim version for llHTTPResponse

As we know, until now we receive a very nice message for llHTTPResponse :D, but to make a prim communicate to another, i've made this method:

Client

// This script is to do a request on the primitive url on the description and return it's response.
key url_request;
 
 string myurl; //This is only valid for internal Requests/Responses, for calling from other grids, use the simulator ip:port where it shows something like 2K3S-***-***-***:port, but mantain the rest.
 
integer listen_u;
 
string prepare_post_body(list l)
{
    integer i;
    string body;
    integer len=llGetListLength(l) & 0xFFFE; // make it even
    for (i=0;i<len;i+=2)
    {
        string varname=llList2String(l,i);
        string varvalue=llList2String(l,i + 1);
        if (i>0) body+="&";
        body+=llEscapeURL(varname)+"="+llEscapeURL(varvalue);
    }
    return body;
}
 
list Postdata2List(string data)
{
    return llParseString2List(data, "&", "");
}
 
string Httpdata2String(string data)
{
    list d = llParseString2List(data, "=", "");
    return llUnescapeURL(llList2String(d, 1));
}
 
key FastHttpRequest(string url, list meta, list body)
{
    return llHTTPRequest(url, meta, prepare_post_body(body));
} 
 
default
{
 
    state_entry()
    {
        url_request = llRequestURL();
    }
    http_request(key id, string method, string body)
    {
        if (url_request == id)
        {
            url_request = "";
            if (method == "URL_REQUEST_GRANTED")
            {
                llSetText("MyURL> " + body, <1,.5,0>, 1.0);
                myurl = body;
                state run;
            }
            else if (method == "URL_REQUEST_DENIED")
            {
                llSay(0, "Something went wrong, no url. " + body);
            }
        }
        else
        {
            llSay(0, "Received> " + body);
        }
    }
}
 
state run
{
    state_entry()
    {
        llSay(0, "Running, touch for request to my description.");
        listen_u = llListen(-1, "", "", "");
        llListen(1, "", "", "reset");
    }
 
    listen(integer c, string n, key k, string m)
    {
        if(c == -1)
        {
            llListenRemove(listen_u);
            llSetObjectDesc(m);
        }
        if(c == 1 && m == "reset")
        {
            llResetScript();
        }
    }
 
    touch_start(integer i)
    {
        FastHttpRequest(llGetObjectDesc(), [HTTP_METHOD, "POST",HTTP_MIMETYPE, "application/x-www-form-urlencoded"],["MYURL",myurl,"MESSAGE","Hello, my name is " + llGetObjectName() + "."]);
    }
 
    http_request(key id, string method, string body)
    {
        if (url_request == id)
        {
            url_request = "";
            if (method == "URL_REQUEST_GRANTED")
            {
                llSetText("MyURL> " + body, <1,.5,0>, 1.0);
                myurl = body;
            }
            else if (method == "URL_REQUEST_DENIED")
            {
                llSay(0, "Something went wrong, no url. " + body);
            }
        }
        else
        {
            list body_i = Postdata2List(body);
            string url = Httpdata2String(llList2String(body_i,0));
            string data = Httpdata2String(llList2String(body_i,1));
            llSay(0, "Received> " + data);
        }
    }
}

Server

key url_request;
 
 string myurl;//This is only valid for internal Requests/Responses, for calling from other grids, use the simulator ip:port where it shows something like 2K3S-***-***-***:port, but mantain the rest.
 
string prepare_post_body(list l)
{
    integer i;
    string body;
    integer len=llGetListLength(l) & 0xFFFE; // make it even
    for (i=0;i<len;i+=2)
    {
        string varname=llList2String(l,i);
        string varvalue=llList2String(l,i + 1);
        if (i>0) body+="&";
        body+=llEscapeURL(varname)+"="+llEscapeURL(varvalue);
    }
    return body;
} 
 
list Postdata2List(string data)
{
    return llParseString2List(data, "&", "");
}
 
string Httpdata2String(string data)
{
    list d = llParseString2List(data, "=", "");
    return llUnescapeURL(llList2String(d, 1));
}
 
key FastHttpRequest(string url, list meta, list body)
{
    return llHTTPRequest(url, meta, prepare_post_body(body));
} 
 
default
{
    state_entry()
    {
        url_request = llRequestURL();
    }
    touch_start(integer i)
    {
//        llSay(0, "URL: " + myurl);
//        
//        llSay(-1, myurl);
 
        llSetText(" ", <0,0,0>, 0.0);
 
        llResetScript();
    }
    http_request(key id, string method, string body)
    {
        if (url_request == id)
        {
            url_request = "";
            if (method == "URL_REQUEST_GRANTED")
            {
                llSay(0,"New URL: " + body);
 
                llSay(-1, body);
                myurl = body;
            }
            else if (method == "URL_REQUEST_DENIED")
            {
                llSay(0, "Something went wrong, no url. " + body);
            }
        }
        else
        {
//            llSay(0, body);
            list body_i = Postdata2List(body);
            string url = Httpdata2String(llList2String(body_i,0));
            string data = Httpdata2String(llList2String(body_i,1));
            llSetText("FROM: " + url + "\nDATA: " + data, <1,.5,0>, 1.0);
//            llSay(0, "FROM: " + url + "\nDATA: " + data);
//            llHTTPResponse(id, 200, body);
            llSay(0, "Response to " + url);
            FastHttpRequest(url, [HTTP_METHOD, "POST",HTTP_MIMETYPE, "application/x-www-form-urlencoded"], ["MYURL", myurl, "MESSAGE", "You sent me: \""+data+"\""]);
            llSay(0, "Sent!");
        }
    }
}

To receive a response, you need to send in the body this parameter: MYURL and in value add the object url, but if you need, try to change the value of url to the ip:port of region, sometimes it may be strange. Is it, easy? ;D

Will keep updating until told otherwise :-)

Subcategories

This category has the following 2 subcategories, out of 2 total.

Personal tools
General
About This Wiki