Thus spake Ryan Gasper or Steven Arnold <dalamar@CYBERCOM.NET>: > Hello List. > > I made a clone spell, that clones a piece of EQ or a weapon, and then >fires off an event, and after so many minutes, it extracts the object. >Everything works fine, but I am curious how to resolve a few things. If >someone were to give the object to another player, how would I switch the >ch pointer to the new owner? I need to do this because as the item fades, >it gives messages to the caster. If the caster gives it away and quits, >MUD will probably crash (I have not tested this because I assume thats >what will happen). Is there a way to check to make sure the person that is >either wielding it or in its inventory is the same as the ch pointer in >the event structure? While I don't have code in front of me, I believe there's a void * to the event struct for that event within the event. That is, something like: ((struct my_clone_event *)(GET_CLONE_EVENT(clonedobj)->eventobj))->ch = new_ch; Where GET_CLONE_EVENT is a macro expanding to the struct event * within the given object. This is obviously rather ugly, I'd suggest adding a function that would return the event struct when passed the actual event. So something like this in event.c: void *event_getobj(struct event *event) { assert(event != NULL); return event->eventobj; } Of course there's not much benefit from this except a marginal style benefit to encourage access functions rather than fiddling with the event's members directly. In general, though, the line of code I wrote up top should work, though you'll have to check the actual members of struct event. -- Kevin Doherty, kdoherty@jurai.net "Multiple exclamation marks are a sure sign of a diseased mind." -- Rincewind (from _Eric_) +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST