CasperVend 2/Customisation: Difference between revisions

From CasperTech Wiki
Jump to navigation Jump to search
m (Added section for "no more products" texture customisation)
 
(93 intermediate revisions by 4 users not shown)
Line 2: Line 2:
   |__TOC__
   |__TOC__
   |}
   |}
[[File:German_flag.gif]] [[CasperVend 2/Customisation/DE | Schaue hier in Deutsch!]]


== '''<span style="color:#00528c">Technical Support</span>''' ==
= '''<span style="color:#00528c">Requirement - Experienced Builder </span>''' =
:* You must know how to build a "physical" item "from scratch".
:* This does '''not''' mean simply retexturing or combining full perm kit items.
:* You must know how to create and edit both objects and their contents.
:* You must be able to edit individual prims/objects in a linkset.


Owing to the fact that vendor customisation is an advanced topic which depends on a certain level of ability, we '''do not provide technical support for this process'''. The instructions below provide all the information you need to create your own vendor, however alternatively you can pay us to do it - see our '''[[CasperVend 2/Customisation Service|Customisation Service]]'''.
Vendor customisation is an advanced skillset that depends on you '''already''' having these experienced builder skills.  


== '''<span style="color:#00528c">Where Does the Script Go?</span>''' ==
Because this is a more advanced skillset, we do not provide technical support for this process beyond the scope of this docunentation.  
The vendor script (and thus the mapping helper script) must '''always''' be in the '''[http://wiki.secondlife.com/wiki/Link root prim]'''.  


Also, the panel that you expect the customer to pay on - to get the product - is the panel that should be part of the root prim. Otherwise, you '''will''' get script errors - the "pay" function of LSL only recognizes the root prim of a linkset.
=== Need to Learn Building Skills? ===
----
We highly recommend classes at the Builder's Brewery to increase your skillset
(see their class schedule at the '''[http://www.buildersbrewery.com/ Builder's Brewery website]''' or inworld at the '''[http://maps.secondlife.com/secondlife/Builders%20Brewery/128/193/23 Builders Brewery sim/region]''') if you wish to learn how to create and edit prims and their contents.


== '''<span style="color:#00528c">Offline / Back Soon Textures</span>''' ==
=== Have Custom Vendor But No Time to Map It? ===
Inside each vendor are two textures: "BACK_SOON" and "VENDOR_OFFLINE"  
----
   
We offer a customisation service - see '''[[CasperVend_2/Customisation_Service | this page]]''' for details.
Simply create two replacement textures, name the appropriate one with the appropriate name, Delete the old ones out of the vendor, and replace with the new. It's that easy!
 
= '''<span style="color:#00528c">Known Limitations</span>''' =
=== No HUD-based Vendors ===
----
LSL does not allow the "pay" function on HUD-based objects, so HUD-attached vendors will not work.
 
=== Where Do the Scripts Go? ===
----
# The vendor script (and thus the mapping helper script) must always be in the '''[http://wiki.secondlife.com/wiki/Link root prim.]'''
# The panel that you expect the customer to pay on - to get the product - should be part of the root prim. Otherwise, you will get script errors - the "pay" function of LSL only recognizes specified pay amounts (like the price of your product) when the script is in the root prim of a linkset.
 
=== Do Not Use in Furniture ===
----
The vendor script WILL reset itself any time the vendor is sat on, and anytime a sitting avatar stands up.
 
LSL reads all sitting avatars as a change to the relevant linkset, so sitting or standing up will force the script to reset and re-read the configuration.
 
It is important to note that the vendor will still WORK (a seated avatar is never "root"), but if it's resetting while a customer is attempting to pay the vendor, then that may confuse the customer and make them think your vendors are broken.
 
There are two workarounds for this:
:* Using the '''[[CasperVend_2/Holovendors | HoloVend]]''' to display furniture that is expected to be sat on. (This lets the customer sit on furniture, and you to save prims/impact. Win-win!)
:* Use regular vendors, and simply set one vendor next to each furniture item (or set) that you are selling.
 
=== Holovend Panel Limit of 7 Total Panels ===
----
 
Holovend, unlike the regular vendors, also performs rezzing, derezzing and timed functions. Because of this, and the CasperTech practice of only having 1 script per vendor, there isn't room in the script programming to safely handle more than the main panel + 6 additional panels (total of 7 panels).
 
If you choose to add more, you do so at your own risk - '''[[CasperVend_2/Customisation#Stack_Heap_errors | "Stack Heap"]]''' errors and vendor crashes will be common.
 
If Linden Lab actually increases the maximum filesize of a script, this will be revisited at that time.
 
= '''<span style="color:#00528c">Creating Your New Vendor</span>''' =
 
=== Mapping Your Vendor Object ===
----
# Create (or edit) your vendor object.
# If your new vendor object has more than one prim, give EACH PRIM its own unique name.
# Drop the '''Mapping Helper''' script into the root prim of the vendor object.
# Click the vendor object.
# Follow the instructions on the popup prompts.
 
It is '''CRITICALLY IMPORTANT''' to give each prim in a multi-prim vendor object a unique name because the mapping script essentially looks for "the face numbered ____ on the prim named ____" - if your vendor object's multiple prims are ALL named "object", your mapping will be very VERY confused and your custom vendor will NOT work properly!
 
