Compare commits

...

142 Commits

Author SHA1 Message Date
Olivier Dragon c4709de60f Escape icon text to allow for texture modifier 2024-04-03 13:46:44 +00:00
gabriel1379 1ef4a98247 Complete German and add Hungarian localization 2023-10-19 21:42:44 +02:00
Wuzzy 93b6da0edf Update German translation 2023-06-18 16:59:01 +00:00
rubenwardy 2b90b18fe9 Save data at a regular interval 2023-05-19 16:41:01 +01:00
rubenwardy b769e93412 Use GitLab CI instead of Travis 2023-05-19 16:35:07 +01:00
rubenwardy 5514c35409 Remove intllib from dependencies 2023-05-19 16:34:59 +01:00
Olivier Dragon 7bac284f80 Use client-side translation instead of intllib 2023-05-19 15:30:49 +00:00
jolesh 23c7ca57b7 Fix "On the Way" being added with no rails 2022-11-11 11:26:07 +00:00
jolesh eed3964d32 Fix lumberjack award only working for default tree 2022-10-21 08:00:51 +00:00
rubenwardy 37082d1186 Rename background to hud_background 2021-01-10 17:55:42 +00:00
rubenwardy 6dc91cf893 Fix error due to unchecked JSON parsing 2021-01-10 17:17:57 +00:00
rubenwardy 9c74a3f85a Update docs 2021-01-10 16:30:05 +00:00
rubenwardy b4a4a1fd74 Improve API: add awards.get_award_states() 2021-01-10 16:25:20 +00:00
Alexand(er|ra) Yst 4e8d175714 Fixed a couple typos.
- The Mesecons-related award claimed to be awarded when placing mesecon wires, but instead was coded to be awarded when placing pipes from Pipeworks. Fixed code to match description.
 - The Basic-Materials-related award claimed to require crafting flint and steel one hundred times, but instead was coded to require crafting oil extract five hundred times. Fixed description to match code.
2020-06-16 07:47:41 +00:00
Alexand(er|ra) Yst c7b60be880 player:getpos() is deprecated and calling it causes the game to halt if deprecated_lua_api_handling is set to "error" in minetest.conf. Call player:get_pos() instead to prevent the game from halting. 2020-04-19 19:05:06 +00:00
Beha ce58720493 Fix group total, fix item increment count argument, add player checks, resize award icon, fix log output 2020-04-05 16:00:33 +00:00
Beha d542042a50 Interpret group ratings of zero as not in group.
The MT API docs instruct to interpret `nil` and `0` as the same rating.
2020-04-04 17:40:48 -04:00
Beha 7e3064ef93 Check for valid players in default triggers instead of crashing. 2020-04-04 17:03:45 -04:00
Beha 9d98f950b8 Fix `eat` trigger to actually notify awards on item eat. 2020-04-04 15:35:14 -04:00
Beha 8a34ea8055 Add awards.add_defaults setting to control adding default awards.
Useful for games not based on MTG but using some of its mods.
2020-04-04 13:47:20 -04:00
rubenwardy da3d9b3980 Add awards for death, pipeworks, and mesecons 2019-09-15 18:14:58 +01:00
Sirrobzeroone 8f46d5b37d Add icons for awards 2019-08-20 11:28:15 +01:00
Max 1ffa8f10ac Add missing german translations 2019-01-26 15:26:53 +00:00
rubenwardy fb1670abc6
Fix typo in documentation for craft trigger 2018-09-14 10:59:59 +01:00
rubenwardy 38b7d9aa91
Fix progress exceeding target 2018-09-14 10:55:55 +01:00
rubenwardy 805720b4af
Fix sfinv page not updating on award unlock 2018-09-13 17:39:52 +01:00
rubenwardy 29a1b97b38
Improve code structure and awards formspec size 2018-09-13 17:33:04 +01:00
rubenwardy b856aea54d
Fix typo in custom trigger type example 2018-08-22 15:26:24 +01:00
rubenwardy 570fd3a206
Fix incorrect `description` documentation 2018-08-22 15:19:38 +01:00
CrazyDave 417ac0fe46 Fix mistakes in award definition documentation 2018-08-22 15:17:14 +01:00
BrunoMine 1ab08d68c9 Add portuguese translations 2018-08-03 12:35:18 +01:00
SmallJoker 32150bdd66 Fix crash for invalid award index selection 2018-07-15 13:17:06 +01:00
rubenwardy 8c0bb00b1a
Improve documentation 2018-06-14 00:20:30 +01:00
rubenwardy 237525b518
Add support for groups in triggers 2018-06-13 22:52:55 +01:00
heavygale 21e1ce6675 Fix convert_data crash when craft data is missing
Crash occurs when no data for "craft" is available in the old data, fixed with a additional check.
2018-05-31 15:06:56 +01:00
rubenwardy 0ae58ad0c3 Fix locked awards not taking difficulty into account 2018-04-17 22:37:09 +01:00
rubenwardy 7d462c6aa5 Add difficulty multiplers to default mod awards 2018-04-17 22:29:13 +01:00
rubenwardy f0052386c8 Add award difficulty multipler 2018-04-17 22:25:53 +01:00
rubenwardy 08f654cf94 Remove debug prints
Fixes #57
2018-04-17 22:10:40 +01:00
rubenwardy 3fc12eb689
Update README.md 2018-04-06 22:12:56 +01:00
rubenwardy 98fca7914b
Add on_unlock() documentation 2018-04-06 22:11:08 +01:00
rubenwardy 37275963df Fix notification positioning
Fixes #55, also fixes @Fixer-007
2018-04-06 00:24:56 +01:00
rubenwardy 75c01a188a Replace all mentions of achievements with awards 2018-04-05 17:56:01 +01:00
rubenwardy a5768efbc0 Fix awards disabling
Fixes #33
2018-04-05 17:24:42 +01:00
rubenwardy 4e6ade249e Use awards for technical things, and achievements for user facing things
Fixes #18
2018-04-05 17:11:51 +01:00
rubenwardy e110bbbc7a Add award unlock requirements
Fixes #52
2018-04-05 17:00:48 +01:00
rubenwardy 2f49d895ed Fix typo in previous commit 2018-04-05 16:48:33 +01:00
rubenwardy d67d19ec50 Improve sorting algorithm
Fixes #28
2018-04-05 16:44:22 +01:00
rubenwardy 4764568f6d Fix off-by-one error in counted_key award types 2018-04-05 16:21:44 +01:00
rubenwardy ee4931ae6e Add assert to awards.player() 2018-04-05 13:06:09 +01:00
rubenwardy 51ccb8c1b6 Fix crash caused by typo in method name
Fixes #51
2018-04-05 09:48:35 +01:00
rubenwardy 7f156db0df Add check for nyancat mod before registering the award
Fixes #44
2018-04-04 23:05:25 +01:00
rubenwardy 0017a174bd Change license to MIT 2018-04-04 22:57:27 +01:00
rubenwardy 0574d0375e
Merge dev branch into master 2018-04-04 22:15:43 +01:00
rubenwardy 07997a54f4 Readd awards 2018-04-04 21:11:40 +01:00
rubenwardy f84e6d8db5 Fix conversion error 2018-04-04 21:04:54 +01:00
rubenwardy f571f9d6eb Add support for death reasons 2018-04-04 20:55:33 +01:00
rubenwardy 6c79a2f73f Use mod_storage and add converter for awards.txt 2018-04-04 19:01:33 +01:00
rubenwardy f7956d97e2 Add default_def for trigger prototype 2018-04-04 18:39:06 +01:00
rubenwardy cca278024d Remove datakey and use trigger names instead 2018-04-04 18:36:47 +01:00
rubenwardy eaab883e71 Readd triggers 2018-04-04 18:35:28 +01:00
rubenwardy 28c59340ea Implement conted_key trigger type 2018-04-04 18:30:47 +01:00
rubenwardy d82972b448 Update README.md 2018-04-04 18:02:43 +01:00
rubenwardy 72cc346c35 Rename awards.def to awards.registered_awards 2018-04-04 17:43:44 +01:00
rubenwardy 5de9dcb797 Move api_helpers.lua in api.lua 2018-04-04 17:42:12 +01:00
rubenwardy 7c5fd79b57 Clean up formspec related code 2018-04-04 17:37:43 +01:00
rubenwardy c579f862b6 Reduce awards.player() calls 2018-04-04 17:32:37 +01:00
rubenwardy eeee4a8398 Clean up player data validation 2018-04-04 17:23:46 +01:00
rubenwardy ef19940edc Add trigger definitions rather than register function 2018-04-04 17:01:55 +01:00
rubenwardy 8b024accdd Add register_trigger_counted for homogenous events 2018-04-04 16:03:34 +01:00
rubenwardy dd2a5d2d1f Remove formspec notification 2018-04-04 15:46:11 +01:00
rubenwardy 2c4da0b88a Add luacheck 2018-04-04 15:36:27 +01:00
Oscar 81aa0f1c82 Fix broken achievement image (On The Way) 2017-10-05 19:04:02 +01:00
EdwardThorsten 81590b5773 Fix deprecated setting call 2017-10-02 09:11:51 +01:00
rubenwardy 3854565fa2 Update readme.md 2017-06-16 21:38:41 +01:00
xisd 096fe16c97 Update and make minor corrections to the French translation 2017-02-25 22:15:23 +00:00
xisd 3dd7a5e66a Add French translation. 2017-02-23 22:48:13 +00:00
Diego Martínez 9a02873b59 Add Spanish translation. 2017-02-23 22:48:13 +00:00
Diego Martínez e919355bec Add helper script to update translations. 2017-02-23 22:48:13 +00:00
Diego Martínez ccd9a01424 Update catalogs. 2017-02-23 22:48:13 +00:00
Diego Martínez 1049280eeb Update to new intllib API. 2017-02-23 22:48:13 +00:00
xisd 7fd56ac3d0 Resize formspec and HUD to fit bigger strings 2017-02-19 17:21:37 +00:00
rubenwardy c994978683 Update sfinv support to match stable version 2016-12-27 19:23:46 +00:00
Wuzzy 38c504e938 Add eat trigger, extend existing triggers, add 9 awards (#35)
* Add eat trigger and 2 new awards
* Add mushroom eating awards
* Add support for counting any eat/dig/craft/place
* Update readme
* Add 4 builder awards
* Update German locale
* Update dependencies
* Fix mistake in German translation
* Revert removal of background
2016-11-15 01:57:01 +01:00
rubenwardy ab7206e150 Fix mod not working with mod security and intllib 2016-11-14 21:13:32 +00:00
Wuzzy f4a5eb25f6 Fix mod not working with mod security and intllib 2016-11-09 02:42:36 +01:00
Wuzzy 43da09620e Fix bugs when mod is run outside of Minetest Game (#34) 2016-11-06 11:05:13 +00:00
Wuzzy ae01ea01dd Show error messages when there are no awards 2016-09-10 15:38:01 +01:00
Wuzzy a04f3df1e2 Check for existance of default mod 2016-09-10 15:20:38 +01:00
Wuzzy 90bf9b061a Add notification sound
License of default sound: CC-0
Source: https://www.freesound.org/people/Kastenfrosch/sounds/162482/
2016-09-01 16:32:05 +01:00
Wuzzy 0e48cd8675 Add German translation 2016-09-01 16:22:37 +01:00
Wuzzy ed09abd868 Automatic line breaks for long award desc. 2016-09-01 16:22:37 +01:00
Wuzzy 13eb5dcdae Add optional default description for triggers 2016-09-01 16:22:37 +01:00
Wuzzy 67946bf0c4 Improve strings and make them translatable 2016-09-01 16:21:41 +01:00
Wuzzy 50349917e5 Remove outdated /cawards command for real 2016-09-01 16:37:05 +02:00
Wuzzy 963c5772df Fix crash when opening awards after clearing 2016-09-01 16:36:42 +02:00
rubenwardy 92c43d1c04 Fix style issues 2016-08-30 01:05:43 +01:00
Wuzzy 0692d1cc85 Remove some redundant “ ~= nil”s in init.lua 2016-08-11 10:00:07 +02:00
Wuzzy 1bd96e662b More consistent code style in init.lua 2016-08-11 09:55:56 +02:00
Wuzzy 5b416c61c4 Fix/change some achievements backgrounds 2016-08-11 09:49:47 +02:00
Wuzzy d4c47775c9 Add custom icon for Firefighter 2016-08-10 20:13:39 +02:00
Wuzzy 20eaf3b34f Add Lava Miner award (digging close to lava) 2016-08-10 14:06:59 +02:00
Wuzzy cdf59bb9fd Fix typo in firefighter award ID 2016-08-10 13:11:08 +02:00
Wuzzy 743cb4ce8d Add craft 10 mese lamps award 2016-08-10 12:53:57 +02:00
Wuzzy 9264c75f0a Add Pyromaniac and Firefighter awards 2016-08-10 12:45:16 +02:00
Wuzzy fd79fe6521 Add snow award (proof for visiting snow land) 2016-08-10 11:52:51 +02:00
Wuzzy 7767cff0bf Add 2 new stone brick crafting awards
To give a reason to do something with all that stockpiled cobblestone ;-)
2016-08-10 11:32:13 +02:00
Wuzzy 94304a4a90 Heavily nerf lumberjack awards, 1296 trees max.
Playing lumberjack gets repetitive pretty soon,
it's not fun at all to do it for long.
Let's do some calculations:
Digging 100 trees w/ diamond axe takes ca. 3.5 min.
1 diamond axe lasts for 200-300 trees and needs 3 diamonds.
Meaning, to get L337 Lumberjack (100000) trees you
need 58 hours only digging trees! Plus the time to
find ca. 1000 diamonds (100000/300*3) only for the
axes. So much nope.

New awards are factors of 6, capped capped at 1296
because it gets boring at about that point and already
with 1000 trees in your storage you have enough wood
for a long time.

Also, award names were slightly changed.
2016-08-10 09:39:27 +02:00
Wuzzy ae09298ea2 More consistent award icons, add “level” icons 2016-08-10 09:19:45 +02:00
Wuzzy 6a7ea1a70d Add a lot of awards 2016-08-10 09:19:36 +02:00
rubenwardy d38ba4e8a0 Release 2.3.0 2016-08-02 00:09:43 +01:00
Wuzzy f5ea95ad35 Add new awards, remove death awards 2016-08-01 23:56:06 +01:00
Wuzzy 9b6e93dd9a Announce secret awards as secret awards 2016-08-01 23:46:49 +01:00
Wuzzy 49f251136e Make secret awards darker in list + other tweaks 2016-08-01 23:46:15 +01:00
rubenwardy 9308b95163 Add sfinv support 2016-08-01 22:39:32 +01:00
rubenwardy f6515c12b8 Stop progress bars going out of bounds
Fixes #21
2016-08-01 21:04:00 +01:00
Wuzzy 00eeeb3eef Add support for Unified Inventory 2016-08-01 20:38:19 +01:00
Wuzzy 5dec2fd60b Make textures follow naming conventions 2016-08-01 20:34:23 +01:00
rubenwardy 7eeebf0f40 Release 2.2.0 2016-08-01 20:28:55 +01:00
rubenwardy b689dc8eaf Add progress bar 2016-08-01 20:27:12 +01:00
rubenwardy f5cf49af2e Release 2.1.2 2016-08-01 17:07:10 +01:00
rubenwardy 48bb2e9656 Fix craft trigger not taking stack count into account 2016-08-01 17:05:02 +01:00
rubenwardy c79f13a4a3 Fix bug with getting player data, and release 2.1.1 2016-07-29 17:47:56 +01:00
rubenwardy 48ae012210 Release 2.1 2016-07-29 17:38:21 +01:00
rubenwardy 1fe166e2c5 Fix prize giving bug 2016-07-29 17:31:13 +01:00
rubenwardy 96746aaf1e Add awards.increment_item_counter() and use it 2016-07-29 17:25:02 +01:00
rubenwardy f430b4eb68 Move unrelated things from trigger.lua 2016-07-29 17:15:52 +01:00
rubenwardy dee1880fd3 Add awards.run_trigger_callbacks() and use it 2016-07-29 17:13:01 +01:00
rubenwardy e92be32ec1 Release 2.0 2016-07-29 16:36:05 +01:00
rubenwardy 3c4f6e50b1 Add and remove a few awards 2016-07-29 16:32:58 +01:00
rubenwardy 116889080c Fix nyancat texture 2016-07-29 16:25:39 +01:00
rubenwardy 92eaa5c876 Add awards.getFormspec() 2016-07-29 16:23:34 +01:00
rubenwardy f3f6af9e66 Fix bugs in craft trigger, and add an award to use it 2016-07-29 16:19:58 +01:00
rubenwardy 628e485900 More changes 2016-07-29 16:03:55 +01:00
rubenwardy 56d08f2f49 Refactor awards.unlock 2016-07-29 16:03:30 +01:00
rubenwardy 79818c1355 Add locale template.txt 2016-07-29 16:02:14 +01:00
rubenwardy 791666489b helpers.lua -> api_helpers.lua 2016-07-29 16:02:14 +01:00
rubenwardy 0e2ed176fa Separate triggers from API 2016-07-29 16:02:14 +01:00
rubenwardy 30aee5090f register_on_unlock and on_unlock 2016-07-29 16:02:14 +01:00
rubenwardy cfe11a57c7 Add licenses 2016-07-29 16:00:58 +01:00
rubenwardy 87c04be9ea awards.register_trigger 2016-07-29 16:00:58 +01:00
rubenwardy 85efc67049 Move helpers and chat commands to separate files 2016-07-29 15:58:30 +01:00
210 changed files with 4771 additions and 1222 deletions

8
.gitlab-c.yml Normal file
View File

@ -0,0 +1,8 @@
image: abaez/luarocks
test:
stage: test
before_script:
- luarocks install --local luacheck
script:
- $HOME/.luarocks/bin/luacheck .

14
.luacheckrc Normal file
View File

@ -0,0 +1,14 @@
unused_args = false
allow_defined_top = true
globals = {
"minetest", "awards",
}
read_globals = {
string = {fields = {"split"}},
table = {fields = {"copy", "getn"}},
"vector", "default", "ItemStack",
"dump", "sfinv", "intllib",
"unified_inventory",
}

19
LICENSE.txt Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) 2013-8 rubenwardy
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

328
README.md Normal file
View File

