ReGameDLL_CS/regamedll/dlls/tutor.cpp

119 lines
3.5 KiB
C++
Raw Normal View History

2015-06-30 12:46:07 +03:00
#include "precompiled.h"
cvar_t cv_tutor_message_repeats = { "_tutor_message_repeats", "5", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_debug_level = { "_tutor_debug_level", "0", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_view_distance = { "_tutor_view_distance", "1000", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_viewable_check_interval = { "_tutor_bomb_viewable_check_interval", "0.5", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_look_distance = { "_tutor_look_distance", "200", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_look_angle = { "_tutor_look_angle", "10", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_examine_time = { "_tutor_examine_time", "0.5", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_message_minimum_display_time = { "_tutor_message_minimum_display_time", "1", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_message_character_display_time_coefficient = { "_tutor_message_character_display_time_coefficient", "0.07", FCVAR_SERVER, 0.0f, nullptr };
cvar_t cv_tutor_hint_interval_time = { "_tutor_hint_interval_time", "10.0", FCVAR_SERVER, 0.0f, nullptr };
2015-06-30 12:46:07 +03:00
bool s_tutorDisabledThisGame = false;
float s_nextCvarCheckTime = 0.0f;
void InstallTutor(bool bCreate)
2015-06-30 12:46:07 +03:00
{
2017-10-12 17:50:56 +03:00
if (TheTutor)
2015-06-30 12:46:07 +03:00
{
delete TheTutor;
2017-10-12 17:50:56 +03:00
TheTutor = nullptr;
2015-06-30 12:46:07 +03:00
}
if (bCreate)
2015-08-20 13:35:01 +03:00
{
2015-06-30 12:46:07 +03:00
TheTutor = new CCSTutor;
2015-08-20 13:35:01 +03:00
}
2015-06-30 12:46:07 +03:00
s_tutorDisabledThisGame = false;
s_nextCvarCheckTime = gpGlobals->time;
}
void Tutor_RegisterCVars()
2015-06-30 12:46:07 +03:00
{
#ifdef REGAMEDLL_FIXES
2017-10-12 17:50:56 +03:00
if (!AreRunningCZero())
return;
#endif
2015-09-16 23:19:21 +03:00
CVAR_REGISTER(&cv_tutor_message_repeats);
CVAR_REGISTER(&cv_tutor_debug_level);
CVAR_REGISTER(&cv_tutor_view_distance);
CVAR_REGISTER(&cv_tutor_viewable_check_interval);
CVAR_REGISTER(&cv_tutor_look_distance);
CVAR_REGISTER(&cv_tutor_look_angle);
CVAR_REGISTER(&cv_tutor_examine_time);
CVAR_REGISTER(&cv_tutor_message_minimum_display_time);
CVAR_REGISTER(&cv_tutor_message_character_display_time_coefficient);
2015-06-30 12:46:07 +03:00
CVAR_REGISTER(&cv_tutor_hint_interval_time);
}
void MonitorTutorStatus()
2015-06-30 12:46:07 +03:00
{
2017-10-12 17:50:56 +03:00
static cvar_t *tutor_enable = nullptr;
2015-08-20 13:35:01 +03:00
static bool tutor_enableCvarExists = true;
bool shouldTutorBeOn = false;
int numHumans = 0;
if (!tutor_enableCvarExists || s_nextCvarCheckTime > gpGlobals->time)
return;
2017-10-12 17:50:56 +03:00
if (tutor_enable || (tutor_enable = CVAR_GET_POINTER("tutor_enable")))
2015-08-20 13:35:01 +03:00
{
if (!s_tutorDisabledThisGame && tutor_enable->value > 0.0f)
{
shouldTutorBeOn = true;
}
}
else
tutor_enableCvarExists = false;
2015-09-16 23:19:21 +03:00
2017-10-12 17:50:56 +03:00
for (int i = 1; i <= gpGlobals->maxClients; i++)
2015-08-20 13:35:01 +03:00
{
2016-05-31 17:04:51 +03:00
CBasePlayer *pPlayer = UTIL_PlayerByIndex(i);
2015-08-20 13:35:01 +03:00
if (pPlayer && !pPlayer->IsBot())
2017-10-12 17:50:56 +03:00
numHumans++;
2015-08-20 13:35:01 +03:00
}
if (shouldTutorBeOn)
{
if (numHumans <= 1)
{
2017-10-12 17:50:56 +03:00
if (!TheTutor)
2015-08-20 13:35:01 +03:00
{
2017-10-12 17:50:56 +03:00
CBasePlayer *pLocalPlayer = UTIL_GetLocalPlayer();
if (pLocalPlayer)
2015-08-20 13:35:01 +03:00
{
2017-10-12 17:50:56 +03:00
ClientPrint(pLocalPlayer->pev, HUD_PRINTCENTER, "#CZero_Tutor_Turned_On");
2015-08-20 13:35:01 +03:00
}
TheTutor = new CCSTutor;
}
}
else
2017-10-12 17:50:56 +03:00
{
2015-08-20 13:35:01 +03:00
s_tutorDisabledThisGame = true;
2017-10-12 17:50:56 +03:00
}
2015-08-20 13:35:01 +03:00
}
else
{
2017-10-12 17:50:56 +03:00
if (TheTutor)
2015-08-20 13:35:01 +03:00
{
2017-10-12 17:50:56 +03:00
CBasePlayer *pLocalPlayer = UTIL_GetLocalPlayer();
if (pLocalPlayer)
2015-08-20 13:35:01 +03:00
{
2017-10-12 17:50:56 +03:00
ClientPrint(pLocalPlayer->pev, HUD_PRINTCENTER, "#CZero_Tutor_Turned_Off");
2015-08-20 13:35:01 +03:00
}
delete TheTutor;
2017-10-12 17:50:56 +03:00
TheTutor = nullptr;
2015-08-20 13:35:01 +03:00
}
}
s_nextCvarCheckTime = gpGlobals->time + 1.0f;
2015-06-30 12:46:07 +03:00
}