|
|
|
[
Permlink
| « Hide
]
Cenji Neutra added a comment - 25/Aug/08 12:41 PM
Likely a Mono-beta issue.
It seems the behaviour is inconsistent - making it more difficult to reproduce. Making a copy of the device using shift-drag resulted in a vendor that behaved correctly. Repeated 'reset scripts in selection' from the Tools menu had no effect - one copy functions while the other only ever shows the "Pay.." slot in the menu as blank.
In the process of trying to create a repo test case, I also observed inconsistient behaviour int he triggering of the money() event. Again, exact duplicate copies of a simple object with 2 prims and two scripts results in one object that would only trigger the money() event in sometimes when paid and the other always. I'll also test in other locations in case there is something wrong with the state of Sandbox Goguen. Frustratingly, the problem disappeared when the vendor was rezzed in Newcomb.
In the original non-working vendor, a recompilation of the scripts (back) to LSL cause it to start working. Them, recompilation again into Mono and it also worked. So - not sure where the problem is/was. How does the 'payable' object state based on if a money() event is present get maintained? Could there be a problem with re-compilation and maintenance of that state that persists through resetting all scripts? Without even being able to reproduce it with the original device now - not much use leaving this bug marked as a showstopper. I'll downgrade it. Maybe
@Harleen - Possibly related. Though in this case the object is not set to 'When Left-Clicked: Pay Object", just the default. However, it does seem to be related to linking and child prims, so it may be the same bug.
I observed this: 1. Created two prims and linked them So - it is inconsistent but somehow related to relinking. None of the scripts were edited/recompiled/reset during that sequence. I'll mark it related to Unsure if this is related at this time, but involves similar functions.
upping this to major, as it affects a sizable number of rental meters in Caledon. Rentomatic scripts are affected by this bug. major loss of performance. recompiling scripts will be a major situation with dozens of sims.
Just an update: I have not observed the problem on the main grid on a sim running 1.24.3.95195 so far (either with Mono or LSL compiled scripts; tested with the same vendor device as on the beta grid)
This happens to the Rentomatic scripts in Caledon on Sea, which is running 1.24.3.95195 server and while using the 1.21 RC. Falling back to the 1.20 or earlier resolves the issue temporarily.
I have reports of it happening in Caledon Penzance, Caledon II, and Caledon Primverness so far. Steve, this looks like a viewer issue, can you look in to it please?
llSetPayPrice has never affected if the Pay was available or not. The Pay... option is only visible if a money event may catch it. IMHO llSetPayPrice and a money event should be in the same task, even better the same script.
@Thomas said "IMHO llSetPayPrice and a money event should be in the same task, even better the same script.". I agree that might have been a nicer API design, but it is now irrelevant, as the current API allows the the event and llSetPayPrice to be in different scripts (also the debt permission requests and llGiveMoney calls). So, changing it would break with backward compatibility - something obviously to be avoided at all costs unless there is a very good reason to do so (i.e. high cost of not doing it). Adding an additional constraint like that would need a few years warning to allow time for creators to phase out all their products that rely on the current API or it would cause needless pain to tens of thousands of residents.
If this is a viewer issue, then I'm not sure which client version I was using when reported - whatever client was the download for the beta grid at that time. I've been using 1.21.0 RC (95157) on a main-grid sim with 1.24 after the Mono rollout and been using and working on scripts in the same device without observing any problems even once. Babbage Linden believes this is viewer-side
Although I've still not seen it occur myself, we released new vendors compiled against Mono yesterday and we've had several customer reports of the Pay.. button being greyed-out already. One customer I spoke to was running the release-candidate viewer (1.21.0 I assume). He reported that it wasn't consistent - that some vendors 'out of the box' we 'shipped' seemed to work and others not (they all have the same script set). He tried re-linking and also observed the problem.
Can someone with server/viewer code knowledge enlighten me as to how the flag for showing/not-showing the Pay.. option gets computed and propagates to aid in diagnosing it?
As I mentioned, the money() event is in a script that is in a child prim in this case. However, although the vendors are 'new versions' the scripts and code for the money() event etc. is basically unchanged. All the vendors had a 'reset all scripts in selection' performed before being taken into inventory for 'packaging'. One other piece of information that may be relevant: the scripts in the vendors were all install using llRemoteLoadScriptPin() buy our 'build' device. More info if/when I have it. I'm waiting on one customer to try both our old LSL vendors and the non-RC viewer. More info: I went to the customer's store where he had one of our vendors rezzed. Indeed, with the RC viewer (1.21.0 95157) right-click and I Pay.. was greyed-out. I logged out and back in using the release viewer (1.20.15 92456) and right-clicked on the same prim without touching anything else first and the Pay.. was available.
So, it is definitely a problem with the RC viewer. I am going to experiment with child-prim link ordering next (as it doesn't matter with our devices and hence they're probably not linked consistently with respect to which numbered child prim contains the money event). In my own testing, I've been able to reproduce a bug whereby the money() event is not triggered at all upon payment, although I've not been able to reproduce the 'Pay..' not showing problem, I post the repo below as it seem likely to be the same underlying problem.
Using the RC viewer (1.21.0 95157), create 2 cubes and add this script them: touch_start(integer total_number) Link all three together so that the root prim is the one without the money event.
Repeat in the release viewer (1.10.15):
(edited name & description to be more appropriate now that it is better undertood)
I can confirm this being viewer side. I had the same issue using apez vendors. With the Second Life 1.21.0 (95157) viewer "right-click & pay" wa snot available on my vendors. With Second Life 1.20.15 (92456) all works fine.
I've seen this behaviour on both mono and non-mono compiled scripts.
My setup: Create two prims and link them together. In the root prim place this script: default link_message(integer prim, integer num, string str, key id) state pay link_message(integer prim, integer num, string str, key id) In the child prim place this script: default link_message(integer prim, integer num, string str, key id) touch_start(integer count) {
llMessageLinked(LINK_ALL_OTHERS, 201, "", NULL_KEY);
} state pay link_message(integer prim, integer num, string str, key id) money(key giver, integer amount) { llOwnerSay(llKey2Name(giver) + " has paid you " + (string)amount + "L$"); } touch_start(integer count) {
llMessageLinked(LINK_ALL_OTHERS, 200, "", NULL_KEY);
} Reset the scripts so they are in no pay mode, there is currently no pay option on either prim. Touch the child prim to put the scripts into pay mode. Note that the pay option is available on the root and child prims. The release client only shows the pay option on the child prim. Additionally, my firing ranges refuse to show the pay option at all, even though they are using a variation of the above procedure. They work fine under the release client. This behaviour I detailed above is still the same in the new 1.21.2 (96080) RC viewer (with server 1.24.5.96115).
Fixed for 1.21 rc3 and following
Please test this in the latest RC, and close if it is indeed fixed.
Fixed for MONO scripts but not entirely for non-MONO scripts.
Have a script with two states (my example above is valid for this test) one with a money event handler, one without. Start in the no-money event state and no pay option is displayed in the pie menu. Switch to the money event state and the pay option becomes available. Switch back to the no-money event state and the pay option is still available. (In a MONO script, the pay option becomes disabled again). Example object available on request. Sorry, jumped the gun a little, it is fixed for non-mono as well, so I'll reset this to the fixed and closed state.
Hi,
After 1.25 server, my script started showing this. I have a game that accepts payment and after that, changes to another state that has no money event but the Pay pie menu is still there and you cna pay the machine. I am trying to reproduce the problem but it does not happen. Only in my game. I reset it, no change. I recompile; no change. I am stuck. Please help. Mitralone Yalin Found the problem. Sorry for bothering.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||