more work on optimizing cpu usage

reverted active grenades on TASK_* items
This commit is contained in:
Dmitry 2015-06-11 23:22:50 +03:00
commit 66c33472ff
8 changed files with 91 additions and 180 deletions

View file

@ -993,7 +993,7 @@ private:
bool IsInViewCone (const Vector &origin); bool IsInViewCone (const Vector &origin);
void ReactOnSound (void); void ReactOnSound (void);
bool CheckVisibility (entvars_t *targetOrigin, Vector *origin, byte *bodyPart); bool CheckVisibility (edict_t *target, Vector *origin, byte *bodyPart);
bool IsEnemyViewable (edict_t *player); bool IsEnemyViewable (edict_t *player);
edict_t *FindNearestButton (const char *className); edict_t *FindNearestButton (const char *className);
@ -1626,7 +1626,6 @@ public:
// prototypes of bot functions... // prototypes of bot functions...
extern int GetWeaponReturn (bool isString, const char *weaponAlias, int weaponIndex = -1); extern int GetWeaponReturn (bool isString, const char *weaponAlias, int weaponIndex = -1);
extern int GetTeam (edict_t *ent);
extern float GetShootingConeDeviation (edict_t *ent, Vector *position); extern float GetShootingConeDeviation (edict_t *ent, Vector *position);
extern float GetWaveLength (const char *fileName); extern float GetWaveLength (const char *fileName);

View file

@ -122,3 +122,8 @@ static inline bool IsEntityNull (const edict_t *ent)
{ {
return !ent || !EntOffsetOfEntity (ent); return !ent || !EntOffsetOfEntity (ent);
} }
static inline int GetTeam (edict_t *ent)
{
return g_clients[IndexOfEntity (ent) - 1].team;
}

View file

