Implemented command param -beta to enables latest things from official.

This commit is contained in:
s1lent 2019-08-26 04:26:55 +07:00
parent 54a0f5f244
commit a7f20dc2e8
12 changed files with 88 additions and 39 deletions

View File

@ -18,6 +18,10 @@ Archive's bin directory contains 2 subdirectories, 'bugfixed' and 'pure'
<b>Warning!</b> ReGameDLL_CS is not binary compatible with original hlds since it's compiled with compilers other than ones used for original mod CS. This means that plugins that do binary code analysis (Orpheu for example) probably will not work with ReGameDLL_CS.
## How can use beta?
ReGameDLL_CS also have beta version with latest changes from official version of Counter-Strike,
therefore for this enter `-beta` option at the command line HLDS.
## Configuration (cvars)
| CVar | Default | Min | Max | Description |
| :--------------------------------- | :-----: | :-: | :----------: | :--------------------------------------------- |
@ -56,8 +60,8 @@ Archive's bin directory contains 2 subdirectories, 'bugfixed' and 'pure'
| mp_kill_filled_spawn | 1 | 0 | 1 | Kill the player in filled spawn before spawning some one else (Prevents players stucking in each other).<br />Only disable this if you have semiclip or other plugins that prevents stucking.<br/>`0` disabled<br/>`1` enabled |
| mp_allow_point_servercommand | 0 | 0 | 1 | Allow use of point_servercommand entities in map.<br/>`0` disallow<br/>`1` allow<br/>`NOTE`: Potentially dangerous for untrusted maps.|
| mp_hullbounds_sets | 1 | 0 | 1 | Sets mins/maxs hull bounds for the player.<br/>`0` disabled<br/>`1` enabled |
| mp_scoreboard_showhealth | 3 | 0 | 5 | Show `HP` field into a scoreboard.<br/>`0` don't send any update for `HP` field to any clients<br/>`1` show only Terrorist `HP` field to all clients<br/>`2` show only CT `HP` field to all clients<br/>`3` show `HP` field to teammates<br/>`4` show `HP` field to all clients<br/>`5` show `HP` field to teammates and spectators |
| mp_scoreboard_showmoney | 3 | 0 | 5 | Show `Money` field into a scoreboard.<br/>`0` don't send any update for `Money` field to any clients<br/>`1` show only Terrorist `Money` field to all clients<br/>`2` show only CT `Money` field to all clients<br/>`3` show `Money` field to teammates<br/>`4` show `Money` field to all clients<br/>`5` show `Money` field to teammates and spectators |
| mp_scoreboard_showhealth | 3 | 0 | 5 | Show `HP` field into a scoreboard.<br/>`0` don't send any update for `HP` field to any clients<br/>`1` show only Terrorist `HP` field to all clients<br/>`2` show only CT `HP` field to all clients<br/>`3` show `HP` field to teammates<br/>`4` show `HP` field to all clients<br/>`5` show `HP` field to teammates and spectators<br/><br/>`Note this CVar are work in beta only.` |
| mp_scoreboard_showmoney | 3 | 0 | 5 | Show `Money` field into a scoreboard.<br/>`0` don't send any update for `Money` field to any clients<br/>`1` show only Terrorist `Money` field to all clients<br/>`2` show only CT `Money` field to all clients<br/>`3` show `Money` field to teammates<br/>`4` show `Money` field to all clients<br/>`5` show `Money` field to teammates and spectators<br/><br/>`Note this CVar are work in beta only.` |
| ff_damage_reduction_bullets | 0.35 | 0.0 | 1.0 | How much to reduce damage done to teammates when shot.<br/> Range is from `0` - `1` (with 1 being damage equal to what is done to an enemy) |
| ff_damage_reduction_grenade | 0.25 | 0.0 | 1.0 | How much to reduce damage done to teammates by a thrown grenade.<br/> Range is from `0` - `1` (with 1 being damage equal to what is done to an enemy) |
| ff_damage_reduction_grenade_self | 1.0 | 0.0 | 1.0 | How much to damage a player does to himself with his own grenade.<br/> Range is from `0` - `1` (with 1 being damage equal to what is done to an enemy) |

2
dist/game.cfg vendored
View File