You do '''not''' need one prim per face.
 
=== Selling Clothing? Difference Between "Touch" & "Headless" ===
----
'''HEADLESS:'''<br />Headless vendors are designed to be used in an object that is not normally a vendor - such as a plant, a table, or a chest of drawers. Thus, there is NO image called with the Headless' mapping card.
 
'''TOUCH:'''<br />Touch vendors are designed to be used as a simple box. The touch vendors DO use a picture, so space for one is required.
 
'''BOTH TYPES:'''<br />Both types DO have a popup menu that is accessible by clicking on the main panel for actions beyond just paying the vendor.
 
=== Single Item Vendor Types ===
----
All vendors - single or multi product - will rez out and '''by default''' will pull in what is called the "default" profile. However, the vendors in this list do not have arrows, and will need to be specifically told which single product you want to be shown on that vendor:
 
:* Touch vendor
:* Two-faced
:* Headless
:* Static
 
=== Making A Non-Vendor Object Into A Vendor ("Headless" Vendor) ===
----
# Take the vendor script AND "mapping" notecard out of the headless vendor into your inventory
# Drop the script and notecard from your inventory into your non-vendor product
# Click the object, and select "Admin"
# Log in to the website, if necessary
# You will be taken to the configuration page for that vendor product
# Change your options as desired
# All set!
# You will NOT see any images on any vendor object using the headless script - this is intentional.
 
'''Remember:''' All vendor objects NEED a mapping notecard - they will not function without it. You do NOT need to set up panels with the headless script, but the vendor script does need to know what faces to accept payments from.
 
=== Cube Vendors ("Touch" vendor boxes) ===
----
The touch vendor allows the customer to interact with different options by way of a click/touch popup menu instead of buttons on one of the visible faces. This means that the vendor can be in a "standard" box shape, with customers being able to interact with all sides of the vendor instead of only one or two sides of it.
 
The touch vendor is only designed to vend ONE product - so don't use a profile that has multiple items in it, because only one of them will be displayed. It has no way to scroll between items.
 
=== Pay All Sides of Cube Vendor ===
----
If you wish to use a vendor as a simple box/cube shape, and want customers to be able to PAY any side of the box, then make this simple change in the mapping card:
 
  '''Where it says:'''  __ROOT__,1,<0.0,0.0,1.0,1.0>
  '''Change it to:'''  __ROOT__,-1,<0.0,0.0,1.0,1.0>
 
= '''<span style="color:#00528c">Customising Vendor Textures</span>''' =
=== Offline / Back Soon Textures ===
----
Inside each vendor are two textures: "BACK_SOON" and "VENDOR_OFFLINE"


== '''<span style="color:#00528c">"No Product" Texture</span>''' ==
Simply create two replacement textures, name the appropriate one with the appropriate name, Delete the old ones out of the vendor, and replace with the new. It's that easy!
:# Place your texture into the contents of the vendor
:# Rename the texture to this:  7273cc74-2b6c-530f-293a-3af92422beae
:# Reset/resync the vendor so that it picks up the new texture.  


=== "No Product" Texture ===
----
This will allow YOUR customised "No Products" texture to be used rather than the default CasperTech one.
This will allow YOUR customised "No Products" texture to be used rather than the default CasperTech one.


You '''may''' need to reset the vendor for it to pick up your custom "no products" texture.
You may need to reset the vendor (click the vendor, select "reset" from the popup) for it to pick up your custom "no products" texture.
# Place your texture into the contents of the vendor
# Rename the texture to this: 7273cc74-2b6c-530f-293a-3af92422beae
# Reset/resync the vendor so that it re-reads the contents and picks up the new texture.
 
=== "No More Products" Texture ===
----
Similar to the "No Product" texture, this texture will only show if you're using a multi panel vendor with a group profile, and have "(V2.09 vendors only) Generate profile as 'pages' of" turned on without enough products to fill your panels.
 
This will allow YOUR customised "No More Products" texture to be used rather than the default CasperTech one.
 
You may need to reset the vendor (click the vendor, select "reset" from the popup) for it to pick up your custom "no products" texture.
# Place your texture into the contents of the vendor
# Rename the texture to this: a8b974af-fae5-ab18-3789-43f28edcc413
# Reset/resync the vendor so that it re-reads the contents and picks up the new texture.
 
 
=== "Initializing" Texture ===
----
This is not necessary, as it doesn't usually show for very long, but for consistency with the Offline and No Items textures, you can replace the Initializing texture as well.
# Place your texture into the contents of the vendor
# Rename the texture to this: 70fd1ef6-0877-c53a-4f34-45576f880d76
 
=== Texture (Button) Templates ===
----
Inside the vendor shipping crate is a box called "CUSTOMISATION GUIDE AND TOOLS". Inside THAT box is a box called "CasperVend2 Templates".
Inside that box are templates for the following things:
 
:* Standard / Mesh CasperTech CasperVend vendors
:* Gatcha templates
:* Lucky Chair templates
:* Midnight Madness template
:* Redelivery Terminal template
 
Templates for the Transporter are NOT currently (as of the last major update) in the shipping crate, but ARE available upon request from either Casper Warden or Sphynx Soleil - simply inquire within Second Life.
 
TextureVend templates are inside the TextureVend vendor itself, rather than the general "customisation guide and tools" box.
 
