0.0.1
This commit is contained in:
674
resources/[esx_addons]/esx_accessories/LICENSE
Normal file
674
resources/[esx_addons]/esx_accessories/LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, 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
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If 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 convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_accessories
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_accessories Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
22
resources/[esx_addons]/esx_accessories/README.md
Normal file
22
resources/[esx_addons]/esx_accessories/README.md
Normal file
@@ -0,0 +1,22 @@
|
||||
<h1 align='center'>[ESX] Accessories</a></h1><p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://documentation.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
Shops with accessories (hat/helmet, glasses, masks, ears accessories). You can put on or take off the accessories with a menu. Accessories saved in database.
|
||||
|
||||
> Note: Works only with accessories purchased in the special areas of the clothing store, not via the esx_clotheshop script.
|
||||
|
||||
## Requirements
|
||||
|
||||
- [esx_skin](https://github.com/esx-framework/esx-core/tree/main/%5Bcore%5D/esx_skin)
|
||||
- [esx_datastore](https://github.com/esx-framework/esx_datastore)
|
||||
|
||||
## Legal
|
||||
|
||||
esx_accessories - accessories 4 you!
|
||||
|
||||
Copyright (C) 2015-2025 ESX-Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 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 General Public License For more details.
|
||||
|
||||
You should have received a copy Of the GNU General Public License along with this program. If Not, see <http://www.gnu.org/licenses/>.
|
||||
232
resources/[esx_addons]/esx_accessories/client/main.lua
Normal file
232
resources/[esx_addons]/esx_accessories/client/main.lua
Normal file
@@ -0,0 +1,232 @@
|
||||
local HasAlreadyEnteredMarker = false
|
||||
local LastZone, CurrentAction, CurrentActionMsg
|
||||
local CurrentActionData = {}
|
||||
|
||||
function OpenAccessoryMenu()
|
||||
local elements = {
|
||||
{unselectable = true, icon = "fas fa-user", title = TranslateCap('set_unset')},
|
||||
{icon = "fas fa-hat-cowboy", title = TranslateCap("helmet"), value = "Helmet"},
|
||||
{icon = "fas fa-deaf", title = TranslateCap("ears"), value = "Ears"},
|
||||
{icon = "fas fa-mask", title = TranslateCap("mask"), value = "Mask"},
|
||||
{icon = "fas fa-glasses", title = TranslateCap("glasses"), value = "Glasses"}
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements, function(menu,element)
|
||||
SetUnsetAccessory(element.value)
|
||||
end)
|
||||
end
|
||||
|
||||
function SetUnsetAccessory(accessory)
|
||||
ESX.TriggerServerCallback('esx_accessories:get', function(hasAccessory, accessorySkin)
|
||||
local _accessory = string.lower(accessory)
|
||||
|
||||
if hasAccessory then
|
||||
TriggerEvent('skinchanger:getSkin', function(skin)
|
||||
local mAccessory = -1
|
||||
local mColor = 0
|
||||
|
||||
if _accessory == "mask" then
|
||||
mAccessory = 0
|
||||
end
|
||||
|
||||
if skin[_accessory .. '_1'] == mAccessory then
|
||||
mAccessory = accessorySkin[_accessory .. '_1']
|
||||
mColor = accessorySkin[_accessory .. '_2']
|
||||
end
|
||||
|
||||
local accessorySkin = {}
|
||||
accessorySkin[_accessory .. '_1'] = mAccessory
|
||||
accessorySkin[_accessory .. '_2'] = mColor
|
||||
TriggerEvent('skinchanger:loadClothes', skin, accessorySkin)
|
||||
end)
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('no_' .. _accessory))
|
||||
end
|
||||
end, accessory)
|
||||
end
|
||||
|
||||
function OpenShopMenu(accessory)
|
||||
local _accessory = string.lower(accessory)
|
||||
local restrict = {}
|
||||
|
||||
restrict = { _accessory .. '_1', _accessory .. '_2' }
|
||||
|
||||
TriggerEvent('esx_skin:openRestrictedMenu', function(data, menu)
|
||||
|
||||
menu.close()
|
||||
local elements = {
|
||||
{unselectable = true, icon = "fas fa-check-double", title = TranslateCap('valid_purchase')},
|
||||
{icon = "fas fa-check-circle", title = TranslateCap("yes", ESX.Math.GroupDigits(Config.Price)), value = "yes"},
|
||||
{icon = "fas fa-window-close", title = TranslateCap("no"), value = "no"}
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements, function(menu,element)
|
||||
if element.value == "yes" then
|
||||
ESX.TriggerServerCallback('esx_accessories:checkMoney', function(hasEnoughMoney)
|
||||
if hasEnoughMoney then
|
||||
ESX.CloseContext()
|
||||
TriggerServerEvent('esx_accessories:pay')
|
||||
TriggerEvent('skinchanger:getSkin', function(skin)
|
||||
TriggerServerEvent('esx_accessories:save', skin, accessory)
|
||||
end)
|
||||
else
|
||||
ESX.CloseContext()
|
||||
local player = PlayerPedId()
|
||||
TriggerEvent('esx_skin:getLastSkin', function(skin)
|
||||
TriggerEvent('skinchanger:loadSkin', skin)
|
||||
end)
|
||||
if accessory == "Ears" then
|
||||
ClearPedProp(player, 2)
|
||||
elseif accessory == "Mask" then
|
||||
SetPedComponentVariation(player, 1, 0 ,0, 2)
|
||||
elseif accessory == "Helmet" then
|
||||
ClearPedProp(player, 0)
|
||||
elseif accessory == "Glasses" then
|
||||
SetPedPropIndex(player, 1, -1, 0, 0)
|
||||
end
|
||||
ESX.ShowNotification(TranslateCap('not_enough_money'))
|
||||
end
|
||||
end)
|
||||
elseif element.value == "no" then
|
||||
local player = PlayerPedId()
|
||||
TriggerEvent('esx_skin:getLastSkin', function(skin)
|
||||
TriggerEvent('skinchanger:loadSkin', skin)
|
||||
end)
|
||||
if accessory == "Ears" then
|
||||
ClearPedProp(player, 2)
|
||||
elseif accessory == "Mask" then
|
||||
SetPedComponentVariation(player, 1, 0 ,0, 2)
|
||||
elseif accessory == "Helmet" then
|
||||
ClearPedProp(player, 0)
|
||||
elseif accessory == "Glasses" then
|
||||
SetPedPropIndex(player, 1, -1, 0, 0)
|
||||
end
|
||||
|
||||
ESX.CloseContext()
|
||||
end
|
||||
CurrentAction = 'shop_menu'
|
||||
CurrentActionMsg = TranslateCap('press_access')
|
||||
CurrentActionData = {}
|
||||
end, function(menu)
|
||||
CurrentAction = 'shop_menu'
|
||||
CurrentActionMsg = TranslateCap('press_access')
|
||||
CurrentActionData = {}
|
||||
end)
|
||||
end, function(data, menu)
|
||||
menu.close()
|
||||
CurrentAction = 'shop_menu'
|
||||
CurrentActionMsg = TranslateCap('press_access')
|
||||
CurrentActionData = {}
|
||||
end, restrict)
|
||||
end
|
||||
|
||||
AddEventHandler('esx_accessories:hasEnteredMarker', function(zone)
|
||||
CurrentAction = 'shop_menu'
|
||||
CurrentActionMsg = TranslateCap('press_access')
|
||||
CurrentActionData = { accessory = zone }
|
||||
end)
|
||||
|
||||
AddEventHandler('esx_accessories:hasExitedMarker', function(zone)
|
||||
ESX.CloseContext()
|
||||
CurrentAction = nil
|
||||
end)
|
||||
|
||||
-- Create Blips --
|
||||
CreateThread(function()
|
||||
for k,v in pairs(Config.ShopsBlips) do
|
||||
if v.Pos then
|
||||
for i=1, #v.Pos, 1 do
|
||||
local blip = AddBlipForCoord(v.Pos[i])
|
||||
|
||||
SetBlipSprite (blip, v.Blip.sprite)
|
||||
SetBlipDisplay(blip, 4)
|
||||
SetBlipScale (blip, 1.0)
|
||||
SetBlipColour (blip, v.Blip.color)
|
||||
SetBlipAsShortRange(blip, true)
|
||||
|
||||
BeginTextCommandSetBlipName("STRING")
|
||||
AddTextComponentSubstringPlayerName(TranslateCap('shop', TranslateCap(string.lower(k))))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
local nearMarker = false
|
||||
-- Display markers
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local sleep = 1500
|
||||
local coords = GetEntityCoords(PlayerPedId())
|
||||
for k,v in pairs(Config.Zones) do
|
||||
for i = 1, #v.Pos, 1 do
|
||||
if(Config.Type ~= -1 and #(coords - v.Pos[i]) < Config.DrawDistance) then
|
||||
DrawMarker(Config.Type, v.Pos[i], 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.Size.x, Config.Size.y, Config.Size.z, Config.Color.r, Config.Color.g, Config.Color.b, 255, true, false, 2, true, false, false, false)
|
||||
sleep = 0
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if sleep == 0 then nearMarker = true else nearMarker = false end
|
||||
Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local sleep = 1500
|
||||
if nearMarker then
|
||||
sleep = 0
|
||||
local coords = GetEntityCoords(PlayerPedId())
|
||||
local isInMarker = false
|
||||
local currentZone = nil
|
||||
for k,v in pairs(Config.Zones) do
|
||||
for i = 1, #v.Pos, 1 do
|
||||
if #(coords - v.Pos[i]) < Config.Size.x then
|
||||
isInMarker = true
|
||||
currentZone = k
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if (isInMarker and not HasAlreadyEnteredMarker) or (isInMarker and LastZone ~= currentZone) then
|
||||
HasAlreadyEnteredMarker = true
|
||||
LastZone = currentZone
|
||||
TriggerEvent('esx_accessories:hasEnteredMarker', currentZone)
|
||||
end
|
||||
|
||||
if not isInMarker and HasAlreadyEnteredMarker then
|
||||
HasAlreadyEnteredMarker = false
|
||||
TriggerEvent('esx_accessories:hasExitedMarker', LastZone)
|
||||
end
|
||||
end
|
||||
Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Key controls
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local Sleep = 1500
|
||||
|
||||
if CurrentAction then
|
||||
Sleep = 0
|
||||
ESX.ShowHelpNotification(CurrentActionMsg)
|
||||
|
||||
if IsControlJustReleased(0, 38) and CurrentActionData.accessory then
|
||||
OpenShopMenu(CurrentActionData.accessory)
|
||||
CurrentAction = nil
|
||||
end
|
||||
end
|
||||
Wait(Sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
if Config.EnableControls then
|
||||
ESX.RegisterInput('accessory', TranslateCap('keymap'), 'keyboard', 'j', function()
|
||||
if not ESX.PlayerData.dead then
|
||||
OpenAccessoryMenu()
|
||||
end
|
||||
end)
|
||||
end
|
||||
97
resources/[esx_addons]/esx_accessories/config.lua
Normal file
97
resources/[esx_addons]/esx_accessories/config.lua
Normal file
@@ -0,0 +1,97 @@
|
||||
Config = {}
|
||||
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
|
||||
Config.Price = 100
|
||||
|
||||
Config.EnableControls = true
|
||||
|
||||
Config.DrawDistance = 10
|
||||
Config.Size = {x = 1.5, y = 1.5, z = 1.0}
|
||||
Config.Color = {r = 50, g = 200, b = 50}
|
||||
Config.Type = 1
|
||||
|
||||
-- Fill this if you want to see the blips,
|
||||
-- If you have esx_clothesshop you should not fill this
|
||||
-- more than it's already filled.
|
||||
Config.ShopsBlips = {
|
||||
-- Ears = {
|
||||
-- Pos = nil,
|
||||
-- Blip = nil
|
||||
-- },
|
||||
Mask = {
|
||||
Pos = {
|
||||
vector3(-1338.1, -1278.2, 3.8),
|
||||
},
|
||||
Blip = {sprite = 362, color = 2}
|
||||
},
|
||||
-- Helmet = {
|
||||
-- Pos = nil,
|
||||
-- Blip = nil
|
||||
-- },
|
||||
-- Glasses = {
|
||||
-- Pos = nil,
|
||||
-- Blip = nil
|
||||
-- }
|
||||
}
|
||||
|
||||
Config.Zones = {
|
||||
Ears = {
|
||||
Pos = {
|
||||
vector3(80.3, -1389.4, 28.4),
|
||||
vector3(-163.0, -302.0, 38.8),
|
||||
vector3(-163.0,-302.0, 38.8),
|
||||
vector3(420.7, -809.6, 28.6),
|
||||
vector3(-817.0, -1075.9, 10.4),
|
||||
vector3(-1451.3, -238.2, 48.9),
|
||||
vector3(-0.7, 6513.6, 30.9),
|
||||
vector3(123.4, -208.0, 53.6),
|
||||
vector3(1687.3, 4827.6, 41.1),
|
||||
vector3(622.8, 2749.2, 41.2),
|
||||
vector3(1200.0, 2705.4, 37.3),
|
||||
vector3(-1199.9, -782.5, 16.4),
|
||||
vector3(-3171.8, 1059.6, 19.9),
|
||||
vector3(-1095.6, 2709.2, 18.2),
|
||||
}},
|
||||
|
||||
Mask = {
|
||||
Pos = {
|
||||
vector3(-1338.1, -1278.2, 3.8),
|
||||
}},
|
||||
|
||||
Helmet = {
|
||||
Pos = {
|
||||
vector3(81.5, -1400.6, 28.4),
|
||||
vector3(-705.8, -159.0, 36.5),
|
||||
vector3(-161.3, -295.7, 38.8),
|
||||
vector3(419.3, -800.6, 28.6),
|
||||
vector3(-824.3, -1081.7, 10.4),
|
||||
vector3(-1454.8, -242.9, 48.9),
|
||||
vector3(4.7, 6520.9, 30.9),
|
||||
vector3(121.0, -223.2, 53.3),
|
||||
vector3(1689.6, 4818.8, 41.1),
|
||||
vector3(613.9, 2749.9, 41.2),
|
||||
vector3(1189.5, 2703.9, 37.3),
|
||||
vector3(-1204.0, -774.4, 16.4),
|
||||
vector3(-3164.2, 1054.7, 19.9),
|
||||
vector3(-1103.1, 2700.5, 18.2),
|
||||
}},
|
||||
|
||||
Glasses = {
|
||||
Pos = {
|
||||
vector3(75.2, -1391.1, 28.4),
|
||||
vector3(-713.1, -160.1, 36.5),
|
||||
vector3(-156.1, -300.5, 38.8),
|
||||
vector3(425.4, -807.8, 28.6),
|
||||
vector3(-820.8, -1072.9, 10.4),
|
||||
vector3(-1458.0, -236.7, 48.9),
|
||||
vector3(3.5, 6511.5, 30.9),
|
||||
vector3(131.3, -212.3, 53.6),
|
||||
vector3(1694.9, 4820.8, 41.1),
|
||||
vector3(613.9, 2768.8, 41.2),
|
||||
vector3(1198.6, 2711.0, 37.3),
|
||||
vector3(-1188.2, -764.5, 16.4),
|
||||
vector3(-3173.1, 1038.2, 19.9),
|
||||
vector3(-1100.4, 2712.4, 18.2),
|
||||
}}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Ears', 0),
|
||||
('user_glasses', 'Glasses', 0),
|
||||
('user_helmet', 'Helmet', 0),
|
||||
('user_mask', 'Mask', 0)
|
||||
;
|
||||
30
resources/[esx_addons]/esx_accessories/fxmanifest.lua
Normal file
30
resources/[esx_addons]/esx_accessories/fxmanifest.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
|
||||
description 'Provides a way for players to customise their appearence with accessories)'
|
||||
lua54 'yes'
|
||||
|
||||
version '1.1'
|
||||
legacyversion '1.13.4'
|
||||
|
||||
shared_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
'@es_extended/locale.lua',
|
||||
'locales/*.lua',
|
||||
'config.lua'
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
'server/main.lua'
|
||||
}
|
||||
|
||||
client_scripts {
|
||||
'client/main.lua'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
'es_extended',
|
||||
'esx_skin',
|
||||
'esx_datastore'
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/cs.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/cs.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['cs'] = {
|
||||
['valid_purchase'] = 'ověřit nákup?',
|
||||
['yes'] = 'ano (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'ne',
|
||||
['helmet'] = 'helma / Čepice',
|
||||
['glasses'] = 'brýle',
|
||||
['mask'] = 'maska',
|
||||
['ears'] = 'doplňky na uši',
|
||||
['shop'] = '%s obchod',
|
||||
['set_unset'] = 'nasadit / Sundat',
|
||||
['not_enough_money'] = 'nemáte dostatek peněz',
|
||||
['press_access'] = 'zmáčkněte [E] pro otevření menu',
|
||||
['accessories_blip'] = 'doplňky',
|
||||
['no_ears'] = 'nemáte doplňky na uši',
|
||||
['no_glasses'] = 'nemáte brýle',
|
||||
['no_helmet'] = 'nemáte helmu',
|
||||
['no_mask'] = 'nemáte masku',
|
||||
['you_paid'] = 'zaplatili jste $%s',
|
||||
['keymap'] = 'Open Accessory Menu', --not translated
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/de.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/de.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['de'] = {
|
||||
['valid_purchase'] = 'Kauf bestätigen?',
|
||||
['yes'] = 'Ja (<span style="color: green;">%s€</span>)',
|
||||
['no'] = 'Nein',
|
||||
['helmet'] = 'Helm / Hut',
|
||||
['glasses'] = 'Brille',
|
||||
['mask'] = 'Maske',
|
||||
['ears'] = 'Ohr accessories',
|
||||
['shop'] = '%s Shop',
|
||||
['set_unset'] = 'Aufsetzen / Absetzen',
|
||||
['not_enough_money'] = 'Du hast nicht genügend Geld!',
|
||||
['press_access'] = 'Drücke [E] um auf das Menü zuzugreifen',
|
||||
['accessories_blip'] = 'Accessories',
|
||||
['no_ears'] = 'Du hast keine Ohr Accessories',
|
||||
['no_glasses'] = 'Du hast keine Brille',
|
||||
['no_helmet'] = 'Du hast keinen Helm / Hut',
|
||||
['no_mask'] = 'Du hast keine Maske',
|
||||
['you_paid'] = 'Du zahlst %s€',
|
||||
['keymap'] = 'Accessoir Menü Öffnen',
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/en.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/en.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['en'] = {
|
||||
['valid_purchase'] = 'validate this purchase?',
|
||||
['yes'] = 'yes (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'no',
|
||||
['helmet'] = 'helmet / Hat',
|
||||
['glasses'] = 'glasses',
|
||||
['mask'] = 'mask',
|
||||
['ears'] = 'ears accessories',
|
||||
['shop'] = '%s shop',
|
||||
['set_unset'] = 'put on / Take off',
|
||||
['not_enough_money'] = 'you do not have enough money',
|
||||
['press_access'] = 'press [E] to access the menu',
|
||||
['accessories_blip'] = 'accessories',
|
||||
['no_ears'] = 'you do not have ears accessories',
|
||||
['no_glasses'] = 'you do not have glasses',
|
||||
['no_helmet'] = 'you do not have a helmet',
|
||||
['no_mask'] = 'you do not have a mask',
|
||||
['you_paid'] = 'you paid $%s',
|
||||
['keymap'] = 'Open Accessory Menu',
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/es.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/es.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['es'] = {
|
||||
['valid_purchase'] = '¿Validar la compra?',
|
||||
['yes'] = 'Si (<span style="color: green;">%s$</span>)',
|
||||
['no'] = 'No',
|
||||
['helmet'] = 'Casco / Gorra',
|
||||
['glasses'] = 'Gafas',
|
||||
['mask'] = 'Máscara',
|
||||
['ears'] = 'Accesorio de oreja',
|
||||
['shop'] = 'Tienda %s',
|
||||
['set_unset'] = 'Ponerse / Quitarse',
|
||||
['not_enough_money'] = '~r~No tienes suficiente dinero',
|
||||
['press_access'] = 'Pulsa [E] para acceder al menú',
|
||||
['accessories_blip'] = 'Accesorios',
|
||||
['no_ears'] = 'No tienes ningún accesorio de oreja',
|
||||
['no_glasses'] = 'No tienes ningunas gafas',
|
||||
['no_helmet'] = 'No tienes ningún casco',
|
||||
['no_mask'] = 'No tienes ninguna máscara',
|
||||
['you_paid'] = 'Pagaste %s$',
|
||||
['keymap'] = 'Open Accessory Menu', --not translated
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/fi.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/fi.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['fi'] = {
|
||||
['valid_purchase'] = 'varmista ostos?',
|
||||
['yes'] = 'kyllä (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'ei',
|
||||
['helmet'] = 'kypärä / Hattu',
|
||||
['glasses'] = 'lasit',
|
||||
['mask'] = 'maskit',
|
||||
['ears'] = 'korva asusteet',
|
||||
['shop'] = '%s asustekauppa',
|
||||
['set_unset'] = 'laita päälle / Ota pois',
|
||||
['not_enough_money'] = 'sinulla ei ole tarpeeksi rahaa',
|
||||
['press_access'] = 'paina [E] avataksesi menu',
|
||||
['accessories_blip'] = 'asusteet',
|
||||
['no_ears'] = 'sinulla ei ole korva asusteita',
|
||||
['no_glasses'] = 'sinulla ei ole laseja',
|
||||
['no_helmet'] = 'sinulla ei ole kypäriä',
|
||||
['no_mask'] = 'sinulla ei ole maskeja',
|
||||
['you_paid'] = 'sinä maksoit $%s',
|
||||
['keymap'] = 'Open Accessory Menu', --not translated
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/fr.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/fr.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['fr'] = {
|
||||
['valid_purchase'] = 'valider cet achat?',
|
||||
['yes'] = 'oui (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'non',
|
||||
['helmet'] = 'casque / Chapeau',
|
||||
['glasses'] = 'lunettes',
|
||||
['mask'] = 'masque',
|
||||
['ears'] = 'accessoires d\'oreilles',
|
||||
['shop'] = ' Magasin de %s',
|
||||
['set_unset'] = 'mettre / Enlever',
|
||||
['not_enough_money'] = 'vous n\'avez pas assez d\'argent',
|
||||
['press_access'] = 'appuyez sur [E] pour accéder au menu',
|
||||
['accessories_blip'] = 'accessoires',
|
||||
['no_ears'] = 'vous n\'avez pas d\'accessoires d\'oreilles',
|
||||
['no_glasses'] = 'vous n\'avez pas de lunettes',
|
||||
['no_helmet'] = 'vous n\'avez pas de casque / chapeau',
|
||||
['no_mask'] = 'vous n\'avez pas de masque',
|
||||
['you_paid'] = 'vous avez payé $%s',
|
||||
['keymap'] = 'Ouvrir le menu d\'accessoire',
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/hu.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/hu.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['hu'] = {
|
||||
['valid_purchase'] = 'Biztosan megveszed?',
|
||||
['yes'] = 'Igen (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'Nem',
|
||||
['helmet'] = 'sisak / kalap',
|
||||
['glasses'] = 'szemüveg',
|
||||
['mask'] = 'maszk',
|
||||
['ears'] = 'fül tartozékok',
|
||||
['shop'] = '%s bolt',
|
||||
['set_unset'] = 'Felvenni / Levenni',
|
||||
['not_enough_money'] = 'Nincsen elég pénzed',
|
||||
['press_access'] = 'Nyomj [E] hogy megnyisd a kiegészítöket',
|
||||
['accessories_blip'] = 'Kiegészítők',
|
||||
['no_ears'] = 'Nincsen fülbevalód',
|
||||
['no_glasses'] = 'Nincsen szemüveged',
|
||||
['no_helmet'] = 'Nincsen sapkád',
|
||||
['no_mask'] = 'Nincsen maszkod',
|
||||
['you_paid'] = 'Fizettél $%s',
|
||||
['keymap'] = 'Open Accessory Menu', --not translated
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/it.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/it.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['it'] = {
|
||||
['valid_purchase'] = 'confermare l\'acquisto?',
|
||||
['yes'] = 'si (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'no',
|
||||
['helmet'] = 'casco / cappello',
|
||||
['glasses'] = 'occhiali',
|
||||
['mask'] = 'maschera',
|
||||
['ears'] = 'accessori per le orecchie',
|
||||
['shop'] = '%s negozio',
|
||||
['set_unset'] = 'indossare / togliere',
|
||||
['not_enough_money'] = 'non hai abbastanza soldi',
|
||||
['press_access'] = 'premi [E] per accedere al menu',
|
||||
['accessories_blip'] = 'accessori',
|
||||
['no_ears'] = 'non hai accessori per le orecchie',
|
||||
['no_glasses'] = 'non hai gli occhiali',
|
||||
['no_helmet'] = 'non hai il casco',
|
||||
['no_mask'] = 'non hai una maschera',
|
||||
['you_paid'] = 'hai pagato $%s',
|
||||
['keymap'] = 'Apri menu accessori',
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/nl.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/nl.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['nl'] = {
|
||||
['valid_purchase'] = 'kopen?',
|
||||
['yes'] = 'ja (<span style="color: green;">€%s</span>)',
|
||||
['no'] = 'nee',
|
||||
['helmet'] = 'Helm / Hoed',
|
||||
['glasses'] = 'Brillen',
|
||||
['mask'] = 'Masker',
|
||||
['ears'] = 'Oor accessories',
|
||||
['shop'] = '%s Winkel',
|
||||
['set_unset'] = 'Doe aan / doe uit',
|
||||
['not_enough_money'] = 'Je hebt niet genoeg geld',
|
||||
['press_access'] = 'Druk op [E] om het menu te openen',
|
||||
['accessories_blip'] = 'Accessories',
|
||||
['no_ears'] = 'Je hebt geen oor accessories',
|
||||
['no_glasses'] = 'je hebt geen brillen',
|
||||
['no_helmet'] = 'je hebt geen helm',
|
||||
['no_mask'] = 'je hebt geen masker',
|
||||
['you_paid'] = 'je betaalde €%s',
|
||||
['keymap'] = 'Open Accessory Menu', --not translated
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/pl.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/pl.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['pl'] = {
|
||||
['valid_purchase'] = 'czy napewno chcesz to zakupić?',
|
||||
['yes'] = 'tak (<span style="color: green;">%s $</span>)',
|
||||
['no'] = 'nie',
|
||||
['helmet'] = 'hełm / Czapka',
|
||||
['glasses'] = 'okulary',
|
||||
['mask'] = 'maska',
|
||||
['ears'] = 'akcesoria uszu',
|
||||
['shop'] = 'sklep %s ',
|
||||
['set_unset'] = 'załóż / Zdejmij',
|
||||
['not_enough_money'] = 'nie masz wystarczająco pieniędzy',
|
||||
['press_access'] = 'wciśnij [E] aby otworzyć menu',
|
||||
['accessories_blip'] = 'akcesoria',
|
||||
['no_ears'] = 'nie posiadasz akcesorii uszu',
|
||||
['no_glasses'] = 'nie posiadasz okularów',
|
||||
['no_helmet'] = 'nie posiadasz nakrycia głowy',
|
||||
['no_mask'] = 'nie posiadasz maski',
|
||||
['you_paid'] = 'płacisz %s $',
|
||||
['keymap'] = 'Open Accessory Menu', --not translated
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/sl.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/sl.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['sl'] = {
|
||||
['valid_purchase'] = 'Hočete Potrditi Nakup',
|
||||
['yes'] = 'Da (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'Ne',
|
||||
['helmet'] = 'Kapa / Klobuk',
|
||||
['glasses'] = 'očala',
|
||||
['mask'] = 'maska',
|
||||
['ears'] = 'usesa',
|
||||
['shop'] = '%s trgovina',
|
||||
['set_unset'] = 'nadeni / snemi',
|
||||
['not_enough_money'] = 'Vi nimate dovolj denarja!',
|
||||
['press_access'] = 'Pritisnite [E] Da odprete menu!',
|
||||
['accessories_blip'] = 'Dodatki',
|
||||
['no_ears'] = 'Vi nimate ušesnih dodatkov',
|
||||
['no_glasses'] = 'Vi nimate očal!',
|
||||
['no_helmet'] = 'Vi nimate kape/klobuka',
|
||||
['no_mask'] = 'Vi nimate maske!',
|
||||
['you_paid'] = 'Vi ste plačali $%s',
|
||||
['keymap'] = 'Open Accessory Menu', --not translated
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/sr.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/sr.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['sr'] = {
|
||||
['valid_purchase'] = 'potvrdite kupovinu?',
|
||||
['yes'] = 'da (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'ne',
|
||||
['helmet'] = 'kaciga / sesir',
|
||||
['glasses'] = 'naocare',
|
||||
['mask'] = 'maska',
|
||||
['ears'] = 'nausnice',
|
||||
['shop'] = '%s prodavnica',
|
||||
['set_unset'] = 'stavi / skini',
|
||||
['not_enough_money'] = 'nemate dovoljno novca',
|
||||
['press_access'] = 'pritisni [E] da pristupis menu',
|
||||
['accessories_blip'] = 'dodatci',
|
||||
['no_ears'] = 'nemate dodatke za usi',
|
||||
['no_glasses'] = 'nemate naocare',
|
||||
['no_helmet'] = 'nemate kacigu',
|
||||
['no_mask'] = 'nemate masku',
|
||||
['you_paid'] = 'platili ste $%s',
|
||||
['keymap'] = 'Otvori Meni Dodataka',
|
||||
}
|
||||
20
resources/[esx_addons]/esx_accessories/locales/sv.lua
Normal file
20
resources/[esx_addons]/esx_accessories/locales/sv.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
Locales ['sv'] = {
|
||||
['valid_purchase'] = 'Vill du köpa detta?',
|
||||
['yes'] = 'Ja (<span style="color: green;">%skr</span>)',
|
||||
['no'] = 'Nej',
|
||||
['helmet'] = 'Hjälm / Hatt',
|
||||
['glasses'] = 'Glasögon',
|
||||
['mask'] = 'Mask',
|
||||
['ears'] = 'Öron accessoarer',
|
||||
['shop'] = '%s affär',
|
||||
['set_unset'] = 'Ta på / Ta av',
|
||||
['not_enough_money'] = 'Du har inte tillräckligt med pengar',
|
||||
['press_access'] = 'Tryck [E] för att öppna menyn',
|
||||
['accessories_blip'] = 'Accessoarer',
|
||||
['no_ears'] = 'Du har inga öron accessoarer',
|
||||
['no_glasses'] = 'Du har inga glasögon',
|
||||
['no_helmet'] = 'Du har ingen hjälm',
|
||||
['no_mask'] = 'Du har ingen mask',
|
||||
['you_paid'] = 'Du betalade %skr',
|
||||
['keymap'] = 'Öppna accessoar meny',
|
||||
}
|
||||
22
resources/[esx_addons]/esx_accessories/locales/tr.lua
Normal file
22
resources/[esx_addons]/esx_accessories/locales/tr.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
Locales ['tr'] = {
|
||||
['valid_purchase'] = 'Değişiklikleri onaylıyor musun?',
|
||||
['yes'] = 'Evet (<span style="color: green;">$%s</span>)',
|
||||
['no'] = 'Hayır',
|
||||
['helmet'] = 'Kask / Şapka',
|
||||
['glasses'] = 'Gözlük',
|
||||
['mask'] = 'Maske',
|
||||
['ears'] = 'Kulaklık',
|
||||
['shop'] = '%s dükkanı',
|
||||
['set_unset'] = 'Giy / Çıkar',
|
||||
['not_enough_money'] = 'Yeterli paran yok',
|
||||
['press_access'] = 'Menüye erişmek için ~b~[E]~s~ tuşuna bas.',
|
||||
['accessories_blip'] = 'Aksesuarlar',
|
||||
['no_ears'] = 'Kulaklığın yok',
|
||||
['no_glasses'] = 'Gözlüğün yok',
|
||||
['no_helmet'] = 'Kaskın yok',
|
||||
['no_mask'] = 'Masken yok',
|
||||
['you_paid'] = 'Ödeme yaptın: $%s',
|
||||
['keymap'] = 'Aksesuar Menüsünü Aç',
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Ohr', 0),
|
||||
('user_glasses', 'Brille', 0),
|
||||
('user_helmet', 'Helm', 0),
|
||||
('user_mask', 'Maske', 0)
|
||||
;
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Oreilles', 0),
|
||||
('user_glasses', 'Lunettes', 0),
|
||||
('user_helmet', 'Casque', 0),
|
||||
('user_mask', 'Masque', 0)
|
||||
;
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Orecchini', 0),
|
||||
('user_glasses', 'Occhiali', 0),
|
||||
('user_helmet', 'Caschi', 0),
|
||||
('user_mask', 'Maschere', 0)
|
||||
;
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Oor Accessoires', 0),
|
||||
('user_glasses', 'Bril', 0),
|
||||
('user_helmet', 'Hoofddeksel', 0),
|
||||
('user_mask', 'Masker', 0)
|
||||
;
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Usesa', 0),
|
||||
('user_glasses', 'Ocala', 0),
|
||||
('user_helmet', 'Klobuk', 0),
|
||||
('user_mask', 'Maska', 0)
|
||||
;
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Uši', 0),
|
||||
('user_glasses', 'Naočare', 0),
|
||||
('user_helmet', 'Kaciga', 0),
|
||||
('user_mask', 'Maska', 0)
|
||||
;
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Öron', 0),
|
||||
('user_glasses', 'Glasögon', 0),
|
||||
('user_helmet', 'Hjälm', 0),
|
||||
('user_mask', 'Mask', 0)
|
||||
;
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('user_ears', 'Kulaklık', 0),
|
||||
('user_glasses', 'Gözlük', 0),
|
||||
('user_helmet', 'Kask', 0),
|
||||
('user_mask', 'Maske', 0)
|
||||
;
|
||||
43
resources/[esx_addons]/esx_accessories/server/main.lua
Normal file
43
resources/[esx_addons]/esx_accessories/server/main.lua
Normal file
@@ -0,0 +1,43 @@
|
||||
RegisterServerEvent('esx_accessories:pay')
|
||||
AddEventHandler('esx_accessories:pay', function()
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
xPlayer.removeMoney(Config.Price, "Accessory Purchase")
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('you_paid', ESX.Math.GroupDigits(Config.Price)))
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_accessories:save')
|
||||
AddEventHandler('esx_accessories:save', function(skin, accessory)
|
||||
local source = source
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
TriggerEvent('esx_datastore:getDataStore', 'user_' .. string.lower(accessory), xPlayer.getIdentifier(), function(store)
|
||||
store.set('has' .. accessory, true)
|
||||
|
||||
local itemSkin = {}
|
||||
local item1 = string.lower(accessory) .. '_1'
|
||||
local item2 = string.lower(accessory) .. '_2'
|
||||
itemSkin[item1] = skin[item1]
|
||||
itemSkin[item2] = skin[item2]
|
||||
|
||||
store.set('skin', itemSkin)
|
||||
end)
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_accessories:get', function(source, cb, accessory)
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
TriggerEvent('esx_datastore:getDataStore', 'user_' .. string.lower(accessory), xPlayer.getIdentifier(), function(store)
|
||||
local hasAccessory = (store.get('has' .. accessory) and store.get('has' .. accessory) or false)
|
||||
local skin = (store.get('skin') and store.get('skin') or {})
|
||||
|
||||
cb(hasAccessory, skin)
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_accessories:checkMoney', function(source, cb)
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
cb(xPlayer.getMoney() >= Config.Price)
|
||||
end)
|
||||
674
resources/[esx_addons]/esx_addonaccount/LICENSE
Normal file
674
resources/[esx_addons]/esx_addonaccount/LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, 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
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If 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 convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_addonaccount
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_addonaccount Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
48
resources/[esx_addons]/esx_addonaccount/README.md
Normal file
48
resources/[esx_addons]/esx_addonaccount/README.md
Normal file
@@ -0,0 +1,48 @@
|
||||
<h1 align='center'>[ESX] Addon Account</a></h1><p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://documentation.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
Special Accounts System to store money.
|
||||
|
||||
# Usage
|
||||
|
||||
There is two types of accounts: shared and not shared.
|
||||
|
||||
- Shared accounts doesn't belong to a specific user. Example: society accounts.
|
||||
- None-shared accounts are created for every user in the server. They are created in db when player is loaded, Example: property black money
|
||||
|
||||
## `addon_account` database information
|
||||
|
||||
An addon account must be configured in the database before using it. Don't forget to run a server restart afterwards (you can alternative restart the script and relog all clients)
|
||||
|
||||
| `name` | `label` | `shared` |
|
||||
| -------- | ------- | -------- |
|
||||
| name of the account | label of the account (not used) | is the account shared with others? (boolean either `0` or `1`) |
|
||||
|
||||
```lua
|
||||
-- Using events
|
||||
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_realestateagent', function(account)
|
||||
account.addMoney(500)
|
||||
end)
|
||||
|
||||
TriggerEvent('esx_addonaccount:getAccount', 'property_black_money', 'steam:0123456789', function(account)
|
||||
account.removeMoney(500)
|
||||
end)
|
||||
|
||||
-- Using exports
|
||||
local account = exports['esx_addonaccount']:getAccount('property_black_money', 'steam:0123456789')
|
||||
account.addMoney(500)
|
||||
|
||||
local sharedAccount = exports['esx_addonaccount']:getSharedAccount('society_realestateagent')
|
||||
sharedAccount.addMoney(500)
|
||||
```
|
||||
|
||||
# Legal
|
||||
|
||||
esx_addonaccount - addon account for ESX
|
||||
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 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 General Public License For more details.
|
||||
|
||||
You should have received a copy Of the GNU General Public License along with this program. If Not, see http://www.gnu.org/licenses/.
|
||||
18
resources/[esx_addons]/esx_addonaccount/esx_addonaccount.sql
Normal file
18
resources/[esx_addons]/esx_addonaccount/esx_addonaccount.sql
Normal file
@@ -0,0 +1,18 @@
|
||||
CREATE TABLE `addon_account` (
|
||||
`name` VARCHAR(60) NOT NULL,
|
||||
`label` VARCHAR(100) NOT NULL,
|
||||
`shared` INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE `addon_account_data` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`account_name` VARCHAR(100) DEFAULT NULL,
|
||||
`money` INT NOT NULL,
|
||||
`owner` VARCHAR(60) DEFAULT NULL,
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `index_addon_account_data_account_name_owner` (`account_name`, `owner`),
|
||||
INDEX `index_addon_account_data_account_name` (`account_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
23
resources/[esx_addons]/esx_addonaccount/fxmanifest.lua
Normal file
23
resources/[esx_addons]/esx_addonaccount/fxmanifest.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
fx_version 'adamant'
|
||||
game 'gta5'
|
||||
|
||||
author 'ESX-Framework'
|
||||
description 'Allows resources to store account data, such as society funds'
|
||||
lua54 'yes'
|
||||
version '1.1'
|
||||
legacyversion '1.13.4'
|
||||
|
||||
server_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
'@oxmysql/lib/MySQL.lua',
|
||||
'server/classes/addonaccount.lua',
|
||||
'server/main.lua'
|
||||
}
|
||||
|
||||
server_exports {
|
||||
'GetSharedAccount',
|
||||
'AddSharedAccount',
|
||||
'GetAccount'
|
||||
}
|
||||
|
||||
dependency 'es_extended'
|
||||
@@ -0,0 +1,37 @@
|
||||
function CreateAddonAccount(name, owner, money)
|
||||
local self = {}
|
||||
|
||||
self.name = name
|
||||
self.owner = owner
|
||||
self.money = money
|
||||
|
||||
function self.addMoney(amount)
|
||||
self.money = self.money + amount
|
||||
self.save()
|
||||
TriggerEvent('esx_addonaccount:addMoney', self.name, amount)
|
||||
end
|
||||
|
||||
function self.removeMoney(amount)
|
||||
self.money = self.money - amount
|
||||
self.save()
|
||||
TriggerEvent('esx_addonaccount:removeMoney', self.name, amount)
|
||||
end
|
||||
|
||||
function self.setMoney(amount)
|
||||
self.money = amount
|
||||
self.save()
|
||||
TriggerEvent('esx_addonaccount:setMoney', self.name, amount)
|
||||
end
|
||||
|
||||
function self.save()
|
||||
if self.owner == nil then
|
||||
MySQL.update('UPDATE addon_account_data SET money = ? WHERE account_name = ?', { self.money, self.name })
|
||||
else
|
||||
MySQL.update('UPDATE addon_account_data SET money = ? WHERE account_name = ? AND owner = ?',
|
||||
{ self.money, self.name, self.owner })
|
||||
end
|
||||
TriggerClientEvent('esx_addonaccount:setMoney', -1, self.name, self.money)
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
140
resources/[esx_addons]/esx_addonaccount/server/main.lua
Normal file
140
resources/[esx_addons]/esx_addonaccount/server/main.lua
Normal file
@@ -0,0 +1,140 @@
|
||||
local AccountsIndex, Accounts, SharedAccounts = {}, {}, {}
|
||||
|
||||
AddEventHandler('onResourceStart', function(resourceName)
|
||||
if resourceName == GetCurrentResourceName() then
|
||||
local accounts = MySQL.query.await(
|
||||
'SELECT * FROM addon_account LEFT JOIN addon_account_data ON addon_account.name = addon_account_data.account_name UNION SELECT * FROM addon_account RIGHT JOIN addon_account_data ON addon_account.name = addon_account_data.account_name')
|
||||
|
||||
local newAccounts = {}
|
||||
for i = 1, #accounts do
|
||||
local account = accounts[i]
|
||||
if account.shared == 0 then
|
||||
if not Accounts[account.name] then
|
||||
AccountsIndex[#AccountsIndex + 1] = account.name
|
||||
Accounts[account.name] = {}
|
||||
end
|
||||
Accounts[account.name][#Accounts[account.name] + 1] = CreateAddonAccount(account.name, account.owner,
|
||||
account.money)
|
||||
else
|
||||
if account.money then
|
||||
SharedAccounts[account.name] = CreateAddonAccount(account.name, nil, account.money)
|
||||
else
|
||||
newAccounts[#newAccounts + 1] = { account.name, 0 }
|
||||
end
|
||||
end
|
||||
end
|
||||
GlobalState.SharedAccounts = SharedAccounts
|
||||
|
||||
if next(newAccounts) then
|
||||
MySQL.prepare('INSERT INTO addon_account_data (account_name, money) VALUES (?, ?)', newAccounts)
|
||||
for i = 1, #newAccounts do
|
||||
local newAccount = newAccounts[i]
|
||||
SharedAccounts[newAccount[1]] = CreateAddonAccount(newAccount[1], nil, 0)
|
||||
end
|
||||
GlobalState.SharedAccounts = SharedAccounts
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function GetAccount(name, owner)
|
||||
for i = 1, #Accounts[name], 1 do
|
||||
if Accounts[name][i].owner == owner then
|
||||
return Accounts[name][i]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GetSharedAccount(name)
|
||||
return SharedAccounts[name]
|
||||
end
|
||||
|
||||
function AddSharedAccount(society, amount)
|
||||
-- society.name = job_name/society_name
|
||||
-- society.label = label for the job/account
|
||||
-- amount = if the shared account should start with x amount
|
||||
if type(society) ~= 'table' or not society?.name or not society?.label then return end
|
||||
|
||||
-- check if account already exist?
|
||||
if SharedAccounts[society.name] ~= nil then return SharedAccounts[society.name] end
|
||||
|
||||
-- addon account:
|
||||
local account = MySQL.insert.await('INSERT INTO `addon_account` (name, label, shared) VALUES (?, ?, ?)', {
|
||||
society.name, society.label, 1
|
||||
})
|
||||
if not account then return end
|
||||
|
||||
-- if addon account inserted, insert addon account data:
|
||||
local account_data = MySQL.insert.await('INSERT INTO `addon_account_data` (account_name, money) VALUES (?, ?)', {
|
||||
society.name, (amount or 0)
|
||||
})
|
||||
if not account_data then return end
|
||||
|
||||
-- if all data inserted successfully to sql:
|
||||
SharedAccounts[society.name] = CreateAddonAccount(society.name, nil, (amount or 0))
|
||||
|
||||
return SharedAccounts[society.name]
|
||||
end
|
||||
|
||||
AddEventHandler('esx_addonaccount:getAccount', function(name, owner, cb)
|
||||
cb(GetAccount(name, owner))
|
||||
end)
|
||||
|
||||
AddEventHandler('esx_addonaccount:getSharedAccount', function(name, cb)
|
||||
cb(GetSharedAccount(name))
|
||||
end)
|
||||
|
||||
AddEventHandler('esx:playerLoaded', function(playerId, xPlayer)
|
||||
local addonAccounts = {}
|
||||
|
||||
for i = 1, #AccountsIndex, 1 do
|
||||
local name = AccountsIndex[i]
|
||||
local account = GetAccount(name, xPlayer.identifier)
|
||||
|
||||
if account == nil then
|
||||
MySQL.insert('INSERT INTO addon_account_data (account_name, money, owner) VALUES (?, ?, ?)',
|
||||
{ name, 0, xPlayer.identifier })
|
||||
|
||||
account = CreateAddonAccount(name, xPlayer.identifier, 0)
|
||||
Accounts[name][#Accounts[name] + 1] = account
|
||||
end
|
||||
|
||||
addonAccounts[#addonAccounts + 1] = account
|
||||
end
|
||||
|
||||
xPlayer.set('addonAccounts', addonAccounts)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_addonaccount:refreshAccounts')
|
||||
AddEventHandler('esx_addonaccount:refreshAccounts', function()
|
||||
local addonAccounts = MySQL.query.await('SELECT * FROM addon_account')
|
||||
|
||||
for i = 1, #addonAccounts, 1 do
|
||||
local name = addonAccounts[i].name
|
||||
local shared = addonAccounts[i].shared
|
||||
|
||||
local addonAccountData = MySQL.query.await('SELECT * FROM addon_account_data WHERE account_name = ?', { name })
|
||||
|
||||
if shared == 0 then
|
||||
table.insert(AccountsIndex, name)
|
||||
Accounts[name] = {}
|
||||
|
||||
for j = 1, #addonAccountData, 1 do
|
||||
local addonAccount = CreateAddonAccount(name, addonAccountData[j].owner, addonAccountData[j].money)
|
||||
table.insert(Accounts[name], addonAccount)
|
||||
end
|
||||
else
|
||||
local money = nil
|
||||
|
||||
if #addonAccountData == 0 then
|
||||
MySQL.insert('INSERT INTO addon_account_data (account_name, money, owner) VALUES (?, ?, ?)',
|
||||
{ name, 0, nil })
|
||||
money = 0
|
||||
else
|
||||
money = addonAccountData[1].money
|
||||
end
|
||||
|
||||
local addonAccount = CreateAddonAccount(name, nil, money)
|
||||
SharedAccounts[name] = addonAccount
|
||||
end
|
||||
end
|
||||
end)
|
||||
674
resources/[esx_addons]/esx_addoninventory/LICENSE
Normal file
674
resources/[esx_addons]/esx_addoninventory/LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, 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
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If 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 convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_addoninventory
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_addoninventory Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
62
resources/[esx_addons]/esx_addoninventory/README.md
Normal file
62
resources/[esx_addons]/esx_addoninventory/README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
<h1 align='center'>[ESX] Addoninventory</a></h1><p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://documentation.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
## Download & Installation
|
||||
|
||||
### Using [fvm](https://github.com/qlaffont/fvm-installer)
|
||||
```
|
||||
fvm install --save --folder=esx esx-framework/esx_addoninventory
|
||||
```
|
||||
|
||||
### Using Git
|
||||
```
|
||||
cd resources
|
||||
git clone https://github.com/esx-framework/esx_addoninventory [esx]/esx_addoninventory
|
||||
```
|
||||
|
||||
### Manually
|
||||
- Download https://github.com/esx-framework/esx_addoninventory/archive/master.zip
|
||||
- Put it in the `[esx]` directory
|
||||
|
||||
## Installation
|
||||
- Import `esx_addoninventory.sql` in your database
|
||||
- Add this in your `server.cfg`:
|
||||
|
||||
```
|
||||
start esx_addoninventory
|
||||
```
|
||||
|
||||
## Usage
|
||||
There are two types of inventories: shared and not shared.
|
||||
|
||||
- Shared inventories don't belong to a specific user. Example: foodstore items.
|
||||
- None-shared inventories are created for every user in the server. They are created in db when player is loaded, Example: property items
|
||||
|
||||
### `addon_inventory` database information
|
||||
An addon inventory must be configured in the database before using it. Don't forget to run a server restart afterwards (you can alternative restart the script and relog all clients)
|
||||
|
||||
| `name` | `label` | `shared` |
|
||||
| -------- | ------- | -------- |
|
||||
| name of the inventory | label of the inventory (not used) | is the inventory shared with others? (boolean either `0` or `1`) |
|
||||
|
||||
```lua
|
||||
TriggerEvent('esx_addoninventory:getSharedInventory', 'society_police', function(inventory)
|
||||
inventory.addItem('bread', 1)
|
||||
end)
|
||||
|
||||
TriggerEvent('esx_addoninventory:getInventory', 'property', 'steam:0123456789', function(inventory)
|
||||
inventory.removeItem('water', 1)
|
||||
end)
|
||||
|
||||
```
|
||||
# Legal
|
||||
### License
|
||||
esx_addoninventory - inventories!
|
||||
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 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 General Public License For more details.
|
||||
|
||||
You should have received a copy Of the GNU General Public License along with this program. If Not, see http://www.gnu.org/licenses/.
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
|
||||
CREATE TABLE `addon_inventory` (
|
||||
`name` VARCHAR(60) NOT NULL,
|
||||
`label` VARCHAR(100) NOT NULL,
|
||||
`shared` INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
CREATE TABLE `addon_inventory_items` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`inventory_name` VARCHAR(100) NOT NULL,
|
||||
`name` VARCHAR(100) NOT NULL,
|
||||
`count` INT NOT NULL,
|
||||
`owner` VARCHAR(60) DEFAULT NULL,
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `index_addon_inventory_items_inventory_name_name` (`inventory_name`, `name`),
|
||||
INDEX `index_addon_inventory_items_inventory_name_name_owner` (`inventory_name`, `name`, `owner`),
|
||||
INDEX `index_addon_inventory_inventory_name` (`inventory_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
23
resources/[esx_addons]/esx_addoninventory/fxmanifest.lua
Normal file
23
resources/[esx_addons]/esx_addoninventory/fxmanifest.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
|
||||
description 'Adds a way for resources to store items for players'
|
||||
lua54 'yes'
|
||||
|
||||
version '1.0'
|
||||
legacyversion '1.13.4'
|
||||
|
||||
server_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
'@oxmysql/lib/MySQL.lua',
|
||||
'server/classes/addoninventory.lua',
|
||||
'server/main.lua'
|
||||
}
|
||||
|
||||
server_exports {
|
||||
'GetSharedInventory',
|
||||
'AddSharedInventory'
|
||||
}
|
||||
|
||||
dependency 'es_extended'
|
||||
@@ -0,0 +1,85 @@
|
||||
function CreateAddonInventory(name, owner, items)
|
||||
local self = {}
|
||||
|
||||
self.name = name
|
||||
self.owner = owner
|
||||
self.items = items
|
||||
|
||||
function self.addItem(name, count)
|
||||
local item = self.getItem(name)
|
||||
item.count = item.count + count
|
||||
|
||||
self.saveItem(name, item.count)
|
||||
end
|
||||
|
||||
function self.removeItem(name, count)
|
||||
if count > 0 then
|
||||
local item = self.getItem(name)
|
||||
item.count = item.count - count
|
||||
|
||||
self.saveItem(name, item.count)
|
||||
end
|
||||
end
|
||||
|
||||
function self.setItem(name, count)
|
||||
local item = self.getItem(name)
|
||||
item.count = count
|
||||
|
||||
self.saveItem(name, item.count)
|
||||
end
|
||||
|
||||
function self.getItem(name)
|
||||
for i=1, #self.items, 1 do
|
||||
if self.items[i].name == name then
|
||||
return self.items[i]
|
||||
end
|
||||
end
|
||||
|
||||
item = {
|
||||
name = name,
|
||||
count = 0,
|
||||
label = Items[name]
|
||||
}
|
||||
|
||||
table.insert(self.items, item)
|
||||
|
||||
if self.owner == nil then
|
||||
MySQL.update('INSERT INTO addon_inventory_items (inventory_name, name, count) VALUES (@inventory_name, @item_name, @count)',
|
||||
{
|
||||
['@inventory_name'] = self.name,
|
||||
['@item_name'] = name,
|
||||
['@count'] = 0
|
||||
})
|
||||
else
|
||||
MySQL.update('INSERT INTO addon_inventory_items (inventory_name, name, count, owner) VALUES (@inventory_name, @item_name, @count, @owner)',
|
||||
{
|
||||
['@inventory_name'] = self.name,
|
||||
['@item_name'] = name,
|
||||
['@count'] = 0,
|
||||
['@owner'] = self.owner
|
||||
})
|
||||
end
|
||||
|
||||
return item
|
||||
end
|
||||
|
||||
function self.saveItem(name, count)
|
||||
if self.owner == nil then
|
||||
MySQL.update('UPDATE addon_inventory_items SET count = @count WHERE inventory_name = @inventory_name AND name = @item_name', {
|
||||
['@inventory_name'] = self.name,
|
||||
['@item_name'] = name,
|
||||
['@count'] = count
|
||||
})
|
||||
else
|
||||
MySQL.update('UPDATE addon_inventory_items SET count = @count WHERE inventory_name = @inventory_name AND name = @item_name AND owner = @owner', {
|
||||
['@inventory_name'] = self.name,
|
||||
['@item_name'] = name,
|
||||
['@count'] = count,
|
||||
['@owner'] = self.owner
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
134
resources/[esx_addons]/esx_addoninventory/server/main.lua
Normal file
134
resources/[esx_addons]/esx_addoninventory/server/main.lua
Normal file
@@ -0,0 +1,134 @@
|
||||
if ESX.GetConfig().OxInventory then
|
||||
AddEventHandler('onServerResourceStart', function(resourceName)
|
||||
if resourceName == 'ox_inventory' or resourceName == GetCurrentResourceName() then
|
||||
local stashes = MySQL.query.await('SELECT * FROM addon_inventory')
|
||||
|
||||
for i=1, #stashes do
|
||||
local stash = stashes[i]
|
||||
local jobStash = stash.name:find('society') and string.sub(stash.name, 9)
|
||||
exports.ox_inventory:RegisterStash(stash.name, stash.label, 100, 200000, stash.shared == 0 and true or false, jobStash)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
Items = {}
|
||||
local InventoriesIndex, Inventories, SharedInventories = {}, {}, {}
|
||||
|
||||
MySQL.ready(function()
|
||||
local items = MySQL.query.await('SELECT * FROM items')
|
||||
|
||||
for i=1, #items, 1 do
|
||||
Items[items[i].name] = items[i].label
|
||||
end
|
||||
|
||||
local result = MySQL.query.await('SELECT * FROM addon_inventory')
|
||||
|
||||
for i=1, #result, 1 do
|
||||
local name = result[i].name
|
||||
local label = result[i].label
|
||||
local shared = result[i].shared
|
||||
|
||||
local result2 = MySQL.query.await('SELECT * FROM addon_inventory_items WHERE inventory_name = @inventory_name', {
|
||||
['@inventory_name'] = name
|
||||
})
|
||||
|
||||
if shared == 0 then
|
||||
|
||||
table.insert(InventoriesIndex, name)
|
||||
|
||||
Inventories[name] = {}
|
||||
local items = {}
|
||||
|
||||
for j=1, #result2, 1 do
|
||||
local itemName = result2[j].name
|
||||
local itemCount = result2[j].count
|
||||
local itemOwner = result2[j].owner
|
||||
|
||||
if items[itemOwner] == nil then
|
||||
items[itemOwner] = {}
|
||||
end
|
||||
|
||||
table.insert(items[itemOwner], {
|
||||
name = itemName,
|
||||
count = itemCount,
|
||||
label = Items[itemName]
|
||||
})
|
||||
end
|
||||
|
||||
for k,v in pairs(items) do
|
||||
local addonInventory = CreateAddonInventory(name, k, v)
|
||||
table.insert(Inventories[name], addonInventory)
|
||||
end
|
||||
|
||||
else
|
||||
local items = {}
|
||||
|
||||
for j=1, #result2, 1 do
|
||||
table.insert(items, {
|
||||
name = result2[j].name,
|
||||
count = result2[j].count,
|
||||
label = Items[result2[j].name]
|
||||
})
|
||||
end
|
||||
|
||||
local addonInventory = CreateAddonInventory(name, nil, items)
|
||||
SharedInventories[name] = addonInventory
|
||||
GlobalState.SharedInventories = SharedInventories
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function GetInventory(name, owner)
|
||||
for i=1, #Inventories[name], 1 do
|
||||
if Inventories[name][i].owner == owner then
|
||||
return Inventories[name][i]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GetSharedInventory(name)
|
||||
return SharedInventories[name]
|
||||
end
|
||||
|
||||
function AddSharedInventory(society)
|
||||
if type(society) ~= 'table' or not society?.name or not society?.label then return end
|
||||
-- society (array) containing name (string) and label (string)
|
||||
|
||||
-- addon inventory:
|
||||
MySQL.Async.execute('INSERT INTO addon_inventory (name, label, shared) VALUES (@name, @label, @shared)', {
|
||||
['name'] = society.name,
|
||||
['label'] = society.label,
|
||||
['shared'] = 1
|
||||
})
|
||||
|
||||
SharedInventories[society.name] = CreateAddonInventory(society.name, nil, {})
|
||||
end
|
||||
|
||||
AddEventHandler('esx_addoninventory:getInventory', function(name, owner, cb)
|
||||
cb(GetInventory(name, owner))
|
||||
end)
|
||||
|
||||
AddEventHandler('esx_addoninventory:getSharedInventory', function(name, cb)
|
||||
cb(GetSharedInventory(name))
|
||||
end)
|
||||
|
||||
AddEventHandler('esx:playerLoaded', function(playerId, xPlayer)
|
||||
local addonInventories = {}
|
||||
|
||||
for i=1, #InventoriesIndex, 1 do
|
||||
local name = InventoriesIndex[i]
|
||||
local inventory = GetInventory(name, xPlayer.identifier)
|
||||
|
||||
if inventory == nil then
|
||||
inventory = CreateAddonInventory(name, xPlayer.identifier, {})
|
||||
table.insert(Inventories[name], inventory)
|
||||
end
|
||||
|
||||
table.insert(addonInventories, inventory)
|
||||
end
|
||||
|
||||
xPlayer.set('addonInventories', addonInventories)
|
||||
end)
|
||||
674
resources/[esx_addons]/esx_ambulancejob/LICENSE
Normal file
674
resources/[esx_addons]/esx_ambulancejob/LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, 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
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If 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 convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_ambulancejob
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_ambulancejob Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
31
resources/[esx_addons]/esx_ambulancejob/README.md
Normal file
31
resources/[esx_addons]/esx_ambulancejob/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
<h1 align='center'>[ESX] Ambulance Job</a></h1><p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://documentation.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
ESX Ambulance Job is an plugin for ESX with features:
|
||||
|
||||
- Adds death screen, with early respawn timer and bleed out timer
|
||||
- Vehicle garages, revive menu and more for on duty EMS
|
||||
|
||||
## Requirements
|
||||
|
||||
`Required`:
|
||||
|
||||
- [esx_skin](https://github.com/esx-framework/esx-legacy/tree/main/%5Bcore%5D/esx_skin)
|
||||
- [esx_vehicleshop](https://github.com/esx-framework/esx_vehicleshop)
|
||||
|
||||
`Optional`:
|
||||
|
||||
- [esx_society](https://github.com/esx-framework/esx_society)
|
||||
|
||||
## Legal
|
||||
|
||||
### License
|
||||
|
||||
esx_ambulancejob - ambulance script for fivem
|
||||
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 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 General Public License For more details.
|
||||
|
||||
You should have received a copy Of the GNU General Public License along with this program. If Not, see http://www.gnu.org/licenses/.
|
||||
56
resources/[esx_addons]/esx_ambulancejob/client/deathcam.lua
Normal file
56
resources/[esx_addons]/esx_ambulancejob/client/deathcam.lua
Normal file
@@ -0,0 +1,56 @@
|
||||
function GetShapeTestResultSync(shape)
|
||||
local handle, hit, coords, normal, entity
|
||||
repeat handle, hit, coords, normal, entity = GetShapeTestResult(shape)
|
||||
until handle ~= 1 or Wait()
|
||||
return hit, coords, normal, entity
|
||||
end
|
||||
|
||||
local camera
|
||||
local x = 0
|
||||
local y = 0
|
||||
local camera_radius = 5
|
||||
local zoom = Config.zoom
|
||||
local playerPed
|
||||
|
||||
function StartDeathCam()
|
||||
camera = CreateCamWithParams('DEFAULT_SCRIPTED_CAMERA', 0, 0, 0, 0, 0, 0, GetGameplayCamFov(), 1)
|
||||
RenderScriptCams(true, true, 1000, true, false)
|
||||
|
||||
playerPed = PlayerPedId()
|
||||
end
|
||||
|
||||
function EndDeathCam()
|
||||
RenderScriptCams(0)
|
||||
camera = DestroyCam(camera)
|
||||
end
|
||||
|
||||
function ProcessCamControls()
|
||||
local playerCoords = GetEntityCoords(playerPed)
|
||||
if camera_radius < zoom.max and IsDisabledControlPressed(0, 14) then
|
||||
camera_radius += zoom.step
|
||||
elseif camera_radius > zoom.min and IsDisabledControlPressed(0, 15) then
|
||||
camera_radius -= zoom.step
|
||||
end
|
||||
|
||||
local coords = ProcessNewPosition(playerCoords)
|
||||
SetCamCoord(camera, coords)
|
||||
PointCamAtCoord(camera, playerCoords.x, playerCoords.y, playerCoords.z)
|
||||
end
|
||||
|
||||
function ProcessNewPosition(playerCoords)
|
||||
x -= GetDisabledControlNormal(0, 1)
|
||||
y -= GetDisabledControlNormal(0, 2)
|
||||
if y < math.rad(15) then
|
||||
y = math.rad(15)
|
||||
elseif y > math.rad(90) then
|
||||
y = math.rad(90)
|
||||
end
|
||||
local normal = vector3(
|
||||
math.sin(y) * math.cos(x),
|
||||
math.sin(y) * math.sin(x),
|
||||
math.cos(y)
|
||||
)
|
||||
local pos = playerCoords + normal * camera_radius
|
||||
local hit, coords = GetShapeTestResultSync(StartShapeTestLosProbe(playerCoords, pos, -1, playerPed))
|
||||
return (hit == 1 and playerCoords + normal * (#(playerCoords - coords) - 1)) or pos
|
||||
end
|
||||
604
resources/[esx_addons]/esx_ambulancejob/client/job.lua
Normal file
604
resources/[esx_addons]/esx_ambulancejob/client/job.lua
Normal file
@@ -0,0 +1,604 @@
|
||||
local CurrentAction, CurrentActionMsg, CurrentActionData = nil, '', {}
|
||||
local HasAlreadyEnteredMarker, LastHospital, LastPart, LastPartNum
|
||||
local isBusy, deadPlayers, deadPlayerBlips, isOnDuty = false, {}, {}, false
|
||||
isInShopMenu = false
|
||||
|
||||
RegisterNetEvent('esx:playerLoaded')
|
||||
AddEventHandler('esx:playerLoaded', function(xPlayer)
|
||||
ESX.PlayerData = xPlayer
|
||||
ESX.PlayerLoaded = true
|
||||
end)
|
||||
|
||||
|
||||
function OpenAmbulanceActionsMenu()
|
||||
local elements = {
|
||||
{ unselectable = true, icon = "fas fa-shirt", title = TranslateCap('ambulance') },
|
||||
{ icon = "fas fa-shirt", title = TranslateCap('cloakroom'), value = 'cloakroom' }
|
||||
}
|
||||
|
||||
if Config.EnablePlayerManagement and ESX.PlayerData.job.grade_name == 'boss' then
|
||||
elements[#elements + 1] = {
|
||||
icon = "fas fa-ambulance",
|
||||
title = TranslateCap('boss_actions'),
|
||||
value = 'boss_actions'
|
||||
}
|
||||
end
|
||||
|
||||
ESX.OpenContext("right", elements, function(menu, element)
|
||||
if element.value == 'cloakroom' then
|
||||
OpenCloakroomMenu()
|
||||
elseif element.value == 'boss_actions' then
|
||||
TriggerEvent('esx_society:openBossMenu', 'ambulance', function(data, menu)
|
||||
menu.close()
|
||||
end, { wash = false })
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenMobileAmbulanceActionsMenu()
|
||||
local elements = {
|
||||
{ unselectable = true, icon = "fas fa-ambulance", title = TranslateCap('ambulance') },
|
||||
{ icon = "fas fa-ambulance", title = TranslateCap('ems_menu'), value = "citizen_interaction" }
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements, function(menu, element)
|
||||
if element.value == "citizen_interaction" then
|
||||
local elements2 = {
|
||||
{ unselectable = true, icon = "fas fa-ambulance", title = element.title },
|
||||
{ icon = "fas fa-syringe", title = TranslateCap('ems_menu_revive'), value = "revive" },
|
||||
{ icon = "fas fa-bandage", title = TranslateCap('ems_menu_small'), value = "small" },
|
||||
{ icon = "fas fa-bandage", title = TranslateCap('ems_menu_big'), value = "big" },
|
||||
{ icon = "fas fa-car", title = TranslateCap('ems_menu_putincar'), value = "put_in_vehicle" },
|
||||
{ icon = "fas fa-syringe", title = TranslateCap('ems_menu_search'), value = "search" },
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements2, function(menu2, element2)
|
||||
if isBusy then return end
|
||||
local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
|
||||
|
||||
if element2.value == 'search' then
|
||||
TriggerServerEvent('esx_ambulancejob:svsearch')
|
||||
elseif closestPlayer == -1 or closestDistance > 1.0 then
|
||||
ESX.ShowNotification(TranslateCap('no_players'))
|
||||
else
|
||||
if element2.value == 'revive' then
|
||||
revivePlayer(closestPlayer)
|
||||
elseif element2.value == 'small' then
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:getItemAmount', function(quantity)
|
||||
if quantity > 0 then
|
||||
local closestPlayerPed = GetPlayerPed(closestPlayer)
|
||||
local health = GetEntityHealth(closestPlayerPed)
|
||||
|
||||
if health > 0 then
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
isBusy = true
|
||||
ESX.ShowNotification(TranslateCap('heal_inprogress'))
|
||||
TaskStartScenarioInPlace(playerPed, 'CODE_HUMAN_MEDIC_TEND_TO_DEAD', 0, true)
|
||||
Wait(10000)
|
||||
ClearPedTasks(playerPed)
|
||||
|
||||
TriggerServerEvent('esx_ambulancejob:removeItem', 'bandage')
|
||||
TriggerServerEvent('esx_ambulancejob:heal', GetPlayerServerId(closestPlayer), 'small')
|
||||
ESX.ShowNotification(TranslateCap('heal_complete', GetPlayerName(closestPlayer)))
|
||||
isBusy = false
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('player_not_conscious'))
|
||||
end
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('not_enough_bandage'))
|
||||
end
|
||||
end, 'bandage')
|
||||
|
||||
elseif element2.value == 'big' then
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:getItemAmount', function(quantity)
|
||||
if quantity > 0 then
|
||||
local closestPlayerPed = GetPlayerPed(closestPlayer)
|
||||
local health = GetEntityHealth(closestPlayerPed)
|
||||
|
||||
if health > 0 then
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
isBusy = true
|
||||
ESX.ShowNotification(TranslateCap('heal_inprogress'))
|
||||
TaskStartScenarioInPlace(playerPed, 'CODE_HUMAN_MEDIC_TEND_TO_DEAD', 0, true)
|
||||
Wait(10000)
|
||||
ClearPedTasks(playerPed)
|
||||
|
||||
TriggerServerEvent('esx_ambulancejob:removeItem', 'medikit')
|
||||
TriggerServerEvent('esx_ambulancejob:heal', GetPlayerServerId(closestPlayer), 'big')
|
||||
ESX.ShowNotification(TranslateCap('heal_complete', GetPlayerName(closestPlayer)))
|
||||
isBusy = false
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('player_not_conscious'))
|
||||
end
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('not_enough_medikit'))
|
||||
end
|
||||
end, 'medikit')
|
||||
elseif element2.value == 'put_in_vehicle' then
|
||||
TriggerServerEvent('esx_ambulancejob:putInVehicle', GetPlayerServerId(closestPlayer))
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function revivePlayer(closestPlayer)
|
||||
isBusy = true
|
||||
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:getItemAmount', function(quantity)
|
||||
if quantity > 0 then
|
||||
local closestPlayerPed = GetPlayerPed(closestPlayer)
|
||||
local closestPlayerSrc = GetPlayerServerId(closestPlayer)
|
||||
|
||||
if Player(closestPlayerSrc).state.isDead then
|
||||
local playerPed = PlayerPedId()
|
||||
local lib, anim = 'mini@cpr@char_a@cpr_str', 'cpr_pumpchest'
|
||||
ESX.ShowNotification(TranslateCap('revive_inprogress'))
|
||||
|
||||
for i = 1, 15 do
|
||||
Wait(900)
|
||||
|
||||
ESX.Streaming.RequestAnimDict(lib, function()
|
||||
TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0.0, false, false, false)
|
||||
RemoveAnimDict(lib)
|
||||
end)
|
||||
end
|
||||
|
||||
TriggerServerEvent('esx_ambulancejob:removeItem', 'medikit')
|
||||
TriggerServerEvent('esx_ambulancejob:revive', GetPlayerServerId(closestPlayer))
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('player_not_unconscious'))
|
||||
end
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('not_enough_medikit'))
|
||||
end
|
||||
isBusy = false
|
||||
end, 'medikit')
|
||||
end
|
||||
|
||||
function FastTravel(coords, heading)
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
DoScreenFadeOut(800)
|
||||
|
||||
while not IsScreenFadedOut() do
|
||||
Wait(500)
|
||||
end
|
||||
|
||||
ESX.Game.Teleport(playerPed, coords, function()
|
||||
DoScreenFadeIn(800)
|
||||
|
||||
if heading then
|
||||
SetEntityHeading(playerPed, heading)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- Draw markers & Marker logic
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local sleep = 1500
|
||||
|
||||
if ESX.PlayerData.job and ESX.PlayerData.job.name == 'ambulance' then
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
local isInMarker, hasExited = false, false
|
||||
local currentHospital, currentPart, currentPartNum
|
||||
|
||||
for hospitalNum, hospital in pairs(Config.Hospitals) do
|
||||
-- Ambulance Actions
|
||||
for k, v in ipairs(hospital.AmbulanceActions) do
|
||||
local distance = #(playerCoords - v)
|
||||
|
||||
if distance < Config.DrawDistance then
|
||||
sleep = 0
|
||||
DrawMarker(Config.Marker.type, v, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Config.Marker.x, Config.Marker.y, Config.Marker.z,
|
||||
Config.Marker.r, Config.Marker.g, Config.Marker.b, Config.Marker.a, false, false, 2, Config.Marker.rotate, nil,
|
||||
nil, false)
|
||||
|
||||
|
||||
if distance < Config.Marker.x then
|
||||
isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'AmbulanceActions', k
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Pharmacies
|
||||
for k, v in ipairs(hospital.Pharmacies) do
|
||||
local distance = #(playerCoords - v)
|
||||
|
||||
if distance < Config.DrawDistance then
|
||||
sleep = 0
|
||||
DrawMarker(Config.Marker.type, v, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Config.Marker.x, Config.Marker.y, Config.Marker.z,
|
||||
Config.Marker.r, Config.Marker.g, Config.Marker.b, Config.Marker.a, false, false, 2, Config.Marker.rotate, nil,
|
||||
nil, false)
|
||||
|
||||
|
||||
if distance < Config.Marker.x then
|
||||
isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'Pharmacy', k
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Vehicle Spawners
|
||||
for k, v in ipairs(hospital.Vehicles) do
|
||||
local distance = #(playerCoords - v.Spawner)
|
||||
|
||||
if distance < Config.DrawDistance then
|
||||
sleep = 0
|
||||
DrawMarker(v.Marker.type, v.Spawner, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r,
|
||||
v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
|
||||
|
||||
|
||||
if distance < v.Marker.x then
|
||||
isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'Vehicles', k
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Helicopter Spawners
|
||||
for k, v in ipairs(hospital.Helicopters) do
|
||||
local distance = #(playerCoords - v.Spawner)
|
||||
|
||||
if distance < Config.DrawDistance then
|
||||
sleep = 0
|
||||
DrawMarker(v.Marker.type, v.Spawner, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r,
|
||||
v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
|
||||
|
||||
|
||||
if distance < v.Marker.x then
|
||||
isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'Helicopters', k
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Fast Travels (Prompt)
|
||||
for k, v in ipairs(hospital.FastTravelsPrompt) do
|
||||
local distance = #(playerCoords - v.From)
|
||||
|
||||
if distance < Config.DrawDistance then
|
||||
sleep = 0
|
||||
DrawMarker(v.Marker.type, v.From, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r,
|
||||
v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
|
||||
|
||||
|
||||
if distance < v.Marker.x then
|
||||
isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'FastTravelsPrompt', k
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Logic for exiting & entering markers
|
||||
if isInMarker and not HasAlreadyEnteredMarker or
|
||||
(isInMarker and (LastHospital ~= currentHospital or LastPart ~= currentPart or LastPartNum ~= currentPartNum)) then
|
||||
if (LastHospital ~= nil and LastPart ~= nil and LastPartNum ~= nil) and
|
||||
(LastHospital ~= currentHospital or LastPart ~= currentPart or LastPartNum ~= currentPartNum)
|
||||
then
|
||||
TriggerEvent('esx_ambulancejob:hasExitedMarker', LastHospital, LastPart, LastPartNum)
|
||||
hasExited = true
|
||||
end
|
||||
|
||||
HasAlreadyEnteredMarker, LastHospital, LastPart, LastPartNum = true, currentHospital, currentPart, currentPartNum
|
||||
|
||||
TriggerEvent('esx_ambulancejob:hasEnteredMarker', currentHospital, currentPart, currentPartNum)
|
||||
end
|
||||
|
||||
if not hasExited and not isInMarker and HasAlreadyEnteredMarker then
|
||||
HasAlreadyEnteredMarker = false
|
||||
TriggerEvent('esx_ambulancejob:hasExitedMarker', LastHospital, LastPart, LastPartNum)
|
||||
end
|
||||
end
|
||||
Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('esx_ambulancejob:hasEnteredMarker', function(hospital, part, partNum)
|
||||
if part == 'AmbulanceActions' then
|
||||
CurrentAction = part
|
||||
CurrentActionMsg = TranslateCap('actions_prompt')
|
||||
CurrentActionData = {}
|
||||
elseif part == 'Pharmacy' then
|
||||
CurrentAction = part
|
||||
CurrentActionMsg = TranslateCap('open_pharmacy')
|
||||
CurrentActionData = {}
|
||||
elseif part == 'Vehicles' then
|
||||
CurrentAction = part
|
||||
CurrentActionMsg = TranslateCap('garage_prompt')
|
||||
CurrentActionData = { hospital = hospital, partNum = partNum }
|
||||
elseif part == 'Helicopters' then
|
||||
CurrentAction = part
|
||||
CurrentActionMsg = TranslateCap('helicopter_prompt')
|
||||
CurrentActionData = { hospital = hospital, partNum = partNum }
|
||||
elseif part == 'FastTravelsPrompt' then
|
||||
local travelItem = Config.Hospitals[hospital][part][partNum]
|
||||
|
||||
CurrentAction = part
|
||||
CurrentActionMsg = travelItem.Prompt
|
||||
CurrentActionData = { to = travelItem.To.coords, heading = travelItem.To.heading }
|
||||
end
|
||||
|
||||
ESX.TextUI(CurrentActionMsg)
|
||||
end)
|
||||
|
||||
AddEventHandler('esx_ambulancejob:hasExitedMarker', function(hospital, part, partNum)
|
||||
if not isInShopMenu then
|
||||
ESX.CloseContext()
|
||||
end
|
||||
ESX.HideUI()
|
||||
CurrentAction = nil
|
||||
end)
|
||||
|
||||
-- Key Controls
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local sleep = 1500
|
||||
|
||||
if CurrentAction then
|
||||
sleep = 0
|
||||
|
||||
if IsControlJustReleased(0, 38) then
|
||||
if CurrentAction == 'AmbulanceActions' then
|
||||
OpenAmbulanceActionsMenu()
|
||||
elseif CurrentAction == 'Pharmacy' then
|
||||
OpenPharmacyMenu()
|
||||
elseif CurrentAction == 'Vehicles' then
|
||||
OpenVehicleSpawnerMenu('car', CurrentActionData.hospital, CurrentAction, CurrentActionData.partNum)
|
||||
elseif CurrentAction == 'Helicopters' then
|
||||
OpenVehicleSpawnerMenu('helicopter', CurrentActionData.hospital, CurrentAction, CurrentActionData.partNum)
|
||||
elseif CurrentAction == 'FastTravelsPrompt' then
|
||||
FastTravel(CurrentActionData.to, CurrentActionData.heading)
|
||||
end
|
||||
|
||||
CurrentAction = nil
|
||||
end
|
||||
end
|
||||
|
||||
local playerCoords, letSleep = GetEntityCoords(PlayerPedId()), true
|
||||
|
||||
for hospitalNum, hospital in pairs(Config.Hospitals) do
|
||||
-- Fast Travels
|
||||
for k, v in ipairs(hospital.FastTravels) do
|
||||
local distance = #(playerCoords - v.From)
|
||||
|
||||
if distance < Config.DrawDistance then
|
||||
sleep = 0
|
||||
DrawMarker(v.Marker.type, v.From, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r,
|
||||
v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
|
||||
|
||||
|
||||
if distance < v.Marker.x then
|
||||
FastTravel(v.To.coords, v.To.heading)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterCommand("ambulance", function(src)
|
||||
if ESX.PlayerData.job and ESX.PlayerData.job.name == 'ambulance' and not ESX.PlayerData.dead then
|
||||
OpenMobileAmbulanceActionsMenu()
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterKeyMapping("ambulance", "Open Ambulance Actions Menu", "keyboard", "F6")
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:putInVehicle')
|
||||
AddEventHandler('esx_ambulancejob:putInVehicle', function()
|
||||
local playerPed = PlayerPedId()
|
||||
local vehicle, distance = ESX.Game.GetClosestVehicle()
|
||||
|
||||
if vehicle and distance < 5 then
|
||||
local maxSeats, freeSeat = GetVehicleMaxNumberOfPassengers(vehicle)
|
||||
|
||||
for i = maxSeats - 1, 0, -1 do
|
||||
if IsVehicleSeatFree(vehicle, i) then
|
||||
freeSeat = i
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if freeSeat then
|
||||
TaskWarpPedIntoVehicle(playerPed, vehicle, freeSeat)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function OpenCloakroomMenu()
|
||||
local elements = {
|
||||
{ unselectable = true, icon = "fas fa-shirt", title = TranslateCap('cloakroom') },
|
||||
{ icon = "fas fa-shirt", title = TranslateCap('ems_clothes_civil'), value = "citizen_wear" },
|
||||
{ icon = "fas fa-shirt", title = TranslateCap('ems_clothes_ems'), value = "ambulance_wear" },
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements, function(menu, element)
|
||||
if element.value == "citizen_wear" then
|
||||
ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin)
|
||||
TriggerEvent('skinchanger:loadSkin', skin)
|
||||
isOnDuty = false
|
||||
|
||||
for playerId, v in pairs(deadPlayerBlips) do
|
||||
RemoveBlip(v)
|
||||
deadPlayerBlips[playerId] = nil
|
||||
end
|
||||
deadPlayers = {}
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Off Duty")
|
||||
end
|
||||
end)
|
||||
elseif element.value == "ambulance_wear" then
|
||||
ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin)
|
||||
if skin.sex == 0 then
|
||||
TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male)
|
||||
else
|
||||
TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female)
|
||||
end
|
||||
|
||||
isOnDuty = true
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:getDeadPlayers', function(_deadPlayers)
|
||||
TriggerEvent('esx_ambulancejob:setDeadPlayers', _deadPlayers)
|
||||
end)
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Player Sex |^5" .. tostring(skin.sex) .. "^7")
|
||||
print("[^2INFO^7] On Duty")
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenPharmacyMenu()
|
||||
local elements = {
|
||||
{ unselectable = true, icon = "fas fa-pills", title = TranslateCap('pharmacy_menu_title') }
|
||||
}
|
||||
|
||||
for k, v in pairs(Config.PharmacyItems) do
|
||||
elements[#elements + 1] = {
|
||||
icon = "fas fa-pills",
|
||||
title = v.title,
|
||||
item = v.item
|
||||
}
|
||||
end
|
||||
|
||||
ESX.OpenContext("right", elements, function(menu, element)
|
||||
local elements2 = {
|
||||
{ unselectable = true, icon = "fas fa-pills", title = element.title },
|
||||
{ title = "Amount", input = true, inputType = "number", inputMin = 1, inputMax = 100,
|
||||
inputPlaceholder = "Amount to buy.." },
|
||||
{ icon = "fas fa-check-double", title = "Confirm", val = "confirm" }
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements2, function(menu2, element2)
|
||||
local amount = menu2.eles[2].inputValue
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Attempting to Give Item - ^5" .. tostring(element.item) .. "^7")
|
||||
end
|
||||
TriggerServerEvent('esx_ambulancejob:giveItem', element.item, amount)
|
||||
end, function(menu)
|
||||
OpenPharmacyMenu()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:heal')
|
||||
AddEventHandler('esx_ambulancejob:heal', function(healType, quiet)
|
||||
local playerPed = PlayerPedId()
|
||||
local maxHealth = GetEntityMaxHealth(playerPed)
|
||||
|
||||
if healType == 'small' then
|
||||
local health = GetEntityHealth(playerPed)
|
||||
local newHealth = math.min(maxHealth, math.floor(health + maxHealth / 8))
|
||||
SetEntityHealth(playerPed, newHealth)
|
||||
elseif healType == 'big' then
|
||||
SetEntityHealth(playerPed, maxHealth)
|
||||
end
|
||||
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Healing Player - ^5" .. tostring(healType) .. "^7")
|
||||
end
|
||||
if not quiet then
|
||||
ESX.ShowNotification(TranslateCap('healed'))
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:setJob')
|
||||
AddEventHandler('esx:setJob', function(job)
|
||||
if isOnDuty and job.name ~= 'ambulance' then
|
||||
for playerId, v in pairs(deadPlayerBlips) do
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Removing dead blip - ^5" .. tostring(playerId) .. "^7")
|
||||
end
|
||||
RemoveBlip(v)
|
||||
deadPlayerBlips[playerId] = nil
|
||||
end
|
||||
|
||||
isOnDuty = false
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:PlayerDead')
|
||||
AddEventHandler('esx_ambulancejob:PlayerDead', function(Player)
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Player Dead | ^5" .. tostring(Player) .. "^7")
|
||||
end
|
||||
deadPlayers[Player] = "dead"
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:PlayerNotDead')
|
||||
AddEventHandler('esx_ambulancejob:PlayerNotDead', function(Player)
|
||||
if deadPlayerBlips[Player] then
|
||||
RemoveBlip(deadPlayerBlips[Player])
|
||||
deadPlayerBlips[Player] = nil
|
||||
end
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Player Alive | ^5" .. tostring(Player) .. "^7")
|
||||
end
|
||||
deadPlayers[Player] = nil
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:setDeadPlayers')
|
||||
AddEventHandler('esx_ambulancejob:setDeadPlayers', function(_deadPlayers)
|
||||
deadPlayers = _deadPlayers
|
||||
|
||||
if isOnDuty then
|
||||
for playerId, v in pairs(deadPlayerBlips) do
|
||||
RemoveBlip(v)
|
||||
deadPlayerBlips[playerId] = nil
|
||||
end
|
||||
|
||||
for playerId, status in pairs(deadPlayers) do
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Player Dead | ^5" .. tostring(playerId) .. "^7")
|
||||
end
|
||||
if status == 'distress' then
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Creating Distress Blip for Player - ^5" .. tostring(playerId) .. "^7")
|
||||
end
|
||||
local player = GetPlayerFromServerId(playerId)
|
||||
local playerPed = GetPlayerPed(player)
|
||||
local blip = AddBlipForEntity(playerPed)
|
||||
|
||||
SetBlipSprite(blip, 303)
|
||||
SetBlipColour(blip, 1)
|
||||
SetBlipFlashes(blip, true)
|
||||
SetBlipCategory(blip, 7)
|
||||
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentSubstringPlayerName(TranslateCap('blip_dead'))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
|
||||
deadPlayerBlips[playerId] = blip
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:PlayerDistressed')
|
||||
AddEventHandler('esx_ambulancejob:PlayerDistressed', function(playerId, playerCoords)
|
||||
deadPlayers[playerId] = 'distress'
|
||||
|
||||
if isOnDuty then
|
||||
if Config.Debug then
|
||||
print("[^2INFO^7] Player Distress Recived - ID:^5" .. tostring(playerId) .. "^7")
|
||||
end
|
||||
ESX.ShowNotification(TranslateCap('unconscious_found'), "error", 10000)
|
||||
deadPlayerBlips[playerId] = nil
|
||||
|
||||
local blip = AddBlipForCoord(playerCoords.x, playerCoords.y, playerCoords.z)
|
||||
SetBlipSprite(blip, Config.DistressBlip.Sprite)
|
||||
SetBlipColour(blip, Config.DistressBlip.Color)
|
||||
SetBlipScale(blip, Config.DistressBlip.Scale)
|
||||
SetBlipFlashes(blip, true)
|
||||
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentSubstringPlayerName(TranslateCap('blip_dead'))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
|
||||
deadPlayerBlips[playerId] = blip
|
||||
end
|
||||
end)
|
||||
396
resources/[esx_addons]/esx_ambulancejob/client/main.lua
Normal file
396
resources/[esx_addons]/esx_ambulancejob/client/main.lua
Normal file
@@ -0,0 +1,396 @@
|
||||
local firstSpawn = true
|
||||
isDead, isSearched, medic = false, false, 0
|
||||
|
||||
RegisterNetEvent('esx:playerLoaded')
|
||||
AddEventHandler('esx:playerLoaded', function(xPlayer)
|
||||
ESX.PlayerLoaded = true
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:onPlayerLogout')
|
||||
AddEventHandler('esx:onPlayerLogout', function()
|
||||
ESX.PlayerLoaded = false
|
||||
firstSpawn = true
|
||||
end)
|
||||
|
||||
AddEventHandler('esx:onPlayerSpawn', function()
|
||||
if firstSpawn then
|
||||
firstSpawn = false
|
||||
return
|
||||
end
|
||||
isDead = false
|
||||
ClearTimecycleModifier()
|
||||
SetPedMotionBlur(PlayerPedId(), false)
|
||||
ClearExtraTimecycleModifier()
|
||||
EndDeathCam()
|
||||
end)
|
||||
|
||||
-- Create blips
|
||||
CreateThread(function()
|
||||
for k, v in pairs(Config.Hospitals) do
|
||||
local blip = AddBlipForCoord(v.Blip.coords)
|
||||
|
||||
SetBlipSprite(blip, v.Blip.sprite)
|
||||
SetBlipScale(blip, v.Blip.scale)
|
||||
SetBlipColour(blip, v.Blip.color)
|
||||
SetBlipAsShortRange(blip, true)
|
||||
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentSubstringPlayerName(TranslateCap('blip_hospital'))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:clsearch')
|
||||
AddEventHandler('esx_ambulancejob:clsearch', function(medicId)
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
if isDead then
|
||||
local coords = GetEntityCoords(playerPed)
|
||||
local playersInArea = ESX.Game.GetPlayersInArea(coords, 50.0)
|
||||
|
||||
for i = 1, #playersInArea, 1 do
|
||||
local player = playersInArea[i]
|
||||
if player == GetPlayerFromServerId(medicId) then
|
||||
medic = tonumber(medicId)
|
||||
isSearched = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function OnPlayerDeath()
|
||||
ESX.CloseContext()
|
||||
ClearTimecycleModifier()
|
||||
SetTimecycleModifier("REDMIST_blend")
|
||||
SetTimecycleModifierStrength(0.7)
|
||||
SetExtraTimecycleModifier("fp_vig_red")
|
||||
SetExtraTimecycleModifierStrength(1.0)
|
||||
SetPedMotionBlur(PlayerPedId(), true)
|
||||
TriggerServerEvent('esx_ambulancejob:setDeathStatus', true)
|
||||
StartDeathTimer()
|
||||
StartDeathCam()
|
||||
isDead = true
|
||||
StartDeathLoop()
|
||||
StartDistressSignal()
|
||||
|
||||
if Config.DeathAnim.enabled then
|
||||
local coords = GetEntityCoords(ESX.PlayerData.ped)
|
||||
NetworkResurrectLocalPlayer(coords.x, coords.y, coords.z, 0.0, 0.0, false)
|
||||
ESX.Streaming.RequestAnimDict(Config.DeathAnim.dict)
|
||||
TaskPlayAnim(ESX.PlayerData.ped, Config.DeathAnim.dict, Config.DeathAnim.name, Config.DeathAnim.fadeIn, Config.DeathAnim.fadeOut,
|
||||
-1, Config.DeathAnim.flags, Config.DeathAnim.playbackRate, false, false, false)
|
||||
FreezeEntityPosition(ESX.PlayerData.ped, true)
|
||||
|
||||
Citizen.CreateThreadNow(function()
|
||||
while ESX.PlayerData.dead do
|
||||
if not IsEntityPlayingAnim(ESX.PlayerData.ped, Config.DeathAnim.dict, Config.DeathAnim.name, 3) then
|
||||
TaskPlayAnim(ESX.PlayerData.ped, Config.DeathAnim.dict, Config.DeathAnim.name, Config.DeathAnim.fadeIn, Config.DeathAnim.fadeOut,
|
||||
-1, Config.DeathAnim.flags, Config.DeathAnim.playbackRate, false, false, false)
|
||||
end
|
||||
Wait(0)
|
||||
end
|
||||
RemoveAnimDict(Config.DeathAnim.dict)
|
||||
end)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:useItem')
|
||||
AddEventHandler('esx_ambulancejob:useItem', function(itemName)
|
||||
ESX.CloseContext()
|
||||
|
||||
if itemName == 'medikit' then
|
||||
local lib, anim = 'anim@heists@narcotics@funding@gang_idle', 'gang_chatting_idle01' -- TODO better animations
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
ESX.Streaming.RequestAnimDict(lib, function()
|
||||
TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0, false, false, false)
|
||||
RemoveAnimDict(lib)
|
||||
|
||||
Wait(500)
|
||||
while IsEntityPlayingAnim(playerPed, lib, anim, 3) do
|
||||
Wait(0)
|
||||
DisableAllControlActions(0)
|
||||
end
|
||||
|
||||
TriggerEvent('esx_ambulancejob:heal', 'big', true)
|
||||
ESX.ShowNotification(TranslateCap('used_medikit'))
|
||||
end)
|
||||
|
||||
elseif itemName == 'bandage' then
|
||||
local lib, anim = 'anim@heists@narcotics@funding@gang_idle', 'gang_chatting_idle01' -- TODO better animations
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
ESX.Streaming.RequestAnimDict(lib, function()
|
||||
TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0, false, false, false)
|
||||
RemoveAnimDict(lib)
|
||||
|
||||
Wait(500)
|
||||
while IsEntityPlayingAnim(playerPed, lib, anim, 3) do
|
||||
Wait(0)
|
||||
DisableAllControlActions(0)
|
||||
end
|
||||
|
||||
TriggerEvent('esx_ambulancejob:heal', 'small', true)
|
||||
ESX.ShowNotification(TranslateCap('used_bandage'))
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
function StartDeathLoop()
|
||||
CreateThread(function()
|
||||
while isDead do
|
||||
DisableAllControlActions(0)
|
||||
EnableControlAction(0, 47, true) -- G
|
||||
EnableControlAction(0, 245, true) -- T
|
||||
EnableControlAction(0, 38, true) -- E
|
||||
|
||||
ProcessCamControls()
|
||||
if isSearched then
|
||||
local playerPed = PlayerPedId()
|
||||
local ped = GetPlayerPed(GetPlayerFromServerId(medic))
|
||||
isSearched = false
|
||||
|
||||
AttachEntityToEntity(playerPed, ped, 11816, 0.54, 0.54, 0.0, 0.0, 0.0, 0.0, false, false, false, false, 2, true)
|
||||
Wait(1000)
|
||||
DetachEntity(playerPed, true, false)
|
||||
ClearPedTasksImmediately(playerPed)
|
||||
end
|
||||
Wait(0)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function StartDistressSignal()
|
||||
CreateThread(function()
|
||||
local timer = Config.BleedoutTimer
|
||||
|
||||
while timer > 0 and isDead do
|
||||
Wait(0)
|
||||
timer = timer - 30
|
||||
|
||||
SetTextFont(4)
|
||||
SetTextScale(0.5, 0.5)
|
||||
SetTextColour(200, 50, 50, 255)
|
||||
SetTextDropshadow(0.1, 3, 27, 27, 255)
|
||||
BeginTextCommandDisplayText('STRING')
|
||||
AddTextComponentSubstringPlayerName(TranslateCap('distress_send'))
|
||||
EndTextCommandDisplayText(0.446, 0.77)
|
||||
|
||||
if IsControlJustReleased(0, 47) then
|
||||
SendDistressSignal()
|
||||
break
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function SendDistressSignal()
|
||||
local playerPed = PlayerPedId()
|
||||
local coords = GetEntityCoords(playerPed)
|
||||
|
||||
ESX.ShowNotification(TranslateCap('distress_sent'))
|
||||
TriggerServerEvent('esx_ambulancejob:onPlayerDistress')
|
||||
end
|
||||
|
||||
function DrawGenericTextThisFrame()
|
||||
SetTextFont(4)
|
||||
SetTextScale(0.0, 0.5)
|
||||
SetTextColour(255, 255, 255, 255)
|
||||
SetTextDropshadow(0, 0, 0, 0, 255)
|
||||
SetTextDropShadow()
|
||||
SetTextOutline()
|
||||
SetTextCentre(true)
|
||||
end
|
||||
|
||||
function secondsToClock(seconds)
|
||||
local seconds, hours, mins, secs = tonumber(seconds), 0, 0, 0
|
||||
|
||||
if seconds <= 0 then
|
||||
return 0, 0
|
||||
else
|
||||
local hours = string.format('%02.f', math.floor(seconds / 3600))
|
||||
local mins = string.format('%02.f', math.floor(seconds / 60 - (hours * 60)))
|
||||
local secs = string.format('%02.f', math.floor(seconds - hours * 3600 - mins * 60))
|
||||
|
||||
return mins, secs
|
||||
end
|
||||
end
|
||||
|
||||
function StartDeathTimer()
|
||||
local canPayFine = false
|
||||
|
||||
if Config.EarlyRespawnFine then
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:checkBalance', function(canPay)
|
||||
canPayFine = canPay
|
||||
end)
|
||||
end
|
||||
|
||||
local earlySpawnTimer = ESX.Math.Round(Config.EarlyRespawnTimer / 1000)
|
||||
local bleedoutTimer = ESX.Math.Round(Config.BleedoutTimer / 1000)
|
||||
|
||||
CreateThread(function()
|
||||
-- early respawn timer
|
||||
while earlySpawnTimer > 0 and isDead do
|
||||
Wait(1000)
|
||||
|
||||
if earlySpawnTimer > 0 then
|
||||
earlySpawnTimer = earlySpawnTimer - 1
|
||||
end
|
||||
end
|
||||
|
||||
-- bleedout timer
|
||||
while bleedoutTimer > 0 and isDead do
|
||||
Wait(1000)
|
||||
|
||||
if bleedoutTimer > 0 then
|
||||
bleedoutTimer = bleedoutTimer - 1
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
local text, timeHeld
|
||||
|
||||
-- early respawn timer
|
||||
while earlySpawnTimer > 0 and isDead do
|
||||
Wait(0)
|
||||
text = TranslateCap('respawn_available_in', secondsToClock(earlySpawnTimer))
|
||||
|
||||
DrawGenericTextThisFrame()
|
||||
BeginTextCommandDisplayText('STRING')
|
||||
AddTextComponentSubstringPlayerName(text)
|
||||
EndTextCommandDisplayText(0.5, 0.8)
|
||||
end
|
||||
|
||||
-- bleedout timer
|
||||
while bleedoutTimer > 0 and isDead do
|
||||
Wait(0)
|
||||
text = TranslateCap('respawn_bleedout_in', secondsToClock(bleedoutTimer))
|
||||
|
||||
if not Config.EarlyRespawnFine then
|
||||
text = text .. TranslateCap('respawn_bleedout_prompt')
|
||||
|
||||
if IsControlPressed(0, 38) and timeHeld > 120 then
|
||||
RemoveItemsAfterRPDeath()
|
||||
break
|
||||
end
|
||||
elseif Config.EarlyRespawnFine and canPayFine then
|
||||
text = text .. TranslateCap('respawn_bleedout_fine', ESX.Math.GroupDigits(Config.EarlyRespawnFineAmount))
|
||||
|
||||
if IsControlPressed(0, 38) and timeHeld > 120 then
|
||||
TriggerServerEvent('esx_ambulancejob:payFine')
|
||||
RemoveItemsAfterRPDeath()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 38) then
|
||||
timeHeld += 1
|
||||
else
|
||||
timeHeld = 0
|
||||
end
|
||||
|
||||
DrawGenericTextThisFrame()
|
||||
|
||||
BeginTextCommandDisplayText('STRING')
|
||||
AddTextComponentSubstringPlayerName(text)
|
||||
EndTextCommandDisplayText(0.5, 0.8)
|
||||
end
|
||||
|
||||
if bleedoutTimer < 1 and isDead then
|
||||
RemoveItemsAfterRPDeath()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function GetClosestRespawnPoint()
|
||||
local plyCoords = GetEntityCoords(PlayerPedId())
|
||||
local closestDist, closestHospital
|
||||
|
||||
for i=1, #Config.RespawnPoints do
|
||||
local dist = #(plyCoords - Config.RespawnPoints[i].coords)
|
||||
|
||||
if not closestDist or dist <= closestDist then
|
||||
closestDist, closestHospital = dist, Config.RespawnPoints[i]
|
||||
end
|
||||
end
|
||||
|
||||
return closestHospital
|
||||
end
|
||||
|
||||
function RemoveItemsAfterRPDeath()
|
||||
TriggerServerEvent('esx_ambulancejob:setDeathStatus', false)
|
||||
|
||||
CreateThread(function()
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function()
|
||||
local ClosestHospital = GetClosestRespawnPoint()
|
||||
|
||||
ESX.SetPlayerData('loadout', {})
|
||||
|
||||
DoScreenFadeOut(800)
|
||||
RespawnPed(PlayerPedId(), ClosestHospital.coords, ClosestHospital.heading)
|
||||
while not IsScreenFadedOut() do
|
||||
Wait(0)
|
||||
end
|
||||
DoScreenFadeIn(800)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function RespawnPed(ped, coords, heading)
|
||||
SetEntityCoordsNoOffset(ped, coords.x, coords.y, coords.z, false, false, false)
|
||||
NetworkResurrectLocalPlayer(coords.x, coords.y, coords.z, heading, true, false)
|
||||
SetPlayerInvincible(ped, false)
|
||||
ClearPedBloodDamage(ped)
|
||||
|
||||
if Config.DeathAnim.enabled then
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
TriggerEvent('esx_basicneeds:resetStatus')
|
||||
TriggerServerEvent('esx:onPlayerSpawn')
|
||||
TriggerEvent('esx:onPlayerSpawn')
|
||||
TriggerEvent('playerSpawned') -- compatibility with old scripts, will be removed soon
|
||||
end
|
||||
|
||||
RegisterNetEvent('esx_phone:loaded')
|
||||
AddEventHandler('esx_phone:loaded', function(phoneNumber, contacts)
|
||||
local specialContact = {name = 'Ambulance', number = 'ambulance',
|
||||
base64Icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAABp5JREFUWIW1l21sFNcVhp/58npn195de23Ha4Mh2EASSvk0CPVHmmCEI0RCTQMBKVVooxYoalBVCVokICWFVFVEFeKoUdNECkZQIlAoFGMhIkrBQGxHwhAcChjbeLcsYHvNfsx+zNz+MBDWNrYhzSvdP+e+c973XM2cc0dihFi9Yo6vSzN/63dqcwPZcnEwS9PDmYoE4IxZIj+ciBb2mteLwlZdfji+dXtNU2AkeaXhCGteLZ/X/IS64/RoR5mh9tFVAaMiAldKQUGiRzFp1wXJPj/YkxblbfFLT/tjq9/f1XD0sQyse2li7pdP5tYeLXXMMGUojAiWKeOodE1gqpmNfN2PFeoF00T2uLGKfZzTwhzqbaEmeYWAQ0K1oKIlfPb7t+7M37aruXvEBlYvnV7xz2ec/2jNs9kKooKNjlksiXhJfLqf1PXOIU9M8fmw/XgRu523eTNyhhu6xLjbSeOFC6EX3t3V9PmwBla9Vv7K7u85d3bpqlwVcvHn7B8iVX+IFQoNKdwfstuFtWoFvwp9zj5XL7nRlPXyudjS9z+u35tmuH/lu6dl7+vSVXmDUcpbX+skP65BxOOPJA4gjDicOM2PciejeTwcsYek1hyl6me5nhNnmwPXBhjYuGC699OpzoaAO0PbYJSy5vgt4idOPrJwf6QuX2FO0oOtqIgj9pDU5dCWrMlyvXf86xsGgHyPeLos83Brns1WFXLxxgVBorHpW4vfQ6KhkbUtCot6srns1TLPjNVr7+1J0PepVc92H/Eagkb7IsTWd4ZMaN+yCXv5zLRY9GQ9xuYtQz4nfreWGdH9dNlkfnGq5/kdO88ekwGan1B3mDJsdMxCqv5w2Iq0khLs48vSllrsG/Y5pfojNugzScnQXKBVA8hrX51ddHq0o6wwIlgS8Y7obZdUZVjOYLC6e3glWkBBVHC2RJ+w/qezCuT/2sV6Q5VYpowjvnf/iBJJqvpYBgBS+w6wVB5DLEOiTZHWy36nNheg0jUBs3PoJnMfyuOdAECqrZ3K7KcACGQp89RAtlysCphqZhPtRzYlcPx+ExklJUiq0le5omCfOGFAYn3qFKS/fZAWS7a3Y2wa+GJOEy4US+B3aaPUYJamj4oI5LA/jWQBt5HIK5+JfXzZsJVpXi/ac8+mxWIXWzAG4Wb4g/jscNMp63I4U5FcKaVvsNyFALokSA47Kx8PVk83OabCHZsiqwAKEpjmfUJIkoh/R+L9oTpjluhRkGSPG4A7EkS+Y3HZk0OXYpIVNy01P5yItnptDsvtIwr0SunqoVP1GG1taTHn1CloXm9aLBEIEDl/IS2W6rg+qIFEYR7+OJTesqJqYa95/VKBNOHLjDBZ8sDS2998a0Bs/F//gvu5Z9NivadOc/U3676pEsizBIN1jCYlhClL+ELJDrkobNUBfBZqQfMN305HAgnIeYi4OnYMh7q/AsAXSdXK+eH41sykxd+TV/AsXvR/MeARAttD9pSqF9nDNfSEoDQsb5O31zQFprcaV244JPY7bqG6Xd9K3C3ALgbfk3NzqNE6CdplZrVFL27eWR+UASb6479ULfhD5AzOlSuGFTE6OohebElbcb8fhxA4xEPUgdTK19hiNKCZgknB+Ep44E44d82cxqPPOKctCGXzTmsBXbV1j1S5XQhyHq6NvnABPylu46A7QmVLpP7w9pNz4IEb0YyOrnmjb8bjB129fDBRkDVj2ojFbYBnCHHb7HL+OC7KQXeEsmAiNrnTqLy3d3+s/bvlVmxpgffM1fyM5cfsPZLuK+YHnvHELl8eUlwV4BXim0r6QV+4gD9Nlnjbfg1vJGktbI5UbN/TcGmAAYDG84Gry/MLLl/zKouO2Xukq/YkCyuWYV5owTIGjhVFCPL6J7kLOTcH89ereF1r4qOsm3gjSevl85El1Z98cfhB3qBN9+dLp1fUTco+0OrVMnNjFuv0chYbBYT2HcBoa+8TALyWQOt/ImPHoFS9SI3WyRajgdt2mbJgIlbREplfveuLf/XXemjXX7v46ZxzPlfd8YlZ01My5MUEVdIY5rueYopw4fQHkbv7/rZkTw6JwjyalBCHur9iD9cI2mU0UzD3P9H6yZ1G5dt7Gwe96w07dl5fXj7vYqH2XsNovdTI6KMrlsAXhRyz7/C7FBO/DubdVq4nBLPaohcnBeMr3/2k4fhQ+Uc8995YPq2wMzNjww2X+vwNt1p00ynrd2yKDJAVN628sBX1hZIdxXdStU9G5W2bd9YHR5L3f/CNmJeY9G8WAAAAAElFTkSuQmCC'}
|
||||
|
||||
TriggerEvent('esx_phone:addSpecialContact', specialContact.name, specialContact.number, specialContact.base64Icon)
|
||||
end)
|
||||
|
||||
AddEventHandler('esx:onPlayerDeath', function(data)
|
||||
OnPlayerDeath()
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:revive')
|
||||
AddEventHandler('esx_ambulancejob:revive', function()
|
||||
local playerPed = PlayerPedId()
|
||||
local coords = GetEntityCoords(playerPed)
|
||||
TriggerServerEvent('esx_ambulancejob:setDeathStatus', false)
|
||||
|
||||
DoScreenFadeOut(800)
|
||||
|
||||
while not IsScreenFadedOut() do
|
||||
Wait(50)
|
||||
end
|
||||
|
||||
local formattedCoords = {x = ESX.Math.Round(coords.x, 1), y = ESX.Math.Round(coords.y, 1), z = ESX.Math.Round(coords.z, 1)}
|
||||
|
||||
RespawnPed(playerPed, formattedCoords, 0.0)
|
||||
isDead = false
|
||||
ClearTimecycleModifier()
|
||||
SetPedMotionBlur(playerPed, false)
|
||||
ClearExtraTimecycleModifier()
|
||||
EndDeathCam()
|
||||
DoScreenFadeIn(800)
|
||||
end)
|
||||
|
||||
-- Load unloaded IPLs
|
||||
if Config.LoadIpl then
|
||||
RequestIpl('Coroner_Int_on') -- Morgue
|
||||
end
|
||||
314
resources/[esx_addons]/esx_ambulancejob/client/vehicle.lua
Normal file
314
resources/[esx_addons]/esx_ambulancejob/client/vehicle.lua
Normal file
@@ -0,0 +1,314 @@
|
||||
local spawnedVehicles = {}
|
||||
|
||||
function OpenVehicleSpawnerMenu(type, hospital, part, partNum)
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
local elements = {
|
||||
{unselectable = true, icon = "fas fa-car", title = TranslateCap('garage_title')},
|
||||
{icon = "fas fa-car", title = TranslateCap('garage_storeditem'), action = 'garage'},
|
||||
{icon = "fas fa-car", title = TranslateCap('garage_storeitem'), action = 'store_garage'},
|
||||
{icon = "fas fa-car", title = TranslateCap('garage_buyitem'), action = 'buy_vehicle'}
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements, function(menu,element)
|
||||
if element.action == "buy_vehicle" then
|
||||
local shopElements = {}
|
||||
local authorizedVehicles = Config.AuthorizedVehicles[type][ESX.PlayerData.job.grade_name]
|
||||
local shopCoords = Config.Hospitals[hospital][part][partNum].InsideShop
|
||||
|
||||
if #authorizedVehicles > 0 then
|
||||
for k,vehicle in ipairs(authorizedVehicles) do
|
||||
if IsModelInCdimage(vehicle.model) then
|
||||
local vehicleLabel = GetLabelText(GetDisplayNameFromVehicleModel(vehicle.model))
|
||||
|
||||
shopElements[#shopElements+1] = {
|
||||
icon = 'fas fa-car',
|
||||
title = ('%s - <span style="color:green;">%s</span>'):format(vehicleLabel, TranslateCap('shop_item', ESX.Math.GroupDigits(vehicle.price))),
|
||||
name = vehicleLabel,
|
||||
model = vehicle.model,
|
||||
price = vehicle.price,
|
||||
props = vehicle.props,
|
||||
type = type
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
if #shopElements > 0 then
|
||||
OpenShopMenu(shopElements, playerCoords, shopCoords)
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_notauthorized'))
|
||||
end
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_notauthorized'))
|
||||
end
|
||||
elseif element.action == "garage" then
|
||||
local garage = {
|
||||
{unselectable = true, icon = "fas fa-car", title = "Garage"}
|
||||
}
|
||||
|
||||
ESX.TriggerServerCallback('esx_vehicleshop:retrieveJobVehicles', function(jobVehicles)
|
||||
if #jobVehicles > 0 then
|
||||
local allVehicleProps = {}
|
||||
|
||||
for k,v in ipairs(jobVehicles) do
|
||||
local props = json.decode(v.vehicle)
|
||||
|
||||
if IsModelInCdimage(props.model) then
|
||||
local vehicleName = GetLabelText(GetDisplayNameFromVehicleModel(props.model))
|
||||
local label = ('%s - <span style="color:darkgoldenrod;">%s</span>: '):format(vehicleName, props.plate)
|
||||
|
||||
if v.stored == 1 or v.stored == true then
|
||||
label = label .. ('<span style="color:green;">%s</span>'):format(TranslateCap('garage_stored'))
|
||||
elseif v.stored == 0 or v.stored == false then
|
||||
label = label .. ('<span style="color:darkred;">%s</span>'):format(TranslateCap('garage_notstored'))
|
||||
end
|
||||
|
||||
garage[#garage+1] = {
|
||||
icon = 'fas fa-car',
|
||||
title = label,
|
||||
stored = v.stored,
|
||||
model = props.model,
|
||||
plate = props.plate
|
||||
}
|
||||
|
||||
allVehicleProps[props.plate] = props
|
||||
end
|
||||
end
|
||||
|
||||
if #garage > 0 then
|
||||
ESX.OpenContext("right", garage, function(menuG,elementG)
|
||||
if elementG.stored == 1 then
|
||||
local foundSpawn, spawnPoint = GetAvailableVehicleSpawnPoint(hospital, part, partNum)
|
||||
|
||||
if foundSpawn then
|
||||
ESX.CloseContext()
|
||||
|
||||
ESX.Game.SpawnVehicle(elementG.model, spawnPoint.coords, spawnPoint.heading, function(vehicle)
|
||||
local vehicleProps = allVehicleProps[elementG.plate]
|
||||
ESX.Game.SetVehicleProperties(vehicle, vehicleProps)
|
||||
|
||||
TriggerServerEvent('esx_vehicleshop:setJobVehicleState', elementG.plate, false)
|
||||
ESX.ShowNotification(TranslateCap('garage_released'))
|
||||
end)
|
||||
end
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_notavailable'))
|
||||
end
|
||||
end)
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_empty'))
|
||||
end
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_empty'))
|
||||
end
|
||||
end, type)
|
||||
elseif element.action == "store_garage" then
|
||||
StoreNearbyVehicle(playerCoords)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function StoreNearbyVehicle(playerCoords)
|
||||
local vehicles, plates, index = ESX.Game.GetVehiclesInArea(playerCoords, 30.0), {}, {}
|
||||
|
||||
if next(vehicles) then
|
||||
for i = 1, #vehicles do
|
||||
local vehicle = vehicles[i]
|
||||
|
||||
-- Make sure the vehicle we're saving is empty, or else it won't be deleted
|
||||
if GetVehicleNumberOfPassengers(vehicle) == 0 and IsVehicleSeatFree(vehicle, -1) then
|
||||
local plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle))
|
||||
plates[#plates + 1] = plate
|
||||
index[plate] = vehicle
|
||||
end
|
||||
end
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_store_nearby'))
|
||||
return
|
||||
end
|
||||
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:storeNearbyVehicle', function(plate)
|
||||
if plate then
|
||||
local vehicleId = index[plate]
|
||||
local attempts = 0
|
||||
ESX.Game.DeleteVehicle(vehicleId)
|
||||
isBusy = true
|
||||
|
||||
CreateThread(function()
|
||||
BeginTextCommandBusyspinnerOn('STRING')
|
||||
AddTextComponentSubstringPlayerName(TranslateCap('garage_storing'))
|
||||
EndTextCommandBusyspinnerOn(4)
|
||||
|
||||
while isBusy do
|
||||
Wait(100)
|
||||
end
|
||||
|
||||
BusyspinnerOff()
|
||||
end)
|
||||
|
||||
-- Workaround for vehicle not deleting when other players are near it.
|
||||
while DoesEntityExist(vehicleId) do
|
||||
Wait(500)
|
||||
attempts = attempts + 1
|
||||
|
||||
-- Give up
|
||||
if attempts > 30 then
|
||||
break
|
||||
end
|
||||
|
||||
vehicles = ESX.Game.GetVehiclesInArea(playerCoords, 30.0)
|
||||
if #vehicles > 0 then
|
||||
for i = 1, #vehicles do
|
||||
local vehicle = vehicles[i]
|
||||
if ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)) == plate then
|
||||
ESX.Game.DeleteVehicle(vehicle)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
isBusy = false
|
||||
ESX.ShowNotification(TranslateCap('garage_has_stored'))
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_has_notstored'))
|
||||
end
|
||||
end, plates)
|
||||
end
|
||||
|
||||
function GetAvailableVehicleSpawnPoint(hospital, part, partNum)
|
||||
local spawnPoints = Config.Hospitals[hospital][part][partNum].SpawnPoints
|
||||
local found, foundSpawnPoint = false, nil
|
||||
|
||||
for i=1, #spawnPoints, 1 do
|
||||
if ESX.Game.IsSpawnPointClear(spawnPoints[i].coords, spawnPoints[i].radius) then
|
||||
found, foundSpawnPoint = true, spawnPoints[i]
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if found then
|
||||
return true, foundSpawnPoint
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('garage_blocked'))
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function OpenShopMenu(elements, restoreCoords, shopCoords)
|
||||
local playerPed = PlayerPedId()
|
||||
isInShopMenu = true
|
||||
ESX.OpenContext("right", elements, function(menu,element)
|
||||
local elements2 = {
|
||||
{unselectable = true, icon = "fas fa-car", title = element.title},
|
||||
{icon = "fas fa-eye", title = "View", value = "view"}
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements2, function(menu2,element2)
|
||||
if element2.value == "view" then
|
||||
DeleteSpawnedVehicles()
|
||||
WaitForVehicleToLoad(element.model)
|
||||
|
||||
ESX.Game.SpawnLocalVehicle(element.model, shopCoords.xyz, shopCoords.w, function(vehicle)
|
||||
table.insert(spawnedVehicles, vehicle)
|
||||
TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
|
||||
FreezeEntityPosition(vehicle, true)
|
||||
SetModelAsNoLongerNeeded(element.model)
|
||||
|
||||
if element.props then
|
||||
ESX.Game.SetVehicleProperties(vehicle, element.props)
|
||||
end
|
||||
end)
|
||||
|
||||
local elements3 = {
|
||||
{unselectable = true, icon = "fas fa-car", title = element.title},
|
||||
{icon = "fas fa-check-double", title = "Buy", value = "buy"},
|
||||
{icon = "fas fa-eye", title = "Stop Viewing", value = "stop"}
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elements3, function(menu3,element3)
|
||||
if element3.value == 'stop' then
|
||||
isInShopMenu = false
|
||||
ESX.CloseContext()
|
||||
|
||||
DeleteSpawnedVehicles()
|
||||
FreezeEntityPosition(playerPed, false)
|
||||
SetEntityVisible(playerPed, true)
|
||||
|
||||
ESX.Game.Teleport(playerPed, restoreCoords)
|
||||
elseif element3.value == "buy" then
|
||||
local newPlate = exports['esx_vehicleshop']:GeneratePlate()
|
||||
local vehicle = GetVehiclePedIsIn(playerPed, false)
|
||||
local props = ESX.Game.GetVehicleProperties(vehicle)
|
||||
props.plate = newPlate
|
||||
|
||||
ESX.TriggerServerCallback('esx_ambulancejob:buyJobVehicle', function (bought)
|
||||
if bought then
|
||||
ESX.ShowNotification(TranslateCap('vehicleshop_bought', element.name, ESX.Math.GroupDigits(element.price)))
|
||||
|
||||
isInShopMenu = false
|
||||
ESX.CloseContext()
|
||||
DeleteSpawnedVehicles()
|
||||
FreezeEntityPosition(playerPed, false)
|
||||
SetEntityVisible(playerPed, true)
|
||||
|
||||
ESX.Game.Teleport(playerPed, restoreCoords)
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap('vehicleshop_money'))
|
||||
ESX.CloseContext()
|
||||
end
|
||||
end, props, element.type)
|
||||
end
|
||||
end,function ()
|
||||
isInShopMenu = false
|
||||
ESX.CloseContext()
|
||||
|
||||
DeleteSpawnedVehicles()
|
||||
FreezeEntityPosition(playerPed, false)
|
||||
SetEntityVisible(playerPed, true)
|
||||
|
||||
ESX.Game.Teleport(playerPed, restoreCoords)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
while true do
|
||||
sleep = 1500
|
||||
|
||||
if isInShopMenu then
|
||||
sleep = 0
|
||||
DisableControlAction(0, 75, true) -- Disable exit vehicle
|
||||
DisableControlAction(27, 75, true) -- Disable exit vehicle
|
||||
end
|
||||
Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
function DeleteSpawnedVehicles()
|
||||
while #spawnedVehicles > 0 do
|
||||
local vehicle = spawnedVehicles[1]
|
||||
ESX.Game.DeleteVehicle(vehicle)
|
||||
table.remove(spawnedVehicles, 1)
|
||||
end
|
||||
end
|
||||
|
||||
function WaitForVehicleToLoad(modelHash)
|
||||
modelHash = (type(modelHash) == 'number' and modelHash or joaat(modelHash))
|
||||
|
||||
if not HasModelLoaded(modelHash) then
|
||||
RequestModel(modelHash)
|
||||
|
||||
BeginTextCommandBusyspinnerOn('STRING')
|
||||
AddTextComponentSubstringPlayerName(TranslateCap('vehicleshop_awaiting_model'))
|
||||
EndTextCommandBusyspinnerOn(4)
|
||||
|
||||
while not HasModelLoaded(modelHash) do
|
||||
Wait(0)
|
||||
DisableAllControlActions(0)
|
||||
end
|
||||
|
||||
BusyspinnerOff()
|
||||
end
|
||||
end
|
||||
205
resources/[esx_addons]/esx_ambulancejob/config.lua
Normal file
205
resources/[esx_addons]/esx_ambulancejob/config.lua
Normal file
@@ -0,0 +1,205 @@
|
||||
Config = {}
|
||||
|
||||
Config.DrawDistance = 10.0 -- How close do you need to be in order for the markers to be drawn (in GTA units).
|
||||
Config.Debug = ESX.GetConfig().EnableDebug
|
||||
Config.Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
|
||||
|
||||
Config.ReviveReward = 700 -- Revive reward, set to 0 if you don't want it enabled
|
||||
Config.LoadIpl = true -- Disable if you're using fivem-ipl or other IPL loaders
|
||||
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
|
||||
-- Prevents desync on dead players by skipping ragdoll.
|
||||
-- Players are revived instantly and play an animation instead.
|
||||
-- Note: Natives like "IsPedFatallyInjured" will no longer work reliably.
|
||||
-- Use Player(src).state.isDead for death checks.
|
||||
Config.DeathAnim = {
|
||||
enabled = true,
|
||||
dict = "misslamar1dead_body",
|
||||
name = "dead_idle",
|
||||
fadeIn = 10.0,
|
||||
fadeOut = 10.0,
|
||||
flags = 1|2|8,
|
||||
playbackRate = 1.0
|
||||
}
|
||||
|
||||
Config.DistressBlip = {
|
||||
Sprite = 310,
|
||||
Color = 48,
|
||||
Scale = 2.0
|
||||
}
|
||||
|
||||
Config.zoom = {
|
||||
min = 1,
|
||||
max = 6,
|
||||
step = 0.5
|
||||
}
|
||||
|
||||
Config.EarlyRespawnTimer = 60000 * 1 -- time til respawn is available
|
||||
Config.BleedoutTimer = 60000 * 10 -- time til the player bleeds out
|
||||
|
||||
Config.EnablePlayerManagement = false -- Enable society managing (If you are using esx_society).
|
||||
|
||||
Config.RemoveWeaponsAfterRPDeath = true
|
||||
Config.RemoveCashAfterRPDeath = true
|
||||
Config.RemoveItemsAfterRPDeath = true
|
||||
|
||||
-- Let the player pay for respawning early, only if he can afford it.
|
||||
Config.EarlyRespawnFine = false
|
||||
Config.EarlyRespawnFineAmount = 5000
|
||||
|
||||
Config.OxInventory = ESX.GetConfig().OxInventory
|
||||
Config.RespawnPoints = {
|
||||
{coords = vector3(341.0, -1397.3, 32.5), heading = 48.5}, -- Central Los Santos
|
||||
{coords = vector3(1836.03, 3670.99, 34.28), heading = 296.06} -- Sandy Shores
|
||||
}
|
||||
|
||||
Config.PharmacyItems = {
|
||||
{
|
||||
title = "Medikit",
|
||||
item = "medikit"
|
||||
},
|
||||
{
|
||||
title = "Bandage",
|
||||
item = "bandage"
|
||||
},
|
||||
}
|
||||
|
||||
Config.Hospitals = {
|
||||
|
||||
CentralLosSantos = {
|
||||
|
||||
Blip = {
|
||||
coords = vector3(307.7, -1433.4, 28.9),
|
||||
sprite = 61,
|
||||
scale = 1.2,
|
||||
color = 2
|
||||
},
|
||||
|
||||
AmbulanceActions = {
|
||||
vector3(270.5, -1363.0, 23.5)
|
||||
},
|
||||
|
||||
Pharmacies = {
|
||||
vector3(230.1, -1366.1, 38.5)
|
||||
},
|
||||
|
||||
Vehicles = {
|
||||
{
|
||||
Spawner = vector3(307.7, -1433.4, 30.0),
|
||||
InsideShop = vector4(452.3055, -1360.1731, 43.5538, 319.1165),
|
||||
Marker = {type = 36, x = 1.0, y = 1.0, z = 1.0, r = 100, g = 50, b = 200, a = 100, rotate = true},
|
||||
SpawnPoints = {
|
||||
{coords = vector3(297.2, -1429.5, 29.8), heading = 227.6, radius = 4.0},
|
||||
{coords = vector3(294.0, -1433.1, 29.8), heading = 227.6, radius = 4.0},
|
||||
{coords = vector3(309.4, -1442.5, 29.8), heading = 227.6, radius = 6.0}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Helicopters = {
|
||||
{
|
||||
Spawner = vector3(317.5, -1449.5, 46.5),
|
||||
InsideShop = vector4(343.7769, -1423.0913, 76.1742, 322.8178),
|
||||
Marker = {type = 34, x = 1.5, y = 1.5, z = 1.5, r = 100, g = 150, b = 150, a = 100, rotate = true},
|
||||
SpawnPoints = {
|
||||
{coords = vector3(313.5, -1465.1, 46.5), heading = 142.7, radius = 10.0},
|
||||
{coords = vector3(299.5, -1453.2, 46.5), heading = 142.7, radius = 10.0}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
FastTravels = {
|
||||
{
|
||||
From = vector3(294.7, -1448.1, 29.0),
|
||||
To = {coords = vector3(272.8, -1358.8, 23.5), heading = 0.0},
|
||||
Marker = {type = 1, x = 2.0, y = 2.0, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
|
||||
},
|
||||
|
||||
{
|
||||
From = vector3(275.3, -1361, 23.5),
|
||||
To = {coords = vector3(295.8, -1446.5, 28.9), heading = 0.0},
|
||||
Marker = {type = 1, x = 2.0, y = 2.0, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
|
||||
},
|
||||
|
||||
{
|
||||
From = vector3(247.3, -1371.5, 23.5),
|
||||
To = {coords = vector3(333.1, -1434.9, 45.5), heading = 138.6},
|
||||
Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
|
||||
},
|
||||
|
||||
{
|
||||
From = vector3(335.5, -1432.0, 45.50),
|
||||
To = {coords = vector3(249.1, -1369.6, 23.5), heading = 0.0},
|
||||
Marker = {type = 1, x = 2.0, y = 2.0, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
|
||||
},
|
||||
|
||||
{
|
||||
From = vector3(234.5, -1373.7, 20.9),
|
||||
To = {coords = vector3(320.9, -1478.6, 28.8), heading = 0.0},
|
||||
Marker = {type = 1, x = 1.5, y = 1.5, z = 1.0, r = 102, g = 0, b = 102, a = 100, rotate = false}
|
||||
},
|
||||
|
||||
{
|
||||
From = vector3(317.9, -1476.1, 28.9),
|
||||
To = {coords = vector3(238.6, -1368.4, 23.5), heading = 0.0},
|
||||
Marker = {type = 1, x = 1.5, y = 1.5, z = 1.0, r = 102, g = 0, b = 102, a = 100, rotate = false}
|
||||
}
|
||||
},
|
||||
|
||||
FastTravelsPrompt = {
|
||||
{
|
||||
From = vector3(237.4, -1373.8, 26.0),
|
||||
To = {coords = vector3(251.9, -1363.3, 38.5), heading = 0.0},
|
||||
Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false},
|
||||
Prompt = TranslateCap('fast_travel')
|
||||
},
|
||||
|
||||
{
|
||||
From = vector3(256.5, -1357.7, 36.0),
|
||||
To = {coords = vector3(235.4, -1372.8, 26.3), heading = 0.0},
|
||||
Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false},
|
||||
Prompt = TranslateCap('fast_travel')
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Config.AuthorizedVehicles = {
|
||||
car = {
|
||||
ambulance = {
|
||||
{model = 'ambulance', price = 5000}
|
||||
},
|
||||
|
||||
doctor = {
|
||||
{model = 'ambulance', price = 4500}
|
||||
},
|
||||
|
||||
chief_doctor = {
|
||||
{model = 'ambulance', price = 3000}
|
||||
},
|
||||
|
||||
boss = {
|
||||
{model = 'ambulance', price = 2000}
|
||||
}
|
||||
},
|
||||
|
||||
helicopter = {
|
||||
ambulance = {},
|
||||
|
||||
doctor = {
|
||||
{model = 'buzzard2', price = 150000}
|
||||
},
|
||||
|
||||
chief_doctor = {
|
||||
{model = 'buzzard2', price = 150000},
|
||||
{model = 'seasparrow', price = 300000}
|
||||
},
|
||||
|
||||
boss = {
|
||||
{model = 'buzzard2', price = 10000},
|
||||
{model = 'seasparrow', price = 250000}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
resources/[esx_addons]/esx_ambulancejob/esx_ambulancejob.sql
Normal file
31
resources/[esx_addons]/esx_ambulancejob/esx_ambulancejob.sql
Normal file
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Paramedic',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Doctor',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Chief Doctor',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Director',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','EMS')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bandage', 2),
|
||||
('medikit','Medikit', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
28
resources/[esx_addons]/esx_ambulancejob/fxmanifest.lua
Normal file
28
resources/[esx_addons]/esx_ambulancejob/fxmanifest.lua
Normal file
@@ -0,0 +1,28 @@
|
||||
fx_version 'adamant'
|
||||
game 'gta5'
|
||||
description 'Provides a way for players to RP as paramedics (heal/revive players)'
|
||||
version '1.0.2'
|
||||
legacyversion '1.13.4'
|
||||
lua54 'yes'
|
||||
|
||||
shared_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
'@es_extended/locale.lua',
|
||||
'locales/*.lua',
|
||||
'config.lua'
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
'@oxmysql/lib/MySQL.lua',
|
||||
'server/*.lua'
|
||||
}
|
||||
|
||||
client_scripts {
|
||||
'client/*.lua'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
'es_extended',
|
||||
'esx_skin',
|
||||
'esx_vehicleshop'
|
||||
}
|
||||
85
resources/[esx_addons]/esx_ambulancejob/locales/cs.lua
Normal file
85
resources/[esx_addons]/esx_ambulancejob/locales/cs.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
Locales['cs'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'šatna',
|
||||
['ems_clothes_civil'] = 'civilní oblečení',
|
||||
['ems_clothes_ems'] = 'zdravotnické oblečení',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'ambulance',
|
||||
['helicopter_prompt'] = 'press [E] to access the Helicopter Actions.',
|
||||
['garage_prompt'] = 'press [E] to access the Vehicle Actions.',
|
||||
['garage_title'] = 'vehicle Actions',
|
||||
['garage_stored'] = 'stored',
|
||||
['garage_notstored'] = 'not in garage',
|
||||
['garage_storing'] = 'we\'re attempting to remove the vehicle, make sure no players are around it.',
|
||||
['garage_has_stored'] = 'the vehicle has been stored in your garage',
|
||||
['garage_has_notstored'] = 'no nearby owned vehicles were found',
|
||||
['garage_notavailable'] = 'your vehicle is not stored in the garage.',
|
||||
['garage_blocked'] = 'there\'s no available spawn points!',
|
||||
['garage_empty'] = 'you don\'t have any vehicles in your garage.',
|
||||
['garage_released'] = 'your vehicle has been released from the garage.',
|
||||
['garage_store_nearby'] = 'there is no nearby vehicles.',
|
||||
['garage_storeditem'] = 'open garage',
|
||||
['garage_storeitem'] = 'store vehicle in garage',
|
||||
['garage_buyitem'] = 'vehicle shop',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'vehicle Shop',
|
||||
['vehicleshop_confirm'] = 'do you want to buy this vehicle?',
|
||||
['vehicleshop_bought'] = 'you have bought %s for $%s',
|
||||
['vehicleshop_money'] = 'you cannot afford that vehicle',
|
||||
['vehicleshop_awaiting_model'] = 'the vehicle is currently DOWNLOADING & LOADING please wait',
|
||||
['confirm_no'] = 'no',
|
||||
['confirm_yes'] = 'yes',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'probíhá oživení!',
|
||||
['revive_complete'] = 'oživili jste %s',
|
||||
['revive_complete_award'] = 'oživili jste %s a dostali jste $%s!',
|
||||
['revive_fail_offline'] = 'that player is no longer online',
|
||||
['heal_inprogress'] = 'uzdravujete!',
|
||||
['heal_complete'] = 'uzdravili jste %s',
|
||||
['no_players'] = 'v okolí není žádný hráč!',
|
||||
['player_not_unconscious'] = 'hráč není v bezvědomí!',
|
||||
['player_not_conscious'] = 'hráč je v bezvědomí!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'akce šéfa',
|
||||
-- Misc
|
||||
['invalid_amount'] = ' ná částka',
|
||||
['actions_prompt'] = 'press [E] access the Ambulance Actions.',
|
||||
['deposit_amount'] = 'částka vkladu',
|
||||
['money_withdraw'] = 'částka výběru',
|
||||
['fast_travel'] = 'stiskněte [E] k rychlému odcestování.',
|
||||
['open_pharmacy'] = 'stiskněte [E] k otevření lékárny.',
|
||||
['pharmacy_menu_title'] = 'lékárna',
|
||||
['pharmacy_take'] = 'vzít %s',
|
||||
['medikit'] = 'lékarnička',
|
||||
['bandage'] = 'obvaz',
|
||||
['max_item'] = 'již nesete dostatek věcí.',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Zdravotnické menu',
|
||||
['ems_menu_title'] = 'záchranka - Zdravotnické menu',
|
||||
['ems_menu_revive'] = 'oživit hráče',
|
||||
['ems_menu_putincar'] = 'naložit do vozidla',
|
||||
['ems_menu_small'] = 'ošetřit malé zranění',
|
||||
['ems_menu_big'] = 'ošetřit vážné zranění',
|
||||
['ems_menu_search'] = 'pacient nebyl nalezen',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'zdravotnický poplach',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'oživení dostupné za %s minut a %s sekund\n',
|
||||
['respawn_bleedout_in'] = 'vykrvácíte za %s minut a %s sekund\n',
|
||||
['respawn_bleedout_prompt'] = 'držte [E] pro respawn.',
|
||||
['respawn_now_fine'] = 'držte [E] pro oživení za $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'zaplatili jste $%s za respawn.',
|
||||
['distress_send'] = 'stiskněte [G] pro vyslání tísňového signálu',
|
||||
['distress_sent'] = 'tísňový signál byl vyslán dostupným jednotkám!',
|
||||
-- Revive
|
||||
['revive_help'] = 'oživit hráče',
|
||||
-- Item
|
||||
['used_medikit'] = 'použili jste 1x lékarničku',
|
||||
['used_bandage'] = 'použili jste 1x obvaz',
|
||||
['not_enough_medikit'] = 'nemáte medikit.',
|
||||
['not_enough_bandage'] = 'nemáte bandage.',
|
||||
['healed'] = 'byli jste ošetřeni.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'nemocnice',
|
||||
['blip_dead'] = 'unconscious player',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/de.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/de.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['de'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'Umkleide',
|
||||
['ems_clothes_civil'] = 'Zivilklamotten',
|
||||
['ems_clothes_ems'] = 'Rettungsdienst Uniform',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'Rettungsdienst',
|
||||
['helicopter_prompt'] = 'Drücke [E] um auf die Helikopter Aktionen zuzugreifen.',
|
||||
['garage_prompt'] = 'Drücke [E] um auf die Fahrzeug Aktionen zuzugreifen.',
|
||||
['garage_title'] = 'Fahrzeug Aktionen',
|
||||
['garage_stored'] = 'Eingeparkt',
|
||||
['garage_notstored'] = 'Nicht in der Garage',
|
||||
['garage_storing'] = 'Das Fahrzeug wird eingeparkt! Passe auf das keine Person in der nähe ist.',
|
||||
['garage_has_stored'] = 'Das Fahrzeug wurde eingeparkt',
|
||||
['garage_has_notstored'] = 'Keine Fahrzeuge die dir gehören wurden in der Nähe gefunden!',
|
||||
['garage_notavailable'] = 'Dein Fahrzeug ist in der Garage nicht eingeparkt.',
|
||||
['garage_blocked'] = 'Es gibt keine verfügbaren ausparkpunkte',
|
||||
['garage_empty'] = 'Du hast kein Fahrzeug in der Garage!',
|
||||
['garage_released'] = 'Dein Fahrzeug wurde ausgeparkt.',
|
||||
['garage_store_nearby'] = 'Es gibt keine Fahrzeuge in der nähe.',
|
||||
['garage_storeditem'] = 'Garage Öffnen',
|
||||
['garage_storeitem'] = 'Fahrzeug in der Garage Einparken',
|
||||
['garage_buyitem'] = 'Fahrzeug Händler',
|
||||
['shop_item'] = '%s€',
|
||||
['vehicleshop_title'] = 'Fahrzeug Händler',
|
||||
['vehicleshop_confirm'] = 'Willst du dieses Fahrzeug kaufen?',
|
||||
['vehicleshop_bought'] = 'Du kaufst %s für %s€',
|
||||
['vehicleshop_money'] = 'Du kannst dir dieses Fahrzeug nicht leisten!',
|
||||
['vehicleshop_awaiting_model'] = 'Das Fahrzeug Lädt... Warte bitte!',
|
||||
['confirm_no'] = 'Nein',
|
||||
['confirm_yes'] = 'Ja',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Wiederbelebung wird durchgeführt!',
|
||||
['revive_complete'] = 'Du belebst %s wieder',
|
||||
['revive_complete_award'] = 'Du bekommst %s und verdienst %s€!',
|
||||
['revive_fail_offline'] = 'Dieser Spieler ist nicht mehr Online!',
|
||||
['heal_inprogress'] = 'Du heilst jemanden!',
|
||||
['heal_complete'] = 'Du hast %s geheilt',
|
||||
['no_players'] = 'Keine Person in der nähe!',
|
||||
['player_not_unconscious'] = 'Dieser Spieler ist nicht bewusstlos!',
|
||||
['player_not_conscious'] = 'Dieser Spieler ist nicht bei bewusstsein!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Boss Aktionen',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Ungültige Anzahl',
|
||||
['actions_prompt'] = 'Drücke [E] Um auf die Rettungsdienst Aktionen zuzugreifen!',
|
||||
['deposit_amount'] = 'Anzahl einzahlen',
|
||||
['money_withdraw'] = 'Anzahl auszahlen',
|
||||
['fast_travel'] = 'Drücke [E] zum Schnellreisen.',
|
||||
['open_pharmacy'] = 'Drücke [E] um die Apotheke zu öffnen.',
|
||||
['pharmacy_menu_title'] = 'Apotheke',
|
||||
['pharmacy_take'] = 'Nehmen <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Verbandskasten',
|
||||
['bandage'] = 'Verband',
|
||||
['max_item'] = 'Du trägst bereits genug.',
|
||||
['unconscious_found'] = '[LEITSTELLE]: Uns wurde eine Bewusstlose Person gemeldet',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Rettungsdienst Menü',
|
||||
['ems_menu_title'] = 'Rettungsdienst - Menü',
|
||||
['ems_menu_revive'] = 'Person wiederbeleben',
|
||||
['ems_menu_putincar'] = 'In das Fahrzeug setzen',
|
||||
['ems_menu_small'] = 'Kleine Wunden heilen',
|
||||
['ems_menu_big'] = 'Starke Verletzungen behandeln',
|
||||
['ems_menu_search'] = 'Patient nicht gefunden!',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'Rettungsdienst Alamieren',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Respawn verfügbar in %s Minuten und %s Sekunden',
|
||||
['respawn_bleedout_in'] = 'Du blutest aus in %s Minuten und %s Sekunden',
|
||||
['respawn_bleedout_prompt'] = 'Halte [E] zum respawnen',
|
||||
['respawn_bleedout_fine'] = 'Halte [E] zum respawnen für %s€',
|
||||
['respawn_bleedout_fine_msg'] = 'Du zahlst %s€ zum respawnen!',
|
||||
['distress_send'] = 'Drücke [G] um den Rettungsdienst zu alamieren!',
|
||||
['distress_sent'] = 'Notsignal wurde an alle verfügbaren einheiten gesendet!',
|
||||
-- Revive
|
||||
['revive_help'] = 'Person wiederbeleben',
|
||||
-- Item
|
||||
['used_medikit'] = 'Du nutzt 1x Verbandskasten',
|
||||
['used_bandage'] = 'Du nutzt 1x Verband',
|
||||
['not_enough_medikit'] = 'Du hast keinen Verbandskasten!',
|
||||
['not_enough_bandage'] = 'Du hast keinen Verband!',
|
||||
['healed'] = 'Du wurdest geheilt',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Krankenhaus',
|
||||
['blip_dead'] = 'Sterbende Person',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/en.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/en.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['en'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'Locker Room',
|
||||
['ems_clothes_civil'] = 'Civilian Clothes',
|
||||
['ems_clothes_ems'] = 'EMS Clothes',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'Ambulance',
|
||||
['helicopter_prompt'] = 'Press [E] to access the Helicopter Actions.',
|
||||
['garage_prompt'] = 'Press [E] to access the Vehicle Actions.',
|
||||
['garage_title'] = 'Vehicle Actions',
|
||||
['garage_stored'] = 'Stored',
|
||||
['garage_notstored'] = 'Not in garage',
|
||||
['garage_storing'] = 'We\'re attempting to remove the vehicle, make sure no players are around it.',
|
||||
['garage_has_stored'] = 'The vehicle has been stored in your garage',
|
||||
['garage_has_notstored'] = 'No nearby owned vehicles were found',
|
||||
['garage_notavailable'] = 'Your vehicle is not stored in the garage.',
|
||||
['garage_blocked'] = 'There\'s no available spawn points!',
|
||||
['garage_empty'] = 'You don\'t have any vehicles in your garage.',
|
||||
['garage_released'] = 'Your vehicle has been released from the garage.',
|
||||
['garage_store_nearby'] = 'There is no nearby vehicles.',
|
||||
['garage_storeditem'] = 'Open garage',
|
||||
['garage_storeitem'] = 'Store vehicle in garage',
|
||||
['garage_buyitem'] = 'Vehicle shop',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Yehicle Shop',
|
||||
['vehicleshop_confirm'] = 'Yo you want to buy this vehicle?',
|
||||
['vehicleshop_bought'] = 'You have bought %s for $%s',
|
||||
['vehicleshop_money'] = 'You cannot afford that vehicle',
|
||||
['vehicleshop_awaiting_model'] = 'The vehicle is currently DOWNLOADING & LOADING please wait',
|
||||
['confirm_no'] = 'No',
|
||||
['confirm_yes'] = 'Yes',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'A revive is in progress!',
|
||||
['revive_complete'] = 'You have revived %s',
|
||||
['revive_complete_award'] = 'You have revived %s and earned $%s!',
|
||||
['revive_fail_offline'] = 'That player is no longer online',
|
||||
['heal_inprogress'] = 'You are healing!',
|
||||
['heal_complete'] = 'You have healed %s',
|
||||
['no_players'] = 'No players nearby',
|
||||
['player_not_unconscious'] = 'That player is not unconscious!',
|
||||
['player_not_conscious'] = 'That player is not conscious!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Boss Actions',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Invalid amount',
|
||||
['actions_prompt'] = 'Press [E] access the Ambulance Actions.',
|
||||
['deposit_amount'] = 'Deposit Amount',
|
||||
['money_withdraw'] = 'Amount withdrawn',
|
||||
['fast_travel'] = 'press [E] to fast travel.',
|
||||
['open_pharmacy'] = 'Press [E] to open the pharmacy.',
|
||||
['pharmacy_menu_title'] = 'Pharmacy',
|
||||
['pharmacy_take'] = 'Take <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Medikit',
|
||||
['bandage'] = 'Bandage',
|
||||
['max_item'] = 'You are already carrying enough.',
|
||||
['unconscious_found'] = '[DISPATCH]: An Unconscious Person Has Been Reported',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'EMS Menu',
|
||||
['ems_menu_title'] = 'Ambulance - EMS Menu',
|
||||
['ems_menu_revive'] = 'Revive Player',
|
||||
['ems_menu_putincar'] = 'Put in Vehicle',
|
||||
['ems_menu_small'] = 'Heal small wounds',
|
||||
['ems_menu_big'] = 'Treat serious injuries',
|
||||
['ems_menu_search'] = 'Patient not found',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'Alert Ambulance',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Respawn available in %s minutes %s seconds',
|
||||
['respawn_bleedout_in'] = 'You will bleed out in %s minutes %s seconds\n',
|
||||
['respawn_bleedout_prompt'] = 'Hold [E] to respawn',
|
||||
['respawn_bleedout_fine'] = 'Hold [E] to respawn for $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'You paid $%s to respawn.',
|
||||
['distress_send'] = 'Press [G] to send distress signal',
|
||||
['distress_sent'] = 'Distress signal has been sent to available units!',
|
||||
-- Revive
|
||||
['revive_help'] = 'revive a player',
|
||||
-- Item
|
||||
['used_medikit'] = 'You have used 1x medikit',
|
||||
['used_bandage'] = 'You have used 1x bandage',
|
||||
['not_enough_medikit'] = 'You do not have medikit.',
|
||||
['not_enough_bandage'] = 'You do not have bandage.',
|
||||
['healed'] = 'You have been treated.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Hospital',
|
||||
['blip_dead'] = 'Dying Player',
|
||||
}
|
||||
88
resources/[esx_addons]/esx_ambulancejob/locales/es.lua
Normal file
88
resources/[esx_addons]/esx_ambulancejob/locales/es.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
-- Traducción by https://github.com/ItsManueh
|
||||
|
||||
Locales['es'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'Guardarropa',
|
||||
['ems_clothes_civil'] = 'Camiseta',
|
||||
['ems_clothes_ems'] = 'Equipo de ambulancia',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'Ambulancia',
|
||||
['helicopter_prompt'] = 'Presiona [E] para acceder al Acciones de helicópteros.',
|
||||
['garage_prompt'] = 'Presiona [E] para acceder al Acciones de vehículos.',
|
||||
['garage_title'] = 'Acciones de vehículos',
|
||||
['garage_stored'] = 'Almacenado',
|
||||
['garage_notstored'] = 'No en el garaje',
|
||||
['garage_storing'] = 'Estamos intentando retirar el vehículo, asegúrese de que no haya jugadores a su alrededor.',
|
||||
['garage_has_stored'] = 'El vehículo se ha guardado en su garaje',
|
||||
['garage_has_notstored'] = 'No se encontraron vehículos de propiedad cercana',
|
||||
['garage_notavailable'] = 'Su vehículo no está guardado en el garaje.',
|
||||
['garage_blocked'] = '¡No hay puntos de generación disponibles!',
|
||||
['garage_empty'] = 'No tiene ningún vehículo en su garaje.',
|
||||
['garage_released'] = 'Su vehículo ha sido sacado del garaje.',
|
||||
['garage_store_nearby'] = 'No hay vehículos cercanos.',
|
||||
['garage_storeditem'] = 'Garaje abierto',
|
||||
['garage_storeitem'] = 'Almacenar vehículo en garaje',
|
||||
['garage_buyitem'] = 'Tienda de vehículos',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Tienda de vehículos',
|
||||
['vehicleshop_confirm'] = '¿Quieres comprar este vehículo?',
|
||||
['vehicleshop_bought'] = 'Usted ha comprado %s para $%s',
|
||||
['vehicleshop_money'] = 'No puedes pagar ese vehículo',
|
||||
['vehicleshop_awaiting_model'] = 'El vehículo está actualmente DESCARGANDO & CARGANDO por favor espere.',
|
||||
['confirm_no'] = 'No',
|
||||
['confirm_yes'] = 'Si',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Reanimación en curso',
|
||||
['revive_complete'] = 'Has sido reanimado %s',
|
||||
['revive_complete_award'] = 'Has sido reanimado %s, $%s',
|
||||
['revive_fail_offline'] = 'Ese jugador ya no está en línea',
|
||||
['heal_inprogress'] = '!Te estas curando!',
|
||||
['heal_complete'] = 'Te has curado %s',
|
||||
['no_players'] = 'Ningún jugador cerca',
|
||||
['player_not_unconscious'] = 'n\'Estás inconsciente',
|
||||
['player_not_conscious'] = '¡Ese jugador no está consciente!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Acciones del jefe',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Cantidad no válida',
|
||||
['actions_prompt'] = 'Presiona [E] acceder al Acciones de ambulancia.',
|
||||
['deposit_amount'] = 'Cantidad de fianza depositada',
|
||||
['money_withdraw'] = 'Cantidad de fianza retirada',
|
||||
['fast_travel'] = 'Presiona [E] para viajar rápido.',
|
||||
['open_pharmacy'] = 'Presiona [E] para abrir la farmacia.',
|
||||
['pharmacy_menu_title'] = 'Farmacia',
|
||||
['pharmacy_take'] = 'tomar <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Kit médico',
|
||||
['bandage'] = 'Vendas',
|
||||
['max_item'] = 'Ya has ocupado el máximo número de items disponibles.',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'ayuda ciudadana',
|
||||
['ems_menu_title'] = 'ambulancia - Ayuda Ciudadana',
|
||||
['ems_menu_revive'] = 'reanimar',
|
||||
['ems_menu_putincar'] = 'meter en el vehículo',
|
||||
['ems_menu_small'] = 'Curar pequeñas heridas',
|
||||
['ems_menu_big'] = 'Tratar lesiones graves',
|
||||
['ems_menu_search'] = 'Paciente no encontrado',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'Alerta de ambulancia',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Reaparición disponible en %s minutes %s seconds',
|
||||
['respawn_bleedout_in'] = 'te desangrarás en %s minutes %s seconds\n',
|
||||
['respawn_bleedout_prompt'] = 'Mantén [E] reaparecer',
|
||||
['respawn_bleedout_fine'] = 'Mantén [E] para reaparecer $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'Tu pagaste $%s para reaparecer.',
|
||||
['distress_send'] = 'Presiona [G] para enviar señal de socorro',
|
||||
['distress_sent'] = 'Se ha enviado una señal de socorro a las unidades disponibles.',
|
||||
|
||||
-- Revive
|
||||
['revive_help'] = 'Revivir un jugador',
|
||||
-- Item
|
||||
['used_medikit'] = 'Has usado 1x Kit médico',
|
||||
['used_bandage'] = 'Has usado 1x Vendas',
|
||||
['not_enough_medikit'] = 'Usted no tiene kit médico.',
|
||||
['not_enough_bandage'] = 'Usted no tiene vendas.',
|
||||
['healed'] = 'Has sido tratado.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Hospital',
|
||||
['blip_dead'] = 'Jugador inconsciente',
|
||||
}
|
||||
85
resources/[esx_addons]/esx_ambulancejob/locales/fi.lua
Normal file
85
resources/[esx_addons]/esx_ambulancejob/locales/fi.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
Locales['fi'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'Vaatelokero',
|
||||
['ems_clothes_civil'] = 'Siviilikamppeet',
|
||||
['ems_clothes_ems'] = 'Työkamppeet',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'Ambulanssi',
|
||||
['helicopter_prompt'] = 'Paina [E] päästäksesi helikopteritoimintoihin.',
|
||||
['garage_prompt'] = 'Paina [E] päästäksesi ajoneuvotoimintoihin.',
|
||||
['garage_title'] = 'Ajoneuvon toiminnot',
|
||||
['garage_stored'] = 'Tallennettu',
|
||||
['garage_notstored'] = 'Ei tallissa',
|
||||
['garage_storing'] = 'Yritämme poistaa ajoneuvon, varmista, ettei sen lähellä ole pelaajia.',
|
||||
['garage_has_stored'] = 'Ajoneuvoa on säilytetty tallissasi',
|
||||
['garage_has_notstored'] = 'Lähistöltä ei löytynyt ajoneuvoja',
|
||||
['garage_notavailable'] = 'Ajoneuvoasi ei säilytetä tallissa.',
|
||||
['garage_blocked'] = 'Spawn-pisteitä ei ole saatavilla!',
|
||||
['garage_empty'] = 'Sinulla ei ole ajoneuvoja tallissasi.',
|
||||
['garage_released'] = 'Ajoneuvosi on vapautettu tallista.',
|
||||
['garage_store_nearby'] = 'Lähellä ei ole ajoneuvoja.',
|
||||
['garage_storeditem'] = 'Avaa talli',
|
||||
['garage_storeitem'] = 'Säilytä ajoneuvoa tallissa',
|
||||
['garage_buyitem'] = 'Ajoneuvokauppa',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Ajoneuvokauppa',
|
||||
['vehicleshop_confirm'] = 'Haluatko ostaa tämän ajoneuvon?',
|
||||
['vehicleshop_bought'] = 'Olet ostanut %s hintaan $%s',
|
||||
['vehicleshop_money'] = 'Sinulla ei ole varaa siihen autoon',
|
||||
['vehicleshop_awaiting_model'] = 'Ajoneuvoa ladataan, odota',
|
||||
['confirm_no'] = 'Ei',
|
||||
['confirm_yes'] = 'Kyllä',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Elvytys on menossa!',
|
||||
['revive_complete'] = 'Sinä elvytit henkilön %s',
|
||||
['revive_complete_award'] = 'Sinä elvytit henkilön %s ja tienasit $%s!',
|
||||
['revive_fail_offline'] = 'Pelaaja ei ole enää online-tilassa',
|
||||
['heal_inprogress'] = 'Elvytetään!',
|
||||
['heal_complete'] = 'Sinä paransit henkilön %s',
|
||||
['no_players'] = 'Ei pelaajia lähettyvillä',
|
||||
['player_not_unconscious'] = 'Tämä pelaaja ei ole tajuton!',
|
||||
['player_not_conscious'] = 'Tämä pelaaja ei ole tajuissaan!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Pomovalikko',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Viallinen summa',
|
||||
['actions_prompt'] = 'Paina [E] päästäksesi Ambulanssitoimintoihin.',
|
||||
['deposit_amount'] = 'Talletettava summa',
|
||||
['money_withdraw'] = 'Nostettava summa',
|
||||
['fast_travel'] = 'Paina [E] liikkuaksesi nopeasti kerrosten välillä',
|
||||
['open_pharmacy'] = 'Paina [E] avataksesi lääkekaappi',
|
||||
['pharmacy_menu_title'] = 'Lääkekaappi',
|
||||
['pharmacy_take'] = 'Ota <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Ensiapupakkauksia',
|
||||
['bandage'] = 'Sideharsoja',
|
||||
['max_item'] = 'Sinulla on jo tarpeeksi mukana',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Ensihoito menu',
|
||||
['ems_menu_title'] = 'Ensihoito - Siviilin kanssakäyminen',
|
||||
['ems_menu_revive'] = 'Elvytä',
|
||||
['ems_menu_putincar'] = 'Laita ajoneuvoon',
|
||||
['ems_menu_small'] = 'Hoida pieniä haavoja',
|
||||
['ems_menu_big'] = 'Hoida isoja haavoja',
|
||||
['ems_menu_search'] = 'Potilasta ei löydy',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'Hälyytys Ensihoidolle',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Uudelleen syntyminen mahdolista %s minuutissa %s sekunnissa',
|
||||
['respawn_bleedout_in'] = 'Vuodat kuiviin %s minuutissa %s sekunnissa\n',
|
||||
['respawn_bleedout_prompt'] = 'Pidä [E] painettuna syntyäksesi uudelleen',
|
||||
['respawn_bleedout_fine'] = 'Pidä [E] painettuna syntyäksesi uudelleen hintaan $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'Maksoit $%s uudelleensyntymisestä.',
|
||||
['distress_send'] = 'Paina [G] lähettääksesi hätäsignaali',
|
||||
['distress_sent'] = 'hätäviesti on lähetetty vapaille yksiköille!',
|
||||
-- Revive
|
||||
['revive_help'] = 'Elvytä pelaaja',
|
||||
-- Item
|
||||
['used_medikit'] = 'Sinä käytit ensiapupakkauksen',
|
||||
['used_bandage'] = 'Sinä käytit sideharsoja',
|
||||
['not_enough_medikit'] = 'Ei tarpeeksi ensiapupakkauksia.',
|
||||
['not_enough_bandage'] = 'Ei tarpeeksi sideharsoja.',
|
||||
['healed'] = 'SinuaT parannettiin',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Sairaala',
|
||||
['blip_dead'] = 'Tajuton henkilö',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/fr.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/fr.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['fr'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'vestiaire',
|
||||
['ems_clothes_civil'] = 'tenue Civil',
|
||||
['ems_clothes_ems'] = 'tenue Ambulancier',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'ambulance',
|
||||
['helicopter_prompt'] = 'appuyez sur [E] pour accéder aux Actions de l\'hélicoptère.',
|
||||
['garage_prompt'] = 'appuyez sur [E] pour accéder aux Actions des véhciules.',
|
||||
['garage_title'] = 'actions véhicules',
|
||||
['garage_stored'] = 'rangé',
|
||||
['garage_notstored'] = 'en dehors du garage',
|
||||
['garage_storing'] = 'tentative de suppression du véhicule, assurez-vous que personne ne soit autour.',
|
||||
['garage_has_stored'] = 'le véhicule a bien été rangé dans le garage',
|
||||
['garage_has_notstored'] = 'aucun véhicule dans le garage',
|
||||
['garage_notavailable'] = 'votre véhicule n\'est pas rangé dans le garage.',
|
||||
['garage_blocked'] = 'la sortie du garage est obstruée!',
|
||||
['garage_empty'] = 'vous n\'avez aucun véhicule dans le garage.',
|
||||
['garage_released'] = 'votre véhicule a été sorti.',
|
||||
['garage_store_nearby'] = 'aucun véhicule a proximité.',
|
||||
['garage_storeditem'] = 'ouvrir le garage',
|
||||
['garage_storeitem'] = 'ranger le véhicule',
|
||||
['garage_buyitem'] = 'magasin véhicule',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'magasin véhicule',
|
||||
['vehicleshop_confirm'] = 'voulez-vous acheter ce véhicule?',
|
||||
['vehicleshop_bought'] = 'vous avez acheté %s pour $%s',
|
||||
['vehicleshop_money'] = 'vous ne pouvez pas acheter ce véhicule',
|
||||
['vehicleshop_awaiting_model'] = 'le véhicule est actuellement en PRÉPARATION veuillez patienter',
|
||||
['confirm_no'] = 'non',
|
||||
['confirm_yes'] = 'oui',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'réanimation en cours',
|
||||
['revive_complete'] = 'vous avez réanimé %s',
|
||||
['revive_complete_award'] = 'vous avez réanimé %s, $%s',
|
||||
['revive_fail_offline'] = 'ce joueur n\'est plus en ligne',
|
||||
['heal_inprogress'] = 'vous soignez...',
|
||||
['heal_complete'] = 'vous avez soigné %s',
|
||||
['no_players'] = 'aucun joueur à proximité',
|
||||
['player_not_unconscious'] = 'n\'est pas inconscient',
|
||||
['player_not_conscious'] = 'Cette personne est inconsciente!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'action Patron',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'quantité invalide',
|
||||
['actions_prompt'] = 'appuyez sur [E] accédez aux Actions d\'Ambulance.',
|
||||
['deposit_amount'] = 'montant du dépôt',
|
||||
['money_withdraw'] = 'montant du retrait',
|
||||
['fast_travel'] = 'appuyez sur [E] pour vous déplacer rapidement.',
|
||||
['open_pharmacy'] = 'appuyez sur [E] pour ouvrir la pharmacie.',
|
||||
['pharmacy_menu_title'] = 'Pharmacie',
|
||||
['pharmacy_take'] = 'prendre <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'kit de soin',
|
||||
['bandage'] = 'bandage',
|
||||
['max_item'] = 'vous en portez déjà assez sur vous.',
|
||||
['unconscious_found'] = '[DISPATCH]: Une personne inconsciente a été signalée',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'interaction citoyen',
|
||||
['ems_menu_title'] = 'ambulance - Interactions Citoyen',
|
||||
['ems_menu_revive'] = 'réanimer',
|
||||
['ems_menu_putincar'] = 'mettre dans véhicule',
|
||||
['ems_menu_small'] = 'soigner petites blessures',
|
||||
['ems_menu_big'] = 'soigner blessures graves',
|
||||
['ems_menu_search'] = 'patient introuvable',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'alerte Ambulance',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'réanimation possible dans %s minutes %s secondes',
|
||||
['respawn_bleedout_in'] = 'vous allez souffrir d\'une hémorragie dans %s minutes %s secondes\n',
|
||||
['respawn_bleedout_prompt'] = 'maintenez [E] pour être réanimé',
|
||||
['respawn_bleedout_fine'] = 'maintenez [E] pour être réanimé pour $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'vous avez payé $%s pour être réanimer.',
|
||||
['distress_send'] = 'appuyez sur [G] pour envoyer un signal de détresse',
|
||||
['distress_sent'] = 'un signal a été envoyé à toutes les unités disponibles!',
|
||||
-- Revive
|
||||
['revive_help'] = 'relancer un joueur',
|
||||
-- Item
|
||||
['used_medikit'] = 'vous avez utilisé 1x kit de soin',
|
||||
['used_bandage'] = 'vous avez utilisé 1x bandage',
|
||||
['not_enough_medikit'] = 'vous n\'avez pas de kit de soin.',
|
||||
['not_enough_bandage'] = 'vous n\'avez pas de bandage.',
|
||||
['healed'] = 'vous avez été soigné.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'hôpital',
|
||||
['blip_dead'] = 'joueur inconscient',
|
||||
}
|
||||
85
resources/[esx_addons]/esx_ambulancejob/locales/hu.lua
Normal file
85
resources/[esx_addons]/esx_ambulancejob/locales/hu.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
Locales['hu'] = {
|
||||
-- Öltöző
|
||||
['cloakroom'] = 'Öltöző',
|
||||
['ems_clothes_civil'] = 'Civil ruházat',
|
||||
['ems_clothes_ems'] = 'Munkaruha',
|
||||
-- Jármű
|
||||
['ambulance'] = 'Mentőautó',
|
||||
['helicopter_prompt'] = 'Nyomd meg az [E] gombot a helikopter listához.',
|
||||
['garage_prompt'] = 'Nyomd meg az [E] gombot a kocsi listához.',
|
||||
['garage_title'] = 'Autó funkciók',
|
||||
['garage_stored'] = 'Garázsba',
|
||||
['garage_notstored'] = 'Ismeretlen helyen',
|
||||
['garage_storing'] = 'Próbáljuk betteni a kocsid a garázsodba, de előtte nézz körül, hogy biztos nincs melletted senki',
|
||||
['garage_has_stored'] = 'Sikeresen tároltad a garázsba!',
|
||||
['garage_has_notstored'] = 'Nincs a közeledben semmi!',
|
||||
['garage_notavailable'] = 'Nem tárolhatod a garázsban!',
|
||||
['garage_blocked'] = 'Valami gátolja a kocsi lehívását!',
|
||||
['garage_empty'] = 'Nem teheted a garázsba!',
|
||||
['garage_released'] = 'Sikeresen kivetted!',
|
||||
['garage_store_nearby'] = 'Nincs a közeledben semmi!',
|
||||
['garage_storeditem'] = 'Garázs megnyitása',
|
||||
['garage_storeitem'] = 'Kocsi berakása a garázsba',
|
||||
['garage_buyitem'] = 'Kocsi igénylés',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Autókereskedés',
|
||||
['vehicleshop_confirm'] = 'Megszeretnéd venni ezt a járművet?',
|
||||
['vehicleshop_bought'] = 'Sikeresen igényeltél egy %s enért: ',
|
||||
['vehicleshop_money'] = 'Ezt most nem tudod megtenni!',
|
||||
['vehicleshop_awaiting_model'] = 'Betöltés..',
|
||||
['confirm_no'] = 'Vissza',
|
||||
['confirm_yes'] = 'Igényel',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Elkezdted az újraélesztést!',
|
||||
['revive_complete'] = 'Újraélesztetted: %s',
|
||||
['revive_complete_award'] = 'Újraélesztetted: %s és kaptál: $%s!',
|
||||
['revive_fail_offline'] = 'A játékos nem elérhető',
|
||||
['heal_inprogress'] = 'Elkezdted a gyógyítást!',
|
||||
['heal_complete'] = 'Meggyógyítottad: %s',
|
||||
['no_players'] = 'Nincs a közeledben senki!',
|
||||
['player_not_unconscious'] = 'A játékos öntudatánál van!',
|
||||
['player_not_conscious'] = 'A játékos nincs öntudatánál!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Boss menü',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Érvénytelen mennyiség',
|
||||
['actions_prompt'] = 'Nyomd meg az [E] gombot a panel megnyitásához.',
|
||||
['deposit_amount'] = 'Összeg betétele',
|
||||
['money_withdraw'] = 'Összeg kivétele',
|
||||
['fast_travel'] = 'Nyomd meg az [E] gombot a lift használatához',
|
||||
['open_pharmacy'] = 'Nyomd meg az [E] gombot a gyógyszer kivételéhez.',
|
||||
['pharmacy_menu_title'] = 'Kellékek',
|
||||
['pharmacy_take'] = 'Kivétel: <span style="color:red;">%s</span>',
|
||||
['medikit'] = 'Elsősegély készlet',
|
||||
['bandage'] = 'Kötszer',
|
||||
['max_item'] = 'Nem fér már el nálad!',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'EMS menü',
|
||||
['ems_menu_title'] = 'EMS Menu',
|
||||
['ems_menu_revive'] = 'Újraélesztés',
|
||||
['ems_menu_putincar'] = 'Jármübe rakás',
|
||||
['ems_menu_small'] = 'Kis sebek meggyógyítása',
|
||||
['ems_menu_big'] = 'Súlyos sérülések kezelése',
|
||||
['ems_menu_search'] = 'Civil megkeresése',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'EMS értesités',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Újraéledés: %s perc %s másodperc múlva...',
|
||||
['respawn_bleedout_in'] = 'Elfogsz vérezni %s perc %s másodperc múlva...\n',
|
||||
['respawn_bleedout_prompt'] = 'Nyomd meg az [E] gombot az újraéledéshez',
|
||||
['respawn_bleedout_fine'] = 'Újraéledéshez: [E]',
|
||||
['respawn_bleedout_fine_msg'] = 'Ennyit fizettél, hogy újraéledj',
|
||||
['distress_send'] = 'Nyomd meg a [G] gombot a segítségkéréshez',
|
||||
['distress_sent'] = 'Egy civil értesítette az illetékes szervezetet!',
|
||||
-- Revive
|
||||
['revive_help'] = 'újraéleszteni egy játékos',
|
||||
-- Item
|
||||
['used_medikit'] = 'Elhasználtál 1x elsősegély dobozt.',
|
||||
['used_bandage'] = 'Elhasználtál 1x kötszert.',
|
||||
['not_enough_medikit'] = 'Nincs nálad: Defibrillátor.',
|
||||
['not_enough_bandage'] = 'Nincs nálad: Kötszer.',
|
||||
['healed'] = 'Meggyógyítottak!',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Kórház',
|
||||
['blip_dead'] = 'Eszméletlen játékos',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/id.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/id.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['id'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'Ruang Loker',
|
||||
['ems_clothes_civil'] = 'Pakaian Warga Sipil',
|
||||
['ems_clothes_ems'] = 'Pakaian EMS',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'Ambulans',
|
||||
['helicopter_prompt'] = 'Tekan [E] untuk mengakses Aksi Helikopter.',
|
||||
['garage_prompt'] = 'Tekan [E] untuk mengakses Aksi Kendaraan.',
|
||||
['garage_title'] = 'Aksi Kendaraan',
|
||||
['garage_stored'] = 'Disimpan',
|
||||
['garage_notstored'] = 'Tidak dalam garasi',
|
||||
['garage_storing'] = 'Kami mencoba menghilangkan kendaraan, pastikan tidak ada player di sekitarnya.',
|
||||
['garage_has_stored'] = 'Kendaraan telah tersimpan di garasi Anda',
|
||||
['garage_has_notstored'] = 'Kendaraan yang dimiliki disekitar tidak ditemukan',
|
||||
['garage_notavailable'] = 'Kendaraan Anda tidak tersimpan di dalam garasi.',
|
||||
['garage_blocked'] = 'Tidak tersedia spawn points untuk kendaraan!',
|
||||
['garage_empty'] = 'Anda tidak memiliki kendaraan apa pun di garasi Anda.',
|
||||
['garage_released'] = 'Kendaraan Anda telah dikeluarkan dari garasi.',
|
||||
['garage_store_nearby'] = 'Tidak ada kendaraan di sekitar.',
|
||||
['garage_storeditem'] = 'Buka garasi',
|
||||
['garage_storeitem'] = 'Simpan kendaraan dalam garasi',
|
||||
['garage_buyitem'] = 'Toko kendaraan',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Toko kendaraan',
|
||||
['vehicleshop_confirm'] = 'Apakah Anda ingin membeli kendaraan ini?',
|
||||
['vehicleshop_bought'] = 'Anda telah membeli %s seharga $%s',
|
||||
['vehicleshop_money'] = 'Anda tidak dapat membeli kendaraan tersebut',
|
||||
['vehicleshop_awaiting_model'] = 'Kendaraan sedang dalam proses DOWNLOADING & LOADING mohon tunggu',
|
||||
['confirm_no'] = 'Tidak',
|
||||
['confirm_yes'] = 'Ya',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Penyadaran sedang dalam proses!',
|
||||
['revive_complete'] = 'Anda telah disadarkan %s',
|
||||
['revive_complete_award'] = 'Anda telah disembuhkan %s dan mendapat $%s!',
|
||||
['revive_fail_offline'] = 'Player sudah tidak online',
|
||||
['heal_inprogress'] = 'Anda sedang disembuhkan!',
|
||||
['heal_complete'] = 'Anda telah disembuhkan %s',
|
||||
['no_players'] = 'No players nearby',
|
||||
['player_not_unconscious'] = 'Player tersebut masih sadar!',
|
||||
['player_not_conscious'] = 'Player tersebut tidak sadar!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Aksi Bos',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Jumlah salah',
|
||||
['actions_prompt'] = 'Tekan [E] untuk mengakses aksi Ambulans.',
|
||||
['deposit_amount'] = 'Jumlah Deposit',
|
||||
['money_withdraw'] = 'Jumlah Penarikan',
|
||||
['fast_travel'] = 'Tekan [E] untuk fast travel.',
|
||||
['open_pharmacy'] = 'Tekan [E] Tekan membuka farmasi.',
|
||||
['pharmacy_menu_title'] = 'Farmasi',
|
||||
['pharmacy_take'] = 'Ambil <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Obat-obatan',
|
||||
['bandage'] = 'Perban',
|
||||
['max_item'] = 'Anda sudah cukup membawa.',
|
||||
['unconscious_found'] = '[DISPATCH]: Seorang Tidak Sadarkan Diri Telah Dilaporkan',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Menu EMS',
|
||||
['ems_menu_title'] = 'Ambulans - Menu EMS',
|
||||
['ems_menu_revive'] = 'Sadarkan Player',
|
||||
['ems_menu_putincar'] = 'Masukkan dalam kendaraan',
|
||||
['ems_menu_small'] = 'Atasi luka kecil',
|
||||
['ems_menu_big'] = 'Atasi cedera serius',
|
||||
['ems_menu_search'] = 'Pasien tidak ditemukan',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'Kabari Ambulans',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Respawn tersedia dalam %s menit %s detik',
|
||||
['respawn_bleedout_in'] = 'Anda akan pendarahan dalam %s menit %s detik\n',
|
||||
['respawn_bleedout_prompt'] = 'Tahan [E] untuk respawn',
|
||||
['respawn_bleedout_fine'] = 'Tahan [E] untuk respawn dengan bayar $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'Anda membayar $%s untuk respawn.',
|
||||
['distress_send'] = 'Tekan [G] untuk mengirim sinyal darurat',
|
||||
['distress_sent'] = 'Sinyal darurat telah terkirim ke unit yang tersedia!',
|
||||
-- Revive
|
||||
['revive_help'] = 'sadarkan player',
|
||||
-- Item
|
||||
['used_medikit'] = 'Anda telah memakai 1x obat-obatan',
|
||||
['used_bandage'] = 'Anda telah memakai 1x perban',
|
||||
['not_enough_medikit'] = 'Anda tidak memiliki obat-obatan.',
|
||||
['not_enough_bandage'] = 'Anda tidak memiliki perban.',
|
||||
['healed'] = 'Anda telah dirawat.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Rumah Sakit',
|
||||
['blip_dead'] = 'Player Sekarat',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/it.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/it.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['it'] = {
|
||||
-- Spogliatoio
|
||||
['cloakroom'] = 'Spogliatoio',
|
||||
['ems_clothes_civil'] = 'Vestiti Civili',
|
||||
['ems_clothes_ems'] = 'Vestiti EMS',
|
||||
-- Veicoli
|
||||
['ambulance'] = 'Ambulanza',
|
||||
['helicopter_prompt'] = 'Premi [E] per accedere al garage dell\'Elicottero.',
|
||||
['garage_prompt'] = 'Premi [E] per accedere al garage del Veicolo.',
|
||||
['garage_title'] = 'Garage del Veicolo',
|
||||
['garage_stored'] = 'In Garage',
|
||||
['garage_notstored'] = 'Non in garage',
|
||||
['garage_storing'] = 'Stiamo cercando di rimuovere il veicolo, assicurati che nessun giocatore sia intorno ad esso.',
|
||||
['garage_has_stored'] = 'Il veicolo è stato messo in garage',
|
||||
['garage_has_notstored'] = 'Nessun veicolo posseduto nelle vicinanze',
|
||||
['garage_notavailable'] = 'Il tuo veicolo non è in garage.',
|
||||
['garage_blocked'] = 'Non ci sono punti di spawn disponibili!',
|
||||
['garage_empty'] = 'Non hai veicoli nel tuo garage.',
|
||||
['garage_released'] = 'Il tuo veicolo è stato rilasciato dal garage.',
|
||||
['garage_store_nearby'] = 'Non ci sono veicoli nelle vicinanze.',
|
||||
['garage_storeditem'] = 'Apri garage',
|
||||
['garage_storeitem'] = 'Metti veicolo in garage',
|
||||
['garage_buyitem'] = 'Negozio di veicoli',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Negozio di Veicoli',
|
||||
['vehicleshop_confirm'] = 'Vuoi comprare questo veicolo?',
|
||||
['vehicleshop_bought'] = 'Hai comprato %s per $%s',
|
||||
['vehicleshop_money'] = 'Non puoi permetterti quel veicolo',
|
||||
['vehicleshop_awaiting_model'] = 'Il veicolo è attualmente in fase di DOWNLOAD & CARICAMENTO, attendi',
|
||||
['confirm_no'] = 'No',
|
||||
['confirm_yes'] = 'Sì',
|
||||
-- Menu Azioni
|
||||
['revive_inprogress'] = 'È in corso un tentativo di rianimazione!',
|
||||
['revive_complete'] = 'Hai rianimato %s',
|
||||
['revive_complete_award'] = 'Hai rianimato %s e guadagnato $%s!',
|
||||
['revive_fail_offline'] = 'Il giocatore non è più online',
|
||||
['heal_inprogress'] = 'Stai curando!',
|
||||
['heal_complete'] = 'Hai curato %s',
|
||||
['no_players'] = 'Nessun giocatore nelle vicinanze',
|
||||
['player_not_unconscious'] = 'Il giocatore non è incosciente!',
|
||||
['player_not_conscious'] = 'Il giocatore non è cosciente!',
|
||||
-- Menu Boss
|
||||
['boss_actions'] = 'Azioni del Boss',
|
||||
-- Varie
|
||||
['invalid_amount'] = 'Importo non valido',
|
||||
['actions_prompt'] = 'Premi [E] per accedere alle opzioni dell\'Ambulanza.',
|
||||
['deposit_amount'] = 'Importo del deposito',
|
||||
['money_withdraw'] = 'Importo ritirato',
|
||||
['fast_travel'] = 'premi [E] per viaggiare velocemente.',
|
||||
['open_pharmacy'] = 'Premi [E] per aprire la farmacia.',
|
||||
['pharmacy_menu_title'] = 'Farmacia',
|
||||
['pharmacy_take'] = 'Prendi <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Medikit',
|
||||
['bandage'] = 'Benda',
|
||||
['max_item'] = 'Hai già abbastanza oggetti.',
|
||||
['unconscious_found'] = '[CENTRALINO]: È stata segnalata una persona priva di sensi',
|
||||
-- Menu F6
|
||||
['ems_menu'] = 'Menu EMS',
|
||||
['ems_menu_title'] = 'Ambulanza - Menu EMS',
|
||||
['ems_menu_revive'] = 'Rianima Giocatore',
|
||||
['ems_menu_putincar'] = 'Metti in Veicolo',
|
||||
['ems_menu_small'] = 'Cura ferite leggere',
|
||||
['ems_menu_big'] = 'Tratta ferite gravi',
|
||||
['ems_menu_search'] = 'Paziente non trovato',
|
||||
-- Telefono
|
||||
['alert_ambulance'] = 'Chiedi l\'ambulanza',
|
||||
-- Morte
|
||||
['respawn_available_in'] = 'Puoi rinascere tra %s minuti %s secondi',
|
||||
['respawn_bleedout_in'] = 'Sanguinerai a morte tra %s minuti %s secondi\n',
|
||||
['respawn_bleedout_prompt'] = 'Tieni premuto [E] per rinascere',
|
||||
['respawn_bleedout_fine'] = 'Tieni premuto [E] per rinascere per $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'Hai pagato $%s per rinascere.',
|
||||
['distress_send'] = 'Premi [G] per inviare un segnale di emergenza',
|
||||
['distress_sent'] = 'Il segnale di emergenza è stato inviato alle unità disponibili!',
|
||||
-- Rianimazione
|
||||
['revive_help'] = 'rianima un giocatore',
|
||||
-- Oggetto
|
||||
['used_medikit'] = 'Hai usato 1x medikit',
|
||||
['used_bandage'] = 'Hai usato 1x benda',
|
||||
['not_enough_medikit'] = 'Non hai il medikit.',
|
||||
['not_enough_bandage'] = 'Non hai la benda.',
|
||||
['healed'] = 'Sei stato curato.',
|
||||
-- Blip
|
||||
['blip_hospital'] = 'Ospedale',
|
||||
['blip_dead'] = 'Giocatore morente',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/nl.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/nl.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['nl'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'Kleedkamer',
|
||||
['ems_clothes_civil'] = 'Burgerkleding',
|
||||
['ems_clothes_ems'] = 'Ambulance Kleding',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'Ambulance',
|
||||
['helicopter_prompt'] = 'Druk op [E] om de Lifeliners te beheren.',
|
||||
['garage_prompt'] = 'Druk op [E] om de Garage te openen.',
|
||||
['garage_title'] = 'Garage',
|
||||
['garage_stored'] = 'In Garage',
|
||||
['garage_notstored'] = 'Niet In Garage',
|
||||
['garage_storing'] = 'We proberen je voertuig op te bergen, zorg dat er niemand in de buurt is.',
|
||||
['garage_has_stored'] = 'Je voertuig is in de garage gezet',
|
||||
['garage_has_notstored'] = 'Er zijn geen voertuigen in de buurt gevonden die van jou zijn',
|
||||
['garage_notavailable'] = 'Je voertuig staat niet in de garage.',
|
||||
['garage_blocked'] = 'Er is geen spawnplek beschikbaar!',
|
||||
['garage_empty'] = 'Er staat geen voertuig in je garage.',
|
||||
['garage_released'] = 'Je voertuig is uit de garage gehaald.',
|
||||
['garage_store_nearby'] = 'Er zijn geen voertuigen in de buurt.',
|
||||
['garage_storeditem'] = 'Open garage',
|
||||
['garage_storeitem'] = 'Zet voertuig in de garage',
|
||||
['garage_buyitem'] = 'Voertuigwinkel',
|
||||
['shop_item'] = '€%s',
|
||||
['vehicleshop_title'] = 'Voertuigwinkel',
|
||||
['vehicleshop_confirm'] = 'Wil je dit voertuig kopen?',
|
||||
['vehicleshop_bought'] = 'Je hebt een %s gekocht voor €%s',
|
||||
['vehicleshop_money'] = 'Je kan dit voertuig niet betalen',
|
||||
['vehicleshop_awaiting_model'] = 'Het voertuig is aan het DOWNLOADEN & LADEN, even geduld',
|
||||
['confirm_no'] = 'Nee',
|
||||
['confirm_yes'] = 'Ja',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Reanimatie is in gang gezet!',
|
||||
['revive_complete'] = 'Je hebt %s gereanimeerd',
|
||||
['revive_complete_award'] = 'Je hebt %s gereanimeerd en €%s verdient!',
|
||||
['revive_fail_offline'] = 'Deze speler is niet langer online',
|
||||
['heal_inprogress'] = 'Je wordt genezen!',
|
||||
['heal_complete'] = 'Je hebt %s genezen',
|
||||
['no_players'] = 'Geen spelers in de buurt',
|
||||
['player_not_unconscious'] = 'Deze persoon is niet bewusteloos!',
|
||||
['player_not_conscious'] = 'Deze persoon is bewusteloos!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Manager Acties',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'ongeldig aantal',
|
||||
['actions_prompt'] = 'Druk op [E] om de Ambulance Acties te bekijken.',
|
||||
['deposit_amount'] = 'Bedrag om te storten',
|
||||
['money_withdraw'] = 'Bedrag om op te nemen',
|
||||
['fast_travel'] = 'Druk op [E] om snel te reizen.',
|
||||
['open_pharmacy'] = 'Druk op [E] om de apotheek te openen.',
|
||||
['pharmacy_menu_title'] = 'Apotheek',
|
||||
['unconscious_found'] = '[DISPATCH]: Er is een bewusteloos persoon gemeld.',
|
||||
['pharmacy_take'] = 'Pak <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Spoedkoffer',
|
||||
['bandage'] = 'Verbanddoos',
|
||||
['max_item'] = 'Je kan dit niet dragen.',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Ambulance Menu',
|
||||
['ems_menu_title'] = 'Ambulance - Menu',
|
||||
['ems_menu_revive'] = 'Reanimeer speler',
|
||||
['ems_menu_putincar'] = 'Zet in voertuig',
|
||||
['ems_menu_small'] = 'Behandel kleine verwondingen',
|
||||
['ems_menu_big'] = 'Behandel grote verwondingen',
|
||||
['ems_menu_search'] = 'Patiënt niet gevonden',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'alert Ambulance',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Respawn beschikbaar in %s minuten en %s seconden',
|
||||
['respawn_bleedout_in'] = 'Je zal doodbloeden in %s minuten %s seconden\n',
|
||||
['respawn_bleedout_prompt'] = 'Houd [E] ingedrukt om te respawnen',
|
||||
['respawn_bleedout_fine'] = 'Houd [E] ingedrukt om te respawnen voor €%s',
|
||||
['respawn_bleedout_fine_msg'] = 'Je hebt €%s betaald om te respawnen.',
|
||||
['distress_send'] = 'Druk op [G] om een noodsignaal te verzenden',
|
||||
['distress_sent'] = 'Noodsignaal verzonden naar alle beschikbare eenheden!',
|
||||
-- Revive
|
||||
['revive_help'] = 'Revive een speler',
|
||||
-- Item
|
||||
['used_medikit'] = 'Je hebt 1 spoedkoffer gebruikt',
|
||||
['used_bandage'] = 'Je hebt 1 verbandkoffer gebruikt',
|
||||
['not_enough_medikit'] = 'Je hebt geen spoedkoffer bij.',
|
||||
['not_enough_bandage'] = 'Je hebt geen verbandkoffer bij.',
|
||||
['healed'] = 'Je bent behandeld.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Ziekenhuis',
|
||||
['blip_dead'] = 'Bewusteloze speler',
|
||||
}
|
||||
85
resources/[esx_addons]/esx_ambulancejob/locales/pl.lua
Normal file
85
resources/[esx_addons]/esx_ambulancejob/locales/pl.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
Locales['pl'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'szatnia',
|
||||
['ems_clothes_civil'] = 'ubrania cywilne',
|
||||
['ems_clothes_ems'] = 'ubrania EMS',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'ambulance',
|
||||
['helicopter_prompt'] = 'press [E] to access the Helicopter Actions.',
|
||||
['garage_prompt'] = 'press [E] to access the Vehicle Actions.',
|
||||
['garage_title'] = 'vehicle Actions',
|
||||
['garage_stored'] = 'stored',
|
||||
['garage_notstored'] = 'not in garage',
|
||||
['garage_storing'] = 'we\'re attempting to remove the vehicle, make sure no players are around it.',
|
||||
['garage_has_stored'] = 'the vehicle has been stored in your garage',
|
||||
['garage_has_notstored'] = 'no nearby owned vehicles were found',
|
||||
['garage_notavailable'] = 'your vehicle is not stored in the garage.',
|
||||
['garage_blocked'] = 'there\'s no available spawn points!',
|
||||
['garage_empty'] = 'you don\'t have any vehicles in your garage.',
|
||||
['garage_released'] = 'your vehicle has been released from the garage.',
|
||||
['garage_store_nearby'] = 'there is no nearby vehicles.',
|
||||
['garage_storeditem'] = 'open garage',
|
||||
['garage_storeitem'] = 'store vehicle in garage',
|
||||
['garage_buyitem'] = 'vehicle shop',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'vehicle Shop',
|
||||
['vehicleshop_confirm'] = 'do you want to buy this vehicle?',
|
||||
['vehicleshop_bought'] = 'you have bought %s for $%s',
|
||||
['vehicleshop_money'] = 'you cannot afford that vehicle',
|
||||
['vehicleshop_awaiting_model'] = 'the vehicle is currently DOWNLOADING & LOADING please wait',
|
||||
['confirm_no'] = 'no',
|
||||
['confirm_yes'] = 'yes',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'trwa wskrzeszenie',
|
||||
['revive_complete'] = 'zostałeś wskrzeszony %s',
|
||||
['revive_complete_award'] = 'zostałeś wskrzeszony %s i zarobiono $%s!',
|
||||
['revive_fail_offline'] = 'that player is no longer online',
|
||||
['heal_inprogress'] = 'leczysz!',
|
||||
['heal_complete'] = 'zostałeś uleczony %s',
|
||||
['no_players'] = 'brak graczy w pobliżu',
|
||||
['player_not_unconscious'] = 'ten gracz nie jest nieprzytomny!',
|
||||
['player_not_conscious'] = 'ten gracz nie jest świadomy!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'akcje szefa',
|
||||
-- Misc
|
||||
['invalid_amount'] = ' widłowa kwota',
|
||||
['actions_prompt'] = 'press [E] access the Ambulance Actions.',
|
||||
['deposit_amount'] = 'kwota depozytu',
|
||||
['money_withdraw'] = 'wycofana kwota',
|
||||
['fast_travel'] = 'naciśnij na [E] do szybkiej podróży.',
|
||||
['open_pharmacy'] = 'naciśnij na [E] aby otworzyć aptekę',
|
||||
['pharmacy_menu_title'] = 'apteka',
|
||||
['pharmacy_take'] = 'weź <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'apteczka',
|
||||
['bandage'] = 'bandaż',
|
||||
['max_item'] = 'już masz na sobie dość.',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'menu EMS',
|
||||
['ems_menu_title'] = 'eMS Menu - Ambulans',
|
||||
['ems_menu_revive'] = 'ożyw gracza',
|
||||
['ems_menu_putincar'] = 'umieścić w pojeździe',
|
||||
['ems_menu_small'] = 'ulecz małe rany',
|
||||
['ems_menu_big'] = 'ulecz poważne obrażenia',
|
||||
['ems_menu_search'] = 'nie znaleziono pacjenta',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'wezwij ambulans',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'respawn available in %s minutes %s seconds',
|
||||
['respawn_bleedout_in'] = 'you will bleed out in %s minutes %s seconds\n',
|
||||
['respawn_bleedout_prompt'] = 'hold [E] to respawn',
|
||||
['respawn_bleedout_fine'] = 'hold [E] to respawn for $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'you paid $%s to respawn.',
|
||||
['distress_send'] = 'press [G] to send distress signal',
|
||||
['distress_sent'] = 'distress signal has been sent to available units!',
|
||||
-- Revive
|
||||
['revive_help'] = 'ożyw gracza',
|
||||
-- Item
|
||||
['used_medikit'] = 'użyłeś 1x apteczki',
|
||||
['used_bandage'] = 'użyłeś 1x bandaża',
|
||||
['not_enough_medikit'] = 'nie posiadasz apteczki.',
|
||||
['not_enough_bandage'] = 'nie posiadasz bandaża.',
|
||||
['healed'] = 'zostałeś potraktowany',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'szpital',
|
||||
['blip_dead'] = 'unconscious player',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/sl.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/sl.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['sl'] = {
|
||||
-- Garderoba
|
||||
['cloakroom'] = 'Garderoba',
|
||||
['ems_clothes_civil'] = 'Vaša Oblačila',
|
||||
['ems_clothes_ems'] = 'Službena Oblačila',
|
||||
-- Vozila
|
||||
['ambulance'] = 'UKC',
|
||||
['helicopter_prompt'] = 'Pritisni [E] Da odpreš garažo z Helikopterji.',
|
||||
['garage_prompt'] = 'Pritisni [E] Da odpreš garažo z Vozili.',
|
||||
['garage_title'] = 'Storitva Vozil',
|
||||
['garage_stored'] = 'Pospravljeno',
|
||||
['garage_notstored'] = 'Ni v garaži',
|
||||
['garage_storing'] = 'Poskušamo odstraniti vozilo, poskrbimo, da v bližini ni nobenih igralcev.',
|
||||
['garage_has_stored'] = 'Vozilo je bilo pospravljeno v vašo garažo.',
|
||||
['garage_has_notstored'] = 'V bližini ni bilo najdenih lastnih vozil',
|
||||
['garage_notavailable'] = 'Vaše vozilo ni bilo shranjeno v garaži.',
|
||||
['garage_blocked'] = 'Tukaj ni nobenih prostih točk za spawn! Odmaknite stvar ki blokira točko!',
|
||||
['garage_empty'] = 'Vi nimate nobenega vozila v garaži!',
|
||||
['garage_released'] = 'Vaše vozilo je bilo izpuščeno iz garaže.',
|
||||
['garage_store_nearby'] = 'Tukaj ni nobenih vozil!.',
|
||||
['garage_storeditem'] = 'Odprite Garažo',
|
||||
['garage_storeitem'] = 'Pospravite vozilo v Garažo',
|
||||
['garage_buyitem'] = 'Trgovina Vozil',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Trgovina Vozil',
|
||||
['vehicleshop_confirm'] = 'Ali želite kupiti to vozilo?',
|
||||
['vehicleshop_bought'] = 'Vi ste kupili %s za $%s',
|
||||
['vehicleshop_money'] = 'Vi nemorate kupiti to vozilo!',
|
||||
['vehicleshop_awaiting_model'] = 'Vozilo se NALAGA, prosimo počakajte!',
|
||||
['confirm_no'] = 'Ne',
|
||||
['confirm_yes'] = 'Da',
|
||||
-- Menu za Opravljanje
|
||||
['revive_inprogress'] = 'Oživljanje je v teku!',
|
||||
['revive_complete'] = 'Bili ste oživljeni %s',
|
||||
['revive_complete_award'] = 'Oživili ste %s in zaslužili $%s!',
|
||||
['revive_fail_offline'] = 'Ta igralec ni več Aktiven!',
|
||||
['heal_inprogress'] = 'Vi se povijate!',
|
||||
['heal_complete'] = 'Bili ste Poviti %s',
|
||||
['no_players'] = 'Ni meščana v vaši okolici!',
|
||||
['player_not_unconscious'] = 'Ta igralec ni nezavesten!',
|
||||
['player_not_conscious'] = 'Ta igralec ni pri zavesti!',
|
||||
-- Šefov Menu
|
||||
['boss_actions'] = 'Šefov Menu',
|
||||
-- Dela
|
||||
['invalid_amount'] = 'Neveljavna količina!',
|
||||
['actions_prompt'] = 'Pritisnite [E] Da odprete UKC Menu.',
|
||||
['deposit_amount'] = 'Položite Denar',
|
||||
['money_withdraw'] = 'Dvignite Denar',
|
||||
['fast_travel'] = 'Pritisnite [E] za hitro potovanje.',
|
||||
['open_pharmacy'] = 'Pritisnite [E] tda odprete Bolnišnico.',
|
||||
['pharmacy_menu_title'] = 'Lekarna',
|
||||
['pharmacy_take'] = 'Vzemite <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Prva Pomoč',
|
||||
['bandage'] = 'Bandaža',
|
||||
['max_item'] = 'Vi že nosite dovolj!.',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Reševalni Menu',
|
||||
['ems_menu_title'] = 'UKC - REŠEVALNI MENU',
|
||||
['ems_menu_revive'] = 'Oživite Osebo',
|
||||
['ems_menu_putincar'] = 'Dajte v Vozilo',
|
||||
['ems_menu_small'] = 'Pozdravite manjše poškodbe',
|
||||
['ems_menu_big'] = 'Pozdravite velike poškodbe',
|
||||
['ems_menu_search'] = 'Oeba, ni bila najdena',
|
||||
-- Telefon
|
||||
['alert_ambulance'] = 'Alarem UKC',
|
||||
-- Smrti
|
||||
['respawn_available_in'] = 'Ponovno rojenje na voljo čez %s minut %s sekund',
|
||||
['respawn_bleedout_in'] = 'Izkrvaveli boste čez %s minut %s sekund\n',
|
||||
['respawn_bleedout_prompt'] = 'Držite [E] da se ponovno rodite',
|
||||
['respawn_bleedout_fine'] = 'Držite [E] da se ponovno rodite za $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'Vi ste plačali $%s za ponovno rojenje.',
|
||||
['distress_send'] = 'Pritisnite [G] da pošljete nujni klic',
|
||||
['distress_sent'] = 'Signal v sili je bil poslan razpoložljivim enotam!',
|
||||
-- Oživljanje
|
||||
['revive_help'] = 'Oživite osebo',
|
||||
-- Stvari
|
||||
['used_medikit'] = 'Vi ste uporabili 1x Prva Pomoč',
|
||||
['used_bandage'] = 'Vi ste uprabili 1x Bandažo',
|
||||
['not_enough_medikit'] = 'Vi nimate Prve Pomoči.',
|
||||
['not_enough_bandage'] = 'Vi nimate Bandaž.',
|
||||
['healed'] = 'Vi ste bili pozdravljeni.',
|
||||
['unconscious_found'] = '[DISPATCH]: Porocanje o nezavestni osebi',
|
||||
-- Blipi
|
||||
['blip_hospital'] = 'UKC',
|
||||
['blip_dead'] = 'Umiranje Osebe',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/sr.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/sr.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
|
||||
Locales['sr'] = {
|
||||
-- Svlačionica
|
||||
['cloakroom'] = 'Svlačionica',
|
||||
['ems_clothes_civil'] = 'Civilna Odeća',
|
||||
['ems_clothes_ems'] = 'Radna Odeća',
|
||||
-- Vozila
|
||||
['ambulance'] = 'Hitna Pomoć',
|
||||
['helicopter_prompt'] = 'Pritisni [E] da pristupiš helikopterskim akcijama',
|
||||
['garage_prompt'] = 'Pritisni [E] da pristupiš garaži',
|
||||
['garage_title'] = 'Garaža',
|
||||
['garage_stored'] = 'Parkirano',
|
||||
['garage_notstored'] = 'Nije u garaži',
|
||||
['garage_storing'] = 'Pokušavam da parkiram vozilo, budi siguran da nema nikoga oko vozila.',
|
||||
['garage_has_stored'] = 'Vozilo je parkirano u garažu',
|
||||
['garage_has_notstored'] = 'Nema vaših vozila u blizini',
|
||||
['garage_notavailable'] = 'Vaše vozilo nije parkirano u garaži.',
|
||||
['garage_blocked'] = 'Nema slobodnih parking mesta!',
|
||||
['garage_empty'] = 'Nemaš vozila u garaži!',
|
||||
['garage_released'] = 'Vozilo je izvađeno iz garaže',
|
||||
['garage_store_nearby'] = 'Nema vozila u blizini.',
|
||||
['garage_storeditem'] = 'Otvori garažu',
|
||||
['garage_storeitem'] = 'Parkiraj vozilo u garažu',
|
||||
['garage_buyitem'] = 'AutoSalon',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'AutoSalon',
|
||||
['vehicleshop_confirm'] = 'Da li želiš da kupiš vozilo?',
|
||||
['vehicleshop_bought'] = 'Kupili ste %s za $%s',
|
||||
['vehicleshop_money'] = 'Nemate dovoljno novca za ovo vozilo.',
|
||||
['vehicleshop_awaiting_model'] = 'Model vozila se učitava, molimo sačekajte.',
|
||||
['confirm_no'] = 'Ne',
|
||||
['confirm_yes'] = 'Da',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Oživljavanje je u toku!',
|
||||
['revive_complete'] = 'Oživeli ste %s',
|
||||
['revive_complete_award'] = 'Oziveli ste %s i zaradili $%s!',
|
||||
['revive_fail_offline'] = 'Osoba nije online!',
|
||||
['heal_inprogress'] = 'Vi lečite!',
|
||||
['heal_complete'] = 'Izlečili ste %s',
|
||||
['no_players'] = 'Nema osobe u blizini!',
|
||||
['player_not_unconscious'] = 'Osoba nije onesvešćena!',
|
||||
['player_not_conscious'] = 'Osoba nije pri svesti!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Boss Meni',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Nevažeći Iznos',
|
||||
['actions_prompt'] = 'Pritisni [E] da otvoriš meni',
|
||||
['deposit_amount'] = 'Iznos depozita',
|
||||
['money_withdraw'] = 'Iznos podignut',
|
||||
['fast_travel'] = 'Pritisni [E] za brzo putovanje.',
|
||||
['open_pharmacy'] = 'Pritisni [E] da otvoriš apoteku.',
|
||||
['pharmacy_menu_title'] = 'Apoteka',
|
||||
['pharmacy_take'] = 'Uzmi <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Medikit',
|
||||
['bandage'] = 'Zavoji',
|
||||
['max_item'] = 'Već nosiš dovoljno',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'EMS Meni',
|
||||
['ems_menu_title'] = 'Hitna Pomoć - EMS Meni',
|
||||
['ems_menu_revive'] = 'Oživi Osobu',
|
||||
['ems_menu_putincar'] = 'Stavi u Vozilo',
|
||||
['ems_menu_small'] = 'Izleči male rane',
|
||||
['ems_menu_big'] = 'Leči ozbiljne povrede',
|
||||
['ems_menu_search'] = 'Pacijent nije nađen',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'Pozovi Hitnu Pomoć',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Oživljavanje moguće za %s minuta %s sekundi',
|
||||
['respawn_bleedout_in'] = 'Iskrvarićete za %s minuta %s sekundi\n',
|
||||
['respawn_bleedout_prompt'] = 'Držite [E] da vas ožive',
|
||||
['respawn_bleedout_fine'] = 'Držite [E] da vas ožive za $%s',
|
||||
['respawn_bleedout_fine_msg'] = 'Platili ste $%s da vas izleče.',
|
||||
['distress_send'] = 'Pritisni [G] da pozoveš Hitnu Pomoć',
|
||||
['distress_sent'] = 'Signal je poslat svim aktivnim jedinicama EMS',
|
||||
-- Revive
|
||||
['revive_help'] = 'Oživi osobu',
|
||||
-- Item
|
||||
['used_medikit'] = 'Iskoristili ste 1x medikit',
|
||||
['used_bandage'] = 'Iskoristili ste 1x zavoj',
|
||||
['not_enough_medikit'] = 'Nemate medikit.',
|
||||
['not_enough_bandage'] = 'Nemate zavoj.',
|
||||
['healed'] = 'Vas leče.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Bolnica',
|
||||
['blip_dead'] = 'Povredjena Osoba',
|
||||
}
|
||||
86
resources/[esx_addons]/esx_ambulancejob/locales/sv.lua
Normal file
86
resources/[esx_addons]/esx_ambulancejob/locales/sv.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
Locales['sv'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = 'Omklädningsrum',
|
||||
['ems_clothes_civil'] = 'Civila kläder',
|
||||
['ems_clothes_ems'] = 'Arbetskläder',
|
||||
-- Vehicles
|
||||
['ambulance'] = 'Ambulans',
|
||||
['helicopter_prompt'] = 'Tryck [E] för att öppna helikopter garaget.',
|
||||
['garage_prompt'] = 'Tryck [E] för att öppna fordonsgaraget.',
|
||||
['garage_title'] = 'Fordon',
|
||||
['garage_stored'] = 'Parkerad',
|
||||
['garage_notstored'] = 'Inte i garage',
|
||||
['garage_storing'] = 'Vi försöker ta bort fordonet, se till så inga är nära fordonet.',
|
||||
['garage_has_stored'] = 'Fordonet har parkerats',
|
||||
['garage_has_notstored'] = 'Inga av dina ägda fordon i närheten har hittats.',
|
||||
['garage_notavailable'] = 'Ditt fordon är inte parkerat i garaget.',
|
||||
['garage_blocked'] = 'Något blockerar spawnen!',
|
||||
['garage_empty'] = 'Du har inga fordon i garaget.',
|
||||
['garage_released'] = 'Ditt fordon har tagits ut.',
|
||||
['garage_store_nearby'] = 'Det är inga bilar i närheten.',
|
||||
['garage_storeditem'] = 'Öppna garage',
|
||||
['garage_storeitem'] = 'Parkera fordon',
|
||||
['garage_buyitem'] = 'Butik',
|
||||
['shop_item'] = '%skr',
|
||||
['vehicleshop_title'] = 'Butik',
|
||||
['vehicleshop_confirm'] = 'Vill du köpa denna?',
|
||||
['vehicleshop_bought'] = 'Du har köpt %s för %skr',
|
||||
['vehicleshop_money'] = 'Du har inte råd',
|
||||
['vehicleshop_awaiting_model'] = 'Fordonet LADDAS NER & LADDAR vänta tack!',
|
||||
['confirm_no'] = 'Nej',
|
||||
['confirm_yes'] = 'Ja',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'En återupplivning pågår!',
|
||||
['revive_complete'] = 'Du har återupplivat %s',
|
||||
['revive_complete_award'] = 'Du har återupplivat %s och tjänat %skr!',
|
||||
['revive_fail_offline'] = 'Spelarwn är inte längre online',
|
||||
['heal_inprogress'] = 'Du läker spelaren!',
|
||||
['heal_complete'] = 'Du har läkit %s',
|
||||
['no_players'] = 'Inga spelare i närheten',
|
||||
['player_not_unconscious'] = 'Spelaren är inte medvetslös!',
|
||||
['player_not_conscious'] = 'Spelaren är inte vid medvetande!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Chefshandlingar',
|
||||
-- Misc
|
||||
['invalid_amount'] = 'Ogiltigt antal',
|
||||
['actions_prompt'] = 'Tryck [E] för att öppna menyn.',
|
||||
['deposit_amount'] = 'Sätt in summa',
|
||||
['money_withdraw'] = 'Ta ut summa',
|
||||
['fast_travel'] = 'Tryck [E] för att teleportera.',
|
||||
['open_pharmacy'] = 'Tryck [E] för att öppna apoteket.',
|
||||
['pharmacy_menu_title'] = 'Apotek',
|
||||
['pharmacy_take'] = 'Ta <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Första hjälpen',
|
||||
['bandage'] = 'Bandage',
|
||||
['max_item'] = 'Du bär redan tillräckligt.',
|
||||
['unconscious_found'] = '[LARM]: En medvetslös person har larmats in',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Sjukvårdsmeny',
|
||||
['ems_menu_title'] = 'Ambulans - Sjukvårdsmeny',
|
||||
['ems_menu_revive'] = 'Återuppliva person',
|
||||
['ems_menu_putincar'] = 'Sätt i fordon',
|
||||
['ems_menu_small'] = 'Läk små skador',
|
||||
['ems_menu_big'] = 'Läk större skador',
|
||||
['ems_menu_search'] = 'Patient inte funnen',
|
||||
-- Phone
|
||||
['alert_ambulance'] = 'Meddela sjukvårdare',
|
||||
-- Death
|
||||
['respawn_available_in'] = 'Respawn tillgänglig om %s minuter %s sekunder',
|
||||
['respawn_bleedout_in'] = 'Du kommer förblöda om %s minuter %s sekunder\n',
|
||||
['respawn_bleedout_prompt'] = 'Håll in [E] för att respawna',
|
||||
['respawn_bleedout_fine'] = 'Håll in [E] för att respawna för %skr',
|
||||
['respawn_bleedout_fine_msg'] = 'Du betalade %skr för att respawna.',
|
||||
['distress_send'] = 'Tryck [G] för att skicka nödsignal',
|
||||
['distress_sent'] = 'Nödsignal har skickats till lediga enheter!',
|
||||
-- Revive
|
||||
['revive_help'] = 'Återuppliva en spelare',
|
||||
-- Item
|
||||
['used_medikit'] = 'Du har använt 1x första hjälpen',
|
||||
['used_bandage'] = 'Du har använt 1x bandage',
|
||||
['not_enough_medikit'] = 'Du har ingen första hjälpen.',
|
||||
['not_enough_bandage'] = 'Du har ingen bandage bandage.',
|
||||
['healed'] = 'Du har fått vård.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Sjukhus',
|
||||
['blip_dead'] = 'Döende spelare',
|
||||
}
|
||||
85
resources/[esx_addons]/esx_ambulancejob/locales/zh-cn.lua
Normal file
85
resources/[esx_addons]/esx_ambulancejob/locales/zh-cn.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
Locales['zh-cn'] = {
|
||||
-- Cloakroom
|
||||
['cloakroom'] = '更衣室',
|
||||
['ems_clothes_civil'] = '换回便服',
|
||||
['ems_clothes_ems'] = '医护工服',
|
||||
-- Vehicles
|
||||
['ambulance'] = '紧急救援',
|
||||
['helicopter_prompt'] = '键下 [E] 打开飞行载具选单.',
|
||||
['garage_prompt'] = '键下 [E] 打开载具选单.',
|
||||
['garage_title'] = '医护载具',
|
||||
['garage_stored'] = '已存放',
|
||||
['garage_notstored'] = '尚未于车库内',
|
||||
['garage_storing'] = '我们正在尝试存放车辆, 确保车辆上无其他市民!',
|
||||
['garage_has_stored'] = '车辆已存放于您的车库中!',
|
||||
['garage_has_notstored'] = '无法存放! 检索不到附近的自有车辆',
|
||||
['garage_notavailable'] = '尚未发现此车库有您的载具.',
|
||||
['garage_blocked'] = '当前可用的载具出库位置已全部占用! 请查看出库位置是否有遮挡物',
|
||||
['garage_empty'] = '尚未发现此车库有您的载具!',
|
||||
['garage_released'] = '车辆已出库! 请安全驾驶.',
|
||||
['garage_store_nearby'] = '尚未检索到附近的自有载具.',
|
||||
['garage_storeditem'] = '进入车库',
|
||||
['garage_storeitem'] = '存放载具',
|
||||
['garage_buyitem'] = '载具商店',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = '载具商店',
|
||||
['vehicleshop_confirm'] = '确认购买当前选择车辆?',
|
||||
['vehicleshop_bought'] = '成功购买:%s, 支付价格:$%s',
|
||||
['vehicleshop_money'] = '暂无足够的资金/货币购买',
|
||||
['vehicleshop_awaiting_model'] = '车辆数据当前加载种 & 下载中,请耐心等待!',
|
||||
['confirm_no'] = '取消',
|
||||
['confirm_yes'] = '确认',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = '紧急治疗中...!',
|
||||
['revive_complete'] = '成功治疗:%s',
|
||||
['revive_complete_award'] = '完成治疗 %s任务, 挣得薪酬:$%s!',
|
||||
['revive_fail_offline'] = '发生错误! 该市民已离线!',
|
||||
['heal_inprogress'] = '正在包扎!',
|
||||
['heal_complete'] = '你已经治愈了:%s',
|
||||
['no_players'] = '附近暂无其他市民',
|
||||
['player_not_unconscious'] = '市民一息尚存! 请勿错误操作',
|
||||
['player_not_conscious'] = '市民已失去意识! 请实施救援',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = '人事管理',
|
||||
-- Misc
|
||||
['invalid_amount'] = '无效金额输入!',
|
||||
['actions_prompt'] = '键下 [E] 打开医护菜单.',
|
||||
['deposit_amount'] = '存放资金',
|
||||
['money_withdraw'] = '提取资金',
|
||||
['fast_travel'] = '键下 [E] 快捷移动.',
|
||||
['open_pharmacy'] = '键下 [E] 进入药房.',
|
||||
['pharmacy_menu_title'] = '医院药房',
|
||||
['pharmacy_take'] = '拿取 <span style="color:blue;">%s</span>',
|
||||
['medikit'] = '紧急治疗包',
|
||||
['bandage'] = '医用绷带',
|
||||
['max_item'] = '无法携带更多!',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = '紧急救援',
|
||||
['ems_menu_title'] = '紧急救援 - 医护选单',
|
||||
['ems_menu_revive'] = '紧急救治',
|
||||
['ems_menu_putincar'] = '放入车内',
|
||||
['ems_menu_small'] = '处理轻微伤口',
|
||||
['ems_menu_big'] = '处治严重创伤',
|
||||
['ems_menu_search'] = '找不到附近市民? 选择此处',
|
||||
-- Phone
|
||||
['alert_ambulance'] = '救援警报',
|
||||
-- Death
|
||||
['respawn_available_in'] = '强制重生功能将于:%s分%s秒内激活',
|
||||
['respawn_bleedout_in'] = '持续留血:%s分%s秒\n',
|
||||
['respawn_bleedout_prompt'] = '按住 [E] 获得重生',
|
||||
['respawn_bleedout_fine'] = '按住 [E] 支付 $%s 强制重生',
|
||||
['respawn_bleedout_fine_msg'] = '成功支付 $%s 用来强制重生',
|
||||
['distress_send'] = '键下 [G] 向医护发送救援信号',
|
||||
['distress_sent'] = '救援信号成功发送至医护人员!',
|
||||
-- Revive
|
||||
['revive_help'] = '救治玩家',
|
||||
-- Item
|
||||
['used_medikit'] = '您已成功使用一个医疗急救包!',
|
||||
['used_bandage'] = '您已成功使用一个止血绷带',
|
||||
['not_enough_medikit'] = '当前背包暂无医疗急救包.',
|
||||
['not_enough_bandage'] = '当前背包暂无止血绷带.',
|
||||
['healed'] = '您正在被治疗',
|
||||
-- Blips
|
||||
['blip_hospital'] = '人民医院',
|
||||
['blip_dead'] = '失去意识的市民',
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Záchranka', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Záchranka', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Záchranka', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Zdravotník',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Doktor',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Primář',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Chirurg',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Záchranka')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Obvaz', 2),
|
||||
('medikit','Lékarnička', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Rettungsdienst', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Rettungsdienst', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Rettungsdienst', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Jr. Sanitäter',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Sanitäter',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Arzt',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Rettungsdienst Chef',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Rettungsdienst')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Verband', 2),
|
||||
('medikit','Verbandskasten', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'EMS', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'EMS', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'EMS', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Jr. EMT',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','EMT',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Sr. EMT',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','EMT Supervisor',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','EMS')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bandage', 2),
|
||||
('medikit','Medikit', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ensihoito', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ensihoito', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ensihoito', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Ensihoitaja',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Lääkäri',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Yli-lääkäri',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Kirurgi',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Ensihoito')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Sideharso', 2),
|
||||
('medikit','Ensiapupakkaus', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Ambulancier',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Médecin',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Médecin chef',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Chirurgien',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Ambulance')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bandage', 2),
|
||||
('medikit','Kit de soins', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'EMS', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'EMS', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'EMS', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Specializzando',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Dottore',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Primario',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Direttore Sanitario',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','EMS')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bende', 2),
|
||||
('medikit','Kit medico', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Verpleger',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Dokter',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Hoofdarts',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Baas',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Ambulance')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Verband', 2),
|
||||
('medikit','EHBO Kit', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Ambulance', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Pogotowie ratunkowe', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Ratownik',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Lekarz',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Chirurg',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Ordynator',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Pogotowie ratunkowe')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bandaż', 2),
|
||||
('medikit','Defibrylator', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', '人民医院', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', '人民医院', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', '人民医院', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','实习医生',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','紧急医疗',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','主治医师',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','医院院长',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','人民医院')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','医用绷带', 2),
|
||||
('medikit','紧急治疗包', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'UKC', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'UKC', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'UKC', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Resevalec',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Zdravnik',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Pod Direktor',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Direktor',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Ambulance')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bandage', 2),
|
||||
('medikit','Medikit', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Bolnica', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Bolnica', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Bolnica', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Medicinski tehničar',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','Doktor',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Zamenik direktora',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','Direktor',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Bolnica')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bandaže', 2),
|
||||
('medikit','Prva Pomoć', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Sjukvården', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Sjukvården', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_ambulance', 'Sjukvården', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('ambulance',0,'ambulance','Jr. EMT',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',1,'doctor','EMT',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',2,'chief_doctor','Sr. EMT',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
|
||||
('ambulance',3,'boss','EMT Supervisor',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('ambulance','Sjukvården')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('bandage','Bandage', 2),
|
||||
('medikit','Första hjälpen', 2)
|
||||
;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
|
||||
;
|
||||
380
resources/[esx_addons]/esx_ambulancejob/server/main.lua
Normal file
380
resources/[esx_addons]/esx_ambulancejob/server/main.lua
Normal file
@@ -0,0 +1,380 @@
|
||||
local playersHealing, deadPlayers = {}, {}
|
||||
|
||||
if GetResourceState("esx_phone") ~= 'missing' then
|
||||
TriggerEvent('esx_phone:registerNumber', 'ambulance', TranslateCap('alert_ambulance'), true, true)
|
||||
end
|
||||
|
||||
if GetResourceState("esx_society") ~= 'missing' then
|
||||
TriggerEvent('esx_society:registerSociety', 'ambulance', 'Ambulance', 'society_ambulance', 'society_ambulance',
|
||||
'society_ambulance', { type = 'public' })
|
||||
end
|
||||
|
||||
local function isDeadState(src, bool)
|
||||
if not src or bool == nil then return end
|
||||
|
||||
Player(src).state:set('isDead', bool, true)
|
||||
end
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:revive')
|
||||
AddEventHandler('esx_ambulancejob:revive', function(playerId)
|
||||
playerId = tonumber(playerId)
|
||||
local xPlayer = source and ESX.GetPlayerFromId(source)
|
||||
|
||||
if xPlayer and xPlayer.job.name == 'ambulance' then
|
||||
local xTarget = ESX.GetPlayerFromId(playerId)
|
||||
if xTarget then
|
||||
if deadPlayers[playerId] then
|
||||
if Config.ReviveReward > 0 then
|
||||
xPlayer.showNotification(TranslateCap('revive_complete_award', xTarget.name, Config.ReviveReward))
|
||||
xPlayer.addMoney(Config.ReviveReward, "Revive Reward")
|
||||
xTarget.triggerEvent('esx_ambulancejob:revive')
|
||||
isDeadState(xTarget.source, false)
|
||||
else
|
||||
xPlayer.showNotification(TranslateCap('revive_complete', xTarget.name))
|
||||
xTarget.triggerEvent('esx_ambulancejob:revive')
|
||||
isDeadState(xTarget.source, false)
|
||||
end
|
||||
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
|
||||
|
||||
for _, xPlayer in pairs(Ambulance) do
|
||||
if xPlayer.job.name == 'ambulance' then
|
||||
xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', playerId)
|
||||
end
|
||||
end
|
||||
deadPlayers[playerId] = nil
|
||||
else
|
||||
xPlayer.showNotification(TranslateCap('player_not_unconscious'))
|
||||
end
|
||||
else
|
||||
xPlayer.showNotification(TranslateCap('revive_fail_offline'))
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('txAdmin:events:healedPlayer', function(eventData)
|
||||
if GetInvokingResource() ~= "monitor" or type(eventData) ~= "table" or type(eventData.id) ~= "number" then
|
||||
return
|
||||
end
|
||||
if deadPlayers[eventData.id] then
|
||||
TriggerClientEvent('esx_ambulancejob:revive', eventData.id)
|
||||
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
|
||||
|
||||
for _, xPlayer in pairs(Ambulance) do
|
||||
if xPlayer.job.name == 'ambulance' then
|
||||
xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', eventData.id)
|
||||
end
|
||||
end
|
||||
deadPlayers[eventData.id] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:onPlayerDeath')
|
||||
AddEventHandler('esx:onPlayerDeath', function(data)
|
||||
local source = source
|
||||
deadPlayers[source] = 'dead'
|
||||
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
|
||||
isDeadState(source, true)
|
||||
|
||||
for _, xPlayer in pairs(Ambulance) do
|
||||
xPlayer.triggerEvent('esx_ambulancejob:PlayerDead', source)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_ambulancejob:svsearch')
|
||||
AddEventHandler('esx_ambulancejob:svsearch', function()
|
||||
TriggerClientEvent('esx_ambulancejob:clsearch', -1, source)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:onPlayerDistress')
|
||||
AddEventHandler('esx_ambulancejob:onPlayerDistress', function()
|
||||
local source = source
|
||||
local injuredPed = GetPlayerPed(source)
|
||||
local injuredCoords = GetEntityCoords(injuredPed)
|
||||
|
||||
if deadPlayers[source] then
|
||||
deadPlayers[source] = 'distress'
|
||||
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
|
||||
|
||||
for _, xPlayer in pairs(Ambulance) do
|
||||
xPlayer.triggerEvent('esx_ambulancejob:PlayerDistressed', source, injuredCoords)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:onPlayerSpawn')
|
||||
AddEventHandler('esx:onPlayerSpawn', function()
|
||||
local source = source
|
||||
if deadPlayers[source] then
|
||||
deadPlayers[source] = nil
|
||||
isDeadState(source, false)
|
||||
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
|
||||
|
||||
for _, xPlayer in pairs(Ambulance) do
|
||||
xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', source)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('esx:playerDropped', function(playerId, reason)
|
||||
if deadPlayers[playerId] then
|
||||
deadPlayers[playerId] = nil
|
||||
isDeadState(playerId, false)
|
||||
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
|
||||
|
||||
for _, xPlayer in pairs(Ambulance) do
|
||||
if xPlayer.job.name == 'ambulance' then
|
||||
xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', playerId)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:heal')
|
||||
AddEventHandler('esx_ambulancejob:heal', function(target, type)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if xPlayer.job.name == 'ambulance' then
|
||||
TriggerClientEvent('esx_ambulancejob:heal', target, type)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:putInVehicle')
|
||||
AddEventHandler('esx_ambulancejob:putInVehicle', function(target)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if xPlayer.job.name == 'ambulance' then
|
||||
TriggerClientEvent('esx_ambulancejob:putInVehicle', target)
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function(source, cb)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if Config.OxInventory and Config.RemoveItemsAfterRPDeath then
|
||||
exports.ox_inventory:ClearInventory(xPlayer.source)
|
||||
return cb()
|
||||
end
|
||||
|
||||
if Config.RemoveCashAfterRPDeath then
|
||||
if xPlayer.getMoney() > 0 then
|
||||
xPlayer.removeMoney(xPlayer.getMoney(), "Death")
|
||||
end
|
||||
|
||||
if xPlayer.getAccount('black_money').money > 0 then
|
||||
xPlayer.setAccountMoney('black_money', 0, "Death")
|
||||
end
|
||||
end
|
||||
|
||||
if Config.RemoveItemsAfterRPDeath then
|
||||
for i = 1, #xPlayer.inventory, 1 do
|
||||
if xPlayer.inventory[i].count > 0 then
|
||||
xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if Config.OxInventory then return cb() end
|
||||
|
||||
local playerLoadout = {}
|
||||
if Config.RemoveWeaponsAfterRPDeath then
|
||||
for i = 1, #xPlayer.loadout, 1 do
|
||||
xPlayer.removeWeapon(xPlayer.loadout[i].name)
|
||||
end
|
||||
else -- save weapons & restore em' since spawnmanager removes them
|
||||
for i = 1, #xPlayer.loadout, 1 do
|
||||
table.insert(playerLoadout, xPlayer.loadout[i])
|
||||
end
|
||||
|
||||
-- give back wepaons after a couple of seconds
|
||||
CreateThread(function()
|
||||
Wait(5000)
|
||||
for i = 1, #playerLoadout, 1 do
|
||||
if playerLoadout[i].label ~= nil then
|
||||
xPlayer.addWeapon(playerLoadout[i].name, playerLoadout[i].ammo)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
cb()
|
||||
end)
|
||||
|
||||
if Config.EarlyRespawnFine then
|
||||
ESX.RegisterServerCallback('esx_ambulancejob:checkBalance', function(source, cb)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local bankBalance = xPlayer.getAccount('bank').money
|
||||
|
||||
cb(bankBalance >= Config.EarlyRespawnFineAmount)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:payFine')
|
||||
AddEventHandler('esx_ambulancejob:payFine', function()
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local fineAmount = Config.EarlyRespawnFineAmount
|
||||
|
||||
xPlayer.showNotification(TranslateCap('respawn_bleedout_fine_msg', ESX.Math.GroupDigits(fineAmount)))
|
||||
xPlayer.removeAccountMoney('bank', fineAmount, "Respawn Fine")
|
||||
end)
|
||||
end
|
||||
|
||||
ESX.RegisterServerCallback('esx_ambulancejob:getItemAmount', function(source, cb, item)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local quantity = xPlayer.getInventoryItem(item).count
|
||||
|
||||
cb(quantity)
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_ambulancejob:buyJobVehicle', function(source, cb, vehicleProps, type)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local price = getPriceFromHash(vehicleProps.model, xPlayer.job.grade_name, type)
|
||||
|
||||
-- vehicle model not found
|
||||
if price == 0 then
|
||||
cb(false)
|
||||
else
|
||||
if xPlayer.getMoney() >= price then
|
||||
xPlayer.removeMoney(price, "Job Vehicle Purchase")
|
||||
|
||||
MySQL.insert('INSERT INTO owned_vehicles (owner, vehicle, plate, type, job, `stored`) VALUES (?, ?, ?, ?, ?, ?)',
|
||||
{ xPlayer.identifier, json.encode(vehicleProps), vehicleProps.plate, type, xPlayer.job.name, true },
|
||||
function(rowsChanged)
|
||||
cb(true)
|
||||
end)
|
||||
else
|
||||
cb(false)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_ambulancejob:storeNearbyVehicle', function(source, cb, plates)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
local plate = MySQL.scalar.await('SELECT plate FROM owned_vehicles WHERE owner = ? AND plate IN (?) AND job = ?',
|
||||
{ xPlayer.identifier, plates, xPlayer.job.name })
|
||||
|
||||
if plate then
|
||||
MySQL.update('UPDATE owned_vehicles SET `stored` = true WHERE owner = ? AND plate = ? AND job = ?',
|
||||
{ xPlayer.identifier, plate, xPlayer.job.name },
|
||||
function(rowsChanged)
|
||||
if rowsChanged == 0 then
|
||||
cb(false)
|
||||
else
|
||||
cb(plate)
|
||||
end
|
||||
end)
|
||||
else
|
||||
cb(false)
|
||||
end
|
||||
end)
|
||||
|
||||
function getPriceFromHash(vehicleHash, jobGrade, type)
|
||||
local vehicles = Config.AuthorizedVehicles[type][jobGrade]
|
||||
|
||||
for i = 1, #vehicles do
|
||||
local vehicle = vehicles[i]
|
||||
if joaat(vehicle.model) == vehicleHash then
|
||||
return vehicle.price
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:removeItem')
|
||||
AddEventHandler('esx_ambulancejob:removeItem', function(item)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
xPlayer.removeInventoryItem(item, 1)
|
||||
|
||||
if item == 'bandage' then
|
||||
xPlayer.showNotification(TranslateCap('used_bandage'))
|
||||
elseif item == 'medikit' then
|
||||
xPlayer.showNotification(TranslateCap('used_medikit'))
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:giveItem')
|
||||
AddEventHandler('esx_ambulancejob:giveItem', function(itemName, amount)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if xPlayer.job.name ~= 'ambulance' then
|
||||
print(('[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5' .. itemName .. '^7!'):format(xPlayer.source))
|
||||
return
|
||||
elseif (itemName ~= 'medikit' and itemName ~= 'bandage') then
|
||||
print(('[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5' .. itemName .. '^7!'):format(xPlayer.source))
|
||||
return
|
||||
end
|
||||
|
||||
if xPlayer.canCarryItem(itemName, amount) then
|
||||
xPlayer.addInventoryItem(itemName, amount)
|
||||
else
|
||||
xPlayer.showNotification(TranslateCap('max_item'))
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterCommand('revive', 'admin', function(xPlayer, args, showError)
|
||||
args.playerId.triggerEvent('esx_ambulancejob:revive')
|
||||
end, true, { help = TranslateCap('revive_help'), validate = true, arguments = {
|
||||
{ name = 'playerId', help = 'The player id', type = 'player' }
|
||||
} })
|
||||
|
||||
ESX.RegisterCommand('reviveall', "admin", function(xPlayer, args, showError)
|
||||
TriggerClientEvent('esx_ambulancejob:revive', -1)
|
||||
end, false)
|
||||
|
||||
ESX.RegisterUsableItem('medikit', function(source)
|
||||
if not playersHealing[source] then
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
xPlayer.removeInventoryItem('medikit', 1)
|
||||
|
||||
playersHealing[source] = true
|
||||
TriggerClientEvent('esx_ambulancejob:useItem', source, 'medikit')
|
||||
|
||||
Wait(10000)
|
||||
playersHealing[source] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterUsableItem('bandage', function(source)
|
||||
if not playersHealing[source] then
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
xPlayer.removeInventoryItem('bandage', 1)
|
||||
|
||||
playersHealing[source] = true
|
||||
TriggerClientEvent('esx_ambulancejob:useItem', source, 'bandage')
|
||||
|
||||
Wait(10000)
|
||||
playersHealing[source] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_ambulancejob:getDeadPlayers', function(source, cb)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
if xPlayer.job.name == "ambulance" then
|
||||
cb(deadPlayers)
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_ambulancejob:getDeathStatus', function(source, cb)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
MySQL.scalar('SELECT is_dead FROM users WHERE identifier = ?', { xPlayer.identifier }, function(isDead)
|
||||
cb(isDead)
|
||||
end)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_ambulancejob:setDeathStatus')
|
||||
AddEventHandler('esx_ambulancejob:setDeathStatus', function(isDead)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if type(isDead) == 'boolean' then
|
||||
MySQL.update('UPDATE users SET is_dead = ? WHERE identifier = ?', { isDead, xPlayer.identifier })
|
||||
isDeadState(source, isDead)
|
||||
|
||||
if not isDead then
|
||||
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
|
||||
for _, xPlayer in pairs(Ambulance) do
|
||||
xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', source)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
674
resources/[esx_addons]/esx_animations/LICENSE
Normal file
674
resources/[esx_addons]/esx_animations/LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, 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
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If 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 convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_animations
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_animations Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
37
resources/[esx_addons]/esx_animations/README.md
Normal file
37
resources/[esx_addons]/esx_animations/README.md
Normal file
@@ -0,0 +1,37 @@
|
||||
<h1 align='center'>[ESX] Animations</a></h1><p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://documentation.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
## Download & Installation
|
||||
|
||||
### Using [fvm](https://github.com/qlaffont/fvm-installer)
|
||||
```
|
||||
fvm install --save --folder=esx esx-framework/esx_animations
|
||||
```
|
||||
|
||||
### Using Git
|
||||
```
|
||||
cd resources
|
||||
git clone https://github.com/esx-framework/esx_animations [esx]/esx_animations
|
||||
```
|
||||
|
||||
### Manually
|
||||
- Download https://github.com/esx-framework/esx_animations/archive/master.zip
|
||||
- Put it in the `[esx]` directory
|
||||
|
||||
## Installation
|
||||
- Add this in your `server.cfg`:
|
||||
|
||||
```
|
||||
start esx_animations
|
||||
```
|
||||
|
||||
# Legal
|
||||
### License
|
||||
esx_animations - play anims!
|
||||
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 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 General Public License For more details.
|
||||
|
||||
You should have received a copy Of the GNU General Public License along with this program. If Not, see http://www.gnu.org/licenses/.
|
||||
95
resources/[esx_addons]/esx_animations/client/main.lua
Normal file
95
resources/[esx_addons]/esx_animations/client/main.lua
Normal file
@@ -0,0 +1,95 @@
|
||||
local function startAttitude(lib, anim)
|
||||
ESX.Streaming.RequestAnimSet(lib, function()
|
||||
SetPedMovementClipset(ESX.PlayerData.ped, anim, 1)
|
||||
end)
|
||||
end
|
||||
|
||||
local function startAnim(lib, anim)
|
||||
ESX.Streaming.RequestAnimDict(lib, function()
|
||||
TaskPlayAnim(ESX.PlayerData.ped, lib, anim, 8.0, -8.0, -1, 0, 0.0, false, false, false)
|
||||
RemoveAnimDict(lib)
|
||||
end)
|
||||
end
|
||||
|
||||
local function startScenario(anim)
|
||||
TaskStartScenarioInPlace(ESX.PlayerData.ped, anim, 0, false)
|
||||
end
|
||||
|
||||
local function openAnimationsSubMenu(menu)
|
||||
local elements = {}
|
||||
|
||||
for i = 1, #Config.Animations, 1 do
|
||||
elements = {
|
||||
{ unselectable = true, icon = "fas fa-smile", title = Config.Animations[i].label }
|
||||
}
|
||||
|
||||
if Config.Animations[i].name == menu then
|
||||
for j = 1, #Config.Animations[i].items, 1 do
|
||||
elements[#elements + 1] = {
|
||||
icon = "fas fa-smile",
|
||||
title = Config.Animations[i].items[j].label,
|
||||
type = Config.Animations[i].items[j].type,
|
||||
value = Config.Animations[i].items[j].data
|
||||
}
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
ESX.OpenContext("right", elements, function(_, element)
|
||||
local type = element.type
|
||||
local lib = element.value.lib
|
||||
local anim = element.value.anim
|
||||
|
||||
if type == 'scenario' then
|
||||
startScenario(anim)
|
||||
elseif type == 'attitude' then
|
||||
startAttitude(lib, anim)
|
||||
elseif type == 'anim' then
|
||||
startAnim(lib, anim)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
local function openAnimationsMenu()
|
||||
local elements = {
|
||||
{ unselectable = true, icon = "fas fa-smile", title = "Animations" }
|
||||
}
|
||||
|
||||
for i = 1, #Config.Animations, 1 do
|
||||
elements[#elements + 1] = {
|
||||
icon = "fas fa-smile",
|
||||
title = Config.Animations[i].label,
|
||||
value = Config.Animations[i].name
|
||||
}
|
||||
end
|
||||
|
||||
ESX.OpenContext("right", elements, function(_, element)
|
||||
openAnimationsSubMenu(element.value)
|
||||
end)
|
||||
end
|
||||
|
||||
-- Key Controls
|
||||
RegisterCommand('animmenu', function()
|
||||
if not ESX.PlayerData.dead then
|
||||
openAnimationsMenu()
|
||||
end
|
||||
end, false)
|
||||
|
||||
RegisterCommand('cleartasks', function()
|
||||
if not ESX.PlayerData.dead then
|
||||
ClearPedTasks(ESX.PlayerData.ped)
|
||||
end
|
||||
end, false)
|
||||
|
||||
RegisterKeyMapping('animmenu', 'Open Animations Menu', 'keyboard', 'f3')
|
||||
RegisterKeyMapping('cleartasks', 'Stop Animation', 'keyboard', 'z')
|
||||
|
||||
-- Expose animations to other resources
|
||||
exports('GetConfig', function()
|
||||
return Config
|
||||
end)
|
||||
|
||||
exports('SetConfig', function(newConfig)
|
||||
Config = newConfig
|
||||
end)
|
||||
161
resources/[esx_addons]/esx_animations/config.lua
Normal file
161
resources/[esx_addons]/esx_animations/config.lua
Normal file
@@ -0,0 +1,161 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Festives',
|
||||
items = {
|
||||
{label = "Fumer une cigarette", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Jouer de la musique", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "Dj", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Boire une biere", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Bière en zik", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Air Guitar", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Air Shagging", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Fumer un joint", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Bourré sur place", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Vomir en voiture", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Salutations',
|
||||
items = {
|
||||
{label = "Saluer", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Serrer la main", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Tchek", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Salut bandit", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Salut Militaire", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Travail',
|
||||
items = {
|
||||
{label = "Suspect : se rendre à la police", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Pêcheur", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Police : enquêter", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Police : parler à la radio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Police : circulation", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Police : jumelles", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Agriculture : récolter", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Dépanneur : réparer le moteur", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Médecin : observer", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi : parler au client", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi : donner la facture", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Epicier : donner les courses", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman : servir un shot", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Journaliste : Prendre une photo", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Tout métiers : Prendre des notes", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Tout métiers : Coup de marteau", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Clochard : Faire la manche", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Clochard : Faire la statue", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Humeurs',
|
||||
items = {
|
||||
{label = "Féliciter", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Toi", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Viens", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Keskya ?", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "A moi", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Je le savais, putain", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Etre épuisé", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Je suis dans la merde", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Calme-toi ", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Qu'est ce que j'ai fait ?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Avoir peur", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Fight ?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "C'est pas Possible !", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Enlacer", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Doigt d'honneur", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Branleur", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Balle dans la tete", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sports',
|
||||
items = {
|
||||
{label = "Montrer ses muscles", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Barre de musculation", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Faire des pompes", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Faire des abdos", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Faire du yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Divers',
|
||||
items = {
|
||||
{label = "Boire un café", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "S'asseoir", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Attendre contre un mur", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Couché sur le dos", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Couché sur le ventre", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Nettoyer quelque chose", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Préparer à manger", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Position de Fouille", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Prendre un selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Ecouter à une porte", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Attitudes',
|
||||
items = {
|
||||
{label = "Normal M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normal F", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depressif", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depressif F", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Business", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Determine", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Casual", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Trop mange", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Blesse", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Intimide", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Hobo", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Malheureux", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muscle", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Choc", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Sombre", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Fatigue", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Pressee", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Fier", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Petite course", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Mangeuse d'homme", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Impertinent", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogante", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'PEGI 21',
|
||||
items = {
|
||||
{label = "Homme se faire su*** en voiture", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Femme faire une gaterie en voiture", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Homme bais** en voiture", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Femme bais** en voiture", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Se gratter les couilles", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Faire du charme", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Pose michto", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Montrer sa poitrine", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Strip Tease 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Strip Tease 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Stip Tease au sol", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
}
|
||||
}
|
||||
15
resources/[esx_addons]/esx_animations/fxmanifest.lua
Normal file
15
resources/[esx_addons]/esx_animations/fxmanifest.lua
Normal file
@@ -0,0 +1,15 @@
|
||||
fx_version 'cerulean'
|
||||
game 'gta5'
|
||||
lua54 'yes'
|
||||
|
||||
description 'Allows Players to play animations'
|
||||
version '1.0'
|
||||
legacyversion '1.13.4'
|
||||
|
||||
dependency 'es_extended'
|
||||
|
||||
client_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
'config.lua',
|
||||
'client/main.lua'
|
||||
}
|
||||
161
resources/[esx_addons]/esx_animations/localization/br_config.lua
Normal file
161
resources/[esx_addons]/esx_animations/localization/br_config.lua
Normal file
@@ -0,0 +1,161 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Festivo',
|
||||
items = {
|
||||
{label = "Fumar cigarros", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Tocar um instrumento musical", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "DJ", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Beber", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Festa", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Tocando um violão imaginário", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Celebrando", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "rock and roll ", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Kouření jointu", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Bêbados", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Vômitos no carro", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Saudações',
|
||||
items = {
|
||||
{label = "Saudação", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Aperto de mão", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Aperto de mão 2", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Abraço gangster", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Comprimentar", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Trabalho',
|
||||
items = {
|
||||
{label = "Suspeito: rendição à polícia", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Pesca", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Polícia: investigação", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Polícia: falando no rádio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Polícia: gerenciamento de tráfego", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Polícia: binóculos", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Agricultura: coleta", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mecânico: reparação de motores", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Médico: exame", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Táxi: conversando com o cliente", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Táxi: entregando uma fatura", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Vendedor: bens de alimentação", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman: Derramando uma bebida", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Jornalista: sessão de fotos", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Outro trabalho: anotando", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Outros trabalhos: rosqueamento de martelo", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Hobo: segurando cartazes", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Hobo: estátuas de imitação", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Humor',
|
||||
items = {
|
||||
{label = "Aplausos", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Apontando com o dedo", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Vem cá", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Então, o que houve?", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Já?", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Eu sabia, o inferno", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Pendurado", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Está ferrado", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Tapa na cara", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Acalme-se", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "O que eu fiz?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Oh não", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Batalha?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Isso não é possível!", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Beijo", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Dar dedo", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Masturbando", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Bala na cabeça", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Esportes',
|
||||
items = {
|
||||
{label = "Mostrando músculos", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Fortalecimento", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Clicando", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Sentar", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Outros',
|
||||
items = {
|
||||
{label = "Bebendo café", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Sentado", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Encostado em uma parede", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Deitado de costas", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Deitado de bruços", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Limpeza", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Churrasco", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Tour pessoal", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Tirando uma selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Ouvindo atras da porta", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Atitudes',
|
||||
items = {
|
||||
{label = "Homem normal", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Mulher normal", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Homem deprimido", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Mulher deprimida", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Negócios", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Determinado", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Comum", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Travessia", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Lesões", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Pressa", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Sem abrigo", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Triste", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muscularidade", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Chocado", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Suspeito", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Fadiga", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Êxito", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Orgulhoso", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Arrancado", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Gay", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Insolência", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogância", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'Sex',
|
||||
items = {
|
||||
{label = "Fumar no carro - homem", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Fumar no carro - mulher", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Sexo no carro - homem", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Sexo no carro - mulher", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Raspagem na virilha", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Prostitutas em pé", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Pose de prostituta", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "mostrando o peito", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Striptease", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Striptease 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Striptease 3", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
}
|
||||
}
|
||||
161
resources/[esx_addons]/esx_animations/localization/cs_config.lua
Normal file
161
resources/[esx_addons]/esx_animations/localization/cs_config.lua
Normal file
@@ -0,0 +1,161 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Slavnostní',
|
||||
items = {
|
||||
{label = "Kouření cigarety", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Hraní na hudební nástroj", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "DJ", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Pití", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Párty", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Hraní na imaginární kytaru", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Oslavování", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Kouření jointu", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Ožralecké balancování", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Zvracení v autě", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Pozdravy',
|
||||
items = {
|
||||
{label = "Pozdrav", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Podání ruky", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Podání ruky 2", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Gangsterské objetí", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Salutování", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Práce',
|
||||
items = {
|
||||
{label = "Podezřelý: vzdání se policii", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Rybaření", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Policie: vyšetřování", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Policie: mluvení do vysílačky", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Policie: řízení dopravy", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Policie: dalekohled", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Zemědělství: sbírání", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mechanik: oprava motoru", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Lékař: prohlídka", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi: mluvení k zákazníkovi", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi: dávání faktury", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Prodavač: podávání zboží", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman: nalití panáka", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Novinář: focení", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Jiná práce: zapisování poznámek", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Jiná práce: ťukání kladivem", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Tulák: držení cedule", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Tulák: imitace sochy", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Nálady',
|
||||
items = {
|
||||
{label = "Potlesk", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Ukázání prstem", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Pojď sem", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Tak co je?", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Já?", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Já to věděl sakra", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Postávání", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Je to v háji", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Klídek", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Co jsem to udělal?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Oh ne", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Bitka?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "To snad není možné!", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Polibek", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Fakování", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Onanování", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Kulka do hlavy", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sporty',
|
||||
items = {
|
||||
{label = "Ukázání svalů", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Posilování", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Klikování", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Sedy lehy", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Jóga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Ostatní',
|
||||
items = {
|
||||
{label = "Pití kávy", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Sedění", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Opření o zeď", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Ležení na zádech", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Ležení na břiše", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Uklízení", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Grilování", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Osobní prohlídka", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Focení selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Poslouchání u dveří", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Postoje',
|
||||
items = {
|
||||
{label = "Normální muž", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normální žena", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Deprese muž", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Deprese žena", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Business", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Odhodlaný", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Běžný", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Přejezení", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Zranění", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Pospíchání", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Bezdomovec", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Smutný", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Svalnatost", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Šokovaný", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Podezřelý", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Únava", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Uspěchanost", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Pyšný", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Sprint", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Gay", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Drzost", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arogance", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'Sex',
|
||||
items = {
|
||||
{label = "Kouření v autě - muž", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Kouření v autě - žena", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Sex v autě - muž", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Sex v autě - žena", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Škrabání v rozkroku", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Stání prostitutky", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Póza prostitutky", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Ukázání prsou", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Striptýz", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Striptýz 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Striptýz 3", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
}
|
||||
}
|
||||
162
resources/[esx_addons]/esx_animations/localization/de_config.lua
Normal file
162
resources/[esx_addons]/esx_animations/localization/de_config.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Party',
|
||||
items = {
|
||||
{label = "Rauchen", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Musiker", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "DJ", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Kaffee Trinken", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Bier", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Luftgitarre", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Luftschlagen", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Joint Rauchen", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Betrunken stehen", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Übergeben", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Grüßungen',
|
||||
items = {
|
||||
{label = "Hallo", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Winken", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Händeschütteln", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Umarmen", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Salutieren", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Job',
|
||||
items = {
|
||||
{label = "Verdächtiger : Ergeben", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Angeln", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Polizei : Untersuchen", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Polizei : Funkgerät benutzen", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Polizei : Vehrkehr Kontrollieren", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Polizei : Fernglas", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Agrarkultur : Pflanzen", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mechaniker : Motor reparieren", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Sanitäter : Hinknien", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi : Mit dem Kunden reden", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi : Rechnung ausstellen", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Verkäufer : Geben", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barkeeper : Getränk Servieren", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Journalist : Fotos aufnehmen", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Alle Jobs : Klemmbrett", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Alle Jobs : Hammern", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Obdachlos : Schild halten", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Obdachlos : Menschliche Statur", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Spaß',
|
||||
items = {
|
||||
{label = "Jubeln", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Zeigen", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Komm her", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Los geht's", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Ich", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Ich wusste es", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Erschöpft", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Ich bin die scheiße", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Peinlich", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Komm runter ", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Was habe ich gemacht?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Angst", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Kämpfen ?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Das ist nicht möglich !", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Küssen", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Finger der Ehre", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Du Wichser", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Kugel im Kopf", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sport',
|
||||
items = {
|
||||
{label = "Mit Muskeln angeben", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Gewichte Stämmen", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Liegestützen machen", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Situps machen", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Yoga machen", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Fahrer',
|
||||
items = {
|
||||
{label = "Kaffee trinken", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Sitzen", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "An die wand lehnen", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Sonnenbad Hinten", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Sonnenbad Vorne", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Sauber", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Grillen", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Suchen", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Selfie aufnehmen", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Wand/Tür anhören", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Gehstyle',
|
||||
items = {
|
||||
{label = "Normal Michael", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normal Frankling", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depressiver Mann", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depressiver Frau", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Arbeit", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Brav gehen", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Normal", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Zuviel gegessen", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Verletzt", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Beeilen", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Landstreicher", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Traurig", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muskeln", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Geschokt", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Zwielichtig sein", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Angeschlagen", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Beeilen", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Stolz", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Kurzes rennen", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Menschenfresser", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Frech", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogant", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'NSFW',
|
||||
items = {
|
||||
{label = "Mann bekommt in einem Auto", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Frau gibt in einem Auto", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Mann oben im Auto", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Frau oben im Auto", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Eier kratzen", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Nutte 1", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Nutte 2", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Nutte 3", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Strip Tanz 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Strip Tanz 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Stip Tanz auf knien", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
162
resources/[esx_addons]/esx_animations/localization/en_config.lua
Normal file
162
resources/[esx_addons]/esx_animations/localization/en_config.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Festive',
|
||||
items = {
|
||||
{label = "Smoke", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Musician", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "Dj", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Coffee", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Beer", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Air Guitar", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Air Shagging", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Fumer un joint", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Drunk Standing", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Vomiting", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Greetings',
|
||||
items = {
|
||||
{label = "Hello", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Wave", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Handshake", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Hugging", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Salute", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Job',
|
||||
items = {
|
||||
{label = "Suspect : Surrender", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Fishing", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Police : Investigate", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Police : Use Radio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Police : Traffic", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Police : Binoculars", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Agriculture : Planting", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mechanic : Fixing Motor", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Medic : Kneel", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi : Talk to customer", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi : Give bill", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Grocer : Give", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman : Serve Shot", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Journalist : Take Photos", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "All Jobs : Clipboard", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "All Jobs : Hammering", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Bum : Holding Sign", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Bum : Human Statue", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Fun',
|
||||
items = {
|
||||
{label = "Cheering", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Point", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Come here", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Bring it on", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Me", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "I knew it", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Exhausted", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "I'm the shit", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Calm down ", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "What did I do?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Fear", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Fight ?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "It's not possible !", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Embrace", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Finger of honor", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "You wanker", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Bullet in the head", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sports',
|
||||
items = {
|
||||
{label = "Flex muscles", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Lift weights", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Do push ups", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Do sit ups", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Do yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Divers',
|
||||
items = {
|
||||
{label = "Drink coffee", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Sit", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Lean against wall", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Sunbathe Back", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Sunbathe Front", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Clean", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "BBQ", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Search", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Take selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Listen to wall/door", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Walking Styles',
|
||||
items = {
|
||||
{label = "Normal M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normal F", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depressed male", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depressed female", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Business", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Determined", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Casual", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Ate too much", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Injured", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "In a hurry", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Hobo", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "sad", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muscle", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Shocked", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Being shady", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Buzzed", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Hurry", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Proud", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Short race", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Man eater", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Sassy", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogant", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'NSFW',
|
||||
items = {
|
||||
{label = "Man receiving in car", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Woman giving in car", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Man on bottom in car", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Woman on top in car", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Scratch nuts", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Hooker 1", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Hooker 2", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Hooker 3", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Strip Tease 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Strip Tease 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Stip Tease On Knees", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
164
resources/[esx_addons]/esx_animations/localization/fi_config.lua
Normal file
164
resources/[esx_addons]/esx_animations/localization/fi_config.lua
Normal file
@@ -0,0 +1,164 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Juhlalliset',
|
||||
items = {
|
||||
--{label = "Polta tupakkia", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Soita musiikkia", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "Tiskijukka", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Juo olutta", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Biletä", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Ilmakitara", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Humppaa ilmaa", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Polta pilveä", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Humala idle", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Oksenna ulos(auto,vänkäri)", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
{label = "Herää darrasta ja oksenna", type = "anim", data = {lib = "missfam5_blackout", anim = "vomit"}},
|
||||
{label = "Oksenna seisoalteen(nojaten)", type = "anim", data = {lib = "missheistpaletoscore1leadinout", anim = "trv_puking_leadout"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Tervehdykset',
|
||||
items = {
|
||||
{label = "Tervehdi", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Kättele", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Kättele 2", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Gangi tervehdys", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Käsi lipalle", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Työ',
|
||||
items = {
|
||||
{label = "Epäilty : mene polville", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Kalasta", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Poliisi : tutki rikospaikkaa", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Poliisi : puhu radioon", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Poliisi : ohjaa liikenettä", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Poliisi : kiikaroi", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Istuta", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mekaanikko : Korjaa moottoria", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Mekaanikko : Hitsaa", type = "scenario", data = {anim = "WORLD_HUMAN_WELDING"}},
|
||||
{label = "EMS : tutki", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi : Puhu asiakkalle", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi : Anna lasku", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Myyjä : Siirrä laatikoita", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Baarimikko : Kaada shotti", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Journalisti : Ota valokuvia", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Muut työt : Katsele muistiinpanoja", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Muut Työt : Vasaroi", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Pummi : Näytä kylttiä", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Pummi : Ole patsas", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Humoristiset',
|
||||
items = {
|
||||
{label = "Taputa", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Peukut", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Osota", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Tuu tänne", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Haasta riitaa", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "minä", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "varasta, ylähylly", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Hengästynyt", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Rauhoittele", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Pelästy", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Pelkää", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Valmistu tappelluun", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Voi rähmä!", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Suutele", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Keskisormet", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Runkkaa", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Ammu itseä päähän", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sporttiset',
|
||||
items = {
|
||||
{label = "Esittele lihaksia", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Nostele painoja", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Punnerra", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Tee vatsalihaksia", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Yoogaa", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Muut',
|
||||
items = {
|
||||
{label = "Juo kahvia", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Istua", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Nojaa taakse", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Ota aurinkoa selällään", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Ota aurinkoa mahallaan", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Pese", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Grillaa", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "T-pose", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Ota selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Kuuntele ovea", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Asenteet',
|
||||
items = {
|
||||
{label = "Normaali M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normaali N", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Masentunut M", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Masentunut N", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Varakas", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Rohkea", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Filthy Kasuaali", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Vitun Läski", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipsteri", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Loukkaantunut", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Kiireinen", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Pummi", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Surullinen", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Lihaksikas", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Järkyttynyt", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Kovis", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Väsynyt", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Kiirreellisempi", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Ylpeä", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Lyhyen kilpailun juoksija", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Miesten hurmaaja", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Nenäkäs", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Ylimielinen", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'Härski K-18',
|
||||
items = {
|
||||
{label = "Kuski (poskihoito)", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Vänkäri (poskihoito)", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Kuski (panee)", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Vänkäri (panee)", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Korjaa pallien sijaintia", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Strippari idle", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Strippari rööki", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Heruta tissejä", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Strippi tanssi 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Strippi tanssi 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Twerkkaa", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
}
|
||||
}
|
||||
166
resources/[esx_addons]/esx_animations/localization/it_config.lua
Normal file
166
resources/[esx_addons]/esx_animations/localization/it_config.lua
Normal file
@@ -0,0 +1,166 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Festivi',
|
||||
items = {
|
||||
{label = "Fumare", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Musicista", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "DJ", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Caffè", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Birra", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Mimare una chitarra", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Air Shagging", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Fumer un joint", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Ubriaco in piedi", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Vomito", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Saluti',
|
||||
items = {
|
||||
{label = "Ciao", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Saluta", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Stretta di mano", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Abbraccio", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Saluto militare", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Lavoro',
|
||||
items = {
|
||||
{label = "Sospetto: Resa", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Pesca", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Polizia: Investigare", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Polizia: Usare la radio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Polizia: Traffico", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Polizia: Binocolo", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Agricoltura: Piantare", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Meccanico: Riparazione del motore", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Medico: Ginocchio", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi: Parlare con il cliente", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi: Dare il conto", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Fruttivendolo: Dare", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barista: Servire un bicchierino", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Giornalista: Fare foto", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Tutti i lavori: Clipboard", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Tutti i lavori: Martellare", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Senza tetto: Tenere un cartello", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Senza tetto: Statua umana", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Divertenti',
|
||||
items = {
|
||||
{label = "Incrociare le dita", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Punto", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Vieni qui", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Dai, portalo", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Io", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Lo sapevo", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Esaurito", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Sono il massimo", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Palmata sulla faccia", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Calmati", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Cosa ho fatto?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Paura", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Combattimento?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Non è possibile!", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Abbraccio", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Dito dell'onore", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Stronzo", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Pallottola in testa", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sports',
|
||||
items = {
|
||||
{label = "Contrazione muscolare", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Sollevamento pesi", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Fare flessioni", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Fare addominali", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Fare yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Extra',
|
||||
items = {
|
||||
{label = "Bere caffè", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Sedersi", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Appoggiarsi al muro", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Prendere il sole di schiena", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Prendere il sole di fronte", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Pulire", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "BBQ", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Cercare", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Farsi un selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Ascoltare il muro/la porta", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Stili di camminata',
|
||||
items = {
|
||||
{label = "Normale M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normale F", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depresso maschio", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depressa femmina", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Affari", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Determinato", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Casual", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Hai mangiato troppo", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Infortunato", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Di corsa", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Barbone", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Triste", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muscoloso", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Scioccato", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Losco", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Ubriaco", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Di fretta", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Orgoglioso", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Corsa breve", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Divoratrice di uomini", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Sfacciata", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogante", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'Animazioni +18',
|
||||
items = {
|
||||
{label = "Uomo che riceve in macchina", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Donna che fa in macchina", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Uomo sotto in macchina", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Donna sopra in macchina", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Grattarsi gli attributi", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Prostituta 1", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Prostituta 2", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Prostituta 3", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Spogliarello 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Spogliarello 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Spogliarello in ginocchio", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
162
resources/[esx_addons]/esx_animations/localization/nl_config.lua
Normal file
162
resources/[esx_addons]/esx_animations/localization/nl_config.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Feestelijk',
|
||||
items = {
|
||||
{label = "Roken", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Muzikant", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "Dj", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Koffie", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Bier", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Lucht Gitaar", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Lucht Shagging", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Fumer un joint", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Dronken houding", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Overgevem", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Begroetingen',
|
||||
items = {
|
||||
{label = "Hallo", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Zwaai", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Schud hand", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Knuffel", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Saluteer", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Werkzaamheden',
|
||||
items = {
|
||||
{label = "Verdachte : Geef over", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Vissen", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Politie : Onderzoek", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Politie : Gebruik radio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Politie : Verkeer", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Politie : Verrekijker", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Boer : Planten", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Monteur : Repareer motor", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Arts : Kniel", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi : Praat met klant", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi : Geef factuur", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Cashier : Geef", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman : Geef een shot", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Journalist : Neem fotos", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Klembord", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Hamer", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Zwerver : Houd bord vast", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Zwerver : Menselijk beeld", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Humor',
|
||||
items = {
|
||||
{label = "Juichen", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Wijs", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Kom hier", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Kom maar op", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Ik", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Ik wist het", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Uitgeput", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Ik ben de shit", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Doe rustig", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Wat heb ik gedaan?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Bang", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Vechten?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Dat is onmogelijk!", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Omhels", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Middelvinger", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Jij rukker", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Doodsbedreiging", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sport',
|
||||
items = {
|
||||
{label = "Flex spieren", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Gewichten heffen", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Push ups", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Sit ups", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Diverse',
|
||||
items = {
|
||||
{label = "Drink koffie", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Zit", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Leun tegen muur", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Op je buik zonnen", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Op je rug zonnen", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Maak schoon", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Barbeque", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Zoek", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Neem selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Luister aan muur/deur", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Loop stijlen',
|
||||
items = {
|
||||
{label = "Normaal M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normaal V", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depressieve man", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depressieve vrouw", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Zakelijk", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Vastberaden", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Normaal", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Te veel gegeten", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Gewond", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "In een haast", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Zwerver", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Verdrietig", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Patser", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Geschokkeerd", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Verdacht", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Gespannen", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Haast", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Trots", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Korte race", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Mannen verslinder", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Onbeschaamd", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogant", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'NSFW',
|
||||
items = {
|
||||
{label = "Man krijgt in de auto", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Vrouw geeft in de auto", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Man onder op in de auto", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Vrouw boven op in de auto", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Krab balzak", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Prostituée 1", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Prostituée 2", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Prostituée 3", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Strip Tease 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Strip Tease 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Stip Tease op knieën", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
161
resources/[esx_addons]/esx_animations/localization/pl_config.lua
Normal file
161
resources/[esx_addons]/esx_animations/localization/pl_config.lua
Normal file
@@ -0,0 +1,161 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Imprezowe',
|
||||
items = {
|
||||
{label = "Graj na gitarze", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "Dj", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Picie piwa 'LEGALNIE'", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Picie piwa", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Udawanie gry na gitarze", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Dokowanie", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Fumer un jo int", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Pijany", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Wymiotowanie z auta", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Przywitania',
|
||||
items = {
|
||||
{label = "Witaj", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Cześć", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Podaj reke", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Gangsterskie", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Saluuut", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Prace',
|
||||
items = {
|
||||
{label = "Na kolana", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Łow ryby", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Policja: sprawdź dowody", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Policja: rozmowaij przez radio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Policja: kieruj ruchem", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Użyj lornetki", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Wykopki", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mechanik: sprawdź/napraw silnik", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Medyk: sprawdź stan", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi: rozmawiaj z klientem", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi : wystaw rachunek", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Załaduj towar", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman: polej kolejke", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Redaktor: rób zdjęcia", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Patrz w notatki", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Jebaj młotkiem", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Trzymaj kartke", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Pozuj", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Humor',
|
||||
items = {
|
||||
{label = "Klaskaj", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "OK", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Ty", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Zawolaj", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "O co cho??", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "A moi", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Mam to", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "BRAK!!!!!", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "BRAK!!!!!", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Spokojnie ", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Zdziwienie", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Poddaj się", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Przygotuj się do walki", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Nie m ch**a", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Przytul", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Zajeb fakera", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Marszcz freda", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Strzel sobie w głowe", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sport',
|
||||
items = {
|
||||
{label = "Napinaj miesnie", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Wyciskaj sztange", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Pompuj", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Rob Brzuszki", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Inne',
|
||||
items = {
|
||||
{label = "Pij kawe", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Usiadz na krzesle", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Przegladaj smartfon", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Polóż się na ziemi", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Polóż się na ziemi na brzuchu", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Umyj", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Smaż na grillu", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Pozuj: samolot", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Rób selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Otwieraj sejf", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Zachowania',
|
||||
items = {
|
||||
{label = "Pewniak M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Pewniak K", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Smutas M", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Smutas K", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Biznesman", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Odważny", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Luzak", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Gruby", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Poszkodowany", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "W pośpiechu", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Bezdomny", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Smutny", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Siłacz", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Zszokowany", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Podejrzany", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Nabuzowany", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "W pośpiechu 2", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Pieniądze", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Szybki", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Zjadacz", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Impertynencki", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arogancki", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'Wulgarne',
|
||||
items = {
|
||||
{label = "Głebokie gardlo", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Rób loda", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Zimny lokiec", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Siadaj na berło", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Drap sie po jajach", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Uwodź", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Dziwka pali szluga", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Machaj cyckami", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Strptiz", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Strptiz 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Taniec erotyczny", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
},
|
||||
}
|
||||
161
resources/[esx_addons]/esx_animations/localization/ru_config.lua
Normal file
161
resources/[esx_addons]/esx_animations/localization/ru_config.lua
Normal file
@@ -0,0 +1,161 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Действия',
|
||||
items = {
|
||||
{label = "Курнуть", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
--{label = "Jouer de la musique", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "Dj", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Пить", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Веселиться с пивасом", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Воздушная гитара", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Воздушный перепихон", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
{label = "Курить как профи", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Изоброжать пьянь", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
--{label = "Vomir en voiture", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Приветствия',
|
||||
items = {
|
||||
{label = "Салют", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Рукопожатие", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Крутое Рукопожатие", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Рука-обнимашка", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Отдать честь", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Работа',
|
||||
items = {
|
||||
{label = "На колени, руки за голову", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Рыбачить", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Police : Осматривать", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Police : Проверять рацию", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Police : Махать палкой", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Police : Глядеть вдаль биноклем", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Капать лопаткой", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Ремонтировать что-то", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Медик : Осморт лежачего", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
--{label = "Taxi : parler au client", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
--{label = "Taxi : donner la facture", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Достать, положитьб перед собой", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Бармен : Налить рюмку", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Фотографировать", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Работать с блокнотом", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Молотить", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Попрошайничать", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Изображать статую", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Эмоции',
|
||||
items = {
|
||||
{label = "Ура! Заебись", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Супер", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Показать пальцем", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Сюда иди", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Че нах ?", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "А я?", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
--{label = "Je le savais, putain", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
--{label = "Etre épuisé", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
--{label = "Je suis dans la merde", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Тихо - тихо", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Шо там ебать?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Страшно", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Разминаться", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Черт!", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Обьятия с поцелуем", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Два фака", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Мастурбация", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Застрелиться", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Спорт',
|
||||
items = {
|
||||
{label = "Выебываться мускулами", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Поднимать штангу", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Отжимание", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Пресс", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Йога", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Разное',
|
||||
items = {
|
||||
--{label = "Boire un café", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
--{label = "S'asseoir", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Курить у стенки", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Лежать", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Лежать на животе", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Протирать", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Жарить на грилле", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
--{label = "Position de Fouille", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Селфи", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Подслушивать", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Походка',
|
||||
items = {
|
||||
{label = "Normal M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normal F", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depressif", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depressif F", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Business", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Determine", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Casual", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Trop mange", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Blesse", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Intimide", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Hobo", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Malheureux", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muscle", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Choc", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Sombre", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Fatigue", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Pressee", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Fier", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Petite course", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Mangeuse d'homme", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Impertinent", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogante", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = '18+ БЛЯТЬ',
|
||||
items = {
|
||||
{label = "Тебе сосут (сидя) в машине", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Ты сосешь (сидя) в машине", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Тебе сосут в машине, оч приятно", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Трах в машине", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Зачесались яйца", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Аура шлюхи", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Поза шлюхи", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Титькотрясение", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Стрип 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Стрип 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Стрип 3", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
}
|
||||
}
|
||||
162
resources/[esx_addons]/esx_animations/localization/sl_config.lua
Normal file
162
resources/[esx_addons]/esx_animations/localization/sl_config.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Prazniki',
|
||||
items = {
|
||||
{label = "Kajenje", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Pleasni", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "DJ", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Kava", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Laško Pivo", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Zračna kitara", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Air Shagging", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Fumer un joint", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Pijan", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Bruhanje", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Pozdravi',
|
||||
items = {
|
||||
{label = "Zdravo", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Mahanje", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Rokovanje", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Objem", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Roka na Glavo", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Sluzba',
|
||||
items = {
|
||||
{label = "Osumljenec: Predajte se", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Ribolov", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Policija: Raziskati", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Policija : Uporabi radio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Policija : Promet", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Policija : Daljnogled", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Kmetijstvo : Saditev", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mehanik: Pritrdilni motor", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Zdravnik: Poklekni", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taksi : Pogovorite se s stranko", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taksi: Daj račun", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Trgovec: Daj", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman : Postrezite", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Novinar: Fotografiraj", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Vsa opravila: Odložišče", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Vsa opravila: zabijanje", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Bum : znak za držanje", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Bum : Človeški kip", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Zabava',
|
||||
items = {
|
||||
{label = "Navijanje", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Točka", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Pridi sem", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Pokaži, kaj znaš", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Jaz", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Vedel sem", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "izčrpan", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Jaz sem sranje", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "obrazna dlan", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Umiri se", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Kaj sem jaz naredil?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "strah", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Napadati", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "To ni Mogoče", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Objemi", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Častni prst", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Ti drek", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Metek v glavi", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sporti',
|
||||
items = {
|
||||
{label = "Upogibajte mišice", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Dvigovanje uteži", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Naredite sklece", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Naredite trebušnjake", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Delaj yogo", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Razno',
|
||||
items = {
|
||||
{label = "Popij Kavo", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Usedi", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Nasloni se na steno", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Sončenje nazaj", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Sončenje Naprej", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Pucanje", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "BBQ", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Iskanje", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Slika", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Poslušajte steno/vrata", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Stili hoje',
|
||||
items = {
|
||||
{label = "Normalno M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normalno F", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depresiven male", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depresivna female", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Biznis Man", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Odločen", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Ležerno", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Pojedel preveč", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Poškodovab", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "V naglici", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Potepuh", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Slabe Volje", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Mišice", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Šokiran", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Biti senčen", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Zabrenčalo", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "pohiti", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Ponosen", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Kratka dirka", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Ljudojedec", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Sassy", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Domišljav", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'NSFW',
|
||||
items = {
|
||||
{label = "Človek sprejema v avtu", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Ženska sprejema v avtu", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Človek na dnu v avtu", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Ženska na vrhu v avtu", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Praskanje orehov", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Hooker 1", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Hooker 2", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Hooker 3", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Ples Strip 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Ples Strip 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Ples Strip na kolenih", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
162
resources/[esx_addons]/esx_animations/localization/sr_config.lua
Normal file
162
resources/[esx_addons]/esx_animations/localization/sr_config.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Veselo',
|
||||
items = {
|
||||
{label = "Smoke", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Musician", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "Dj", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Coffee", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Beer", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Air Guitar", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Air Shagging", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Fumer un joint", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Drunk Standing", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Vomiting", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Pozdravi',
|
||||
items = {
|
||||
{label = "Hello", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Wave", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Handshake", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Hugging", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Salute", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Poslovi',
|
||||
items = {
|
||||
{label = "Suspect : Surrender", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "Fishing", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Police : Investigate", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Police : Use Radio", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Police : Traffic", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Police : Binoculars", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Agriculture : Planting", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mechanic : Fixing Motor", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Medic : Kneel", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi : Talk to customer", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi : Give bill", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Grocer : Give", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Barman : Serve Shot", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Journalist : Take Photos", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "All Jobs : Clipboard", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "All Jobs : Hammering", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Bum : Holding Sign", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Bum : Human Statue", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Zabava',
|
||||
items = {
|
||||
{label = "Cheering", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Super", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Point", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Come here", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Bring it on", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Me", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "I knew it", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Exhausted", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "I'm the shit", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Calm down ", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "What did I do?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Fear", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Fight ?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "It's not possible !", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Embrace", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Finger of honor", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "You wanker", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Bullet in the head", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sportovi',
|
||||
items = {
|
||||
{label = "Flex muscles", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Lift weights", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Do push ups", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Do sit ups", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Do yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Razno',
|
||||
items = {
|
||||
{label = "Drink coffee", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Sit", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Lean against wall", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Sunbathe Back", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Sunbathe Front", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Clean", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "BBQ", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Search", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Take selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Listen to wall/door", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Stilovi Hoda',
|
||||
items = {
|
||||
{label = "Normal M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Normal F", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Depressed male", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Depressed female", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Business", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Determined", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Casual", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Ate too much", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Injured", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "In a hurry", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Hobo", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "sad", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muscle", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Shocked", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Being shady", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Buzzed", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Hurry", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Proud", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Short race", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Man eater", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Sassy", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogant", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'NSFW',
|
||||
items = {
|
||||
{label = "Man receiving in car", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "Woman giving in car", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "Man on bottom in car", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "Woman on top in car", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "Scratch nuts", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "Hooker 1", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "Hooker 2", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "Hooker 3", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "Strip Tease 1", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "Strip Tease 2", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "Stip Tease On Knees", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
162
resources/[esx_addons]/esx_animations/localization/sv_config.lua
Normal file
162
resources/[esx_addons]/esx_animations/localization/sv_config.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
Config = {}
|
||||
|
||||
Config.Animations = {
|
||||
|
||||
{
|
||||
name = 'festives',
|
||||
label = 'Festliga',
|
||||
items = {
|
||||
{label = "Rök en cigarett", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING"}},
|
||||
{label = "Spela musik", type = "scenario", data = {anim = "WORLD_HUMAN_MUSICIAN"}},
|
||||
{label = "DJ", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@dj", anim = "dj"}},
|
||||
{label = "Drick en öl", type = "scenario", data = {anim = "WORLD_HUMAN_DRINKING"}},
|
||||
{label = "Party", type = "scenario", data = {anim = "WORLD_HUMAN_PARTYING"}},
|
||||
{label = "Luftgitarr", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@air_guitar", anim = "air_guitar"}},
|
||||
{label = "Dansa", type = "anim", data = {lib = "anim@mp_player_intcelebrationfemale@air_shagging", anim = "air_shagging"}},
|
||||
{label = "Rock'n'roll", type = "anim", data = {lib = "mp_player_int_upperrock", anim = "mp_player_int_rock"}},
|
||||
-- {label = "Mekka en joint", type = "scenario", data = {anim = "WORLD_HUMAN_SMOKING_POT"}},
|
||||
{label = "Fylld på platsen", type = "anim", data = {lib = "amb@world_human_bum_standing@drunk@idle_a", anim = "idle_a"}},
|
||||
{label = "Spy", type = "anim", data = {lib = "oddjobs@taxi@tie", anim = "vomit_outside"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'greetings',
|
||||
label = 'Hälsningar',
|
||||
items = {
|
||||
{label = "Hälsa", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_hello"}},
|
||||
{label = "Skaka hand", type = "anim", data = {lib = "mp_common", anim = "givetake1_a"}},
|
||||
{label = "Skaka hand 2", type = "anim", data = {lib = "mp_ped_interaction", anim = "handshake_guy_a"}},
|
||||
{label = "Gangsterhälsning", type = "anim", data = {lib = "mp_ped_interaction", anim = "hugs_guy_a"}},
|
||||
{label = "Militärhälsning", type = "anim", data = {lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'work',
|
||||
label = 'Jobb',
|
||||
items = {
|
||||
{label = "Misstänkt: gå till polisen", type = "anim", data = {lib = "random@arrests@busted", anim = "idle_c"}},
|
||||
{label = "FIskare", type = "scenario", data = {anim = "world_human_stand_fishing"}},
|
||||
{label = "Polis utreda", type = "anim", data = {lib = "amb@code_human_police_investigate@idle_b", anim = "idle_f"}},
|
||||
{label = "Polis: prata på radion", type = "anim", data = {lib = "random@arrests", anim = "generic_radio_chatter"}},
|
||||
{label = "Polis: trafik", type = "scenario", data = {anim = "WORLD_HUMAN_CAR_PARK_ATTENDANT"}},
|
||||
{label = "Polis: kikare", type = "scenario", data = {anim = "WORLD_HUMAN_BINOCULARS"}},
|
||||
{label = "Jordbruk: skörd", type = "scenario", data = {anim = "world_human_gardener_plant"}},
|
||||
{label = "Mekaniker: reparera motorn", type = "anim", data = {lib = "mini@repair", anim = "fixing_a_ped"}},
|
||||
{label = "Läkare: observera", type = "scenario", data = {anim = "CODE_HUMAN_MEDIC_KNEEL"}},
|
||||
{label = "Taxi: prata med kunden", type = "anim", data = {lib = "oddjobs@taxi@driver", anim = "leanover_idle"}},
|
||||
{label = "Taxi: ge räkning", type = "anim", data = {lib = "oddjobs@taxi@cyi", anim = "std_hand_off_ps_passenger"}},
|
||||
{label = "Livsmedel: ge handla", type = "anim", data = {lib = "mp_am_hold_up", anim = "purchase_beerbox_shopkeeper"}},
|
||||
{label = "Bartender: tjäna en shot", type = "anim", data = {lib = "mini@drinking", anim = "shots_barman_b"}},
|
||||
{label = "Reporter: Ta en bild", type = "scenario", data = {anim = "WORLD_HUMAN_PAPARAZZI"}},
|
||||
{label = "Ta noteringar", type = "scenario", data = {anim = "WORLD_HUMAN_CLIPBOARD"}},
|
||||
{label = "Använd hammare", type = "scenario", data = {anim = "WORLD_HUMAN_HAMMERING"}},
|
||||
{label = "Gör rundan", type = "scenario", data = {anim = "WORLD_HUMAN_BUM_FREEWAY"}},
|
||||
{label = "Statyn", type = "scenario", data = {anim = "WORLD_HUMAN_HUMAN_STATUE"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'humors',
|
||||
label = 'Humor',
|
||||
items = {
|
||||
{label = "Gratulera", type = "scenario", data = {anim = "WORLD_HUMAN_CHEERING"}},
|
||||
{label = "Stor", type = "anim", data = {lib = "mp_action", anim = "thanks_male_06"}},
|
||||
{label = "Peka", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_point"}},
|
||||
{label = "Kom hit", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_come_here_soft"}},
|
||||
{label = "Kom an", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_bring_it_on"}},
|
||||
{label = "Till mig", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_me"}},
|
||||
{label = "Jag visste det, skit", type = "anim", data = {lib = "anim@am_hold_up@male", anim = "shoplift_high"}},
|
||||
{label = "Utmattad", type = "scenario", data = {lib = "amb@world_human_jog_standing@male@idle_b", anim = "idle_d"}},
|
||||
{label = "Jag är i skiten", type = "scenario", data = {lib = "amb@world_human_bum_standing@depressed@idle_a", anim = "idle_a"}},
|
||||
{label = "Facepalm", type = "anim", data = {lib = "anim@mp_player_intcelebrationmale@face_palm", anim = "face_palm"}},
|
||||
{label = "Lugna ner ", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_easy_now"}},
|
||||
{label = "Vad gjorde jag?", type = "anim", data = {lib = "oddjobs@assassinate@multi@", anim = "react_big_variations_a"}},
|
||||
{label = "Att vara rädd", type = "anim", data = {lib = "amb@code_human_cower_stand@male@react_cowering", anim = "base_right"}},
|
||||
{label = "Slåss?", type = "anim", data = {lib = "anim@deathmatch_intros@unarmed", anim = "intro_male_unarmed_e"}},
|
||||
{label = "Det är inte möjligt!", type = "anim", data = {lib = "gestures@m@standing@casual", anim = "gesture_damn"}},
|
||||
{label = "Omfamna", type = "anim", data = {lib = "mp_ped_interaction", anim = "kisses_guy_a"}},
|
||||
{label = "Finger av ära", type = "anim", data = {lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter"}},
|
||||
{label = "Vinka", type = "anim", data = {lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01"}},
|
||||
{label = "Begå självmord", type = "anim", data = {lib = "mp_suicide", anim = "pistol"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'sports',
|
||||
label = 'Sporter',
|
||||
items = {
|
||||
{label = "Flexa muskler", type = "anim", data = {lib = "amb@world_human_muscle_flex@arms_at_side@base", anim = "base"}},
|
||||
{label = "Viktstång", type = "anim", data = {lib = "amb@world_human_muscle_free_weights@male@barbell@base", anim = "base"}},
|
||||
{label = "Armhävningar", type = "anim", data = {lib = "amb@world_human_push_ups@male@base", anim = "base"}},
|
||||
{label = "Gör situps", type = "anim", data = {lib = "amb@world_human_sit_ups@male@base", anim = "base"}},
|
||||
{label = "Yoga", type = "anim", data = {lib = "amb@world_human_yoga@male@base", anim = "base_a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'misc',
|
||||
label = 'Olika',
|
||||
items = {
|
||||
{label = "Drick en kaffe", type = "anim", data = {lib = "amb@world_human_aa_coffee@idle_a", anim = "idle_a"}},
|
||||
{label = "Sitta", type = "anim", data = {lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle"}},
|
||||
{label = "Luta dig", type = "scenario", data = {anim = "world_human_leaning"}},
|
||||
{label = "Ligg på ryggen", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE_BACK"}},
|
||||
{label = "Ligg på magen", type = "scenario", data = {anim = "WORLD_HUMAN_SUNBATHE"}},
|
||||
{label = "Rengör något", type = "scenario", data = {anim = "world_human_maid_clean"}},
|
||||
{label = "Förbered dig för att äta", type = "scenario", data = {anim = "PROP_HUMAN_BBQ"}},
|
||||
{label = "Sex Position", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female"}},
|
||||
{label = "Ta en selfie", type = "scenario", data = {anim = "world_human_tourist_mobile"}},
|
||||
{label = "Lyssna på en dörr", type = "anim", data = {lib = "mini@safe_cracking", anim = "idle_base"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'attitudem',
|
||||
label = 'Attituder',
|
||||
items = {
|
||||
{label = "Självsäker M", type = "attitude", data = {lib = "move_m@confident", anim = "move_m@confident"}},
|
||||
{label = "Självsäker K", type = "attitude", data = {lib = "move_f@heels@c", anim = "move_f@heels@c"}},
|
||||
{label = "Deprimerad M", type = "attitude", data = {lib = "move_m@depressed@a", anim = "move_m@depressed@a"}},
|
||||
{label = "Deprimerad K", type = "attitude", data = {lib = "move_f@depressed@a", anim = "move_f@depressed@a"}},
|
||||
{label = "Business", type = "attitude", data = {lib = "move_m@business@a", anim = "move_m@business@a"}},
|
||||
{label = "Modig", type = "attitude", data = {lib = "move_m@brave@a", anim = "move_m@brave@a"}},
|
||||
{label = "Nonchalant", type = "attitude", data = {lib = "move_m@casual@a", anim = "move_m@casual@a"}},
|
||||
{label = "Fet", type = "attitude", data = {lib = "move_m@fat@a", anim = "move_m@fat@a"}},
|
||||
{label = "Hipster", type = "attitude", data = {lib = "move_m@hipster@a", anim = "move_m@hipster@a"}},
|
||||
{label = "Skadad", type = "attitude", data = {lib = "move_m@injured", anim = "move_m@injured"}},
|
||||
{label = "Bråttom", type = "attitude", data = {lib = "move_m@hurry@a", anim = "move_m@hurry@a"}},
|
||||
{label = "Hemlös", type = "attitude", data = {lib = "move_m@hobo@a", anim = "move_m@hobo@a"}},
|
||||
{label = "Ledsen", type = "attitude", data = {lib = "move_m@sad@a", anim = "move_m@sad@a"}},
|
||||
{label = "Muskler", type = "attitude", data = {lib = "move_m@muscle@a", anim = "move_m@muscle@a"}},
|
||||
{label = "Chockad", type = "attitude", data = {lib = "move_m@shocked@a", anim = "move_m@shocked@a"}},
|
||||
{label = "Shadyped", type = "attitude", data = {lib = "move_m@shadyped@a", anim = "move_m@shadyped@a"}},
|
||||
{label = "Surrande", type = "attitude", data = {lib = "move_m@buzzed", anim = "move_m@buzzed"}},
|
||||
{label = "Pressad", type = "attitude", data = {lib = "move_m@hurry_butch@a", anim = "move_m@hurry_butch@a"}},
|
||||
{label = "Pengar", type = "attitude", data = {lib = "move_m@money", anim = "move_m@money"}},
|
||||
{label = "Snabb", type = "attitude", data = {lib = "move_m@quick", anim = "move_m@quick"}},
|
||||
{label = "Man ätare", type = "attitude", data = {lib = "move_f@maneater", anim = "move_f@maneater"}},
|
||||
{label = "Oförskämd", type = "attitude", data = {lib = "move_f@sassy", anim = "move_f@sassy"}},
|
||||
{label = "Arrogant", type = "attitude", data = {lib = "move_f@arrogant@a", anim = "move_f@arrogant@a"}},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name = 'porn',
|
||||
label = 'Sexställningar',
|
||||
items = {
|
||||
{label = "1", type = "anim", data = {lib = "oddjobs@towing", anim = "m_blow_job_loop"}},
|
||||
{label = "2", type = "anim", data = {lib = "oddjobs@towing", anim = "f_blow_job_loop"}},
|
||||
{label = "3", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_player"}},
|
||||
{label = "4", type = "anim", data = {lib = "mini@prostitutes@sexlow_veh", anim = "low_car_sex_loop_female"}},
|
||||
{label = "5", type = "anim", data = {lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch"}},
|
||||
{label = "6", type = "anim", data = {lib = "mini@strip_club@idles@stripper", anim = "stripper_idle_02"}},
|
||||
{label = "7", type = "scenario", data = {anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS"}},
|
||||
{label = "8", type = "anim", data = {lib = "mini@strip_club@backroom@", anim = "stripper_b_backroom_idle_b"}},
|
||||
{label = "9", type = "anim", data = {lib = "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", anim = "ld_girl_a_song_a_p1_f"}},
|
||||
{label = "10", type = "anim", data = {lib = "mini@strip_club@private_dance@part2", anim = "priv_dance_p2"}},
|
||||
{label = "11", type = "anim", data = {lib = "mini@strip_club@private_dance@part3", anim = "priv_dance_p3"}},
|
||||
}
|
||||
}
|
||||
}
|
||||
674
resources/[esx_addons]/esx_banking/LICENSE
Normal file
674
resources/[esx_addons]/esx_banking/LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, 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
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If 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 convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_banking
|
||||
Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_banking Copyright (C) 2015-2025 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
72
resources/[esx_addons]/esx_banking/README.md
Normal file
72
resources/[esx_addons]/esx_banking/README.md
Normal file
@@ -0,0 +1,72 @@
|
||||
<h1 align='center'>[ESX] Banking</a></h1><p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://esx-framework.org/'>Website</a> - <a href='https://docs.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
A beautiful and Easy-To-Use Banking & ATM system for ESX
|
||||
|
||||
|
||||
## BANK UI
|
||||

|
||||
## ATM UI
|
||||

|
||||

|
||||
|
||||
|
||||
## Special thanks: Gellipapa#9186,Rav3n95#2849,Csoki, csontvazharcos, Füsti, Pécé
|
||||
|
||||
## Download & Installation
|
||||
|
||||
- Download https://github.com/esx-framework/esx-legacy/tree/main/%5Besx_addons%5D/esx_banking
|
||||
- Put it in the `[esx-addons]` directory
|
||||
|
||||
## Installation
|
||||
- Add this to your `server.cfg`:
|
||||
|
||||
```
|
||||
ensure esx_banking
|
||||
```
|
||||
|
||||
# Database
|
||||
```
|
||||
Run the banking.sql into your database. Done.
|
||||
```
|
||||
|
||||
# If you want to create a bank log in another script, you can do it this way!
|
||||
# IMPORTANT this is only log, these method not handle full bank service
|
||||
# I recommend to use the money logic after.
|
||||
|
||||
|Param |Type |Explanation|
|
||||
|-----|--------|--------|
|
||||
|source|number | the source of the player (server side only) |
|
||||
|label |string |The label of the transaction |
|
||||
|logType |string | "WITHDRAW", "DEPOSIT", "TRANSFER_RECEIVE" the possible transactions|
|
||||
|amount |number |The amount of the transaction to be logged|
|
||||
|
||||
|
||||
```lua
|
||||
-- Client side
|
||||
-- The event is used client side
|
||||
|
||||
TriggerServerEvent("esx_banking:logTransaction",label,logType,amount)
|
||||
|
||||
-- For example:
|
||||
TriggerServerEvent("esx_banking:logTransaction","TAX", "DEPOSIT", 2000)
|
||||
|
||||
|
||||
-- Server side
|
||||
-- The export is used server side
|
||||
exports["esx_banking"]:logTransaction(source,label,logType,amount)
|
||||
|
||||
-- For example:
|
||||
exports["esx_banking"]:logTransaction(source,"CAR PURCHASE","WITHDRAW",200)
|
||||
```
|
||||
|
||||
# Legal
|
||||
### License
|
||||
esx_banking - banking script for ESX
|
||||
|
||||
Copyright (C) 2025 ESX-Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 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 General Public License For more details.
|
||||
|
||||
You should have received a copy Of the GNU General Public License along with this program. If Not, see http://www.gnu.org/licenses/.
|
||||
12
resources/[esx_addons]/esx_banking/banking.sql
Normal file
12
resources/[esx_addons]/esx_banking/banking.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
CREATE TABLE IF NOT EXISTS `banking` (
|
||||
`identifier` varchar(46) DEFAULT NULL,
|
||||
`type` varchar(50) DEFAULT NULL,
|
||||
`amount` int(64) DEFAULT NULL,
|
||||
`time` bigint(20) DEFAULT NULL,
|
||||
`ID` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`balance` int(11) DEFAULT 0,
|
||||
`label` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
ALTER TABLE `users` ADD COLUMN `pincode` INT NULL;
|
||||
261
resources/[esx_addons]/esx_banking/client/main.lua
Normal file
261
resources/[esx_addons]/esx_banking/client/main.lua
Normal file
@@ -0,0 +1,261 @@
|
||||
local BANK = {
|
||||
Data = {}
|
||||
}
|
||||
|
||||
local activeBlips, bankPoints, atmPoints, markerPoints = {}, {}, {}, {}
|
||||
local playerLoaded, uiActive, inMenu = false, false, false
|
||||
|
||||
--Functions
|
||||
-- General data collecting thread
|
||||
function BANK:Thread()
|
||||
self:CreateBlips()
|
||||
local data = self.Data
|
||||
data.ped = PlayerPedId()
|
||||
data.coord = GetEntityCoords(data.Ped)
|
||||
playerLoaded = true
|
||||
|
||||
CreateThread(function ()
|
||||
while playerLoaded do
|
||||
data.coord = GetEntityCoords(data.ped)
|
||||
data.ped = PlayerPedId()
|
||||
bankPoints, atmPoints, markerPoints = {}, {}, {}
|
||||
|
||||
if (IsPedOnFoot(data.ped) and not ESX.PlayerData.dead) and not inMenu then
|
||||
for i = 1, #Config.AtmModels do
|
||||
local atm = GetClosestObjectOfType(data.coord.x, data.coord.y, data.coord.z, 0.7, Config.AtmModels[i], false, false, false)
|
||||
if atm ~= 0 then
|
||||
atmPoints[#atmPoints+1] = GetEntityCoords(atm)
|
||||
end
|
||||
end
|
||||
|
||||
for i = 1, #Config.Banks do
|
||||
local bankDistance = #(data.coord - Config.Banks[i].Position.xyz)
|
||||
if bankDistance <= 0.7 then
|
||||
bankPoints[#bankPoints+1] = Config.Banks[i].Position.xyz
|
||||
end
|
||||
if Config.ShowMarker and bankDistance <= (Config.DrawMarker or 10) then
|
||||
markerPoints[#markerPoints+1] = Config.Banks[i].Position.xyz
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if next(bankPoints) and not uiActive then
|
||||
self:TextUi(true)
|
||||
end
|
||||
|
||||
if next(atmPoints) and not uiActive then
|
||||
self:TextUi(true, true)
|
||||
end
|
||||
|
||||
if not next(bankPoints) and not next(atmPoints) and uiActive then
|
||||
self:TextUi(false)
|
||||
end
|
||||
|
||||
Wait(1000)
|
||||
end
|
||||
end)
|
||||
|
||||
if not Config.ShowMarker then return end
|
||||
|
||||
CreateThread(function()
|
||||
local wait = 1000
|
||||
while playerLoaded do
|
||||
if next(markerPoints) then
|
||||
for i = 1, #markerPoints do
|
||||
DrawMarker(20, markerPoints[i].x, markerPoints[i].y, markerPoints[i].z, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.2, 0.2, 187, 255, 0, 255, false, true, 2, false, nil, nil, false)
|
||||
end
|
||||
wait = 0
|
||||
end
|
||||
Wait(wait)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- Handle text ui / Keypress
|
||||
function BANK:TextUi(state, atm)
|
||||
uiActive = state
|
||||
if not state then
|
||||
return ESX.HideUI()
|
||||
end
|
||||
ESX.TextUI(TranslateCap('press_e_banking'))
|
||||
CreateThread(function()
|
||||
while uiActive do
|
||||
if IsControlJustReleased(0, 38) then
|
||||
self:HandleUi(true, atm)
|
||||
self:TextUi(false)
|
||||
end
|
||||
Wait(0)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- Create Blips
|
||||
function BANK:CreateBlips()
|
||||
local tmpActiveBlips = {}
|
||||
for i = 1, #Config.Banks do
|
||||
if type(Config.Banks[i].Blip) == 'table' and Config.Banks[i].Blip.Enabled then
|
||||
local position = Config.Banks[i].Position
|
||||
local bInfo = Config.Banks[i].Blip
|
||||
local blip = AddBlipForCoord(position.x, position.y, position.z)
|
||||
SetBlipSprite(blip, bInfo.Sprite)
|
||||
SetBlipScale(blip, bInfo.Scale)
|
||||
SetBlipColour(blip, bInfo.Color)
|
||||
SetBlipAsShortRange(blip, true)
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentSubstringPlayerName(bInfo.Label)
|
||||
EndTextCommandSetBlipName(blip)
|
||||
tmpActiveBlips[#tmpActiveBlips + 1] = blip
|
||||
end
|
||||
end
|
||||
|
||||
activeBlips = tmpActiveBlips
|
||||
end
|
||||
|
||||
-- Remove blips
|
||||
function BANK:RemoveBlips()
|
||||
for i = 1, #activeBlips do
|
||||
if DoesBlipExist(activeBlips[i]) then
|
||||
RemoveBlip(activeBlips[i])
|
||||
end
|
||||
end
|
||||
activeBlips = {}
|
||||
end
|
||||
|
||||
-- Open / Close ui
|
||||
function BANK:HandleUi(state, atm)
|
||||
atm = atm or false
|
||||
SetNuiFocus(state, state)
|
||||
inMenu = state
|
||||
ClearPedTasks(PlayerPedId())
|
||||
if not state then
|
||||
SendNUIMessage({
|
||||
showMenu = false
|
||||
})
|
||||
return
|
||||
end
|
||||
ESX.TriggerServerCallback('esx_banking:getPlayerData', function(data)
|
||||
SendNUIMessage({
|
||||
showMenu = true,
|
||||
openATM = atm,
|
||||
datas = {
|
||||
your_money_panel = {
|
||||
accountsData = {{
|
||||
name = "cash",
|
||||
amount = data.money
|
||||
}, {
|
||||
name = "bank",
|
||||
amount = data.bankMoney
|
||||
}}
|
||||
},
|
||||
bankCardData = {
|
||||
bankName = TranslateCap('bank_name'),
|
||||
cardNumber = "2232 2222 2222 2222",
|
||||
createdDate = "08/08",
|
||||
name = data.playerName
|
||||
},
|
||||
transactionsData = data.transactionHistory
|
||||
}
|
||||
})
|
||||
end)
|
||||
end
|
||||
|
||||
function BANK:LoadNpc(index, netID)
|
||||
CreateThread(function()
|
||||
while not NetworkDoesEntityExistWithNetworkId(netID) do
|
||||
Wait(200)
|
||||
end
|
||||
local npc = NetworkGetEntityFromNetworkId(netID)
|
||||
TaskStartScenarioInPlace(npc, Config.Peds[index].Scenario, 0, true)
|
||||
SetEntityProofs(npc, true, true, true, true, true, true, true, true)
|
||||
SetBlockingOfNonTemporaryEvents(npc, true)
|
||||
FreezeEntityPosition(npc, true)
|
||||
SetPedCanRagdollFromPlayerImpact(npc, false)
|
||||
SetPedCanRagdoll(npc, false)
|
||||
SetEntityAsMissionEntity(npc, true, true)
|
||||
SetEntityDynamic(npc, false)
|
||||
end)
|
||||
end
|
||||
|
||||
-- Events
|
||||
RegisterNetEvent('esx_banking:closebanking', function()
|
||||
BANK:HandleUi(false)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_banking:pedHandler', function(netIdTable)
|
||||
for i = 1, #netIdTable do
|
||||
BANK:LoadNpc(i, netIdTable[i])
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_banking:updateMoneyInUI', function(doingType, bankMoney, money)
|
||||
SendNUIMessage({
|
||||
updateData = true,
|
||||
data = {
|
||||
type = doingType,
|
||||
bankMoney = bankMoney,
|
||||
money = money
|
||||
}
|
||||
})
|
||||
end)
|
||||
|
||||
-- Handlers
|
||||
-- Resource starting
|
||||
AddEventHandler('onResourceStart', function(resource)
|
||||
if resource ~= GetCurrentResourceName() then return end
|
||||
BANK:Thread()
|
||||
end)
|
||||
|
||||
-- Enable the script on player loaded
|
||||
RegisterNetEvent('esx:playerLoaded', function()
|
||||
BANK:Thread()
|
||||
end)
|
||||
|
||||
-- Disable the script on player logout
|
||||
RegisterNetEvent('esx:onPlayerLogout', function()
|
||||
playerLoaded = false
|
||||
end)
|
||||
|
||||
-- Resource stopping
|
||||
AddEventHandler('onResourceStop', function(resource)
|
||||
if resource ~= GetCurrentResourceName() then return end
|
||||
BANK:RemoveBlips()
|
||||
if uiActive then BANK:TextUi(false) end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:onPlayerDeath', function() BANK:TextUi(false) end)
|
||||
|
||||
-- Nui Callbacks
|
||||
RegisterNUICallback('close', function(data, cb)
|
||||
BANK:HandleUi(false)
|
||||
cb('ok')
|
||||
end)
|
||||
|
||||
RegisterNUICallback('clickButton', function(data, cb)
|
||||
if not data or not inMenu then
|
||||
return cb('ok')
|
||||
end
|
||||
|
||||
TriggerServerEvent("esx_banking:doingType", data)
|
||||
cb('ok')
|
||||
end)
|
||||
|
||||
RegisterNUICallback('checkPincode', function(data, cb)
|
||||
if not data or not inMenu then
|
||||
return cb('ok')
|
||||
end
|
||||
|
||||
ESX.TriggerServerCallback("esx_banking:checkPincode", function(pincode)
|
||||
if pincode then
|
||||
cb({
|
||||
success = true
|
||||
})
|
||||
ESX.ShowNotification(TranslateCap('pincode_found'), "success")
|
||||
|
||||
else
|
||||
cb({
|
||||
error = true
|
||||
})
|
||||
ESX.ShowNotification(TranslateCap('pincode_not_found'), "error")
|
||||
end
|
||||
end, data)
|
||||
end)
|
||||
132
resources/[esx_addons]/esx_banking/config.lua
Normal file
132
resources/[esx_addons]/esx_banking/config.lua
Normal file
@@ -0,0 +1,132 @@
|
||||
Config = {
|
||||
Debug = false,
|
||||
DrawMarker = 10,
|
||||
Locale = GetConvar('esx:locale', 'en'),
|
||||
EnablePeds = true,
|
||||
AtmModels = {`prop_fleeca_atm`, `prop_atm_01`, `prop_atm_02`, `prop_atm_03`},
|
||||
Banks = {
|
||||
{
|
||||
Position = vector4(149.91, -1040.74, 29.374, 160),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
Position = vector4(-1212.63, -330.78, 37.59, 210),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
Position = vector4(-2962.47, 482.93, 15.5, 270),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
Position = vector4(-113.01, 6470.24, 31.43, 315),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
Position = vector4(314.16, -279.09, 53.97, 160),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
Position = vector4(-350.99, -49.99, 48.84, 160),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
Position = vector4(1175.02, 2706.87, 37.89, 0),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
{
|
||||
Position = vector4(246.63, 223.62, 106.0, 160),
|
||||
Blip = {
|
||||
Enabled = true,
|
||||
Color = 69,
|
||||
Label = 'Bank',
|
||||
Sprite = 108,
|
||||
Scale = 0.7
|
||||
}
|
||||
},
|
||||
},
|
||||
Peds = {
|
||||
{
|
||||
Position = vector4(149.5513, -1042.1570, 29.3680, 341.6520),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
},
|
||||
{
|
||||
Position = vector4(-1211.8585, -331.9854, 37.7809, 28.5983),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
},
|
||||
{
|
||||
Position = vector4(-2961.0720, 483.1107, 15.6970, 88.1986),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
},
|
||||
{
|
||||
Position = vector4(-112.2223, 6471.1128, 31.6267, 132.7517),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
},
|
||||
{
|
||||
Position = vector4(313.8176, -280.5338, 54.1647, 339.1609),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
},
|
||||
{
|
||||
Position = vector4(-351.3247, -51.3466, 49.0365, 339.3305),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
},
|
||||
{
|
||||
Position = vector4(1174.9718, 2708.2034, 38.0879, 178.2974),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
},
|
||||
{
|
||||
Position = vector4(247.0348, 225.1851, 106.2875, 158.7528),
|
||||
Model = `U_M_M_BankMan`,
|
||||
Scenario = 'WORLD_HUMAN_CLIPBOARD'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user