diff options
author | Perttu Ahola <celeron55@gmail.com> | 2013-08-04 00:45:49 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2013-08-04 00:45:49 +0300 |
commit | 8831669505905dd9cd415711063f705d8e7ce02c (patch) | |
tree | e3732284d445a143909294265d4b2742e68cfc19 /src/script | |
parent | 742614180cbbe598694a48bd9eb6f7b97a762243 (diff) | |
download | minetest-8831669505905dd9cd415711063f705d8e7ce02c.tar.gz minetest-8831669505905dd9cd415711063f705d8e7ce02c.tar.bz2 minetest-8831669505905dd9cd415711063f705d8e7ce02c.zip |
Allow mods to listen to cheat detections using minetest.register_on_cheat()
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/cpp_api/s_player.cpp | 16 | ||||
-rw-r--r-- | src/script/cpp_api/s_player.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/script/cpp_api/s_player.cpp b/src/script/cpp_api/s_player.cpp index e736d745d..0dbd52527 100644 --- a/src/script/cpp_api/s_player.cpp +++ b/src/script/cpp_api/s_player.cpp @@ -81,6 +81,22 @@ void ScriptApiPlayer::on_leaveplayer(ServerActiveObject *player) runCallbacks(1, RUN_CALLBACKS_MODE_FIRST); } +void ScriptApiPlayer::on_cheat(ServerActiveObject *player, + const std::string &cheat_type) +{ + SCRIPTAPI_PRECHECKHEADER + + // Get minetest.registered_on_cheats + lua_getglobal(L, "minetest"); + lua_getfield(L, -1, "registered_on_cheats"); + // Call callbacks + objectrefGetOrCreate(player); + lua_newtable(L); + lua_pushlstring(L, cheat_type.c_str(), cheat_type.size()); + lua_setfield(L, -2, "type"); + runCallbacks(2, RUN_CALLBACKS_MODE_FIRST); +} + void ScriptApiPlayer::on_playerReceiveFields(ServerActiveObject *player, const std::string &formname, const std::map<std::string, std::string> &fields) diff --git a/src/script/cpp_api/s_player.h b/src/script/cpp_api/s_player.h index 663e3c2ab..c0409a481 100644 --- a/src/script/cpp_api/s_player.h +++ b/src/script/cpp_api/s_player.h @@ -34,6 +34,7 @@ public: bool on_respawnplayer(ServerActiveObject *player); void on_joinplayer(ServerActiveObject *player); void on_leaveplayer(ServerActiveObject *player); + void on_cheat(ServerActiveObject *player, const std::string &cheat_type); void on_playerReceiveFields(ServerActiveObject *player, const std::string &formname, |