=== Texture Repeat Issues ===
----
If you are having issues getting the textures to repeat properly and in the correct orientation...
# First, fix the textures so that they have the correct repeats and orientation
# THEN, hard reset (Edit > Reset scripts in selection) the script
# Allow debit permissions.
 
Done in that order, resetting the script will force it to pick up the new orientation as correct one, instead of remembering the old incorrect one.
 
If you reset the vendor for this situation and (1) you did NOT get a debit perms popup, and (2) the vendor came up normally, then you used the wrong reset option.
 
Do '''NOT''' use "reset" on the popup if you are trying to fix the texture - use edit mode, then find the menu option in your viewer menus for "reset scripts in selection".
 
=== Animated Textures ===
*Not officially supported by CasperTech*
Ruthven Willenov has created a plug in for this on the [https://wiki.casperdns.com/index.php/Plug-Ins Plug-Ins Page]
 
= '''<span style="color:#00528c">Vendor Errors</span>''' =
=== Error Running Rule: Prim Texture ===
----
==== Clothing merchants and similar situations ====
----
Did you just take the MAPPING card out of a normal vendor and drop it in a normal box with a product picture already on it? (i.e., selling clothing)
 
If so, you need the MAPPING card from the '''HEADLESS''' vendor instead.
 
As long as the script came from a regular vendor (script is named just "'''CasperVend2'''"), that will be fine - it's the MAPPING notecard that makes a difference.


== '''<span style="color:#00528c">Difference Between "Touch" and "Headless" vendors?</span>''' ==
==== Customized vendor object from scratch ====
The "headless" vendor is designed to be used in an object - such as a houseplant or a table - that you would sell directly. These objects do NOT use vendor images, so the "headless" configuration does not call the picture for the product, ever.
----
You may see one, all, or some combination of these errors:


The "touch" vendor is designed for people want to use their vendor in use vendors in more general shapes - like boxes/cubes or other single-prim items - while still showing the vendor image on them.  
: '''rule #1 (PRIM_TEXTURE): arg #3 (texture repeat) is missing.'''
: '''rule #2 (PRIM_TEXTURE): arg #3 (texture repeat) vector expected but string given.'''
: '''rule #1 (PRIM_TEXTURE): arg #3 (texture repeat) vector expected but integer given.'''


Both types are designed to vend only '''ONE''' product.
Check every single prim in your vendor object. You quite likely have two or more with the same name (Usually it will be seen with "Object", but it depends on how you've named your prims.)


== '''<span style="color:#00528c">Touch Vendor</span>''' ==
Simply change the prim names so that no two prims in the vendor object have the same names, rerun the mapping script, and everything should be happy.
The touch vendor allows the customer to interact with different options by way of a click/touch popup menu instead of buttons on one of the visible faces. This means that the vendor can be in a "standard" box shape, with customers being able to interact with all sides of the vendor instead of only one or two sides of it.  


The touch vendor is only designed to vend ONE product - so don't use a profile that has multiple items in it, because only one of them will be displayed. It has no way to scroll between items.
=== Error Running Rule #2: Non-Integer Rule ===
----
If you have used the instructions for '''''"__ROOT__,-1,<0.0,0.0,1.0,1.0>"''''', the vendor WILL give you a <span style="color:#F00;">'''"llSetPrimitiveParams error running rule #2: non-integer rule."'''</span> message.  


'''MAPPING CARD'''<br />
The vendor '''WILL still function''' despite this error.
If you are using the touch vendor as a generic box/cube shape, and simply want customers to be able to '''PAY''' any side of the box, then you can either go through the mapping configuration, '''or''' make this simple change in the mapping card:
: '''Where it says:''' __ROOT__,1,<0.0,0.0,1.0,1.0>
: '''Change it to:''' __ROOT__,-1,<0.0,0.0,1.0,1.0>


''Touch-vendor-as-cube known error:  If you use the "__ROOT__,-1,<0.0,0.0,1.0,1.0>" trick, the vendor WILL give you a "llSetPrimitiveParams error running rule #2: non-integer rule." message. The vendor will STILL FUNCTION despite this error. Casper is aware of this and is looking into a fix.''
This will be normal until Casper tracks down why that happens and fixes it. (He is aware of the problem.)


== '''<span style="color:#00528c">Customising the Headless Vendor</span>''' ==
=== Stack Heap errors ===
The "Headless" vendor allows you to take the contents and drop them into one of your own objects - you can essentially turn one of your products into a vendor this way.
----
   
A stack heap error is '''not''' very common, but when it does, it generally will be for one of these two reasons:
If you ONLY want your objects to accept the "PAY" function without having menu or button options, simply drop the script in the object without a MAPPING notecard.


'''Caveat:''' This is not recommended for furniture that gets sat on - the vendor script will soft-reset anytime an avatar sits or unsits, since LSL sees it as a change in the linkset. We recommend the [[CasperVend_2/Holovendors | holovendors]] to display furniture instead.  
# '''Duplicate Prim Names:'''The customised vendor has more than one prim AND at least 2 prims have the exact same name. (This makes the script very confused)
# '''Too Much Data:''' You're using product names which are excessively long, especially on a vendor with 13 panels. (A single script only has so much memory....the longer the product names are - especially when you include the full store name as part of the product name - the more memory each product takes up.) For 13-panel vendors, this can happen with the default 13-panel that ships with the system as well as custom vendors.  


''Remember that "Headless" vendors can ONLY vend ONE product. Link them to products the same as you would as if you were using the 1-prim STATIC vendor.''
Any vendor in either of these situations may simply appear - to customers - "frozen" and be completely non-responsive, rather than giving anyone an obvious stack heap message. You may not get the error if you have script error messages disabled, or if you are offline when the error happens.
   
==== Making A Non-Vendor Object Into A Vendor ====


:# Take the vendor script AND "mapping" notecard out of the headless vendor into your inventory
=== Payment Stopped ===
:# Drop the script and notecard from your inventory into your product
----
:# Click the object, and select "Admin"
'''Payment stopped: The price paid does not match any of the pay buttons set for this object'''
:# Log in to the website, if necessary
:# You will be taken to the configuration page for that vendor product
:# Change your options as desired
:# All set!


'''Remember:''' All vendor objects NEED a mapping notecard - they will not function without it. You do NOT need to set up panels, but the vendor script does need to know that it can accept payments from all faces.
This occurs when a '''child prim''' of an object is right clicked and "paid", when the child prim contains - '''or used to contain''' - a vendor script or some other script which configures the pay buttons.


== '''<span style="color:#00528c">Example Vendor - "EasyMod"</span>''' ==
'''You must not link vendors together'''. CasperVend scripts must be in the ROOT PRIM only. However, even after you have removed the script from the child prim, you will still see the error, because the configuration is a property of the prim and not the script.


This is an example vendor set up just so that you can see the maximum possible buttons. Each prim in the vendor is labeled with the appropriate button name the script is looking for.
To fix this, drop the following script into the child prim of the vendor:
   
Included inside the EASYMOD vendor example are all the default button textures, as individual textures.


The "EasyMod" is NOT intended to actually be used AS a vendor - only as an example of the complete setup.
<syntaxhighlight lang="lsl" >
default
{
    state_entry()
    {
        llSetPayPrice(0,[]);
        llSay(0,"Pay configuration removed on prim");   
        llRemoveInventory(llGetScriptName());
    }
    money(key id, integer amount)
    {
       
    }
}
</syntaxhighlight>


<span style="color:#F00;">'''NOTE: The numbering on the prims of the EasyMod may not necessarily match the order of the mapping helper script panels. This is just a sample layout.'''</span>
On '''very rare''' occasions, if the viewer is giving the customer a different price than what you've set the pay buttons for, this error will also happen - but this will NOT happen with any sort of regularity, and other viewers which are reporting accurate pay button information will have no problem. See '''[https://jira.secondlife.com/browse/SVC-7170 this JIRA ticket for details.]'''


== '''<span style="color:#00528c">Name Your Prims!</span>''' ==
=== Vendor is Grey ===
----
If you have rezzed out your vendor and given it permissions but it turns grey, the common causes are:
:# Mapping card - redo if necessary
:# Profile vendor is set to has no products
:# Vendor is missing the "Vendor_Offline" texture


If you look at the "Easymod" example in edit mode, you'll notice that each of those prims has a different name. This is '''CRITICALLY IMPORTANT''' - because the mapping script essentially looks for "the face ____ on the prim named ____" - if of your customised vendor prims are ALL named "object" your mapping will be very VERY confused, and your custom vendor will NOT work properly!
'''Note:''' If scripts are off, OR the vendor has crashed, you will NOT get a debit window, any message, OR change in vendor textures. If you have muted yourself, you won't get a debit window or any message either, but you will see the textures change on a multi-panel vendor.


You do '''not''' need to have one prim per used face - as evidenced by the many primsaver type options in the Free / Premium packs and third party addons - however each prim that IS used, needs to have its own unique name.
= '''<span style="color:#00528c">Technical Notes & Background</span>''' =


== '''<span style="color:#00528c">Where Are the Texture Templates?</span>''' ==
This section is for '''background information only!'''
Inside the vendor shipping crate is a box called "CUSTOMISATION GUIDE AND TOOLS". Inside THAT box is a box called "CasperVend2 Templates". <br />
Inside '''that''' box are templates for the following things:
* Standard / Mesh CasperTech CasperVend vendors
* Gatcha templates
* Lucky Chair templates
* Midnight Madness template
* Redelivery Terminal template


Templates for the Transporter are NOT currently in the box, but ARE available upon request from either Casper Warden or Sphynx Soleil - simply inquire inworld.
=== About The EasyMod example Object ===
----
This is an example vendor set up just so that you can see the maximum possible buttons. Each prim in the vendor is labeled with the appropriate button name the script is looking for.


TextureVend templates are inside the TextureVend vendor itself.
Included inside the EASYMOD vendor example are all the default button textures, as individual textures.


== '''<span style="color:#00528c">Texture Repeat Issues?</span>''' ==
The "EasyMod" is '''NOT intended''' to actually be used AS a vendor - only as an illustrative example of the complete setup.


If you are having issues getting the textures to repeat properly and in the correct orientation...
<span style="color:#F00;">'''NOTE: The numbering on the prims of the EasyMod may not necessarily match the order of the mapping helper script panels. This is just an example layout.'''</span>
# First, fix the textures
# THEN, reset the script. That way the script will reset and pick up the new orientation as correct, instead of remembering the old.  


== '''<span style="color:#00528c">Using the "CasperVend Mapping Helper" Script</span>''' ==
=== About the Mapping Process ===
----
{{Critical|This is '''JUST AN OVERVIEW''' of the mapping script '''process''', and is presented only for informational purposes!


The "CasperVend Mapping Helper" script can be found in the vendor pack, inside the box called "Customisation Guide and Tools". Simply drop the mapping helper script into your vendor object and click to get the popup menu with the following options:
Do '''*NOT*''' use this as a guide to set up a MAPPING card!}}


: '''Reset'''  
: '''Reset'''  
Line 151: Line 320:
::: As with the texture panels above, just click "skip" on the options you're not using. (For example, not everyone uses the demo button.)  
::: As with the texture panels above, just click "skip" on the options you're not using. (For example, not everyone uses the demo button.)  
                  
                  
::: Yes, this can be used to customize buttons for a v2.x HoloVendor!  
::: Yes, this can be used to customize buttons for a HoloVendor!  


: '''Finish'''  
: '''Finish'''  
Line 167: Line 336:
All done!
All done!


== '''<span style="color:#00528c">FAQ / Troubleshooting</span>''' ==
= '''<span style="color:#00528c">FAQ / Troubleshooting</span>''' =
: '''Q. I just noticed setting my vendors to "offline" makes them all a flat grey colour - can I replace that with my own image?'''
: '''Q. If I stretch / resize my vendors, will they still work?'''
:: '''A.''' The vendors are going grey because you don't have the "VENDOR_OFFLINE" texture in the vendor. So yes, you can replace it with your own branded texture - they only went grey because there wasn't ANY texture by that name.  
:: '''A1.''' Yes, it doesn't matter what size the vendor is, as long as all the buttons map correctly.
 
:: '''A2.''' You can also change the shape, just remember to go through the instructions in the customization section to remap all the buttons and vendor image panels correctly.  
: '''Q. Can I change the "No product" texture to my own?''''
:: '''A.''' Yes you can! Place your texture into the contents of the vendor, and give it the name '''7273cc74-2b6c-530f-293a-3af92422beae'''. This will cause the vendor to use your texture rather than the CasperTech "no product" texture.


: '''Q. A vendor I'm setting up for a new profile has a quirk, each time I "touch" it, it tells me "(my vendor name): Touched" - and does not display the menu, just gives me that message. How do I fix this?'''  
: '''Q. A vendor I'm setting up for a new profile has a quirk, each time I "touch" it, it tells me "(my vendor name): Touched" - and does not display the menu, just gives me that message. How do I fix this?'''  
:: '''A.''' Look inside the vendor contents for a script named "New Script". The script that ships with the vendor will never be named this, so if there is a script named "New Script" it may safely be deleted. (You may have accidentally clicked "new script" - which creates a script that just tells you the object was touched.)  
:: '''A.''' Look inside the vendor contents for a script named "New Script". The script that ships with the vendor will never be named this, so if there is a script named "New Script" it may safely be deleted. (You may have accidentally clicked "new script" - which creates a script that merely tells you the object was touched.)  
 
: '''Q. Can the vendor be set up as a cube - a box, rather than a poster?'''
:: '''A.''' Rez the "Touch" vendor - that uses just a menu, so it can be re-shaped to be a box. You'll need to customise the texture mapping so that the product image is shown on all sides.
                            
                            
: '''Q. I want to use the "Headless" vendor script in my furniture, but it keeps resetting every time people sit on it!'''
:: '''A1.''' You may find it easier to use a HoloVendor for furniture, rather than the headless script.
:: '''A2.''' Alternately, you can use a regular vendor box near the furniture you have out.
: '''Q. Can I set the vendors to "Phantom"? '''     
: '''Q. Can I set the vendors to "Phantom"? '''     
:: '''A.''' Yes, and they will still work :)
:: '''A.''' Yes, and they will still work :)
: '''Q. I pulled out a new vendor / did custom mapping for this vendor and the buttons / panels / main panel aren't working / aren't giving me the popup menu.'''
:: '''A1.''' Generally, if a button or panel isn't working or responding, or you're unable to get a touch/popup menu on the main panel, then the mapping needs to be redone. You may have already custom mapped it, but something may have gotten "confused" in the copy/paste process going from the pastebin site to the notecard. If it hasn't been an hour yet you can just carefully re-copy the mapping information off the webpage.
:: '''A2.''' If you've gone through the mapping more than once on that vendor and it's still not working right, you will need to '''"Reset"''' the mapping script '''first''' before trying again.
: '''Q. I've copied the script and notecard from one of the box vendors into my own prims, but no matter what I do, everything ELSE works but there's never any picture.'''
::: '''A.''' Try the scripts from the "Touch" vendor rather than the "Headless" vendor. The "Headless" set is designed to be put into an object to be sold, like a dresser or a table, rather than a vendor box.
     
&nbsp;

Latest revision as of 14:04, 21 October 2018

Schaue hier in Deutsch!

Requirement - Experienced Builder

  • You must know how to build a "physical" item "from scratch".
  • This does not mean simply retexturing or combining full perm kit items.
  • You must know how to create and edit both objects and their contents.
  • You must be able to edit individual prims/objects in a linkset.

Vendor customisation is an advanced skillset that depends on you already having these experienced builder skills.

Because this is a more advanced skillset, we do not provide technical support for this process beyond the scope of this docunentation.

Need to Learn Building Skills?


We highly recommend classes at the Builder's Brewery to increase your skillset (see their class schedule at the Builder's Brewery website or inworld at the Builders Brewery sim/region) if you wish to learn how to create and edit prims and their contents.