@ -245,6 +245,7 @@ mp_allow_point_servercommand 0
// 3 - show 'HP' field to teammates
// 4 - show 'HP' field to all clients
// 5 - show 'HP' field to teammates and spectators
// Note this CVar are work in beta only.
//
// Default value: "3"
mp_scoreboard_showhealth 3
@ -256,6 +257,7 @@ mp_scoreboard_showhealth 3
// 3 - show 'Money' field to teammates
// 4 - show 'Money' field to all clients
// 5 - show 'Money' field to teammates and spectators
// Note this CVar are work in beta only.
//
// Default value: "3"
mp_scoreboard_showmoney 3

View File

@ -226,8 +226,11 @@ void LinkUserMessages()
gmsgHudTextArgs = REG_USER_MSG("HudTextArgs", -1);
#ifdef BUILD_LATEST
gmsgAccount = REG_USER_MSG("Account", 5);
gmsgHealthInfo = REG_USER_MSG("HealthInfo", 5);
if (AreRunningBeta())
{
gmsgAccount = REG_USER_MSG("Account", 5);
gmsgHealthInfo = REG_USER_MSG("HealthInfo", 5);
}
#endif
}

View File

@ -235,8 +235,11 @@ void EXT_FUNC GameDLLInit()
CVAR_REGISTER(&humans_join_team);
#ifdef BUILD_LATEST
CVAR_REGISTER(&scoreboard_showhealth);
CVAR_REGISTER(&scoreboard_showmoney);
if (AreRunningBeta())
{
CVAR_REGISTER(&scoreboard_showhealth);
CVAR_REGISTER(&scoreboard_showmoney);
}
#endif
// Remove unused cvars

View File

@ -8,6 +8,7 @@ int g_iSkillLevel;
Vector g_vecAttackDir;
BOOL gDisplayTitle;
bool g_bIsBeta = false;
bool g_bIsCzeroGame = false;
bool g_bAllowedCSBot = false;
bool g_bHostageImprov = false;

View File

@ -35,6 +35,7 @@ extern int g_iSkillLevel;
extern Vector g_vecAttackDir;
extern BOOL gDisplayTitle;
extern bool g_bIsBeta;
extern bool g_bIsCzeroGame;
extern bool g_bAllowedCSBot;
extern bool g_bHostageImprov;

View File

@ -3362,15 +3362,18 @@ void CHalfLifeMultiplay::InitHUD(CBasePlayer *pl)
}
#ifdef BUILD_LATEST
MESSAGE_BEGIN(MSG_ONE, gmsgHealthInfo, nullptr, pl->edict());
WRITE_BYTE(plr->entindex());
WRITE_LONG(plr->ShouldToShowHealthInfo(pl) ? plr->m_iClientHealth : -1 /* means that 'HP' field will be hidden */);
MESSAGE_END();
if (AreRunningBeta())
{
MESSAGE_BEGIN(MSG_ONE, gmsgHealthInfo, nullptr, pl->edict());
WRITE_BYTE(plr->entindex());
WRITE_LONG(plr->ShouldToShowHealthInfo(pl) ? plr->m_iClientHealth : -1 /* means that 'HP' field will be hidden */);
MESSAGE_END();
MESSAGE_BEGIN(MSG_ONE, gmsgAccount, nullptr, pl->edict());
WRITE_BYTE(plr->entindex());
WRITE_LONG(plr->ShouldToShowAccount(pl) ? plr->m_iAccount : -1 /* means that this 'Money' will be hidden */);
MESSAGE_END();
MESSAGE_BEGIN(MSG_ONE, gmsgAccount, nullptr, pl->edict());
WRITE_BYTE(plr->entindex());
WRITE_LONG(plr->ShouldToShowAccount(pl) ? plr->m_iAccount : -1 /* means that this 'Money' will be hidden */);
MESSAGE_END();
}
#endif // BUILD_LATEST
}

View File

