1
0
mirror of https://github.com/Wyrrrd/Gun_Turret_Alerts.git synced 2026-07-01 12:32:37 +02:00

Compare commits

...

10 Commits

Author SHA1 Message Date
Wyrrrd c08b964a8d Update README.md 2024-12-19 19:41:35 +01:00
Wyrrrd 771c0f2950 Increment version 2024-12-19 19:38:14 +01:00
Factorio Mods Helper 2515aafd7b Update translations from Crowdin 2024-12-14 04:33:35 +00:00
Factorio Mods Helper 4ebeb9c664 Update translations from Crowdin 2024-11-16 04:27:28 +00:00
Wyrrrd 86820c48c3 Up version 2024-11-10 15:06:40 +01:00
Wyrrrd 037d321604 Fix empty table cleanup 2024-11-10 15:01:04 +01:00
Wyrrrd c837b99a01 Handle surface workaround on built, cleanup empty global tables 2024-11-10 14:54:21 +01:00
Wyrrrd 4c8b05b930 Small cleanup and commenting 2024-11-10 11:49:00 +01:00
Wyrrrd d6d426ddc7 Mutlisurface support and some fixes 2024-11-10 01:17:47 +01:00
Wyrrrd 2b91680aa2 Fix surface handling fuckup for real 2024-11-09 17:55:59 +01:00
8 changed files with 135 additions and 60 deletions
+2 -5
View File
@@ -2,14 +2,11 @@
<img src=https://raw.githubusercontent.com/Wyrrrd/Gun_Turret_Alerts/master/thumbnail.png width="128" height="128"> <img src=https://raw.githubusercontent.com/Wyrrrd/Gun_Turret_Alerts/master/thumbnail.png width="128" height="128">
### Description ### Description
Adds alerts when a gun turret, vehicle or artillery is out of ammo or has low ammo. The amount of ammo considered low can be configured. Alerts for turrets, vehicles and artillery can be disabled separately. Behaviour on vehicles with multiple ammo slots can be configured (for all vehicles at once). Adds alerts when a gun turret, vehicle or artillery is out of ammo or has low ammo. The amount of ammo considered low can be configured. Alerts for turrets, vehicles and artillery can be disabled separately. Behaviour on vehicles with multiple ammo slots can be configured (for all vehicles at once). Alerts on other planets or space platforms can be enabled.
### Locale ### Locale
If you want to contribute by translating this mod, you can view the existing translations on [Crowdin](https://crowdin.com/project/factorio-mods-localization). I'd be happy to add your language and credits to the next release. If you want to contribute by translating this mod, you can view the existing translations on [Crowdin](https://crowdin.com/project/factorio-mods-localization). I'd be happy to add your language to the next release.
### Credit ### Credit
Thanks to [unhott](https://mods.factorio.com/user/unhott) for the [original mod](https://mods.factorio.com/mod/GunTurretAlerts). Thanks to [unhott](https://mods.factorio.com/user/unhott) for the [original mod](https://mods.factorio.com/mod/GunTurretAlerts).
Thanks to [snouz](https://mods.factorio.com/user/snouz) for the new icons and thumbnail. Thanks to [snouz](https://mods.factorio.com/user/snouz) for the new icons and thumbnail.
Thanks to [Friendch](https://mods.factorio.com/user/Friendch) for the french locale.
Thanks to [eugenikus8](https://github.com/eugenikus8) for the russian locale.
Thanks to [Met_en_Bouldry](https://crowdin.com/profile/Met_en_Bouldry) for the ukrainian locale.
+32 -6
View File
@@ -1,4 +1,32 @@
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 2.0.8
Date: 2024-12-19
Changes:
---------------------------------------------------------------------------------------------------
Version: 2.0.7
Date: 2024-11-10
Optimizations:
- Add cleanup of empty global tables
- Move global table creation from on_surface_created to on_built_entity to save on event
listeners
- Review force rename/removal handling
- Code cleanup and comments
---------------------------------------------------------------------------------------------------
Version: 2.0.6
Date: 2024-11-10
Features:
- Add support to enable alerts for other surfaces (before, alerts were only generated for the
current surface)
Bugfixes:
- Fix additional surface handling (when a new surface was created, from then on entities were
not added to the global list until all players of a force leave and join again, which is
technically impossible in single player)
---------------------------------------------------------------------------------------------------
Version: 2.0.5
Date: 2024-11-09
Bugfixes:
- Really fix the crash on surface deletion
---------------------------------------------------------------------------------------------------
Version: 2.0.4 Version: 2.0.4
Date: 2024-11-09 Date: 2024-11-09
Bugfixes: Bugfixes:
@@ -30,10 +58,6 @@ Date: 2024-10-27
- Renamed car group to vehicle group in all languages - Renamed car group to vehicle group in all languages
Features: Features:
- Added spidertrons to vehicle group - Added spidertrons to vehicle group
Info:
- Planned: Switch from surface names to surface indexes (as names can change)
- Planned: Cleanup tracking table on surface deletion (may happen with space platforms)
- Planned: Add settings to allow players to view alerts for current or multiple/all surfaces
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 1.1.11 Version: 1.1.11
Date: 2023-03-12 Date: 2023-03-12
@@ -58,12 +82,14 @@ Date: 2021-08-06
Version: 1.1.7 Version: 1.1.7
Date: 2021-06-21 Date: 2021-06-21
Compatibility: Compatibility:
- Added compatibility to Space Exploration's Meteor defence and other mods (no longer displays alert when ammo is dynamically loaded) (by snouz) - Added compatibility to Space Exploration's Meteor defence and other mods (no longer displays
alert when ammo is dynamically loaded) (by snouz)
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 1.1.6 Version: 1.1.6
Date: 2021-04-22 Date: 2021-04-22
Bugfixes: Bugfixes:
- Defaulting multislot mode "selected" to first slot, if no slot selected. Defaulting to "added" mode caused a crash. - Defaulting multislot mode "selected" to first slot, if no slot selected. Defaulting to
"added" mode caused a crash.
Scripting: Scripting:
- Simplified some boolean logic misusing it as ternary - Simplified some boolean logic misusing it as ternary
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
+33 -6
View File
@@ -67,6 +67,13 @@ local function add_entity_to_list(event)
--Whenever an ammo-turret, vehicle or artillery type entity is built, add it to the global table. --Whenever an ammo-turret, vehicle or artillery type entity is built, add it to the global table.
local entity = event.created_entity or event.entity local entity = event.created_entity or event.entity
local index = entity.surface.name.."_"..entity.force.name local index = entity.surface.name.."_"..entity.force.name
-- Add table if it doesn't exist and a player of this force is connected
if entity.force.connected_players[1] and not storage.ammo_entities[index] then
storage.ammo_entities[index] = {}
end
-- Add entity to table
if storage.ammo_entities[index] then if storage.ammo_entities[index] then
table.insert(storage.ammo_entities[index], entity) table.insert(storage.ammo_entities[index], entity)
end end
@@ -125,12 +132,14 @@ local function remove_force_from_list(event)
force = event.source force = event.source
end end
if force and not force.connected_players then if force then
if not force.valid or (force.valid and table_is_empty(force.connected_players)) then
for surface_name,_ in pairs(game.surfaces) do for surface_name,_ in pairs(game.surfaces) do
storage.ammo_entities[surface_name.."_"..force.name] = nil storage.ammo_entities[surface_name.."_"..force.name] = nil
end end
end end
end end
end
local function remove_surface_from_list(event) local function remove_surface_from_list(event)
--Whenever a surface is renamed or deleted, move/remove all entities in/from the global table. --Whenever a surface is renamed or deleted, move/remove all entities in/from the global table.
@@ -168,10 +177,19 @@ local function generate_alerts()
local artillery_enabled = player.mod_settings["gun-turret-alerts-artillery-enabled"].value local artillery_enabled = player.mod_settings["gun-turret-alerts-artillery-enabled"].value
local mode = player.mod_settings["gun-turret-alerts-mode"].value local mode = player.mod_settings["gun-turret-alerts-mode"].value
local player_threshold = player.mod_settings["gun-turret-alerts-threshold"].value local player_threshold = player.mod_settings["gun-turret-alerts-threshold"].value
local autofull = player.mod_settings["gun-turret-alerts-z-automated-full"].value local auto_full = player.mod_settings["gun-turret-alerts-z-automated-full"].value
local ammo_entities = storage.ammo_entities[player.surface.name.."_"..player.force.name] local show_planets = player.mod_settings["gun-turret-alerts-z-show-planets"].value
local show_platforms = player.mod_settings["gun-turret-alerts-z-show-platforms"].value
for _,surface in pairs(game.surfaces) do
local ammo_entities
if surface == player.surface or (show_platforms and surface.platform) or (show_planets and surface.planet) then
ammo_entities = storage.ammo_entities[surface.name.."_"..player.force.name]
end
if ammo_entities then if ammo_entities then
if not table_is_empty(ammo_entities) then
for index,entity in pairs(ammo_entities) do for index,entity in pairs(ammo_entities) do
if entity.valid then if entity.valid then
if entity.force == player.force then if entity.force == player.force then
@@ -195,7 +213,8 @@ local function generate_alerts()
if inventory and get_ammo_flag[mode] then if inventory and get_ammo_flag[mode] then
if entity.type == "ammo-turret" or entity.type == "artillery-turret" or entity.type == "artillery-wagon" then if entity.type == "ammo-turret" or entity.type == "artillery-turret" or entity.type == "artillery-wagon" then
ammo_flag = get_ammo_flag[mode](inventory, player_threshold) ammo_flag = get_ammo_flag[mode](inventory, player_threshold)
if autofull and entity.prototype.automated_ammo_count then -- Automated amme count override (if activated)
if auto_full and entity.prototype.automated_ammo_count then
if entity.prototype.automated_ammo_count < player_threshold then if entity.prototype.automated_ammo_count < player_threshold then
ammo_flag = get_ammo_flag[mode](inventory, entity.prototype.automated_ammo_count) ammo_flag = get_ammo_flag[mode](inventory, entity.prototype.automated_ammo_count)
end end
@@ -215,7 +234,13 @@ local function generate_alerts()
end end
end end
else else
ammo_entities[index] = nil -- Cleanup if entity is invalid
table.remove(ammo_entities, index)
end
end
else
-- Cleanup if table is empty
storage.ammo_entities[surface.name.."_"..player.force.name] = nil
end end
end end
end end
@@ -236,15 +261,17 @@ script.on_event(defines.events.on_force_created, add_force_to_list)
script.on_event(defines.events.on_forces_merged, remove_force_from_list) script.on_event(defines.events.on_forces_merged, remove_force_from_list)
script.on_event(defines.events.on_surface_renamed, remove_surface_from_list) script.on_event(defines.events.on_surface_renamed, remove_surface_from_list)
script.on_event(defines.events.on_surface_deleted, remove_surface_from_list) script.on_event(defines.events.on_pre_surface_deleted, remove_surface_from_list)
script.on_event(defines.events.on_built_entity, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.on_built_entity, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.on_robot_built_entity, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.on_robot_built_entity, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.on_space_platform_built_entity, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.script_raised_built, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.script_raised_built, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.script_raised_revive, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.script_raised_revive, add_entity_to_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.on_player_mined_entity, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.on_player_mined_entity, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.on_robot_mined_entity, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.on_robot_mined_entity, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.on_space_platform_mined_entity, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.on_entity_died, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.on_entity_died, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
script.on_event(defines.events.script_raised_destroy, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}}) script.on_event(defines.events.script_raised_destroy, remove_entity_from_list, {{filter="type", type = "ammo-turret"},{filter="type", type = "car"},{filter="type", type = "spider-vehicle"},{filter="type", type = "artillery-turret"},{filter="type", type = "artillery-wagon"}})
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "Gun_Turret_Alerts", "name": "Gun_Turret_Alerts",
"version": "2.0.4", "version": "2.0.8",
"title": "Ammo Alerts", "title": "Ammo Alerts",
"author": "Wyrrrd", "author": "Wyrrrd",
"factorio_version": "2.0", "factorio_version": "2.0",
+1
View File
@@ -4,6 +4,7 @@ gun-turret-alerts-car-enabled=Alarme für Vehikelmunition aktiviert
gun-turret-alerts-artillery-enabled=Alarme für Artillerie aktiviert gun-turret-alerts-artillery-enabled=Alarme für Artillerie aktiviert
gun-turret-alerts-mode=Mehrplatz-Modus gun-turret-alerts-mode=Mehrplatz-Modus
gun-turret-alerts-threshold=Grenze für wenig Munition gun-turret-alerts-threshold=Grenze für wenig Munition
gun-turret-alerts-z-show-planets=Auf allen Planeten anzeigen
[mod-setting-description] [mod-setting-description]
gun-turret-alerts-enabled=Aktiviert Alarme für Geschützturmmunition für deinen Spieler gun-turret-alerts-enabled=Aktiviert Alarme für Geschützturmmunition für deinen Spieler
+6 -2
View File
@@ -5,6 +5,8 @@ gun-turret-alerts-artillery-enabled=Artillery ammo alerts enabled
gun-turret-alerts-mode=Multi slot mode gun-turret-alerts-mode=Multi slot mode
gun-turret-alerts-threshold=Low ammo threshold gun-turret-alerts-threshold=Low ammo threshold
gun-turret-alerts-z-automated-full=Automated amount equals full gun-turret-alerts-z-automated-full=Automated amount equals full
gun-turret-alerts-z-show-planets=Show on all planets
gun-turret-alerts-z-show-platforms=Show on all space platforms
[mod-setting-description] [mod-setting-description]
gun-turret-alerts-enabled=Enables turret ammo alerts to be added to your player. gun-turret-alerts-enabled=Enables turret ammo alerts to be added to your player.
@@ -13,6 +15,8 @@ gun-turret-alerts-artillery-enabled=Enables artillery ammo alerts to be added to
gun-turret-alerts-mode=Controls, if the ammo slots are added up, every slot is counted individually, or just the selected slot is counted.\n(Only applies for more than one ammo slot, for example in vehicles.) gun-turret-alerts-mode=Controls, if the ammo slots are added up, every slot is counted individually, or just the selected slot is counted.\n(Only applies for more than one ammo slot, for example in vehicles.)
gun-turret-alerts-threshold=If a turret, vehicle or artillery has less than this much ammo, an alert will be added to your player. gun-turret-alerts-threshold=If a turret, vehicle or artillery has less than this much ammo, an alert will be added to your player.
gun-turret-alerts-z-automated-full=Send no alerts when a turret or artillery has an amount of ammo equal or higher than what inserters would automatically insert into them. gun-turret-alerts-z-automated-full=Send no alerts when a turret or artillery has an amount of ammo equal or higher than what inserters would automatically insert into them.
gun-turret-alerts-z-show-planets=Show alerts for other planets, even if you are not there. (Default is to only show current planet/space platform.)
gun-turret-alerts-z-show-platforms=Show alerts for other space platforms, even if you are not there. (Default is to only show current planet/space platform.)
[string-mod-setting] [string-mod-setting]
gun-turret-alerts-mode-added=Added up gun-turret-alerts-mode-added=Added up
@@ -20,8 +24,8 @@ gun-turret-alerts-mode-individually=Individually
gun-turret-alerts-mode-selected=Selected gun-turret-alerts-mode-selected=Selected
[gun-turret-alerts] [gun-turret-alerts]
message-empty=__1__ out of ammo message-empty=__1__ is out of ammo
message-low=__1__ low ammo message-low=__1__ is low on ammo
[virtual-signal-name] [virtual-signal-name]
ammo-icon-red=Out of ammo signal ammo-icon-red=Out of ammo signal
+10 -2
View File
@@ -4,6 +4,9 @@ gun-turret-alerts-car-enabled=Ввімкнено оповіщення про б
gun-turret-alerts-artillery-enabled=Ввімкнено оповіщення про артилерійські боєприпаси gun-turret-alerts-artillery-enabled=Ввімкнено оповіщення про артилерійські боєприпаси
gun-turret-alerts-mode=Багатослотовий режим gun-turret-alerts-mode=Багатослотовий режим
gun-turret-alerts-threshold=Низький поріг боєприпасів gun-turret-alerts-threshold=Низький поріг боєприпасів
gun-turret-alerts-z-automated-full=Автоматична сума дорівнює повній
gun-turret-alerts-z-show-planets=Показати на всіх планетах
gun-turret-alerts-z-show-platforms=Показати на всіх космічних платформах
[mod-setting-description] [mod-setting-description]
gun-turret-alerts-enabled=Дозволяє додати сповіщення про боєприпаси у вежі до вашого плеєра. gun-turret-alerts-enabled=Дозволяє додати сповіщення про боєприпаси у вежі до вашого плеєра.
@@ -11,6 +14,9 @@ gun-turret-alerts-car-enabled=Дозволяє додавати сповіщен
gun-turret-alerts-artillery-enabled=Дозволяє додати сповіщення про артилерійські боєприпаси до вашого плеєра. gun-turret-alerts-artillery-enabled=Дозволяє додати сповіщення про артилерійські боєприпаси до вашого плеєра.
gun-turret-alerts-mode=Керує, якщо гнізда для боєприпасів підсумовуються, кожен гніздо рахується окремо, або рахується лише вибране гніздо.\n(Застосовується лише для більш ніж одного гнізда для боєприпасів, наприклад, у транспортах) gun-turret-alerts-mode=Керує, якщо гнізда для боєприпасів підсумовуються, кожен гніздо рахується окремо, або рахується лише вибране гніздо.\n(Застосовується лише для більш ніж одного гнізда для боєприпасів, наприклад, у транспортах)
gun-turret-alerts-threshold=Якщо у вежі, транспорті або артилерії менше боєприпасів, гравцеві буде оголошено попередження. gun-turret-alerts-threshold=Якщо у вежі, транспорті або артилерії менше боєприпасів, гравцеві буде оголошено попередження.
gun-turret-alerts-z-automated-full=Не надсилати сповіщення, коли у вежі або артилерії кількість боєприпасів дорівнює або перевищує кількість, яку автоматично вставляють в них маніпулятори.
gun-turret-alerts-z-show-planets=Показувати сповіщення для інших планет, навіть якщо вас там немає. (За замовчуванням показувати тільки поточну планету/космічну платформу)
gun-turret-alerts-z-show-platforms=Показувати сповіщення для інших космічних платформ, навіть якщо ви там не перебуваєте. (За замовчуванням показувати лише поточну планету/космічну платформу)
[string-mod-setting] [string-mod-setting]
gun-turret-alerts-mode-added=Підсумок gun-turret-alerts-mode-added=Підсумок
@@ -18,14 +24,16 @@ gun-turret-alerts-mode-individually=Індивідуально
gun-turret-alerts-mode-selected=Вибрані gun-turret-alerts-mode-selected=Вибрані
[gun-turret-alerts] [gun-turret-alerts]
message-empty=__1__ закінчилися боєприпаси message-empty=У __1__ закінчилися набої
message-low=__1__ мало боєприпасів message-low=У __1__ мало боєприпасів
[virtual-signal-name] [virtual-signal-name]
ammo-icon-red=Сигнал про закінчення набоїв ammo-icon-red=Сигнал про закінчення набоїв
ammo-icon-yellow=Сигнал про низький рівень набоїв ammo-icon-yellow=Сигнал про низький рівень набоїв
[mod-name] [mod-name]
Gun_Turret_Alerts=Попередження про боєприпаси
[mod-description] [mod-description]
Gun_Turret_Alerts=Додає сповіщення на мапі для гравців, коли у гарматній вежі, транспортному засобі або артилерії закінчуються боєприпаси або у них мало боєприпасів.
+12
View File
@@ -40,4 +40,16 @@ data:extend({
setting_type = "runtime-per-user", setting_type = "runtime-per-user",
default_value = true default_value = true
}, },
{
type = "bool-setting",
name = "gun-turret-alerts-z-show-planets",
setting_type = "runtime-per-user",
default_value = false
},
{
type = "bool-setting",
name = "gun-turret-alerts-z-show-platforms",
setting_type = "runtime-per-user",
default_value = false
},
}) })