| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- // :CATEGORY:XS Pet
- // :NAME:XS Pet Robot
- // :AUTHOR:Ferd Frederix
- // :KEYWORDS: Pet,XS,breed,breedable,companion,Ozimal,Meeroo,Amaretto,critter,Fennux,Pets
- // :CREATED:2013-09-06
- // :EDITED:2014-01-30 12:24:21
- // :ID:988
- // :NUM:1455
- // :REV:0.50
- // :WORLD:Second Life, OpenSim, Opensim
- // :DESCRIPTION:
- // XS Pet xs_texture plug in
- // :CODE:
- //xs_texture plug in
- // 12-3-2012 - no longer dorks with the offset, repeat, or rotation when applying a texture
- /////////////////////////////////////////////////////////////////////
- // This code is licensed as Creative Commons Attribution/NonCommercial/Share Alike
- // See http://creativecommons.org/licenses/by-nc-sa/3.0/
- // Noncommercial -- You may not use this work for commercial purposes
- // If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
- // This means that you cannot sell this code but you may share this code.
- // You must attribute authorship to me and leave this notice intact.
- //
- // Exception: I am allowing this script to be sold inside an original build.
- // You are not selling the script, you are selling the build.
- // Ferd Frederix
- //////////////////////////////////////////////////////////
- // CONFIGURATION //
- //////////////////////////////////////////////////////////
- // you must put in a UUID from this web site here and in the Server script
- // http://gridurl.appspot.com/random
- string UUID = "48246356-a7c5-474b-a6fe-f2cec98926b2"; // do not use this number, use your own from http://gridurl.appspot.com/random
- integer debug = TRUE; // set to TRUE to see debug messages
- //////////////////////////////////////////////////////////
- // INTERNALS //
- //////////////////////////////////////////////////////////
- integer LINK_TEXTURE = 801; // ask for a new texture, or paint a color
- integer LINK_BREEDNAME = 802; // the name of the pet texture from the texture server notecard
- key URLRqstKey;
- key textureRqstKey;
- string newpath ;
- // globals to hold the params linked in from the brain
- vector colorCode1;
- vector colorCode2;
- integer sex;
- integer shine;
- float glow;
- float breed;
- DEBUG(string msg)
- {
- if (debug)
- llOwnerSay(llGetScriptName() + " : " + msg);
- }
- key Request(string cmd)
- {
- DEBUG("Sending:"+newpath+"?"+cmd);
- return llHTTPRequest( newpath+"?"+cmd, [HTTP_METHOD, "GET"], "");
- }
- key TextureRequest()
- {
- string URL = newpath + "?breed=" + llEscapeURL((string) breed) ;
- DEBUG("Sending: "+ URL);
- return llHTTPRequest( URL, [HTTP_METHOD, "POST"], "");
- }
- // change texture of amny prims named texture1 to texture6
- TextureIt(list textures)
- {
- // :texture|Breed Type 2|Body|fa8b0052-3a8d-48ce-ac56-6d14bfb956a9|Wing|dda55c64-46c7-4ed8-88c0-7b159ffa3b24|
-
- integer nPrims = llGetNumberOfPrims();
- integer i;
- for (i = 0; i <= nPrims; i++)
- {
- list param = llGetLinkPrimitiveParams(i,[PRIM_NAME]); // name holds the texture number
- string primName = llList2String(param,0);
- // root is special
- if ( i == 1)
- primName = "root";
- integer where = llListFindList(textures,[primName]);
- if (where >= 0)
- {
- key UUID = (key) llList2String(textures,where+1);
- // DEBUG("Set Texture: " + primName + " on prim #" + (string) i);
- // apply texture and the other params
- llSetLinkPrimitiveParamsFast(i, [PRIM_COLOR, ALL_SIDES, <1,1,1>, 1.0, PRIM_BUMP_SHINY, ALL_SIDES, shine, PRIM_BUMP_NONE, PRIM_GLOW, ALL_SIDES, glow]); // delete the prim texture
- llSetLinkTexture(i,UUID,ALL_SIDES); // add this line which sets the texture with no offset or repeat or rotation changes
- }
- }
- }
- default
- {
- state_entry()
- {
- // not a lot to do
- }
- on_rez(integer param)
- {
- llResetScript();
- }
- link_message(integer who, integer num, string str, key id)
- {
- // there are two vectors, sent in one packet
- if (num == LINK_TEXTURE)
- {
- DEBUG("received LINK_TEXTURE");
- list params = llParseString2List(str,["^"],[]);
- colorCode1 = (vector) llList2String(params,0);
- colorCode2 = (vector) llList2String(params,1);
- sex = (integer) llList2String(params,2);
- shine = (integer) llList2String(params,3);
- glow = (float) llList2String(params,4);
- breed = colorCode1.x; // the breed is based on the Red value of Color 1
- URLRqstKey = llHTTPRequest( "http://gridurl.appspot.com/get/"+ llEscapeURL(UUID ), [HTTP_METHOD, "GET"], ""); // find the other object/script
- }
- }
- http_response(key request_id, integer status, list metadata, string body)
- {
- if (URLRqstKey == request_id)
- {
- URLRqstKey = NULL_KEY; // the same event sometimes shows up more then once
- if(status != 200)
- llOwnerSay("The internet is broken! status="+(string)status+" "+body);
- else
- {
- DEBUG(body);
- newpath= body;
- textureRqstKey = TextureRequest(); // request the object name
- }
- }
- else if (textureRqstKey == request_id)
- {
- if(status != 200)
- llOwnerSay("request failed status="+(string)status+" "+ body);
- else {
- DEBUG("response:" + body); // report what was returned from request
- list textures = llParseString2List(body,["|"],[]);
- if (llList2String(textures,0) == "texture")
- {
- string sName = llList2String(textures,1); // the texture name
- llMessageLinked(LINK_SET,LINK_BREEDNAME,sName,"");
- textures = llDeleteSubList(textures,1,1); // put it back the old way
- TextureIt(textures);
- }
- }
- }
- }
- }
|