correção do bug no recurso salário. (all ok)

This commit is contained in:
Lunovox 2020-03-11 16:34:04 -03:00
parent 3eb3bf035e
commit a3d4a134ef
3 changed files with 74 additions and 32 deletions

View file

@ -2,10 +2,10 @@
To generate file '**template.pot**', did use command:
````xgettext -n *.lua -L Lua --force-po --keyword=modUFO.translate --from-code=UTF-8 -o template.pot````
````xgettext -n *.lua -L Lua --force-po --keyword=modMinerTrade.translate --from-code=UTF-8 -o template.pot````
To translate '**template.pot**' to your language use app poedit.:
````sudo apt-get inatall poedit````
> See more: https://forum.minetest.net/viewtopic.php?f=47&t=21974
> See more: https://forum.minetest.net/viewtopic.php?f=47&t=21974

View file

@ -1,3 +1,63 @@
minetest.register_privilege("salary", {
description=modMinerTrade.translate("Only players with this privilege received a daily payment."),
give_to_singleplayer=false,
})
modMinerTrade.payday = {
salary = (minetest.setting_get("minertrade.payday.salary") or "minertrade:minercoin 1"),
interval = (tonumber(minetest.setting_get("minertrade.payday.interval")) or 60)
}
minetest.after(3.5, function()
modMinerTrade.payday.time = 0
minetest.register_globalstep(function(dtime)
modMinerTrade.payday.time = modMinerTrade.payday.time + dtime
if modMinerTrade.payday.time >= modMinerTrade.payday.interval then
modMinerTrade.payday.time = 0
local dc = minetest.get_day_count()
local players = minetest.get_connected_players()
if #players >= 1 then
for _, player in ipairs(players) do
local lp = tonumber(player:get_meta():get_int("last_pay")) or 0
if lp ~= dc then
local playername = player:get_player_name()
if minetest.get_player_privs(playername).salary then
local nameInvList = "safe"
local inv = modMinerTrade.getDetachedInventory(playername)
--minetest.chat_send_player(playername, "vazio = "..dump(inv:is_empty(nameInvList)))
local stack = ItemStack(modMinerTrade.payday.salary)
local leftover = inv:add_item(nameInvList, stack)
modMinerTrade.setSafeInventory(playername, inv:get_list(nameInvList))
if leftover:get_count() > 0 then
minetest.chat_send_player(
playername,
core.colorize("#00ff00", "["..modMinerTrade.translate("CITY HALL").."]: ")
..modMinerTrade.translate("Your Strongbox is full! %2d items weren't added in your back account."):format(leftover:get_count())
)
minetest.sound_play("sfx_alert", {object=player, max_hear_distance=5.0,})
else
minetest.chat_send_player(
playername,
core.colorize("#00ff00", "["..modMinerTrade.translate("CITY HALL").."]: ")
..modMinerTrade.translate("The city hall deposited your %2d° salary in your bank account!"):format(dc)
)
minetest.sound_play("sfx_cash_register", {object=player, max_hear_distance=5.0,})
end
end
player:get_meta():set_int("last_pay",dc)
end
end
end
end
end)
end)
--[[
minetest.after(3.5, function()
modMinerTrade.payday = {
@ -14,34 +74,4 @@ minetest.after(3.5, function()
end)
--]]
minetest.after(3.5, function()
local interval = 5
local time = 0
minetest.register_globalstep(function(dtime)
time = time + dtime
if time >= interval then
time = 0
local dc = minetest.get_day_count()
local players = minetest.get_connected_players()
local salary = "minertrade:minercoin 1"
if #players >= 1 then
for _, player in ipairs(players) do
local playername = player:get_player_name()
local inv = modMinerTrade.getSafeInventory(ownername)
local lp = tonumber(player:get_meta("last_pay")) or 0
if lp ~= dc then
player:set_meta("last_pay",dc)
minetest.chat_send_player(
playername,
core.colorize("#00ff00", "["..modMinerTrade.translate("CITY HALL").."]: ")
..modMinerTrade.translate("The city hall deposited your salary in your bank account!")
)
minetest.sound_play("sfx_cash_register", {object=player, max_hear_distance=5.0,})
inv:add_item("safe_"..playername, salary)
end
end
end
end
end)
end)

12
settingtypes.txt Normal file
View file

@ -0,0 +1,12 @@
# MINERTRADE SETTINGS
# Only players with "salary" privilege received a daily payment.
# MINERTRADE:
# Prize given per virtual day to the online player.
# Default: 'minertrade:minercoin 1'
minertrade.payday.salary (Daily Salary) string minertrade:minercoin 1
# MINERTRADE:
# Time interval in seconds to check for rewardable players.
# Deafault: 60 | Min: 1
minertrade.payday.interval (Interval Check Salary) int 60 1