@ -0,0 +1,328 @@
# Awards
Adds awards/achievements to Minetest (plus a very good API).
by [rubenwardy](https://rubenwardy.com), licensed under MIT.
With thanks to Wuzzy, kaeza, and MrIbby.
Majority of awards are back ported from Calinou's old fork in Carbone, under same license.
# Introduction
## Awards and Triggers
An award is a single unlockable unit, registered like so:
```lua
awards.register_award("mymod:award", {
description = "My Example Award",
})
```
Awards are unlocked either using `awards.unlock()` or by a trigger being
fullfilled. A trigger is a condition which unlocks an award. Triggers are
registered at the same time as an award is registered:
```lua
awards.register_award("mymod:award", {
description = "My Example Award",
trigger = {
type = "dig",
node = "default:stone",
target = 10,
},
})
```
The above trigger type is an example of a counted_key trigger:
rather than a single counter there's a counter per key - in this
case the key is the value of the `node` field.
If you leave out the key in a `counted_key` trigger, then the total will be used
instead. For example, here is an award which unlocks after you've placed 10
nodes of any type:
```lua
awards.register_award("mymod:award", {
description = "Place 10 nodes!",
trigger = {
type = "place",
target = 10,
},
})
```
You can also register an *Unlock Function*, which can return the name of an
award to unlock it:
```lua
awards.register_award("mymod:award", {
title = "Lava Miner",
description = "Mine any block while being very close to lava.",
})
awards.register_on_dig(function(player, data)
local pos = player:get_pos()
if pos and (minetest.find_node_near(pos, 1, "default:lava_source") or
minetest.find_node_near(pos, 1, "default:lava_flowing")) then
return "mymod:award"
end
return nil
end)
```
The above is a bad example as you don't actually need the stats data given.
It would be better to register a `dignode` callback and call `awards.unlock()`
if the condition is met.
## Trigger Types
The trigger type is used to determine which event will cause the trigger will be
fulfilled. The awards mod comes with a number of predefined types, documented
in [Builtin Trigger Types](#builtin-trigger-types).
Trigger types are registered like so:
```lua
awards.register_trigger("chat", {
type = "counted",
progress = "@1/@2 chat messages",
auto_description = { "Send a chat message", "Chat @1 times" },
})
minetest.register_on_chat_message(function(name, message)
local player = minetest.get_player_by_name(name)
if not player or string.find(message, "/") then
return
end
awards.notify_chat(player)
end)
```
A trigger type has a type as well, which determines how the data is stored and
also how the trigger is fulfilled.
**Trigger Type Types:**
* **custom** requires you handle the calling of awards.unlock() yourself. You also
need to implement on_register() yourself. You'll also probably want to implement
`on_register()` to catch awards registered with your trigger type.
* **counted** stores a single counter for each player which is incremented by calling
`trigger:notify(player)`. Good for homogenous actions like number of chat messages,
joins, and the like.
* **counted_key** stores a table of counters each indexed by a key. There is also
a total field (`__total`) which stores the sum of all counters. A counter is
incremented by calling `trigger:notify(player, key)`. This is good for things like
placing nodes or crafting items, where the key will be the item or node name.
If `key` is an item, then you should also add `key_is_item = true` to the
trigger type definition.
As said, you could use a custom trigger if none of the other ones match your needs.
Here's an example.
```lua
awards.register_trigger("foo", {
type = "custom",
progress = "@1/@2 foos",
auto_description = { "Do a foo", "Foo @1 times" },
on_register = function(self, award)
print(award.name .. " was registered with foo trigger type")
end,
})
minetest.register_on_foo(function()
for _, trigger in pairs(awards.on.foo) do
-- trigger is either a trigger tables or
-- or an unlock function.
-- some complex logic
if condition then
awards.unlock(trigger)
end
end
end)
```
## Award Difficulty
Difficulty is used to determine how awards are sorted in awards lists.
If the award trigger is counted, ie: the trigger requires a `target` property,
then the difficulty multipler is timesd by `target` to get the overall difficulty.
If the award isn't a counted type then the difficulty multiplier is used as the
overal difficulty. Award difficulty affects how awards are sorted in a list -
more difficult awards are further down the list.
In real terms, `difficulty` is a relative difficulty to do one unit of the trigger
if its counted, otherwise it's the relative difficulty of completely doing the
award (if not-counted). For the `dig` trigger type, 1 unit would be 1 node dug.
Actual code used to calculate award difficulty:
```lua
local difficulty = def.difficulty or 1
if def.trigger and def.trigger.target then
difficulty = difficulty * def.trigger.target
end
```
# API
## Awards
* `awards.register_award(name, def)`, the def table has the following fields:
* `title` - title of the award (defaults to name)
* `description` - longer description of the award, displayed in Awards tab
* `difficulty` - see [Award Difficulty](#award-difficulty).
* `requires` - list of awards that need to be unlocked before this one
is visible.
* `prizes` - list of items to give when you earn the award
* `secret` - boolean if this award is secret (i.e. showed on awards list)
* `sound` - `SimpleSoundSpec` table to play on unlock.
`false` to disable unlock sound.
* `icon` - the icon image. Defaults to `awards_unknown.png`.
* `hud_background` - the background image used in the HUD to contain the text and icon.
Defaults to `awards_bg_default.png`.
* `trigger` - trigger definition, see [Builtin Trigger Types](#builtin-trigger-types).
* `on_unlock(name, def)` - callback on unlock.
* `awards.registered_awards` - table of award name to definition.
* `awards.register_on_unlock(func(name, def))`
* `name` is the player name
* `def` is the award def.
* return true to cancel HUD from appearing.
* `awards.unlock(player_name, award_name)`
* gives an award to a player
* `awards.get_award_states(player_name)`
* Returns list of tables, sorted by `score`, each having the fields:
```lua
{
name = "mymod:awardname",
def = {}, -- Award definition
unlocked = true, -- Whether award has been unlocked
started = true, -- Whether any progress has been made
score = 0, -- Score used in sorting
-- Either a table or nil
-- Will be nil if progress is indeterminable or
-- if the award is unlocked
progress = {
current = 5,
target = 10,
label = "label", -- Label to show over progress bar
}
}
```
## Triggers
* `awards.register_trigger(name, def)`, the def table has the following fields:
* `type` - see trigger type types in [Trigger Types](#trigger-types).
* `progress` - used to format progress, defaults to "%1/%2".
* `auto_description` - a table of two elements. Each element is a format string. Element 1 is singular, element 2 is plural. Used for the award description (not title) if none is given.
* `on_register(self, award_def)` - called when an award registers with this type.
* "counted_key" only:
* `auto_description_total` - Used if the trigger is for the total.
* `get_key(self, def)` - get key for particular award, return nil for a total.
* `key_is_item` - true if the key is an item name. On notify(),
any watched groups will also be notified as `group:groupname` keys.
* `awards.registered_triggers` - table of trigger name to definition.
## Builtin Trigger Types
Callbacks (register a function to be run)
* dig type: Dig a node.
* node: the dug node type. If nil, all dug nodes are counted
* place type: Place a node.
* node: the placed node type. If nil, all placed nodes are counted
* craft type: Craft something.
* item: the crafted item type. If nil, all crafted items are counted
* death type: Die.
* reason: the death reason, one of the types in PlayerHPChangeReason (see lua_api.txt)
or nil for total deaths.
* chat type: Write a chat message.
* join type: Join the server.
* eat type: Eat an item.
* item: the eaten item type. If nil, all eaten items are counted
(for all types) target - how many times to dig/place/craft/etc.
Each type has a register function like so:
* awards.register_on_TRIGGERTYPE(func(player, data))
* data is the player stats data
* return award name or null
### dig
```lua
trigger = {
type = "dig",
node = "default:dirt", -- item, alias, or group
target = 50,
}
```
### place
```lua
trigger = {
type = "place",
node = "default:dirt", -- item, alias, or group
target = 50,
}
```
### craft
```lua
trigger = {
type = "craft",
item = "default:dirt", -- item, alias, or group
target = 50,
}
```
### death
```lua
trigger = {
type = "death",
reason = "fall",
target = 5,
}
```
### chat
```lua
trigger = {
type = "chat",
target = 100,
}
```
### join
```lua
trigger = {
type = "join",
target = 100,
}
```
### eat
```lua
trigger = {
type = "eat",
item = "default:apple",
target = 100,
}
```

505
api.lua
View File

@ -1,505 +0,0 @@
-- AWARDS
-- by Rubenwardy
-------------------------------------------------------
-- this is api function file
-------------------------------------------------------
-- The global award namespace
awards = {
show_mode = "hud"
}
-- Table Save Load Functions
function awards.save()
local file = io.open(minetest.get_worldpath().."/awards.txt", "w")
if file then
file:write(minetest.serialize(awards.players))
file:close()
end
end
function awards.load()
local file = io.open(minetest.get_worldpath().."/awards.txt", "r")
if file then
local table = minetest.deserialize(file:read("*all"))
if type(table) == "table" then
return table
end
end
return {}
end
awards.players = awards.load()
function awards.player(name)
return awards.players[name]
end
-- A table of award definitions
awards.def = {}
function awards.tbv(tb,value,default)
if not default then
default = {}
end
if not tb or type(tb) ~= "table" then
if not value then
value = "[NULL]"
end
minetest.log("error", "awards.tbv - table "..dump(value).." is null, or not a table! Dump: "..dump(tb))
return
end
if not value then
error("[ERROR] awards.tbv was not used correctly!\n"..
"Value: '"..dump(value).."'\n"..
"Dump:"..dump(tb))
return
end
if not tb[value] then
tb[value] = default
end
end
function awards.assertPlayer(playern)
awards.tbv(awards.players, playern)
awards.tbv(awards.players[playern], "name", playern)
awards.tbv(awards.players[playern], "unlocked")
awards.tbv(awards.players[playern], "place")
awards.tbv(awards.players[playern], "count")
awards.tbv(awards.players[playern], "craft")
awards.tbv(awards.players[playern], "deaths", 0)
awards.tbv(awards.players[playern], "joins", 0)
awards.tbv(awards.players[playern], "chats", 0)
end
-- Load files
dofile(minetest.get_modpath("awards").."/triggers.lua")
-- API Functions
function awards._additional_triggers(name, data_table)
-- To add triggers in another mod, you should override this function
-- If the code can't handle the trigger passed, then call the last value of _additional_triggers
--[[
local add_trig = awards._additional_triggers
awards._additional_triggers = function(name, data_table)
if data_table.trigger.type == "trigger" then
local tmp = {
award = name,
node = data_table.trigger.node,
target = data_table.trigger.target,
}
table.insert(awards.onTrigger,tmp)
elseif data_table.trigger.type == "trigger2" then
local tmp = {
award = name,
node = data_table.trigger.node,
target = data_table.trigger.target,
}
table.insert(awards.onTrigger2,tmp)
else
add_trig(name, data_table)
end
end
]]--
end
function awards.register_achievement(name,data_table)
-- see if a trigger is defined in the achievement definition
if data_table.trigger and data_table.trigger.type then
if data_table.trigger.type == "dig" then
local tmp = {
award = name,
node = data_table.trigger.node,
target = data_table.trigger.target,
}
table.insert(awards.onDig,tmp)
elseif data_table.trigger.type == "place" then
local tmp = {
award = name,
node = data_table.trigger.node,
target = data_table.trigger.target,
}
table.insert(awards.onPlace,tmp)
elseif data_table.trigger.type == "craft" then
local tmp = {
award = name,
item = data_table.trigger.item,
target = data_table.trigger.target,
}
table.insert(awards.onCraft,tmp)
elseif data_table.trigger.type == "death" then
local tmp = {
award = name,
target = data_table.trigger.target,
}
table.insert(awards.onDeath,tmp)
elseif data_table.trigger.type == "chat" then
local tmp = {
award = name,
target = data_table.trigger.target,
}
table.insert(awards.onChat,tmp)
elseif data_table.trigger.type == "join" then
local tmp = {
award = name,
target = data_table.trigger.target,
}
table.insert(awards.onJoin,tmp)
else
awards._additional_triggers(name, data_table)
end
end
-- check icon, background and custom_announce data
if data_table.icon == nil or data_table.icon == "" then
data_table.icon = "unknown.png"
end
if data_table.background == nil or data_table.background == "" then
data_table.background = "bg_default.png"
end
if data_table.custom_announce == nil or data_table.custom_announce == "" then
data_table.custom_announce = "Achievement Unlocked:"
end
-- add the achievement to the definition table
data_table.name = name
awards.def[name] = data_table
end
-- run a function when a node is dug
function awards.register_onDig(func)
table.insert(awards.onDig,func)
end
-- run a function when a node is placed
function awards.register_onPlace(func)
table.insert(awards.onPlace,func)
end
-- run a function when a player dies
function awards.register_onDeath(func)
table.insert(awards.onDeath,func)
end
-- run a function when a player chats
function awards.register_onChat(func)
table.insert(awards.onChat,func)
end
-- run a function when a player joins
function awards.register_onJoin(func)
table.insert(awards.onJoin,func)
end
-- run a function when an item is crafted
function awards.register_onCraft(func)
table.insert(awards.onCraft,func)
end
-- This function is called whenever a target condition is met.
-- It checks if a player already has that achievement, and if they do not,
-- it gives it to them
----------------------------------------------
--awards.give_achievement(name,award)
-- name - the name of the player
-- award - the name of the award to give
function awards.give_achievement(name, award)
-- Access Player Data
local data = awards.players[name]
-- Perform checks
if not data then
return
end
if not awards.def[award] then
return
end
awards.tbv(data,"unlocked")
-- check to see if the player does not already have that achievement
if not data.unlocked[award] or data.unlocked[award]~=award then
-- Set award flag
data.unlocked[award]=award
-- Give Prizes
if awards.def[award] and awards.def[award].prizes then
for i = 1, #awards.def[award].prizes do
local itemstack = ItemStack(awards.def[award].prizes[i])
if itemstack:is_empty() or not itemstack:is_known() then
return
end
local receiverref = core.get_player_by_name(name)
if receiverref == nil then
return
end
receiverref:get_inventory():add_item("main", itemstack)
end
end
-- Get data from definition tables
local title = award
local desc = ""
local background = ""
local icon = ""
local custom_announce = ""
if awards.def[award].title then
title = awards.def[award].title
end
if awards.def[award].custom_announce then
custom_announce = awards.def[award].custom_announce
end
if awards.def[award].background then
background = awards.def[award].background
end
if awards.def[award].icon then
icon = awards.def[award].icon
end
if awards.def[award] and awards.def[award].description then
desc = awards.def[award].description
end
-- send the won award message to the player
if awards.show_mode == "formspec" then
-- use a formspec to send it
minetest.show_formspec(name, "achievements:unlocked", "size[4,2]"..
"image_button_exit[0,0;4,2;"..background..";close1; ]"..
"image_button_exit[0.2,0.8;1,1;"..icon..";close2; ]"..
"label[1.1,1;"..title.."]"..
"label[0.3,0.1;"..custom_announce.."]")
elseif awards.show_mode == "chat" then
-- use the chat console to send it
minetest.chat_send_player(name, "Achievement Unlocked: "..title)
if desc~="" then
minetest.chat_send_player(name, desc)
end
else
local player = minetest.get_player_by_name(name)
local one = player:hud_add({
hud_elem_type = "image",
name = "award_bg",
scale = {x = 1, y = 1},
text = background,
position = {x = 0.5, y = 0},
offset = {x = 0, y = 138},
alignment = {x = 0, y = -1}
})
local two = player:hud_add({
hud_elem_type = "text",
name = "award_au",
number = 0xFFFFFF,
scale = {x = 100, y = 20},
text = "Achievement Unlocked!",
position = {x = 0.5, y = 0},
offset = {x = 0, y = 40},
alignment = {x = 0, y = -1}
})
local three = player:hud_add({
hud_elem_type = "text",
name = "award_title",
number = 0xFFFFFF,
scale = {x = 100, y = 20},
text = title,
position = {x = 0.5, y = 0},
offset = {x = 30, y = 100},
alignment = {x = 0, y = -1}
})
local four = player:hud_add({
hud_elem_type = "image",
name = "award_icon",
scale = {x = 4, y = 4},
text = icon,
position = {x = 0.5, y = 0},
offset = {x = -81.5, y = 126},
alignment = {x = 0, y = -1}
})
minetest.after(3, function()
player:hud_remove(one)
player:hud_remove(two)
player:hud_remove(three)
player:hud_remove(four)
end)
end
-- record this in the log
minetest.log("action", name.." has unlocked award "..title)
-- save playertable
awards.save()
end
end
-- List a player's achievements
minetest.register_chatcommand("list_awards", {
params = "obsolete",
description = "list_awards: obsolete. Use /awards",
func = function(name, param)
minetest.chat_send_player(name, "This command has been made obsolete. Use /awards instead.")
awards.showto(name, name, nil, false)
end
})
minetest.register_chatcommand("awards", {
params = "",
description = "awards: list awards",
func = function(name, param)
awards.showto(name, name, nil, false)
end
})
minetest.register_chatcommand("cawards", {
params = "",
description = "awards: list awards in chat",
func = function(name, param)
awards.showto(name, name, nil, true)
end
})
minetest.register_chatcommand("awd", {
params = "award name",
description = "awd: Details of awd gotten",
func = function(name, param)
local def = awards.def[param]
if def then
minetest.chat_send_player(name,def.title..": "..def.description)
else
minetest.chat_send_player(name,"Award not found.")
end
end
})
--[[minetest.register_chatcommand("gawd", {
params = "award name",
description = "gawd: give award to self",
func = function(name, param)
awards.give_achievement(name,param)
end
})]]--
function awards._order_awards(name)
local done = {}
local retval = {}
local player = awards.player(name)
if player and player.unlocked then
for _,got in pairs(player.unlocked) do
if awards.def[got] then
done[got] = true
table.insert(retval,{name=got,got=true})
end
end
end
for _,def in pairs(awards.def) do
if not done[def.name] then
table.insert(retval,{name=def.name,got=false})
end
end
return retval
end
function awards.showto(name, to, sid, text)
if name == "" or name == nil then
name = to
end
if text then
if not awards.players[name] or not awards.players[name].unlocked then
minetest.chat_send_player(to, "You have not unlocked any awards")
return
end
minetest.chat_send_player(to, name.."'s awards:")
for _, str in pairs(awards.players[name].unlocked) do
local def = awards.def[str]
if def then
if def.title then
if def.description then
minetest.chat_send_player(to, def.title..": "..def.description)
else
minetest.chat_send_player(to, def.title)
end
else
minetest.chat_send_player(to, str)
end
end
end
else
if sid == nil or sid < 1 then
sid = 1
end
local formspec = "size[11,5]"
local listofawards = awards._order_awards(name)
-- Sidebar
if sid then
local item = listofawards[sid+0]
local def = awards.def[item.name]
if def and def.secret and not item.got then
formspec = formspec .. "label[1,2.75;Secret Award]"..
"image[1,0;3,3;unknown.png]"
if def and def.description then
formspec = formspec .. "label[0,3.25;Unlock this award to find out what it is]"
end
else
local title = item.name
if def and def.title then
title = def.title
end
local status = ""
if item.got then
status = " (got)"
end
local icon = ""
if def and def.icon then
icon = def.icon
end
formspec = formspec .. "label[1,2.75;"..title..status.."]"..
"image[1,0;3,3;"..icon.."]"
if def and def.description then
formspec = formspec .. "label[0,3.25;"..def.description.."]"
end
end
end
-- Create list box
formspec = formspec .. "textlist[4.75,0;6,5;awards;"
local first = true
for _,award in pairs(listofawards) do
local def = awards.def[award.name]
if def then
if not first then
formspec = formspec .. ","
end
first = false
if def.secret and not award.got then
formspec = formspec .. "#ACACACSecret Award"
else
local title = award.name
if def and def.title then
title = def.title
end
if award.got then
formspec = formspec .. minetest.formspec_escape(title)
else
formspec = formspec .. "#ACACAC".. minetest.formspec_escape(title)
end
end
end
end
formspec = formspec .. ";"..sid.."]"
-- Show formspec to user
minetest.show_formspec(to,"awards:awards",formspec)
end
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname~="awards:awards" then
return false
end
if fields.quit then
return true
end
local name = player:get_player_name()
if fields.awards then
local event = minetest.explode_textlist_event(fields.awards)
if event.type == "CHG" then
awards.showto(name,name,event.index,false)
end
end
return true
end)

View File

@ -1 +0,0 @@
intllib?

View File

@ -1 +0,0 @@
Adds achievements to Minetest, and an API to register new ones.

409
init.lua
View File

@ -1,373 +1,50 @@
-- AWARDS
-- by Rubenwardy
-------------------------------------------------------
-- this is the init file for the award mod
-------------------------------------------------------
-- Copyright (c) 2013-18 rubenwardy. MIT.
local S
if (intllib) then
dofile(minetest.get_modpath("intllib").."/intllib.lua")
S = intllib.Getter(minetest.get_current_modname())
else
S = function ( s ) return s end
-- Internationalization support.
local S = minetest.get_translator(minetest.get_current_modname())
-- The global award namespace
awards = {
show_mode = "hud",
registered_awards = {},
registered_triggers = {},
on_unlock = {},
translator = S,
}
-- Load files
local modpath = minetest.get_modpath(minetest.get_current_modname()).."/src"
dofile(modpath.."/data.lua")
dofile(modpath.."/api_awards.lua")
dofile(modpath.."/api_triggers.lua")
dofile(modpath.."/chat_commands.lua")
dofile(modpath.."/gui.lua")
dofile(modpath.."/triggers.lua")
-- Optionally add default awards.
if minetest.settings:get_bool("awards.add_defaults", true) then
dofile(modpath.."/awards.lua")
end
dofile(minetest.get_modpath("awards").."/api.lua")
awards.load()
minetest.register_on_shutdown(awards.save)
-- Light it up
awards.register_achievement("award_lightitup",{
title = S("Light It Up"),
description = S("Place 100 torches."),
icon = "novicebuilder.png",
trigger = {
type = "place",
node = "default:torch",
target = 100
}
})
-- Light ALL the things!
awards.register_achievement("award_light_all_the_things",{
title = S("Light ALL The Things!"),
description = S("Place 1,000 torches."),
icon = "novicebuilder.png",
trigger = {
type = "place",
node = "default:torch",
target = 1000
}
})
-- Saint-Maclou
if minetest.get_modpath("moreblocks") then
awards.register_achievement("award_saint_maclou",{
title = S("Saint-Maclou"),
description = S("Place 20 coal checkers."),
icon = "novicebuilder.png",
trigger = {
type = "place",
node = "moreblocks:coal_checker",
target = 20
}
})
-- Castorama
awards.register_achievement("award_castorama",{
title = S("Castorama"),
description = S("Place 20 iron checkers."),
icon = "novicebuilder.png",
trigger = {
type = "place",
node = "moreblocks:iron_checker",
target = 20
}
})
-- Sam the Trapper
awards.register_achievement("award_sam_the_trapper",{
title = S("Sam the Trapper"),
description = S("Place 2 trap stones."),
icon = "novicebuilder.png",
trigger = {
type = "place",
node = "moreblocks:trap_stone",
target = 2
}
})
local function check_save()
awards.save()
minetest.after(18, check_save)
end
minetest.after(8 * math.random() + 10, check_save)
-- Obsessed with Obsidian
awards.register_achievement("award_obsessed_with_obsidian",{
title = S("Obsessed with Obsidian"),
description = S("Mine 50 obsidian."),
icon = "miniminer.png",
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:obsidian",
target = 50
}
})
-- On the way
awards.register_achievement("award_on_the_way",{
title = S("On The Way"),
description = S("Place 100 rails."),
icon = "novicebuilder.png",
trigger = {
type = "place",
node = "default:rail",
target = 100
}
})
-- Lumberjack
awards.register_achievement("award_lumberjack",{
title = S("Lumberjack"),
description = S("Dig 100 tree blocks."),
icon = "default_tree.png",
trigger = {
type = "dig",
node = "default:tree",
target = 100
}
})
-- Semi-pro Lumberjack
awards.register_achievement("award_lumberjack_semipro",{
title = S("Semi-pro Lumberjack"),
description = S("Dig 1,000 tree blocks."),
icon = "default_tree.png",
trigger = {
type = "dig",
node = "default:tree",
target = 1000
}
})
-- Professional Lumberjack
awards.register_achievement("award_lumberjack_professional",{
title = S("Professional Lumberjack"),
description = S("Dig 10,000 tree blocks."),
icon = "default_tree.png",
trigger = {
type = "dig",
node = "default:tree",
target = 10000
}
})
-- L33T Lumberjack
awards.register_achievement("award_lumberjack_leet",{
title = S("L33T Lumberjack"),
description = S("Dig 100,000 tree blocks."),
icon = "default_tree.png",
trigger = {
type = "dig",
node = "default:tree",
target = 100000
}
})
-- Junglebaby
awards.register_achievement("award_junglebaby",{
title = S("Junglebaby"),
description = S("Dig 100 jungle tree blocks."),
icon = "default_jungletree.png",
trigger = {
type = "dig",
node = "default:jungletree",
target = 100
}
})
-- Jungleman
awards.register_achievement("award_jungleman",{
title = S("Jungleman"),
description = S("Dig 1,000 jungle tree blocks."),
icon = "default_jungletree.png",
trigger = {
type = "dig",
node = "default:jungletree",
target = 1000
}
})
-- Found some Mese!
awards.register_achievement("award_mesefind",{
title = S("First Mese Find"),
description = S("Find some Mese."),
icon = "default_mese_block.png",
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:stone_with_mese",
target = 1
}
})
-- You're a copper
awards.register_achievement("award_youre_a_copper",{
title = S("You're a copper"),
description = S("Dig 1,000 copper ores."),
icon = "miniminer.png",
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:stone_with_copper",
target = 1000
}
})
-- You're winner
awards.register_achievement("award_youre_winner",{
title = S("YOU'RE A WINNER!"),
description = S("Dig 1 mossy cobblestone."),
icon = "miniminer.png",
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:mossycobble",
target = 1
},
secret = true,
})
-- Found a Nyan cat!
awards.register_achievement("award_nyanfind",{
title = S("OMG, Nyan Cat!"),
description = S("Find a nyan cat."),
icon = "default_nc_rb.png",
trigger = {
type = "dig",
node = "default:nyancat",
target = 1
}
})
-- Mini Miner
awards.register_achievement("award_mine2",{
title = S("Mini Miner"),
description = S("Dig 100 stone blocks."),
icon = "miniminer.png",
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:stone",
target = 100
}
})
-- Hardened Miner
awards.register_achievement("award_mine3",{
title = S("Hardened Miner"),
description = S("Dig 1,000 stone blocks"),
icon = "miniminer.png",
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:stone",
target = 1000
}
})
-- Master Miner
awards.register_achievement("award_mine4",{
title = S("Master Miner"),
description = S("Dig 10,000 stone blocks."),
icon = "miniminer.png",
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:stone",
target = 10000
}
})
-- Marchand de sable
awards.register_achievement("award_marchand_de_sable",{
title = S("Marchand De Sable"),
description = S("Dig 1,000 sand."),
background = "bg_mining.png",
trigger = {
type = "dig",
node = "default:sand",
target = 1000
}
})
-- Join
awards.register_achievement("award_join2",{
title = S("Frequent Visitor"),
description = S("Connect to the server 50 times."),
trigger = {
type = "join",
target = 50
},
secret = true
})
-- Dying Spree
awards.register_achievement("award_dying_spree",{
title = S("Dying Spree"),
description = S("Die 5 times."),
trigger = {
type = "death",
target = 5
}
})
-- Bot-like
awards.register_achievement("award_bot_like",{
title = S("Bot-like"),
description = S("Die 10 times."),
trigger = {
type = "death",
target = 10
}
})
-- You Suck!
awards.register_achievement("award_you_suck",{
title = S("You Suck!"),
description = S("Die 100 times."),
trigger = {
type = "death",
target = 100
},
secret = true
})
-- Burned to death
awards.register_achievement("award_burn",{
title = S("You're a witch!"),
description = S("Burn to death in a fire.")
})
awards.register_onDeath(function(player,data)
local pos = player:getpos()
if pos and minetest.find_node_near(pos, 2, "fire:basic_flame") ~= nil then
return "award_burn"
end
return nil
end)
-- Died in flowing lava
awards.register_achievement("award_in_the_flow",{
title = S("In the Flow"),
description = S("Die in flowing lava.")
})
awards.register_onDeath(function(player,data)
local pos = player:getpos()
if pos and minetest.find_node_near(pos, 2, "default:lava_flowing") ~= nil then
return "award_in_the_flow"
end
return nil
end)
-- Die near diamond ore
awards.register_achievement("award_this_is_sad",{
title = S("This is Sad"),
description = S("Die near diamond ore.")
})
awards.register_onDeath(function(player,data)
local pos = player:getpos()
if pos and minetest.find_node_near(pos, 5, "default:stone_with_diamond") ~= nil then
return "award_this_is_sad"
end
return nil
end)
-- Die near diamond ore
awards.register_achievement("award_the_stack",{
title = S("The Stack"),
description = S("Die near bones.")
})
awards.register_onDeath(function(player,data)
local pos = player:getpos()
if pos and minetest.find_node_near(pos, 5, "bones:bones") ~= nil then
return "award_the_stack"
end
return nil
end)
-- Backwards compatibility
awards.give_achievement = awards.unlock
awards.getFormspec = awards.get_formspec
awards.showto = awards.show_to
awards.register_onDig = awards.register_on_dig
awards.register_onPlace = awards.register_on_place
awards.register_onDeath = awards.register_on_death
awards.register_onChat = awards.register_on_chat
awards.register_onJoin = awards.register_on_join
awards.register_onCraft = awards.register_on_craft
awards.def = awards.registered_awards
awards.register_achievement = awards.register_award