@ -100,7 +100,7 @@ bool Bot::IsInViewCone (const Vector &origin)
return ::IsInViewCone (origin, GetEntity ()); return ::IsInViewCone (origin, GetEntity ());
} }
bool Bot::CheckVisibility (entvars_t *targetEntity, Vector *origin, byte *bodyPart) bool Bot::CheckVisibility (edict_t *target, Vector *origin, byte *bodyPart)
{ {
// this function checks visibility of a bot target. // this function checks visibility of a bot target.
@ -110,69 +110,41 @@ bool Bot::CheckVisibility (entvars_t *targetEntity, Vector *origin, byte *bodyPa
*bodyPart = 0; *bodyPart = 0;
// check for the body // check for the body
TraceLine (botHead, targetEntity->origin, true, true, GetEntity (), &tr); TraceLine (botHead, target->v.origin, true, true, GetEntity (), &tr);
if (tr.flFraction >= 1.0) if (tr.flFraction >= 1.0f)
{ {
*bodyPart |= VISIBLE_BODY; *bodyPart |= VISIBLE_BODY;
*origin = targetEntity->origin; *origin = target->v.origin;
} }
// check for the head // check for the head
TraceLine (botHead, targetEntity->origin + targetEntity->view_ofs, true, true, GetEntity (), &tr); TraceLine (botHead, target->v.origin + target->v.view_ofs, true, true, GetEntity (), &tr);
if (tr.flFraction >= 1.0) if (tr.flFraction >= 1.0f)
{ {
*bodyPart |= VISIBLE_HEAD; *bodyPart |= VISIBLE_HEAD;
*origin = targetEntity->origin + targetEntity->view_ofs; *origin = target->v.origin + target->v.view_ofs;
} }
if (*bodyPart != 0) if (*bodyPart != 0)
return true; return true;
#if 0
// dimension table
const int8 dimensionTab[8][3] =
{
{1, 1, 1}, { 1, 1, -1},
{1, -1, 1}, {-1, 1, 1},
{1, -1, -1}, {-1, -1, 1},
{-1, 1, -1}, {-1, -1, -1}
};
// check the box borders
for (int i = 7; i >= 0; i--)
{
Vector targetOrigin = petargetOrigin->origin + Vector (dimensionTab[i][0] * 24.0, dimensionTab[i][1] * 24.0, dimensionTab[i][2] * 24.0);
// check direct line to random part of the player body
TraceLine (botHead, targetOrigin, true, true, GetEntity (), &tr);
// check if we hit something
if (tr.flFraction >= 1.0)
{
*origin = tr.vecEndPos;
*bodyPart |= VISIBLE_OTHER;
return true;
}
}
#else
// worst case, choose random position in enemy body // worst case, choose random position in enemy body
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
{ {
Vector targetOrigin = targetEntity->origin; // get the player origin Vector pos = target->v.origin; // get the player origin
// find the vector beetwen mins and maxs of the player body // find the vector beetwen mins and maxs of the player body
targetOrigin.x += Random.Float (targetEntity->mins.x * 0.5, targetEntity->maxs.x * 0.5); pos.x += Random.Float (target->v.mins.x * 0.5f, target->v.maxs.x * 0.5f);
targetOrigin.y += Random.Float (targetEntity->mins.y * 0.5, targetEntity->maxs.y * 0.5); pos.y += Random.Float (target->v.mins.y * 0.5f, target->v.maxs.y * 0.5f);
targetOrigin.z += Random.Float (targetEntity->mins.z * 0.5, targetEntity->maxs.z * 0.5); pos.z += Random.Float (target->v.mins.z * 0.5f, target->v.maxs.z * 0.5f);
// check direct line to random part of the player body // check direct line to random part of the player body
TraceLine (botHead, targetOrigin, true, true, GetEntity (), &tr); TraceLine (botHead, pos, true, true, GetEntity (), &tr);
// check if we hit something // check if we hit something
if (tr.flFraction >= 1.0) if (tr.flFraction >= 1.0f)
{ {
*origin = tr.vecEndPos; *origin = tr.vecEndPos;
*bodyPart |= VISIBLE_OTHER; *bodyPart |= VISIBLE_OTHER;
@ -180,7 +152,6 @@ bool Bot::CheckVisibility (entvars_t *targetEntity, Vector *origin, byte *bodyPa
return true; return true;
} }
} }
#endif
return false; return false;
} }
@ -194,7 +165,7 @@ bool Bot::IsEnemyViewable (edict_t *player)
if (IsValidPlayer (pev->dmg_inflictor) && GetTeam (pev->dmg_inflictor) != m_team && ::IsInViewCone (EyePosition (), pev->dmg_inflictor)) if (IsValidPlayer (pev->dmg_inflictor) && GetTeam (pev->dmg_inflictor) != m_team && ::IsInViewCone (EyePosition (), pev->dmg_inflictor))
forceTrueIfVisible = true; forceTrueIfVisible = true;
if (CheckVisibility (VARS (player), &m_enemyOrigin, &m_visibility) && (IsInViewCone (player->v.origin + Vector (0, 0, 14)) || forceTrueIfVisible)) if (CheckVisibility (player, &m_enemyOrigin, &m_visibility) && (IsInViewCone (player->v.origin + Vector (0, 0, 14)) || forceTrueIfVisible))
{ {
m_seeEnemyTime = GetWorldTime (); m_seeEnemyTime = GetWorldTime ();
m_lastEnemy = player; m_lastEnemy = player;
@ -241,7 +212,7 @@ bool Bot::EntityIsVisible (const Vector &dest, bool fromBody)
void Bot::CheckGrenadeThrow (void) void Bot::CheckGrenadeThrow (void)
{ {
// check if throwing a grenade is a good thing to do... // check if throwing a grenade is a good thing to do...
if (m_lastEnemy == NULL || yb_ignore_enemies.GetBool () || yb_jasonmode.GetBool () && m_grenadeCheckTime > GetWorldTime () || m_isUsingGrenade || GetTaskId () == TASK_PLANTBOMB || GetTaskId () == TASK_DEFUSEBOMB || m_isReloading || !IsAlive (m_lastEnemy)) if (m_lastEnemy == NULL || yb_ignore_enemies.GetBool () || yb_jasonmode.GetBool () || m_grenadeCheckTime > GetWorldTime () || m_isUsingGrenade || GetTaskId () == TASK_PLANTBOMB || GetTaskId () == TASK_DEFUSEBOMB || m_isReloading || !IsAlive (m_lastEnemy))
{ {
m_states &= ~(STATE_THROW_HE | STATE_THROW_FB | STATE_THROW_SG); m_states &= ~(STATE_THROW_HE | STATE_THROW_FB | STATE_THROW_SG);
return; return;
@ -401,6 +372,9 @@ void Bot::AvoidGrenades (void)
{ {
edict_t *ent = activeGrenades[it]; edict_t *ent = activeGrenades[it];
if (ent->v.effects & EF_NODRAW)
continue;
// check if visible to the bot // check if visible to the bot
if (!EntityIsVisible (ent->v.origin) && InFieldOfView (ent->v.origin - EyePosition ()) > pev->fov / 2) if (!EntityIsVisible (ent->v.origin) && InFieldOfView (ent->v.origin - EyePosition ()) > pev->fov / 2)
continue; continue;
@ -460,17 +434,20 @@ bool Bot::IsBehindSmokeClouds (edict_t *ent)
// find all grenades on the map // find all grenades on the map
IterateArray (activeGrenades, it) IterateArray (activeGrenades, it)
{ {
edict_t *pentGrenade = activeGrenades[it]; edict_t *grenade = activeGrenades[it];
if (grenade->v.effects & EF_NODRAW)
continue;
// if grenade is invisible don't care for it // if grenade is invisible don't care for it
if (!(pentGrenade->v.flags & (FL_ONGROUND | FL_PARTIALGROUND)) || strcmp (STRING (pentGrenade->v.model) + 9, "smokegrenade.mdl")) if (!(grenade->v.flags & (FL_ONGROUND | FL_PARTIALGROUND)) || strcmp (STRING (grenade->v.model) + 9, "smokegrenade.mdl"))
continue; continue;
// check if visible to the bot // check if visible to the bot
if (!EntityIsVisible (ent->v.origin) && InFieldOfView (ent->v.origin - EyePosition ()) > pev->fov / 3) if (!EntityIsVisible (ent->v.origin) && InFieldOfView (ent->v.origin - EyePosition ()) > pev->fov / 3)
continue; continue;
const Vector &entityOrigin = GetEntityOrigin (pentGrenade); const Vector &entityOrigin = GetEntityOrigin (grenade);
const Vector &betweenNade = (entityOrigin - pev->origin).Normalize (); const Vector &betweenNade = (entityOrigin - pev->origin).Normalize ();
const Vector &betweenResult = ((Vector (betweenNade.y, betweenNade.x, 0) * 150.0 + entityOrigin) - pev->origin).Normalize (); const Vector &betweenResult = ((Vector (betweenNade.y, betweenNade.x, 0) * 150.0 + entityOrigin) - pev->origin).Normalize ();
@ -2469,7 +2446,7 @@ void Bot::CheckRadioCommands (void)
{ {
if (IsEntityNull (m_enemy) && m_seeEnemyTime + 4.0 < GetWorldTime ()) if (IsEntityNull (m_enemy) && m_seeEnemyTime + 4.0 < GetWorldTime ())
{ {
// Decrease Fear Levels to lower probability of Bot seeking Cover again // decrease fear levels to lower probability of bot seeking cover again
m_fearLevel -= 0.2; m_fearLevel -= 0.2;
if (m_fearLevel < 0.0) if (m_fearLevel < 0.0)
@ -2902,33 +2879,27 @@ void Bot::ChooseAimDirection (void)
TraceResult tr; TraceResult tr;
memset (&tr, 0, sizeof (TraceResult)); memset (&tr, 0, sizeof (TraceResult));
unsigned int flags = m_aimFlags;
if (!(m_currentWaypointIndex >= 0 && m_currentWaypointIndex < g_numWaypoints)) if (!(m_currentWaypointIndex >= 0 && m_currentWaypointIndex < g_numWaypoints))
GetValidWaypoint (); GetValidWaypoint ();
// check if last enemy vector valid // check if last enemy vector valid
if (m_seeEnemyTime + 7.0 < GetWorldTime () && m_lastEnemyOrigin != nullvec) if (m_seeEnemyTime + 7.0 < GetWorldTime () && m_lastEnemyOrigin != nullvec && (pev->origin - m_lastEnemyOrigin).GetLength () >= 1600.0f && IsEntityNull (m_enemy) && !UsesSniper ())
{ {
TraceLine (EyePosition (), m_lastEnemyOrigin, false, true, GetEntity (), &tr); TraceLine (EyePosition (), m_lastEnemyOrigin, false, true, GetEntity (), &tr);
if ((pev->origin - m_lastEnemyOrigin).GetLength () >= 1600 && IsEntityNull (m_enemy) && !UsesSniper () || (tr.flFraction <= 0.2 && tr.pHit == g_hostEntity)) if (tr.flFraction <= 0.2 && tr.pHit == g_hostEntity)
{ {
if ((m_aimFlags & (AIM_LAST_ENEMY | AIM_PREDICT_PATH)) && m_wantsToFire) if ((m_aimFlags & (AIM_LAST_ENEMY | AIM_PREDICT_PATH)) && m_wantsToFire)
m_wantsToFire = false; m_wantsToFire = false;
m_lastEnemyOrigin = nullvec; m_lastEnemyOrigin = nullvec;
m_aimFlags &= ~(AIM_LAST_ENEMY | AIM_PREDICT_PATH); m_aimFlags &= ~(AIM_LAST_ENEMY | AIM_PREDICT_PATH);
flags &= ~(AIM_LAST_ENEMY | AIM_PREDICT_PATH);
flags = m_aimFlags;
} }
} }
else else if (m_lastEnemyOrigin == nullvec)
{
m_aimFlags &= ~(AIM_LAST_ENEMY | AIM_PREDICT_PATH); m_aimFlags &= ~(AIM_LAST_ENEMY | AIM_PREDICT_PATH);
flags = m_aimFlags;
} unsigned int flags = m_aimFlags;
// don't allow bot to look at danger positions under certain circumstances // don't allow bot to look at danger positions under certain circumstances
if (!(flags & (AIM_GRENADE | AIM_ENEMY | AIM_ENTITY))) if (!(flags & (AIM_GRENADE | AIM_ENEMY | AIM_ENTITY)))
@ -4266,13 +4237,9 @@ void Bot::RunTask (void)
else else
{ {
edict_t *ent = NULL; edict_t *ent = NULL;
Array <entity_t> activeGrenades = g_botManager->GetActiveGrenades ();
// find all grenades on the map while (!IsEntityNull (ent = FIND_ENTITY_BY_CLASSNAME (ent, "grenade")))
IterateArray (activeGrenades, it)
{ {
ent = activeGrenades[it];
if (ent->v.owner == GetEntity () && strcmp (STRING (ent->v.model) + 9, "hegrenade.mdl") == 0) if (ent->v.owner == GetEntity () && strcmp (STRING (ent->v.model) + 9, "hegrenade.mdl") == 0)
{ {
// set the correct velocity for the grenade // set the correct velocity for the grenade
@ -4336,13 +4303,8 @@ void Bot::RunTask (void)
else else
{ {
edict_t *ent = NULL; edict_t *ent = NULL;
Array <entity_t> activeGrenades = g_botManager->GetActiveGrenades (); while (!IsEntityNull (ent = FIND_ENTITY_BY_CLASSNAME (ent, "grenade")))
// find all grenades on the map
IterateArray (activeGrenades, it)
{ {
ent = activeGrenades[it];
if (ent->v.owner == GetEntity () && strcmp (STRING (ent->v.model) + 9, "flashbang.mdl") == 0) if (ent->v.owner == GetEntity () && strcmp (STRING (ent->v.model) + 9, "flashbang.mdl") == 0)
{ {
// set the correct velocity for the grenade // set the correct velocity for the grenade
@ -6081,7 +6043,7 @@ void Bot::ReactOnSound (void)
extern ConVar yb_shoots_thru_walls; extern ConVar yb_shoots_thru_walls;
// check if heard enemy can be seen // check if heard enemy can be seen
if (CheckVisibility (VARS (player), &m_lastEnemyOrigin, &m_visibility)) if (CheckVisibility (player, &m_lastEnemyOrigin, &m_visibility))
{ {
m_enemy = player; m_enemy = player;
m_lastEnemy = player; m_lastEnemy = player;

View file

@ -72,21 +72,6 @@ int BotCommandHandler (edict_t *ent, const char *arg0, const char *arg1, const c
else if (stricmp (arg0, "fillserver") == 0 || stricmp (arg0, "fill") == 0) else if (stricmp (arg0, "fillserver") == 0 || stricmp (arg0, "fill") == 0)
g_botManager->FillServer (atoi (arg1), IsNullString (arg2) ? -1 : atoi (arg2), IsNullString (arg3) ? -1 : atoi (arg3), IsNullString (arg4) ? -1 : atoi (arg4)); g_botManager->FillServer (atoi (arg1), IsNullString (arg2) ? -1 : atoi (arg2), IsNullString (arg3) ? -1 : atoi (arg3), IsNullString (arg4) ? -1 : atoi (arg4));
// swap counter-terrorist and terrorist teams
else if (stricmp (arg0, "swaptteams") == 0 || stricmp (arg0, "swap") == 0)
{
for (int i = 0; i < GetMaxClients (); i++)
{
if (!(g_clients[i].flags & CF_USED))
continue;
if (IsValidBot (g_clients[i].ent))
FakeClientCommand (g_clients[i].ent, "chooseteam; menuselect %d; menuselect 5", GetTeam (g_clients[i].ent) == TEAM_CF ? 1 : 2);
else
(*g_engfuncs.pfnClientCommand) (g_clients[i].ent, "chooseteam; menuselect %d", GetTeam (g_clients[i].ent) == TEAM_CF ? 1 : 2);
}
}
// select the weapon mode for bots // select the weapon mode for bots
else if (stricmp (arg0, "weaponmode") == 0 || stricmp (arg0, "wmode") == 0) else if (stricmp (arg0, "weaponmode") == 0 || stricmp (arg0, "wmode") == 0)
{ {
@ -116,48 +101,6 @@ int BotCommandHandler (edict_t *ent, const char *arg0, const char *arg1, const c
} }
} }
// force bots to execute client command
else if (stricmp (arg0, "sendcmd") == 0 || stricmp (arg0, "order") == 0)
{
if (IsNullString (arg1))
return 1;
edict_t *target = EntityOfIndex (atoi (arg1) - 1);
if (IsValidBot (target))
{
FakeClientCommand (target, arg2);
ClientPrint (ent, print_withtag, "Bot %s executing command %s", STRING (target->v.netname), arg2);
}
else
ClientPrint (ent, print_withtag, "Player is not BOT!");
}
// display current time on the server
else if (stricmp (arg0, "test") == 0)
{
ServerPrint ("mp_bt = %.2f", mp_startmoney.GetFloat ());
}
// displays bot about information
else if (stricmp (arg0, "about_bot") == 0 || stricmp (arg0, "about") == 0)
{
if (g_gameVersion == CSV_OLD)
{
ServerPrint ("Cannot do this on CS 1.5");
return 1;
}
char aboutData[] =
"+---------------------------------------------------------------------------------+\n"
" The YaPB for Counter-Strike Version " PRODUCT_SUPPORT_VERSION "\n"
" Created by " PRODUCT_AUTHOR ", Using PODBot Code\n"
" Website: " PRODUCT_URL "\n"
"+---------------------------------------------------------------------------------+\n";
HudMessage (ent, true, Vector (Random.Long (33, 255), Random.Long (33, 255), Random.Long (33, 255)), aboutData);
}
// displays version information // displays version information
else if (stricmp (arg0, "version") == 0 || stricmp (arg0, "ver") == 0) else if (stricmp (arg0, "version") == 0 || stricmp (arg0, "ver") == 0)
{ {
@ -201,7 +144,7 @@ int BotCommandHandler (edict_t *ent, const char *arg0, const char *arg1, const c
if (!IsDedicatedServer ()) if (!IsDedicatedServer ())
{ {
ServerPrint ("yapb autowp - toggle autowppointing."); ServerPrint ("yapb autowp - toggle autowaypointing.");
ServerPrint ("yapb wp - toggle waypoint showing."); ServerPrint ("yapb wp - toggle waypoint showing.");
ServerPrint ("yapb wp on noclip - enable noclip cheat"); ServerPrint ("yapb wp on noclip - enable noclip cheat");
ServerPrint ("yapb wp save nocheck - save waypoints without checking."); ServerPrint ("yapb wp save nocheck - save waypoints without checking.");
@ -209,7 +152,7 @@ int BotCommandHandler (edict_t *ent, const char *arg0, const char *arg1, const c
ServerPrint ("yapb wp menu - open main waypoint menu."); ServerPrint ("yapb wp menu - open main waypoint menu.");
ServerPrint ("yapb wp addbasic - creates basic waypoints on map."); ServerPrint ("yapb wp addbasic - creates basic waypoints on map.");
ServerPrint ("yapb wp find - show direction to specified waypoint."); ServerPrint ("yapb wp find - show direction to specified waypoint.");
ServerPrint ("yapb wp load - wload the waypoint file from hard disk."); ServerPrint ("yapb wp load - load the waypoint file from hard disk.");
ServerPrint ("yapb wp check - checks if all waypoints connections are valid."); ServerPrint ("yapb wp check - checks if all waypoints connections are valid.");
ServerPrint ("yapb wp cache - cache nearest waypoint."); ServerPrint ("yapb wp cache - cache nearest waypoint.");
ServerPrint ("yapb wp teleport - teleport hostile to specified waypoint."); ServerPrint ("yapb wp teleport - teleport hostile to specified waypoint.");

View file

@ -1358,13 +1358,8 @@ void BotManager::UpdateActiveGrenades (void)
// search the map for any type of grenade // search the map for any type of grenade
while (!IsEntityNull (grenade = FIND_ENTITY_BY_CLASSNAME (grenade, "grenade"))) while (!IsEntityNull (grenade = FIND_ENTITY_BY_CLASSNAME (grenade, "grenade")))
{
if (grenade->v.effects & EF_NODRAW)
continue;
m_activeGrenades.Push (grenade); m_activeGrenades.Push (grenade);
} }
}
const Array <entity_t> &BotManager::GetActiveGrenades (void) const Array <entity_t> &BotManager::GetActiveGrenades (void)
{ {

View file

@ -311,7 +311,7 @@ void Bot::CheckTerrain (float movedDistance, const Vector &dir, const Vector &di
TraceResult tr; TraceResult tr;
edict_t *nearest = NULL; edict_t *nearest = NULL;
if (FindNearestPlayer (reinterpret_cast <void **> (&nearest), GetEntity (), pev->maxspeed, true, false, true, true)) // found somebody? if (g_timeRoundStart + 10.0f < GetWorldTime () && FindNearestPlayer (reinterpret_cast <void **> (&nearest), GetEntity (), pev->maxspeed, true, false, true, true)) // found somebody?
{ {
MakeVectors (m_moveAngles); // use our movement angles MakeVectors (m_moveAngles); // use our movement angles
@ -655,7 +655,7 @@ bool Bot::DoWaypointNav (void)
if (IsOnFloor () || IsOnLadder ()) if (IsOnFloor () || IsOnLadder ())
{ {
if (m_desiredVelocity.x != 0.0f && m_desiredVelocity.y != 0.0f) if (m_desiredVelocity.x != 0.0f && m_desiredVelocity.y != 0.0f)
pev->velocity = m_desiredVelocity + m_desiredVelocity * 0.11f; pev->velocity = m_desiredVelocity + m_desiredVelocity * 0.076f;
pev->button |= IN_JUMP; pev->button |= IN_JUMP;
@ -1939,7 +1939,6 @@ void Bot::GetValidWaypoint (void)
if (m_goalFailed > 1) if (m_goalFailed > 1)
{ {
DebugMsg ("GOAL FAILED!");
int newGoal = FindGoal (); int newGoal = FindGoal ();
m_prevGoalIndex = newGoal; m_prevGoalIndex = newGoal;
@ -2300,9 +2299,7 @@ bool Bot::GetBestNextWaypoint (void)
if (!IsPointOccupied (id)) if (!IsPointOccupied (id))
{ {
DebugMsg ("postprocess %d -> %d", m_navNode->index, id);
m_navNode->index = id; m_navNode->index = id;
return true; return true;
} }
} }

View file

@ -270,6 +270,8 @@ void NetworkMsg::Execute (void *p)
if (IsEntityNull (killer) || IsEntityNull (victim)) if (IsEntityNull (killer) || IsEntityNull (victim))
break; break;
if (yb_communication_type.GetInt () == 2)
{
// need to send congrats on well placed shot // need to send congrats on well placed shot
for (int i = 0; i < GetMaxClients (); i++) for (int i = 0; i < GetMaxClients (); i++)
{ {
@ -285,6 +287,7 @@ void NetworkMsg::Execute (void *p)
break; break;
} }
} }
}
// notice nearby to victim teammates, that attacker is near // notice nearby to victim teammates, that attacker is near
for (int i = 0; i < GetMaxClients (); i++) for (int i = 0; i < GetMaxClients (); i++)
@ -394,11 +397,30 @@ void NetworkMsg::Execute (void *p)
g_isCommencing = true; g_isCommencing = true;
if (FStrEq (PTR_TO_STR (p), "#CTs_Win")) if (FStrEq (PTR_TO_STR (p), "#CTs_Win"))
{
g_botManager->SetLastWinner (TEAM_CF); // update last winner for economics g_botManager->SetLastWinner (TEAM_CF); // update last winner for economics
if (yb_communication_type.GetInt () == 2)
{
Bot *bot = g_botManager->FindOneValidAliveBot ();
if (bot != NULL && IsAlive (bot->GetEntity ()))
bot->HandleChatterMessage (PTR_TO_STR (p));
}
}
if (FStrEq (PTR_TO_STR (p), "#Terrorists_Win")) if (FStrEq (PTR_TO_STR (p), "#Terrorists_Win"))
{
g_botManager->SetLastWinner (TEAM_TF); // update last winner for economics g_botManager->SetLastWinner (TEAM_TF); // update last winner for economics
if (yb_communication_type.GetInt () == 2)
{
Bot *bot = g_botManager->FindOneValidAliveBot ();
if (bot != NULL && IsAlive (bot->GetEntity ()))
bot->HandleChatterMessage (PTR_TO_STR (p));
}
}
g_waypoint->SetBombPosition (true); g_waypoint->SetBombPosition (true);
} }
else if (!g_bombPlanted && FStrEq (PTR_TO_STR (p), "#Bomb_Planted")) else if (!g_bombPlanted && FStrEq (PTR_TO_STR (p), "#Bomb_Planted"))
@ -428,14 +450,6 @@ void NetworkMsg::Execute (void *p)
m_bot->m_weaponBurstMode = BM_ON; m_bot->m_weaponBurstMode = BM_ON;
else if (m_bot != NULL && FStrEq (PTR_TO_STR (p), "#Switch_To_SemiAuto")) else if (m_bot != NULL && FStrEq (PTR_TO_STR (p), "#Switch_To_SemiAuto"))
m_bot->m_weaponBurstMode = BM_OFF; m_bot->m_weaponBurstMode = BM_OFF;
if (yb_communication_type.GetInt() == 2)
{
Bot *bot = g_botManager->FindOneValidAliveBot();
if (bot != NULL && IsAlive(bot->GetEntity()))
bot->HandleChatterMessage(PTR_TO_STR(p));
}
} }
break; break;

View file

@ -789,10 +789,6 @@ int GetWeaponPenetrationPower (int id)
return 0; return 0;
} }
int GetTeam (edict_t *ent)
{
return g_clients[IndexOfEntity (ent) - 1].team;
}
bool IsValidPlayer (edict_t *ent) bool IsValidPlayer (edict_t *ent)
{ {