mirror of
https://github.com/Wyrrrd/Gun_Turret_Alerts.git
synced 2026-06-30 12:05:44 +02:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c86e315f4 | |||
| 3c2316878a | |||
| ad2e1d597b | |||
| 0eabcfc23e | |||
| 4bf3081c31 | |||
| c7278419c5 | |||
| 4bf505130f | |||
| 2608b11ead | |||
| 7288dd8af7 | |||
| 00a63f81c8 | |||
| 9d7b4f4c09 | |||
| d5a1f47667 |
@@ -2,12 +2,14 @@
|
||||
<img src=https://raw.githubusercontent.com/Wyrrrd/Gun_Turret_Alerts/master/thumbnail.png width="128" height="128">
|
||||
|
||||
### Description
|
||||
Adds alerts when a gun turret, car or artillery is out of ammo or has low ammo. The amount of ammo considered low can be configured. Alerts for turrets, cars and artillery can be disabled separately. Behaviour on cars with multiple ammo slots can be configured globally.
|
||||
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).
|
||||
|
||||
### Locale
|
||||
If you want to contribute by translating this mod, you can view the existing translations [here](https://github.com/Wyrrrd/Gun_Turret_Alerts/tree/master/locale). 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 and credits to the next release.
|
||||
|
||||
### Credit
|
||||
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 [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.
|
||||
|
||||
@@ -1,4 +1,22 @@
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.0.3
|
||||
Date: 2024-11-08
|
||||
Bugfixes:
|
||||
- Fixed crash on invalid entity
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.0.2
|
||||
Date: 2024-11-08
|
||||
Changes:
|
||||
- Cleanup tracking table on surface rename/deletion
|
||||
Bugfixes:
|
||||
- Quick fix setting for manual turret fill
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.0.1
|
||||
Date: 2024-11-06
|
||||
Locale:
|
||||
- Added ukranian locale (thanks to Met_en_Bouldry)
|
||||
- Added russian locale (thanks to eugenikus8)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.0.0
|
||||
Date: 2024-10-27
|
||||
Changes:
|
||||
|
||||
+35
-10
@@ -64,7 +64,7 @@ local get_ammo_flag = {
|
||||
}
|
||||
|
||||
local function add_entity_to_list(event)
|
||||
--Whenever an ammo-turret, car 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 index = entity.surface.name.."_"..entity.force.name
|
||||
if storage.ammo_entities[index] then
|
||||
@@ -73,7 +73,7 @@ local function add_entity_to_list(event)
|
||||
end
|
||||
|
||||
local function remove_entity_from_list(event)
|
||||
--Whenever an ammo-turret, car or artillery type entity dies / is mined, remove it from the global table.
|
||||
--Whenever an ammo-turret, vehicle or artillery type entity dies / is mined, remove it from the global table.
|
||||
local index = event.entity.surface.name.."_"..event.entity.force.name
|
||||
if storage.ammo_entities[index] then
|
||||
for i,entity in pairs(storage.ammo_entities[index]) do
|
||||
@@ -86,7 +86,7 @@ local function remove_entity_from_list(event)
|
||||
end
|
||||
|
||||
local function add_force_to_list(event)
|
||||
--Whenever a player of an unscanned force joins the game or a force is created, add all ammo-turret, car or artillery type entities of that force to the global table.
|
||||
--Whenever a player of an unscanned force joins the game or a force is created, add all ammo-turret, vehicle or artillery type entities of that force to the global table.
|
||||
local player, force
|
||||
if event.player_index then
|
||||
player = game.get_player(event.player_index)
|
||||
@@ -120,7 +120,7 @@ local function remove_force_from_list(event)
|
||||
elseif event.source and event.destination then
|
||||
param.force = event.destination
|
||||
add_force_to_list(param)
|
||||
force = source
|
||||
force = event.source
|
||||
end
|
||||
|
||||
if force and not force.connected_players then
|
||||
@@ -130,8 +130,25 @@ local function remove_force_from_list(event)
|
||||
end
|
||||
end
|
||||
|
||||
local function remove_surface_from_list(event)
|
||||
--Whenever a surface is renamed or deleted, move/remove all entities in/from the global table.
|
||||
for force,_ in pairs(game.forces) do
|
||||
local index
|
||||
if event.new_name then
|
||||
storage.ammo_entities[new_name.."_"..force.name] = table.deepcopy(storage.ammo_entities[old_name.."_"..force.name])
|
||||
index = old_name.."_"..force.name
|
||||
elseif event.surface_index then
|
||||
index = game.surfaces[surface_index].name.."_"..force.name
|
||||
end
|
||||
|
||||
if index then
|
||||
storage.ammo_entities[index] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function init_list()
|
||||
-- index init
|
||||
--Create global table for existing forces
|
||||
storage.ammo_entities = {}
|
||||
local param = {}
|
||||
for _,force in pairs(game.forces) do
|
||||
@@ -141,7 +158,7 @@ local function init_list()
|
||||
end
|
||||
|
||||
local function generate_alerts()
|
||||
--Every 10 seconds recheck and give alerts to players for ammo-turret, car, spidertron or artillery type entities on the same force as them.
|
||||
--Every 10 seconds recheck and give alerts to players for ammo-turret, vehicle, spidertron or artillery type entities on the same force as them.
|
||||
for _,player in pairs(game.connected_players) do
|
||||
|
||||
local turret_enabled = player.mod_settings["gun-turret-alerts-enabled"].value
|
||||
@@ -149,13 +166,15 @@ local function generate_alerts()
|
||||
local artillery_enabled = player.mod_settings["gun-turret-alerts-artillery-enabled"].value
|
||||
local mode = player.mod_settings["gun-turret-alerts-mode"].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 ammo_entities = storage.ammo_entities[player.surface.name.."_"..player.force.name]
|
||||
|
||||
if ammo_entities then
|
||||
for _,entity in pairs(ammo_entities) do
|
||||
if entity.valid and entity.force == player.force then
|
||||
for index,entity in pairs(ammo_entities) do
|
||||
if entity.valid then
|
||||
if entity.force == player.force then
|
||||
|
||||
--Get ammo inventory based on entity type, skip cars without guns
|
||||
--Get ammo inventory based on entity type, skip vehicles without guns
|
||||
local inventory
|
||||
if turret_enabled and entity.type == "ammo-turret" then
|
||||
inventory = entity.get_inventory(defines.inventory.turret_ammo)
|
||||
@@ -174,7 +193,7 @@ local function generate_alerts()
|
||||
if inventory and get_ammo_flag[mode] 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)
|
||||
if entity.prototype.automated_ammo_count then
|
||||
if autofull and entity.prototype.automated_ammo_count then
|
||||
if entity.prototype.automated_ammo_count < player_threshold then
|
||||
ammo_flag = get_ammo_flag[mode](inventory, entity.prototype.automated_ammo_count)
|
||||
end
|
||||
@@ -193,6 +212,9 @@ local function generate_alerts()
|
||||
player.add_custom_alert(entity, {type = "virtual", name = "ammo-icon-yellow"}, {"gun-turret-alerts.message-low", entity.localised_name}, true)
|
||||
end
|
||||
end
|
||||
else
|
||||
ammo_entities[index] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -211,6 +233,9 @@ script.on_event(defines.events.on_player_changed_force, remove_force_from_list)
|
||||
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_surface_renamed, remove_surface_from_list)
|
||||
script.on_event(defines.events.on_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_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.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"}})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Gun_Turret_Alerts",
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.3",
|
||||
"title": "Ammo Alerts",
|
||||
"author": "Wyrrrd",
|
||||
"factorio_version": "2.0",
|
||||
|
||||
@@ -4,6 +4,7 @@ gun-turret-alerts-car-enabled=Vehicle ammo alerts enabled
|
||||
gun-turret-alerts-artillery-enabled=Artillery ammo alerts enabled
|
||||
gun-turret-alerts-mode=Multi slot mode
|
||||
gun-turret-alerts-threshold=Low ammo threshold
|
||||
gun-turret-alerts-z-automated-full=Automated amount equals full
|
||||
|
||||
[mod-setting-description]
|
||||
gun-turret-alerts-enabled=Enables turret ammo alerts to be added to your player.
|
||||
@@ -11,6 +12,7 @@ gun-turret-alerts-car-enabled=Enables vehicle ammo alerts to be added to your pl
|
||||
gun-turret-alerts-artillery-enabled=Enables artillery ammo alerts to be added to your player.
|
||||
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-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.
|
||||
|
||||
[string-mod-setting]
|
||||
gun-turret-alerts-mode-added=Added up
|
||||
@@ -24,3 +26,9 @@ message-low=__1__ low ammo
|
||||
[virtual-signal-name]
|
||||
ammo-icon-red=Out of ammo signal
|
||||
ammo-icon-yellow=Low ammo signal
|
||||
|
||||
[mod-name]
|
||||
Gun_Turret_Alerts=Ammo Alerts
|
||||
|
||||
[mod-description]
|
||||
Gun_Turret_Alerts=Adds map alerts for players when a gun turret, vehicle or artillery is either out of ammo or has low ammo.
|
||||
@@ -0,0 +1,26 @@
|
||||
[mod-setting-name]
|
||||
gun-turret-alerts-enabled=Включить оповещения о боезапасе турелей
|
||||
gun-turret-alerts-car-enabled=Включить оповещения о боезапасе транспортных средств
|
||||
gun-turret-alerts-artillery-enabled=Включить оповещения о боезапасе артиллерии
|
||||
gun-turret-alerts-mode=Режим с несколькими слотами
|
||||
gun-turret-alerts-threshold=Порог низкого уровня боеприпасов
|
||||
|
||||
[mod-setting-description]
|
||||
gun-turret-alerts-enabled=Показать оповещения о боеприпасах в турелях для вашего игрока.
|
||||
gun-turret-alerts-car-enabled=Показать оповещения о боеприпасах в транспортных средствах для вашего игрока.
|
||||
gun-turret-alerts-artillery-enabled=Показать оповещения о боеприпасах в артиллерии для вашего игрока.
|
||||
gun-turret-alerts-mode=Управляет тем, как учитываются слоты для боеприпасов: суммируются ли все слоты, подсчитывается ли каждый слот отдельно или учитывается только выбранный слот.\n(Применяется только для случаев с несколькими слотами для боеприпасов, например, в транспортных средствах.)
|
||||
gun-turret-alerts-threshold=Если боезапас меньше этого количества, вам будет показано предупреждение.
|
||||
|
||||
[string-mod-setting]
|
||||
gun-turret-alerts-mode-added=В сумме
|
||||
gun-turret-alerts-mode-individually=По отдельности
|
||||
gun-turret-alerts-mode-selected=Выбранный
|
||||
|
||||
[gun-turret-alerts]
|
||||
message-empty=__1__ - нет боеприпасов
|
||||
message-low=__1__ - мало боеприпасов
|
||||
|
||||
[virtual-signal-name]
|
||||
ammo-icon-red=Сигнал отсутствия боеприпасов
|
||||
ammo-icon-yellow=Сигнал о низком боезапасе
|
||||
@@ -0,0 +1,26 @@
|
||||
[mod-setting-name]
|
||||
gun-turret-alerts-enabled=Ввімкнено оповіщення про боєприпаси у вежах
|
||||
gun-turret-alerts-car-enabled=Ввімкнено оповіщення про боєприпаси у транспортах
|
||||
gun-turret-alerts-artillery-enabled=Ввімкнено оповіщення про артилерійські боєприпаси
|
||||
gun-turret-alerts-mode=Багатослотовий режим
|
||||
gun-turret-alerts-threshold=Низький поріг боєприпасів
|
||||
|
||||
[mod-setting-description]
|
||||
gun-turret-alerts-enabled=Дозволяє додати сповіщення про боєприпаси у вежі до вашого плеєра.
|
||||
gun-turret-alerts-car-enabled=Дозволяє додавати сповіщення про наявність боєприпасів у транспорті до плеєра.
|
||||
gun-turret-alerts-artillery-enabled=Дозволяє додати сповіщення про артилерійські боєприпаси до вашого плеєра.
|
||||
gun-turret-alerts-mode=Керує, якщо гнізда для боєприпасів підсумовуються, кожен гніздо рахується окремо, або рахується лише вибране гніздо.\n(Застосовується лише для більш ніж одного гнізда для боєприпасів, наприклад, у транспортах)
|
||||
gun-turret-alerts-threshold=Якщо у вежі, транспорті або артилерії менше боєприпасів, гравцеві буде оголошено попередження.
|
||||
|
||||
[string-mod-setting]
|
||||
gun-turret-alerts-mode-added=Підсумок
|
||||
gun-turret-alerts-mode-individually=Індивідуально
|
||||
gun-turret-alerts-mode-selected=Вибрані
|
||||
|
||||
[gun-turret-alerts]
|
||||
message-empty=__1__ закінчилися боєприпаси
|
||||
message-low=__1__ мало боєприпасів
|
||||
|
||||
[virtual-signal-name]
|
||||
ammo-icon-red=Сигнал про закінчення набоїв
|
||||
ammo-icon-yellow=Сигнал про низький рівень набоїв
|
||||
@@ -34,4 +34,10 @@ data:extend({
|
||||
default_value = 8,
|
||||
minimum_value = 0
|
||||
},
|
||||
{
|
||||
type = "bool-setting",
|
||||
name = "gun-turret-alerts-z-automated-full",
|
||||
setting_type = "runtime-per-user",
|
||||
default_value = true
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user