Have Custom Vendor But No Time to Map It?


We offer a customisation service - see this page for details.

Known Limitations

No HUD-based Vendors


LSL does not allow the "pay" function on HUD-based objects, so HUD-attached vendors will not work.

Where Do the Scripts Go?


  1. The vendor script (and thus the mapping helper script) must always be in the root prim.
  2. The panel that you expect the customer to pay on - to get the product - should be part of the root prim. Otherwise, you will get script errors - the "pay" function of LSL only recognizes specified pay amounts (like the price of your product) when the script is in the root prim of a linkset.

Do Not Use in Furniture


The vendor script WILL reset itself any time the vendor is sat on, and anytime a sitting avatar stands up.

LSL reads all sitting avatars as a change to the relevant linkset, so sitting or standing up will force the script to reset and re-read the configuration.

It is important to note that the vendor will still WORK (a seated avatar is never "root"), but if it's resetting while a customer is attempting to pay the vendor, then that may confuse the customer and make them think your vendors are broken.

There are two workarounds for this:

  • Using the HoloVend to display furniture that is expected to be sat on. (This lets the customer sit on furniture, and you to save prims/impact. Win-win!)
  • Use regular vendors, and simply set one vendor next to each furniture item (or set) that you are selling.

Holovend Panel Limit of 7 Total Panels


