// Bot Ping v1.2
// Gives bots a ping value numerical instead of the word "BOT" on the scoreboard.
// Requires Eventscripts 1.5+
// Thanks to microbyte, Mattie, SuperDave and Eins for either directly
// or indirectly with this script.


block config
{
  // set minping
  es_xset bp_minping 50
  // set maxping
  es_xset bp_maxping 75
  // set ping frequency in seconds
  es_xset bp_ping_time 3
}

block load
{
  es_xdoblock rg_botping/config
  es_xset rg_botping "v1.2"
  es_xmakepublic rg_botping
  
  es_xset bp_getgame 0
  es_xset bp_player_manager 0
  es_xset bp_setping 0
  es_xset bp_player_index 0
  es_xset bp_format_ping 0
  repeat create ping_timer "es_xdoblock rg_botping/initiate_bot_ping"
  es repeat start ping_timer server_var(bp_ping_time)
}

block unload
{
  repeat delete ping_timer
}

event es_map_start
{
  repeat delete ping_timer
  repeat create ping_timer "es_xdoblock rg_botping/initiate_bot_ping"
  es repeat start ping_timer server_var(bp_ping_time)
}

block initiate_bot_ping
{
  es_xgetgame bp_getgame
  if (server_var(bp_getgame) == "Counter-Strike: Source") do
  {
    es_xgetentityindex bp_player_manager cs_player_manager
  }
  if ("Day of Defeat" in server_var(bp_getgame)) do
  {
    es_xgetentityindex bp_player_manager dod_player_manager
  }
  if ("Deathmatch" in server_var(bp_getgame)) do
  {
    es_xgetentityindex bp_player_manager player_manager
  }

  es_xcreateplayerlist bp_playerlist
  es_xkeygroupfilter bp_playerlist only steamid BOT
  es_xforeachkey bp_userid in bp_playerlist "es_xdoblock rg_botping/give_bot_ping"
  es_xkeygroupdelete bp_playerlist
}

block give_bot_ping
{
  es_rand bp_setping server_var(bp_minping) server_var(bp_maxping)
  es getplayerinfo bp_player_index server_var(bp_userid) index
  if (server_var(bp_player_index) > 9) do
  {
    es_xformatv bp_format_ping "CPlayerResource.m_iPing.0%1" bp_player_index
  }
  else do
  {
    es_xformatv bp_format_ping "CPlayerResource.m_iPing.00%1" bp_player_index
  }
  es_setindexprop server_var(bp_player_manager) server_var(bp_format_ping) server_var(bp_setping)
}
