I'm not sure how you designed the system and probably this is just utopic but..
i imagine a system where each clickie ObjectItem have:
design-time modifiable:
SCRIPTBlock (similar to current scripts)
HTMLContentBlock (similar to current scripts)
objectname
non-modifiable properties: (assigned at creation) creator
questid
uniqueid
runtime-script modifiable properties: (also design-time modifiable by interface)
x,y,width,height,owner,name,description,visible,location,qtd,imgnormal,imghoover,imginventory
A quest creator would have at disposal functions like:
CreateObjectItem(<questid>,<objectname>,<forPlayerID>) returns the created object
GetObjectItem(<questid>,<objectname>,<forPlayerID>) returns a array of owned objects for a player
DestroyObjectItem(<questid>,<uniqueid>) removes the object from the game Some Conditions: ->Players would only see objects created for them. ( owner==uv('id') && visible==true)
This is to prevent scene bloating with objects that are not meaningfull for those not participating in the quest. ->Objects created for PlayerID=0 would be visible (if visible==true) to all players that don't have such object.
This would enable a visible starting point like a paper lost in the floor. Once the Paperobject was clicked the script would create a PaperObject for the player and set the visibility option accordingly.
->Global Interface where a Player could resign from a quest (or coders should always offer such functionality)
This would remove all his quest specific objects and as so clear his scenes
Most object properties seem quite self descriptive, except the location property that would be:
object['location'] == -1 ( if object is on inventory )
object['location'] == '1_0x0_1' ( or other scene location )
moving the object from scene to inventory (pick) would be a matter of: object['location'] = -1;
object['qtd'] = 1;
Refresh(SCENE|INVENTORY);