mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 11:35:22 +09:00
Added trees and reseach to stats
This commit is contained in:
@@ -7,9 +7,12 @@ return {
|
||||
AfkTime = true, --- @setting AfkTime If afk time is tracked for a player, play time measured in minutes, afk is once a player does nothing for 5 minutes
|
||||
DistanceTraveled = true, --- @setting DistanceTraveled If distance traveled is checked, only counts if not afk
|
||||
MachinesRemoved = true, --- @setting MachinesRemoved If removed machines are tracked, includes marked for decon and player mined entity
|
||||
OreMined = true, --- @setting OreMined If ore mined is tracked for a player, includes player mined entity but only ore,
|
||||
TreesDestroyed = true, --- @setting OreMined If ore mined is tracked for a player, includes marked for decon and player mined entity but only trees
|
||||
OreMined = true, --- @setting OreMined If ore mined is tracked for a player, includes player mined entity but only ore
|
||||
DamageDealt = true, --- @setting DamageDealt If damage dealt is tracked for a player, includes any damage to entities not on the same force or neutral
|
||||
Kills = true, --- @setting Kills If kills are tracked for a player, includes all kills not on same force or neutral
|
||||
RocketsLaunched = true, --- @setting RocketsLaunched If the number of rockets launched should be tracked, done for all players on the force
|
||||
ResearchCompleted = true, --- @setting ResearchCompleted If the number of researches completed should be tracked, done for all players on the force
|
||||
counters = { --- @setting counters Simple statistics that just go up by one each time an event happens
|
||||
MachinesBuilt = e.on_built_entity,
|
||||
MapTagsMade = e.on_chart_tag_added,
|
||||
@@ -23,7 +26,6 @@ return {
|
||||
Deaths = e.on_player_died,
|
||||
JoinCount = e.on_player_joined_game,
|
||||
TilesRemoved = e.on_player_mined_tile,
|
||||
CapsulesUsed = e.on_player_used_capsule,
|
||||
RocketsLaunched = e.on_rocket_launched
|
||||
CapsulesUsed = e.on_player_used_capsule
|
||||
}
|
||||
}
|
||||
@@ -50,34 +50,26 @@ if config.DistanceTraveled then
|
||||
end)
|
||||
end
|
||||
|
||||
--- Add MachinesRemoved if it is enabled
|
||||
if config.MachinesRemoved then
|
||||
local stat = Statistics:combine('MachinesRemoved')
|
||||
--- Add MachinesRemoved and TreesDestroyed and config.OreMined if it is enabled
|
||||
if config.MachinesRemoved or config.TreesDestroyed or config.OreMined then
|
||||
local machines, trees, ore
|
||||
if config.MachinesRemoved then machines = Statistics:combine('MachinesRemoved') end
|
||||
if config.TreesDestroyed then trees = Statistics:combine('TreesDestroyed') end
|
||||
if config.OreMined then ore = Statistics:combine('OreMined') end
|
||||
local function on_event(event)
|
||||
if not event.player_index then return end -- Check player is valid
|
||||
local player = game.players[event.player_index]
|
||||
if not player.valid or not player.connected then return end
|
||||
local entity = event.entity -- Check entity is valid
|
||||
if not entity.valid or entity.force ~= player.force then return end
|
||||
stat:increment(player)
|
||||
if not entity.valid then return end
|
||||
if entity.type == 'resource' then ore:increment(player)
|
||||
elseif entity.type == 'tree' then trees:increment(player)
|
||||
elseif entity.force == player.force then machines:increment(player) end
|
||||
end
|
||||
Event.add(defines.events.on_marked_for_deconstruction, on_event)
|
||||
Event.add(defines.events.on_player_mined_entity, on_event)
|
||||
end
|
||||
|
||||
--- Add OreMined if it is enabled
|
||||
if config.OreMined then
|
||||
local stat = Statistics:combine('OreMined')
|
||||
Event.add(defines.events.on_player_mined_entity, function(event)
|
||||
if not event.player_index then return end -- Check player is valid
|
||||
local player = game.players[event.player_index]
|
||||
if not player.valid or not player.connected then return end
|
||||
local entity = event.entity -- Check entity is valid
|
||||
if not entity.valid or entity.type ~= 'resource' then return end
|
||||
stat:increment(player)
|
||||
end)
|
||||
end
|
||||
|
||||
--- Add DamageDealt if it is enabled
|
||||
if config.DamageDealt then
|
||||
local stat = Statistics:combine('DamageDealt')
|
||||
@@ -106,18 +98,41 @@ if config.DamageDealt then
|
||||
end)
|
||||
end
|
||||
|
||||
--- Add RocketsLaunched if it is enabled
|
||||
if config.RocketsLaunched then
|
||||
local stat = Statistics:combine('RocketsLaunched')
|
||||
Event.add(defines.events.on_rocket_launched, function(event)
|
||||
local silo = event.rocket_silo -- Check silo is valid
|
||||
if not silo or not silo.valid then return end
|
||||
local force = silo.force -- Check force is valid
|
||||
if not force or not force.valid then return end
|
||||
for _, player in pairs(force.connected_players) do
|
||||
stat:increment(player)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
--- Add RocketsLaunched if it is enabled
|
||||
if config.ResearchCompleted then
|
||||
local stat = Statistics:combine('ResearchCompleted')
|
||||
Event.add(defines.events.on_research_finished, function(event)
|
||||
local research = event.research -- Check research is valid
|
||||
if event.by_script or not research or not research.valid then return end
|
||||
local force = research.force -- Check force is valid
|
||||
if not force or not force.valid then return end
|
||||
for _, player in pairs(force.connected_players) do
|
||||
stat:increment(player)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
--- Add all the remaining statistics from the config
|
||||
for statistic, event_name in pairs(config.counters) do
|
||||
local stat = Statistics:combine(statistic)
|
||||
Event.add(event_name, function(event)
|
||||
if event.player_index then
|
||||
local player = game.players[event.player_index]
|
||||
if not player.valid or not player.connected then return end
|
||||
stat:increment(player)
|
||||
else
|
||||
for _, player in pairs(game.connected_players) do
|
||||
stat:increment(player)
|
||||
end
|
||||
end
|
||||
if not event.player_index then return end
|
||||
local player = game.players[event.player_index]
|
||||
if not player.valid or not player.connected then return end
|
||||
stat:increment(player)
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user