From 2795f44f0316c83728bc8059a020869058498f78 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 21 Jul 2012 14:38:49 +0300 Subject: Server-side checking of digging; disable_anticheat setting --- src/content_sao.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/content_sao.cpp') diff --git a/src/content_sao.cpp b/src/content_sao.cpp index e9b5782a9..0488c8023 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -764,6 +764,8 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_, m_last_good_position(0,0,0), m_last_good_position_age(0), m_time_from_last_punch(0), + m_nocheat_dig_pos(32767, 32767, 32767), + m_nocheat_dig_time(0), m_wield_index(0), m_position_not_sent(false), m_armor_groups_sent(false), @@ -874,8 +876,9 @@ void PlayerSAO::step(float dtime, bool send_recommended) } m_time_from_last_punch += dtime; + m_nocheat_dig_time += dtime; - if(m_is_singleplayer) + if(m_is_singleplayer || g_settings->getBool("disable_anticheat")) { m_last_good_position = m_player->getPosition(); m_last_good_position_age = 0; @@ -888,7 +891,8 @@ void PlayerSAO::step(float dtime, bool send_recommended) NOTE: Actually the server should handle player physics like the client does and compare player's position to what is calculated on our side. This is required when eg. players fly due to an - explosion. + explosion. Altough a node-based alternative might be possible + too, and much more lightweight. */ float player_max_speed = 0; -- cgit v1.2.3