   Some Questions about Plugin Systems (C++)
  I am programming a plugin system for my Servers. I want all game features to be added through dll plugins and loaded dynamically when the server is started or when the command is giving to reload the plugins. I would love to have the server sense when a new plugin is added and load it right then but I will settle for something a little more basic to start with.Theres a couple things I am unsure about. First of all how can I give plugins access to methods located with in other plugins. Lets say I have a User Plugin that just handles Player data. Well the combat plugin will need access to that user data located with in the Player Data plugin.The other thing I am unsure about is how to get access to the methods located with in the plugin. Right now theres a Interface file that gives the methods the Plugins must have and then from the server only those methods are available on the server. However upon further thought the server wouldn't need access to most of the methods a plugin would contain because most everything can be self contained and just being updated through a single update method. So if other plugins can gain access to the methods located in a plugin then I would be all set.   
  These kinds of system have pain and suffering written all over them!  However, what you need here is a shared state.  You don't keep that state inside the player object, you store it somewhere else that your other plug-ins also have access to.  Of course this being the case both need to be notified when the state changes, unless one is always a reader and the other is the only one allowed to write the state.Consider a plugin to be functions operating on data, with that data stored elsewhere.  Think about something like Photoshop, or Paintshop Pro.  The shared state is the bitmap image and the plug-in operates on that data in isolation to other plug-ins. 