Saturday, August 20, 2016
AlphaVend r745 is now available. This is a bugfix and feature update with a variety of changes.
As always, to update a vendor you simply rez or wear the Updater Disk, and then either (A) click the vendor and select "Upgrade" from the menu, or (B) click the updater disk and select "Upgrade All" to upgrade every vendor on the region. Plugins are updated via a separate disk, the "- AlphaVend Plugins Updater".
Updating Note: The updater disk has had some reliability improvements made to it, and of particular note I fixed an issue that made it fail to update scripts located in a child prim, which prevented the rezzer and bot model plugins from being updated in previous updates. In addition, I uncovered a grid issue with how listener handles are assigned, which could cause some vendors to fail to respond to the updater disk, due to the listener having been removed.
- If the main vendor scripts fail to update, then simply reset the vendor script and try again.
- If the rezzer or bot model plugins fail to update, then copy the relevant scripts out of the updater disk, and manually place them into their pad (make sure to use edit link parts).
General Features & Improvements
- The slideshow prim will now advance to the next slide if it is clicked, meaning that you do not need a separate button in order to advance it.
- Added a new PRELOAD_SLIDES setting. If enabled, it will preload the first slide texture for each product (if any) by setting it onto the back of the smaller product panels. Alternatively, by rotating the small panels 180 degrees so that the back is facing front, you can use this feature to have an alternative texture for the smaller product panels.
- The shopper lock will now automatically release if the shopper moves far enough away from the vendor. The distance they need to move from the vendor is equal to X + 20, where X is the initial distance between the vendor and the shopper when the lock engages. So, if a shopper is standing 5 meters away from a vendor when they first interact, and then moves further than 25 meters away (5+20=25), then the shopper lock will automatically disengage.
- When this occurs, the vendor will still be focused on the last item browsed.
- The "Test Comms" function in the owner menu will now notify you if either the -AV COM script is missing, or if you have not set an email address in the -SETTINGS notecard.
- Particle preloaders, which are used to preload the textures for the next page or next slide, can now be turned off if desired, by changing PARTICLE_PRELOADERS in the -SETTINGS notecard to "no", without the quotes
- Particle preloaders will also turn off automatically if there is only one page worth of products or less, or if there are no avatars within 64 meters. Bots are not included in this count.
- There is now a "Vendor Loading" texture, displayed when the vendor is loading up its products
- AlphaVend can now run without a -SETTINGS notecard. When no -SETTINGS notecard is present, it will instead use its internal defaults. Be warned that you will not receive emails if you do this.
- Several optimizations under the hood to reduce memory usage
- Implemented a workaround for a Phlox issue, where the handle numbers for removed listeners were being reused. This should fix a rare issue with the vendor either failing to respond to owner commands or failing to respond to the updater disk.
General Fixes & Corrections
- Applied a fix to the updater disk that prevented it from being able to update plugin scripts if they were placed in a child prim. This fixes a bug that prevented the rezzer and bot model plugins from updating.
- When specifying a splitpay partner by name, the vendor would not discard the splitpay partner's information if the name was invalid.
- Added a workaround for a bug where state_exit would not fire, preventing cleanup code from running after purchases and potentially causing issues.
- Fixed an issue where current product info would not be refreshed when the vendor's shopper lock expired by timer. This could cause the wrong price to remain showing, if the last shopper was eligible for discount.
- The vendor was sending incorrect messages when shoppers attempted to use a vendor that was configured as group-only
- The PARTNER_DETAIL setting was incorrectly set to FALSE as the internal default.
- When a product fails to be delivered because its perms do not allow transfer, the vendor will now give you the name of the person who tried to buy it.
- The Ping Server command on networked vendors was not giving output like it was supposed to.
- Some needless llSleep calls were removed or reduced, making vendor startup slightly faster.
- Changed how the networking product server re-registers itself with the external host. It will now re-register the current URL instead of needlessly discarding it in favor of a new one, and it will do so every 14 days rather than every 7 days.
- In the previous update, the network script was coded to sleep for 4 seconds during an update to prevent the main script from being redundantly restarted. This delay has been removed, since it was made unnecesary by a later change to the main script. This will make vendors start up quicker after an update
- The server was not indicating the names of products and buyers or gift recipients when deliveries failed due to either (A) the product's perms not allowing transfer, or (B) because the recipient had muted either you or the server.
- The vendor API has been extended with a new API message, FORCE_PING, which can be used to force the network plugin to ping the server. The network plugin will return PING_RESULT, a new API message which returns the status code of the ping.
- The server will apply a 10 second delay to its check-in times for automatic resyncing, url re-registration, and url expiration whenever it receives a valid HTTP request. This is to prevent an edge case where the server may suddenly become busy the moment a transaction happens. The delay is only applied if the check-in times would arrive within the next 10 seconds, so it won't endlessly delay them through normal operations.
- The network plugin was coded to ping the server whenever the shopper lock API signal is sent. Because it is sent redundantly, the network plugin has been adjusted to not ping the server as a result of that signal more than once in 30 seconds. This is in order to reduce HTTP traffic.
- Networked vendors will now ping the server before each transaction is processed. This change has no functional difference, but will make some future planned changes easier to implement.
- When being upgraded, networked vendors will suppress the resync and download completion messages, in order to reduce the amount of text output during upgrades.
- The LiteRezzer package included with the rezzer plugin's box has been updated to version 1.14
- The Rezzer plugin now queries the vendor's current product on startup like it was supposed to. This fixes an issue where rezzing fails immediately after resetting or upgrading the rezzer plugin.
- The Rezzer plugin can now check if the parcel or region has enough free Land Impact in order to rez with. Using this feature will require you to replace the recorder scripts or the literezzer scripts in the build pieces, and package them into a new RRC. However, if your rezzers have been working just fine, then there is no pressing need to upgrade.
- The Rezzer plugin now supports a radius setting, which will make it derez the demo'ed build if there are no avatars nearby. Bots will not be counted by this. The radius feature can be used by adding CUSTOM:REZZER_RADIUS=X to the -SETTINGS notecard, with X being the desired radius. The radius has a minimum value of 16 meters, and is centered on the rezzer pad.
- A secondary radius is checked, equal to 8, plus the distance between the rezzer pad and whomever activated the rezzer. This is to prevent a build from instantly derezzing because the shopper was outside the radius to begin with.
- I submitted a server fix to InWorldz 0.9.27 that prevents llGiveMoney from sending a payment of zero. This LSL bug was discovered due to a bug in AlphaVend C, which caused it to sometimes charge a commission of i'z$0 (when it should have not tried to charge the commission at all). However, this fix may cause some AlphaVend C vendors to throw an error and shutdown, so I have applied a fix to AlphaVend C to anticipate this grid change.
- The commission is now reflected in notification emails. On vendors using the splitpay feature, only the vendor owner will see the notification.
- The code for handling commissions was simplified
If anyone finds any issues, please report them to Zauber Paracelsus at InWorldz.