@ -5123,7 +5123,7 @@ void CBasePlayer::SetScoreAttrib(CBasePlayer *dest)
state |= SCORE_STATUS_VIP;
#ifdef BUILD_LATEST
if (m_bHasDefuser)
if (AreRunningBeta() && m_bHasDefuser)
state |= SCORE_STATUS_DEFKIT;
#endif
@ -7132,38 +7132,41 @@ void EXT_FUNC CBasePlayer::__API_HOOK(UpdateClientData)()
}
#ifdef BUILD_LATEST
if ((m_iTeam == CT || m_iTeam == TERRORIST) &&
(m_iLastAccount != m_iAccount || m_iLastClientHealth != m_iClientHealth || m_tmNextAccountHealthUpdate < gpGlobals->time))
if (AreRunningBeta())
{
m_tmNextAccountHealthUpdate = gpGlobals->time + 5.0f;
for (int playerIndex = 1; playerIndex <= gpGlobals->maxClients; playerIndex++)
if ((m_iTeam == CT || m_iTeam == TERRORIST) &&
(m_iLastAccount != m_iAccount || m_iLastClientHealth != m_iClientHealth || m_tmNextAccountHealthUpdate < gpGlobals->time))
{
CBaseEntity *pEntity = UTIL_PlayerByIndex(playerIndex);
m_tmNextAccountHealthUpdate = gpGlobals->time + 5.0f;
if (!pEntity)
continue;
for (int playerIndex = 1; playerIndex <= gpGlobals->maxClients; playerIndex++)
{
CBaseEntity *pEntity = UTIL_PlayerByIndex(playerIndex);
CBasePlayer *pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
if (!pEntity)
continue;
CBasePlayer *pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
#ifdef REGAMEDLL_FIXES
if (pPlayer->IsDormant())
continue;
if (pPlayer->IsDormant())
continue;
#endif // REGAMEDLL_FIXES
MESSAGE_BEGIN(MSG_ONE, gmsgHealthInfo, nullptr, pPlayer->edict());
WRITE_BYTE(entindex());
WRITE_LONG(ShouldToShowHealthInfo(pPlayer) ? m_iClientHealth : -1 /* means that 'HP' field will be hidden */);
MESSAGE_END();
MESSAGE_BEGIN(MSG_ONE, gmsgHealthInfo, nullptr, pPlayer->edict());
WRITE_BYTE(entindex());
WRITE_LONG(ShouldToShowHealthInfo(pPlayer) ? m_iClientHealth : -1 /* means that 'HP' field will be hidden */);
MESSAGE_END();
MESSAGE_BEGIN(MSG_ONE, gmsgAccount, nullptr, pPlayer->edict());
WRITE_BYTE(entindex());
WRITE_LONG(ShouldToShowAccount(pPlayer) ? m_iAccount : -1 /* means that this 'Money' will be hidden */);
MESSAGE_END();
MESSAGE_BEGIN(MSG_ONE, gmsgAccount, nullptr, pPlayer->edict());
WRITE_BYTE(entindex());
WRITE_LONG(ShouldToShowAccount(pPlayer) ? m_iAccount : -1 /* means that this 'Money' will be hidden */);
MESSAGE_END();
}
m_iLastAccount = m_iAccount;
m_iLastClientHealth = m_iClientHealth;
}
m_iLastAccount = m_iAccount;
m_iLastClientHealth = m_iClientHealth;
}
#endif // #ifdef BUILD_LATEST
}

View File

@ -1691,6 +1691,28 @@ bool UTIL_AreBotsAllowed()
return false;
}
bool UTIL_IsBeta()
{
#ifdef BUILD_LATEST
if (g_engfuncs.pfnEngCheckParm == nullptr)
return false;
// always beta from listen server
if (!IS_DEDICATED_SERVER())
{
return true;
}
int beta = ENG_CHECK_PARM("-beta", nullptr);
if (beta)
{
return true;
}
#endif // #ifdef BUILD_LATEST
return false;
}
bool UTIL_AreHostagesImprov()
{
if (AreRunningCZero())

View File

@ -294,6 +294,7 @@ bool UTIL_IsGame(const char *pszGameName);
real_t UTIL_GetPlayerGaitYaw(int playerIndex);
int UTIL_ReadFlags(const char *c);
bool UTIL_AreBotsAllowed();
bool UTIL_IsBeta();
bool UTIL_AreHostagesImprov();
int UTIL_GetNumPlayers();
bool UTIL_IsSpawnPointOccupied(CBaseEntity *pSpot);

View File

@ -30,8 +30,9 @@
void Regamedll_Game_Init()
{
g_bIsCzeroGame = UTIL_IsGame("czero");
g_bAllowedCSBot = UTIL_AreBotsAllowed(); // determine whether bots can be used or not
g_bIsBeta = UTIL_IsBeta();
g_bIsCzeroGame = UTIL_IsGame("czero");
g_bAllowedCSBot = UTIL_AreBotsAllowed(); // determine whether bots can be used or not
g_bHostageImprov = UTIL_AreHostagesImprov(); // determine whether hostage improv can be used or not
WeaponInfoReset();

View File

@ -34,3 +34,8 @@ inline bool AreRunningCZero()
{
return g_bIsCzeroGame;
}
inline bool AreRunningBeta()
{
return g_bIsBeta;
}