block config
{
  // CONFIGURE playertraces HERE:
  
  // Set the time in seconds of the trace fade:
  ptrace_p_time 5
  
  // Set the intensity of the traces
  ptrace_p_alpha 255
  
  // Set the width near player of the traces
  ptrace_p_width1 20
  
  // Set the width far player of the traces
  ptrace_p_width2 10

  // Set the default trace colors
  ptrace_d_r2 255
  ptrace_d_g2 0
  ptrace_d_b2 0
  
  ptrace_d_r3 0
  ptrace_d_g3 128
  ptrace_d_b3 255
  
}

block load
{
  es_xset ptrace_i_exists 0 "PlayerTraces: exists variable"
  es_xset ptrace_i_userid 0 "PlayerTraces: userid"
  es_xset ptrace_i_team 0 "PlayerTraces: team"
  es_xset ptrace_i_v1 0 "PlayerTraces: vector1"
  es_xset ptrace_i_v2 0 "PlayerTraces: vector2"
  es_xset ptrace_i_model 0 "PlayerTraces: model index"
  es_xset ptrace_i_r 0 "PlayerTraces: red component"
  es_xset ptrace_i_g 0 "PlayerTraces: green component"
  es_xset ptrace_i_b 0 "PlayerTraces: blue component"
  es_xexists ptrace_i_exists variable ptrace_p_time
  ifx false(ptrace_i_exists) do
  {
    es_xset ptrace_p_time 0 "PlayerTraces: trace line fadeout time in seconds."
    es_xset ptrace_p_alpha 0 "PlayerTraces: trace alpha value"
    es_xset ptrace_p_width1 0 "PlayerTraces: the beam width near player"
    es_xset ptrace_p_width2 0 "PlayerTraces: the beam width far player"
    es_xset ptrace_d_r2 0 "PlayerTraces: default red color for team 2"
    es_xset ptrace_d_g2 0 "PlayerTraces: default green color for team 2"
    es_xset ptrace_d_b2 0 "PlayerTraces: default blue color for team 2"
    es_xset ptrace_d_r3 0 "PlayerTraces: default red color for team 3"
    es_xset ptrace_d_g3 0 "PlayerTraces: default green color for team 3"
    es_xset ptrace_d_b3 0 "PlayerTraces: default blue color for team 3"
    es_xdoblock playertraces/config
  }
  es_xdoblock corelib/noisy_on
  ifx true(eventscripts_currentmap) do
  {
    es_xcreateplayerlist ptrace
    es_xforeachkey ptrace_i_userid in ptrace "es_xdoblock playertraces/initc"
    es_xdoblock playertraces/precache
  }
  else do
  {
    es_xkeygroupcreate ptrace
  }
}

block unload
{
  es_xdoblock corelib/noisy_off
  es_xkeygroupdelete ptrace
}

block initc
{
  es_getplayerprop ptrace_i_v1 server_var(ptrace_i_userid) "CBaseEntity.m_vecOrigin"
  es_keysetvalue ptrace server_var(ptrace_i_userid) "vector" server_var(ptrace_i_v1)
  es_keygetvalue ptrace_i_team ptrace server_var(ptrace_i_userid) "teamid"
  if (server_var(ptrace_i_team) == 2) do
  {
    es_keysetvalue ptrace server_var(ptrace_i_userid) "r" server_var(ptrace_d_r2)
    es_keysetvalue ptrace server_var(ptrace_i_userid) "g" server_var(ptrace_d_g2)
    es_keysetvalue ptrace server_var(ptrace_i_userid) "b" server_var(ptrace_d_b2)
  }
  if (server_var(ptrace_i_team) == 3) do
  {
    es_keysetvalue ptrace server_var(ptrace_i_userid) "r" server_var(ptrace_d_r3)
    es_keysetvalue ptrace server_var(ptrace_i_userid) "g" server_var(ptrace_d_g3)
    es_keysetvalue ptrace server_var(ptrace_i_userid) "b" server_var(ptrace_d_b3)
  }
}

event player_connect
{
  es_keycreate ptrace event_var(userid)
}

event player_disconnect
{
  es_keydelete ptrace event_var(userid)
}

event player_spawn
{
  es_getplayerprop ptrace_i_v1 event_var(userid) "CBaseEntity.m_vecOrigin"
  es_keysetvalue ptrace event_var(userid) "vector" server_var(ptrace_i_v1)
}

event player_team
{
  if (event_var(team) == 2) do
  {
    es_keysetvalue ptrace event_var(userid) "r" server_var(ptrace_d_r2)
    es_keysetvalue ptrace event_var(userid) "g" server_var(ptrace_d_g2)
    es_keysetvalue ptrace event_var(userid) "b" server_var(ptrace_d_b2)
  }
  if (event_var(team) == 3) do
  {
    es_keysetvalue ptrace event_var(userid) "r" server_var(ptrace_d_r3)
    es_keysetvalue ptrace event_var(userid) "g" server_var(ptrace_d_g3)
    es_keysetvalue ptrace event_var(userid) "b" server_var(ptrace_d_b3)
  }
}

event es_map_start
{
  es_xdoblock playertraces/precache
}

block precache
{
  es_precachemodel ptrace_i_model "materials/sprites/laser.vmt"
}

event player_footstep
{
  es_getplayerprop ptrace_i_v1 event_var(userid) "CBaseEntity.m_vecOrigin"
  es_keygetvalue ptrace_i_v2 ptrace event_var(userid) "vector"
  es_keysetvalue ptrace event_var(userid) "vector" server_var(ptrace_i_v1)
  es_keygetvalue ptrace_i_r ptrace event_var(userid) "r"
  es_keygetvalue ptrace_i_g ptrace event_var(userid) "g"
  es_keygetvalue ptrace_i_b ptrace event_var(userid) "b"
  es_effect beam server_var(ptrace_i_v1) server_var(ptrace_i_v2) server_var(ptrace_i_model) server_var(ptrace_i_model) 0 0 server_var(ptrace_p_time) server_var(ptrace_p_width1) server_var(ptrace_p_width2) 0 0 server_var(ptrace_i_r) server_var(ptrace_i_g) server_var(ptrace_i_b) server_var(ptrace_p_alpha) 30
}