259
locale/awards.de.tr Normal file
View File

@ -0,0 +1,259 @@
# textdomain: awards
### api_awards.lua ###
Award Unlocked!=Auszeichnung freigeschaltet!
Award Unlocked: %s=Auszeichnung freigeschaltet: %s
Secret Award Unlocked!=Versteckte Auszeichnung freigeschaltet!
Secret Award Unlocked: %s=Versteckte Auszeichnung freigeschaltet: %s
### awards.lua ###
A Cat in a Pop-Tart?!=Eine Katze im Pop-Tart?!
Architect=Architekt
Aspiring Farmer=Aufstrebender Bauer
Backpacker=Rucksacktourist
Baker=Bäcker
Banker=Banker
Bricker=Ziegler
Build a Cave=Höhlenbauer
Builder=Bauarbeiter
Burn to death in a fire.=Verbrenne im Feuer.
Castorama=Gießmeister
Craft 10 furnaces.=Fertigen Sie 10 Öfen.
Craft 10 mese lamps.=Fertigen Sie 10 Meselampen.
Craft 100 obsidian bricks.=Fertigen Sie 100 Obsidianziegel.
Craft 100 sandstone bricks.=Fertigen Sie 100 Sandsteinziegel.
Craft 100 sticks.=Fertigen Sie 100 Stöcke.
Craft 100 white dyes.=Fertigen Sie 100 weiße Farbstoffe.
Craft 14 vessels shelves.=Fertigen Sie 14 Gefäßregale.
Craft 15 chests.=Fertigen Sie 15 Truhen.
Craft 15 fancy beds.=Fertigen Sie 15 schicke Betten.
Craft 200 brick blocks.=Fertigen Sie 200 Ziegelblöcke.
Craft 200 stone bricks.=Fertigen Sie 200 Steinziegel.
Craft 24 gold block stairs.=Fertigen Sie 24 Goldblockstufen.
Craft 250 white wool.=Fertigen Sie 250 weiße Wolle.
Craft 3,200 stone bricks.=Fertigen Sie 3200 Steinziegel.
Craft 30 locked chests.=Fertigen Sie 30 abgeschlossene Truhen.
Craft 4 large bags.=Fertigen Sie 4 große Taschen.
Craft 400 blue dyes.=Fertigen Sie 400 blaue Farbstoffe.
Craft 400 desert stone bricks.=Fertigen Sie 400 Wüstensteinziegel.
Craft 400 red dyes.=Fertigen Sie 400 rote Farbstoffe.
Craft 400 yellow dyes.=Fertigen Sie 400 gelbe Farbstoffe.
Craft 500 times oil extract.=Fertigen Sie 500 mal Ölextrakte.
Craft 7 bookshelves.=Fertigen Sie 7 Bücherregale.
Craft 8 times flint and steel.=Fertigen Sie 8 mal einen Feuerstein und Stahl an.
Craft 800 stone bricks.=Fertigen Sie 800 Steinziegel an.
Craft a diamond block.=Fertigen Sie einen Diamantblock an.
Crafter of Sticks=Stockmacher
Dandelions are Yellow=Löwenzahn ist gelb
Death in the Deeps=Tod in der Tiefe
Desert Discoverer=Wüstenerkunder
Desert Dweller=Wüstenbewohner
Die 100 times.=Sterben Sie 100 mal.
Die above 10000=Sterben Sie über 10.000 .
Die below -10000=Sterben Sie unter -10.000 .
Die in flowing lava.=Sterben Sie in fließender Lava.
Die near bones.=Sterben Sie in der Nähe von Knochen.
Die near diamond ore.=Sterben Sie in der Nähe von Diamantenadern.
Dig 1,000 copper ores.=Bauen Sie 1000 Kupfererze ab.
Dig 1,000 jungle tree blocks.=Bauen Sie 1000 Dschungelbaumblöcke ab.
Dig 1,000 sand.=Bauen Sie 1000 Sand ab.
Dig 1,000 stone blocks.=Bauen Sie 1000 Steine ab.
Dig 1,296 tree blocks.=Bauen Sie 1296 Baumblöcke ab.
Dig 10,000 stone blocks.=Bauen Sie 10000 Steine ab.
Dig 100 jungle tree blocks.=Bauen Sie 100 Dschungelbaumblöcke ab.
Dig 100 stone blocks.=Bauen Sie 100 Steinblöcke ab.
Dig 216 tree blocks.=Bauen Sie 216 Baumblöcke ab.
Dig 36 tree blocks.=Bauen Sie 36 Baumblöcke ab.
Dig 6 tree blocks.=Bauen Sie 6 Baumblöcke ab.
Eat 10 loaves of bread.=Essen Sie 10 Brote.
Eat 3 brown mushrooms.=Essen Sie 3 braune Pilze.
Eat 33 brown mushrooms.=Essen Sie 33 braune Pilze.
Eat 333 brown mushrooms.=Essen Sie 333 braune Pilze.
Eat 80 apples.=Essen Sie 80 Äpfel.
Electical Engineer=Elektroingeniuer
Engineer=Ingenieur
Factory=Fabrik
Far Lands=Ferne Lande
Farming Skills Acquired=Landwirtschaft erlernt
Field Worker=Feldarbeiter
Filthy Rich=Stinkreich
Firefighter=Feuerwehr
First Day in the Woods=Erster Tag im Wald
First Gold Find=Erster Goldfund
First Mese Find=Erster Mesefund
Fortress=Burg
Geraniums are Blue=Geranien sind blau
Girl's Best Friend=Bester Freund der Mädchen
Glacier Discoverer=Gletschererkunder
Glasser=Glasmacher
Gold Rush=Goldrausch
Grasslands Discoverer=Prärieerkunder
Graveyard=Friedhof
Hardened Miner=Abhehärteter Bergarbeiter
Hardest Block on Earth=Härtester Block der Welt
Harvest 125 fully grown wheat plants.=Ernten Sie 125 voll ausgewachsene Getreidepflanzen.
Harvest 25 fully grown wheat plants.=Ernten Sie 25 voll ausgewachsene Getreidepflanzen.
Harvest 625 fully grown wheat plants.=Ernten Sie 625 voll ausgewachsene Getreidepflanzen.
Harvest a fully grown wheat plant.=Ernten Sie eine voll ausgewachsene Getreidepflanze.
Hotelier=Hotelier
House of Obsidian=Haus aus Obsidian
In space, no one can hear you scream=Im Weltall hört niemand deine Schreie
In the Dungeon=Im Verlies
In the Flow=Flow-Erlebnis
Industrial Age=Industriezeitalter
Item transporter=Gegenstandtransporteur
Jungle Discoverer=Dschungelerkunder
Junglebaby=Dschungelbaby
Jungleman=Dschungelmann
Lava Miner=Lavagräber
Lava and Water=Lava und Wasser
Light It Up=Licht an!
Little Library=Kleine Bücherei
Long Ladder=Lange Leiter
Lumberjack=Holzfäller
Marchand De Sable=Sandmann
Master Architect=Meisterarchitekt
Master Miner=Profibergarbeiter
Mese Mastery=Mesemeister
Mine 18 diamond ores.=Bauen Sie 18 Diamanterze ab.
Mine 45 gold ores.=Bauen Sie 18 Diamanterze ab.
Mine 50 obsidian.=Bauen Sie 50 Obsidian ab.
Mine a mese block.=Bauen Sie einen Meseblock ab.
Mine a mossy cobblestone.=Bauen Sie ein bemoostes Kopfsteinpflaster ab.
Mine a nyan cat.=Bauen Sie eine Nyan Cat ab.
Mine any block while being very close to lava.=Bauen Sie einen beliebigen Block ab, während Sie sehr nahe an der Lava stehen.
Mine some dry grass.=Bauen Sie etwas trockenes Gras ab.
Mine some grass.=Bauen Sie etwas Gras ab.
Mine your first cactus.=Bauen Sie Ihren ersten Kaktus ab.
Mine your first diamond ore.=Bauen Sie Ihr erstes Diamanterz ab.
Mine your first dry shrub.=Bauen Sie Ihren ersten vertrockneten Strauch ab.
Mine your first gold ore.=Bauen Sie Ihr erstes Golderz ab.
Mine your first ice.=Bauen Sie Ihr erstes Eis ab.
Mine your first jungle grass.=Bauen Sie Ihr erstes Dschungelgras ab.
Mine your first mese ore.=Bauen Sie Ihr erstes Meseerz ab.
Mine your first obsidian.=Bauen Sie Ihr erstes Obsidian ab.
Mini Miner=Berganfänger
Mushroom Lover=Pilzfreund
Obsessed with Obsidian=Von Obsidian besessen
Oil Tycoon=Ölmagnat
On The Way=Auf dem Weg
Outpost=Außenposten
Pharaoh=Pharao
Place 1,000 torches.=Platzieren Sie 1000 Fackeln.
Place 100 rails.=Platzieren Sie 100 Gleise.
Place 100 stone.=Platzieren Sie 100 Steine.
Place 100 torches.=Platzieren Sie 100 Fackeln.
Place 10000 tubes.=Platzieren Sie 10.000 Rohre.
Place 2 trap stones.=Platzieren Sie 2 Fallensteine.
Place 20 coal checkers.=Platzieren Sie 20 Kohlenschachbrettmuster.
Place 20 iron checkers.=Platzieren Sie 20 Eisenschachbrettmuster.
Place 40 steel ladders.=Platzieren Sie 40 Stahlleitern.
Place 400 wooden ladders.=Platzieren Sie 400 Holzleitern.
Place 5 autocrafters.=Platzieren Sie 5 Autohersteller.
Place 500 mesecon wires.=Platzieren Sie 500 Mesecon Kabeln.
Place two snow blocks.=Platzieren Sie zwei Schneeblöcke.
Professional Lumberjack=Profiholzfäller
Put out 1000 fires.=Löschen Sie 1000 Flammen.
Pyromaniac=Pyromane
Really Well Lit=Sehr gute Beleuchtung
Roses Are Red=Rosen sind rot
Saint-Maclou=Saint-Maclou
Sam the Trapper=Sam der Fallensteller
Savannah Discoverer=Savannenerkunder
Semi-pro Lumberjack=Fortgeschrittener Holzfäller
Smelter=Schmelzer
Tasty Mushrooms=Leckere Pilze
This is Sad=Echt Schade
Treasurer=Schatzmeister
Underground Mushroom Farmer=Unterirdischer Pilzbauer
Very Simple Snow Man=Sehr simpler Schneemann
Watchtower=Wachturm
Well Lit=Gut ausgeleuchtet
Wheat Magnate=Getreidemagnat
White Color Stock=Weißer Farbstoffvorrat
Wool Over Your Eyes=Wollige Augen
Wow, I am Diamonds!=Wow, ich bin Diamanten!
You Suck!=Das geht dir nicht
You're a witch!=Du bist eine Hexe!
Youre a copper=Du Kupfer!
Yummy!=Lecker!
### chat_commands.lua ###
<award ID>=<Auszeichnungs-ID>
<name>=<Name>
All your awards and statistics have been cleared. You can now start again.=All Ihre Auszeichnugen und Statistiken wurden zurückgesetzt. Sie können nun von vorne anfangen.
Award not found.=Auszeichnung nicht gefunden.
Get the awards statistics for the given player or yourself=Auszeichnungsstatistiken für anderen oder für Sie selber abrufen.
Show details of an award=Details einer Auszeichnung anzeigen.
Show, clear, disable or enable your awards=Auszeichnungen zeigen, löschen, deaktivieren oder aktivieren.
You have disabled awards.=Sie haben die Auszeichnugen deaktiviert.
You have enabled awards.=Sie haben die Auszeichnugen aktiviert.
[c|clear|disable|enable]=[c|clear|disable|enable]
### gui.lua ###
%ss awards:=%ss Auszeichnungen:
(Secret Award)=(Geheime Auszeichnung)
@1 (unlocked)=@1 (freigeschaltet)
Awards=Auszeichnungen
Error: No achivements available.=Fehler: Keine Auszeichnungen verfügbar.
Error: No award available.=Fehler: Keine Auszeichnung verfügbar.
OK=OK
Unlock this award to find out what it is.=Verdienen Sie sich diese Auszeichnung, um herauszufinden, was sie ist.
You have not unlocked any awards.=Sie haben noch keine Auszeichnungen.
You've disabled awards. Type /awards enable to reenable.=Sie haben die Auszeichnungen deaktiviert. Geben Sie »/awards enable« ein, um sie wieder zu aktivieren.
### triggers.lua ###
@1/@2 chat messages=@1/@2 Chatnachrichten
@1/@2 crafted=@1/@2 gefertigt
@1/@2 deaths=@1/@2 Tode
@1/@2 dug=@1/@2 abgebaut
@1/@2 eaten=@1/@2 gegessen
@1/@2 joins=@1/@2 beigetreten
@1/@2 placed=@1/@2 platziert
Chat @1 times=Chatten Sie @1 mal.
Craft @1 item=Stellen Sie @1 Gegenstand her.
Craft @1 items.=Stellen Sie @1 Gegenstände her.
Craft: @1×@2=Stellen Sie @1x@2 her.
Craft: @2=Stellen Sie @2 her.
Die @1 times of @2=Sterben Sie @1 mal von @2.
Die @1 times.=Sterben Sie @1 mal.
Die once of @2=Sterben Sie einmal von @2.
Eat @1 item=Essen Sie @1 Gegenstand.
Eat @1 items.=Essen Sie @1 Gegenstände.
Eat @1×@2=Essen Sie @1x@2.
Eat @2=Essen Sie @2.
Join @1 times=Treten Sie @1 mal bei.
Join once=Treten Sie einmal bei.
Mine @1 block.=Bauen Sie @1 Block.
Mine @1 blocks.=Bauen Sie @1 Blöcke.
Mine @1 times=Bauen Sie @1 mal ab.
Mine: @1×@2=Bauen Sie @1x@2 ab.
Mine: @2=Bauen Sie @2 ab.
Place @1 block.=Platzieren Sie @1 Block.
Place @1 blocks.=Platzieren Sie @1 Blöcke.
Place: @1×@2=Platzieren Sie: @1x@2
Place: @2=Platzieren Sie: @2
Send a chat message=Versenden Sie eine Chatnachricht
##### not used anymore #####
%s: %s=%s: %s
Secret Achievement Unlocked:=Geheime Auszeichnung erhalten:
Achievement Unlocked:=Auszeichnung erhalten:
Secret Achievement Unlocked: %s=Geheime Auszeichnung erhalten: %s
Achievement Unlocked: %s=Auszeichnung erhalten: %s
Secret Achievement Unlocked!=Geheime Auszeichnung erhalten!
Achievement Unlocked!=Auszeichnung erhalten:
Error: No awards available.=Fehler: Keine Auszeichnungen vorhanden.
%s (got)=%s (erhalten)
@1/@2 game joins=@1/@2 Spielen beigetreten
Bankier=Bankier
Constructor=Konstrukteur
Show, clear, disable or enable your achievements=Zeigen, löschen, deaktivieren oder aktivieren Sie Ihre Auszeichnungen
You have disabled your achievements.=Sie haben Ihre Auszeichnungen deaktiviert.
You have enabled your achievements.=Sie haben Ihre Auszeichnungen aktiviert.
<achievement ID>=<Auszeichnungs-ID>
Show details of an achievement=Details einer Auszeichnung anzeigen
Achievement not found.=Auszeichnung nicht gefunden.
Get the achievements statistics for the given player or yourself=Die Statistik der Auszeichnungen eines Spielers zeigen

