mirror of
https://gitlab.com/rubenwardy/awards.git
synced 2024-09-27 11:20:17 +02:00
Compare commits
No commits in common. "master" and "v2.3.0" have entirely different histories.
|
@ -1,8 +0,0 @@
|
|||
image: abaez/luarocks
|
||||
|
||||
test:
|
||||
stage: test
|
||||
before_script:
|
||||
- luarocks install --local luacheck
|
||||
script:
|
||||
- $HOME/.luarocks/bin/luacheck .
|
14
.luacheckrc
14
.luacheckrc
|
@ -1,14 +0,0 @@
|
|||
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",
|
||||
}
|
515
LICENSE.txt
515
LICENSE.txt
|
@ -1,19 +1,502 @@
|
|||
Copyright (c) 2013-8 rubenwardy
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
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:
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
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.
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library 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 library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
|
330
README.md
330
README.md
|
@ -1,330 +0,0 @@
|
|||
# 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.remove(player_name, award_name)`
|
||||
* removes an award from 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,
|
||||
}
|
||||
```
|
469
api.lua
Normal file
469
api.lua
Normal file
|
@ -0,0 +1,469 @@
|
|||
-- 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.
|
||||
--
|
||||
|
||||
-- The global award namespace
|
||||
awards = {
|
||||
show_mode = "hud"
|
||||
}
|
||||
dofile(minetest.get_modpath("awards").."/api_helpers.lua")
|
||||
|
||||
-- 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
|
||||
|
||||
local S = function(s) return s end
|
||||
function awards.set_intllib(locale)
|
||||
S = locale
|
||||
end
|
||||
|
||||
function awards.init()
|
||||
awards.players = awards.load()
|
||||
awards.def = {}
|
||||
awards.trigger_types = {}
|
||||
awards.on = {}
|
||||
awards.on_unlock = {}
|
||||
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
|
||||
|
||||
function awards.register_trigger(name, func)
|
||||
awards.trigger_types[name] = func
|
||||
awards.on[name] = {}
|
||||
awards['register_on_'..name] = function(func)
|
||||
table.insert(awards.on[name], func)
|
||||
end
|
||||
end
|
||||
|
||||
function awards.run_trigger_callbacks(player, data, trigger, table_func)
|
||||
for i = 1, #awards.on[trigger] do
|
||||
local res = nil
|
||||
local entry = awards.on[trigger][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.increment_item_counter(data, field, itemname, count)
|
||||
local name_split = string.split(itemname, ":")
|
||||
if #name_split ~= 2 then
|
||||
return false
|
||||
end
|
||||
local mod = name_split[1]
|
||||
local item = name_split[2]
|
||||
|
||||
if data and field and mod and item then
|
||||
awards.assertPlayer(data)
|
||||
awards.tbv(data, field)
|
||||
awards.tbv(data[field], mod)
|
||||
awards.tbv(data[field][mod], item, 0)
|
||||
|
||||
data[field][mod][item] = data[field][mod][item] + (count or 1)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function awards.get_item_count(data, field, itemname)
|
||||
local name_split = string.split(itemname, ":")
|
||||
if #name_split ~= 2 then
|
||||
return false
|
||||
end
|
||||
local mod = name_split[1]
|
||||
local item = name_split[2]
|
||||
|
||||
if data and field and mod and item then
|
||||
awards.assertPlayer(data)
|
||||
awards.tbv(data, field)
|
||||
awards.tbv(data[field], mod)
|
||||
awards.tbv(data[field][mod], item, 0)
|
||||
return data[field][mod][item]
|
||||
end
|
||||
end
|
||||
|
||||
function awards.register_on_unlock(func)
|
||||
table.insert(awards.on_unlock, func)
|
||||
end
|
||||
|
||||
-- API Functions
|
||||
function awards._additional_triggers(name, def)
|
||||
-- Depreciated!
|
||||
end
|
||||
|
||||
function awards.register_achievement(name, def)
|
||||
def.name = name
|
||||
|
||||
-- Add Triggers
|
||||
if def.trigger and def.trigger.type then
|
||||
local func = awards.trigger_types[def.trigger.type]
|
||||
|
||||
if func then
|
||||
func(def)
|
||||
else
|
||||
awards._additional_triggers(name, def)
|
||||
end
|
||||
end
|
||||
|
||||
-- Add Award
|
||||
awards.def[name] = def
|
||||
end
|
||||
|
||||
function awards.enable(name)
|
||||
local data = awards.player(name)
|
||||
if data then
|
||||
data.disabled = nil
|
||||
end
|
||||
end
|
||||
|
||||
function awards.disable(name)
|
||||
local data = awards.player(name)
|
||||
if data then
|
||||
data.disabled = true
|
||||
end
|
||||
end
|
||||
|
||||
function awards.clear_player(name)
|
||||
awards.players[name] = nil
|
||||
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.unlock(name, award)
|
||||
-- name - the name of the player
|
||||
-- award - the name of the award to give
|
||||
function awards.unlock(name, award)
|
||||
-- Access Player Data
|
||||
local data = awards.players[name]
|
||||
local awdef = awards.def[award]
|
||||
|
||||
-- Perform checks
|
||||
if not data then
|
||||
return
|
||||
end
|
||||
if not awdef then
|
||||
return
|
||||
end
|
||||
if data.disabled then
|
||||
return
|
||||
end
|
||||
awards.tbv(data,"unlocked")
|
||||
|
||||
-- Don't give the achievement if it has already been given
|
||||
if data.unlocked[award] and data.unlocked[award] == award then
|
||||
return
|
||||
end
|
||||
|
||||
-- Unlock Award
|
||||
minetest.log("action", name.." has unlocked award "..name)
|
||||
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.background or "awards_bg_default.png"
|
||||
local icon = awdef.icon or "awards_unknown.png"
|
||||
local custom_announce = awdef.custom_announce
|
||||
if not custom_announce then
|
||||
if awdef.secret then
|
||||
custom_announce = S("Secret Achievement Unlocked:")
|
||||
else
|
||||
custom_announce = S("Achievement Unlocked:")
|
||||
end
|
||||
end
|
||||
|
||||
-- Do Notification
|
||||
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
|
||||
local chat_announce
|
||||
if awdef.secret == true then
|
||||
chat_announce = S("Secret Achievement Unlocked: %s")
|
||||
else
|
||||
chat_announce = S("Achievement 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 = 1, y = 1},
|
||||
text = background,
|
||||
position = {x = 0.5, y = 0},
|
||||
offset = {x = 0, y = 138},
|
||||
alignment = {x = 0, y = -1}
|
||||
})
|
||||
local hud_announce
|
||||
if awdef.secret == true then
|
||||
hud_announce = S("Secret Achievement Unlocked!")
|
||||
else
|
||||
hud_announce = S("Achievement 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},
|
||||
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
|
||||
end
|
||||
|
||||
-- Backwards compatibility
|
||||
awards.give_achievement = awards.unlock
|
||||
|
||||
--[[minetest.register_chatcommand("gawd", {
|
||||
params = "award name",
|
||||
description = "gawd: give award to self",
|
||||
func = function(name, param)
|
||||
awards.unlock(name,param)
|
||||
end
|
||||
})]]--
|
||||
|
||||
function awards.getFormspec(name, to, sid)
|
||||
local formspec = ""
|
||||
local listofawards = awards._order_awards(name)
|
||||
local playerdata = awards.players[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;awards_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
|
||||
formspec = formspec .. "label[1,2.75;" .. title .. status .. "]"
|
||||
if def and def.icon then
|
||||
formspec = formspec .. "image[1,0;3,3;" .. def.icon .. "]"
|
||||
end
|
||||
local barwidth = 4.6
|
||||
local perc = nil
|
||||
local label = nil
|
||||
if def.getProgress and playerdata then
|
||||
local res = def:getProgress(playerdata)
|
||||
perc = res.perc
|
||||
label = res.label
|
||||
end
|
||||
if perc then
|
||||
if perc > 1 then
|
||||
perc = 1
|
||||
end
|
||||
formspec = formspec .. "background[0,4.80;" .. barwidth ..",0.25;awards_progress_gray.png;false]"
|
||||
formspec = formspec .. "background[0,4.80;" .. (barwidth * perc) ..",0.25;awards_progress_green.png;false]"
|
||||
if label then
|
||||
formspec = formspec .. "label[1.75,4.63;" .. label .. "]"
|
||||
end
|
||||
end
|
||||
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 .. "#707070(Secret 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
|
||||
return formspec .. ";"..sid.."]"
|
||||
end
|
||||
|
||||
function awards.show_to(name, to, sid, text)
|
||||
if name == "" or name == nil then
|
||||
name = to
|
||||
end
|
||||
if name == to and awards.player(to).disabled then
|
||||
minetest.chat_send_player("You've disabled awards. Type /awards" ..
|
||||
" enable to reenable")
|
||||
return
|
||||
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
|
||||
-- Show formspec to user
|
||||
minetest.show_formspec(to,"awards:awards",
|
||||
"size[11,5]" .. awards.getFormspec(name, to, sid))
|
||||
end
|
||||
end
|
||||
awards.showto = awards.show_to
|
||||
|
||||
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)
|
||||
|
||||
awards.init()
|
||||
|
||||
minetest.register_on_newplayer(function(player)
|
||||
local playern = player:get_player_name()
|
||||
awards.assertPlayer(playern)
|
||||
end)
|
||||
|
||||
minetest.register_on_shutdown(function()
|
||||
awards.save()
|
||||
end)
|
57
api_helpers.lua
Normal file
57
api_helpers.lua
Normal file
|
@ -0,0 +1,57 @@
|
|||
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
|
||||
|
||||
function awards.player(name)
|
||||
return awards.players[name]
|
||||
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
|
75
chat_commands.lua
Normal file
75
chat_commands.lua
Normal file
|
@ -0,0 +1,75 @@
|
|||
-- 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.
|
||||
--
|
||||
|
||||
minetest.register_chatcommand("awards", {
|
||||
params = "",
|
||||
description = "awards: list awards",
|
||||
func = function(name, param)
|
||||
if param == "clear" then
|
||||
awards.clear_player(name)
|
||||
minetest.chat_send_player(name, "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, "You have disabled awards. (only affects you)")
|
||||
elseif param == "enable" then
|
||||
awards.enable(name)
|
||||
minetest.chat_send_player(name, "You have enabled awards. (only affects you)")
|
||||
elseif param == "c" then
|
||||
awards.show_to(name, name, nil, true)
|
||||
else
|
||||
awards.show_to(name, name, nil, false)
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("cawards", {
|
||||
params = "",
|
||||
description = "awards: list awards in chat",
|
||||
func = function(name, param)
|
||||
awards.show_to(name, name, nil, true)
|
||||
minetest.chat_send_player(name, "/cawards has been depreciated," ..
|
||||
" use /awards c instead")
|
||||
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("awpl", {
|
||||
privs = {
|
||||
server = true
|
||||
},
|
||||
description = "awpl: Get the statistics for the player given",
|
||||
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
|
||||
})
|
3
depends.txt
Normal file
3
depends.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
intllib?
|
||||
sfinv?
|
||||
unified_inventory?
|
1
description.txt
Normal file
1
description.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Adds achievements to Minetest, and an API to register new ones.
|
542
init.lua
542
init.lua
|
@ -1,50 +1,508 @@
|
|||
-- Copyright (c) 2013-18 rubenwardy. MIT.
|
||||
-- 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.
|
||||
--
|
||||
|
||||
-- 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")
|
||||
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
|
||||
end
|
||||
|
||||
awards.load()
|
||||
minetest.register_on_shutdown(awards.save)
|
||||
dofile(minetest.get_modpath("awards").."/api.lua")
|
||||
dofile(minetest.get_modpath("awards").."/chat_commands.lua")
|
||||
dofile(minetest.get_modpath("awards").."/sfinv.lua")
|
||||
dofile(minetest.get_modpath("awards").."/unified_inventory.lua")
|
||||
dofile(minetest.get_modpath("awards").."/triggers.lua")
|
||||
awards.set_intllib(S)
|
||||
|
||||
local function check_save()
|
||||
awards.save()
|
||||
minetest.after(18, check_save)
|
||||
-- Light it up
|
||||
awards.register_achievement("award_lightitup",{
|
||||
title = S("Light It Up"),
|
||||
description = S("Place 100 torches."),
|
||||
icon = "awards_novicebuilder.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
node = "default:torch",
|
||||
target = 100
|
||||
}
|
||||
})
|
||||
|
||||
-- Light ALL the things!
|
||||
awards.register_achievement("award_well_lit",{
|
||||
title = S("Well Lit"),
|
||||
description = S("Place 1,000 torches."),
|
||||
icon = "awards_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 = "awards_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 = "awards_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 = "awards_novicebuilder.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
node = "moreblocks:trap_stone",
|
||||
target = 2
|
||||
}
|
||||
})
|
||||
end
|
||||
minetest.after(8 * math.random() + 10, check_save)
|
||||
|
||||
|
||||
-- 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
|
||||
awards.register_achievement("awards_stonebrick", {
|
||||
title = S("Home Improvement"),
|
||||
description = S("Craft 200 stone bricks."),
|
||||
icon = "default_stone_brick.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "default:stonebrick",
|
||||
target = 200
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_desert_stonebrick", {
|
||||
title = S("Desert Dweller"),
|
||||
description = S("Craft 400 desert stone bricks."),
|
||||
icon = "default_desert_stone_brick.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "default:desert_stonebrick",
|
||||
target = 400
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_desertstonebrick", {
|
||||
title = S("Pharaoh"),
|
||||
description = S("Craft 100 sandstone bricks."),
|
||||
icon = "default_sandstone_brick.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "default:sandstonebrick",
|
||||
target = 100
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_bookshelf", {
|
||||
title = S("Little Library"),
|
||||
description = S("Craft 7 bookshelves."),
|
||||
icon = "default_bookshelf.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "default:bookshelf",
|
||||
target = 7
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_obsidian", {
|
||||
title = S("Lava and Water"),
|
||||
description = S("Mine your first obsidian."),
|
||||
icon = "default_obsidian.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:obsidian",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
-- Obsessed with Obsidian
|
||||
awards.register_achievement("award_obsessed_with_obsidian",{
|
||||
title = S("Obsessed with Obsidian"),
|
||||
description = S("Mine 50 obsidian."),
|
||||
icon = "awards_miniminer.png",
|
||||
background = "awards_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 = "awards_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("Mine your first mese ore."),
|
||||
icon = "default_stone.png^default_mineral_mese.png",
|
||||
background = "awards_bg_mining.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:stone_with_mese",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
-- Mese Block
|
||||
awards.register_achievement("award_meseblock", {
|
||||
secret = true,
|
||||
title = S("Mese Mastery"),
|
||||
description = S("Mine a mese block."),
|
||||
icon = "default_mese_block.png",
|
||||
background = "bg_mining.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default: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 = "awards_miniminer.png",
|
||||
background = "awards_bg_mining.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:stone_with_copper",
|
||||
target = 1000
|
||||
}
|
||||
})
|
||||
|
||||
-- Found a Nyan cat!
|
||||
awards.register_achievement("award_nyanfind", {
|
||||
secret = true,
|
||||
title = S("A Cat in a Pop-Tart?!"),
|
||||
description = S("Mine a nyan cat."),
|
||||
icon = "nyancat_front.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 = "awards_miniminer.png",
|
||||
background = "awards_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 = "awards_miniminer.png",
|
||||
background = "awards_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 = "awards_miniminer.png",
|
||||
background = "awards_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."),
|
||||
icon = "default_sand.png",
|
||||
background = "awards_bg_mining.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:sand",
|
||||
target = 1000
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_crafter_of_sticks", {
|
||||
title = S("Crafter of Sticks"),
|
||||
description = S("Craft 100 sticks."),
|
||||
icon = "default_stick.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "default:stick",
|
||||
target = 100
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_junglegrass", {
|
||||
title = S("Jungle Discoverer"),
|
||||
description = S("Mine your first jungle grass."),
|
||||
icon = "default_junglegrass.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:junglegrass",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_grass", {
|
||||
title = S("Grasslands Discoverer"),
|
||||
description = S("Mine some grass."),
|
||||
icon = "default_grass_3.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:grass_1",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_dry_grass", {
|
||||
title = S("Savannah Discoverer"),
|
||||
description = S("Mine some dry grass."),
|
||||
icon = "default_dry_grass_3.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:dry_grass_3",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_cactus", {
|
||||
title = S("Desert Discoverer"),
|
||||
description = S("Mine your first cactus."),
|
||||
icon = "default_cactus_side.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:cactus",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_dry_shrub", {
|
||||
title = S("Far Lands"),
|
||||
description = S("Mine your first dry shrub."),
|
||||
icon = "default_dry_shrub.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:dry_shrub",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_farmer", {
|
||||
title = S("Farmer"),
|
||||
description = S("Dig a fully grown wheat plant."),
|
||||
icon = "farming_wheat_8.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "farming:wheat_8",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_ice", {
|
||||
title = S("Glacier Discoverer"),
|
||||
description = S("Mine your first ice."),
|
||||
icon = "default_ice.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:ice",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_gold_ore", {
|
||||
title = S("First Gold Find"),
|
||||
description = S("Mine your first gold ore."),
|
||||
icon = "default_stone.png^default_mineral_gold.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:stone_with_gold",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_gold_rush", {
|
||||
title = S("Gold Rush"),
|
||||
description = S("Mine 45 gold ores."),
|
||||
icon = "default_stone.png^default_mineral_gold.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:stone_with_gold",
|
||||
target = 45
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_diamond_ore", {
|
||||
title = S("Wow, I am Diamonds!"),
|
||||
description = S("Mine your first diamond ore."),
|
||||
icon = "default_stone.png^default_mineral_diamond.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:stone_with_diamond",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_diamond_rush", {
|
||||
title = S("Girl's Best Friend"),
|
||||
description = S("Mine 18 diamond ores."),
|
||||
icon = "default_stone.png^default_mineral_diamond.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:stone_with_diamond",
|
||||
target = 18
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_diamondblock", {
|
||||
title = S("Hardest Block on Earth"),
|
||||
description = S("Craft a diamond block."),
|
||||
icon = "default_diamond_block.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "default:diamondblock",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
||||
awards.register_achievement("awards_mossycobble", {
|
||||
title = S("In the Dungeon"),
|
||||
description = S("Mine a mossy cobblestone."),
|
||||
icon = "default_mossycobble.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:mossycobble",
|
||||
target = 1
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,259 +0,0 @@
|
|||
# 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!
|
||||
You’re 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 ###
|
||||
%s’s 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
|
|
@ -1,259 +0,0 @@
|
|||
# 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!=
|
||||
You’re 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 ###
|
||||
%s’s 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
|
|
@ -1,260 +0,0 @@
|
|||
# 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
|
||||
You’re 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 ###
|
||||
%s’s 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
|
|
@ -1,259 +0,0 @@
|
|||
# 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!
|
||||
You’re 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 ###
|
||||
%s’s 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
|
|
@ -1,259 +0,0 @@
|
|||
# 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!=
|
||||
You’re 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 ###
|
||||
%s’s 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
|
|
@ -1,259 +0,0 @@
|
|||
# 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!=
|
||||
You’re 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 ###
|
||||
%s’s 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
|
|
@ -1,236 +0,0 @@
|
|||
# textdomain: awards
|
||||
|
||||
### api_awards.lua ###
|
||||
Award Unlocked!=Достижение разблокировано!
|
||||
Award Unlocked: %s=Достижение разблокировано: %s
|
||||
Secret Award Unlocked!=Секретное достижение разблокировано!
|
||||
Secret Award Unlocked: %s=Секретное достижение разблокировано: %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=Castorama
|
||||
Craft 10 furnaces.=Создать 10 печей.
|
||||
Craft 10 mese lamps.=Создать 10 мезовых ламп.
|
||||
Craft 100 obsidian bricks.=Создать 100 обсидиановых кирпичей.
|
||||
Craft 100 sandstone bricks.=Создать 100 песчаниковых кирпичей.
|
||||
Craft 100 sticks.=Создать 100 палок.
|
||||
Craft 100 white dyes.=Создать 100 белых красителей.
|
||||
Craft 14 vessels shelves.=Создать 14 полок с сосудами.
|
||||
Craft 15 chests.=Создать 15 сундуков.
|
||||
Craft 15 fancy beds.=Создать 15 красивых кроватей.
|
||||
Craft 200 brick blocks.=Создать 200 блоков кирпичей.
|
||||
Craft 200 stone bricks.=Создать 200 каменных кирпичей.
|
||||
Craft 24 gold block stairs.=Создать 24 ступеньки из золотых блоков.
|
||||
Craft 250 white wool.=Создать 250 белой шерсти.
|
||||
Craft 3,200 stone bricks.=Создать 3,200 каменных кирпичей.
|
||||
Craft 30 locked chests.=Создать 30 запертых сундуков.
|
||||
Craft 4 large bags.=Создать 4 больших сумки.
|
||||
Craft 400 blue dyes.=Создать 400 синих красителей.
|
||||
Craft 400 desert stone bricks.=Создать 400 песчаниковых кирпичей.
|
||||
Craft 400 red dyes.=Создать 400 красных красителей.
|
||||
Craft 400 yellow dyes.=Создать 400 жёлтых красителей.
|
||||
Craft 500 times oil extract.=Создать масляный экстракт 500 раз.
|
||||
Craft 7 bookshelves.=Создать 7 книжных полок.
|
||||
Craft 8 times flint and steel.=Создать огниво 8 раз.
|
||||
Craft 800 stone bricks.=Создать 800 каменных кирпичей.
|
||||
Craft a diamond block.=Создать алмазный блок.
|
||||
Crafter of Sticks=Создатель Палочек
|
||||
Dandelions are Yellow=Одуванчики - жёлтые
|
||||
Death in the Deeps=Смерть в глубинах
|
||||
Desert Discoverer=Первооткрыватель пустыни
|
||||
Desert Dweller=Обитатель пустыни
|
||||
Die 100 times.=Умереть 100 раз.
|
||||
Die above 10000=Умереть выше 10000
|
||||
Die below -10000=Умереть ниже -10000
|
||||
Die in flowing lava.=Умереть в разлитой лаве.
|
||||
Die near bones.=Умереть около костей.
|
||||
Die near diamond ore.=Умереть около алмазной руды.
|
||||
Dig 1,000 copper ores.=Добыть 1,000 медной руды.
|
||||
Dig 1,000 jungle tree blocks.=Добыть 1,000 блоков тропического дерева.
|
||||
Dig 1,000 sand.=Добыть 1,000 блоков песка.
|
||||
Dig 1,000 stone blocks.=Добыть 1,000 блоков камня.
|
||||
Dig 1,296 tree blocks.=Добыть 1,296 блоков дерева.
|
||||
Dig 10,000 stone blocks.=Добыть 10,000 блоков камня.
|
||||
Dig 100 jungle tree blocks.=Добыть 100 блоков тропического дерева.
|
||||
Dig 100 stone blocks.=Добыть 100 блоков камня.
|
||||
Dig 216 tree blocks.=Добыть 216 блоков дерева.
|
||||
Dig 36 tree blocks.=Добыть 36 блоков дерева.
|
||||
Dig 6 tree blocks.=Добыть 6 блоков дерева.
|
||||
Eat 10 loaves of bread.=Съесть 10 буханок хлеба.
|
||||
Eat 3 brown mushrooms.=Съесть 3 коричневых гриба.
|
||||
Eat 33 brown mushrooms.=Съесть 33 коричневых гриба.
|
||||
Eat 333 brown mushrooms.=Съесть 333 коричневых гриба.
|
||||
Eat 80 apples.=Съесть 80 яблок.
|
||||
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.=Соберите 125 полностью выросших растений.
|
||||
Harvest 25 fully grown wheat plants.=Соберите 25 полностью выросших растений.
|
||||
Harvest 625 fully grown wheat plants.=Соберите 625 полностью выросших растений.
|
||||
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.=Добыть 18 алмазной руды.
|
||||
Mine 45 gold ores.=Добыть 45 золотой руды.
|
||||
Mine 50 obsidian.=Добыть 50 обсидиана.
|
||||
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.=Поставить 1,000 факелов.
|
||||
Place 100 rails.=Поставить 100 рельс.
|
||||
Place 100 stone.=Поставить 100 камней.
|
||||
Place 100 torches.=Поставить 100 факелов.
|
||||
Place 10000 tubes.=Установить 10000 труб.
|
||||
Place 2 trap stones.=Установить 2 камня-ловушки.
|
||||
Place 20 coal checkers.=Поставить 20 мозаик из угля.
|
||||
Place 20 iron checkers.=Поставить 20 мозаик из железа.
|
||||
Place 40 steel ladders.=Установить 40 стальных лестниц.
|
||||
Place 400 wooden ladders.=Установить 400 деревянных лестниц.
|
||||
Place 5 autocrafters.=Установить 5 авто-крафтеров.
|
||||
Place 500 mesecon wires.=Установить 500 мезовых проводов.
|
||||
Place two snow blocks.=Поставить два снежных блока.
|
||||
Professional Lumberjack=Профессиональный лесоруб
|
||||
Put out 1000 fires.=Потушить 1000 блоков огня.
|
||||
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!=Сжечь ведьму!
|
||||
You’re a copper=Вы коппер
|
||||
Yummy!=М-м-м!
|
||||
|
||||
### chat_commands.lua ###
|
||||
<award ID>=<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]=[c|clear|disable|enable]
|
||||
|
||||
### gui.lua ###
|
||||
%s’s awards:=Достижения %s:
|
||||
(Secret Award)=(Секретное достижение)
|
||||
@1 (unlocked)=@1 (разблокировано)
|
||||
Awards=Достижения
|
||||
Error: No achivements available.=Ошибка: достижения недоступны.
|
||||
Error: No award available.=Ошибка: достижения недоступны.
|
||||
OK=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.=Вы отключили достижения. Введите /awards, чтобы включить обратно.
|
||||
|
||||
### triggers.lua ###
|
||||
@1/@2 chat messages=@1/@2 сообщений в чате
|
||||
@1/@2 crafted=@1/@2 создано
|
||||
@1/@2 deaths=@1/@2 смертей
|
||||
@1/@2 dug=@1/@2 добыто
|
||||
@1/@2 eaten=@1/@2 съедено
|
||||
@1/@2 joins=@1/@2 присоединений
|
||||
@1/@2 placed=@1/@2 установлено
|
||||
Chat @1 times=Отправить сообщений в чат @1 раз
|
||||
Craft @1 item=Создать @1 предмет
|
||||
Craft @1 items.=Создать @1 предметов.
|
||||
Craft: @1×@2=Создать: @1×@2
|
||||
Craft: @2=Создать: @2
|
||||
Die @1 times of @2=Умереть @1 из @2 раз
|
||||
Die @1 times.=Умереть @1 раз.
|
||||
Die once of @2=Умереть один раз из @2
|
||||
Eat @1 item=Съесть @1
|
||||
Eat @1 items.=Съесть @1 предметов.
|
||||
Eat @1×@2=Съесть @1×@2
|
||||
Eat @2=Съесть @2
|
||||
Join @1 times=Присоединится @1 раз
|
||||
Join once=Присоединится один раз
|
||||
Mine @1 block.=Добыть @1 блок.
|
||||
Mine @1 blocks.=Добыть @1 блоков.
|
||||
Mine @1 times=Добыть @1 раз
|
||||
Mine: @1×@2=Добыть: @1×@2
|
||||
Mine: @2=Добыть: @2
|
||||
Place @1 block.=Установить @1 блок.
|
||||
Place @1 blocks.=Установить @1 блоков.
|
||||
Place: @1×@2=Установить: @1×@2
|
||||
Place: @2=Установить: @2
|
||||
Send a chat message=Отправить сообщение в чат
|
|
@ -1,236 +1,67 @@
|
|||
# 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!=
|
||||
You’re 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 ###
|
||||
%s’s 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=
|
||||
Achievement Unlocked: =
|
||||
Secret Achievement Unlocked: =
|
||||
Achievement Unlocked: %s =
|
||||
Secret Achievement Unlocked: %s =
|
||||
Achievement Unlocked! =
|
||||
Secret Achievement Unlocked! =
|
||||
Light It Up =
|
||||
Place 100 torches. =
|
||||
Light ALL The Things! =
|
||||
Place 1,000 torches. =
|
||||
Saint-Maclou =
|
||||
Place 20 coal checkers. =
|
||||
Castorama =
|
||||
Place 20 iron checkers. =
|
||||
Sam the Trapper =
|
||||
Place 2 trap stones. =
|
||||
Obsessed with Obsidian =
|
||||
Mine 50 obsidian. =
|
||||
On The Way =
|
||||
Place 100 rails. =
|
||||
Lumberjack =
|
||||
Dig 100 tree blocks. =
|
||||
Semi-pro Lumberjack =
|
||||
Dig 1,000 tree blocks. =
|
||||
Professional Lumberjack =
|
||||
Dig 10,000 tree blocks. =
|
||||
L33T Lumberjack =
|
||||
Dig 100,000 tree blocks. =
|
||||
Junglebaby =
|
||||
Dig 100 jungle tree blocks. =
|
||||
Jungleman =
|
||||
Dig 1,000 jungle tree blocks. =
|
||||
First Mese Find =
|
||||
Find some Mese. =
|
||||
You're a copper =
|
||||
Dig 1,000 copper ores. =
|
||||
OMG, Nyan Cat! =
|
||||
Find a nyan cat. =
|
||||
Mini Miner =
|
||||
Dig 100 stone blocks. =
|
||||
Hardened Miner =
|
||||
Dig 1,000 stone blocks =
|
||||
Master Miner =
|
||||
Dig 10,000 stone blocks. =
|
||||
Marchand De Sable =
|
||||
Dig 1,000 sand. =
|
||||
Frequent Visitor =
|
||||
Connect to the server 50 times. =
|
||||
Dying Spree =
|
||||
Die 5 times. =
|
||||
Bot-like =
|
||||
Die 10 times. =
|
||||
You Suck! =
|
||||
Die 100 times. =
|
||||
You're a witch! =
|
||||
Burn to death in a fire. =
|
||||
In the Flow =
|
||||
Die in flowing lava. =
|
||||
This is Sad =
|
||||
Die near diamond ore. =
|
||||
The Stack =
|
||||
Die near bones. =
|
||||
Deep Down =
|
||||
Die below -10000 =
|
||||
In space, no one can hear you scream =
|
||||
Die above 10000 =
|
||||
Awards =
|
||||
|
|
9
mod.conf
9
mod.conf
|
@ -1,8 +1,7 @@
|
|||
name = awards
|
||||
title = Awards
|
||||
title = Achievements
|
||||
author = rubenwardy
|
||||
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
|
||||
description = Adds achievements to Minetest, and an API to register new ones.
|
||||
license = LGPL 2.1 or later
|
||||
forum = https://forum.minetest.net/viewtopic.php?t=4870
|
||||
version = 3.0.0
|
||||
version = 2.3.0
|
||||
|
|
138
readme.md
Normal file
138
readme.md
Normal file
|
@ -0,0 +1,138 @@
|
|||
# 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.
|
||||
|
||||
|
||||
# Basic API
|
||||
|
||||
* awards.register_achievement(name, def)
|
||||
* name
|
||||
* desciption
|
||||
* sound [optional]
|
||||
* image [optional] - texture name, eg: award_one.png
|
||||
* background [optional] - texture name, eg: award_one.png
|
||||
* 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
|
||||
* See Triggers
|
||||
* secret [optional] - if true, then player needs to unlock to find out what it is.
|
||||
* on_unlock [optional] - func(name, def)
|
||||
* name is player name
|
||||
* return true to cancel register_on_unlock callbacks and HUD
|
||||
* awards.register_trigger(name, func(awardname, def))
|
||||
* Note: awards.on[name] is automatically created for triggers
|
||||
* awards.run_trigger_callbacks(player, data, trigger, table_func(entry))
|
||||
* Goes through and checks all triggers registered to a trigger type,
|
||||
unlocking the award if conditions are met.
|
||||
* data is the player's award data, ie: awards.players[player_name]
|
||||
* trigger is the name of the trigger type. Ie: awards.on[trigger]
|
||||
* table_func is called if the trigger is a table - simply return an
|
||||
award name to unlock it
|
||||
* See triggers.lua for examples
|
||||
* awards.increment_item_counter(data, field, itemname)
|
||||
* add to an item's statistic count
|
||||
* for example, (data, "place", "default:stone") will add 1 to the number of
|
||||
times default:stone has been placed.
|
||||
* data is the player's award data, ie: awards.players[player_name]
|
||||
* returns true on success, false on failure (eg: cannot get modname and item from itemname)
|
||||
* awards.register_on_unlock(func(name, def))
|
||||
* name is the player name
|
||||
* def is the award def.
|
||||
* return true to cancel HUD
|
||||
* awards.unlock(name, award)
|
||||
* gives an award to a player
|
||||
* name is the player name
|
||||
|
||||
# Included in the Mod
|
||||
|
||||
The API, above, allows you to register awards
|
||||
and triggers (things that look for events and unlock awards, they need
|
||||
to be registered in order to get details from award_def.trigger).
|
||||
|
||||
However, all awards and triggers are separate from the API.
|
||||
They can be found in init.lua and triggers.lua
|
||||
|
||||
## Triggers
|
||||
|
||||
Callbacks (register a function to be run)
|
||||
|
||||
### dig
|
||||
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "default:dirt",
|
||||
target = 50
|
||||
}
|
||||
|
||||
### place
|
||||
|
||||
trigger = {
|
||||
type = "place",
|
||||
node = "default:dirt",
|
||||
target = 50
|
||||
}
|
||||
|
||||
### death
|
||||
|
||||
trigger = {
|
||||
type = "death",
|
||||
target = 5
|
||||
}
|
||||
|
||||
### chat
|
||||
|
||||
trigger = {
|
||||
type = "chat",
|
||||
target = 100
|
||||
}
|
||||
|
||||
### join
|
||||
|
||||
trigger = {
|
||||
type = "join",
|
||||
target = 100
|
||||
}
|
||||
|
||||
## Callbacks relating to triggers
|
||||
|
||||
* awards.register_on_dig(func(player, data))
|
||||
* data is player data (see below)
|
||||
* return award name or null
|
||||
* awards.register_on_place(func(player, data))
|
||||
* data is player data (see below)
|
||||
* return award name or null
|
||||
* awards.register_on_death(func(player, data))
|
||||
* data is player data (see below)
|
||||
* return award name or null
|
||||
* awards.register_on_chat(func(player, data))
|
||||
* data is player data (see below)
|
||||
* return award name or null
|
||||
* awards.register_on_join(func(player, data)
|
||||
* data is player data (see below)
|
||||
* 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
|
|
@ -1,2 +0,0 @@
|
|||
# Add default achievements from the awards mod
|
||||
awards.add_defaults (Add Default Achievements) bool true
|
23
sfinv.lua
Normal file
23
sfinv.lua
Normal file
|
@ -0,0 +1,23 @@
|
|||
if minetest.get_modpath("sfinv") then
|
||||
sfinv.register_page("awards:awards", {
|
||||
title = "Awards",
|
||||
on_enter = function(self, player, context)
|
||||
context.awards_idx = 1
|
||||
end,
|
||||
get = function(self, player, context)
|
||||
local name = player:get_player_name()
|
||||
return sfinv.make_formspec(player, context,
|
||||
awards.getFormspec(name, name, context.awards_idx or 1),
|
||||
false, "size[11,5]")
|
||||
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, context)
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
Binary file not shown.
|
@ -1,267 +0,0 @@
|
|||
-- 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.remove(name, award)
|
||||
local data = awards.player(name)
|
||||
local awdef = awards.registered_awards[award]
|
||||
assert(awdef, "Unable to remove an award which doesn't exist!")
|
||||
|
||||
if data.disabled or
|
||||
(not data.unlocked[award]) then
|
||||
return
|
||||
end
|
||||
|
||||
minetest.log("action", "Award " .. award .." has been removed from ".. name)
|
||||
data.unlocked[award] = nil
|
||||
awards.save()
|
||||
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
|
|
@ -1,222 +0,0 @@
|
|||
-- 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
1112
src/awards.lua
File diff suppressed because it is too large
Load Diff
|
@ -1,61 +0,0 @@
|
|||
-- 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
112
src/data.lua
|
@ -1,112 +0,0 @@
|
|||
|
||||
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
223
src/gui.lua
|
@ -1,223 +0,0 @@
|
|||
-- 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("%s’s 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
151
src/triggers.lua
|
@ -1,151 +0,0 @@
|
|||
-- 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.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user