Skip to content

Commit

Permalink
Merge pull request #74 from DarkRedemption/v0.1.1-SNAPSHOT
Browse files Browse the repository at this point in the history
V0.1.1 snapshot
  • Loading branch information
DarkRedemption committed Aug 17, 2016
2 parents 1fa5bec + 0fc7b2a commit 3d3225d
Show file tree
Hide file tree
Showing 47 changed files with 1,919 additions and 559 deletions.
11 changes: 8 additions & 3 deletions lua/autorun/sh_init.lua
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
DDD = {}
DDD.Config = {}
DDD.CurrentRound = {}
DDD.Database = {}
DDD.Database.Tables = {}
DDD.Gui = {}
DDD.Gui.Achievements = {}
DDD.Gui.Rank = {}
DDD.Gui.Rank = {}
DDD.Gui.Stats = {}
DDD.Misc = {}
DDD.version = "v0.1.0-RC1"
DDD.version = "v0.1.1-SNAPSHOT"

if SERVER then
local roles = {
Expand Down Expand Up @@ -36,10 +37,14 @@ if SERVER then
include("ddd/main/misc/sv_enums.lua")
include("ddd/main/misc/sv_logging.lua")
include("ddd/main/overrides/sv_corpse.lua")
--include("ddd/main/overrides/sv_c4.lua")
include("ddd/main/database/sv_sqlitedb.lua")
include("ddd/main/hooks/sv_hooks.lua")
include("ddd/main/hooks/sv_combathooks.lua")
include("ddd/main/hooks/sv_overridehooks.lua")
include("ddd/main/config/sv_config.lua")
include("ddd/main/gui/sv_overview.lua")
include("ddd/main/sv_currentround.lua")
include("ddd/main/sv_active.lua")
include("ddd/test/sv_testinit.lua")
end

Expand Down
4 changes: 3 additions & 1 deletion lua/ddd/main/config/sv_config.lua
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
DDD.Logging.LogLevel = DDD.Logging.LogLevels.Warning
DDD.Logging.LogLevel = DDD.Logging.LogLevels.Warning
DDD.Config.MinPlayers = 8
DDD.Config.MapBlacklist = {"ttt_crazy_cubes_b4", "ttt_thismapsucksdontpickit_b0"}
116 changes: 23 additions & 93 deletions lua/ddd/main/database/queries/sv_playerstats.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,19 @@ else
end
end

local function makeKillCountQuery(whereStatement)
return [[SELECT COUNT(*) AS count
FROM ddd_player_kill AS kill
LEFT JOIN ddd_round_roles AS victim_roles
ON kill.round_id == victim_roles.round_id
AND kill.victim_id == victim_roles.player_id
LEFT JOIN ddd_round_roles AS attacker_roles
ON kill.round_id == attacker_roles.round_id
AND kill.attacker_id == attacker_roles.player_id ]] .. whereStatement
function PlayerStats:getC4Id()
local c4Name = "ttt_c4"
return self.tables.WeaponId:getWeaponId(c4Name)
end


--TODO: Only get the c4 ID once
function PlayerStats:getC4KillsAsRole(roleId, victimRoleId)
local c4Name = "ttt_c4"
local c4Id = self.tables.WeaponId:getWeaponId(c4Name)
local c4Id = self:getC4Id()
if (c4Id == -1) then return 0 end
return self.tables.PlayerKill:getRoleKillsWithWeapon(self.playerId, roleId, victimRoleId, c4Id)
end

function PlayerStats:getC4DeathsAsRole(roleId, attackerRoleId)
local c4Name = "ttt_c4"
local c4Id = self.tables.WeaponId:getWeaponId(c4Name)
local c4Id = self:getC4Id()
if (c4Id == -1) then return 0 end
return self.tables.PlayerKill:getRoleDeathsWithWeapon(self.playerId, roleId, attackerRoleId, c4Id)
end
Expand All @@ -51,25 +41,6 @@ function PlayerStats:updateRoleData()
end
end

function PlayerStats:getRoleKills(playerRole, victimRole)
local whereStatement = [[WHERE kill.attacker_id == ]] .. tostring(self.playerId) .. [[
AND kill.victim_id != ]] .. tostring(self.playerId) .. [[
AND attacker_roles.role_id == ]] .. tostring(playerRole) .. [[
AND victim_roles.role_id == ]] .. tostring(victimRole)
local query = makeKillCountQuery(whereStatement)
local result = sql.Query(query)
return countResult(result)
end

function PlayerStats:getRoleDeaths(playerRole, attackerRole)
local whereStatement = [[WHERE kill.victim_id == ]] .. tostring(self.playerId) .. [[
AND attacker_roles.role_id == ]] .. tostring(attackerRole) .. [[
AND victim_roles.role_id == ]] .. tostring(playerRole)
local query = makeKillCountQuery(whereStatement)
local result = sql.Query(query)
return countResult(result)
end

function PlayerStats:getRoleAssists(playerRole)
end

Expand All @@ -83,74 +54,33 @@ function PlayerStats:getDataForAllRoles(suffix, func)
end
end

function PlayerStats:updateKillData()
self.statsTable["K"] = tables.PlayerKill:getTotalKills(self.playerId)
self:getDataForAllRoles("K", PlayerStats.getRoleKills)
end

function PlayerStats:updateDeathData()
self.statsTable["D"] = tables.PlayerKill:getTotalDeaths(self.playerId)
self:getDataForAllRoles("D", PlayerStats.getRoleDeaths)
end

function PlayerStats:updateSuicideData()
self.statsTable["TraitorSuicides"] = tables.PlayerKill:getTraitorSuicides(self.playerId)
self.statsTable["InnocentSuicides"] = tables.PlayerKill:getInnocentSuicides(self.playerId)
self.statsTable["DetectiveSuicides"] = tables.PlayerKill:getDetectiveSuicides(self.playerId)
--[[
Start off the PlayerStats table with all the aggregate data.
]]
function PlayerStats:getAggregateData()
self.statsTable = self.tables.AggregateStats:getPlayerStats(self.playerId)
end

function PlayerStats:getPurchasesAsRole(itemName, roleId)
local itemId = tables.ShopItem:getItemId(itemName)
if (itemId > 0) then
local query = "SELECT COUNT(*) AS count FROM " .. tables.Purchases.tableName .. " as purchases " ..
"LEFT JOIN ddd_round_roles as roles " ..
"ON purchases.round_id == roles.round_id " ..
"WHERE purchases.player_id == " .. self.playerId .. " AND purchases.shop_item_id == " .. itemId .. " AND roles.role_id == " .. roleId
return DDD.SqlTable:query("purchasesTable:getPurchases", query, 1, "count")
else
return 0
function PlayerStats:getPlayerTime()
if sql.TableExists("utime") then
local query = "SELECT * FROM utime WHERE player == " .. self.ply:UniqueID()
local result = sql.Query(query)
if (result != nil && result != false) then
local totalSeconds = tonumber(result[1]["totaltime"])
local formattedTime = string.format("%.2d:%.2d:%.2d", totalSeconds/(60*60), totalSeconds/60%60, totalSeconds%60)
self.statsTable["TotalServerTime"] = formattedTime
end
end
end

function PlayerStats:getPurchases()
self.statsTable["TraitorArmorPurchases"] = self:getPurchasesAsRole("1", roles["Traitor"])
self.statsTable["TraitorRadarPurchases"] = self:getPurchasesAsRole("2", roles["Traitor"])
self.statsTable["TraitorDisguiserPurchases"] = self:getPurchasesAsRole("4", roles["Traitor"])
self.statsTable["TraitorFlareGunPurchases"] = self:getPurchasesAsRole("weapon_ttt_flaregun", roles["Traitor"])
self.statsTable["TraitorKnifePurchases"] = self:getPurchasesAsRole("weapon_ttt_knife", roles["Traitor"])
self.statsTable["TraitorTeleporterPurchases"] = self:getPurchasesAsRole("weapon_ttt_teleport", roles["Traitor"])
self.statsTable["TraitorRadioPurchases"] = self:getPurchasesAsRole("weapon_ttt_radio", roles["Traitor"])
self.statsTable["TraitorNewtonLauncherPurchases"] = self:getPurchasesAsRole("weapon_ttt_push", roles["Traitor"])
self.statsTable["TraitorSilentPistolPurchases"] = self:getPurchasesAsRole("weapon_ttt_sipistol", roles["Traitor"])
self.statsTable["TraitorDecoyPurchases"] = self:getPurchasesAsRole("weapon_ttt_decoy", roles["Traitor"])
self.statsTable["TraitorPoltergeistPurchases"] = self:getPurchasesAsRole("weapon_ttt_phammer", roles["Traitor"])
self.statsTable["TraitorC4Purchases"] = self:getPurchasesAsRole("weapon_ttt_c4", roles["Traitor"])

self.statsTable["DetectiveRadarPurchases"] = self:getPurchasesAsRole("2", roles["Detective"])
self.statsTable["DetectiveVisualizerPurchases"] = self:getPurchasesAsRole("weapon_ttt_beacon", roles["Detective"])
self.statsTable["DetectiveDefuserPurchases"] = self:getPurchasesAsRole("weapon_ttt_defuser", roles["Detective"])
self.statsTable["DetectiveTeleporterPurchases"] = self:getPurchasesAsRole("weapon_ttt_teleport", roles["Detective"])
self.statsTable["DetectiveBinocularsPurchases"] = self:getPurchasesAsRole("weapon_ttt_binoculars", roles["Detective"])
self.statsTable["DetectiveUmpPurchases"] = self:getPurchasesAsRole("weapon_ttt_stungun", roles["Detective"])
self.statsTable["DetectiveHealthStationPurchases"] = self:getPurchasesAsRole("weapon_ttt_health_station", roles["Detective"])
end

function PlayerStats:updateStats()
self:updateRoleData()
self:updateKillData()
self:updateSuicideData()
self:updateDeathData()
self:getDataForAllRoles("C4K", PlayerStats.getC4KillsAsRole)
self:getDataForAllRoles("C4D", PlayerStats.getC4DeathsAsRole)
self:getPurchases()

self.statsTable["TotalHPYouHealed"] = tables.Healing:getTotalHPYouHealed(self.playerId)
self.statsTable["TotalHPOthersHealed"] = tables.Healing:getTotalHPOthersHealed(self.playerId)
end
self:getAggregateData()
self:getPlayerTime()

function PlayerStats:send()
--self.statsTable["TotalHPOthersHealed"] = tables.Healing:getTotalHPOthersHealed(self.playerId)
end


function PlayerStats:new(ply, databaseTables)
local newStats = {}
setmetatable(newStats, self)
Expand Down
Loading

0 comments on commit 3d3225d

Please sign in to comment.