void MRecipientFilter::AddAllPlayers(int maxClients) { m_Recipients.RemoveAll(); int i; for ( i = 1; i <= maxClients; i++ ) { #if defined ( GAME_CSGO ) edict_t *pPlayer = PEntityOfEntIndex(i); #else edict_t *pPlayer = engine->PEntityOfEntIndex(i); #endif if ( !pPlayer || pPlayer->IsFree()) { continue; } IPlayerInfo *playerinfo = playerinfomanager->GetPlayerInfo( pPlayer ); if (!playerinfo || !playerinfo->IsConnected()) { continue; } if (playerinfo->IsHLTV()) { continue; } if (strcmp(playerinfo->GetNetworkIDString(),"BOT") == 0) { continue; } m_Recipients.AddToTail(i); } }
bool CSizzPluginContext::CanRecordDemo() { for (int i = 1; i <= GetMaxClients(); ++i) { edict_t *pEdict = EdictFromEntIndex(i); IPlayerInfo *pInfo = m_pPlayerInfoManager->GetPlayerInfo(pEdict); if (pInfo && pInfo->IsHLTV()) { return true; } } return false; }
int NczPlayer::aimingAt() { trace_t trace; Ray_t ray; edict_t* edict = GetEdict(); if(!edict) return -1; IPlayerInfo* playerinfo = GetPlayerInfo(); if(!playerinfo) return -1; CBotCmd cmd = playerinfo->GetLastUserCommand(); Vector earPos; CIFaceManager::GetInstance()->GetIclients()->ClientEarPosition(edict, &earPos); Vector eyePos = earPos; QAngle eyeAngles = cmd.viewangles; Vector vEnd; AngleVectors(eyeAngles, &vEnd); vEnd = vEnd * 8192.0f + eyePos; ray.Init(eyePos,vEnd); CIFaceManager::GetInstance()->GetItrace()->TraceRay( ray, (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_MONSTER | CONTENTS_DEBRIS | CONTENTS_HITBOX), NULL, &trace ); edict_t* target = CIFaceManager::GetInstance()->GetIents()->BaseEntityToEdict(trace.m_pEnt); if ( target && !Helpers::IndexOfEdict(target) == 0 && !trace.allsolid ) { if(!Helpers::isValidEdict(target)) return -1; #undef GetClassName if(strcmp(target->GetClassName(), "player") == 0) { IPlayerInfo* targetinfo = CIFaceManager::GetInstance()->GetIplayers()->GetPlayerInfo(target); if(targetinfo) { int ta = targetinfo->GetTeamIndex(); int tb = playerinfo->GetTeamIndex(); if( ta != tb ) { if( targetinfo->IsPlayer() && !targetinfo->IsHLTV() && !targetinfo->IsObserver() ) { return Helpers::IndexOfEdict(target); } } } } } return -1; }
//--------------------------------------------------------------------------------- // Purpose: Process Game Frame //--------------------------------------------------------------------------------- void ManiAutoMap::GameFrame(void) { if (war_mode || mani_automap.GetInt() == 0 || ignore_this_map || automap_list_size == 0) return; if (g_RealTime < trigger_time) return; trigger_time += 15; int players = 0; bool include_bots = mani_automap_include_bots.GetBool(); int threshold = mani_automap_player_threshold.GetInt(); // Count players for (int i = 1; i <= max_players; i++) { // Faster than FindPlayerByIndex() #if defined ( GAME_CSGO ) edict_t *pEntity = PEntityOfEntIndex(i); #else edict_t *pEntity = engine->PEntityOfEntIndex(i); #endif if(pEntity && !pEntity->IsFree() ) { IPlayerInfo *playerinfo = playerinfomanager->GetPlayerInfo( pEntity ); if (playerinfo && playerinfo->IsConnected()) { if (playerinfo->IsHLTV()) continue; if (!include_bots && strcmp(playerinfo->GetNetworkIDString(), "BOT") == 0) continue; players ++; if (players > threshold) { // Broken threshold so just ignore, but reset the timeout this->ResetTimeout(mani_automap_timer.GetInt()); return; } } } } // Need to change map if (mani_automap_set_nextmap.GetInt() != 0) { set_next_map = true; } else { set_next_map = false; } int map_choice = this->ChooseMap(); override_changelevel = 0; override_setnextmap = false; ignore_this_map = true; LogCommand (NULL, "Autochange to map %s while server idle\n", automap_list[map_choice].map_name); SetChangeLevelReason("Automap changed map"); char changelevel_command[128]; snprintf(changelevel_command, sizeof(changelevel_command), "changelevel %s\n", automap_list[map_choice].map_name); engine->ServerCommand(changelevel_command); }