mirror of
https://github.com/mt-mods/hangglider.git
synced 2025-07-14 06:20:30 +02:00
Compare commits
1 Commits
master
...
FLAKprivXP
Author | SHA1 | Date | |
---|---|---|---|
86c7d34d50 |
@ -1,6 +1,5 @@
|
|||||||
globals = {
|
globals = {
|
||||||
"areas",
|
"areas",
|
||||||
"hangglider",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
read_globals = {
|
read_globals = {
|
||||||
@ -8,6 +7,7 @@ read_globals = {
|
|||||||
"vector", "ItemStack",
|
"vector", "ItemStack",
|
||||||
|
|
||||||
"player_monoids",
|
"player_monoids",
|
||||||
"pova",
|
"priv_protector",
|
||||||
"unifieddyes",
|
"unifieddyes",
|
||||||
|
"xp_redo",
|
||||||
}
|
}
|
||||||
|
30
crafts.lua
30
crafts.lua
@ -1,6 +1,4 @@
|
|||||||
|
|
||||||
local S = hangglider.translator
|
|
||||||
|
|
||||||
local has_unifieddyes = minetest.get_modpath("unifieddyes")
|
local has_unifieddyes = minetest.get_modpath("unifieddyes")
|
||||||
|
|
||||||
local dye_colors = {
|
local dye_colors = {
|
||||||
@ -21,24 +19,6 @@ local dye_colors = {
|
|||||||
pink = "ff7f9f",
|
pink = "ff7f9f",
|
||||||
}
|
}
|
||||||
|
|
||||||
local translated_colors = {
|
|
||||||
white = S("White"),
|
|
||||||
grey = S("Grey"),
|
|
||||||
dark_grey = S("Dark_grey"),
|
|
||||||
black = S("Black"),
|
|
||||||
violet = S("Violet"),
|
|
||||||
blue = S("Blue"),
|
|
||||||
cyan = S("Cyan"),
|
|
||||||
dark_green = S("Dark_green"),
|
|
||||||
green = S("Green"),
|
|
||||||
yellow = S("Yellow"),
|
|
||||||
brown = S("Brown"),
|
|
||||||
orange = S("Orange"),
|
|
||||||
red = S("Red"),
|
|
||||||
magenta = S("Magenta"),
|
|
||||||
pink = S("Pink"),
|
|
||||||
}
|
|
||||||
|
|
||||||
local function get_dye_color(name)
|
local function get_dye_color(name)
|
||||||
local color
|
local color
|
||||||
if has_unifieddyes then
|
if has_unifieddyes then
|
||||||
@ -55,13 +35,15 @@ end
|
|||||||
|
|
||||||
local function get_color_name(name)
|
local function get_color_name(name)
|
||||||
name = string.gsub(name, "^dye:", "")
|
name = string.gsub(name, "^dye:", "")
|
||||||
return translated_colors[name]
|
name = string.gsub(name, "_", " ")
|
||||||
|
name = string.gsub(name, "(%l)(%w*)", function(a, b) return string.upper(a)..b end)
|
||||||
|
return name
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_color_name_from_color(color)
|
local function get_color_name_from_color(color)
|
||||||
for name, color_hex in pairs(dye_colors) do
|
for name, color_hex in pairs(dye_colors) do
|
||||||
if color == color_hex then
|
if color == color_hex then
|
||||||
return translated_colors[name]
|
return name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -69,7 +51,7 @@ end
|
|||||||
-- This recipe is just a placeholder
|
-- This recipe is just a placeholder
|
||||||
do
|
do
|
||||||
local item = ItemStack("hangglider:hangglider")
|
local item = ItemStack("hangglider:hangglider")
|
||||||
item:get_meta():set_string("description", S("Colored Glider"))
|
item:get_meta():set_string("description", "Colored Glider")
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = item:to_string(),
|
output = item:to_string(),
|
||||||
recipe = {"hangglider:hangglider", "group:dye"},
|
recipe = {"hangglider:hangglider", "group:dye"},
|
||||||
@ -103,7 +85,7 @@ minetest.register_on_craft(function(crafted_item, _, old_craft_grid)
|
|||||||
return ItemStack({name = "hangglider:hangglider", wear = wear})
|
return ItemStack({name = "hangglider:hangglider", wear = wear})
|
||||||
end
|
end
|
||||||
local meta = crafted_item:get_meta()
|
local meta = crafted_item:get_meta()
|
||||||
meta:set_string("description", S("@1 Glider", color_name))
|
meta:set_string("description", color_name.." Glider")
|
||||||
meta:set_string("inventory_image", "hangglider_item.png^(hangglider_color.png^[multiply:#"..color..")")
|
meta:set_string("inventory_image", "hangglider_item.png^(hangglider_color.png^[multiply:#"..color..")")
|
||||||
meta:set_string("hangglider_color", color)
|
meta:set_string("hangglider_color", color)
|
||||||
crafted_item:set_wear(wear)
|
crafted_item:set_wear(wear)
|
||||||
|
191
init.lua
191
init.lua
@ -1,161 +1,139 @@
|
|||||||
|
|
||||||
hangglider = {
|
|
||||||
translator = minetest.get_translator('hangglider'),
|
|
||||||
}
|
|
||||||
local S = hangglider.translator
|
|
||||||
|
|
||||||
local has_player_monoids = minetest.get_modpath("player_monoids")
|
local has_player_monoids = minetest.get_modpath("player_monoids")
|
||||||
local has_pova = minetest.get_modpath("pova")
|
|
||||||
local has_areas = minetest.get_modpath("areas")
|
local has_areas = minetest.get_modpath("areas")
|
||||||
|
local has_priv_protector = minetest.get_modpath("priv_protector")
|
||||||
|
and minetest.global_exists("priv_protector")
|
||||||
|
and priv_protector.get_area_priv
|
||||||
|
-- older versions of priv_protector and xp_redo don't have
|
||||||
|
-- the global and/or the functions yet
|
||||||
|
local has_xp_redo = minetest.get_modpath("xp_redo")
|
||||||
|
and minetest.global_exists("xp_redo")
|
||||||
|
and xp_redo.get_area_xp_limits and xp_redo.get_xp
|
||||||
|
|
||||||
local enable_hud_overlay = minetest.settings:get_bool("hangglider.enable_hud_overlay", true)
|
local enable_hud_overlay = minetest.settings:get_bool("hangglider.enable_hud_overlay", true)
|
||||||
local enable_flak = has_areas and minetest.settings:get_bool("hangglider.enable_flak", true)
|
local enable_flak = has_areas and minetest.settings:get_bool("hangglider.enable_flak", true)
|
||||||
local flak_warning_time = tonumber(minetest.settings:get("hangglider.flak_warning_time")) or 2
|
local flak_warning_time = tonumber(minetest.settings:get("hangglider.flak_warning_time")) or 2
|
||||||
local hangglider_uses = tonumber(minetest.settings:get("hangglider.uses")) or 250
|
local hangglider_uses = tonumber(minetest.settings:get("hangglider.uses")) or 250
|
||||||
|
|
||||||
local flak_warning = S("You have entered restricted airspace!@n"
|
local flak_warning = "You have entered restricted airspace!\n"..
|
||||||
.. "You will be shot down in @1 seconds by anti-aircraft guns!",
|
"You will be shot down in "..flak_warning_time.." seconds by anti-aircraft guns!"
|
||||||
flak_warning_time)
|
|
||||||
|
|
||||||
local hanggliding_players = {}
|
local hanggliding_players = {}
|
||||||
local physics_overrides = {}
|
|
||||||
local hud_overlay_ids = {}
|
local hud_overlay_ids = {}
|
||||||
|
|
||||||
|
|
||||||
if enable_flak then
|
if enable_flak then
|
||||||
minetest.register_chatcommand("area_flak", {
|
minetest.register_chatcommand("area_flak", {
|
||||||
params = S("<ID>"),
|
params = "<ID>",
|
||||||
description = S("Toggle airspace restrictions for area <ID>."),
|
description = "Toggle airspace restrictions for area <ID>",
|
||||||
func = function(name, param)
|
func = function(name, param)
|
||||||
local id = tonumber(param)
|
local id = tonumber(param)
|
||||||
if not id then
|
if not id then
|
||||||
return false, S("Invalid usage, see /help area_flak.")
|
return false, "Invalid usage, see /help area_flak."
|
||||||
end
|
end
|
||||||
if not areas:isAreaOwner(id, name) then
|
if not areas:isAreaOwner(id, name) then
|
||||||
return false, S("Area @1 does not exist or is not owned by you.", id)
|
return false, "Area "..id.." does not exist or is not owned by you."
|
||||||
end
|
end
|
||||||
local open = not areas.areas[id].flak
|
local open = not areas.areas[id].flak
|
||||||
-- Save false as nil to avoid inflating the DB.
|
-- Save false as nil to avoid inflating the DB.
|
||||||
areas.areas[id].flak = open or nil
|
areas.areas[id].flak = open or nil
|
||||||
areas:save()
|
areas:save()
|
||||||
return true, S("Area @1 airspace is @2.", id,
|
return true, "Area "..id.." airspace "..(open and "closed" or "opened")
|
||||||
open and S("closed") or S("opened"))
|
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
function hangglider.is_gliding(player)
|
local function set_hud_overlay(player, name, image)
|
||||||
if not player then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
return hanggliding_players[player:get_player_name()]
|
|
||||||
end
|
|
||||||
|
|
||||||
local function set_hud_overlay(player, name, show)
|
|
||||||
if not enable_hud_overlay then
|
if not enable_hud_overlay then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if not hud_overlay_ids[name] and show == true then
|
if not hud_overlay_ids[name] then
|
||||||
hud_overlay_ids[name] = player:hud_add({
|
hud_overlay_ids[name] = player:hud_add({
|
||||||
[minetest.features.hud_def_type_field and "type" or "hud_elem_type"] = "image",
|
hud_elem_type = "image",
|
||||||
text = "hangglider_overlay.png",
|
text = image,
|
||||||
position = {x = 0, y = 0},
|
position = {x = 0, y = 0},
|
||||||
scale = {x = -100, y = -100},
|
scale = {x = -100, y = -100},
|
||||||
alignment = {x = 1, y = 1},
|
alignment = {x = 1, y = 1},
|
||||||
offset = {x = 0, y = 0},
|
offset = {x = 0, y = 0},
|
||||||
z_index = -150
|
z_index = -150
|
||||||
})
|
})
|
||||||
elseif hud_overlay_ids[name] and show == false then
|
else
|
||||||
player:hud_remove(hud_overlay_ids[name])
|
player:hud_change(hud_overlay_ids[name], "text", image)
|
||||||
hud_overlay_ids[name] = nil
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function set_physics_overrides(player, overrides)
|
local function set_physics_overrides(player, overrides)
|
||||||
local player_name = player:get_player_name()
|
|
||||||
if has_player_monoids then
|
if has_player_monoids then
|
||||||
for name, value in pairs(overrides) do
|
for name, value in pairs(overrides) do
|
||||||
player_monoids[name]:add_change(player, value, "hangglider:glider")
|
player_monoids[name]:add_change(player, value, "hangglider:glider")
|
||||||
end
|
end
|
||||||
elseif has_pova then
|
|
||||||
pova.add_override(player_name, "hangglider:glider",
|
|
||||||
{jump = 0, speed = overrides.speed, gravity = overrides.gravity})
|
|
||||||
pova.do_override(player)
|
|
||||||
else
|
else
|
||||||
local def = player:get_physics_override()
|
player:set_physics_override(overrides)
|
||||||
if not physics_overrides[player_name] then
|
|
||||||
physics_overrides[player_name] = {
|
|
||||||
physics = {
|
|
||||||
speed = def.speed,
|
|
||||||
jump = def.jump,
|
|
||||||
gravity = def.gravity,
|
|
||||||
},
|
|
||||||
deltas = {speed = 0, jump = 0, gravity = 0},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
-- Compute the new delta to apply (relative to current physics)
|
|
||||||
local delta = {
|
|
||||||
speed = (overrides.speed or def.speed) - def.speed,
|
|
||||||
jump = (overrides.jump or def.jump) - def.jump,
|
|
||||||
gravity = (overrides.gravity or def.gravity) - def.gravity,
|
|
||||||
}
|
|
||||||
-- Track the sum of all deltas for this session.
|
|
||||||
physics_overrides[player_name].deltas.speed = physics_overrides[player_name].deltas.speed + delta.speed
|
|
||||||
physics_overrides[player_name].deltas.jump = physics_overrides[player_name].deltas.jump + delta.jump
|
|
||||||
physics_overrides[player_name].deltas.gravity = physics_overrides[player_name].deltas.gravity + delta.gravity
|
|
||||||
-- Apply new delta on top of current physics
|
|
||||||
player:set_physics_override({
|
|
||||||
speed = def.speed + delta.speed,
|
|
||||||
jump = def.jump + delta.jump,
|
|
||||||
gravity = def.gravity + delta.gravity,
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function remove_physics_overrides(player)
|
local function remove_physics_overrides(player)
|
||||||
local player_name = player:get_player_name()
|
for _, name in pairs({"jump", "speed", "gravity"}) do
|
||||||
if has_player_monoids then
|
if has_player_monoids then
|
||||||
for _, name in pairs({"jump", "speed", "gravity"}) do
|
|
||||||
player_monoids[name]:del_change(player, "hangglider:glider")
|
player_monoids[name]:del_change(player, "hangglider:glider")
|
||||||
end
|
|
||||||
elseif has_pova then
|
|
||||||
pova.del_override(player_name, "hangglider:glider")
|
|
||||||
pova.do_override(player)
|
|
||||||
else
|
|
||||||
local def = player:get_physics_override()
|
|
||||||
if physics_overrides[player_name]
|
|
||||||
and physics_overrides[player_name].physics
|
|
||||||
and physics_overrides[player_name].deltas then
|
|
||||||
|
|
||||||
-- Subtract total delta from current values
|
|
||||||
player:set_physics_override({
|
|
||||||
speed = def.speed - physics_overrides[player_name].deltas.speed,
|
|
||||||
jump = def.jump - physics_overrides[player_name].deltas.jump,
|
|
||||||
gravity = def.gravity - physics_overrides[player_name].deltas.gravity,
|
|
||||||
})
|
|
||||||
physics_overrides[player_name] = nil
|
|
||||||
else
|
else
|
||||||
player:set_physics_override({speed = 1, jump = 1, gravity = 1})
|
player:set_physics_override({[name] = 1})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function can_fly(pos, name)
|
local function can_fly(pos, name, player_xp, player_privs)
|
||||||
if not enable_flak then
|
if not enable_flak then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
local flak = false
|
|
||||||
|
local flak, open = false, false
|
||||||
|
local priv_excemption, xp_limit = false, false
|
||||||
|
local xp_area, priv_area
|
||||||
local owners = {}
|
local owners = {}
|
||||||
for _, area in pairs(areas:getAreasAtPos(pos)) do
|
for id, area in pairs(areas:getAreasAtPos(pos)) do
|
||||||
|
-- open areas are friendly airspace(?)
|
||||||
|
if area.open then
|
||||||
|
open = true
|
||||||
|
end
|
||||||
|
if player_privs then
|
||||||
|
priv_area = priv_protector.get_area_priv(id)
|
||||||
|
if player_privs[priv_area] then
|
||||||
|
priv_excemption = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if player_xp then
|
||||||
|
xp_area = xp_redo.get_area_xp_limits(id)
|
||||||
|
if xp_area then
|
||||||
|
if (xp_area.min and player_xp < xp_area.min)
|
||||||
|
or (xp_area.max and player_xp > xp_area.max)
|
||||||
|
then
|
||||||
|
xp_limit = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
if area.flak then
|
if area.flak then
|
||||||
flak = true
|
flak = true
|
||||||
end
|
end
|
||||||
owners[area.owner] = true
|
owners[area.owner] = true
|
||||||
end
|
end
|
||||||
if flak and not owners[name] then
|
-- none of the areas has FLAK set -> friendly
|
||||||
return false
|
-- any of the overlapping areas is open -> friendly
|
||||||
|
-- owners of overlapping areas -> safe
|
||||||
|
if not flak or open or owners[name] then
|
||||||
|
return true
|
||||||
end
|
end
|
||||||
return true
|
|
||||||
|
-- privilaged players -> safe
|
||||||
|
if player_privs and priv_excemption then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- xp limits -> unfriendly
|
||||||
|
if player_xp and not xp_limit then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local function safe_node_below(pos)
|
local function safe_node_below(pos)
|
||||||
@ -209,7 +187,7 @@ local function hangglider_step(self, dtime)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not can_fly(pos, name) then
|
if not can_fly(pos, name, self.xp, self.privs) then
|
||||||
if not self.flak_timer then
|
if not self.flak_timer then
|
||||||
self.flak_timer = 0
|
self.flak_timer = 0
|
||||||
shoot_flak_sound(pos)
|
shoot_flak_sound(pos)
|
||||||
@ -227,7 +205,7 @@ local function hangglider_step(self, dtime)
|
|||||||
if not gliding then
|
if not gliding then
|
||||||
remove_physics_overrides(player)
|
remove_physics_overrides(player)
|
||||||
hanggliding_players[name] = nil
|
hanggliding_players[name] = nil
|
||||||
set_hud_overlay(player, name, false)
|
set_hud_overlay(player, name, "blank.png")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -254,8 +232,15 @@ local function hangglider_use(stack, player)
|
|||||||
textures = {"wool_white.png^[multiply:#"..color, "default_wood.png"}
|
textures = {"wool_white.png^[multiply:#"..color, "default_wood.png"}
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
set_hud_overlay(player, name, true)
|
set_hud_overlay(player, name, "hangglider_overlay.png")
|
||||||
set_physics_overrides(player, {jump = 0, gravity = 0.25})
|
set_physics_overrides(player, {jump = 0, gravity = 0.25})
|
||||||
|
local luaentity = entity:get_luaentity()
|
||||||
|
if has_xp_redo then
|
||||||
|
luaentity.xp = xp_redo.get_xp(name)
|
||||||
|
end
|
||||||
|
if has_priv_protector then
|
||||||
|
luaentity.privs = minetest.get_player_privs(name)
|
||||||
|
end
|
||||||
hanggliding_players[name] = true
|
hanggliding_players[name] = true
|
||||||
if hangglider_uses > 0 then
|
if hangglider_uses > 0 then
|
||||||
stack:add_wear(65535 / hangglider_uses)
|
stack:add_wear(65535 / hangglider_uses)
|
||||||
@ -263,7 +248,7 @@ local function hangglider_use(stack, player)
|
|||||||
return stack
|
return stack
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
set_hud_overlay(player, name, false)
|
set_hud_overlay(player, name, "blank.png")
|
||||||
remove_physics_overrides(player)
|
remove_physics_overrides(player)
|
||||||
hanggliding_players[name] = nil
|
hanggliding_players[name] = nil
|
||||||
end
|
end
|
||||||
@ -292,20 +277,18 @@ minetest.register_on_player_hpchange(function(player, hp_change, reason)
|
|||||||
end, true)
|
end, true)
|
||||||
|
|
||||||
minetest.register_entity("hangglider:glider", {
|
minetest.register_entity("hangglider:glider", {
|
||||||
initial_properties = {
|
visual = "mesh",
|
||||||
visual = "mesh",
|
visual_size = {x = 12, y = 12},
|
||||||
visual_size = {x = 12, y = 12},
|
collisionbox = {0,0,0,0,0,0},
|
||||||
collisionbox = {0,0,0,0,0,0},
|
mesh = "hangglider.obj",
|
||||||
mesh = "hangglider.obj",
|
immortal = true,
|
||||||
textures = {"wool_white.png", "default_wood.png"},
|
static_save = false,
|
||||||
immortal = true,
|
textures = {"wool_white.png", "default_wood.png"},
|
||||||
static_save = false,
|
|
||||||
},
|
|
||||||
on_step = hangglider_step,
|
on_step = hangglider_step,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_tool("hangglider:hangglider", {
|
minetest.register_tool("hangglider:hangglider", {
|
||||||
description = S("Glider"),
|
description = "Glider",
|
||||||
inventory_image = "hangglider_item.png",
|
inventory_image = "hangglider_item.png",
|
||||||
sound = {breaks = "default_tool_breaks"},
|
sound = {breaks = "default_tool_breaks"},
|
||||||
on_use = hangglider_use,
|
on_use = hangglider_use,
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
# textdomain: hangglider
|
|
||||||
White=blanc
|
|
||||||
Grey=gris
|
|
||||||
Dark_grey=gris fosc
|
|
||||||
Black=negre
|
|
||||||
Violet=violeta
|
|
||||||
Blue=blau
|
|
||||||
Cyan=cian
|
|
||||||
Dark_green=verd fosc
|
|
||||||
Green=verd
|
|
||||||
Yellow=groc
|
|
||||||
Brown=marró
|
|
||||||
Orange=taronja
|
|
||||||
Red=vermell
|
|
||||||
Magenta=magenta
|
|
||||||
Pink=rosa
|
|
||||||
Colored Glider=Planador de color
|
|
||||||
@1 Glider=Planador @1
|
|
||||||
You have entered restricted airspace!@@You will be shot down in @1 seconds by anti-aircraft guns!=Has entrat a l'espai aeri restringit!@@Seràs abatut en @1 segons per canons antiaeris!
|
|
||||||
<ID>=
|
|
||||||
Toggle airspace restrictions for area <ID>.=Activa o desactiva les restriccions d'espai aeri per a l'àrea <ID>.
|
|
||||||
Invalid usage, see /help area_flak.=Ús no vàlid, consulta /help area_flak.
|
|
||||||
Area @1 does not exist or is not owned by you.=L'àrea @1 no existeix o no és propietat teva.
|
|
||||||
Area @1 airspace is @2.=L'àrea @1 espai aeri és @2.
|
|
||||||
closed=tancat
|
|
||||||
opened=obert
|
|
||||||
Glider=Planador
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
# textdomain: hangglider
|
|
||||||
White=Weisser
|
|
||||||
Grey=Grauer
|
|
||||||
Dark_grey=Dunkelgrauer
|
|
||||||
Black=Schwarzer
|
|
||||||
Violet=Violeter
|
|
||||||
Blue=Blauer
|
|
||||||
Cyan=Cyan farbener
|
|
||||||
Dark_green=Dunkelgrüner
|
|
||||||
Green=Grüner
|
|
||||||
Yellow=Gelber
|
|
||||||
Brown=Brauner
|
|
||||||
Orange=Orange farbener
|
|
||||||
Red=Roter
|
|
||||||
Magenta=Magenta farbener
|
|
||||||
Pink=Rosa
|
|
||||||
Colored Glider=Farbiger Gleitschirm
|
|
||||||
@1 Glider=@1 Gleitschirm
|
|
||||||
You have entered restricted airspace!@@You will be shot down in @1 seconds by anti-aircraft guns!=Du bist in eingeschränktem Luftraum eingedrungen!@nDu wirst in @1 Sekunden von FLAK abgeschossen.
|
|
||||||
<ID>=
|
|
||||||
Toggle airspace restrictions for area <ID>.=Luftraumbeschränkungen für Gebiet <ID> umschalten.
|
|
||||||
Invalid usage, see /help area_flak.=Ungültige Verwendung, siehe /help area_flak.=
|
|
||||||
Area @1 does not exist or is not owned by you.=Gebiet @1 existiert nicht oder es gehört dir nicht.
|
|
||||||
Area @1 airspace is @2.=Gebiet @1 Luftraum ist @2.
|
|
||||||
closed=eingeschränkt
|
|
||||||
opened=geöffnet
|
|
||||||
Glider=Gleitschirm
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
# textdomain: hangglider
|
|
||||||
White=blanco
|
|
||||||
Grey=gris
|
|
||||||
Dark_grey=gris oscuro
|
|
||||||
Black=negro
|
|
||||||
Violet=violeta
|
|
||||||
Blue=azul
|
|
||||||
Cyan=cian
|
|
||||||
Dark_green=verde oscuro
|
|
||||||
Green=verde
|
|
||||||
Yellow=amarillo
|
|
||||||
Brown=marrón
|
|
||||||
Orange=naranja
|
|
||||||
Red=rojo
|
|
||||||
Magenta=magenta
|
|
||||||
Pink=rosa
|
|
||||||
Colored Glider=Planeador Colorizado
|
|
||||||
@1 Glider=Planeador @1
|
|
||||||
You have entered restricted airspace!@@You will be shot down in @1 seconds by anti-aircraft guns!=¡Has entrado en espacio aéreo restringido!@n¡Serás derribado en @1 segundos por cañones antiaéreos!
|
|
||||||
<ID>=
|
|
||||||
Toggle airspace restrictions for area <ID>.=Alternar restricciones de espacio aéreo para el área <ID>.
|
|
||||||
Invalid usage, see /help area_flak.=Uso no válido, consulta /help area_flak.
|
|
||||||
Area @1 does not exist or is not owned by you.=El área @1 no existe o no es tuya.
|
|
||||||
Area @1 airspace is @2.=Área @1 espacio aéreo está @2.
|
|
||||||
closed=cerrado
|
|
||||||
opened=abierto
|
|
||||||
Glider=Planeador
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
# textdomain: hangglider
|
|
||||||
White=
|
|
||||||
Grey=
|
|
||||||
Dark_grey=
|
|
||||||
Black=
|
|
||||||
Violet=
|
|
||||||
Blue=
|
|
||||||
Cyan=
|
|
||||||
Dark_green=
|
|
||||||
Green=
|
|
||||||
Yellow=
|
|
||||||
Brown=
|
|
||||||
Orange=
|
|
||||||
Red=
|
|
||||||
Magenta=
|
|
||||||
Pink=
|
|
||||||
Colored Glider=
|
|
||||||
@1 Glider=
|
|
||||||
You have entered restricted airspace!@@You will be shot down in @1 seconds by anti-aircraft guns!=
|
|
||||||
<ID>=
|
|
||||||
Toggle airspace restrictions for area <ID>.=
|
|
||||||
Invalid usage, see /help area_flak.=
|
|
||||||
Area @1 does not exist or is not owned by you.=
|
|
||||||
Area @1 airspace is @2.=
|
|
||||||
closed=
|
|
||||||
opened=
|
|
||||||
Glider=
|
|
||||||
|
|
2
mod.conf
2
mod.conf
@ -1,5 +1,5 @@
|
|||||||
name = hangglider
|
name = hangglider
|
||||||
description = Adds a functional hang glider for exploring
|
description = Adds a functional hang glider for exploring
|
||||||
depends = default, wool, dye
|
depends = default, wool, dye
|
||||||
optional_depends = areas, player_monoids, pova, unifieddyes
|
optional_depends = areas, player_monoids, priv_protector, unifieddyes, xp_redo
|
||||||
min_minetest_version = 5.0
|
min_minetest_version = 5.0
|
||||||
|
Reference in New Issue
Block a user