Difference between revisions of "User:Kristy Fanshaw/Vendor System Script"

From Second Life Wiki
Jump to navigation Jump to search
(Undo revision 196612 by Kristy Fanshaw (Talk))
 
(8 intermediate revisions by the same user not shown)
Line 23: Line 23:
# when the URL is set, it asks the owner of the vendor to grant debits. If the owner won't do so, the script resets.<br>
# when the URL is set, it asks the owner of the vendor to grant debits. If the owner won't do so, the script resets.<br>
# when debits are granted the vendor will be active.<br>
# when debits are granted the vendor will be active.<br>
# if the owner of the vendor touches vendor in active mode, the vendor will tell how many items have been sold since activation.<br><br>
# if the owner of the vendor touches vendor in active mode, the vendor will tell how many items have been sold since activation.<br>
Purchase:
Purchase:
# buyer can pay only the amount of money that is set in "integer gCorrectAmount"  
# buyer can pay only the amount of money that is set in "integer gCorrectAmount"  
Line 30: Line 30:
# server will give the item to buyer and sends "delivered" notification back to vendor. If the server is not working or there will be some other issues with delivery, then money will be refunded to buyer and vendor shuts down till next update.
# server will give the item to buyer and sends "delivered" notification back to vendor. If the server is not working or there will be some other issues with delivery, then money will be refunded to buyer and vendor shuts down till next update.
# when vendor receives email from server with "delivered" note, then creator of the vendor receives the money.  
# when vendor receives email from server with "delivered" note, then creator of the vendor receives the money.  


<lsl>////////////////////////////////////////////////////////////////////////////////////////////////
<lsl>////////////////////////////////////////////////////////////////////////////////////////////////
Line 97: Line 96:
             {
             {
                 llResetScript();
                 llResetScript();
            }
    }
state sens1
    {
        state_entry()
            {
                state sens;
             }
             }
     }
     }
Line 115: Line 121:
             {
             {
                 url = message;
                 url = message;
                llListenRemove(listen_handle);
                 llOwnerSay("updated");
                 llOwnerSay("updated");
                 llShout(Ch,"updated");
                 llShout(Ch,"updated");
Line 123: Line 128:
             {
             {
                 llListenRemove(listen_handle);
                 llListenRemove(listen_handle);
                 state sens;
                 state sens1;
             }
             }
         no_sensor ()
         no_sensor ()
Line 149: Line 154:
             }   
             }   
     }  
     }  
state Ready1
    {
        state_entry()
            {
                state Ready;
            }
    }
state Ready
state Ready
     {
     {
Line 168: Line 180:
             {
             {
                 url = message;
                 url = message;
                llListenRemove(listen_handle);
                 llOwnerSay("updated");
                 llOwnerSay("updated");
                 llShout(Ch,"updated");
                 llShout(Ch,"updated");
Line 200: Line 211:
                                 llInstantMessage(llDetectedKey(0),"You didn't pay enough, " + llKey2Name(id) + ". Refunding your payment of L$" + (string)amount + ".");
                                 llInstantMessage(llDetectedKey(0),"You didn't pay enough, " + llKey2Name(id) + ". Refunding your payment of L$" + (string)amount + ".");
                                 llGiveMoney(id, amount);
                                 llGiveMoney(id, amount);
                                 state Ready;
                                 state Ready1;
                             }
                             }
                         else
                         else
Line 256: Line 267:
                         llSetText("", <1.0, 1.0, 1.0>, 1.0);
                         llSetText("", <1.0, 1.0, 1.0>, 1.0);
                         llSetTimerEvent(0);
                         llSetTimerEvent(0);
                         state Ready;
                         state Ready1;
                     }   
                     }   
             }
             }
