Difference between revisions of "User:Kristy Fanshaw"

From Second Life Wiki
Jump to navigation Jump to search
(New page: <lsl> integer gCorrectAmount = 600; //enter your price for fast pay integer totalsold = 0; integer totalamount = 0; key OWNER; key ID; string url; key http_request_id; integer listen_handl...)
 
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
<lsl>
{{LSL Header}}
integer gCorrectAmount = 600; //enter your price for fast pay
integer totalsold = 0;
integer totalamount = 0;
key OWNER;
key ID;
string url;
key http_request_id;
integer listen_handle;
integer back;
string mail;


==About: Kristy Fanshaw==
Custom content creator.


default
==Contibutions==
    {
Scripts i've made
        changed(integer change)
            {
                if(change && CHANGED_OWNER)
                    {
                        llResetScript();
                    }
               
            }
        on_rez(integer start_param)
            {
                llResetScript();
            }
           
        state_entry()
            {
                OWNER = llGetOwner();
                llSetPayPrice(PAY_HIDE, [gCorrectAmount, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
                // in llSetText describe the name of the "update box" object that should be rezzed
                llSetText("To start vendor, rezz 'update box name'.", <1.0, 1.0, 1.0>, 1.0);
                llSensorRepeat("update box name", NULL_KEY , SCRIPTED, 10 , PI, 10);
            }
        sensor (integer numberDetected)
            {
                state sens;
            }
        no_sensor ()
            {
                llResetScript();
            }
    }
state sens
{
        on_rez(integer start_param)
            {
                llResetScript();
            }
        state_entry()
            {
                llSetText("Updating", <1.0, 1.0, 1.0>, 1.0);
                // set llShout channel to whatever negative channel you like, but remeber to define the same channel in update box llListen function 
                llShout(-1234567,"update");
                // set llListen channel to whatever negative channel you like, but remeber to define the same channel in update box llShout function
                listen_handle = llListen(-7654321,"update box name", NULL_KEY, "");
                llSensorRepeat("update box name", NULL_KEY , SCRIPTED, 10 , PI, 5);
            }
        listen( integer channel, string name, key id, string message )
            {
                url = message;
                llListenRemove(listen_handle);
                llOwnerSay("updated");
                llShout(-1234567,"updated");
                llListenRemove(listen_handle);   
            }
        sensor (integer numberDetected)
            {
                llListenRemove(listen_handle);
                state sens;
            }
        no_sensor ()
            {
                llSetText("Touch to grant debit permission.", <1.0, 1.0, 1.0>, 1.0);
            }
        touch_start(integer total_number)
            {
                llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
            }
        run_time_permissions(integer Permission)
            {
                if(Permission == PERMISSION_DEBIT)
                    {
                        llOwnerSay("Starting vendor.");
                        llSetText("", <1.0, 1.0, 1.0>, 1.0);
                        state Ready;
                    }
                else
                    {
                        llOwnerSay ( "To share proceeds I must have give money(DEBIT) permissions");
                        llOwnerSay ( "Try again");
                        llResetScript();
                    }
            } 
    }


state Ready
*[[User:Kristy_Fanshaw/Vendor_System_Script|Vendor System Script]] :: Helps to create vendor for resellers with money split and always up-to-date content.
    {
 
        on_rez(integer start_param)
*[[User:Kristy_Fanshaw/Shorter_Vendor_System_Script|Shorter Vendor System Script]] :: Helps to create vendor for resellers with money split and always up-to-date content. (without HTTP check)
            {
 
                llResetScript();
*[[Online Indicator|Online Indicator]] :: Will show if the user is online or not. Displays users profile picture and allows to send IM's to user. Also gives a link to open the users profile.
            }
        state_entry()
            {
                llSensorRepeat("update box name", NULL_KEY , SCRIPTED, 10 , PI,30);
            }
        sensor (integer numberDetected)
            {
                llSetText("Updating", <1.0, 1.0, 1.0>, 1.0);
                llShout(-1234567,"update");
                listen_handle = llListen(-7654321,"update box name", NULL_KEY, "");
            }
        listen( integer channel, string name, key id, string message )
            {
                url = message;
                llListenRemove(listen_handle);
                llOwnerSay("updated");
                llShout(-1234567,"updated");
                llSetText("", <1.0, 1.0, 1.0>, 1.0);
                llListenRemove(listen_handle);
            }
        touch_start(integer total_number)
            {
                if (llDetectedOwner(0) == llGetOwner())
                    {
                        llOwnerSay((string)totalsold +" units have been sold since object rez. ");
                    }
                else
                    {
                        llInstantMessage(llDetectedKey(0), "Right-click and pay to purchase.");
                    }
            }
 
        money(key id, integer amount)
        {
            ID =id;
            back = amount;
            {
                if (amount == gCorrectAmount)
                    {// correct amount paid
                        llInstantMessage(id, "Thank you " + llKey2Name(id) + " for your purchase.");
                        llInstantMessage(id,"Server initialises your request .....");
                        http_request_id = llHTTPRequest(url, [], "");
                    }
                else if (amount < gCorrectAmount)
                    {
                        llInstantMessage(llDetectedKey(0),"You didn't pay enough, " + llKey2Name(id) + ". Refunding your payment of L$" + (string)amount + ".");
                        llGiveMoney(id, amount);
                        state Ready;
                    }
                else
                    {
                        integer refund = amount - gCorrectAmount;
                        llInstantMessage(llDetectedKey(0),"You paid too much, " + llKey2Name(id) + ". Your change is L$" + (string)refund + ".");
                        llGiveMoney(id, refund);
                        llInstantMessage(id, "Thank you " + llKey2Name(id) + " for your purchase.");
                        llInstantMessage(id,"Server initialises your request .....");
                        http_request_id = llHTTPRequest(url, [], "");
                    }
            }
                 
        }
        http_response(key request_id, integer status, list metadata, string body)
        {
            {
                mail =body;
                if (request_id == http_request_id)
                    {
                    if ( status == 404)
                        {
                            llGiveMoney(ID, back);
                            llInstantMessage(ID, "Vendor is outdated");
                            llInstantMessage(llGetOwner(), "Your Vendor in " + llGetRegionName() + " sim can't deliver items. Please update your Vendor.");
                            llResetScript();
                           
                        }
                    else
                        {
                            llInstantMessage(ID,"Request initialised.");
                            llInstantMessage(ID,"Sending your requested items .....");
                            llSetText("Purchase in progress...\n\nPlease Wait...", <1.0, 1.0, 1.0>, 1.0);
                            llSetPayPrice(PAY_HIDE,[ PAY_HIDE, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
                            llEmail( body, ID, (string)llGetKey()+"@lsl.secondlife.com" );
                           
                            llSetTimerEvent(5);
                            llGetNextEmail("", ""); 
                        }
                    }
            }
        }
       
        email( string time, string address, string subj, string message, integer num_left )
            {   
                if (subj == "delivered")
                    {
                        key creator = llGetCreator();
                            float calc = back + 0.0;
                            float a = calc * 0.6;
                            float b = back - a;
                            llGiveMoney( creator, (integer)a );
                            llInstantMessage(ID,"Accept your purchased items");
                            totalsold = totalsold + 1;
                            totalamount = back * totalsold;
                            llInstantMessage(llGetOwner(), (string)llKey2Name(ID) + " has paid " + (string)back + "L$ in "+ llGetRegionName() + " and you have recived " + (string)llRound(b) + "L$ from this sale");
                            llInstantMessage(creator, (string)llKey2Name(ID) + " has paid " + (string)back + "L$ in "+ llGetRegionName() + " and you have recived " + (string)llRound(a) + "L$ from this sale");
                            llSetPayPrice(PAY_HIDE,[gCorrectAmount, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
                            llSetText("", <1.0, 1.0, 1.0>, 1.0);
                            llSetTimerEvent(0);
                            state Ready;
                    } 
            }
        timer()
            {     
                        llGiveMoney(ID, back);
                        llInstantMessage(ID, "Vendor couldn't deliver items ... your money is refunded");
                        llInstantMessage(llGetOwner(), "Your Vendor in " + llGetRegionName() + " sim can't deliver items. Please update your Vendor.");
                        llSetPayPrice(PAY_HIDE,[gCorrectAmount, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
                        llSetText("", <1.0, 1.0, 1.0>, 1.0);
                        llSetTimerEvent(0);
                        state default;       
            }                         
}
<lsl>

Latest revision as of 10:07, 15 January 2009

About: Kristy Fanshaw

Custom content creator.

Contibutions

Scripts i've made

  • Vendor System Script :: Helps to create vendor for resellers with money split and always up-to-date content.
  • Online Indicator :: Will show if the user is online or not. Displays users profile picture and allows to send IM's to user. Also gives a link to open the users profile.