From a9ddbb4bebd05f8fd9e2ee6876a34e8cbb0d8c2f Mon Sep 17 00:00:00 2001 From: Kahrl Date: Sat, 24 Mar 2012 18:52:50 +0100 Subject: on_joinplayer + on_leaveplayer + scriptapi_run_callbacks + bugfix Add minetest.register_on_joinplayer and minetest.register_on_leaveplayer, make adding new callbacks to scriptapi.cpp easier by adding scriptapi_run_callbacks, also fix a minor bug with PlayerSAO <-> singleplayer mode interaction --- src/server.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/server.cpp') diff --git a/src/server.cpp b/src/server.cpp index 163528235..8ad0d0869 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1317,10 +1317,8 @@ void Server::AsyncRunStep() { RemoteClient *client = i.getNode()->getValue(); PlayerSAO *playersao = getPlayerSAO(client->peer_id); - if(playersao == NULL){ - errorstream<<"Handling client without PlayerSAO, peer_id="<peer_id<getBool("creative_mode")) playersao->createCreativeInventory(); @@ -4623,10 +4623,19 @@ void Server::handlePeerChange(PeerChange &c) } } - // Remove from environment - if(player->getPlayerSAO()) - player->getPlayerSAO()->disconnected(); - + /* Run scripts and remove from environment */ + { + if(player != NULL) + { + PlayerSAO *playersao = player->getPlayerSAO(); + assert(playersao); + + scriptapi_on_leaveplayer(m_lua, playersao); + + playersao->disconnected(); + } + } + /* Print out action */ -- cgit v1.2.3