259
locale/awards.es.tr Normal file
View File

@ -0,0 +1,259 @@
# textdomain: awards
### api_awards.lua ###
Award Unlocked!=
Award Unlocked: %s=
Secret Award Unlocked!=
Secret Award Unlocked: %s=
### awards.lua ###
A Cat in a Pop-Tart?!=¡¿Un Gato en un Pop-Tart?!
Architect=Arquitecto
Aspiring Farmer=Aspirante a Granjero
Backpacker=Mochilero
Baker=Panadero
Banker=
Bricker=Ladrillero
Build a Cave=Construye Una Cueva
Builder=Hacedor
Burn to death in a fire.=
Castorama=Castorama
Craft 10 furnaces.=Elaborar 10 hornos.
Craft 10 mese lamps.=Elaborar 10 lámparas de MESE.
Craft 100 obsidian bricks.=Elaborar 100 ladrillos de obsidiana.
Craft 100 sandstone bricks.=Elaborar 200 ladrillos de arenisca.
Craft 100 sticks.=Elaborar 100 varitas.
Craft 100 white dyes.=Elabora 100 colorantes blancos.
Craft 14 vessels shelves.=Elabora 14 estanterías para botellas.
Craft 15 chests.=Elaborar 15 cofres.
Craft 15 fancy beds.=Elabora 15 camas de lujo.
Craft 200 brick blocks.=Elaborar 200 bloques de ladrillo.
Craft 200 stone bricks.=Elaborar 200 ladrillos de piedra.
Craft 24 gold block stairs.=Elabora 24 escaleras de bloque de oro.
Craft 250 white wool.=Elabora 250 bloques de lana blanca.
Craft 3,200 stone bricks.=Elaborar 3.200 ladrillos de piedra.
Craft 30 locked chests.=Elaborar 30 bloques cerrados.
Craft 4 large bags.=Elaborar 4 bolsas grandes.
Craft 400 blue dyes.=Elabora 400 colorantes azules.
Craft 400 desert stone bricks.=Elaborar 400 ladrillos de piedra desértica.
Craft 400 red dyes.=Elabora 400 colorantes rojos.
Craft 400 yellow dyes.=Elabora 400 colorantes amarillos.
Craft 500 times oil extract.=
Craft 7 bookshelves.=Elaborar 7 libreros.
Craft 8 times flint and steel.=Elaborar pedernal y hierro 8 veces.
Craft 800 stone bricks.=Elaborar 800 ladrillos de piedra.
Craft a diamond block.=Elaborar un bloque de diamante.
Crafter of Sticks=Elaborador de Varitas
Dandelions are Yellow=Los Dientes de León Son Amarillos
Death in the Deeps=
Desert Discoverer=Descubridor del Desierto
Desert Dweller=Morador Desértico
Die 100 times.=
Die above 10000=
Die below -10000=
Die in flowing lava.=
Die near bones.=
Die near diamond ore.=
Dig 1,000 copper ores.=Excavar 1.000 minerales de cobre
Dig 1,000 jungle tree blocks.=Cortar 1.000 árboles selváticos.
Dig 1,000 sand.=Cavar 1.000 bloques de arena.
Dig 1,000 stone blocks.=Excavar 1.000 bloques de piedra.
Dig 1,296 tree blocks.=Cortar 1.296 árboles.
Dig 10,000 stone blocks.=Excavar 10.000 bloques de piedra.
Dig 100 jungle tree blocks.=Cortar 100 árboles selváticos.
Dig 100 stone blocks.=Excavar 100 bloques de piedra.
Dig 216 tree blocks.=Cortar 216 árboles.
Dig 36 tree blocks.=Cortar 36 árboles.
Dig 6 tree blocks.=Cortar 6 árboles.
Eat 10 loaves of bread.=Come 10 rebanadas de pan.
Eat 3 brown mushrooms.=Come 3 hongos marrones.
Eat 33 brown mushrooms.=Come 33 hongos marrones.
Eat 333 brown mushrooms.=Come 333 hongos marrones.
Eat 80 apples.=Come 80 manzanas.
Electical Engineer=
Engineer=
Factory=
Far Lands=Tierras Lejanas
Farming Skills Acquired=Habilidades de Granja Adquiridas
Field Worker=Trabajador de Campo
Filthy Rich=Sucio Rico
Firefighter=Bombero
First Day in the Woods=Primer Día en el Bosque
First Gold Find=Primer Encuentro de Oro
First Mese Find=Primer Encuentro de MESE
Fortress=Fortaleza
Geraniums are Blue=Los Geranios Son Azules
Girl's Best Friend=El Mejor Amigo de Las Mujeres
Glacier Discoverer=Descubridor del Glaciar
Glasser=Vidriero
Gold Rush=Fiebre del Oro
Grasslands Discoverer=Descubridor de Praderas
Graveyard=
Hardened Miner=Minero Curtido
Hardest Block on Earth=El Bloque Más Duro Sobre La Tierra
Harvest 125 fully grown wheat plants.=Cosecha 125 plantas de trigo maduras.
Harvest 25 fully grown wheat plants.=Cosecha 25 plantas de trigo maduras.
Harvest 625 fully grown wheat plants.=Cosecha 625 plantas de trigo maduras.
Harvest a fully grown wheat plant.=Cosecha una plantas de trigo madura.
Hotelier=Hotelero
House of Obsidian=Casa de Obsidiana
In space, no one can hear you scream=
In the Dungeon=En Las Mazmorras
In the Flow=
Industrial Age=Era Industrial
Item transporter=
Jungle Discoverer=Descubridor de Selva
Junglebaby=Bebé de la Selva
Jungleman=Hombre de la Selva
Lava Miner=Minero de Lava
Lava and Water=Lava y Agua
Light It Up=Ilumínalo
Little Library=Pequeña Biblioteca
Long Ladder=Escalerilla Larga
Lumberjack=Leñador
Marchand De Sable=Marchand De Sable
Master Architect=Maestro Arquitecto
Master Miner=Minero Maestro
Mese Mastery=Maestría de MESE
Mine 18 diamond ores.=Excava 10 diamantes.
Mine 45 gold ores.=Excavar 45 pepitas de oro.
Mine 50 obsidian.=Excavar 50 obsidianas.
Mine a mese block.=Excava tu primer bloque de MESE.
Mine a mossy cobblestone.=Excavar unos adoquines musgosos.
Mine a nyan cat.=Excavar un Gato Nyan.
Mine any block while being very close to lava.=Excavar un bloque cerca de lava.
Mine some dry grass.=Cortar un poco de pasto seco.
Mine some grass.=Cortar un poco de pasto.
Mine your first cactus.=Cortar tu primer cácto.
Mine your first diamond ore.=Excava tu primer diamante.
Mine your first dry shrub.=Cortar tu primer arbusto seco
Mine your first gold ore.=Excavar tu primer pepita de oro.
Mine your first ice.=Romper tu primer bloque de hielo.
Mine your first jungle grass.=Cortar tu primer pasto de selva.
Mine your first mese ore.=Excava tu primer mineral de MESE.
Mine your first obsidian.=Excavar tu primera obsidiana.
Mini Miner=Mini Minero
Mushroom Lover=Amante de los Hongos
Obsessed with Obsidian=Obsesionado con la Obsidiana
Oil Tycoon=
On The Way=En Camino
Outpost=Puesto de avanzada
Pharaoh=Faraón
Place 1,000 torches.=Colocar 1.000 antorchas.
Place 100 rails.=Colocar 100 rieles.
Place 100 stone.=Coloca 100 piedras.
Place 100 torches.=Colocar 100 antorchas.
Place 10000 tubes.=
Place 2 trap stones.=Colocar 2 piedras trampa.
Place 20 coal checkers.=Colocar 20 baldosas de ajedrez de carbón.
Place 20 iron checkers.=Colocar 20 baldosas de ajedrez de hierro.
Place 40 steel ladders.=Coloca 40 escalerillas de acero.
Place 400 wooden ladders.=Coloca 400 escalerillas de madera.
Place 5 autocrafters.=
Place 500 mesecon wires.=
Place two snow blocks.=Colocar dos bloques de nieve.
Professional Lumberjack=Leñador profesional
Put out 1000 fires.=Apagar 1000 incendios.
Pyromaniac=Piromaníaco
Really Well Lit=Realmente Bien Iluminado
Roses Are Red=Las Rosas Son Rojas
Saint-Maclou=Saint-Maclou
Sam the Trapper=Sam el Atrapador
Savannah Discoverer=Descubridor de Savana
Semi-pro Lumberjack=Leñador semi-profesional
Smelter=Fundidor
Tasty Mushrooms=Ricos Hongos
This is Sad=
Treasurer=Tesorero
Underground Mushroom Farmer=Granjero de Hongos Subterráneo
Very Simple Snow Man=Muñeco de Nieve Muy Simple
Watchtower=Torre del vigía
Well Lit=Bien Iluminado
Wheat Magnate=Magnate del Maíz
White Color Stock=Reserva de Color Blanco
Wool Over Your Eyes=Lana Sobre Tus Ojos
Wow, I am Diamonds!=¡Guau, Soy Diamantes!
You Suck!=
You're a witch!=
Youre a copper=Eres un cobre
Yummy!=¡Qué Rico!
### chat_commands.lua ###
<award ID>=
<name>=<nombre>
All your awards and statistics have been cleared. You can now start again.=Todos tus logros y estadísticas han sido borrados. Puedes iniciar nuevamente.
Award not found.=
Get the awards statistics for the given player or yourself=
Show details of an award=
Show, clear, disable or enable your awards=
You have disabled awards.=
You have enabled awards.=
[c|clear|disable|enable]=[c|clear|disable|enable]
### gui.lua ###
%ss awards:=Logros de %s:
(Secret Award)=(Logro secreto)
@1 (unlocked)=
Awards=Logros
Error: No achivements available.=
Error: No award available.=
OK=Aceptar
Unlock this award to find out what it is.=Desbloquea éste logro para saber qué es.
You have not unlocked any awards.=No has desbloqueado ningún logro.
You've disabled awards. Type /awards enable to reenable.=Has deshabilitado los logros. Escribe "/awards enable" para reactivar.
### triggers.lua ###
@1/@2 chat messages=@1/@2 conversaciones
@1/@2 crafted=@1/@2 elaborado
@1/@2 deaths=@1/@2 muertes
@1/@2 dug=@1/@2 excavados
@1/@2 eaten=@1/@2 comidos
@1/@2 joins=
@1/@2 placed=@1/@2 colocados
Chat @1 times=
Craft @1 item=
Craft @1 items.=
Craft: @1×@2=
Craft: @2=
Die @1 times of @2=
Die @1 times.=
Die once of @2=
Eat @1 item=
Eat @1 items.=
Eat @1×@2=
Eat @2=
Join @1 times=
Join once=
Mine @1 block.=
Mine @1 blocks.=
Mine @1 times=
Mine: @1×@2=
Mine: @2=
Place @1 block.=
Place @1 blocks.=
Place: @1×@2=
Place: @2=
Send a chat message=
##### not used anymore #####
%s: %s=%s: %s
Secret Achievement Unlocked:=Logro secreto desbloqueado:
Achievement Unlocked:=Logro desbloqueado:
Secret Achievement Unlocked: %s=Logro secreto desbloqueado: %s
Achievement Unlocked: %s=Logro desbloqueado: %s
Secret Achievement Unlocked!=Logro secreto desbloqueado!
Achievement Unlocked!=Logro desbloqueado!
Error: No awards available.=Error: No hay logros disponibles.
%s (got)=%s (obtenido)
@1/@2 game joins=@1/@2 veces unido
Bankier=Banquero
Constructor=Constructor
Show, clear, disable or enable your achievements=Mostrar, limpiar, deshabilitar o habilitar tus logros
You have disabled your achievements.=Has deshabilitado tus logros.
You have enabled your achievements.=Has habilitado tus logros.
<achievement ID>=<ID logro>
Show details of an achievement=Muestra los detalles de un logro
Achievement not found.=Logro no encontrado.
Get the achievements statistics for the given player or yourself=Obtener las estadísticas y logros del jugador dado

260
locale/awards.fr.tr Normal file
View File

