CasperLet
CasperLet is a feature rich, stable, good looking rental network with very low resource usage.
Features
Here's a list of current features:
- A cool meter-style rent box, which looks pretty funky! It is designed to be rezzed on the ground, and has a popup prim for notices. It's designed mainly for land or store rentals.
- A regular old-fashioned 1-prim cube rental unit, which is maybe more suited for applications like stream rental (or areas where prim efficiency is very important)
- Only a single script. Of course.
- You can set "states" which will change the position, size and alpha transparency of the unit when rented and when not rented.
- Remaining rental time calculated accurately to the nearest second.
- Can accept payments of ANY amount. For example, if the cost is L$200 per week, they can pay L$100 and they get half a week instead.
- You can also configure the unit to ONLY accept amounts that cover 1 week, 2 weeks, 3 weeks and 4 weeks.
- Full web management, including some nice maps showing you where each unit is on the sim.
- Flashy new website
- You can disable reminder notifications, and so can the tenant for the duration of their rental by touching the unit.
- You can reserve a unit for somebody, so it will only allow them to rent
- The unit can be configured to auto-evict when the rental goes overdue.. this can be turned off, or configured to a set amount of time
- The unit can be locked to prevent any rentals
- You can give refunds pro-rata, so the remaining time is calculated and refunded
- You can evict, refund, rent out, reserve, set pricing, set the prim count, set the remaining time or lock the unit all from the web interface
- You can evict, refund or lock the unit from in-world by touching it
- The tenant can touch the unit to see their remaining time
- Anyone can touch the unit to see info on the pricing, etc
- The units may be linked/unlinked as you wish, and the prims retextured - fully modifiable
- The units provide full prim counts and will display a warning when the tenant is over limit
- Units for multiple avatars accross multiple grids can be added to the same account. Everything in one place.
- A detailed list of rental units grouped by either status, region or tenant
- You can set both a minimum and a maximum rental term.
- "Soft lock" - this allows you to prevent the unit from receiving any more payments, but keeps the unit rented.
- Transaction log - A detailed list of the transactions including money received
- An API to allow people to create third party plugins (signs, doors)
- A notecard can be delivered when a user touches the "Info" button
- A notecard can also be delivered when the user rents from the unit, or clicks the "Notecard" button whilst the unit is rented
- Free updates, forever, using our unique UpgradeBee system that will seamlessly update all the units on each sim you own with no effort to yourself.
- US Dollar payments, dynamically converted to the grid currency depending on the exchange rate
- Bulk configuration, i.e setting the price of every unit in one go
- Ability to assign more than one tenant to a unit.
- Managers - allow other users to manage your units safely
Coming soon..
We're adding new stuff every day. Some of the features we're currently working on are:
- Ability to ban certain users from being able to rent
- Group discount options
- Option to give X free time when they pay for a minimum of X time, and other discount options
These will be provided as free updates, of course!
Instructions
It's really, really easy!
Just rez the unit, then touch it and click "Config". It'll take you to the page where you can set the unit's options. For example, price, auto-evict. And that's about it!
You can click on "Map" on the website to get a nice overview of where all your units are in-world. I'm currently negotiating with melanie in Avination to try and persuade her to allow me to pull map images from the grid, but currently it only works in second life.
If you want to use prim counting, you need to also rez a "CasperLet Prim Counter".
You only need to rez one prim counter on your region, HOWEVER a prim counter can only count prims on parcels from the same owner. That means, if you have four parcels owned by yourself, and four parcels owned by the group, you will need two counters - one owned by you, one owned by the group (deeded).
If you like, you can move the script from this counter into one of your rent units (but not on group owned land, since the units can't be deeded).
I'm really convinced that you won't need any more instructions than this (when beta testing, i didn't provide any instructions to my testers and i didn't get one question!) However, if you get stuck i'm always happy to help.
Troubleshooting
Have the textures on your box stopped changing?
This is a common mistake - Please don't delete the "box@" text from the beginning of the description on your rental box.
The description should look like
box@your text here
You can put your own description where it says "your text here" but you must leave the box@ at the start.
This only applies to rental boxes, not the meters.
States
States allow you to get your box to change size / position when rented.
1. Make sure the unit is available (not rented).
2. Resize the prim and move it to where it should appear when available, and set the transparency as desired.
3. Touch the unit, click "States", then "Set Available".
4. Resize the prim, move it, and set transparency as desired in the "Rented" state.
5. Touch the unit. click "States" then "Set Rented".
6. Pay the unit to start a rental. This will store the settings.
Changing textures
Simply place textures in the prim contents with the appropriate name. For example, "TEX-available", "TEX-overdue", "TEX-rented", "TEX-overlimit", "TEX-locked" or "TEX-reserved". These textures MUST be FULL PERM.
Notecard delivery
Place two notecards into the prim contents, the names must end with "-Info" and "-Rented". The Info notecard is given when a user clicks Info in the menu, and Rented is given when a user rents. The user can also touch the unit and click Notecard to get the Rented notecard again.
API Documentation
V1 API
Here's the V1 API. This is supported by all CasperLET versions.
Our linked message is as follows: llMessageLinked(LINK_SET, (integer)timeLeft, "RTIME", rentedBy);
rentedBy is the key of the current renter, timeLeft is the amount of time left in seconds.
If rentedBy == NULL_KEY then it means there is no renter, and the unit is available.
You can detect rental events by storing the last message. If the last message was NULL_KEY, and then the next one isn't, it means that someone rented the unit, and vice versa.
V2 API
We've added another linked message which provides some more information. The format is as follows:
REXTR|
This information is also broadcasted on channel 77777.
We also provide an additional message which shows "additional tenants" which are renting from the unit.
the "string" value of the linked message will be ADDTNTS. The "key" value will be as follows:
userkey1#username1#userkey2#username2#userkey3#username3#userke.. (etc)
We also broadcast this information on channel 77777, as follows:
ADDTNTS@userkey1#username1#userkey2#username2#userkey3#username3#userke.. (etc) BUTTONS|pricebox|paybutton1|paybutton2|paybutton3|paybutton4 (to correspond with llSetPayPrice) TEXT|the floating text that is shown on the unit
Please pay specific attention to the @ instead of the | with ADDTNTS - Apologies for this difference, but it was necessary to avoid using pipe characters for backward compatibility.
As before, THERE IS NO GUARANTEE WHEN THE INFORMATION WILL BE SENT - So check for changes, rather than just reacting to the message.
In addition to this, the unit also accepts certain linked messages, as well as chat messages on channel -77777.
You can use these as follows:
llMessageLinked( LINK_THIS, AMOUNT_PAID, "CLAPI-PAY", PAYER_KEY ); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-PAY|"+(string)PAYER_KEY+"|"+(string)AMOUNT_PAID); // where KEY_OF_UNIT is the uuid of the rental box/meter
This provides a way to simulate payment to the unit.
BE WARNED: This WILL SIMULATE PAYMENT. Which means, if the payment is rejected, money will be REFUNDED.
llMessageLinked( LINK_THIS, AMOUNT_PAID, "CLAPI-SAFEPAY", PAYER_KEY ); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-SAFEPAY|"+(string)PAYER_KEY+"|"+(string)AMOUNT_PAID); // where KEY_OF_UNIT is the uuid of the rental box/meter
This provides a way to simulate payment to the unit, but WITHOUT any refunds, profit shares, or messages to the user.
llMessageLinked( LINK_THIS, 0, "CLAPI-UPDATE", NULL_KEY ); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-UPDATE"+KEY_OF_UNIT+"|UPDATE|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
This triggers the unit to spit out the linked messages and data on channel 77777. The integer can be any number.
llMessageLinked( LINK_THIS, 0, "CLAPI-Reset", NULL_KEY ); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Reset |"+NULL_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
This triggers the unit to reset. Please use this ONLY when absolutely necessary - if a unit restarts too often, it will be blocked from the network.
llMessageLinked( LINK_THIS, 0, "CLAPI-TOUCH", TOUCHER_KEY ); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-TOUCH|"+TOUCHER_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
This triggers the unit to give the user indicated by TOUCHER_KEY the standard dialog menu.
llMessageLinked( LINK_THIS, 0, "CLAPI-Info", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Info|"+USER_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the Info button, except it won't deliver the notecard.
llMessageLinked( LINK_THIS, 0, "CLAPI-TimeLeft", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-TimeLeft|"+USER_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the TimeLeft button
llMessageLinked( LINK_THIS, 0, "CLAPI-Evict", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Evict|"+USER_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the Evict button
llMessageLinked( LINK_THIS, 0, "CLAPI-Refund", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Refund|"+USER_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the Refund button
llMessageLinked( LINK_THIS, 0, "CLAPI-Prim Count", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Prim Count"+USER_KEY+"|"+ id +"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the Prim Count button
llMessageLinked( LINK_THIS, 0, "CLAPI-Won't Renew", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Won't Renew|"+USER_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the Won't Renew button
llMessageLinked( LINK_THIS, 0, "CLAPI-Reminders", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Reminders|"+USER_KEY+"|0" ); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the Reminders button
llMessageLinked( LINK_THIS, 0, "CLAPI-Lock/Unlock", USER_KEY); or llRegionSay( -77777, "CLAPI"+KEY_OF_UNIT+"-Lock/Unlock|"+USER_KEY+"|0"); // where KEY_OF_UNIT is the uuid of the rental box/meter
Please pay attention to the case of the command above.
This command is synonymous to the user indicated by USER_KEY pressing the Lock/Unlock button
IF YOU HAVE ANY FURTHER QUESTIONS PLEASE CONTACT CASPER WARDEN. MANY THANKS!!