Holovend, unlike the regular vendors, also performs rezzing, derezzing and timed functions. Because of this, and the CasperTech practice of only having 1 script per vendor, there isn't room in the script programming to safely handle more than the main panel + 6 additional panels (total of 7 panels).

If you choose to add more, you do so at your own risk - "Stack Heap" errors and vendor crashes will be common.

If Linden Lab actually increases the maximum filesize of a script, this will be revisited at that time.

Creating Your New Vendor

Mapping Your Vendor Object


  1. Create (or edit) your vendor object.
  2. If your new vendor object has more than one prim, give EACH PRIM its own unique name.
  3. Drop the Mapping Helper script into the root prim of the vendor object.
  4. Click the vendor object.
  5. Follow the instructions on the popup prompts.

It is CRITICALLY IMPORTANT to give each prim in a multi-prim vendor object a unique name because the mapping script essentially looks for "the face numbered ____ on the prim named ____" - if your vendor object's multiple prims are ALL named "object", your mapping will be very VERY confused and your custom vendor will NOT work properly!

You do not need one prim per face.

Selling Clothing? Difference Between "Touch" & "Headless"


HEADLESS:
Headless vendors are designed to be used in an object that is not normally a vendor - such as a plant, a table, or a chest of drawers. Thus, there is NO image called with the Headless' mapping card.