@ -0,0 +1,260 @@
# textdomain: awards
### api_awards.lua ###
Award Unlocked!=Réussite atteinte !
Award Unlocked: %s=Réussite atteinte : %s
Secret Award Unlocked!=Réussite secrète atteinte !
Secret Award Unlocked: %s=Réussite secrète atteinte : %s
### awards.lua ###
A Cat in a Pop-Tart?!=Un chat dans un Pop-Tart ?!
Architect=Architecte
Aspiring Farmer=Apprenti·e Agricult.eur.rice
Backpacker=Randonneu·r·se
Baker=Boulang·er·ère
Banker=Banqui·er·ère
Bricker=Briqueu·r·se
Build a Cave=Construis une grotte
Builder=Bâtisseu·r·se
Burn to death in a fire.=Brûlé.e mort.
Castorama=Castorama
Craft 10 furnaces.=Construis 10 fours.
Craft 10 mese lamps.=Fabrique 10 lampes de mese.
Craft 100 obsidian bricks.=Confectionne 100 briques d'obsidienne.
Craft 100 sandstone bricks.=Confectionne 100 briques de roche de sable.
Craft 100 sticks.=Confectionne 100 bâtons.
Craft 100 white dyes.=Prépare 100 teintures blanches.
Craft 14 vessels shelves.=Fabrique 14 vaisseliers.
Craft 15 chests.=Fabrique 15 coffres.
Craft 15 fancy beds.=Construis 15 lits chics.
Craft 200 brick blocks.=Confectionne 200 blocs de brique.
Craft 200 stone bricks.=Confectionne 200 briques de pierre.
Craft 24 gold block stairs.=Construis 24 escaliers en or.
Craft 250 white wool.=Confectionne 250 blocs de laine blanche.
Craft 3,200 stone bricks.=Confectionne 3200 briques de pierre.
Craft 30 locked chests.=Fabrique 30 coffres verrouillés.
Craft 4 large bags.=Confectionne 4 grands sacs
Craft 400 blue dyes.=Prépare 400 teintures bleues.
Craft 400 desert stone bricks.=Confectionne 400 briques de pierre du désert.
Craft 400 red dyes.=Prépare 400 teintures rouges.
Craft 400 yellow dyes.=Prépare 400 teintures jaunes.
Craft 500 times oil extract.=Prépare 500 fois de l'extrait d'huile.
Craft 7 bookshelves.=Fabrique 7 bibliothèques.
Craft 8 times flint and steel.=Fabrique 8 briquets.
Craft 800 stone bricks.=Confectionne 800 briques de pierre.
Craft a diamond block.=Confectionne un bloc de diamant.
Crafter of Sticks=Fabriquant·e de bâtons.
Dandelions are Yellow=Les pissenlits sont jaunes.
Death in the Deeps=Mort.e dans les profondeurs.
Desert Discoverer=Expolrat·eur·rice du Désert.
Desert Dweller=Habitant·e du désert
Die 100 times.=Mort 100 fois.
Die above 10000=Mort.e au dessus de 10000 blocs d'altitude
Die below -10000=Mort.e plus profond que -10000 blocs.
Die in flowing lava.=Mort.e dans une coulée de lave.
Die near bones.=Mort.e près d'os.
Die near diamond ore.=Mort.e près de diamands.
Dig 1,000 copper ores.=Creuse 1000 minerais de cuivre.
Dig 1,000 jungle tree blocks.=Creuse 1000 blocs d'arbre de jungle.
Dig 1,000 sand.=Creuse 1000 blocs de sable.
Dig 1,000 stone blocks.=Creuse 1000 blocs de pierre.
Dig 1,296 tree blocks.=Creuse 1296 blocs d'arbre.
Dig 10,000 stone blocks.=Creuse 10000 blocs de pierre.
Dig 100 jungle tree blocks.=Creuse 100 blocs d'arbres de jungle.
Dig 100 stone blocks.=Creuse 100 blocs de pierre.
Dig 216 tree blocks.=Creuse 216 blocs d'arbre.
Dig 36 tree blocks.=Creuse 36 blocs d'arbre.
Dig 6 tree blocks.=Creuse 6 blocs d'arbre.
Eat 10 loaves of bread.=Mange 10 miches de pain.
Eat 3 brown mushrooms.=Mange 3 champignons marrons.
Eat 33 brown mushrooms.=Mange 33 champignons marrons.
Eat 333 brown mushrooms.=Mange 333 champignons marrons.
Eat 80 apples.=Mange 80 pommes.
Electical Engineer=Ingénieur.e électrique
Engineer=Ingénieur.e
Factory=Usine
Far Lands=Terres lointaines
Farming Skills Acquired=Compétences agricoles acquises
Field Worker=Travailleu·r·se agricole
Filthy Rich=Richissime
Firefighter=Pompier
First Day in the Woods=Premier jour dans les bois
First Gold Find=Première pépite d'or
First Mese Find=Première pépite de mese
Fortress=Forteresse
Geraniums are Blue=Les geraniums sont bleus
Girl's Best Friend=Girl's Best Friend
Glacier Discoverer=Découvreu·r·se de glacier
Glasser=Verri·er·ère
Gold Rush=Ruée vers l'or
Grasslands Discoverer=Découvreu·r·se de prairies
Graveyard=Cimetière
Hardened Miner=Mineu·r·se endurci·e
Hardest Block on Earth=Le bloc le plus dur du monde
Harvest 125 fully grown wheat plants.=Récolte 125 plants de blé à maturité.
Harvest 25 fully grown wheat plants.=Récolte 25 plants de blé à maturité.
Harvest 625 fully grown wheat plants.=Récolte 625 plants de blé à maturité.
Harvest a fully grown wheat plant.=Récolte un plant de blé à maturité.
Hotelier=Hoteli·er·ère
House of Obsidian=La Maison d'obsidienne
In space, no one can hear you scream=Personne ne t'entend dans l'espace
In the Dungeon=Dans le donjon
In the Flow=Dans la coulée
Industrial Age=Âge Industriel
Item transporter=Transport automatisé
Jungle Discoverer=Explorat·eur·rice de la jungle
Junglebaby=Enfant de la jungle
Jungleman=Personne de la jungle
Lava Miner=Mineu·r·se de lave
Lava and Water=La lave et l'eau
Light It Up=Eclairé·e
Little Library=Petite bibliothèque
Long Ladder=Longue Échelle
Lumberjack=Bûcheron·ne
Marchand De Sable=Marchand·e de sable
Master Architect=Maître·sse architecte
Master Miner=Maître·sse mineu·r·se
Mese Mastery=Maîtrise du mese
Mine 18 diamond ores.=Mine 18 diamants.
Mine 45 gold ores.=Mine 45 minerais d'or.
Mine 50 obsidian.=Mine 50 pierres d'obsidienne.
Mine a mese block.=Mine un bloc de mese.
Mine a mossy cobblestone.=Mine un bloc de pavés moussus.
Mine a nyan cat.=Mine un nyan cat.
Mine any block while being very close to lava.=Mine n'importe quel bloc à proximité de la lave.
Mine some dry grass.=Ramasse de l'herbe sèche.
Mine some grass.=Ramasse de l'herbe.
Mine your first cactus.=Mine ton premier catus.
Mine your first diamond ore.=Mine ton premier diamant.
Mine your first dry shrub.=Coupe ton premier arbuste sec.
Mine your first gold ore.=Mine ton premier minerai d'or.
Mine your first ice.=Creuse ton premier bloc de glace.
Mine your first jungle grass.=Ramasse ta première herbe de jungle.
Mine your first mese ore.=Mine ton premier minerai de mese.
Mine your first obsidian.=Mine ton premier bloc d'obsidienne.
Mini Miner=Mini Mineu·r·se
Mushroom Lover=Adorat·eur·rice de champignons
Obsessed with Obsidian=Obsédé·e par l'obsidienne
Oil Tycoon=Magnat.e de l'huile
On The Way=Sur la voie
Outpost=Poste avancé
Pharaoh=Pharaon
Place 1,000 torches.=Place 1000 torches.
Place 100 rails.=Place 100 rails.
Place 100 stone.=Place 100 pierres.
Place 100 torches.=Place 100 torches.
Place 10000 tubes.=Place 10000 tubes.
Place 2 trap stones.=Place 2 pièges de pierre.
Place 20 coal checkers.=Place 20 damiers de charbon.
Place 20 iron checkers.=Place 20 damiers de fer.
Place 40 steel ladders.=Place 40 échelles métalliques.
Place 400 wooden ladders.=Place 400 échelles en bois.
Place 5 autocrafters.=Place 5 auto-constructeurs.
Place 500 mesecon wires.=Place 500 fils de mesecon.
Place two snow blocks.=Place deux blocs de neige.
Professional Lumberjack=Bûcheron·ne professionnel·le
Put out 1000 fires.=Éteint 1000 feux.
Pyromaniac=Pyromane
Really Well Lit=Vraiment vien éclairé
Roses Are Red=Les roses sont rouges
Saint-Maclou=Saint-Maclou
Sam the Trapper=Sam le trappeur
Savannah Discoverer=Explorat·eur·rice de la savanne
Semi-pro Lumberjack=Bûcheron.ne semi-professionnel.le.
Smelter=Fondeu·r·se
Tasty Mushrooms=Délicieux champignons
This is Sad=Quel tristesse
Treasurer=Trésori·er·ère
Underground Mushroom Farmer=Agricult.eur.rice de champignons sous-terrain
Very Simple Snow Man=Bonhomme de neige rudimentaire
Watchtower=Tour de garde
Well Lit=Bien éclairé
Wheat Magnate=Magnat·e du blé
White Color Stock=Chaussettes blanches
Wool Over Your Eyes=De la laines dans tes yeux
Wow, I am Diamonds!=Wow, je suis diamants!
You Suck!=Tu es terrible !
You're a witch!=Tu es un.e sorci.er.ère
Youre a copper=Faîtes jouer les cuivres
Yummy!=Miam !
### chat_commands.lua ###
<award ID>=<Numéro de réussite>
<name>=<nom>
All your awards and statistics have been cleared. You can now start again.=Tous vos trophées et statistiques ont été réinitialisés. Vous pouvez recommencer à nouveau.
Award not found.=Réussite introuvable.
Get the awards statistics for the given player or yourself=Obtenir les statistiques de réussite pour un.e joueu.r.se donné.e ou vous même
Show details of an award=Montrer les détails d'une réussite
Show, clear, disable or enable your awards=Montrer, effacer, désactiver ou activer vos réussites
You have disabled awards.=Vous avez désactivé les réussites.
You have enabled awards.=Vous avez activé les réussites.
[c|clear|disable|enable]=[c|clear|disable|enable] (c|effacer|désactiver|activer)
### gui.lua ###
%ss awards:=Les trophées de %s :
(Secret Award)=(Trophée Secret)
@1 (unlocked)=@1 (acquise)
Awards=Trophées
Error: No achivements available.=Erreur : aucune réussite disponible.
Error: No award available.=Erreur : aucun trophée disponible.
OK=OK
Unlock this award to find out what it is.=Débloque ce trophée pour découvrir ce que c'est.
You have not unlocked any awards.=Vous n'avez encore débloqué aucun trophée.
You've disabled awards. Type /awards enable to reenable.=Vous avez désactivé les trophées. Tapez '/awards enable' pour les réactiver.
### triggers.lua ###
@1/@2 chat messages=@1/@2 messages
@1/@2 crafted=@1/@2 créé
@1/@2 deaths=@1/@2 morts
@1/@2 dug=@1/@2 creusés
@1/@2 eaten=@1/@2 mangés
@1/@2 joins=@1/@2 arrivées
@1/@2 placed=@1/@2 placés
Chat @1 times=@1 messages envoyés
Craft @1 item=Crée @1 item
Craft @1 items.=Crée @1 items.
Craft: @1×@2=Création : @1×@2
Craft: @2=Création : @2
Die @1 times of @2=Mort.e @1 de @2 fois
Die @1 times.=Mort.e @1 fois.
Die once of @2=Mort.e une de @2 fois
Eat @1 item=Mange @1 aliment
Eat @1 items.=Mange @1 aliments.
Eat @1×@2=Mange @1×@2
Eat @2=Mange @2
Join @1 times=Rejoindre @1 fois
Join once=Rejoindre une fois
Mine @1 block.=Mine @1 bloc.
Mine @1 blocks.=Mine @1 blocs.
Mine @1 times=Mine @1 fois
Mine: @1×@2=Mine: @1×@2
Mine: @2=Mine: @2
Place @1 block.=Place @1 bloc.
Place @1 blocks.=Place @1 blocs.
Place: @1×@2=Place: @1×@2
Place: @2=Place: @2
Send a chat message=Envoit un message
##### not used anymore #####
%s (unlocked)=%s (acquise)
%s: %s=%s : %s
Secret Achievement Unlocked:=Réussite Secrète Débloquée :
Achievement Unlocked:=Réussite Débloquée :
Secret Achievement Unlocked: %s=Réussite Secrète Débloquée : %s
Achievement Unlocked: %s=Réussite Débloquée : %s
Secret Achievement Unlocked!=Réussite Secrète Débloquée !
Achievement Unlocked!=Réussite Débloquée !
Error: No awards available.=Erreur : Aucun trophée disponible
%s (got)=%s (obtenu)
@1/@2 game joins=@1/@2 connexions
Bankier=Banqui·er·ère
Constructor=Construct·eur·rice
Show, clear, disable or enable your achievements=Affiche, réinitialise, désactive ou active vos réussites.
You have disabled your achievements.=Vous avez désactivé vos réussites.
You have enabled your achievements.=Vous avez activé vos réussites.
<achievement ID>=<réussite ID>
Show details of an achievement=Afficher les détails d'une réussite
Achievement not found.=Réussite non trouvée.
Get the achievements statistics for the given player or yourself=Obtenez les statistiques des réussites d'un joueur donné ou de vous-même

259
locale/awards.hu.tr Normal file
View File

@ -0,0 +1,259 @@
# textdomain: awards
### api_awards.lua ###
Award Unlocked!=Elnyertél egy kitüntetést!
Award Unlocked: %s=Elnyert kitüntetés: %s
Secret Award Unlocked!=Elnyertél egy titkos kitüntetést!
Secret Award Unlocked: %s=Elnyert titkos kitüntetés: %s
### awards.lua ###
A Cat in a Pop-Tart?!=Egy macska Pop-Tartban?!
Architect=Építész
Aspiring Farmer=Feltörekvő földműves
Backpacker=Hátizsákos turista
Baker=Pék
Banker=Bankár
Bricker=Téglamester
Build a Cave=Barlangépítő
Builder=Építőmunkás
Burn to death in a fire.=Égj el tűzben.
Castorama=Öntőmester
Craft 10 furnaces.=Készíts 10 kohót.
Craft 10 mese lamps.=Készíts 10 mese-lámpát.
Craft 100 obsidian bricks.=Készíts 100 obszidiántéglát.
Craft 100 sandstone bricks.=Készíts 100 homokkő-téglát.
Craft 100 sticks.=Készíts 100 botot.
Craft 100 white dyes.=Készíts 100 fehér festéket.
Craft 14 vessels shelves.=Készíts 14 poharas polcot.
Craft 15 chests.=Készíts 15 ládát.
Craft 15 fancy beds.=Készíts 15 elegáns ágyat.
Craft 200 brick blocks.=Készíts 200 téglablokkot.
Craft 200 stone bricks.=Készíts 200 kőblokkot.
Craft 24 gold block stairs.=Készíts 24 aranyblokk-lépcsőt.
Craft 250 white wool.=Készíts 250 fehér gyapjút.
Craft 3,200 stone bricks.=Készíts 3.200 kőtéglát.
Craft 30 locked chests.=Készíts 30 zárt ládát.
Craft 4 large bags.=Készíts 4 nagy hátizsákot.
Craft 400 blue dyes.=Készíts 400 kék festékanyagot.
Craft 400 desert stone bricks.=Készíts 400 sivatagi kő-téglát.
Craft 400 red dyes.=Készíts 400 vörös festéket.
Craft 400 yellow dyes.=Készíts 400 sárga festéket.
Craft 500 times oil extract.=Készíts 500 olajkivonatot.
Craft 7 bookshelves.=Készíts 7 könyvespolcot.
Craft 8 times flint and steel.=Készíts 8 kovakövet acéllal.
Craft 800 stone bricks.=Készíts 800 kőtéglát.
Craft a diamond block.=Készíts egy gyémántblokkot.
Crafter of Sticks=Botcsinálta botcsináló
Dandelions are Yellow=A gyermekláncfű sárga
Death in the Deeps=Halál a mélyben
Desert Discoverer=Sivatagi nomád
Desert Dweller=Sivataglakó
Die 100 times.=Halj meg százszor.
Die above 10000=Halj meg 10.000 fölött.
Die below -10000=Halj meg -10.000 alatt.
Die in flowing lava.=Halj meg folyó lávában.
Die near bones.=Halj meg csontok közelében.
Die near diamond ore.=Halj meg gyémántérc közelében.
Dig 1,000 copper ores.=Bányássz ki 1.000 rézércet.
Dig 1,000 jungle tree blocks.=Vágj ki 1.000 dzsungelfa-blokkot.
Dig 1,000 sand.=Áss ki 1.000 homokblokkot.
Dig 1,000 stone blocks.=Áss ki 1.000 követ.
Dig 1,296 tree blocks.=Vágj ki 1.296 fablokkot.
Dig 10,000 stone blocks.=Bányássz ki 10.000 kőblokkot.
Dig 100 jungle tree blocks.=Vágj ki 100 dzsungelfa-blokkot.
Dig 100 stone blocks.=Fejts ki 100 kőblokkot.
Dig 216 tree blocks.=Vágj ki 216 fablokkot.
Dig 36 tree blocks.=Vágj ki 36 fablokkot.
Dig 6 tree blocks.=Vágj ki 6 fablokkot.
Eat 10 loaves of bread.=Egyél meg 10 kenyeret.
Eat 3 brown mushrooms.=Egyél meg 3 barna gombát.
Eat 33 brown mushrooms.=Egyél meg 33 barna gombát.
Eat 333 brown mushrooms.=Egyél meg 333 barna gombát.
Eat 80 apples.=Egyél meg 80 almát.
Electical Engineer=Elektromérnök
Engineer=Mérnök
Factory=Gyár
Far Lands=Messzi tájakon
Farming Skills Acquired=Földművestanonc
Field Worker=A kaszás
Filthy Rich=Kőgazdag
Firefighter=Tűzoltó
First Day in the Woods=Első nap az erdőben
First Gold Find=Első arany
First Mese Find=Első mese
Fortress=Végvár
Geraniums are Blue=A gólyaorr kék
Girl's Best Friend=Lányok legjobb barátja
Glacier Discoverer=Gleccserjáró
Glasser=Üveges
Gold Rush=Aranyláz
Grasslands Discoverer=Az alföldi rónaságon
Graveyard=Temető
Hardened Miner=Veterán bányász
Hardest Block on Earth=A legkeményebb blokk a Földön.
Harvest 125 fully grown wheat plants.=Arass le 125 teljesen érett búzát.
Harvest 25 fully grown wheat plants.=Arass le 25 teljesen érett búzát.
Harvest 625 fully grown wheat plants.=Arass le 625 teljesen érett búzát.
Harvest a fully grown wheat plant.=Arass le egy teljesen érett búzát.
Hotelier=Szállodatulajdonos
House of Obsidian=Obszidiánház
In space, no one can hear you scream=Az űrben senki nem hallja a sikolyodat
In the Dungeon=Tömlöcben
In the Flow=Flow-élmény
Industrial Age=Ipari forradalom
Item transporter=Tárgyszállító
Jungle Discoverer=Dzsungeljáró
Junglebaby=A dzsungel gyermeke
Jungleman=A dzsungel felnőttje
Lava Miner=Lávabányász
Lava and Water=Láva és víz
Light It Up=Legyen világosság!
Little Library=Kis könyvtár
Long Ladder=Hosszú létra
Lumberjack=Favágó
Marchand De Sable=Álommanó
Master Architect=Építészmester
Master Miner=Mesterbányász
Mese Mastery=Mese-mester
Mine 18 diamond ores.=Bányássz ki 18 gyémántot.
Mine 45 gold ores.=Bányássz ki 45 aranyrögöt.
Mine 50 obsidian.=Bányássz ki 50 obszidiánt.
Mine a mese block.=Bányássz ki egy mese-blokkot.
Mine a mossy cobblestone.=Gyűjts be egy mohos macskakő-blokkot.
Mine a nyan cat.=Gyűjtsd be egy Nyan macskát.
Mine any block while being very close to lava.=Bányássz ki egy blokkot úgy, hogy közben nagyon közel állsz lávához.
Mine some dry grass.=Gyűjts be némi száraz füvet.
Mine some grass.=Gyűjts be némi füvet.
Mine your first cactus.=Gyűjtsd be az első kaktuszodat.
Mine your first diamond ore.=Bányászd ki az első gyémántodat.
Mine your first dry shrub.=Gyűjtsd be az első elszáradt bozótodat.
Mine your first gold ore.=Bányászd ki az első aranyrögödet.
Mine your first ice.=Gyűjtsd be az első jégblokkodat.
Mine your first jungle grass.=Gyűjtsd be az első dzsungelfüvedet.
Mine your first mese ore.=Bányászd ki az első mese-ércedet.
Mine your first obsidian.=Bányászd ki az első obszidiánodat.
Mini Miner=Mini bányász
Mushroom Lover=Gombarát
Obsessed with Obsidian=Obszesszió
Oil Tycoon=Jockey Ewing
On The Way=Úton
Outpost=Helyőrség
Pharaoh=Fáraó
Place 1,000 torches.=Állíts 1.000 fáklyát.
Place 100 rails.=Fektess le 100 sínt.
Place 100 stone.=Helyezz el 100 követ.
Place 100 torches.=Állíts 100 fáklyát.
Place 10000 tubes.=Helyezz el 10.000 csövet.
Place 2 trap stones.=Helyezz el 2 zúzott követ.
Place 20 coal checkers.=Helyezz el 20 szén sakktábla-mintát.
Place 20 iron checkers.=Helyezz el 20 vas sakktábla-mintát.
Place 40 steel ladders.=Helyezz el 40 acéllétrát.
Place 400 wooden ladders.=Helyezz el 400 falépcsőt.
Place 5 autocrafters.=Telepíts 5 automata gyártót.
Place 500 mesecon wires.=Fektess le 500 mesecon kábelt.
Place two snow blocks.=Helyezz el két hóblokkot.
Professional Lumberjack=Profi favágó
Put out 1000 fires.=Olts el 1.000 tüzet.
Pyromaniac=Piromán
Really Well Lit=Megvilágosodás
Roses Are Red=A rózsa vörös
Saint-Maclou=Saint-Maclou
Sam the Trapper=Sam, a csapdaállító
Savannah Discoverer=Szavannai nomád
Semi-pro Lumberjack=Félprofi favágó
Smelter=Olvasztár
Tasty Mushrooms=Fincsi gombák
This is Sad=Ez bizony szomorú
Treasurer=Kincstárnok
Underground Mushroom Farmer=Földalatti gombatermesztő
Very Simple Snow Man=Minimalista hóember
Watchtower=Őrtorony
Well Lit=Fényáradat
Wheat Magnate=Búzamágnás
White Color Stock=Feneketlen fehérség
Wool Over Your Eyes=Gyapjútakaró
Wow, I am Diamonds!=Gyémánt fokozatú bányász
You Suck!=Ezt megszívtad!
You're a witch!=Boszorkány vagy!
Youre a copper=Üdv a rezesbandában!
Yummy!=Nyami!
### chat_commands.lua ###
<award ID>=<kitüntetés ID>
<name>=<név>
All your awards and statistics have been cleared. You can now start again.=Minden kitüntetésed és statisztikád törölve. Kezdheted elölről.
Award not found.=Kitüntetés nem található.
Get the awards statistics for the given player or yourself=Kitüntetés-statisztikák lekérdezése a megadott játékosról vagy önmagadról.
Show details of an award=Mutasd egy kitüntetés részleteit.
Show, clear, disable or enable your awards=Mutasd, töröld, tiltsd le vagy engedélyezd a kitüntetéseidet.
You have disabled awards.=Letiltottad a kitüntetéseket.
You have enabled awards.=Engedélyezted a kitüntetéseket.
[c|clear|disable|enable]=[c|clear|disable|enable]
### gui.lua ###
%ss awards:=%s kitüntetései:
(Secret Award)=(Titkos kitüntetés)
@1 (unlocked)=@1 (megszerezve)
Awards=Kitüntetések
Error: No achivements available.=Hiba: Nincsenek elérhető kitüntetések.
Error: No award available.=Hiba: Nincs elérhető kitüntetés.
OK=OK
Unlock this award to find out what it is.=Amint megszerzed ezt a kitüntetést, megtudod, hogy micsoda.
You have not unlocked any awards.=Még nincsenek kitüntetéseid.
You've disabled awards. Type /awards enable to reenable.=Deaktiváltad a kitüntetéseket. Az »/awards enable« paranccsal aktiválhatod őket újra.
### triggers.lua ###
@1/@2 chat messages=@1/@2 chat-üzenetek
@1/@2 crafted=@1/@2 elkészítve
@1/@2 deaths=@1/@2 halál
@1/@2 dug=@1/@2 kifejtve
@1/@2 eaten=@1/@2 elfogyasztva
@1/@2 joins=@1/@2 összeillesztve
@1/@2 placed=@1/@2 elhelyezve
Chat @1 times=Chatelj @1 alkalommal.
Craft @1 item=Készíts @1 tárgyat.
Craft @1 items.=Készíts @1 tárgyat.
Craft: @1×@2=Készíts @1 @2-*t.
Craft: @2=Készíts @2-*t.
Die @1 times of @2=Halj meg @2-ből @1 alkalommal.
Die @1 times.=Halj meg @1 alkalommal.
Die once of @2=Halj meg egyszer @2-tól.
Eat @1 item=Egyél @1 falatot.
Eat @1 items.=Egyél @1 falatot.
Eat @1×@2=Egyél @1 @2-*t.
Eat @2=Egyél @2-*t.
Join @1 times=Csatlakozz @1 alkalommal.
Join once=Csatlakozz egyszer.
Mine @1 block.=Bányássz @1 blokkot.
Mine @1 blocks.=Bányássz @1 blokkot.
Mine @1 times=Bányássz @1 alkalommal.
Mine: @1×@2=Bányássz @1 @2-*t.
Mine: @2=Bányássz @2-*t.
Place @1 block.=Helyezz el @1 blokkot.
Place @1 blocks.=Helyezz el @1 blokkot.
Place: @1×@2=Helyezz el @1 @2-*t.
Place: @2=Helyezz el @2-*t.
Send a chat message=Küldj egy chat-üzenetet.
##### not used anymore #####
%s: %s=%s: %s
Secret Achievement Unlocked:=Geheime Auszeichnung erhalten:
Achievement Unlocked:=Auszeichnung erhalten:
Secret Achievement Unlocked: %s=Geheime Auszeichnung erhalten: %s
Achievement Unlocked: %s=Auszeichnung erhalten: %s
Secret Achievement Unlocked!=Geheime Auszeichnung erhalten!
Achievement Unlocked!=Auszeichnung erhalten:
Error: No awards available.=Fehler: Keine Auszeichnungen vorhanden.
%s (got)=%s (erhalten)
@1/@2 game joins=@1/@2 Spielen beigetreten
Bankier=Bankier
Constructor=Konstrukteur
Show, clear, disable or enable your achievements=Zeigen, löschen, deaktivieren oder aktivieren Sie Ihre Auszeichnungen
You have disabled your achievements.=Sie haben Ihre Auszeichnungen deaktiviert.
You have enabled your achievements.=Sie haben Ihre Auszeichnungen aktiviert.
<achievement ID>=<Auszeichnungs-ID>
Show details of an achievement=Details einer Auszeichnung anzeigen
Achievement not found.=Auszeichnung nicht gefunden.
Get the achievements statistics for the given player or yourself=Die Statistik der Auszeichnungen eines Spielers zeigen

