Both a bug and a potential feature.
Bug:
well sorta, on occasion PERMISSION_DEBIT is lost due to occurances beyond the owner's control. Somehow, I dunno why but assume due to server reset, debit is lost. Turning your "fair" money() events into "dishonest" no-refunding cash stealing bastage scripts from hadies!
Example of troubles with lost permissions:
I took a break from SL, and returned to find ALL my scripts had lost permission debit, and one IM from a rather upset player about losing L$500 to my vendor.
Fix/Suggestion:
Make a stand-alone function, llSetDebit(). No parameters, it uses the object's owner which is fetched automatically.
There needs to be a check, on rez, for any llSetDebit() call, and if it exists a warning pops up (only when the object is rez'd -- which means it's rez'd by its OWNER). The warning explains that permission debit will/may be set by this object.
And that's it. Once rez'd and accepted the object will always run DEBIT, regardless of the server mucking up.
Or heck, make a checkbox on the Object Editor for DEBIT (useable by anyone (owner), regardless of normal permissions settings) -- then we can safely sell others no-mod/edit/copy/whatever stuff that allows them to do honest money() transactions with their happy smiling customers. And a checkbox would better protect 2nd parties from potentially malicious "debit" scripts. And make this visible to others with a mouse-over "Scripted, Physical, Debit..."
Boso