TOUCH:
Touch vendors are designed to be used as a simple box. The touch vendors DO use a picture, so space for one is required.

BOTH TYPES:
Both types DO have a popup menu that is accessible by clicking on the main panel for actions beyond just paying the vendor.

Single Item Vendor Types


All vendors - single or multi product - will rez out and by default will pull in what is called the "default" profile. However, the vendors in this list do not have arrows, and will need to be specifically told which single product you want to be shown on that vendor:

  • Touch vendor
  • Two-faced
  • Headless
  • Static

Making A Non-Vendor Object Into A Vendor ("Headless" Vendor)


  1. Take the vendor script AND "mapping" notecard out of the headless vendor into your inventory
  2. Drop the script and notecard from your inventory into your non-vendor product
  3. Click the object, and select "Admin"
  4. Log in to the website, if necessary
  5. You will be taken to the configuration page for that vendor product
  6. Change your options as desired
  7. All set!
  8. You will NOT see any images on any vendor object using the headless script - this is intentional.

Remember: All vendor objects NEED a mapping notecard - they will not function without it. You do NOT need to set up panels with the headless script, but the vendor script does need to know what faces to accept payments from.

Cube Vendors ("Touch" vendor boxes)


The touch vendor allows the customer to interact with different options by way of a click/touch popup menu instead of buttons on one of the visible faces. This means that the vendor can be in a "standard" box shape, with customers being able to interact with all sides of the vendor instead of only one or two sides of it.

The touch vendor is only designed to vend ONE product - so don't use a profile that has multiple items in it, because only one of them will be displayed. It has no way to scroll between items.

Pay All Sides of Cube Vendor


If you wish to use a vendor as a simple box/cube shape, and want customers to be able to PAY any side of the box, then make this simple change in the mapping card:

  Where it says:  __ROOT__,1,<0.0,0.0,1.0,1.0> 
  Change it to:  __ROOT__,-1,<0.0,0.0,1.0,1.0>

Customising Vendor Textures

Offline / Back Soon Textures


Inside each vendor are two textures: "BACK_SOON" and "VENDOR_OFFLINE"

Simply create two replacement textures, name the appropriate one with the appropriate name, Delete the old ones out of the vendor, and replace with the new. It's that easy!