259
locale/awards.pl.tr Normal file
View File

@ -0,0 +1,259 @@
# textdomain: awards
### api_awards.lua ###
Award Unlocked!=
Award Unlocked: %s=
Secret Award Unlocked!=
Secret Award Unlocked: %s=
### awards.lua ###
A Cat in a Pop-Tart?!=Kot w Pop-Tart?!
Architect=Architekt
Aspiring Farmer=Ambitny rolnik
Backpacker=Plecakowiec
Baker=Piekarz
Banker=
Bricker=Ceglarz
Build a Cave=Zbuduj jaskinię
Builder=Budowniczy
Burn to death in a fire.=
Castorama=Castorama
Craft 10 furnaces.=Stwórz 10 pieców.
Craft 10 mese lamps.=Stwórz 10 mese lamp.
Craft 100 obsidian bricks.=Stwórz 100 obsydianowych cegieł.
Craft 100 sandstone bricks.=Stwórz 100 cegieł z piaskowca.
Craft 100 sticks.=Stwórz 100 patyków.
Craft 100 white dyes.=Stwórz 100 białych barwników.
Craft 14 vessels shelves.=Stwórz 14 półek z naczyniami.
Craft 15 chests.=Stwórz 15 skrzyń.
Craft 15 fancy beds.=Stwórz 15 fantazyjnych łóżek.
Craft 200 brick blocks.=Stwórz 200 ceglanych bloków.
Craft 200 stone bricks.=Stwórz 200 kamiennych cegieł.
Craft 24 gold block stairs.=Stwórz 24 schody z bloków złota.
Craft 250 white wool.=Stwórz 250 białej wełny.
Craft 3,200 stone bricks.=Stwórz 3200 kamiennych cegieł.
Craft 30 locked chests.=Stwórz 30 zablokowanych skrzyń.
Craft 4 large bags.=Stwórz 4 duże plecaki.
Craft 400 blue dyes.=Stwórz 400 niebieskich barwników.
Craft 400 desert stone bricks.=Stwórz 400 cegieł z pustynnego kamienia.
Craft 400 red dyes.=Stwórz 400 czerwonych barwników.
Craft 400 yellow dyes.=Stwórz 400 żółtych barwników.
Craft 500 times oil extract.=
Craft 7 bookshelves.=Stwórz 7 półek na książki.
Craft 8 times flint and steel.=Stwórz krzesiwo 8 razy.
Craft 800 stone bricks.=Stwórz 800 kamiennych cegieł.
Craft a diamond block.=Stwórz diamentowy blok.
Crafter of Sticks=Twórca patyków
Dandelions are Yellow=Mlecze są żółte
Death in the Deeps=
Desert Discoverer=Odkrywca pustyni
Desert Dweller=Mieszkaniec pustyni
Die 100 times.=
Die above 10000=
Die below -10000=
Die in flowing lava.=
Die near bones.=
Die near diamond ore.=
Dig 1,000 copper ores.=Wykop 1000 rudy miedzi.
Dig 1,000 jungle tree blocks.=Wykop 1000 bloków drzewa dżunglowego.
Dig 1,000 sand.=Wykop 1000 piasku.
Dig 1,000 stone blocks.=Wykop 1000 kamiennych bloków.
Dig 1,296 tree blocks.=Wykop 1296 bloków.
Dig 10,000 stone blocks.=Wykop 10 000 kamiennych bloków.
Dig 100 jungle tree blocks.=Wykop 100 bloków drzewa dżunglowego.
Dig 100 stone blocks.=Wykop 100 kamiennych bloków.
Dig 216 tree blocks.=Wykop 216 bloków drzewa.
Dig 36 tree blocks.=Wykop 36 bloków drzewa.
Dig 6 tree blocks.=Wykop 6 bloków drewna.
Eat 10 loaves of bread.=Zjedz 10 bochenków chleba.
Eat 3 brown mushrooms.=Zjedz 3 brązowe grzyby.
Eat 33 brown mushrooms.=Zjedz 33 brązowe grzyby.
Eat 333 brown mushrooms.=Zjedz 333 brązowe grzyby.
Eat 80 apples.=Zjedz 80 jabłek.
Electical Engineer=
Engineer=
Factory=
Far Lands=Odległe lądy
Farming Skills Acquired=Nabyto umiejętności rolnicze
Field Worker=Pracownik na polu
Filthy Rich=Obrzydliwie bogaty
Firefighter=Strażak
First Day in the Woods=Pierwszy dzień w lesie
First Gold Find=Pierwsze znalezione złoto
First Mese Find=Pierwsze mese
Fortress=Forteca
Geraniums are Blue=Gerania są niebieskie
Girl's Best Friend=Najlepszy przyjaciel kobiety
Glacier Discoverer=Odkrywca lodowca
Glasser=Szklarz
Gold Rush=Gorączka złota
Grasslands Discoverer=Odkrywca terenów trawiastych
Graveyard=
Hardened Miner=Zatwardziały górnik
Hardest Block on Earth=Najtwardszy blok na ziemi
Harvest 125 fully grown wheat plants.=Zbierz 125 w pełni dojrzałej pszenicy.
Harvest 25 fully grown wheat plants.=Zbierz 25 w pełni dojrzałej pszenicy.
Harvest 625 fully grown wheat plants.=Zbierz 625 w pełni dojrzałej pszenicy.
Harvest a fully grown wheat plant.=Zbierz w pełni dojrzałą pszenicę.
Hotelier=Hotelarz
House of Obsidian=Dom z obsydianu
In space, no one can hear you scream=
In the Dungeon=W lochu
In the Flow=
Industrial Age=Era przemysłowa
Item transporter=
Jungle Discoverer=Odkrywca dżungli
Junglebaby=Dziecko dżungli
Jungleman=Człowiek dżungli
Lava Miner=Górnik lawy
Lava and Water=Lawa i woda
Light It Up=Roznieć to
Little Library=Mała biblioteka
Long Ladder=Długa drabina
Lumberjack=Drwal
Marchand De Sable=Piaskowy dziadek
Master Architect=Mistrz architekt
Master Miner=Mistrz górnik
Mese Mastery=Mistrzostwo mese
Mine 18 diamond ores.=Wykop 18 diamentów.
Mine 45 gold ores.=Wykop 45 rud złota.
Mine 50 obsidian.=Wykop 50 obsydianów.
Mine a mese block.=Wykop blok mese.
Mine a mossy cobblestone.=Wykop omszałą kostkę brukową.
Mine a nyan cat.=Wykop kota nyan.
Mine any block while being very close to lava.=Wykop jakikolwiek blok będąc bardzo blisko lawy.
Mine some dry grass.=Wykop trochę wysuszonej trawy.
Mine some grass.=Wykop trochę trawy.
Mine your first cactus.=Wykop pierwszego kaktusa.
Mine your first diamond ore.=Wykop pierwszy diament.
Mine your first dry shrub.=Wykop pierwszy wysuszony krzak.
Mine your first gold ore.=Wykop pierwszą rudę złota.
Mine your first ice.=Wykop pierwszy lód.
Mine your first jungle grass.=Wykop pierwszą trawę dżunglową.
Mine your first mese ore.=Wykop pierwszą rudę mese.
Mine your first obsidian.=Wykop pierwszy obsydian.
Mini Miner=Mini górnik
Mushroom Lover=Wielbiciel grzybów
Obsessed with Obsidian=Obsesja na punkcie obsydianu
Oil Tycoon=
On The Way=W drodze
Outpost=Posterunek
Pharaoh=Faraon
Place 1,000 torches.=Postaw 1000 pochodni.
Place 100 rails.=Połóż 100 torów.
Place 100 stone.=Postaw 100 kamieni.
Place 100 torches.=Postaw 100 pochodni.
Place 10000 tubes.=
Place 2 trap stones.=Postaw 2 kamienne pułapki.
Place 20 coal checkers.=Postaw 20 szachownic węglowych.
Place 20 iron checkers.=Postaw 20 szachownic żelaznych.
Place 40 steel ladders.=Postaw 40 stalowych drabin.
Place 400 wooden ladders.=Postaw 400 drewnianych drabin.
Place 5 autocrafters.=
Place 500 mesecon wires.=
Place two snow blocks.=Postaw dwa bloki śniegu.
Professional Lumberjack=Profesjonalny drwal
Put out 1000 fires.=Zgaś 1000 pożarów.
Pyromaniac=Piromaniak
Really Well Lit=Naprawdę dobrze oświetlone
Roses Are Red=Róże są czerwone
Saint-Maclou=Saint-Maclou
Sam the Trapper=Sam Myśliwy
Savannah Discoverer=Odkrywca sawanny
Semi-pro Lumberjack=Pół-profesjonalny drwal
Smelter=Przetapiacz
Tasty Mushrooms=Smaczne grzyby
This is Sad=
Treasurer=Podskarbi
Underground Mushroom Farmer=Hodowca podziemnych grzybów
Very Simple Snow Man=Bardzo prosty bałwan
Watchtower=Strażnica
Well Lit=Dobrze oświetlone
Wheat Magnate=Pszeniczny magnat
White Color Stock=Zapas białego koloru
Wool Over Your Eyes=Owijanie w bawełnę
Wow, I am Diamonds!=Wow, jestem diamentami!
You Suck!=
You're a witch!=
Youre a copper=Jesteś miedzią
Yummy!=Pychota
### chat_commands.lua ###
<award ID>=
<name>=<nazwa>
All your awards and statistics have been cleared. You can now start again.=Wszystkie nagrody i statystyki zostały usunięte. Możesz znów zacząć od nowa.
Award not found.=
Get the awards statistics for the given player or yourself=
Show details of an award=
Show, clear, disable or enable your awards=
You have disabled awards.=
You have enabled awards.=
[c|clear|disable|enable]=[c|clear|disable|enable]
### gui.lua ###
%ss awards:=%s's nagrody:
(Secret Award)=(Sekretna nagroda)
@1 (unlocked)=
Awards=Nagrody
Error: No achivements available.=
Error: No award available.=
OK=OK
Unlock this award to find out what it is.=Odblokuj tę nagrodę, aby dowiedzieć się czym jest.
You have not unlocked any awards.=Nie odblokowałeś żadnych nagród.
You've disabled awards. Type /awards enable to reenable.=Wyłączyłeś nagrody. Wpisz /awards enable, aby je ponownie włączyć.
### triggers.lua ###
@1/@2 chat messages=@1/@2 wiadomości na czacie
@1/@2 crafted=@1/@2 stworzono
@1/@2 deaths=@1/@2 śmierci
@1/@2 dug=@1/@2 wykopano
@1/@2 eaten=@1/@2 zjedzono
@1/@2 joins=
@1/@2 placed=@1/@2 postawiono
Chat @1 times=
Craft @1 item=
Craft @1 items.=
Craft: @1×@2=
Craft: @2=
Die @1 times of @2=
Die @1 times.=
Die once of @2=
Eat @1 item=
Eat @1 items.=
Eat @1×@2=
Eat @2=
Join @1 times=
Join once=
Mine @1 block.=
Mine @1 blocks.=
Mine @1 times=
Mine: @1×@2=
Mine: @2=
Place @1 block.=
Place @1 blocks.=
Place: @1×@2=
Place: @2=
Send a chat message=
##### not used anymore #####
%s: %s=%s: %s
Secret Achievement Unlocked:=Odblokowano sekretne osiągnięcie:
Achievement Unlocked:=Odblokowano osiągnięcie:
Secret Achievement Unlocked: %s=Odblokowano sekretne osiągnięcie: %s
Achievement Unlocked: %s=Odblokowano osiągnięcie: %s
Secret Achievement Unlocked!=Odblokowano sekretne osiągnięcie!
Achievement Unlocked!=Odblokowano osiągnięcie!
Error: No awards available.=Błąd: Brak dostępnych nagród.
%s (got)=%s (zdobyto)
@1/@2 game joins=@1/@2 dołączeń do gry
Bankier=Bankier
Constructor=Konstruktor
Show, clear, disable or enable your achievements=Pokaż, usuń, wyłącz lub włącz osiągnięcia
You have disabled your achievements.=Wyłączyłeś osiągnięcia.
You have enabled your achievements.=Włączyłeś osiągnięcia.
<achievement ID>=<ID osiągnięcia>
Show details of an achievement=Pokaż szczegóły osiągnięcia
Achievement not found.=Nie znaleziono osiągnięcia.
Get the achievements statistics for the given player or yourself=Pokaż swoje statystyki lub danego gracza

259
locale/awards.pt.tr Normal file
View File

