"""
* =============================================================================
* EventScripts PsychoStats Plugin
* Implements support for PsychoStats and enhances game logging to provide more
* statistics.
*
* This plugin will add "Spatial" stats to mods (just like TF). This allows
* Heatmaps and trajectories to be created and viewed in the player stats.
*
* =============================================================================
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*
* Version: $Id$
* Author: K1ller
"""
import es
spat_team1 = "Team1"
spat_team2 = "Team2"
spat_game = ""
def initGameTeams(spat_game):
# Look gametypes.txt for reference
# Counter-Strike & Counter-Strike: Source
global spat_team1, spat_team2
if (spat_game.find("Counter-Strike") != -1):
spat_team1 = "TERRORIST" # Terrorist team index 3
spat_team2 = "CT" # CT team index 4
# Day of Defeat & Day of Defeat: Source
if (spat_game.find("Day of Defeat") != -1):
spat_team1 = "Allies" # Allies team index 3
spat_team2 = "Axis" # Axis team index 4
# Deathmatch & Team Deathmatch
if (spat_game.find("Deathmatch") != -1):
if (es.mp_teamplay == 1):
spat_team1 = "REBEL" # Team index 0 for all players
spat_team2 = "REBEL" # Team index 0 for all players
else:
spat_team1 = "COMBINE" # Team index 2
spat_team2 = "REBEL" # Team index 3
# Half-Life 2 CTF
if (spat_game.find("Half-Life 2 CTF") != -1):
spat_team1 = "Combine" # Combine team index 3
spat_team2 = "Rebel" # Rebel team index 4
# Team Fortress
if (spat_game.find("Team Fortress") != -1):
spat_team1 = "Blue" # Blue team index 3
spat_team2 = "Red" # Red team index 4
def load():
global spat_game
spat_game = es.getgame()
initGameTeams(spat_game)
def player_death(event_var):
# Log event samples for player_death events
# [KTRAJ] "k1ller<9>" killed "Alfred<15>" with "deagle" (headshot) (killer_position "926 1286 32") (victim_position "204 1179 83")
# [KTRAJ] "k1ller<8>" committed suicide with "hegrenade"
global spat_game
# If TF2 then do nothing as TF2 has this logging by default
if (spat_game == "Team Fortress"):
return 0
# Get attacker userid
spat_attackerId = es.event_var['attacker']
# Get victim userid
spat_victimId = event_var['userid']
# Get attacker name
spat_attackerName = es.getplayername(event_var['attacker'])
# Get victim name
spat_victimName = es.getplayername(event_var['userid'])
# Get attacker SteamID
spat_attackerSteamId = event_var['es_attackersteamid']
# Get victim SteamID
spat_victimSteamId = event_var['es_steamid']
# Get attacker team index
spat_attackerTeamId = event_var['es_attackerteam']
# Get victim team index
spat_victimTeamId = event_var['es_userteam']
# Set team names according to current mod
if(spat_attackerTeamId == 1):
spat_attackerTeam = spat_team1
spat_victimTeam = spat_team2
else:
spat_attackerTeam = spat_team2
spat_victimTeam = spat_team1
# Get weapon
spat_weapon = event_var['weapon']
# Get headshot
spat_headshot = event_var['headshot']
# Get location for attacker
spat_attackerX, spat_attackerY, spat_attackerZ = es.getplayerlocation(spat_attackerId)
# Get location for victim
spat_victimX, spat_victimY, spat_victimZ = es.getplayerlocation(spat_victimId)
# Form log event
if(spat_attackerTeamId != spat_victimTeamId):
logLine = "[KTRAJ] \"%s<%s><%s><%s>\" killed \"%s<%s><%s><%s>\" with \"%s\" %s(attacker_position \"%d %d %d\") (victim_position \"%d %d %d\")" % (spat_attackerName,
spat_attackerId,
spat_attackerSteamId,
spat_attackerTeam,
spat_victimName,
spat_victimId,
spat_victimSteamId,
spat_victimTeam,
spat_weapon,
('', '(headshot) ')[spat_headshot == '1'],
spat_attackerX,
spat_attackerY,
spat_attackerZ,
spat_victimX,
spat_victimY,
spat_victimZ)
else:
logLine = "[KTRAJ] \"%s<%s><%s><%s>\" committed suicide with \"%s\" (attacker_position \"%d %d %d\")" % (spat_attackerName,
spat_attackerId,
spat_attackerSteamId,
spat_attackerTeam,
spat_weapon,
spat_attackerX,
spat_attackerY,
spat_attackerZ)
es.server.cmd('es_xlogq '+logLine)