Line 316: Line 327:
                     {
                     {
                         llDie();
                         llDie();
                    }
            }
}</lsl>}}
{{box|Server Script and Mailer Script for "Server Object"|
Place these scripts into a box you've created as a server prim.<br>
Place the object you'd like to sell into this prim - only one object<br><br>
Server Script:
# when rezzed, it will tell you it's email address.
# when this scrpt gets an email from the vendor, it gives the inventory item to buyer and asks mailer script to send a note back to vendor that the delivery is done.
# when touched by the owner, it says totalsold.
<lsl>////////////////////////////////////////////////////////////////////////////////////////////////
//    Copyright (c) 2008 by Kristy Fanshaw                                                    //
//    This script is part of Vendor System.                                                  //
////////////////////////////////////////////////////////////////////////////////////////////////
//    Vendor System is free software: you can redistribute it and/or modify                  //
//    it under the terms of the GNU General Public License as published by                    //
//    the Free Software Foundation, either version 3 of the License, or                      //
//    (at your option) any later version.                                                    //
//                                                                                            //
//    Vendor System is distributed in the hope that it will be useful,                        //
//    but WITHOUT ANY WARRANTY; without even the implied warranty of                          //
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                          //
//    GNU General Public License for more details.                                            //
//                                                                                            //
//    To get a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.    //
////////////////////////////////////////////////////////////////////////////////////////////////
string my_address = "my.email@email.com";      // Write here the email, where you want to recieve the message with new server email address.
integer total_mailers = 5;                      // How many mailer scripts you have in server prim. 5 mailer scripts are Recomended min. because of llEmail function.
integer mailer = 1;                           
default
    {
        changed(integer change)
            {
                if(change && CHANGED_OWNER)
                    {
                        llSetObjectDesc("0");
                        llResetScript();
                    }     
            }
        on_rez(integer start_parameter)
            {
                llOwnerSay("new email is: " + (string)llGetKey() + "@lsl.secondlife.com");
                llEmail(my_address,llGetObjectName() , "my new email is: " + (string)llGetKey() + "@lsl.secondlife.com");
                llOwnerSay("message with new address is sent to your email");
            }
        state_entry()
            {             
                llSetObjectName(llGetInventoryName(INVENTORY_OBJECT,0));
                llSetText(llGetObjectName(),<1,1,1>,1);
                totalsold = (integer)llGetObjectDesc();
                llOwnerSay("new email is: " + (string)llGetKey() + "@lsl.secondlife.com");
                llEmail(my_address,llGetObjectName() , "my new email is: " + (string)llGetKey() + "@lsl.secondlife.com");
                llOwnerSay("message with new address is sent to your email");
                llSetTimerEvent(5.0);             
            }
        timer()
            {
                llGetNextEmail("", "");
            }
        email( string time, string address, string subj, string message, integer num_left )
            {
                llGiveInventory(subj,llGetInventoryName(INVENTORY_OBJECT,0) );
                message = llDeleteSubString(message, 0, llSubStringIndex(message, "\n\n") +1);
                llMessageLinked(LINK_THIS, mailer, message, "");
                if (mailer <= total_mailers)
                    {
                        mailer = mailer + 1;
                    }
                if (mailer >= total_mailers + 1)
                    {
                        mailer = 1; 
                    }
                totalsold = totalsold + 1;
                llSetObjectDesc((string)totalsold);
                llGetNextEmail("", "");
            }
        touch_start(integer total_number)
            {
                if (llDetectedOwner(0) == llGetOwner())
                    {
                        llOwnerSay((string)totalsold +" units have been sold since server update. ");
                    }
                else
                    {
                        llInstantMessage(llDetectedKey(0), "please don't touch");
                    }
            }
}</lsl>
Mailer script.<br>
# Make as many numbers of mailer sciprts you need and place them into server object.<br>
# Name them with numbers starting from number "1".<br>
# Don't skip any numbers: if you have 5 mailer scripts in you server object then you their names should be 1, 2, 3, 4 and 5.
<lsl>////////////////////////////////////////////////////////////////////////////////////////////////
//    Copyright (c) 2008 by Kristy Fanshaw                                                    //
//    This script is part of Vendor System.                                                  //
////////////////////////////////////////////////////////////////////////////////////////////////
//    Vendor System is free software: you can redistribute it and/or modify                  //
//    it under the terms of the GNU General Public License as published by                    //
//    the Free Software Foundation, either version 3 of the License, or                      //
//    (at your option) any later version.                                                    //
//                                                                                            //
//    Vendor System is distributed in the hope that it will be useful,                        //
//    but WITHOUT ANY WARRANTY; without even the implied warranty of                          //
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                          //
//    GNU General Public License for more details.                                            //
//                                                                                            //
//    To get a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.    //
////////////////////////////////////////////////////////////////////////////////////////////////
                       
string mailer_num;
default
    {
        link_message(integer sender_num, integer num, string msg, key id)
            {
                mailer_num = llGetScriptName();
                if (num == (integer)mailer_num)
                    {
                        llEmail(msg,"delivered", (string)num);
                     }
                     }
             }
             }
}</lsl>}}
}</lsl>}}

Latest revision as of 02:52, 8 April 2009

Copying Permission

Copyright © 2008 by Kristy Fanshaw

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

To get a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.

Pay Script for Reseller vendor

Updater Script for Reseller vendor

Server Script and Mailer Script for "Server Object"