"No Product" Texture


This will allow YOUR customised "No Products" texture to be used rather than the default CasperTech one.

You may need to reset the vendor (click the vendor, select "reset" from the popup) for it to pick up your custom "no products" texture.

  1. Place your texture into the contents of the vendor
  2. Rename the texture to this: 7273cc74-2b6c-530f-293a-3af92422beae
  3. Reset/resync the vendor so that it re-reads the contents and picks up the new texture.

"No More Products" Texture


Similar to the "No Product" texture, this texture will only show if you're using a multi panel vendor with a group profile, and have "(V2.09 vendors only) Generate profile as 'pages' of" turned on without enough products to fill your panels.

This will allow YOUR customised "No More Products" texture to be used rather than the default CasperTech one.

You may need to reset the vendor (click the vendor, select "reset" from the popup) for it to pick up your custom "no products" texture.

  1. Place your texture into the contents of the vendor
  2. Rename the texture to this: a8b974af-fae5-ab18-3789-43f28edcc413
  3. Reset/resync the vendor so that it re-reads the contents and picks up the new texture.


"Initializing" Texture


This is not necessary, as it doesn't usually show for very long, but for consistency with the Offline and No Items textures, you can replace the Initializing texture as well.

  1. Place your texture into the contents of the vendor
  2. Rename the texture to this: 70fd1ef6-0877-c53a-4f34-45576f880d76

Texture (Button) Templates


Inside the vendor shipping crate is a box called "CUSTOMISATION GUIDE AND TOOLS". Inside THAT box is a box called "CasperVend2 Templates". Inside that box are templates for the following things:

  • Standard / Mesh CasperTech CasperVend vendors
  • Gatcha templates
  • Lucky Chair templates
  • Midnight Madness template
  • Redelivery Terminal template

Templates for the Transporter are NOT currently (as of the last major update) in the shipping crate, but ARE available upon request from either Casper Warden or Sphynx Soleil - simply inquire within Second Life.

TextureVend templates are inside the TextureVend vendor itself, rather than the general "customisation guide and tools" box.

Texture Repeat Issues


If you are having issues getting the textures to repeat properly and in the correct orientation...

  1. First, fix the textures so that they have the correct repeats and orientation
  2. THEN, hard reset (Edit > Reset scripts in selection) the script
  3. Allow debit permissions.

Done in that order, resetting the script will force it to pick up the new orientation as correct one, instead of remembering the old incorrect one.

If you reset the vendor for this situation and (1) you did NOT get a debit perms popup, and (2) the vendor came up normally, then you used the wrong reset option.

Do NOT use "reset" on the popup if you are trying to fix the texture - use edit mode, then find the menu option in your viewer menus for "reset scripts in selection".

Animated Textures

  • Not officially supported by CasperTech*

Ruthven Willenov has created a plug in for this on the Plug-Ins Page

Vendor Errors

Error Running Rule: Prim Texture


Clothing merchants and similar situations


Did you just take the MAPPING card out of a normal vendor and drop it in a normal box with a product picture already on it? (i.e., selling clothing)

If so, you need the MAPPING card from the HEADLESS vendor instead.

As long as the script came from a regular vendor (script is named just "CasperVend2"), that will be fine - it's the MAPPING notecard that makes a difference.

Customized vendor object from scratch


You may see one, all, or some combination of these errors:

rule #1 (PRIM_TEXTURE): arg #3 (texture repeat) is missing.
rule #2 (PRIM_TEXTURE): arg #3 (texture repeat) vector expected but string given.
rule #1 (PRIM_TEXTURE): arg #3 (texture repeat) vector expected but integer given.