@ -0,0 +1,259 @@
# textdomain: awards
### api_awards.lua ###
Award Unlocked!=
Award Unlocked: %s=
Secret Award Unlocked!=
Secret Award Unlocked: %s=
### awards.lua ###
A Cat in a Pop-Tart?!=Um Gato em um Pop-Tart?!
Architect=Arquiteto
Aspiring Farmer=Fazendeiro Aspirante
Backpacker=
Baker=Padeiro
Banker=
Bricker=Tijoleiro
Build a Cave=Montar uma Caverna
Builder=Construtor
Burn to death in a fire.=
Castorama=
Craft 10 furnaces.=Montar 10 fornos.
Craft 10 mese lamps.=Fazer 10 lâmpadas de mese.
Craft 100 obsidian bricks.=Montar 100 tijolos de obsidiana.
Craft 100 sandstone bricks.=Fazer 100 tijolos de arenito.
Craft 100 sticks.=Lenhar 100 gravetos.
Craft 100 white dyes.=Fazer 100 tintas brancas.
Craft 14 vessels shelves.=Montar 14 estantes de frascos.
Craft 15 chests.=Montar 10 baús.
Craft 15 fancy beds.=Montar 15 camas chiques.
Craft 200 brick blocks.=Fazer 200 blocos de tijolo.
Craft 200 stone bricks.=Fazer 200 tijolos de pedra.
Craft 24 gold block stairs.=Montar 24 escadas de bloco de ouro.
Craft 250 white wool.=Tecer 250 lãs branca.
Craft 3,200 stone bricks.=Fazer 3.200 tijolos de pedra.
Craft 30 locked chests.=Montar 30 baús trancados.
Craft 4 large bags.=
Craft 400 blue dyes.=Fazer 400 tintas azuis.
Craft 400 desert stone bricks.=Fazer 400 Tijolos de pedra do deserto.
Craft 400 red dyes.=Fazer 400 tintas vermelhas.
Craft 400 yellow dyes.=Fazer 400 tintas amarelas.
Craft 500 times oil extract.=
Craft 7 bookshelves.=Fazer 7 estantes de livros.
Craft 8 times flint and steel.=Montar acendedor de Ferro e Pederneira 8 vezes.
Craft 800 stone bricks.=Fazer 800 tijolos de pedra.
Craft a diamond block.=Montar um bloco de diamante.
Crafter of Sticks=Rachador de Lenha
Dandelions are Yellow=Dentes-de-Leões são Amarelos
Death in the Deeps=
Desert Discoverer=Descobridor do Deserto
Desert Dweller=Morador do Deserto
Die 100 times.=
Die above 10000=
Die below -10000=
Die in flowing lava.=
Die near bones.=
Die near diamond ore.=
Dig 1,000 copper ores.=Minerar 1.000 cobres.
Dig 1,000 jungle tree blocks.=Cortar 1.000 blocos de árvore selvagem.
Dig 1,000 sand.=Cavar 1.000 blocos de areia.
Dig 1,000 stone blocks.=Minerar 1.000 blocos de pedra.
Dig 1,296 tree blocks.=Cortar 1.296 blocos de árvore.
Dig 10,000 stone blocks.=Minerar 10.000 blocos de pedra.
Dig 100 jungle tree blocks.=Cortar 100 blocos de árvore selvagem.
Dig 100 stone blocks.=Minerar 100 blocos de pedra.
Dig 216 tree blocks.=Cortar 216 blocos de árvore.
Dig 36 tree blocks.=Cortar 36 blocos de árvore.
Dig 6 tree blocks.=Cortar 6 blocos de árvore.
Eat 10 loaves of bread.=Comer 10 pães.
Eat 3 brown mushrooms.=Comer 3 cogumelos marrons.
Eat 33 brown mushrooms.=Comer 33 cogumelos marrons.
Eat 333 brown mushrooms.=Comer 333 cogumelos marrons.
Eat 80 apples.=Comer 80 maçãs.
Electical Engineer=
Engineer=
Factory=
Far Lands=Terras Distantes
Farming Skills Acquired=Conhecimento de Cultivo Adquirido
Field Worker=Trabalhador do Campo
Filthy Rich=Muito Rico
Firefighter=Bombeiro
First Day in the Woods=Primeiro dia na Floresta
First Gold Find=Achei Ouro
First Mese Find=Primeiro Mese
Fortress=Fortaleza
Geraniums are Blue=Gerânios são Azuis
Girl's Best Friend=Melhor Amigo da Menina
Glacier Discoverer=Descobridor Glacial
Glasser=Vidraceiro
Gold Rush=Corriga do Ouro
Grasslands Discoverer=Descobridor do Gramado
Graveyard=
Hardened Miner=Minerador Avançado
Hardest Block on Earth=O Bloco mais Duro da Terra
Harvest 125 fully grown wheat plants.=Colher 125 plantas trigos totalmente crescidos.
Harvest 25 fully grown wheat plants.=Colher 25 plantas trigos totalmente crescidos.
Harvest 625 fully grown wheat plants.=Colher 625 plantas trigos totalmente crescidos.
Harvest a fully grown wheat plant.=Colher um trigo totalmente crescido.
Hotelier=Hoteleiro
House of Obsidian=Casa de Obsidiana
In space, no one can hear you scream=
In the Dungeon=Na Masmorra
In the Flow=
Industrial Age=Era Industrial
Item transporter=
Jungle Discoverer=Desbravador Selvagem
Junglebaby=Bebê Selvagem
Jungleman=Homem Selvagem
Lava Miner=Minerador de Lava
Lava and Water=Lava e Água
Light It Up=Ilumine Isso
Little Library=Pequena Biblioteca
Long Ladder=Longa Escadaria
Lumberjack=Lenhador
Marchand De Sable=Vendedor de Areia
Master Architect=Arquiteto Mestre
Master Miner=Minerador Mestre
Mese Mastery=Mestre do Mese
Mine 18 diamond ores.=Minere 18 diamantes.
Mine 45 gold ores.=Minerar 45 de ouro.
Mine 50 obsidian.=Minerar 50 obsidianas.
Mine a mese block.=Cavar um bloco de mese.
Mine a mossy cobblestone.=Minerar um pedregulho com musgo.
Mine a nyan cat.=Capturar um gato nyan.
Mine any block while being very close to lava.=Minerar qualquer bloco enquanto estiver mergulhado em lava.
Mine some dry grass.=Minerar algum mato seco.
Mine some grass.=Minerar algum mato
Mine your first cactus.=Cortar seu primeiro cacto.
Mine your first diamond ore.=Minerar seu primeiro diamante.
Mine your first dry shrub.=Minerar seu primeiro arbusto seco.
Mine your first gold ore.=Minerar sua primeira de ouro.
Mine your first ice.=Quebrar seu primeiro bloco de gelo.
Mine your first jungle grass.=Cortar seu primeiro mato selvagem.
Mine your first mese ore.=Cavar seu primeiro mese.
Mine your first obsidian.=Cavar sua primeira obsidiana.
Mini Miner=Mini Minerador
Mushroom Lover=Amante de Cogumelo
Obsessed with Obsidian=Obcecado por Obsidiana
Oil Tycoon=
On The Way=No Caminho
Outpost=Posto Avançado
Pharaoh=Faraó
Place 1,000 torches.=Colocar 1.000 tochas.
Place 100 rails.=Colocar 100 trilhos.
Place 100 stone.=Colocar 100 pedras.
Place 100 torches.=Colocar 100 tochas.
Place 10000 tubes.=
Place 2 trap stones.=
Place 20 coal checkers.=
Place 20 iron checkers.=
Place 40 steel ladders.=Colocar 40 escadas de ferro.
Place 400 wooden ladders.=Colocar 400 escadas de madeira.
Place 5 autocrafters.=
Place 500 mesecon wires.=
Place two snow blocks.=Colocar 2 blocos de neve.
Professional Lumberjack=Lenhador Profissional
Put out 1000 fires.=Apagar fogo 1000 vezes.
Pyromaniac=Piromaníaco
Really Well Lit=Realmente Bem Iluminado
Roses Are Red=Rosas São Vermelhas
Saint-Maclou=Saint-Maclou
Sam the Trapper=
Savannah Discoverer=Descobridor da Savana
Semi-pro Lumberjack=Lenhador Semi-Profissional
Smelter=Fundidor
Tasty Mushrooms=Cogumelos Deliciosos
This is Sad=
Treasurer=Tesoureiro
Underground Mushroom Farmer=Fazendeiro Subterrâneo de Cogumelos
Very Simple Snow Man=Homem de Neve Muito Simples
Watchtower=Sentinela
Well Lit=Bem Iluminado
Wheat Magnate=Magnata do Trigo
White Color Stock=Estoque de Cor Branca
Wool Over Your Eyes=Lã Sobre Meus Olhos
Wow, I am Diamonds!=Uau, Diamante!
You Suck!=
You're a witch!=
Youre a copper=Sou um Cobre
Yummy!=Humm!
### chat_commands.lua ###
<award ID>=
<name>=<jogador>
All your awards and statistics have been cleared. You can now start again.=Todas as suas conquistas e estatísticas foram limpas. Agora podes iniciar novamente.
Award not found.=
Get the awards statistics for the given player or yourself=
Show details of an award=
Show, clear, disable or enable your awards=
You have disabled awards.=
You have enabled awards.=
[c|clear|disable|enable]=[c|clear|disable|enable]
### gui.lua ###
%ss awards:=%s das conquistas:
(Secret Award)=(Conquista Secreta)
@1 (unlocked)=
Awards=Conquistas
Error: No achivements available.=
Error: No award available.=
OK=OK
Unlock this award to find out what it is.=Desbloqueie essa conquista para descobrir o que significa.
You have not unlocked any awards.=Nenhuma conquista desbloqueada ainda.
You've disabled awards. Type /awards enable to reenable.=Desabilitaste as conquistas. Digite /awards enable para reabilitar.
### triggers.lua ###
@1/@2 chat messages=@1 de @2
@1/@2 crafted=@1 de @2 feitos
@1/@2 deaths=@1 de @2 mortes
@1/@2 dug=@1 de @2 obtidos
@1/@2 eaten=@1 de @2 consumidos
@1/@2 joins=
@1/@2 placed=@1 de @2 colocados
Chat @1 times=
Craft @1 item=
Craft @1 items.=
Craft: @1×@2=
Craft: @2=
Die @1 times of @2=
Die @1 times.=
Die once of @2=
Eat @1 item=
Eat @1 items.=
Eat @1×@2=
Eat @2=
Join @1 times=
Join once=
Mine @1 block.=
Mine @1 blocks.=
Mine @1 times=
Mine: @1×@2=
Mine: @2=
Place @1 block.=
Place @1 blocks.=
Place: @1×@2=
Place: @2=
Send a chat message=
##### not used anymore #####
%s: %s=%s: %s
Secret Achievement Unlocked:=Conquista Secreta Desbloqueada:
Achievement Unlocked:=Conquista Desbloqueada:
Secret Achievement Unlocked: %s=Conquista Secreta Desbloqueada: %s
Achievement Unlocked: %s=Conquista Desbloqueada: %s
Secret Achievement Unlocked!=Conquista Secreta Desbloqueada!
Achievement Unlocked!=Conquista Desbloqueada!
Error: No awards available.=Erro: Nenhuma conquista encontrada.
%s (got)=%s (obtido)
@1/@2 game joins=@1 de @2
Bankier=Banqueiro
Constructor=Empreiteiro
Show, clear, disable or enable your achievements=Exibir, limpar, desabilitar ou habilitar suas conquistas
You have disabled your achievements.=Suas conquistas foram desabilitadas.
You have enabled your achievements.=Suas conquistas foram habilitadas.
<achievement ID>=<ID da conquista>
Show details of an achievement=Mostra detalhes de uma conquista
Achievement not found.=Conquista não encontrada.
Get the achievements statistics for the given player or yourself=Ver as estatísticas de conquistas de um jogador ou suas próprias

236
locale/template.txt Normal file
View File

@ -0,0 +1,236 @@
# textdomain: awards
### api_awards.lua ###
Award Unlocked!=
Award Unlocked: %s=
Secret Award Unlocked!=
Secret Award Unlocked: %s=
### awards.lua ###
A Cat in a Pop-Tart?!=
Architect=
Aspiring Farmer=
Backpacker=
Baker=
Banker=
Bricker=
Build a Cave=
Builder=
Burn to death in a fire.=
Castorama=
Craft 10 furnaces.=
Craft 10 mese lamps.=
Craft 100 obsidian bricks.=
Craft 100 sandstone bricks.=
Craft 100 sticks.=
Craft 100 white dyes.=
Craft 14 vessels shelves.=
Craft 15 chests.=
Craft 15 fancy beds.=
Craft 200 brick blocks.=
Craft 200 stone bricks.=
Craft 24 gold block stairs.=
Craft 250 white wool.=
Craft 3,200 stone bricks.=
Craft 30 locked chests.=
Craft 4 large bags.=
Craft 400 blue dyes.=
Craft 400 desert stone bricks.=
Craft 400 red dyes.=
Craft 400 yellow dyes.=
Craft 500 times oil extract.=
Craft 7 bookshelves.=
Craft 8 times flint and steel.=
Craft 800 stone bricks.=
Craft a diamond block.=
Crafter of Sticks=
Dandelions are Yellow=
Death in the Deeps=
Desert Discoverer=
Desert Dweller=
Die 100 times.=
Die above 10000=
Die below -10000=
Die in flowing lava.=
Die near bones.=
Die near diamond ore.=
Dig 1,000 copper ores.=
Dig 1,000 jungle tree blocks.=
Dig 1,000 sand.=
Dig 1,000 stone blocks.=
Dig 1,296 tree blocks.=
Dig 10,000 stone blocks.=
Dig 100 jungle tree blocks.=
Dig 100 stone blocks.=
Dig 216 tree blocks.=
Dig 36 tree blocks.=
Dig 6 tree blocks.=
Eat 10 loaves of bread.=
Eat 3 brown mushrooms.=
Eat 33 brown mushrooms.=
Eat 333 brown mushrooms.=
Eat 80 apples.=
Electical Engineer=
Engineer=
Factory=
Far Lands=
Farming Skills Acquired=
Field Worker=
Filthy Rich=
Firefighter=
First Day in the Woods=
First Gold Find=
First Mese Find=
Fortress=
Geraniums are Blue=
Girl's Best Friend=
Glacier Discoverer=
Glasser=
Gold Rush=
Grasslands Discoverer=
Graveyard=
Hardened Miner=
Hardest Block on Earth=
Harvest 125 fully grown wheat plants.=
Harvest 25 fully grown wheat plants.=
Harvest 625 fully grown wheat plants.=
Harvest a fully grown wheat plant.=
Hotelier=
House of Obsidian=
In space, no one can hear you scream=
In the Dungeon=
In the Flow=
Industrial Age=
Item transporter=
Jungle Discoverer=
Junglebaby=
Jungleman=
Lava Miner=
Lava and Water=
Light It Up=
Little Library=
Long Ladder=
Lumberjack=
Marchand De Sable=
Master Architect=
Master Miner=
Mese Mastery=
Mine 18 diamond ores.=
Mine 45 gold ores.=
Mine 50 obsidian.=
Mine a mese block.=
Mine a mossy cobblestone.=
Mine a nyan cat.=
Mine any block while being very close to lava.=
Mine some dry grass.=
Mine some grass.=
Mine your first cactus.=
Mine your first diamond ore.=
Mine your first dry shrub.=
Mine your first gold ore.=
Mine your first ice.=
Mine your first jungle grass.=
Mine your first mese ore.=
Mine your first obsidian.=
Mini Miner=
Mushroom Lover=
Obsessed with Obsidian=
Oil Tycoon=
On The Way=
Outpost=
Pharaoh=
Place 1,000 torches.=
Place 100 rails.=
Place 100 stone.=
Place 100 torches.=
Place 10000 tubes.=
Place 2 trap stones.=
Place 20 coal checkers.=
Place 20 iron checkers.=
Place 40 steel ladders.=
Place 400 wooden ladders.=
Place 5 autocrafters.=
Place 500 mesecon wires.=
Place two snow blocks.=
Professional Lumberjack=
Put out 1000 fires.=
Pyromaniac=
Really Well Lit=
Roses Are Red=
Saint-Maclou=
Sam the Trapper=
Savannah Discoverer=
Semi-pro Lumberjack=
Smelter=
Tasty Mushrooms=
This is Sad=
Treasurer=
Underground Mushroom Farmer=
Very Simple Snow Man=
Watchtower=
Well Lit=
Wheat Magnate=
White Color Stock=
Wool Over Your Eyes=
Wow, I am Diamonds!=
You Suck!=
You're a witch!=
Youre a copper=
Yummy!=
### chat_commands.lua ###
<award ID>=
<name>=
All your awards and statistics have been cleared. You can now start again.=
Award not found.=
Get the awards statistics for the given player or yourself=
Show details of an award=
Show, clear, disable or enable your awards=
You have disabled awards.=
You have enabled awards.=
[c|clear|disable|enable]=
### gui.lua ###
%ss awards:=
(Secret Award)=
@1 (unlocked)=
Awards=
Error: No achivements available.=
Error: No award available.=
OK=
Unlock this award to find out what it is.=
You have not unlocked any awards.=
You've disabled awards. Type /awards enable to reenable.=
### triggers.lua ###
@1/@2 chat messages=
@1/@2 crafted=
@1/@2 deaths=
@1/@2 dug=
@1/@2 eaten=
@1/@2 joins=
@1/@2 placed=
Chat @1 times=
Craft @1 item=
Craft @1 items.=
Craft: @1×@2=
Craft: @2=
Die @1 times of @2=
Die @1 times.=
Die once of @2=
Eat @1 item=
Eat @1 items.=
Eat @1×@2=
Eat @2=
Join @1 times=
Join once=
Mine @1 block.=
Mine @1 blocks.=
Mine @1 times=
Mine: @1×@2=
Mine: @2=
Place @1 block.=
Place @1 blocks.=
Place: @1×@2=
Place: @2=
Send a chat message=

View File

@ -1,7 +1,8 @@
name = awards
title = Achievements
title = Awards
author = rubenwardy
description = Adds achievements to Minetest, and an API to register new ones.
license = LGPL 2.1 or later
description = Adds awards to Minetest, and an API to register new ones.
optional_depends = sfinv,unified_inventory,default,stairs,farming,dye,beds,wool,vessels,moreblocks,fire,flowers,nyancat
license = MIT
forum = https://forum.minetest.net/viewtopic.php?t=4870
version = 0.5
version = 3.0.0

View File

@ -1,61 +0,0 @@
Awards
------
by Andrew "Rubenwardy" Ward, LGPL 2.1 or later.
This mod adds achievements to Minetest.
Majority of awards are back ported from Calinou's
old fork in Carbone, under same license.
Code Reference
--------------
The API
=======
* awards.register_achievement(name,data_table)
* name
* desciption
* sound [optional]
* image [optional]
* trigger [optional] [table]
* type - "dig", "place", "craft", "death", "chat" or "join"
* (for dig/place type) node - the nodes name
* (for craft type) item - the items name
* (for all types) target - how many to dig / place
* secret [optional] - if true, then player needs to unlock to find out what it is.
* awards.give_achievement(name,award)
* -- gives an award to a player
* awards.register_onDig(func(player,data))
* -- return award name or null
* awards.register_onPlace(func(player,data))
* -- return award name or null
* awards.register_onDeath(func(player,data))
* -- return award name or null
* awards.register_onChat(func(player,data))
* -- return award name or null
* awards.register_onJoin(func(player,data))
* -- return award name or null
* awards.register_onCraft(func(player,data))
* -- return award name or null
Player Data
===========
A list of data referenced/hashed by the player's name.
* player name
* name [string]
* count [table] - dig counter
* modname [table]
* itemname [int]
* place [table] - place counter
* modname [table]
* itemname [int]
* craft [table] - craft counter
* modname [table]
* itemname [int]
* deaths
* chats
* joins

2
settingtypes.txt Normal file
View File

@ -0,0 +1,2 @@
# Add default achievements from the awards mod
awards.add_defaults (Add Default Achievements) bool true

Binary file not shown.

252
src/api_awards.lua Normal file
View File

@ -0,0 +1,252 @@
-- Copyright (c) 2013-18 rubenwardy. MIT.
local S = awards.translator
function awards.register_award(name, def)
def.name = name
-- Add Triggers
if def.trigger and def.trigger.type then
local tdef = awards.registered_triggers[def.trigger.type]
assert(tdef, "Trigger not found: " .. def.trigger.type)
tdef:on_register(def)
end
function def:can_unlock(data)
if not self.requires then
return true
end
for i=1, #self.requires do
if not data.unlocked[self.requires[i]] then
return false
end
end
return true
end
-- Add Award
awards.registered_awards[name] = def
local tdef = awards.registered_awards[name]
if def.description == nil and tdef.getDefaultDescription then
def.description = tdef:getDefaultDescription()
end
end
-- This function is called whenever a target condition is met.
-- It checks if a player already has that award, and if they do not,
-- it gives it to them
----------------------------------------------
--awards.unlock(name, award)
-- name - the name of the player
-- award - the name of the award to give
function awards.unlock(name, award)
-- Ensure the player is online.
if not minetest.get_player_by_name(name) then
return
end
-- Access Player Data
local data = awards.player(name)
local awdef = awards.registered_awards[award]
assert(awdef, "Unable to unlock an award which doesn't exist!")
if data.disabled or
(data.unlocked[award] and data.unlocked[award] == award) then
return
end
if not awdef:can_unlock(data) then
minetest.log("warning", "can_unlock returned false in unlock of " ..
award .. " for " .. name)
return
end
-- Unlock Award
minetest.log("action", name.." has unlocked award "..award)
data.unlocked[award] = award
awards.save()
-- Give Prizes
if awdef and awdef.prizes then
for i = 1, #awdef.prizes do
local itemstack = ItemStack(awdef.prizes[i])
if not itemstack:is_empty() then
local receiverref = minetest.get_player_by_name(name)
if receiverref then
receiverref:get_inventory():add_item("main", itemstack)
end
end
end
end
-- Run callbacks
if awdef.on_unlock and awdef.on_unlock(name, awdef) then
return
end
for _, callback in pairs(awards.on_unlock) do
if callback(name, awdef) then
return
end
end
-- Get Notification Settings
local title = awdef.title or award
local desc = awdef.description or ""
local background = awdef.hud_background or awdef.background or "awards_bg_default.png"
local icon = (awdef.icon or "awards_unknown.png") .. "^[resize:32x32"
local sound = awdef.sound
if sound == nil then
-- Explicit check for nil because sound could be `false` to disable it
sound = {name="awards_got_generic", gain=0.25}
end
-- Do Notification
if sound then
-- Enforce sound delay to prevent sound spamming
local lastsound = data.lastsound
if lastsound == nil or os.difftime(os.time(), lastsound) >= 1 then
minetest.sound_play(sound, {to_player=name})
data.lastsound = os.time()
end
end
if awards.show_mode == "chat" then
local chat_announce
if awdef.secret then
chat_announce = S("Secret Award Unlocked: %s")
else
chat_announce = S("Award Unlocked: %s")
end
-- use the chat console to send it
minetest.chat_send_player(name, string.format(chat_announce, title))
if desc~="" then
minetest.chat_send_player(name, desc)
end
else
local player = minetest.get_player_by_name(name)
local one = player:hud_add({
hud_elem_type = "image",
name = "award_bg",
scale = {x = 2, y = 1},
text = background,
position = {x = 0.5, y = 0.05},
offset = {x = 0, y = 138},
alignment = {x = 0, y = -1}
})
local hud_announce
if awdef.secret then
hud_announce = S("Secret Award Unlocked!")
else
hud_announce = S("Award Unlocked!")
end
local two = player:hud_add({
hud_elem_type = "text",
name = "award_au",
number = 0xFFFFFF,
scale = {x = 100, y = 20},
text = hud_announce,
position = {x = 0.5, y = 0.05},
offset = {x = 0, y = 45},
alignment = {x = 0, y = -1}
})
local three = player:hud_add({
hud_elem_type = "text",
name = "award_title",
number = 0xFFFFFF,
scale = {x = 100, y = 20},
text = title,
position = {x = 0.5, y = 0.05},
offset = {x = 0, y = 100},
alignment = {x = 0, y = -1}
})
local four = player:hud_add({
hud_elem_type = "image",
name = "award_icon",
scale = {x = 2, y = 2}, -- adjusted for 32x32 from x/y = 4
text = icon,
position = {x = 0.5, y = 0.05},
offset = {x = -200.5, y = 126},
alignment = {x = 0, y = -1}
})
minetest.after(4, function()
local player2 = minetest.get_player_by_name(name)
if player2 then
player2:hud_remove(one)
player2:hud_remove(two)
player2:hud_remove(three)
player2:hud_remove(four)
end
end)
end
end
function awards.get_award_states(name)
local hash_is_unlocked = {}
local retval = {}
-- Add all unlocked awards
local data = awards.player(name)
if data and data.unlocked then
for awardname, _ in pairs(data.unlocked) do
local def = awards.registered_awards[awardname]
if def then
hash_is_unlocked[awardname] = true
local score = -100000
local difficulty = def.difficulty or 1
if def.trigger and def.trigger.target then
difficulty = difficulty * def.trigger.target
end
score = score + difficulty
retval[#retval + 1] = {
name = awardname,
def = def,
unlocked = true,
started = true,
score = score,
progress = nil,
}
end
end
end
-- Add all locked awards
for _, def in pairs(awards.registered_awards) do
if not hash_is_unlocked[def.name] and def:can_unlock(data) then
local progress = def.get_progress and def:get_progress(data)
local started = false
local score = def.difficulty or 1
if def.secret then
score = 1000000
elseif def.trigger and def.trigger.target and progress then
local perc = progress.current / progress.target
score = score * (1 - perc) * def.trigger.target
if perc < 0.001 then
score = score + 100
else
started = true
end
else
score = 100
end
retval[#retval + 1] = {
name = def.name,
def = def,
unlocked = false,
started = started,
score = score,
progress = progress,
}
end
end
table.sort(retval, function(a, b)
return a.score < b.score
end)
return retval
end

