Difference between revisions of "Rental Script"

From Second Life Wiki
Jump to navigation Jump to search
(Replacing page with 'Hello,Im Lexie Nightfire Know As (SLEXCHANGEDTB NIGHTFIRE)')
 
Line 1: Line 1:
Rental Script...
Hello,Im Lexie Nightfire Know As (SLEXCHANGEDTB NIGHTFIRE)
list splitwith;
list splitname;
string ownername;
integer not_registered = TRUE;
vector original_location;
vector original_scale;
integer objects = 25; // objects
integer price = 350; // price
integer weeks = 1; // weaks
vector offset = <0, 0, 2>;
integer mature = 0;
string rentor;
string rentorkey;
integer rented = FALSE;
string rentperiod;
integer numListen;
integer randchannel;
integer editmode;
integer stopper;
string daterented;
integer rentedweeks;
integer timerevent;
 
default
{
    on_rez(integer change)
    {
    llInstantMessage(llGetOwner(),"for help click item then select help from menu");
        llSetTexture("rentit", ALL_SIDES);
       
        llListen(0,"","","");
        randchannel = (integer)llFrand(10000000);
        llListen(randchannel,"","","");
        editmode = 0;
        timerevent = 0;
        rented == FALSE;
        }
    listen(integer c, string n, key id, string m)
    {
        stopper = 0;
        string objectname;
        objectname = llGetObjectName();
        if (m == "Vacent" && c == randchannel && id == llGetOwner() && rented == TRUE)
        {
            llSetTexture("rentit", ALL_SIDES);
            llSetPos(original_location);
            llSetScale(original_scale); 
            llListenRemove(numListen);
            numListen = llListen(0, "", "", "" ); 
            rentperiod = "";
            rentor = "";
            rentorkey = NULL_KEY;
            rented = FALSE;
            daterented = "";
            rentedweeks = 0;
            timerevent = 0;
            llSetTimerEvent(0);
            llSay(0, objectname + " is vacent");
        }
        if (m == "Mature" && c == randchannel && id == llGetOwner())
        {
        mature = 1;
        llSay(0,"set to Mature Area");
        }
        if (m == "Renter info" && c == randchannel && id == llGetOwner())
        {
        integer weeks2;
    weeks2 = timerevent / 7 / 24 / 60 / 60;
    integer days;
    days = timerevent / 24 / 60 / 60 - (weeks2 * 7);
    integer hours;
    hours = timerevent / 60 / 60 - (weeks2 * 7 * 24) - (days * 24);
    integer mins;
    mins = timerevent / 60  - (weeks2 * 7 * 24 * 60) - (days * 24 * 60) - (hours * 60);
    integer seconds;
    seconds = timerevent - (weeks2 * 7 * 24 * 60 * 60) - (days * 24 * 60 * 60) - (hours * 60 * 60) - (mins * 60);
        llInstantMessage(llGetOwner(),"Renter name: " + rentor);
        llInstantMessage(llGetOwner(),"Rented Date: " + daterented);
        llInstantMessage(llGetOwner(),"Rented Left: " + (string)weeks2 + " weeks | " + (string)days + " days | " + (string)hours + ":" + (string)mins + ";" +(string)seconds);
        if (rentedweeks >= 2)
        {
        llInstantMessage(llGetOwner(),"Rented amount: " + (string)rentedweeks + " weeks");
        }
        if (rentedweeks == 1)
        {
        llInstantMessage(llGetOwner(),"Rented amount: " + (string)rentedweeks + " week");
        }
        if (rentedweeks <= 0)
        {
        llInstantMessage(llGetOwner(),"Rented amount: N/A");
        }
        }
        if (m == "PG" && c == randchannel && id == llGetOwner())
        {
        mature = 0;
        llSay(0,"set to PG Area"); 
        }
        if (m == "Status" && c == randchannel && id == llGetOwner())
        {
            string mit;
        llInstantMessage(llGetOwner(),"Prim's set to " + (string)objects);
        llInstantMessage(llGetOwner(),"Week's set to " + (string)weeks);
        llInstantMessage(llGetOwner(),"Offset set to " + (string)offset);           
        if (mature == 1)
        {
          mit = "Yes";
            }
            else
            {
              mit = "No"; 
            }
        llInstantMessage(llGetOwner(),"Regen Mature: " + (string)mit);
        }
        if(m == "Edit Mode" && editmode == 0 && stopper == 0 &&  c == randchannel && id == llGetOwner())
        {
        stopper = 1;
        editmode = 1;
        llInstantMessage(llGetOwner(),"editmode on");
        }
        if(m == "Edit Mode" && editmode == 1 && stopper == 0 && c == randchannel && id == llGetOwner())
        {
        stopper = 1;
        editmode = 0;
        llInstantMessage(llGetOwner(),"editmode off");
        }
       
        if (m == "Help" && c == randchannel && id == llGetOwner())
        {
        llGiveInventory(llGetOwner(), "Rentals Help");
        }
        if (llGetSubString(m,0,8) == "set weeks" && id==llGetOwner()  && editmode == 1)
        {
        weeks = (integer)llGetSubString(m,9,llStringLength(m));
        llSay(0,"weeks set to " + (string)weeks); 
        }
        if (llGetSubString(m,0,10) == "set renter " && id==llGetOwner()  && editmode == 1)
        {
        rentor = llGetSubString(m,11,llStringLength(m));
        llSay(0,"renter set to " + rentor); 
        }
        if (llGetSubString(m,0,9) == "set split " && id==llGetOwner()  && editmode == 1)
        {
        key id = (key)llGetSubString(m,10,llStringLength(m));
        splitwith += id;
        splitname += llKey2Name(id);
        llSay(0,llKey2Name(id) + " added to split with list"); 
        }
        if (llGetSubString(m,0,12) == "split remove " && id==llGetOwner()  && editmode == 1)
        {
        string name = llGetSubString(m,13,llStringLength(m));
        integer finddata = llListFindList(splitname,(list)name);
        if(finddata == -1)
        {
        llSay(0,"sorry " + name + " not found"); 
        }else
        {
        llDeleteSubList(splitwith,finddata,finddata);
        llDeleteSubList(splitname,finddata,finddata);
        llSay(0,name +" removed from shared list");
        }
        }
        if (llGetSubString(m,0,13) == "set rentedfor " && id==llGetOwner()  && editmode == 1)
        {
        string date = llGetTimestamp();
        daterented = llGetSubString(date,8,9) + "/" + llGetSubString(date,5,6) + "/" + llGetSubString(date,0,3) + " | Time " + llGetSubString(date,11,15);
        original_scale = llGetScale();
        original_location = llGetPos();
        list renttime = llParseStringKeepNulls(llGetSubString(m,14,llStringLength(m)), [":"], []);
        integer days = llList2Integer(renttime,0);
        integer hours = llList2Integer(renttime,1);
        integer minites = llList2Integer(renttime,2);
        integer seconds = llList2Integer(renttime,3);
        integer total;
        total = (days * 24 * 60 * 60) + (hours * 60 * 60) + (minites * 60) + (seconds);
        llSetTexture("info", ALL_SIDES);
        llSetPos(original_location + offset);
        llSetScale(<0.236,0.236,0.236>);
        timerevent = total;
        llSetTimerEvent(1);
        llWhisper(0,"set to " + (string)days + " days " + (string)hours + " hours " + (string)minites + " mins " + (string)seconds + " seconds");
        rented = TRUE;   
        }
        if (llGetSubString(m,0,10) == "set offset " && id==llGetOwner()  && editmode == 1)
        {
        offset = (vector)llGetSubString(m,11,llStringLength(m));
        llSay(0,"Offset set to " + (string)offset); 
        }
        if (llGetSubString(m,0,8) == "set prims" && id==llGetOwner() && editmode == 1)
        {
        objects = (integer)llGetSubString(m,9,llStringLength(m));
        llSay(0,"Prims set to " + (string)objects); 
        }
        if (llGetSubString(m,0,8) == "set price" && id==llGetOwner() && editmode == 1)
        {
        price = (integer)llGetSubString(m,9,llStringLength(m));
        llSay(0,"Price set to L$" + (string)price); 
        }
       
    }
    state_entry()
    {
        editmode = 0;
        randchannel = (integer)llFrand(10000000);
        llWhisper(0, "Activating...");
        ownername = llKey2Name(llGetOwner());
        llWhisper(0, "Asking for permission from owner " + ownername + ".");       
        llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);       
        original_location = llGetPos();
        original_scale = llGetScale();
        llListenRemove(numListen);
        rentedweeks = 0;
        numListen = llListen(0, "", "", "" );
        llListen(randchannel,"","","");
        timerevent = 0; 
    }
 
    run_time_permissions(integer type)
    {
        if (type == PERMISSION_DEBIT)
        {
            ownername = llKey2Name(llGetOwner());
            llWhisper(0, "This space is now available for rent."); 
            not_registered = FALSE;
        }
    }
   
    timer() {
        timerevent--;
        if (timerevent != 0)
        { 
        }
        else
        {
        if(rentorkey != NULL_KEY)
        {
        llInstantMessage(rentorkey,"Your rental at " + llGetRegionName() + " has expired");
        }
        llSay(0,"rental expired");
        string objectname;       
        objectname = llGetObjectName();
        llSetTexture("rentit", ALL_SIDES);
        llSetPos(original_location);
        llSetScale(original_scale);       
        numListen = llListen(0, "", "", "" ); 
        rentperiod = "";
        rentor = "";
        rentorkey = NULL_KEY;
        daterented = "";
        rentedweeks = 0;
        rented = FALSE;
        timerevent = 0;
        llSetTimerEvent(0);       
    }
}
   
    touch_start(integer total_number)
    {
    if(llDetectedKey(0) == llGetOwner())
   
    {
    string edit;
    if (editmode == 0)
    {
    edit = "off";
    }
    if (editmode == 1)
    {
    edit = "on"; 
    }
    llDialog(llGetOwner(),"vender editor \n editmode is set to: " + edit,["Mature","PG","Vacent","Edit Mode","Renter info","Help","Status"],randchannel);
}
else
{
        if(rented == FALSE)
        {
        llWhisper(0, "This space is for rent. The price is $" +(string)price+ " per week. Prim limit is "+(string)objects+" prims. Obey prim limits to avoid termination of agreement. Rent is non-refundable.");
        if (mature == 1)
        {
        llWhisper(0, "Usage Restrictions:  This spot is for comercial use.  Keep within prim limits or face termination of lease.");
} else
{
llWhisper(0, "Usage Restrictions:  This spot is for comercial use.  Keep within prim limits or face termination of lease.  Keep To PG Rules as in PG Sim");
}
       
        llWhisper(0, "Right click and pay to rent this space. Minimum rental period is "+(string)weeks+" weeks, at $" +(string)(price*weeks)+". If you have any questions, please feel free to IM " + ownername + ". For Help please IM " + ownername + ".");
        }
        else
        {
        integer weeks2;
    weeks2 = timerevent / 7 / 24 / 60 / 60;
    integer days;
    days = timerevent / 24 / 60 / 60 - (weeks2 * 7);
    integer hours;
    hours = timerevent / 60 / 60 - (weeks2 * 7 * 24) - (days * 24);
    integer mins;
    mins = timerevent / 60  - (weeks2 * 7 * 24 * 60) - (days * 24 * 60) - (hours * 60);
    integer seconds;
    seconds = timerevent - (weeks2 * 7 * 24 * 60 * 60) - (days * 24 * 60 * 60) - (hours * 60 * 60) - (mins * 60);
        llWhisper(0, "This space is occupied by " + rentor + " for " + (string)weeks2 + " weeks | " + (string)days + " days | " + (string)hours + ":" + (string)mins + ";" +(string)seconds);
       
        llWhisper(0, "Max prims is " + (string)objects + ". For help please IM " + ownername + ".");
        }
    }
    }
   
    money(key giver, integer amount)
    {
        integer amount2 = amount%price;
        integer weeks = amount/price;
        if(amount>=price*weeks && amount2==0 && rented == FALSE)
        {
            rentedweeks = amount/price;
            string date = llGetTimestamp();
            daterented = llGetSubString(date,8,9) + "/" + llGetSubString(date,5,6) + "/" + llGetSubString(date,0,3) + " | Time " + llGetSubString(date,11,15);
            original_scale = llGetScale();
            original_location = llGetPos();
            timerevent = 604800*weeks;
            //vector offset = <-2, 0, -1>;
            llWhisper(0, "Correct amount");
            rentor = llKey2Name(giver);
            rented = TRUE;
            rentperiod = (string)weeks;
            llWhisper(0, "Prim limit is "+(string)objects+" prims.");
            llWhisper(0, "Keep prim limits or risk termination of agreement.Rent is non-refundable. IM " + ownername + " with questions.");
            llWhisper(0, "Thank you for renting this space . Thank You For Purchasing "+(string)weeks+" weeks . Feel Free To Put Your stuff in now");
            llSetTexture("info", ALL_SIDES);
            llSetPos(original_location + offset);
            llSetScale(<0.236,0.236,0.236>);
            rentorkey = giver;
            llSetTimerEvent(1);
            if(splitwith != [])
            {
            integer devide = llGetListLength(splitwith) + 1;
            integer totatogive = amount/devide;   
            integer no;
            while(no < llGetListLength(splitwith))
            {
            key dest = llList2Key(splitwith,no);
            llGiveMoney(dest,totatogive);
        llInstantMessage(dest,"you have bee payed L$"+ (string)totatogive +" by " + llGetObjectName());
            no ++;
            }
            }
        }
        else if(rented == TRUE)
        {
            if (llKey2Name(giver) == rentor && amount>=price*weeks && amount2==0)
            {     
            timerevent += (604800*weeks);
            llSay(0, "you have incresed your rental by " + (string)weeks + " weeks");
            rentedweeks += weeks;
            if(splitwith != [])
            {
            integer devide = llGetListLength(splitwith) + 1;
            integer totatogive = amount/devide;   
            integer no;
            while(no < llGetListLength(splitwith))
            {
            key dest = llList2Key(splitwith,no);
            llGiveMoney(dest,totatogive);
        llInstantMessage(dest,"you have bee payed L$"+ (string)totatogive +" by " + llGetObjectName());
            no ++;
            }
            }
        }
            else
            {
            llGiveMoney(giver, amount);
            llSay(0,"sorry please check rental");
            }
       
        }
       
        else
        {
            llWhisper(0, "Minimum rental period is "+(string)weeks+" weeks, at $" +(string)(price*weeks)+ ". If you have any questions, please feel free to IM" + ownername + ".");
            llWhisper(0, "Giving money back.");
            llGiveMoney(giver, amount);
        }
    }
}

Latest revision as of 08:41, 28 April 2008

Hello,Im Lexie Nightfire Know As (SLEXCHANGEDTB NIGHTFIRE)