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

From Second Life Wiki
Jump to navigation Jump to search
(This page misses server script)
 
(7 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 96: Line 96:
             {
             {
                 llResetScript();
                 llResetScript();
            }
    }
state sens1
    {
        state_entry()
            {
                state sens;
             }
             }
     }
     }
Line 114: Line 121:
             {
             {
                 url = message;
                 url = message;
                llListenRemove(listen_handle);
                 llOwnerSay("updated");
                 llOwnerSay("updated");
                 llShout(Ch,"updated");
                 llShout(Ch,"updated");
Line 122: Line 128:
             {
             {
                 llListenRemove(listen_handle);
                 llListenRemove(listen_handle);
                 state sens;
                 state sens1;
             }
             }
         no_sensor ()
         no_sensor ()
Line 148: Line 154:
             }   
             }   
     }  
     }  
state Ready1
    {
        state_entry()
            {
                state Ready;
            }
    }
state Ready
state Ready
     {
     {
Line 167: Line 180:
             {
             {
                 url = message;
                 url = message;
                llListenRemove(listen_handle);
                 llOwnerSay("updated");
                 llOwnerSay("updated");
                 llShout(Ch,"updated");
                 llShout(Ch,"updated");
Line 199: 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 255: 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 315: 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"