222
src/api_triggers.lua Normal file
View File

@ -0,0 +1,222 @@
-- Copyright (c) 2013-18 rubenwardy. MIT.
local function ngettext(msgid, msgid_plural, n, ...)
return awards.translator(n==1 and msgid or msgid_plural, ...)
end
local S, NS = awards.translator, ngettext
awards.on = {}
local default_def = {}
function default_def:run_callbacks(player, data, table_func)
for i = 1, #self.on do
local res = nil
local entry = self.on[i]
if type(entry) == "function" then
res = entry(player, data)
elseif type(entry) == "table" and entry.award then
res = table_func(entry)
end
if res then
awards.unlock(player:get_player_name(), res)
end
end
end
function awards.register_trigger(tname, tdef)
assert(type(tdef) == "table",
"Passing a callback to register_trigger is not supported in 3.0")
tdef.name = tname
for key, value in pairs(default_def) do
tdef[key] = value
end
if tdef.type == "counted" then
local old_reg = tdef.on_register
function tdef:on_register(def)
local tmp = {
award = def.name,
target = def.trigger.target,
}
tdef.register(tmp)
function def.get_progress(_, data)
local current = math.min(data[tname] or 0, tmp.target)
return {
current = current,
target = tmp.target,
label = S(tdef.progress, current, tmp.target),
}
end
function def.getDefaultDescription(_)
local n = def.trigger.target
return NS(tdef.auto_description[1], tdef.auto_description[2], n, n)
end
if old_reg then
return old_reg(tdef, def)
end
end
function tdef.notify(player)
assert(player and player.is_player and player:is_player())
local name = player:get_player_name()
local data = awards.player(name)
-- Increment counter
local currentVal = (data[tname] or 0) + 1
data[tname] = currentVal
tdef:run_callbacks(player, data, function(entry)
if entry.target and entry.award and currentVal and
currentVal >= entry.target then
return entry.award
end
end)
end
awards["notify_" .. tname] = tdef.notify
elseif tdef.type == "counted_key" then
if tdef.key_is_item then
tdef.watched_groups = {}
end
-- On award register
local old_reg = tdef.on_register
function tdef:on_register(def)
-- Register trigger
local tmp = {
award = def.name,
key = tdef:get_key(def),
target = def.trigger.target,
}
tdef.register(tmp)
-- If group, add it to watch list
if tdef.key_is_item and tmp.key and tmp.key:sub(1, 6) == "group:" then
tdef.watched_groups[tmp.key:sub(7, #tmp.key)] = true
end
-- Called to get progress values and labels
function def.get_progress(_, data)
data[tname] = data[tname] or {}
local done
if tmp.key then
done = data[tname][tmp.key] or 0
else
done = data[tname].__total or 0
end
done = math.min(done, tmp.target)
return {
current = done,
target = tmp.target,
label = S(tdef.progress, done, tmp.target),
}
end
-- Build description if none is specificed by the award
function def.getDefaultDescription(_)
local n = def.trigger.target
if tmp.key then
local nname = tmp.key
return NS(tdef.auto_description[1],
tdef.auto_description[2], n, n, nname)
else
return NS(tdef.auto_description_total[1],
tdef.auto_description_total[2], n, n)
end
end
-- Call on_register in trigger type definition
if old_reg then
return old_reg(tdef, def)
end
end
function tdef.notify(player, key, n)
n = n or 1
if tdef.key_is_item and key:sub(1, 6) ~= "group:" then
local itemdef = minetest.registered_items[key]
if itemdef then
for groupname,rating in pairs(itemdef.groups or {}) do
if rating ~= 0 and tdef.watched_groups[groupname] then
tdef.notify(player, "group:" .. groupname, n)
end
end
end
end
assert(player and player.is_player and player:is_player() and key)
local name = player:get_player_name()
local data = awards.player(name)
-- Increment counter
data[tname] = data[tname] or {}
local currentVal = (data[tname][key] or 0) + n
data[tname][key] = currentVal
data[tname].__total = (data[tname].__total or 0)
if key:sub(1, 6) ~= "group:" then
data[tname].__total = data[tname].__total + n
end
tdef:run_callbacks(player, data, function(entry)
local current
if entry.key == key then
current = currentVal
elseif entry.key == nil then
current = data[tname].__total
else
return
end
if current >= entry.target then
return entry.award
end
end)
end
awards["notify_" .. tname] = tdef.notify
elseif tdef.type and tdef.type ~= "custom" then
error("Unrecognised trigger type " .. tdef.type)
end
awards.registered_triggers[tname] = tdef
tdef.on = {}
tdef.register = function(func)
table.insert(tdef.on, func)
end
-- Backwards compat
awards.on[tname] = tdef.on
awards['register_on_' .. tname] = tdef.register
return tdef
end
function awards.increment_item_counter(data, field, itemname, count)
itemname = minetest.registered_aliases[itemname] or itemname
data[field][itemname] = (data[field][itemname] or 0) + (count or 1)
end
function awards.get_item_count(data, field, itemname)
itemname = minetest.registered_aliases[itemname] or itemname
return data[field][itemname] or 0
end
function awards.get_total_keyed_count(data, field)
return data[field].__total or 0
end
function awards.register_on_unlock(func)
table.insert(awards.on_unlock, func)
end

1112
src/awards.lua Normal file

File diff suppressed because it is too large Load Diff

61
src/chat_commands.lua Normal file
View File

@ -0,0 +1,61 @@
-- Copyright (c) 2013-18 rubenwardy. MIT.
local S = awards.translator
minetest.register_chatcommand("awards", {
params = S("[c|clear|disable|enable]"),
description = S("Show, clear, disable or enable your awards"),
func = function(name, param)
if param == "clear" then
awards.clear_player(name)
minetest.chat_send_player(name,
S("All your awards and statistics have been cleared. You can now start again."))
elseif param == "disable" then
awards.disable(name)
minetest.chat_send_player(name, S("You have disabled awards."))
elseif param == "enable" then
awards.enable(name)
minetest.chat_send_player(name, S("You have enabled awards."))
elseif param == "c" then
awards.show_to(name, name, nil, true)
else
awards.show_to(name, name, nil, false)
end
if (param == "disable" or param == "enable") and minetest.global_exists("sfinv") then
local player = minetest.get_player_by_name(name)
if player then
sfinv.set_player_inventory_formspec(player)
end
end
end
})
minetest.register_chatcommand("awd", {
params = S("<award ID>"),
description = S("Show details of an award"),
func = function(name, param)
local def = awards.registered_awards[param]
if def then
minetest.chat_send_player(name, string.format("%s: %s", def.title, def.description))
else
minetest.chat_send_player(name, S("Award not found."))
end
end
})
minetest.register_chatcommand("awpl", {
privs = {
server = true
},
params = S("<name>"),
description = S("Get the awards statistics for the given player or yourself"),
func = function(name, param)
if not param or param == "" then
param = name
end
minetest.chat_send_player(name, param)
local player = awards.player(param)
minetest.chat_send_player(name, dump(player))
end
})

112
src/data.lua Normal file
View File

@ -0,0 +1,112 @@
local storage = minetest.get_mod_storage()
local __player_data
-- Table Save Load Functions
function awards.save()
storage:set_string("player_data", minetest.write_json(__player_data))
end
local function convert_data()
minetest.log("warning", "Importing awards data from previous version")
local old_players = __player_data
__player_data = {}
for name, data in pairs(old_players) do
while name.name do
name = name.name
end
data.name = name
print("Converting data for " .. name)
-- Just rename counted
local counted = {
chats = "chat",
deaths = "death",
joins = "join",
}
for from, to in pairs(counted) do
data[to] = data[from]
data[from] = nil
end
data.death = {
unknown = data.death,
__total = data.death,
}
-- Convert item db to new format
local counted_items = {
count = "dig",
place = "place",
craft = "craft",
}
for from, to in pairs(counted_items) do
local ret = {}
local count = 0
if data[from] then
for modname, items in pairs(data[from]) do
for itemname, value in pairs(items) do
itemname = modname .. ":" .. itemname
local key = minetest.registered_aliases[itemname] or itemname
ret[key] = value
count = count + value
end
end
end
ret.__total = count
data[from] = nil
data[to] = ret
end
__player_data[name] = data
end
end
function awards.load()
local old_save_path = minetest.get_worldpath().."/awards.txt"
local file = io.open(old_save_path, "r")
if file then
local table = minetest.deserialize(file:read("*all"))
if type(table) == "table" then
__player_data = table
convert_data()
else
__player_data = {}
end
file:close()
os.rename(old_save_path, minetest.get_worldpath().."/awards.bk.txt")
awards.save()
else
local json = storage:get("player_data")
__player_data = json and minetest.parse_json(json) or {}
end
end
function awards.player(name)
assert(type(name) == "string")
local data = __player_data[name] or {}
__player_data[name] = data
data.name = data.name or name
data.unlocked = data.unlocked or {}
return data
end
function awards.player_or_nil(name)
return __player_data[name]
end
function awards.enable(name)
awards.player(name).disabled = nil
end
function awards.disable(name)
awards.player(name).disabled = true
end
function awards.clear_player(name)
__player_data[name] = {}
end

223
src/gui.lua Normal file
View File

@ -0,0 +1,223 @@
-- Copyright (c) 2013-18 rubenwardy. MIT.
local S = awards.translator
function awards.get_formspec(name, to, sid)
local formspec = ""
local awards_list = awards.get_award_states(name)
if #awards_list == 0 then
formspec = formspec .. "label[3.9,1.5;"..minetest.formspec_escape(S("Error: No achivements available.")).."]"
formspec = formspec .. "button_exit[4.2,2.3;3,1;close;"..minetest.formspec_escape(S("OK")).."]"
return formspec
end
sid = awards_list[sid] and sid or 1
-- Sidebar
local sitem = awards_list[sid]
local sdef = sitem.def
if sdef and sdef.secret and not sitem.unlocked then
formspec = formspec .. "label[1,2.75;"..
minetest.formspec_escape(S("(Secret Award)")).."]"..
"image[1,0;3,3;awards_unknown.png]"
if sdef and sdef.description then
formspec = formspec .. "textarea[0.25,3.25;4.8,1.7;;"..
minetest.formspec_escape(
S("Unlock this award to find out what it is."))..";]"
end
else
local title = sitem.name
if sdef and sdef.title then
title = sdef.title
end
local status = "@1"
if sitem.unlocked then
-- Don't actually use translator here. We define empty S() to fool the update_translations script
-- into extracting that string for the templates.
local function S(str)
return str
end
status = S("@1 (unlocked)")
end
formspec = formspec .. "textarea[0.5,3.1;4.8,1.45;;" ..
S(status, minetest.formspec_escape(title)) ..
";]"
if sdef and sdef.icon then
formspec = formspec .. "image[0.45,0;3.5,3.5;" .. minetest.formspec_escape(sdef.icon) .. "]" -- adjusted values from 0.6,0;3,3
end
if sitem.progress then
local barwidth = 3.95
local perc = sitem.progress.current / sitem.progress.target
local label = sitem.progress.label
if perc > 1 then
perc = 1
end
formspec = formspec .. "background[0,8.24;" .. barwidth ..",0.4;awards_progress_gray.png;false]"
formspec = formspec .. "background[0,8.24;" .. (barwidth * perc) ..",0.4;awards_progress_green.png;false]"
if label then
formspec = formspec .. "label[1.6,8.15;" .. minetest.formspec_escape(label) .. "]"
end
end
if sdef and sdef.description then
formspec = formspec .. "box[-0.05,3.75;3.9,4.2;#000]"
formspec = formspec .. "textarea[0.25,3.75;3.9,4.2;;" ..
minetest.formspec_escape(sdef.description) .. ";]"
end
end
-- Create list box
formspec = formspec .. "textlist[4,0;3.8,8.6;awards;"
local first = true
for _, award in pairs(awards_list) do
local def = award.def
if def then
if not first then
formspec = formspec .. ","
end
first = false
if def.secret and not award.unlocked then
formspec = formspec .. "#707070"..minetest.formspec_escape(S("(Secret Award)"))
else
local title = award.name
if def and def.title then
title = def.title
end
-- title = title .. " [" .. award.score .. "]"
if award.unlocked then
formspec = formspec .. minetest.formspec_escape(title)
elseif award.started then
formspec = formspec .. "#c0c0c0".. minetest.formspec_escape(title)
else
formspec = formspec .. "#a0a0a0".. minetest.formspec_escape(title)
end
end
end
end
return formspec .. ";"..sid.."]"
end
function awards.show_to(name, to, sid, text)
if name == "" or name == nil then
name = to
end
local data = awards.player(to)
if name == to and data.disabled then
minetest.chat_send_player(name, S("You've disabled awards. Type /awards enable to reenable."))
return
end
if text then
local awards_list = awards.get_award_states(name)
if #awards_list == 0 then
minetest.chat_send_player(to, S("Error: No award available."))
return
elseif not data or not data.unlocked then
minetest.chat_send_player(to, S("You have not unlocked any awards."))
return
end
minetest.chat_send_player(to, string.format(S("%ss awards:"), name))
for str, _ in pairs(data.unlocked) do
local def = awards.registered_awards[str]
if def then
if def.title then
if def.description then
minetest.chat_send_player(to, string.format("%s: %s", def.title, def.description))
else
minetest.chat_send_player(to, def.title)
end
else
minetest.chat_send_player(to, str)
end
end
end
else
local deco = ""
if minetest.global_exists("default") then
deco = default.gui_bg .. default.gui_bg_img
end
-- Show formspec to user
minetest.show_formspec(to,"awards:awards",
"size[8,8.6]" .. deco ..
awards.get_formspec(name, to, sid))
end
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "awards:awards" then
return false
end
if fields.quit then
return true
end
local name = player:get_player_name()
if fields.awards then
local event = minetest.explode_textlist_event(fields.awards)
if event.type == "CHG" then
awards.show_to(name, name, event.index, false)
end
end
return true
end)
if minetest.get_modpath("sfinv") then
sfinv.register_page("awards:awards", {
title = S("Awards"),
on_enter = function(self, player, context)
context.awards_idx = 1
end,
is_in_nav = function(self, player, context)
local data = awards.player(player:get_player_name())
return not data.disabled
end,
get = function(self, player, context)
local name = player:get_player_name()
return sfinv.make_formspec(player, context,
awards.get_formspec(name, name, context.awards_idx),
false)
end,
on_player_receive_fields = function(self, player, context, fields)
if fields.awards then
local event = minetest.explode_textlist_event(fields.awards)
if event.type == "CHG" then
context.awards_idx = event.index
sfinv.set_player_inventory_formspec(player, context)
end
end
end
})
local function check_and_reshow(name)
local player = minetest.get_player_by_name(name)
if not player then
return
end
local context = sfinv.get_or_create_context(player)
if context.page ~= "awards:awards" then
return
end
sfinv.set_player_inventory_formspec(player, context)
end
awards.register_on_unlock(check_and_reshow)
end
if minetest.get_modpath("unified_inventory") ~= nil then
unified_inventory.register_button("awards", {
type = "image",
image = "awards_ui_icon.png",
tooltip = S("Awards"),
action = function(player)
local name = player:get_player_name()
awards.show_to(name, name, nil, false)
end,
})
end

151
src/triggers.lua Normal file
View File

@ -0,0 +1,151 @@
-- AWARDS
--
-- Copyright (C) 2013-2015 rubenwardy
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU Lesser General Public License as published by
-- the Free Software Foundation; either version 2.1 of the License, or
-- (at your option) any later version.
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU Lesser General Public License for more details.
-- You should have received a copy of the GNU Lesser General Public License along
-- with this program; if not, write to the Free Software Foundation, Inc.,
-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--
-- Don't actually use translator here. We define empty S() to fool the update_translations script
-- into extracting those strings for the templates. Actual translation is done in api_triggers.lua.
local S = function (str)
return str
end
-- Check if a player object is valid for awards.
local function player_ok(player)
return player and player.is_player and player:is_player() and not player.is_fake_player
end
awards.register_trigger("chat", {
type = "counted",
progress = S("@1/@2 chat messages"),
auto_description = { S("Send a chat message"), S("Chat @1 times") },
})
minetest.register_on_chat_message(function(name, message)
local player = minetest.get_player_by_name(name)
if not player_ok(player) or string.find(message, "/") then
return
end
awards.notify_chat(player)
end)
awards.register_trigger("join", {
type = "counted",
progress = S("@1/@2 joins"),
auto_description = { S("Join once"), S("Join @1 times") },
})
minetest.register_on_joinplayer(awards.notify_join)
awards.register_trigger("death", {
type = "counted_key",
progress = S("@1/@2 deaths"),
auto_description = { S("Die once of @2"), S("Die @1 times of @2") },
auto_description_total = { S("Die @1 times."), S("Mine @1 times") },
get_key = function(self, def)
return def.trigger.reason
end,
})
minetest.register_on_dieplayer(function(player, reason)
if reason then
reason = reason.type
else
reason = "unknown"
end
awards.notify_death(player, reason)
end)
awards.register_trigger("dig", {
type = "counted_key",
progress = S("@1/@2 dug"),
auto_description = { S("Mine: @2"), S("Mine: @1×@2") },
auto_description_total = { S("Mine @1 block."), S("Mine @1 blocks.") },
get_key = function(self, def)
return minetest.registered_aliases[def.trigger.node] or def.trigger.node
end,
key_is_item = true,
})
minetest.register_on_dignode(function(pos, node, player)
if not player_ok(player) or not pos or not node then
return
end
local node_name = node.name
node_name = minetest.registered_aliases[node_name] or node_name
awards.notify_dig(player, node_name)
end)
awards.register_trigger("place", {
type = "counted_key",
progress = S("@1/@2 placed"),
auto_description = { S("Place: @2"), S("Place: @1×@2") },
auto_description_total = { S("Place @1 block."), S("Place @1 blocks.") },
get_key = function(self, def)
return minetest.registered_aliases[def.trigger.node] or def.trigger.node
end,
key_is_item = true,
})
minetest.register_on_placenode(function(pos, node, player)
if not player_ok(player) or not pos or not node then
return
end
local node_name = node.name
node_name = minetest.registered_aliases[node_name] or node_name
awards.notify_place(player, node_name)
end)
awards.register_trigger("craft", {
type = "counted_key",
progress = S("@1/@2 crafted"),
auto_description = { S("Craft: @2"), S("Craft: @1×@2") },
auto_description_total = { S("Craft @1 item"), S("Craft @1 items.") },
get_key = function(self, def)
return minetest.registered_aliases[def.trigger.item] or def.trigger.item
end,
key_is_item = true,
})
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if not player_ok(player) or itemstack:is_empty() then
return
end
local itemname = itemstack:get_name()
itemname = minetest.registered_aliases[itemname] or itemname
awards.notify_craft(player, itemname, itemstack:get_count())
end)
awards.register_trigger("eat", {
type = "counted_key",
progress = S("@1/@2 eaten"),
auto_description = { S("Eat @2"), S("Eat @1×@2") },
auto_description_total = { S("Eat @1 item"), S("Eat @1 items.") },
get_key = function(self, def)
return minetest.registered_aliases[def.trigger.item] or def.trigger.item
end,
key_is_item = true,
})
minetest.register_on_item_eat(function(_, _, itemstack, player, _)
if not player_ok(player) or itemstack:is_empty() then
return
end
local itemname = itemstack:get_name()
itemname = minetest.registered_aliases[itemname] or itemname
awards.notify_eat(player, itemname)
end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More