diff --git a/builtin/client/cheats.lua b/builtin/client/cheats.lua index b712d0f14..b0721159b 100644 --- a/builtin/client/cheats.lua +++ b/builtin/client/cheats.lua @@ -29,6 +29,7 @@ core.cheats = { ["PlayerTracers"] = "enable_player_tracers", ["NodeESP"] = "enable_node_esp", ["NodeTracers"] = "enable_node_tracers", + ["DeathTracer"] = "enable_death_tracer", }, ["Interact"] = { ["FastDig"] = "fastdig", diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 0bed1071c..27689fb41 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -2387,6 +2387,8 @@ enable_node_esp (NodeESP) bool false enable_node_tracers (NodeTracers) bool false +enable_death_tracer (DeathTracker) bool true + entity_esp_color (EntityESP Color) v3f 255, 255, 255 player_esp_color (PlayerESP Color) v3f 0, 255, 0 diff --git a/src/client/game.cpp b/src/client/game.cpp index e7840b189..d4ebb394d 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -71,6 +71,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "version.h" #include "script/scripting_client.h" #include "hud.h" +#include "client/render/death.h" + +bool died; +v3f dpos; #if USE_SOUND #include "client/sound_openal.h" @@ -1902,6 +1906,10 @@ void Game::handleClientEvent_Deathscreen(ClientEvent *event, CameraOrientation * { // If client scripting is enabled, deathscreen is handled by CSM code in // builtin/client/init.lua + + died = true; + dpos = client->getEnv().getLocalPlayer()->getPosition(); + if (client->modsLoaded()) client->getScript()->on_death(); else diff --git a/src/client/render/core.cpp b/src/client/render/core.cpp index 9927e2589..884da2006 100644 --- a/src/client/render/core.cpp +++ b/src/client/render/core.cpp @@ -85,10 +85,13 @@ void RenderingCore::draw(video::SColor _skycolor, bool _show_hud, bool _show_min draw_player_tracers = g_settings->getBool("enable_player_tracers"); draw_node_esp = g_settings->getBool("enable_node_esp"); draw_node_tracers = g_settings->getBool("enable_node_tracers"); + draw_death_tracer = g_settings->getBool("enable_death_tracer"); v3f entity_color = g_settings->getV3F("entity_esp_color"); v3f player_color = g_settings->getV3F("player_esp_color"); entity_esp_color = video::SColor(255, entity_color.X, entity_color.Y, entity_color.Z); player_esp_color = video::SColor(255, player_color.X, player_color.Y, player_color.Z); + death_tracer_color = video::SColor(255,255,255,255); + if (shadow_renderer) { // This is necessary to render shadows for animations correctly @@ -169,6 +172,13 @@ void RenderingCore::drawTracersAndESP() } } } + if(draw_death_tracer && died){ + aabb3f box; + box.MinEdge += dpos; + box.MaxEdge += dpos; + driver->draw3DLine(eye_pos,box.getCenter(),death_tracer_color); + driver->draw3DBox(box,death_tracer_color); + } driver->setMaterial(oldmaterial); } @@ -184,7 +194,7 @@ void RenderingCore::draw3D() return; hud->drawBlockBounds(); hud->drawSelectionMesh(); - if (draw_entity_esp || draw_entity_tracers || draw_player_esp || draw_player_tracers || draw_node_esp || draw_node_tracers) + if (draw_entity_esp || draw_entity_tracers || draw_player_esp || draw_player_tracers || draw_node_esp || draw_node_tracers || draw_death_tracer) drawTracersAndESP(); if (draw_wield_tool) camera->drawWieldedTool(); diff --git a/src/client/render/core.h b/src/client/render/core.h index 0864f25bd..dbdee038c 100644 --- a/src/client/render/core.h +++ b/src/client/render/core.h @@ -27,6 +27,9 @@ class Client; class Hud; class Minimap; +extern bool died; +extern v3f dpos; + class RenderingCore { protected: @@ -43,8 +46,11 @@ protected: bool draw_player_tracers; bool draw_node_esp; bool draw_node_tracers; + bool draw_death_tracer; + video::SColor entity_esp_color; video::SColor player_esp_color; + video::SColor death_tracer_color; IrrlichtDevice *device; video::IVideoDriver *driver; diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index c3fe02038..cffc30541 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -119,6 +119,7 @@ void set_default_settings() settings->setDefault("enable_player_tracers", "false"); settings->setDefault("enable_node_esp", "false"); settings->setDefault("enable_node_tracers", "false"); + settings->setDefault("enable_death_tracer","true"); settings->setDefault("entity_esp_color", "(255, 255, 255)"); settings->setDefault("player_esp_color", "(0, 255, 0)"); settings->setDefault("tool_range", "2");