forked from Mirrorlandia_minetest/minetest
Server: Add reason for leave to on_leaveplayer
callbacks
This commit is contained in:
parent
b24d21d1ae
commit
dac40af6ee
@ -1912,8 +1912,9 @@ Call these functions only at load time!
|
|||||||
* If it returns a string, the player is disconnected with that string as reason
|
* If it returns a string, the player is disconnected with that string as reason
|
||||||
* `minetest.register_on_joinplayer(func(ObjectRef))`
|
* `minetest.register_on_joinplayer(func(ObjectRef))`
|
||||||
* Called when a player joins the game
|
* Called when a player joins the game
|
||||||
* `minetest.register_on_leaveplayer(func(ObjectRef))`
|
* `minetest.register_on_leaveplayer(func(ObjectRef, timed_out))`
|
||||||
* Called when a player leaves the game
|
* Called when a player leaves the game
|
||||||
|
* `timed_out`: True for timeout, false for other reasons.
|
||||||
* `minetest.register_on_cheat(func(ObjectRef, cheat))`
|
* `minetest.register_on_cheat(func(ObjectRef, cheat))`
|
||||||
* Called when a player cheats
|
* Called when a player cheats
|
||||||
* `cheat`: `{type=<cheat_type>}`, where `<cheat_type>` is one of:
|
* `cheat`: `{type=<cheat_type>}`, where `<cheat_type>` is one of:
|
||||||
|
@ -135,7 +135,8 @@ void ScriptApiPlayer::on_joinplayer(ServerActiveObject *player)
|
|||||||
runCallbacks(1, RUN_CALLBACKS_MODE_FIRST);
|
runCallbacks(1, RUN_CALLBACKS_MODE_FIRST);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptApiPlayer::on_leaveplayer(ServerActiveObject *player)
|
void ScriptApiPlayer::on_leaveplayer(ServerActiveObject *player,
|
||||||
|
bool timeout)
|
||||||
{
|
{
|
||||||
SCRIPTAPI_PRECHECKHEADER
|
SCRIPTAPI_PRECHECKHEADER
|
||||||
|
|
||||||
@ -144,7 +145,8 @@ void ScriptApiPlayer::on_leaveplayer(ServerActiveObject *player)
|
|||||||
lua_getfield(L, -1, "registered_on_leaveplayers");
|
lua_getfield(L, -1, "registered_on_leaveplayers");
|
||||||
// Call callbacks
|
// Call callbacks
|
||||||
objectrefGetOrCreate(L, player);
|
objectrefGetOrCreate(L, player);
|
||||||
runCallbacks(1, RUN_CALLBACKS_MODE_FIRST);
|
lua_pushboolean(L, timeout);
|
||||||
|
runCallbacks(2, RUN_CALLBACKS_MODE_FIRST);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptApiPlayer::on_cheat(ServerActiveObject *player,
|
void ScriptApiPlayer::on_cheat(ServerActiveObject *player,
|
||||||
|
@ -38,7 +38,7 @@ public:
|
|||||||
bool on_prejoinplayer(const std::string &name, const std::string &ip,
|
bool on_prejoinplayer(const std::string &name, const std::string &ip,
|
||||||
std::string *reason);
|
std::string *reason);
|
||||||
void on_joinplayer(ServerActiveObject *player);
|
void on_joinplayer(ServerActiveObject *player);
|
||||||
void on_leaveplayer(ServerActiveObject *player);
|
void on_leaveplayer(ServerActiveObject *player, bool timeout);
|
||||||
void on_cheat(ServerActiveObject *player, const std::string &cheat_type);
|
void on_cheat(ServerActiveObject *player, const std::string &cheat_type);
|
||||||
bool on_punchplayer(ServerActiveObject *player,
|
bool on_punchplayer(ServerActiveObject *player,
|
||||||
ServerActiveObject *hitter, float time_from_last_punch,
|
ServerActiveObject *hitter, float time_from_last_punch,
|
||||||
|
@ -2683,7 +2683,7 @@ void Server::DeleteClient(u16 peer_id, ClientDeletionReason reason)
|
|||||||
PlayerSAO *playersao = player->getPlayerSAO();
|
PlayerSAO *playersao = player->getPlayerSAO();
|
||||||
assert(playersao);
|
assert(playersao);
|
||||||
|
|
||||||
m_script->on_leaveplayer(playersao);
|
m_script->on_leaveplayer(playersao, reason == CDR_TIMEOUT);
|
||||||
|
|
||||||
playersao->disconnected();
|
playersao->disconnected();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user