Check every single prim in your vendor object. You quite likely have two or more with the same name (Usually it will be seen with "Object", but it depends on how you've named your prims.)

Simply change the prim names so that no two prims in the vendor object have the same names, rerun the mapping script, and everything should be happy.

Error Running Rule #2: Non-Integer Rule


If you have used the instructions for "__ROOT__,-1,<0.0,0.0,1.0,1.0>", the vendor WILL give you a "llSetPrimitiveParams error running rule #2: non-integer rule." message.

The vendor WILL still function despite this error.

This will be normal until Casper tracks down why that happens and fixes it. (He is aware of the problem.)

Stack Heap errors


A stack heap error is not very common, but when it does, it generally will be for one of these two reasons:

  1. Duplicate Prim Names:The customised vendor has more than one prim AND at least 2 prims have the exact same name. (This makes the script very confused)
  2. Too Much Data: You're using product names which are excessively long, especially on a vendor with 13 panels. (A single script only has so much memory....the longer the product names are - especially when you include the full store name as part of the product name - the more memory each product takes up.) For 13-panel vendors, this can happen with the default 13-panel that ships with the system as well as custom vendors.

Any vendor in either of these situations may simply appear - to customers - "frozen" and be completely non-responsive, rather than giving anyone an obvious stack heap message. You may not get the error if you have script error messages disabled, or if you are offline when the error happens.

Payment Stopped


Payment stopped: The price paid does not match any of the pay buttons set for this object

This occurs when a child prim of an object is right clicked and "paid", when the child prim contains - or used to contain - a vendor script or some other script which configures the pay buttons.

You must not link vendors together. CasperVend scripts must be in the ROOT PRIM only. However, even after you have removed the script from the child prim, you will still see the error, because the configuration is a property of the prim and not the script.

To fix this, drop the following script into the child prim of the vendor:

default
{
    state_entry()
    { 
        llSetPayPrice(0,[]); 
        llSay(0,"Pay configuration removed on prim");    
        llRemoveInventory(llGetScriptName()); 
    }
    money(key id, integer amount) 
    {
        
    }
}

On very rare occasions, if the viewer is giving the customer a different price than what you've set the pay buttons for, this error will also happen - but this will NOT happen with any sort of regularity, and other viewers which are reporting accurate pay button information will have no problem. See this JIRA ticket for details.

Vendor is Grey


If you have rezzed out your vendor and given it permissions but it turns grey, the common causes are:

  1. Mapping card - redo if necessary
  2. Profile vendor is set to has no products
  3. Vendor is missing the "Vendor_Offline" texture

Note: If scripts are off, OR the vendor has crashed, you will NOT get a debit window, any message, OR change in vendor textures. If you have muted yourself, you won't get a debit window or any message either, but you will see the textures change on a multi-panel vendor.

Technical Notes & Background

This section is for background information only!

About The EasyMod example Object


This is an example vendor set up just so that you can see the maximum possible buttons. Each prim in the vendor is labeled with the appropriate button name the script is looking for.

Included inside the EASYMOD vendor example are all the default button textures, as individual textures.

The "EasyMod" is NOT intended to actually be used AS a vendor - only as an illustrative example of the complete setup.

NOTE: The numbering on the prims of the EasyMod may not necessarily match the order of the mapping helper script panels. This is just an example layout.

About the Mapping Process


This is JUST AN OVERVIEW of the mapping script process, and is presented only for informational purposes! Do *NOT* use this as a guide to set up a MAPPING card!
Reset
This wipes any configuration you've done up to that point
Textures
There are 13 possible texture displays on a vendor, and this option walks you through selecting which display is which. If you're having trouble visualising the usual order of these buttons, rez out the "EasyMod" from the Customisation box and look at how the prims are named. (use Edit > Linked Parts if necessary).
You do not need to be in "edit" mode to do this step - being in edit mode means you have to right-click, THEN "touch" as opposed to just clicking the prim.
The script will ask you to tell it the faces of the display panels. So that you know ahead of time, it is looking for this information in the following order:
  1. Left panel six
  2. Left panel five
  3. Left panel four
  4. Left panel three
  5. Left panel two
  6. Left panel one
  7. Main texture panel
  8. Right panel 1
  9. Right panel 2
  10. Right panel 3
  11. Right panel 4
  12. Right panel 5
  13. Right panel 6
If you want to use all sides of a prim for one or more of those faces, then click "ALL SIDES" on the popup menu, BEFORE clicking the prim. It will give you another popup once it's processed the "ALL SIDES" selection and is ready for you to click the prim.
You WILL be having popup dialogues for each step. The one for the current step will always be on top - ignore the ones that are left up from earlier. It is NOT required to click "ok" or "ignoree" on the popups menus before proceeding to the next step but you can if you want to. (LSL doesn't allow self-closing of popup menus.)
Just click "skip" for the display panels you're not using. If you're using a simple one-prim, one-item vendor, then just use "skip" on everything BUT the "Main Texture Panel".
Buttons
This maps the clickable button areas from TOP LEFT to BOTTOM RIGHT, in the following order:
  1. Page Left
  2. Scroll Left
  3. Admin Button
  4. Search Button
  5. Help Button
  6. Demo Button
  7. Gift Button
  8. Scroll Right
  9. Page Right
  10. Rez
As with the texture panels above, just click "skip" on the options you're not using. (For example, not everyone uses the demo button.)
Yes, this can be used to customize buttons for a HoloVendor!
Finish
This does two things: (1) Sends the configuration to a code pasting site, and (2) gives you the link to the page it went to so you can copy it. Remember this link is valid for just one hour so if you get distracted and it expires, you'll have to do the configuration all over again.

Copy the configuration file from pastebin into a notecard and drop it in your vendor.

NOTE:
MAPPING notecards should have 37 lines for a normal vendor, and 38 lines for a holovendor. If you generated one that is longer or shorter than this, tell the mapping helper script to "reset" and go through the process again.

Delete the mapping helper script from the vendor once everything else is complete

Copy the MAPPING list from the pastebin site into a notecard and drop it in the vendor.

All done!

FAQ / Troubleshooting

Q. If I stretch / resize my vendors, will they still work?
A1. Yes, it doesn't matter what size the vendor is, as long as all the buttons map correctly.
A2. You can also change the shape, just remember to go through the instructions in the customization section to remap all the buttons and vendor image panels correctly.
Q. A vendor I'm setting up for a new profile has a quirk, each time I "touch" it, it tells me "(my vendor name): Touched" - and does not display the menu, just gives me that message. How do I fix this?
A. Look inside the vendor contents for a script named "New Script". The script that ships with the vendor will never be named this, so if there is a script named "New Script" it may safely be deleted. (You may have accidentally clicked "new script" - which creates a script that merely tells you the object was touched.)
Q. Can I set the vendors to "Phantom"?
A. Yes, and they will still work :)