Compare commits
97
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
291ac27e36 | ||
|
|
2765eef9b3 | ||
|
|
0599c60864 | ||
|
|
880479b435 | ||
|
|
1f3d7154aa | ||
|
|
d9fcb11930 | ||
|
|
af0efacfe9 | ||
|
|
bf9d435b03 | ||
|
|
c47b69ceca | ||
|
|
108bed7443 | ||
|
|
59c094fdae | ||
|
|
f28a358c5c | ||
|
|
7cc5485864 | ||
|
|
ef328ac90c | ||
|
|
891d4abf73 | ||
|
|
52cf323a20 | ||
|
|
87c4aa77a7 | ||
|
|
e8337514e7 | ||
|
|
c4664ae5fb | ||
|
|
68723ac088 | ||
|
|
9f4339a4ea | ||
|
|
3364968e85 | ||
|
|
689bc79868 | ||
|
|
2764466d4c | ||
|
|
e4c41458dc | ||
|
|
b5eb60834f | ||
|
|
804eba41c9 | ||
|
|
3c05cf79c3 | ||
|
|
9511a46dad | ||
|
|
25f9979731 | ||
|
|
a079efd5c8 | ||
|
|
ca50437751 | ||
|
|
51059f6aed | ||
|
|
683eaff7de | ||
|
|
37f86bf50d | ||
|
|
3574ecef5b | ||
|
|
daa1a4f8a3 | ||
|
|
314f7381d1 | ||
|
|
2fd900ec22 | ||
|
|
3c8b654b28 | ||
|
|
e3caf16b53 | ||
|
|
49f43b997b | ||
|
|
94c6458037 | ||
|
|
2dd8729dc9 | ||
|
|
a86a342f4d | ||
|
|
4fdef3cf30 | ||
|
|
1b29aaa3b0 | ||
|
|
9e84111da3 | ||
|
|
7422c9d57b | ||
|
|
8e2dc89398 | ||
|
|
d199e017c2 | ||
|
|
4cacab3c7c | ||
|
|
1e3264bb9a | ||
|
|
be0dd02166 | ||
|
|
a5246ad55b | ||
|
|
9520c88d58 | ||
|
|
aca346cc1c | ||
|
|
79569a18b6 | ||
|
|
b56e585691 | ||
|
|
3043ecd924 | ||
|
|
a07118d0cb | ||
|
|
bf1471e238 | ||
|
|
fc5b1f5164 | ||
|
|
26fd63d750 | ||
|
|
65597810c7 | ||
|
|
f9bc39fc1d | ||
|
|
cc33ecb7e2 | ||
|
|
9d04b359c1 | ||
|
|
0b943d8154 | ||
|
|
c37b777748 | ||
|
|
c349563ef3 | ||
|
|
5b6fef2d49 | ||
|
|
001378704c | ||
|
|
cf5cfba909 | ||
|
|
f1ed2c0860 | ||
|
|
e83cddd96f | ||
|
|
5c5f454207 | ||
|
|
cdd26ab465 | ||
|
|
c2fddd6144 | ||
|
|
6df0983273 | ||
|
|
b7353b4e97 | ||
|
|
c81d113494 | ||
|
|
07481651b8 | ||
|
|
e04d91e79e | ||
|
|
07c84ff640 | ||
|
|
8df50c0417 | ||
|
|
abb1bba3fe | ||
|
|
9d828a2b15 | ||
|
|
31ee7f88c0 | ||
|
|
5bc0e9f4e0 | ||
|
|
bcdf71b17a | ||
|
|
c6d8556c12 | ||
|
|
aa015ba757 | ||
|
|
52224ab097 | ||
|
|
b486a28a4a | ||
|
|
adcd5d7c2b | ||
|
|
bb4d05373e |
No files matched your search
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Lua.diagnostics.disable": [
|
||||
"missing-parameter",
|
||||
"param-type-mismatch"
|
||||
],
|
||||
"Lua.diagnostics.globals": [
|
||||
"lib",
|
||||
"progressbar",
|
||||
"loadParticle",
|
||||
"makeMenu",
|
||||
"minigame",
|
||||
"tele",
|
||||
"sorter",
|
||||
"MySQL",
|
||||
"trays",
|
||||
"heroinkit",
|
||||
"getPlayer",
|
||||
"dist",
|
||||
"sortTab",
|
||||
"getRep",
|
||||
"heroinCooldown",
|
||||
"checkLoc",
|
||||
"getRandW",
|
||||
"shroomsCooldown"
|
||||
]
|
||||
}
|
||||
@@ -1,674 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://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.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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 <https://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:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
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
|
||||
<https://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
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
local function spawn()
|
||||
local data = ps.callback('md-drugs:server:GetMerchant')
|
||||
local model = 's_m_m_trucker_01'
|
||||
ps.requestModel(model)
|
||||
local ped = CreatePed(4, model, data.loc.x, data.loc.y, data.loc.z, data.loc.w, false, true)
|
||||
Freeze(ped, true, data.loc.w)
|
||||
ps.entityTarget(ped, {
|
||||
{
|
||||
label = ps.lang('merchant.targetOpen'),
|
||||
action = function()
|
||||
local options = {}
|
||||
for k, v in pairs (data.items) do
|
||||
options[#options+1] = {
|
||||
title = ps.getLabel(k),
|
||||
description = '$'..v,
|
||||
icon = ps.getImage(k),
|
||||
action = function()
|
||||
TriggerServerEvent('md-drugs:server:purchaseGoods', k)
|
||||
end
|
||||
}
|
||||
end
|
||||
ps.menu('Travelling Merchant', 'Travelling Merchant', options)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
spawn()
|
||||
@@ -1,536 +0,0 @@
|
||||
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local started = nil
|
||||
function loadParticle(dict)
|
||||
if not HasNamedPtfxAssetLoaded(dict) then
|
||||
RequestNamedPtfxAsset(dict)
|
||||
end
|
||||
while not HasNamedPtfxAssetLoaded(dict) do
|
||||
Wait(0)
|
||||
end
|
||||
SetPtfxAssetNextCall(dict)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function MethCooking()
|
||||
local animDict, animName = "anim@amb@business@meth@meth_monitoring_cooking@cooking@", "chemical_pour_short_cooker"
|
||||
lib.requestAnimDict(animDict, 500)
|
||||
SetEntityCoords(PlayerPedId(), vector3(1005.773, -3200.402, -38.524))
|
||||
local targetPosition = GetEntityCoords(PlayerPedId())
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 800
|
||||
FreezeEntityPosition(PlayerPedId(), true)
|
||||
local scenePos, sceneRot = vector3(1010.656, -3198.445, -38.925), vector3(0.0, 0.0, 0.0)
|
||||
local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(PlayerPedId(), netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
local sacid = CreateObjectNoOffset(`bkr_prop_meth_sacid`, targetPosition, 1, 1, 0)
|
||||
NetworkAddEntityToSynchronisedScene(sacid, netScene, animDict, "chemical_pour_short_sacid", 4.0, -8.0, 1)
|
||||
local ammonia = CreateObjectNoOffset(`bkr_prop_meth_ammonia`, targetPosition, 1, 1, 0)
|
||||
NetworkAddEntityToSynchronisedScene(ammonia, netScene, animDict, "chemical_pour_short_ammonia", 4.0, -8.0, 1)
|
||||
NetworkStartSynchronisedScene(netScene)
|
||||
Wait(animDuration)
|
||||
NetworkStopSynchronisedScene(netScene)
|
||||
DeleteObject(sacid) DeleteObject(ammonia)
|
||||
FreezeEntityPosition(PlayerPedId(), false)
|
||||
lib.requestModel('hei_prop_heist_thermite', 2000)
|
||||
loadParticle('scr_ornate_heist')
|
||||
local thermite = CreateObject('hei_prop_heist_thermite', vector3(1005.76, -3201.3, -39.25), true, false, false)
|
||||
FreezeEntityPosition(thermite, true)
|
||||
SetEntityRotation(thermite, 190.0, 90.0, 140.0, 3, true )
|
||||
Wait(1000)
|
||||
local therm = StartParticleFxLoopedOnEntity('scr_heist_ornate_thermal_burn', thermite, 0.0, 1.4, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
|
||||
Wait(math.random(10000, 20000))
|
||||
StopParticleFxLooped(therm, true)
|
||||
end
|
||||
|
||||
|
||||
function SmashMeth()
|
||||
local ver = ""
|
||||
local animDict, animName = "anim@amb@business@meth@meth_smash_weight_check@", "break_weigh_"..ver.."char02"
|
||||
lib.requestAnimDict(animDict, 500)
|
||||
local ped = PlayerPedId()
|
||||
local targetPosition = vector3(1012.628, -3194.619, -39.589)
|
||||
SetEntityCoords(ped, targetPosition)
|
||||
Wait(1)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 800
|
||||
FreezeEntityPosition(ped, true)
|
||||
local scenePos, sceneRot = vector3(1008.734, -3196.646, -39.99), vector3(0.0, 0.0, 1.08)
|
||||
local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
local objects, sceneObjects = {}, {
|
||||
{ hash = `w_me_hammer`, animName = "break_weigh_" .. ver .. "hammer"},
|
||||
{ hash = `bkr_Prop_Meth_SmashedTray_01_frag_`, animName = "break_weigh_"..ver.."tray01"},
|
||||
{ hash = `bkr_Prop_Meth_Tray_02a`, animName = "break_weigh_"..ver.."tray01^1"},
|
||||
{ hash = `bkr_Prop_Meth_Tray_02a`, animName = "break_weigh_"..ver.."tray01^2"},
|
||||
{ hash = `bkr_Prop_Meth_SmashedTray_01_frag_`, animName = "break_weigh_"..ver.."tray01^3"},
|
||||
}
|
||||
for i=1, #sceneObjects, 1 do
|
||||
local obj = CreateObjectNoOffset(sceneObjects[i].hash, targetPosition, true, true, true)
|
||||
NetworkAddEntityToSynchronisedScene(obj, netScene, animDict, sceneObjects[i].animName, 4.0, -8.0, 1)
|
||||
objects[#objects+1] = obj
|
||||
end
|
||||
NetworkStartSynchronisedScene(netScene)
|
||||
Wait(animDuration)
|
||||
NetworkStopSynchronisedScene(netScene)
|
||||
for i=1, #objects, 1 do
|
||||
DeleteObject(objects[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
function BagMeth()
|
||||
local ver = ""
|
||||
local animDict, animName = "anim@amb@business@meth@meth_smash_weight_check@", "break_weigh_"..ver.."char01"
|
||||
lib.requestAnimDict(animDict, 500)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 1000
|
||||
local ped = PlayerPedId()
|
||||
local coords = GetEntityCoords(ped)
|
||||
local scenePos, sceneRot = vector3(1008.734, -3196.646, -39.99), vector3(0.0, 0.0, 1.08)
|
||||
local scenes = {
|
||||
{
|
||||
{ hash = `bkr_prop_meth_bigbag_04a`, animName = "break_weigh_"..ver.."box01"},
|
||||
{ hash = `bkr_prop_meth_bigbag_03a`, animName = "break_weigh_"..ver.."box01^1"},
|
||||
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01"}
|
||||
},
|
||||
{
|
||||
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^1"},
|
||||
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^2"},
|
||||
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^3"}
|
||||
},
|
||||
{
|
||||
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^4"},
|
||||
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^5"},
|
||||
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^6"}
|
||||
},
|
||||
{
|
||||
{ hash = `bkr_prop_meth_scoop_01a`, animName = "break_weigh_"..ver.."scoop"},
|
||||
{ hash = `bkr_prop_coke_scale_01`, animName = "break_weigh_"..ver.."scale"},
|
||||
{ hash = `bkr_prop_fakeid_penclipboard`, animName = "break_weigh_"..ver.."pen"}
|
||||
},
|
||||
{
|
||||
{ hash = `bkr_prop_fakeid_clipboard_01a`, animName = "break_weigh_"..ver.."clipboard"},
|
||||
{ hash = `bkr_Prop_Meth_Tray_02a`, animName = "break_weigh_"..ver.."tray01^5"}
|
||||
}
|
||||
}
|
||||
local scenesList, entitiesList = {}, {}
|
||||
for i=1, #scenes, 1 do
|
||||
local scene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, scene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
for j=1, #scenes[i], 1 do
|
||||
local s = scenes[i][j]
|
||||
RequestModel(s.hash)
|
||||
while not HasModelLoaded(s.hash) do
|
||||
Wait(0)
|
||||
end
|
||||
local obj = CreateObjectNoOffset(s.hash, coords, true, true, true)
|
||||
SetModelAsNoLongerNeeded(s.hash)
|
||||
entitiesList[#entitiesList+1] = obj
|
||||
NetworkAddEntityToSynchronisedScene(obj, scene, animDict, s.animName, 4.0, -8.0, 1)
|
||||
end
|
||||
scenesList[#scenesList+1] = scene
|
||||
end
|
||||
DisableCamCollisionForEntity(ped)
|
||||
FreezeEntityPosition(ped, true)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStartSynchronisedScene(scenesList[i])
|
||||
end
|
||||
|
||||
Wait(animDuration-11000)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStopSynchronisedScene(scenesList[i])
|
||||
end
|
||||
for i=1, #entitiesList, 1 do
|
||||
DeleteEntity(entitiesList[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
function Tray()
|
||||
local pos = GetEntityCoords(PlayerPedId(), true)
|
||||
RequestAnimDict('anim@heists@box_carry@')
|
||||
while (not HasAnimDictLoaded('anim@heists@box_carry@')) do
|
||||
Wait(7)
|
||||
end
|
||||
TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false, false)
|
||||
RequestModel("bkr_prop_meth_tray_02a")
|
||||
while not HasModelLoaded("bkr_prop_meth_tray_02a") do
|
||||
Wait(0)
|
||||
end
|
||||
local trays = CreateObject("bkr_prop_meth_tray_02a", pos.x, pos.y, pos.z, true, true, true)
|
||||
AttachEntityToEntity(trays, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 28422), 0.01,-0.2, -0.2, 20.0, 0.0, 0.0, true, true, false, true, 1, true)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function CutCoke()
|
||||
local animDict, animName = "anim@amb@business@coc@coc_unpack_cut_left@", "coke_cut_v5_coccutter"
|
||||
lib.requestAnimDict(animDict, 500)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 1000
|
||||
local ped = PlayerPedId()
|
||||
local coords = GetEntityCoords(ped)
|
||||
local scenePos, sceneRot = vector3(1090.37+.9, -3193.61-1.68, -39.60), vector3(0.0, 0.0, 0.00)
|
||||
local scenes = {
|
||||
{
|
||||
{ hash = `bkr_prop_coke_bakingsoda_o`, animName = "coke_cut_v5_bakingsoda"},
|
||||
{ hash = `prop_cs_credit_card`, animName = "coke_cut_v5_creditcard"},
|
||||
{ hash = `prop_cs_credit_card`, animName = "coke_cut_v5_creditcard^1"}
|
||||
},
|
||||
}
|
||||
local scenesList, entitiesList = {}, {}
|
||||
for i=1, #scenes, 1 do
|
||||
local scene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, scene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
for j=1, #scenes[i], 1 do
|
||||
local s = scenes[i][j]
|
||||
RequestModel(s.hash)
|
||||
while not HasModelLoaded(s.hash) do
|
||||
Wait(0)
|
||||
end
|
||||
local obj = CreateObjectNoOffset(s.hash, coords, true, true, true)
|
||||
SetModelAsNoLongerNeeded(s.hash)
|
||||
entitiesList[#entitiesList+1] = obj
|
||||
NetworkAddEntityToSynchronisedScene(obj, scene, animDict, s.animName, 4.0, -8.0, 1)
|
||||
end
|
||||
scenesList[#scenesList+1] = scene
|
||||
end
|
||||
DisableCamCollisionForEntity(ped)
|
||||
FreezeEntityPosition(ped, true)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStartSynchronisedScene(scenesList[i])
|
||||
end
|
||||
|
||||
Wait(animDuration-11000)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStopSynchronisedScene(scenesList[i])
|
||||
end
|
||||
for i=1, #entitiesList, 1 do
|
||||
DeleteEntity(entitiesList[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
BikerCocaine = exports['bob74_ipl']:GetBikerCocaineObject()
|
||||
BikerCocaine.Style.Set(BikerCocaine.Style.upgrade)
|
||||
BikerCocaine.Security.Set(BikerCocaine.Security.upgrade)
|
||||
BikerCocaine.Details.Enable({BikerCocaine.Details.cokeBasic1, BikerCocaine.Details.cokeBasic2, BikerCocaine.Details.cokeBasic3}, true)
|
||||
end)
|
||||
|
||||
function BagCoke()
|
||||
local ver = ""
|
||||
local animDict, animName = "anim@amb@business@meth@meth_smash_weight_check@", "break_weigh_"..ver.."char01"
|
||||
lib.requestAnimDict(animDict, 500)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 1000
|
||||
local ped = PlayerPedId()
|
||||
local coords = GetEntityCoords(ped)
|
||||
local scenePos, sceneRot = vector3(1090.62+4.3, -3196.2+3, -38.99-1), vector3(360.0, 360.0, 180.08)
|
||||
local scenes = {
|
||||
{
|
||||
{ hash = `bkr_prop_coke_cutblock_01`, animName = "break_weigh_"..ver.."box01"},
|
||||
{ hash = `bkr_prop_coke_fullmetalbowl_02`, animName = "break_weigh_"..ver.."box01^1"},
|
||||
{ hash = `bkr_prop_coke_cutblock_01`, animName = "break_weigh_"..ver.."methbag01"}
|
||||
},
|
||||
{
|
||||
{ hash = `xm3_prop_xm3_bag_coke_01a`, animName = "break_weigh_"..ver.."methbag01^1"},
|
||||
{ hash = `xm3_prop_xm3_bag_coke_01a`, animName = "break_weigh_"..ver.."methbag01^2"},
|
||||
{ hash = `xm3_prop_xm3_bag_coke_01a`, animName = "break_weigh_"..ver.."methbag01^3"}
|
||||
},
|
||||
{
|
||||
{ hash = `bkr_prop_coke_fullscoop_01a`, animName = "break_weigh_"..ver.."scoop"},
|
||||
{ hash = `bkr_prop_coke_scale_01`, animName = "break_weigh_"..ver.."scale"},
|
||||
{ hash = `bkr_prop_fakeid_penclipboard`, animName = "break_weigh_"..ver.."pen"}
|
||||
},
|
||||
{
|
||||
{ hash = `bkr_prop_fakeid_clipboard_01a`, animName = "break_weigh_"..ver.."clipboard"},
|
||||
|
||||
}
|
||||
}
|
||||
local scenesList, entitiesList = {}, {}
|
||||
for i=1, #scenes, 1 do
|
||||
local scene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, scene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
for j=1, #scenes[i], 1 do
|
||||
local s = scenes[i][j]
|
||||
RequestModel(s.hash)
|
||||
while not HasModelLoaded(s.hash) do
|
||||
Wait(0)
|
||||
end
|
||||
local obj = CreateObjectNoOffset(s.hash, coords, true, true, true)
|
||||
SetModelAsNoLongerNeeded(s.hash)
|
||||
entitiesList[#entitiesList+1] = obj
|
||||
NetworkAddEntityToSynchronisedScene(obj, scene, animDict, s.animName, 4.0, -8.0, 1)
|
||||
end
|
||||
scenesList[#scenesList+1] = scene
|
||||
end
|
||||
DisableCamCollisionForEntity(ped)
|
||||
FreezeEntityPosition(ped, true)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStartSynchronisedScene(scenesList[i])
|
||||
end
|
||||
|
||||
Wait(animDuration-11000)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStopSynchronisedScene(scenesList[i])
|
||||
end
|
||||
for i=1, #entitiesList, 1 do
|
||||
DeleteEntity(entitiesList[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
function EcstasyEffect()
|
||||
local startStamina = 50
|
||||
SetFlash(0, 0, 500, 20000, 500)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
startStamina = startStamina - 1
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
if math.random(1, 100) < 51 then
|
||||
SetFlash(0, 0, 500, 7000, 500)
|
||||
ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', 0.08)
|
||||
end
|
||||
end
|
||||
if IsPedRunning(PlayerPedId()) then
|
||||
SetPedToRagdoll(PlayerPedId(), math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
|
||||
startStamina = 0
|
||||
end
|
||||
|
||||
|
||||
function MethBagEffect()
|
||||
local startStamina = 30
|
||||
TrevorEffect()
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.49)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(5, 100) < 10 then
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(5, 100) < 51 then
|
||||
TrevorEffect()
|
||||
end
|
||||
end
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
end
|
||||
|
||||
function TrevorEffect()
|
||||
StartScreenEffect("DrugsTrevorClownsFightIn", 3.0, 0)
|
||||
Wait(3000)
|
||||
StartScreenEffect("DrugsTrevorClownsFight", 3.0, 0)
|
||||
Wait(3000)
|
||||
StartScreenEffect("DrugsTrevorClownsFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsTrevorClownsFight")
|
||||
StopScreenEffect("DrugsTrevorClownsFightIn")
|
||||
StopScreenEffect("DrugsTrevorClownsFightOut")
|
||||
end
|
||||
|
||||
|
||||
function CokeBaggyEffect()
|
||||
local startStamina = 20
|
||||
local ped = PlayerPedId()
|
||||
AlienEffect()
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.1)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(1, 100) < 20 then
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(1, 100) < 10 and IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
if math.random(1, 300) < 10 then
|
||||
AlienEffect()
|
||||
Wait(math.random(3000, 6000))
|
||||
end
|
||||
end
|
||||
if IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
end
|
||||
|
||||
function AlienEffect()
|
||||
StartScreenEffect("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsMichaelAliensFightIn")
|
||||
StopScreenEffect("DrugsMichaelAliensFight")
|
||||
StopScreenEffect("DrugsMichaelAliensFightOut")
|
||||
end
|
||||
|
||||
local hit = 0
|
||||
function SpawnCarPedChase()
|
||||
local stoploc = vector3(-1157.63, -3056.71, 13.94)
|
||||
local start = Config.StartLoc[math.random(1,#Config.StartLoc)]
|
||||
if started then
|
||||
Notify(Lang.lean.act,'error')
|
||||
else
|
||||
started = true
|
||||
lib.requestModel(`pounder`, Config.RequestModelTime)
|
||||
lib.requestModel("ig_priest", Config.RequestModelTime)
|
||||
lib.requestModel(`cargobob3`, Config.RequestModelTime)
|
||||
local leancar = CreateVehicle(`pounder`, start.x+3, start.y-2, start.z-1, 52.0, true, true)
|
||||
local driver = CreatePed(26, "ig_priest", start.x, start.y, start.z, 268.9422, true, false)
|
||||
local pilot2 = CreatePed(26, "ig_priest", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, true, false)
|
||||
FreezeEntityPosition(pilot2, true)
|
||||
SetEntityInvincible(pilot2, true)
|
||||
SetEntityAsMissionEntity(leancar)
|
||||
AddBlipForEntity(leancar)
|
||||
SetPedIntoVehicle(driver, leancar, -1)
|
||||
SetPedFleeAttributes(driver,false)
|
||||
TaskVehicleDriveToCoordLongrange(driver, leancar, stoploc.x, stoploc.y, stoploc.z-1, 50.0, 524288, 25.0)
|
||||
SetPedKeepTask(driver, true)
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(driver) - stoploc) < 20.0 or GetEntityHealth(driver) == 0
|
||||
RemoveBlip(leancar)
|
||||
if GetEntityHealth(driver) == 0 then
|
||||
AddSingleModel(leancar, { name = 'leancar', icon = 'fa-solid fa-car', label = 'Steal From Car',
|
||||
action = function()
|
||||
hit = hit + 1
|
||||
if not minigame() then return end
|
||||
TriggerServerEvent('md-drugs:server:givelean')
|
||||
started = nil
|
||||
if math.random(1,100) <= 30 or hit == 4 then
|
||||
hit = 0
|
||||
DeleteVehicle(leancar)
|
||||
DeleteEntity(driver)
|
||||
DeleteEntity(pilot2)
|
||||
end
|
||||
end}, nil)
|
||||
else
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(driver) - GetEntityCoords(pilot2)) < 25.0
|
||||
Wait( 3 * 1000)
|
||||
local heli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
|
||||
Wait(1000)
|
||||
if DoesEntityExist(heli) then
|
||||
SetEntityInvincible(pilot2, false)
|
||||
DeleteVehicle(leancar)
|
||||
DeleteEntity(driver)
|
||||
SetEntityAsMissionEntity(heli)
|
||||
SetPedIntoVehicle(pilot2, heli, -1)
|
||||
TaskHeliMission(pilot2, heli, 0, 0, -3362.05, 589.45, -13.04, 4, 150.0, 20.0, -1.0, 10, 10, 5.0, 0)
|
||||
else
|
||||
heli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SpawnMethCarPedChase()
|
||||
local ped = GetEntityCoords(PlayerPedId())
|
||||
local stoploc = vector3(-1157.63, -3056.71, 13.94)
|
||||
local start = Config.StartLoc[math.random(1,#Config.StartLoc)]
|
||||
local startedmeth = false
|
||||
|
||||
if startedmeth then
|
||||
Notify(Lang.meth.act,'error')
|
||||
else
|
||||
startedmeth = true
|
||||
lib.requestModel(`journey`, Config.RequestModelTime)
|
||||
lib.requestModel("a_m_m_hillbilly_02", Config.RequestModelTime)
|
||||
lib.requestModel(`cargobob3`, Config.RequestModelTime)
|
||||
local methcar = CreateVehicle(`journey`, start.x+3, start.y-2, start.z-1, 52.0, true, true)
|
||||
local methdriver = CreatePed(26, "a_m_m_hillbilly_02", start.x, start.y, start.z, 268.9422, true, false)
|
||||
local methpilot = CreatePed(26, "a_m_m_hillbilly_02", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, true, false)
|
||||
FreezeEntityPosition(methpilot, true)
|
||||
SetEntityInvincible(methpilot, true)
|
||||
SetEntityAsMissionEntity(methcar)
|
||||
AddBlipForEntity(methcar)
|
||||
SetPedIntoVehicle(methdriver, methcar, -1)
|
||||
SetPedFleeAttributes(methdriver,false)
|
||||
TaskVehicleDriveToCoordLongrange(methdriver, methcar, stoploc.x, stoploc.y, stoploc.z-1, 50.0, 524288, 25.0)
|
||||
SetPedKeepTask(methdriver, true)
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(methdriver) - stoploc) < 20.0 or GetEntityHealth(methdriver) == 0
|
||||
if GetEntityHealth(methdriver) == 0 then
|
||||
AddSingleModel(methcar,{
|
||||
name = 'methcar',
|
||||
icon = 'fa-solid fa-car',
|
||||
label = Lang.targets.meth.stealfromcar,
|
||||
action = function()
|
||||
if not minigame() then return end
|
||||
TriggerServerEvent('md-drugs:server:givemethingridients')
|
||||
startedmeth = nil
|
||||
if math.random(1,100) <= 30 then
|
||||
DeleteVehicle(methcar)
|
||||
DeleteEntity(methdriver)
|
||||
DeleteEntity(methpilot)
|
||||
end
|
||||
end,
|
||||
}, nil )
|
||||
else
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(methdriver) - GetEntityCoords(methpilot)) < 25.0
|
||||
Wait( 3 * 1000)
|
||||
local methheli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
|
||||
Wait(1000)
|
||||
if DoesEntityExist(methheli) then
|
||||
SetEntityInvincible(methpilot, false)
|
||||
CreatePickUpRopeForCargobob(methheli, 1)
|
||||
AttachVehicleToCargobob(methheli, methcar, GetEntityBoneIndexByName(methcar, 'bodyshell'), 0.0, 0.0, 0.0)
|
||||
DeleteEntity(methdriver)
|
||||
SetEntityAsMissionEntity(methheli)
|
||||
SetPedIntoVehicle(methpilot, methheli, -1)
|
||||
TaskHeliMission(methpilot, methheli, 0, 0, -3362.05, 589.45, -13.04, 4, 150.0, 20.0, -1.0, 10, 10, 5.0, 0)
|
||||
else
|
||||
methheli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SetUpPeds()
|
||||
AddRelationshipGroup('setups')
|
||||
local ped = GetEntityCoords(PlayerPedId())
|
||||
local peds = {
|
||||
{x = ped.x+3, y = ped.y-5, z = ped.z-1, },
|
||||
{x = ped.x+6, y = ped.y-10, z = ped.z-1,},
|
||||
{x = ped.x+-2,y = ped.y+5, z = ped.z-1,},
|
||||
{x = ped.x+8, y = ped.y-12, z = ped.z-1,},
|
||||
{x = ped.x+5, y = ped.y-2, z = ped.z-1, },
|
||||
{x = ped.x+2, y = ped.y-20, z = ped.z-1,},
|
||||
{x = ped.x+1, y = ped.y-10, z = ped.z-1,},
|
||||
}
|
||||
for i = 1, #peds do
|
||||
local k = peds[i]
|
||||
i = CreatePed(0, "g_m_y_famdnf_01", k.x, k.y, k.z, 90.0, true, true)
|
||||
SetPedRelationshipGroupHash(i, 'setups')
|
||||
GiveWeaponToPed(i, "weapon_pistol", 1, false, true)
|
||||
TaskCombatPed(i, PlayerPedId(), 0, 16)
|
||||
SetPedCombatAttributes(i, 46, true)
|
||||
end
|
||||
end
|
||||
|
||||
RegisterCommand('DrugRep', function()
|
||||
if not Config.TierSystem then return end
|
||||
local rep = lib.callback.await('md-drugs:server:GetRep', false)
|
||||
lib.registerContext({
|
||||
id = 'DrugRep',
|
||||
title = 'Drug Reputation',
|
||||
options = {
|
||||
{icon = "fa-solid fa-face-flushed", title = 'Cocaine: '..rep.coke},
|
||||
{icon = "fa-solid fa-syringe", title = 'Heroin: '..rep.heroin},
|
||||
{icon = "fa-solid fa-vial", title = 'LSD: '..rep.lsd},
|
||||
{icon = "fa-solid fa-plug", title = 'Dealer: '..rep.dealerrep},
|
||||
{icon = "fa-solid fa-money-bill", title = 'Corner Selling: ' .. rep.cornerselling.rep, description = 'Rank: ' .. rep.cornerselling.label }
|
||||
}
|
||||
})
|
||||
lib.showContext('DrugRep')
|
||||
end, false)
|
||||
+196
-75
@@ -1,90 +1,211 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local CocaPlant = {}
|
||||
|
||||
local cuttingcoke = nil
|
||||
local baggingcoke = nil
|
||||
local locations = ps.callback('md-drugs:server:GetCokeLocations')
|
||||
|
||||
local function pick(loc)
|
||||
if not progressbar(Lang.Coke.picking, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("coke:pickupCane", loc)
|
||||
return true
|
||||
local function CutCoke(coords, offset, rotation)
|
||||
local animDict, animName = "anim@amb@business@coc@coc_unpack_cut_left@", "coke_cut_v5_coccutter"
|
||||
ps.requestAnim(animDict, 500)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 1000
|
||||
local ped = PlayerPedId()
|
||||
local scenePos, sceneRot = vector3(coords.x + offset.x, coords.y + offset.y,coords.z + offset.z), rotation
|
||||
local scenes = {
|
||||
{
|
||||
{ hash = "bkr_prop_coke_bakingsoda_o", animName = "coke_cut_v5_bakingsoda"},
|
||||
{ hash = "prop_cs_credit_card", animName = "coke_cut_v5_creditcard"},
|
||||
{ hash = "prop_cs_credit_card", animName = "coke_cut_v5_creditcard^1"}
|
||||
},
|
||||
}
|
||||
local scenesList, entitiesList = {}, {}
|
||||
for i=1, #scenes, 1 do
|
||||
local scene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, scene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
for j=1, #scenes[i], 1 do
|
||||
local s = scenes[i][j]
|
||||
RequestModel(s.hash)
|
||||
while not HasModelLoaded(s.hash) do
|
||||
Wait(0)
|
||||
end
|
||||
local obj = CreateObjectNoOffset(s.hash, coords, true, true, true)
|
||||
SetModelAsNoLongerNeeded(s.hash)
|
||||
entitiesList[#entitiesList+1] = obj
|
||||
NetworkAddEntityToSynchronisedScene(obj, scene, animDict, s.animName, 4.0, -8.0, 1)
|
||||
end
|
||||
scenesList[#scenesList+1] = scene
|
||||
end
|
||||
DisableCamCollisionForEntity(ped)
|
||||
FreezeEntityPosition(ped, true)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStartSynchronisedScene(scenesList[i])
|
||||
end
|
||||
|
||||
Wait(animDuration-11000)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStopSynchronisedScene(scenesList[i])
|
||||
end
|
||||
for i=1, #entitiesList, 1 do
|
||||
DeleteEntity(entitiesList[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
RegisterNetEvent('coke:respawnCane', function(loc)
|
||||
local v = GlobalState.CocaPlant[loc]
|
||||
local hash = GetHashKey(v.model)
|
||||
if not CocaPlant[loc] then
|
||||
CocaPlant[loc] = CreateObject(hash, v.location, false, true, true)
|
||||
Freeze(CocaPlant[loc], true, v.heading)
|
||||
AddSingleModel(CocaPlant[loc], {icon = "fa-solid fa-seedling", label = Lang.targets.coke.pick, action = function() if not pick(loc) then return end end}, loc)
|
||||
local function BagCoke(coords, offset, rotation)
|
||||
local ver = ""
|
||||
local animDict, animName = "anim@amb@business@meth@meth_smash_weight_check@", "break_weigh_"..ver.."char01"
|
||||
ps.requestAnim(animDict, 500)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 1000
|
||||
local ped = PlayerPedId()
|
||||
local scenePos, sceneRot = vector3(coords.x + offset.x, coords.y + offset.y,coords.z + offset.z), rotation
|
||||
local scenes = {
|
||||
{
|
||||
{ hash = "bkr_prop_coke_cutblock_01", animName = "break_weigh_"..ver.."box01"},
|
||||
{ hash = "bkr_prop_coke_fullmetalbowl_02", animName = "break_weigh_"..ver.."box01^1"},
|
||||
{ hash = "bkr_prop_coke_cutblock_01", animName = "break_weigh_"..ver.."methbag01"}
|
||||
},
|
||||
{
|
||||
{ hash = "xm3_prop_xm3_bag_coke_01a", animName = "break_weigh_"..ver.."methbag01^1"},
|
||||
{ hash = "xm3_prop_xm3_bag_coke_01a", animName = "break_weigh_"..ver.."methbag01^2"},
|
||||
{ hash = "xm3_prop_xm3_bag_coke_01a", animName = "break_weigh_"..ver.."methbag01^3"}
|
||||
},
|
||||
{
|
||||
{ hash = "bkr_prop_coke_fullscoop_01a", animName = "break_weigh_"..ver.."scoop"},
|
||||
{ hash = "bkr_prop_coke_scale_01", animName = "break_weigh_"..ver.."scale"},
|
||||
{ hash = "bkr_prop_fakeid_penclipboard", animName = "break_weigh_"..ver.."pen"}
|
||||
},
|
||||
{
|
||||
{ hash = "bkr_prop_fakeid_clipboard_01a", animName = "break_weigh_"..ver.."clipboard"},
|
||||
}
|
||||
}
|
||||
local scenesList, entitiesList = {}, {}
|
||||
for i=1, #scenes, 1 do
|
||||
local scene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, scene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
for j=1, #scenes[i], 1 do
|
||||
local s = scenes[i][j]
|
||||
RequestModel(s.hash)
|
||||
while not HasModelLoaded(s.hash) do
|
||||
Wait(0)
|
||||
end
|
||||
local obj = CreateObjectNoOffset(s.hash, coords, true, true, true)
|
||||
SetModelAsNoLongerNeeded(s.hash)
|
||||
entitiesList[#entitiesList+1] = obj
|
||||
NetworkAddEntityToSynchronisedScene(obj, scene, animDict, s.animName, 4.0, -8.0, 1)
|
||||
end
|
||||
scenesList[#scenesList+1] = scene
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('coke:removeCane', function(loc)
|
||||
if DoesEntityExist(CocaPlant[loc]) then DeleteEntity(CocaPlant[loc]) end
|
||||
CocaPlant[loc] = nil
|
||||
end)
|
||||
|
||||
RegisterNetEvent("coke:init", function()
|
||||
for k, v in pairs (GlobalState.CocaPlant) do
|
||||
local hash = GetHashKey(v.model)
|
||||
LoadModel(hash)
|
||||
if not v.taken then
|
||||
CocaPlant[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z, false, true, true)
|
||||
Freeze(CocaPlant[k], true, v.heading)
|
||||
AddSingleModel(CocaPlant[k], {icon = "fa-solid fa-seedling", label = Lang.targets.coke.pick, action = function() if not pick(k) then return end end}, k)
|
||||
end
|
||||
DisableCamCollisionForEntity(ped)
|
||||
FreezeEntityPosition(ped, true)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStartSynchronisedScene(scenesList[i])
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStop', function(resourceName)
|
||||
if GetCurrentResourceName() == resourceName then
|
||||
SetModelAsNoLongerNeeded(GetHashKey('prop_plant_01a'))
|
||||
for k, v in pairs(CocaPlant) do
|
||||
if DoesEntityExist(v) then
|
||||
DeleteEntity(v) SetEntityAsNoLongerNeeded(v)
|
||||
Wait(animDuration-11000)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStopSynchronisedScene(scenesList[i])
|
||||
end
|
||||
for i=1, #entitiesList, 1 do
|
||||
DeleteEntity(entitiesList[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
for k, v in pairs (locations.MakePowder) do
|
||||
ps.boxTarget('cocaplant'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('coke.targetMakePow'),
|
||||
icon = 'fa-solid fa-seedling',
|
||||
action = function()
|
||||
if not ps.hasItem('coca_leaf') then
|
||||
ps.notify(ps.lang('Catches.itemMissings', ps.getLabel('coca_leaf')), 'error')
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('coke.makePow'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makepowder", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:makepowder", function(data)
|
||||
if not ItemCheck('coca_leaf') then return end
|
||||
if not progressbar(Lang.Coke.makepow, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makepowder", data.data)
|
||||
end)
|
||||
for k, v in pairs (locations.CuttingCoke) do
|
||||
ps.boxTarget('cutcoke'..k, v.loc, {length = 1.0, width = 1.0, height = 1.0, rotation = 180.0}, {
|
||||
{
|
||||
label = ps.lang('coke.targetCutCoke'),
|
||||
icon = 'fa-solid fa-mortar-pestle',
|
||||
action = function()
|
||||
if not ps.hasItem('bakingsoda') then
|
||||
ps.notify(ps.lang('Catches.itemMissings', ps.getLabel('bakingsoda')), 'error')
|
||||
return
|
||||
end
|
||||
CutCoke(v.loc, v.offset, v.rotation)
|
||||
TriggerServerEvent("md-drugs:server:cutcokeone", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
if cuttingcoke ~= nil or baggingcoke ~= nil then return false end
|
||||
return true
|
||||
end,
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:cutcokeone", function()
|
||||
if not ItemCheck('bakingsoda') then return end
|
||||
cuttingcoke = true
|
||||
if Config.FancyCokeAnims then
|
||||
CutCoke()
|
||||
else
|
||||
if not progressbar(Lang.Coke.cutting, 5000, 'uncuff') then cuttingcoke = nil return end
|
||||
end
|
||||
TriggerServerEvent("md-drugs:server:cutcokeone")
|
||||
cuttingcoke = nil
|
||||
end)
|
||||
for k, v in pairs (locations.BaggingCoke) do
|
||||
ps.boxTarget('bagcoke'..k, v.loc, {length = 1.0, width = 1.0, height = 1.0, rotation = 180.0}, {
|
||||
{
|
||||
label = ps.lang('coke.targetBagCoke'),
|
||||
icon = 'fa-solid fa-sack-xmark',
|
||||
action = function()
|
||||
if not ps.hasItem('empty_weed_bag') then
|
||||
ps.notify(ps.lang('Catches.itemMissings', ps.getLabel('empty_weed_bag')), 'error')
|
||||
return
|
||||
end
|
||||
BagCoke(v.loc, v.offset, v.rotation)
|
||||
TriggerServerEvent("md-drugs:server:bagcoke", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
if cuttingcoke ~= nil or baggingcoke ~= nil then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:bagcoke", function()
|
||||
if not ItemCheck('empty_weed_bag') then return end
|
||||
baggingcoke = true
|
||||
if Config.FancyCokeAnims then
|
||||
BagCoke()
|
||||
else
|
||||
if not progressbar(Lang.Coke.bagging, 5000, 'uncuff') then baggingcoke = nil return end
|
||||
end
|
||||
TriggerServerEvent("md-drugs:server:bagcoke")
|
||||
baggingcoke = nil
|
||||
end)
|
||||
for k, v in pairs (locations.cokeTele) do
|
||||
ps.boxTarget('coke_tele'..k, v.inside, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-door-open',
|
||||
label = ps.lang('coke.teleOut'),
|
||||
action = function()
|
||||
SetEntityCoords(PlayerPedId(), v.outside)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
ps.boxTarget('coke_teleout'..k, v.outside, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-door-closed',
|
||||
label = ps.lang('coke.teleIn'),
|
||||
action = function()
|
||||
SetEntityCoords(PlayerPedId(), v.inside)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
if Config.FancyCokeAnims == false then
|
||||
AddBoxZoneMulti('cuttcoke', Config.CuttingCoke, { type = "client", event = "md-drugs:client:cutcokeone", icon = "fa-solid fa-mortar-pestle", label = Lang.targets.coke.cut})
|
||||
AddBoxZoneMulti('baggcoke', Config.BaggingCoke, { type = "client", event = "md-drugs:client:bagcoke", icon = "fa-solid fa-sack-xmark", label = Lang.targets.coke.bag})
|
||||
else
|
||||
AddBoxZoneSingle('cutcoke', vector3(1093.17, -3195.74, -39.19),
|
||||
{ type = "client", event = "md-drugs:client:cutcokeone", icon = "fa-solid fa-mortar-pestle", label = Lang.targets.coke.cut, canInteract = function()if cuttingcoke == nil and baggingcoke == nil then return true end end })
|
||||
AddBoxZoneSingle('bagcokepowder', vector3(1090.29, -3195.66, -39.13),
|
||||
{ type = "client", event = "md-drugs:client:bagcoke", icon = "fa-solid fa-sack-xmark", label = Lang.targets.coke.bag, canInteract = function() if baggingcoke == nil and cuttingcoke == nil then return true end end })
|
||||
end
|
||||
BikerCocaine = exports['bob74_ipl']:GetBikerCocaineObject()
|
||||
BikerCocaine.Style.Set(BikerCocaine.Style.upgrade)
|
||||
BikerCocaine.Security.Set(BikerCocaine.Security.upgrade)
|
||||
BikerCocaine.Details.Enable({BikerCocaine.Details.cokeBasic1, BikerCocaine.Details.cokeBasic2, BikerCocaine.Details.cokeBasic3}, true)
|
||||
end)
|
||||
|
||||
+127
-27
@@ -1,14 +1,13 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
RegisterNetEvent('md-drugs:client:consumedrugs', function(time, effect, anim, progresstext, status, item)
|
||||
if not progressbar(progresstext .. GetLabel(item).. "!", time, anim ) then return end
|
||||
TriggerServerEvent('md-drugs:server:removeconsum', item)
|
||||
for k, v in pairs (status) do
|
||||
|
||||
ps.registerCallback('md-drugs:client:consumedrugs', function(time, effect, anim, progresstext, status, item)
|
||||
if not ps.progressbar(progresstext .. ps.getLabel(item).. "!", time, anim ) then return end
|
||||
for k, v in pairs (status) do
|
||||
if k == 'health' then
|
||||
local cur = GetEntityHealth(PlayerPedId())
|
||||
SetEntityHealth(PlayerPedId(), cur + v)
|
||||
elseif k == 'thirst' or k == 'stress' or k == 'hunger' then
|
||||
TriggerServerEvent('md-drugs:server:updatestatus', k, v)
|
||||
elseif k == 'thirst' or k == 'stress' or k == 'hunger' then
|
||||
TriggerServerEvent('md-drugs:server:updatestatus', k, v)
|
||||
elseif k == "armor" then
|
||||
TriggerServerEvent('hospital:server:SetArmor', v)
|
||||
TriggerServerEvent('consumables:server:useArmor')
|
||||
@@ -19,27 +18,128 @@ RegisterNetEvent('md-drugs:client:consumedrugs', function(time, effect, anim, pr
|
||||
TriggerEvent('md-drugs:client:recievebuff', k, v)
|
||||
end
|
||||
end
|
||||
TriggerEvent('evidence:client:SetStatus', 'widepupils', 200) if effect == "alien" then AlienEffect() elseif effect == "ecstacy" then EcstasyEffect() elseif effect == "meth" then MethBagEffect() elseif effect == "coke" then CokeBaggyEffect() elseif effect == "trevor" then TrevorEffect() else end if status == nil then return end
|
||||
TriggerEvent('evidence:client:SetStatus', 'widepupils', 200)
|
||||
TriggerEvent('md-drugs:client:applyFeeling', effect)
|
||||
return true
|
||||
end)
|
||||
|
||||
RegisterNetEvent('md-drugs:client:recievebuff', function(type, amount)
|
||||
if type == 'speed' then
|
||||
local count = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.49)
|
||||
repeat
|
||||
count = count + 1
|
||||
Wait(1000)
|
||||
until count == amount
|
||||
SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.00)
|
||||
end
|
||||
if type == 'strength' then
|
||||
local strength = 0
|
||||
SetCurrentPedWeapon(PlayerPedId(), 'weapon_unarmed', true)
|
||||
SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 50.0)
|
||||
repeat
|
||||
strength = strength + 1
|
||||
Wait(1000)
|
||||
until strength == amount
|
||||
SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 1.0)
|
||||
end
|
||||
if type == 'speed' then
|
||||
local count = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.49)
|
||||
repeat
|
||||
count = count + 1
|
||||
Wait(1000)
|
||||
until count == amount
|
||||
SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.00)
|
||||
end
|
||||
if type == 'strength' then
|
||||
local strength = 0
|
||||
SetCurrentPedWeapon(PlayerPedId(), 'weapon_unarmed', true)
|
||||
SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 50.0)
|
||||
repeat
|
||||
strength = strength + 1
|
||||
Wait(1000)
|
||||
until strength == amount
|
||||
SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 1.0)
|
||||
end
|
||||
end)
|
||||
|
||||
local function EcstasyEffect()
|
||||
local startStamina = 50
|
||||
SetFlash(0, 0, 500, 20000, 500)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
startStamina = startStamina - 1
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
if math.random(1, 100) < 51 then
|
||||
SetFlash(0, 0, 500, 7000, 500)
|
||||
ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', 0.08)
|
||||
end
|
||||
end
|
||||
if IsPedRunning(PlayerPedId()) then
|
||||
SetPedToRagdoll(PlayerPedId(), math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
startStamina = 0
|
||||
end
|
||||
|
||||
local function TrevorEffect()
|
||||
StartScreenEffect("DrugsTrevorClownsFightIn", 3.0, 0)
|
||||
Wait(3000)
|
||||
StartScreenEffect("DrugsTrevorClownsFight", 3.0, 0)
|
||||
Wait(3000)
|
||||
StartScreenEffect("DrugsTrevorClownsFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsTrevorClownsFight")
|
||||
StopScreenEffect("DrugsTrevorClownsFightIn")
|
||||
StopScreenEffect("DrugsTrevorClownsFightOut")
|
||||
end
|
||||
|
||||
local function MethBagEffect()
|
||||
local startStamina = 30
|
||||
TrevorEffect()
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.49)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(5, 100) < 10 then
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(5, 100) < 51 then
|
||||
TrevorEffect()
|
||||
end
|
||||
end
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
end
|
||||
|
||||
local function AlienEffect()
|
||||
StartScreenEffect("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsMichaelAliensFightIn")
|
||||
StopScreenEffect("DrugsMichaelAliensFight")
|
||||
StopScreenEffect("DrugsMichaelAliensFightOut")
|
||||
end
|
||||
|
||||
local function CokeBaggyEffect()
|
||||
local startStamina = 20
|
||||
local ped = PlayerPedId()
|
||||
AlienEffect()
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.1)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(1, 100) < 20 then
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(1, 100) < 10 and IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
if math.random(1, 300) < 10 then
|
||||
AlienEffect()
|
||||
Wait(math.random(3000, 6000))
|
||||
end
|
||||
end
|
||||
if IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
end
|
||||
|
||||
RegisterNetEvent('md-drugs:client:applyFeeling', function(effect)
|
||||
if effect == "alien" then
|
||||
AlienEffect()
|
||||
elseif effect == "ecstacy" then
|
||||
EcstasyEffect()
|
||||
elseif effect == "meth" then
|
||||
MethBagEffect()
|
||||
elseif effect == "coke" then
|
||||
CokeBaggyEffect()
|
||||
elseif effect == "trevor" then
|
||||
TrevorEffect()
|
||||
end
|
||||
end)
|
||||
+146
-65
@@ -1,92 +1,173 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local sell = false
|
||||
local sold = false
|
||||
local targbusy = false
|
||||
local inZone = false
|
||||
local buyers = {}
|
||||
|
||||
local function reset(targ)
|
||||
local function walkAway(targ)
|
||||
FreezeEntityPosition(targ, false)
|
||||
ClearPedTasks(targ)
|
||||
Wait(10000)
|
||||
DeletePed(targ)
|
||||
targbusy = false
|
||||
sold = true
|
||||
end
|
||||
|
||||
local function sellDrug(item, amount, price, targ)
|
||||
PoliceCall(20)
|
||||
targbusy = true
|
||||
if IsPedInAnyVehicle(PlayerPedId(), true) then
|
||||
Notify(Lang.Cornerselling.inveh, 'error')
|
||||
reset(targ)
|
||||
return end
|
||||
if not progressbar(string.format(Lang.Cornerselling.selling, GetLabel(item), price), 4000, 'uncuff') then return end
|
||||
if ps.vehicleData() then
|
||||
ps.notify(ps.lang('Cornerselling.inVeh'), 'error')
|
||||
walkAway(targ)
|
||||
return
|
||||
end
|
||||
|
||||
if not ps.progressbar(string.format(ps.lang('Cornerselling.selling', ps.getLabel(item), price)), 4000, 'uncuff') then walkAway(targ) return end
|
||||
buyers[targ] = 'sold'
|
||||
TriggerServerEvent('md-drugs:server:sellCornerDrugs', item, amount, price)
|
||||
reset(targ)
|
||||
walkAway(targ)
|
||||
end
|
||||
|
||||
local function deny(targ)
|
||||
PoliceCall(20)
|
||||
targbusy = true
|
||||
if not progressbar(Lang.Cornerselling.deny, 4000, 'argue5') then return end
|
||||
reset(targ)
|
||||
PoliceCall(20)
|
||||
buyers[targ] = 'sold'
|
||||
if not ps.progressbar(ps.lang('Cornerselling.deny'), 4000, 'argue5') then return end
|
||||
walkAway(targ)
|
||||
end
|
||||
|
||||
function Cornersell()
|
||||
local targ = lib.GetClosestPed(GetEntityCoords(PlayerPedId()), 8)
|
||||
if targ == nil then return end
|
||||
if IsPedInAnyVehicle(targ, false) or GetEntityHealth(targ) == 0 or not IsPedHuman(targ) then return end
|
||||
TaskGoToCoordAnyMeans(targ, GetEntityCoords(PlayerPedId()), 1.0, 0, 0, 0, 0)
|
||||
local function findPed()
|
||||
local targ = nil
|
||||
repeat
|
||||
Wait(100)
|
||||
targ = ps.getNearestPed(GetEntityCoords(PlayerPedId()), 8)
|
||||
|
||||
if IsPedInAnyVehicle(targ, false) or GetEntityHealth(targ) == 0 or not IsPedHuman(targ) then
|
||||
targ = nil
|
||||
end
|
||||
if buyers[targ] then
|
||||
targ = nil
|
||||
end
|
||||
if inZone then
|
||||
targ = nil
|
||||
end
|
||||
until targ ~= nil or sell == false
|
||||
if not sell then return end
|
||||
buyers[targ] = true
|
||||
|
||||
ps.drawText(ps.lang('Cornerselling.wait'))
|
||||
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(PlayerPedId()) - GetEntityCoords(targ)) < 2.0
|
||||
lib.requestAnimDict("rcmme_tracey1")
|
||||
TaskStartScenarioInPlace(targ, "WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT", 0, false) FreezeEntityPosition(targ, true)
|
||||
local item, amount, price = lib.callback.await('md-drugs:server:cornerselling:getAvailableDrugs', false)
|
||||
if item == 'nothing' then Notify(Lang.Cornerselling.nodrugs, 'error') sell = false FreezeEntityPosition(targ, false) ClearPedTasks(targ) return false end
|
||||
local options = {
|
||||
{ label = string.format(Lang.targets.CornerSell.sell, amount, GetLabel(item), price), icon ="fa-solid fa-money-bill",
|
||||
action = function() sellDrug(item, amount, price, targ) end,
|
||||
canInteract = function()
|
||||
if not targbusy then return true end end,
|
||||
},
|
||||
{ label = Lang.targets.CornerSell.deny, icon = "fa-solid fa-person-harassing",
|
||||
action = function() deny(targ) end,
|
||||
canInteract = function()
|
||||
if not targbusy then return true end end,
|
||||
},
|
||||
TaskGoToCoordAnyMeans(targ, GetEntityCoords(PlayerPedId()), 1.0, 0, 0, 0, 0)
|
||||
until #(GetEntityCoords(PlayerPedId()) - GetEntityCoords(targ)) < 2.0 or sell == false or inZone
|
||||
if not sell then return end
|
||||
TaskTurnPedToFaceEntity(targ, PlayerPedId(), -1)
|
||||
ps.hideText()
|
||||
CreateThread(function()
|
||||
Wait(45000)
|
||||
walkAway(targ)
|
||||
buyers[targ] = 'sold'
|
||||
end)
|
||||
return targ
|
||||
end
|
||||
|
||||
local function checkItems()
|
||||
local count = 0
|
||||
for k, v in pairs (GlobalState.DrugNames) do
|
||||
if ps.hasItem(v) then
|
||||
count = count + 1
|
||||
break
|
||||
end
|
||||
end
|
||||
if count == 0 then ps.notify(ps.lang('Cornerselling.nodrugs', 'error')) return false end
|
||||
return true
|
||||
end
|
||||
|
||||
local function Cornersell()
|
||||
if inZone then sell = false return end
|
||||
|
||||
if not sell then
|
||||
return
|
||||
end
|
||||
|
||||
local hasDrugs = checkItems()
|
||||
if not hasDrugs then
|
||||
sell = false
|
||||
return
|
||||
end
|
||||
|
||||
ps.drawText(ps.lang('Cornerselling.searching'))
|
||||
|
||||
local targ = findPed()
|
||||
local data = ps.callback('md-drugs:server:cornerselling:getAvailableDrugs', targ)
|
||||
if data == false then
|
||||
sell = false
|
||||
return
|
||||
end
|
||||
|
||||
if data == 'robbed' then
|
||||
TaskGoStraightToCoord(targ, -1858.232910, -1242.395630, 8.60510, 100.0, -1, 0.0, 0.0)
|
||||
SetPedMoveRateOverride(targ, 10.0)
|
||||
local got = false
|
||||
ps.entityTarget(targ, {
|
||||
{
|
||||
label = ps.lang('Cornerselling.targetTakeBack'),
|
||||
icon ="fa-solid fa-money-bill",
|
||||
action = function()
|
||||
got = true
|
||||
TriggerServerEvent('md-drugs:server:getBackRobbed')
|
||||
Cornersell()
|
||||
end,
|
||||
canInteract = function()
|
||||
if IsEntityDead(targ) and not got then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
}}, nil)
|
||||
else
|
||||
ps.requestAnim("rcmme_tracey1")
|
||||
TaskStartScenarioInPlace(targ, "WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT", 0, false)
|
||||
FreezeEntityPosition(targ, true)
|
||||
ps.entityTarget(targ, {
|
||||
{
|
||||
label = string.format(ps.lang('Cornerselling.targetSell'), data.amount, ps.getLabel(data.item), data.price),
|
||||
icon ="fa-solid fa-money-bill",
|
||||
action = function()
|
||||
sellDrug(data.item, data.amount, data.price, targ)
|
||||
Cornersell()
|
||||
end,
|
||||
canInteract = function()
|
||||
if buyers[targ] ~= 'sold' and sell then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
},
|
||||
{
|
||||
label = ps.lang('Cornerselling.targetDeny'),
|
||||
icon = "fa-solid fa-person-harassing",
|
||||
action = function()
|
||||
deny(targ)
|
||||
walkAway(targ)
|
||||
Cornersell()
|
||||
end,
|
||||
canInteract = function()
|
||||
if buyers[targ] == true and sell then
|
||||
return true
|
||||
end
|
||||
end
|
||||
}
|
||||
AddMultiModel(targ, options, nil)
|
||||
repeat
|
||||
Wait(1000)
|
||||
until sold
|
||||
if sold then sold = false return true end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
RegisterNetEvent('md-drugs:client:cornerselling', function()
|
||||
if not GetCops(QBConfig.MinimumDrugSalePolice) then return end
|
||||
if inZone then Notify(Lang.Cornerselling.no, 'error') return end
|
||||
local item, amount, price = lib.callback.await('md-drugs:server:cornerselling:getAvailableDrugs', false)
|
||||
if item ~= 'nothing' then
|
||||
if sell then
|
||||
Notify(Lang.Cornerselling.stop, 'error')
|
||||
sell = false
|
||||
else
|
||||
sell = true
|
||||
Notify(Lang.Cornerselling.start, 'success')
|
||||
repeat
|
||||
Wait(1000)
|
||||
if not Cornersell() then end
|
||||
until not sell
|
||||
end
|
||||
if sell then
|
||||
sell = false
|
||||
ps.hideText()
|
||||
ps.notify(ps.lang('Cornerselling.stopped'), 'error')
|
||||
else
|
||||
Notify(Lang.Cornerselling.nodrugs, 'error')
|
||||
sell = true
|
||||
ps.notify(ps.lang('Cornerselling.start'), 'success')
|
||||
Cornersell()
|
||||
end
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
for k, v in pairs (QBConfig.NoSellZones) do
|
||||
local box = lib.zones.box({ coords = v.loc, size = vec3(v.width, v.length, v.height), rotation = 180.0, debug = true,
|
||||
onEnter = function() inZone = true end, onExit = function() inZone = false end})
|
||||
end
|
||||
for k, v in pairs (QBConfig.NoSellZones) do
|
||||
local box = ps.zones.box({ coords = v.loc, size = vec3(v.width, v.length, v.height), rotation = 180.0, debug = false,
|
||||
onEnter = function() inZone = true end, onExit = function() inZone = false end})
|
||||
end
|
||||
end)
|
||||
+45
-16
@@ -1,18 +1,47 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local locations = ps.callback('md-drugs:server:GetCrackLocations')
|
||||
|
||||
for k, v in pairs (locations.makecrack) do
|
||||
ps.boxTarget('makeCrack'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('crack.targetMake'),
|
||||
icon = 'fa-solid fa-temperature-high',
|
||||
action = function()
|
||||
if not ps.hasItem('bakingsoda') then
|
||||
ps.notify(ps.lang('Catches.itemMissings', ps.getLabel('bakingsoda')), 'error')
|
||||
return
|
||||
end
|
||||
if not minigame() then
|
||||
TriggerServerEvent("md-drugs:server:failcrackone", k)
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('crack.cook'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:makecrackone', k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:makecrackone", function(data)
|
||||
if not ItemCheck('bakingsoda') then return end
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:failcrackone", data.data) return end
|
||||
if not progressbar(Lang.Crack.cookcrack, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makecrackone", data.data)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:bagcrack", function(data)
|
||||
if not ItemCheck('empty_weed_bag') then return end
|
||||
if not progressbar(Lang.Crack.bagcrack, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:bagcrack", data.data)
|
||||
end)
|
||||
|
||||
for k, v in pairs (locations.bagcrack) do
|
||||
ps.boxTarget('bagCrack'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('crack.targetBag'),
|
||||
icon = 'fa-solid fa-weight-scale',
|
||||
action = function()
|
||||
if not ps.hasItem('empty_weed_bag') then
|
||||
ps.notify(ps.lang('Catches.itemMissings', ps.getLabel('empty_weed_bag')), 'error')
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('crack.bag'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:bagcrack", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
+49
-31
@@ -1,51 +1,69 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local isActive = false
|
||||
local dealer = {}
|
||||
|
||||
RegisterNetEvent('md-drugs:client:opendealermenu', function()
|
||||
local rep = GetRep()
|
||||
makeMenu('dealermenu', rep)
|
||||
lib.showContext('dealermenu')
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
local dealer = {}
|
||||
local getDealers = lib.callback.await('md-drugs:server:getDealers', false)
|
||||
for k,v in pairs(getDealers) do
|
||||
local function SpawnDealer()
|
||||
local getDealers = ps.callback('md-drugs:server:getDealers')
|
||||
for k,v in pairs(getDealers) do
|
||||
local Ped = "g_m_y_famdnf_01"
|
||||
lib.requestModel(Ped, Config.RequestModelTime)
|
||||
ps.requestModel(Ped, 30000)
|
||||
local loc = json.decode(v.coords)
|
||||
dealer[k] = CreatePed(0, Ped,loc.x,loc.y, loc.z-1, loc.h, false, false)
|
||||
Freeze(dealer[k], true, loc.h)
|
||||
local options = {
|
||||
{ icon = 'fas fa-user-secret', label = string.format(Lang.targets.Delivery.Deliver, v.name),
|
||||
ps.entityTarget(dealer[k], {
|
||||
{
|
||||
icon = 'fas fa-user-secret',
|
||||
label = ps.lang('Deliveries.targetGetDel'),
|
||||
action = function()
|
||||
local bool, item, amount, coords = lib.callback.await('md-drugs:server:GetDeliveryItem', false, k)
|
||||
if bool then
|
||||
Email(Lang.Delivery.emailn, Lang.Delivery.emailsub, string.format(Lang.Delivery.emailcon, amount, GetLabel(item)))
|
||||
TriggerEvent('md-drugs:client:setLocation', {bool = bool, item = item, amount = amount, coords = coords})
|
||||
end
|
||||
end,
|
||||
local bool, item, amount, coords = ps.callback('md-drugs:server:GetDeliveryItem', false, k)
|
||||
if bool then
|
||||
TriggerEvent('md-drugs:client:setLocation', {bool = bool, item = item, amount = amount, coords = coords})
|
||||
end
|
||||
end,
|
||||
},
|
||||
{ icon = "fa-solid fa-store", label = string.format(Lang.targets.Delivery.open, v.name),
|
||||
action = function() TriggerEvent('md-drugs:client:opendealermenu') end,
|
||||
{
|
||||
icon = "fa-solid fa-store",
|
||||
label = ps.lang('Deliveries.targetOpenShop'),
|
||||
action = function()
|
||||
local rep = GetRep()
|
||||
local items = ps.callback('md-drugs:server:dealerList')
|
||||
local options = {}
|
||||
for m, d in pairs (items) do
|
||||
if rep.dealerrep >= d.minrep then
|
||||
options[#options+1] = {
|
||||
title = ps.getLabel(d.name),
|
||||
description = '$' .. d.price,
|
||||
icon = ps.getImage(d.name),
|
||||
action = function()
|
||||
TriggerServerEvent('md-drugs:server:buyItemDealer', m)
|
||||
end,
|
||||
}
|
||||
end
|
||||
end
|
||||
ps.menu(ps.lang('Deliveries.shopHeader'), ps.lang('Deliveries.shopHeader'), options)
|
||||
end,
|
||||
}
|
||||
}
|
||||
AddMultiModel(dealer[k], options)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
RegisterNetEvent('md-drugs:client:RefreshDealers', function()
|
||||
SpawnDealer()
|
||||
end)
|
||||
|
||||
SpawnDealer()
|
||||
|
||||
RegisterNetEvent('md-drugs:client:setLocation', function(data)
|
||||
local coord = json.decode(data.coords)
|
||||
SetNewWaypoint(coord.x, coord.y)
|
||||
if isActive then return end
|
||||
isActive = true
|
||||
local Buyer = CreatePed(0, "g_m_y_famdnf_01",coord.x, coord.y, coord.z-1, 180.0, false, false)
|
||||
Freeze(Buyer, true, 180)
|
||||
AddSingleModel(Buyer, {
|
||||
local Buyer = CreatePed(0, "g_m_y_famdnf_01",coord.x, coord.y, coord.z-1, coord.w, false, false)
|
||||
Freeze(Buyer, true, coord.w)
|
||||
ps.entityTarget(Buyer, {
|
||||
icon = 'fas fa-user-secret',
|
||||
label = Lang.targets.Delivery.hand,
|
||||
label = ps.lang('Deliveries.targetHandOff'),
|
||||
action = function()
|
||||
if not progressbar(Lang.Delivery.pack, 4000, 'uncuff') then return end
|
||||
if not progressbar(ps.lang('Deliveries.delivering'), 4000, 'uncuff') then return end
|
||||
isActive = false
|
||||
DeletePed(Buyer)
|
||||
TriggerServerEvent('md-drugs:server:giveDeliveryItems', data.item, data.amount)
|
||||
@@ -56,4 +74,4 @@ RegisterNetEvent('md-drugs:client:setLocation', function(data)
|
||||
end
|
||||
end
|
||||
}, nil)
|
||||
end)
|
||||
end)
|
||||
+55
-386
@@ -1,108 +1,25 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
local progressbartype = Config.progressbartype
|
||||
local minigametype = Config.minigametype
|
||||
local notifytype = Config.Notify
|
||||
local dispatch = Config.Dispatch
|
||||
|
||||
function progressbar(text, time, anim)
|
||||
TriggerEvent('animations:client:EmoteCommandStart', {anim})
|
||||
if progressbartype == 'oxbar' then
|
||||
if lib.progressBar({ duration = time, label = text, useWhileDead = false, canCancel = true, disable = { car = true, move = true},}) then
|
||||
if GetResourceState('scully_emotemenu') == 'started' then
|
||||
exports.scully_emotemenu:cancelEmote()
|
||||
else
|
||||
TriggerEvent('animations:client:EmoteCommandStart', {"c"})
|
||||
end
|
||||
return true
|
||||
end
|
||||
elseif progressbartype == 'oxcir' then
|
||||
if lib.progressCircle({ duration = time, label = text, useWhileDead = false, canCancel = true, position = 'bottom', disable = { car = true,move = true},}) then
|
||||
if GetResourceState('scully_emotemenu') == 'started' then
|
||||
exports.scully_emotemenu:cancelEmote()
|
||||
else
|
||||
TriggerEvent('animations:client:EmoteCommandStart', {"c"})
|
||||
end
|
||||
return true
|
||||
end
|
||||
elseif progressbartype == 'qb' then
|
||||
local test = false
|
||||
local cancelled = false
|
||||
QBCore.Functions.Progressbar("drink_something", text, time, false, true, { disableMovement = true, disableCarMovement = true, disableMouse = false, disableCombat = true, disableInventory = true,
|
||||
}, {}, {}, {}, function()-- Done
|
||||
test = true
|
||||
if GetResourceState('scully_emotemenu') == 'started' then
|
||||
exports.scully_emotemenu:cancelEmote()
|
||||
else
|
||||
TriggerEvent('animations:client:EmoteCommandStart', {"c"})
|
||||
end
|
||||
end, function()
|
||||
cancelled = true
|
||||
if GetResourceState('scully_emotemenu') == 'started' then
|
||||
exports.scully_emotemenu:cancelEmote()
|
||||
else
|
||||
TriggerEvent('animations:client:EmoteCommandStart', {"c"})
|
||||
end
|
||||
end)
|
||||
repeat
|
||||
Wait(100)
|
||||
until cancelled or test
|
||||
if test then return true end
|
||||
else
|
||||
print"^1 SCRIPT ERROR: Md-DRUGS set your progressbar with one of the options!"
|
||||
end
|
||||
end
|
||||
|
||||
function loadParticle(dict)
|
||||
if not HasNamedPtfxAssetLoaded(dict) then
|
||||
RequestNamedPtfxAsset(dict)
|
||||
end
|
||||
while not HasNamedPtfxAssetLoaded(dict) do
|
||||
Wait(0)
|
||||
end
|
||||
SetPtfxAssetNextCall(dict)
|
||||
end
|
||||
|
||||
function LoadModel(hash)
|
||||
RequestModel(hash)
|
||||
while not HasModelLoaded(hash) do
|
||||
Wait(0)
|
||||
end
|
||||
end
|
||||
|
||||
function minigame()
|
||||
local time = 0
|
||||
local game = Config.Minigames
|
||||
if minigametype == 'ps_circle' then
|
||||
local check
|
||||
exports['ps-ui']:Circle(function(success)
|
||||
check = success
|
||||
end, game['ps_circle'].amount, game['ps_circle'].speed)
|
||||
local check = exports['ps-ui']:Circle(false, game['ps_circle'].amount, game['ps_circle'].speed)
|
||||
return check
|
||||
elseif minigametype == 'ps_maze' then
|
||||
local check
|
||||
exports['ps-ui']:Maze(function(success)
|
||||
check = success
|
||||
end, game['ps_maze'].timelimit)
|
||||
local check = exports['ps-ui']:Maze(false, game['ps_maze'].timelimit)
|
||||
return check
|
||||
elseif minigametype == 'ps_scrambler' then
|
||||
local check
|
||||
exports['ps-ui']:Scrambler(function(success)
|
||||
check = success
|
||||
end, game['ps_scrambler'].type, game['ps_scrambler'].time, game['ps_scrambler'].mirrored)
|
||||
local check = exports['ps-ui']:Scrambler(false, game['ps_scrambler'].type, game['ps_scrambler'].time, game['ps_scrambler'].mirrored)
|
||||
return check
|
||||
elseif minigametype == 'ps_var' then
|
||||
local check
|
||||
exports['ps-ui']:VarHack(function(success)
|
||||
check = success
|
||||
end, game['ps_var'].numBlocks, game['ps_var'].time)
|
||||
local check = exports['ps-ui']:VarHack(false, game['ps_var'].numBlocks, game['ps_var'].time)
|
||||
return check
|
||||
elseif minigametype == 'ps_thermite' then
|
||||
local check
|
||||
exports['ps-ui']:Thermite(function(success)
|
||||
check = success
|
||||
end, game['ps_thermite'].time, game['ps_thermite'].gridsize, game['ps_thermite'].incorrect)
|
||||
return check
|
||||
local check = exports['ps-ui']:Thermite(false, game['ps_thermite'].time, game['ps_thermite'].gridsize, game['ps_thermite'].incorrect)
|
||||
return check
|
||||
elseif minigametype == 'ox' then
|
||||
local success = lib.skillCheck(game['ox'], {'1', '2', '3', '4'})
|
||||
return success
|
||||
@@ -158,154 +75,18 @@ function minigame()
|
||||
Wait(1000)
|
||||
time = time + 1
|
||||
until successes or time == 100
|
||||
elseif minigametype == 'none' then
|
||||
return true
|
||||
elseif minigametype == 'none' then
|
||||
return true
|
||||
else
|
||||
print"^1 SCRIPT ERROR: Md-Drugs set your minigame with one of the options!"
|
||||
end
|
||||
end
|
||||
|
||||
function Notify(text, type)
|
||||
if notifytype =='ox' then
|
||||
lib.notify({title = text, type = type})
|
||||
elseif notifytype == 'qb' then
|
||||
QBCore.Functions.Notify(text, type)
|
||||
elseif notifytype == 'okok' then
|
||||
exports['okokNotify']:Alert('', text, 4000, type, false)
|
||||
else
|
||||
print"^1 SCRIPT ERROR: Md-DRUGS set your notification with one of the options!"
|
||||
end
|
||||
end
|
||||
|
||||
function GetImage(img)
|
||||
if GetResourceState('ox_inventory') == 'started' then
|
||||
local Items = exports['ox_inventory']:Items()
|
||||
local itemClient = Items[img] and Items[img]['client']
|
||||
if itemClient and itemClient['image'] then
|
||||
return itemClient['image']
|
||||
else
|
||||
return "nui://ox_inventory/web/images/" .. img .. '.png'
|
||||
end
|
||||
end
|
||||
local invs = {
|
||||
['ps-inventory'] = "nui://ps-inventory/html/images/",
|
||||
['lj-inventory'] = "nui://lj-inventory/html/images/",
|
||||
['qb-inventory'] = "nui://qb-inventory/html/images/",
|
||||
['qs-inventory'] = "nui://qs-inventory/html/img/",
|
||||
['origen_inventory'] = "nui://origen_inventory/html/img/",
|
||||
['core_inventory'] = "nui://core_inventory/html/img/"
|
||||
}
|
||||
for k, v in pairs(invs) do
|
||||
if GetResourceState(k) == 'started' then
|
||||
return v .. QBCore.Shared.Items[img].image
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GetLabel(label)
|
||||
if GetResourceState('ox_inventory') == 'started' then
|
||||
local Items = exports['ox_inventory']:Items()
|
||||
return Items[label]['label']
|
||||
else
|
||||
return QBCore.Shared.Items[label]['label']
|
||||
end
|
||||
end
|
||||
|
||||
function GetRep()
|
||||
local rep = lib.callback.await('md-drugs:server:GetRep', false)
|
||||
local rep = ps.callback('md-drugs:server:GetRep')
|
||||
return rep
|
||||
end
|
||||
|
||||
|
||||
function sorter(sorting, value)
|
||||
table.sort(sorting, function(a, b) return a[value] < b[value] end)
|
||||
end
|
||||
|
||||
function makeMenu(name, rep)
|
||||
local menu = {}
|
||||
local data = lib.callback.await('md-drugs:server:menu', false, name)
|
||||
for k, v in pairs (data.table) do
|
||||
local allow = false
|
||||
if rep == nil then
|
||||
allow = true
|
||||
else
|
||||
if rep.dealerrep >= v.minrep then allow = true end
|
||||
end
|
||||
if allow then
|
||||
menu[#menu + 1] = {
|
||||
icon = GetImage(v.name),
|
||||
description = '$'.. v.price,
|
||||
title = GetLabel(v.name),
|
||||
onSelect = function()
|
||||
local settext = "Cost: $"..v.price
|
||||
local dialog = exports.ox_lib:inputDialog(v.name .."!", {
|
||||
{ type = 'select', label = "Payment Type", default = "cash", options = { { value = "cash"}, { value = "bank"},}},
|
||||
{ type = 'number', label = "Amount to buy", description = settext, min = 0, max = v.amount, default = 1 },
|
||||
})
|
||||
if not dialog[1] then return end
|
||||
TriggerServerEvent("md-drugs:server:purchaseGoods", dialog[2], dialog[1], v.name, v.price, data.table, k)
|
||||
end,
|
||||
}
|
||||
end
|
||||
end
|
||||
sorter(menu, 'title')
|
||||
lib.registerContext({id = data.id, title = data.title, options = menu})
|
||||
end
|
||||
|
||||
|
||||
function ItemCheck(item)
|
||||
if GetResourceState('ox_inventory') == 'started' then
|
||||
if exports.ox_inventory:GetItemCount(item) >= 1 then return true else Notify('You Need ' .. GetLabel(item) .. " !", 'error') return false end
|
||||
else
|
||||
if QBCore.Shared.Items[item] == nil then print("There Is No " .. item .. " In Your QB Items.lua") return end
|
||||
if QBCore.Functions.HasItem(item) then return true else Notify('You Need ' .. QBCore.Shared.Items[item].label .. " !", 'error') return false end
|
||||
end
|
||||
end
|
||||
|
||||
function ItemCheckMulti(item)
|
||||
local need = 0
|
||||
local has = 0
|
||||
for k,v in pairs (item) do
|
||||
need = need + 1
|
||||
if GetResourceState('ox_inventory') == 'started' then
|
||||
if exports.ox_inventory:GetItemCount(v) >= 1 then has = has + 1 else Notify('You Need ' .. GetLabel(v) .. " !", 'error') end
|
||||
else
|
||||
if QBCore.Shared.Items[v] == nil then print("There Is No " .. item .. " In Your QB Items.lua") return end
|
||||
if QBCore.Functions.HasItem(v) then has = has + 1 else Notify('You Need ' .. QBCore.Shared.Items[v].label .. " !", 'error') end
|
||||
end
|
||||
end
|
||||
if need == has then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function Email(sender, subject, message)
|
||||
if Config.Phone == 'yflip' then
|
||||
local receiver = GetPlayerServerId(PlayerId())
|
||||
local insertId, received = exports["yflip-phone"]:SendMail({
|
||||
title = subject,
|
||||
sender = sender,
|
||||
senderDisplayName = sender,
|
||||
content = message,
|
||||
}, 'phoneNumber', receiver)
|
||||
elseif Config.Phone == 'qs' then
|
||||
TriggerServerEvent('qs-smartphone:server:sendNewMail', {
|
||||
sender = sender,
|
||||
subject = subject,
|
||||
message = message,
|
||||
button = {}
|
||||
})
|
||||
else
|
||||
TriggerServerEvent('qb-phone:server:sendNewMail', {
|
||||
sender = sender,
|
||||
subject = subject,
|
||||
message = message,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
function PoliceCall(chance)
|
||||
local math = math.random(1,100)
|
||||
if math <= chance then
|
||||
@@ -331,139 +112,34 @@ function PoliceCall(chance)
|
||||
exports["aty_dispatch"]:SendDispatch('Drug Sale', '420-69', 40, {'police'})
|
||||
elseif dispatch == 'qs' then
|
||||
exports['qs-dispatch']:DrugSale()
|
||||
elseif dispatch == 'codem' then
|
||||
local Data = {
|
||||
type = 'Drug Sale',
|
||||
header = 'Someone Selling Drugs',
|
||||
text = 'Hurry up and save the community',
|
||||
code = '420-69',
|
||||
}
|
||||
exports['codem-dispatch']:CustomDispatch(Data)
|
||||
else
|
||||
print('Congrats, You Choose 0 of the options :)')
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function GetCops(number)
|
||||
if number == 0 then return true end
|
||||
local amount = lib.callback.await('md-drugs:server:GetCoppers', false)
|
||||
if amount >= number then return true else Notify('You Need '.. number - amount .. ' More Cops To Do This', 'error') end
|
||||
local amount = ps.callback('md-drugs:server:GetCoppers')
|
||||
if amount >= number then return true else ps.notify('You Need '.. number - amount .. ' More Cops To Do This', 'error') end
|
||||
end
|
||||
|
||||
|
||||
function Freeze(entity, toggle, head)
|
||||
SetEntityInvincible(entity, toggle)
|
||||
SetEntityAsMissionEntity(entity, toggle, toggle)
|
||||
FreezeEntityPosition(entity, toggle)
|
||||
SetEntityHeading(entity, head)
|
||||
SetBlockingOfNonTemporaryEvents(entity, toggle)
|
||||
end
|
||||
|
||||
function tele(coords)
|
||||
DoScreenFadeOut(500)
|
||||
Wait(1000)
|
||||
SetEntityCoords(PlayerPedId(),coords.x, coords.y, coords.z)
|
||||
Wait(1000)
|
||||
DoScreenFadeIn(500)
|
||||
end
|
||||
|
||||
|
||||
function AddBoxZoneSingle(name, loc, data)
|
||||
if Config.Target == 'qb' then
|
||||
exports['qb-target']:AddBoxZone(name, loc, 1.5, 1.75, {name = name, minZ = loc.z-1,maxZ = loc.z +1},
|
||||
{ options = {
|
||||
{
|
||||
type = data.type or nil,
|
||||
event = data.event or nil,
|
||||
action = data.action or nil,
|
||||
icon = data.icon,
|
||||
label = data.label,
|
||||
data = data.data,
|
||||
canInteract = data.canInteract,
|
||||
}
|
||||
},
|
||||
distance = 2.0
|
||||
})
|
||||
elseif Config.Target == 'ox' then
|
||||
exports.ox_target:addBoxZone({coords = loc, size = vec3(1,1,1), options = {
|
||||
{
|
||||
type = data.type or nil,
|
||||
event = data.event or nil,
|
||||
onSelect = data.action or nil,
|
||||
distance = 2.5,
|
||||
icon = data.icon,
|
||||
label = data.label,
|
||||
data = data.data,
|
||||
canInteract = data.canInteract,
|
||||
}
|
||||
}, })
|
||||
end
|
||||
end
|
||||
|
||||
function AddBoxZoneMulti(name, table, data)
|
||||
for k, v in pairs (table) do
|
||||
if v.gang == nil or v.gang == '' or v.gang == "" then v.gang = 1 end
|
||||
if Config.Target == 'qb' then
|
||||
exports['qb-target']:AddBoxZone(name .. k, v.loc, 1.5, 1.75, {name = name..k, minZ = v.loc.z-1.50,maxZ = v.loc.z +1.5},
|
||||
{ options = {
|
||||
{
|
||||
type = data.type or nil,
|
||||
event = data.event or nil,
|
||||
action = data.action or nil,
|
||||
icon = data.icon,
|
||||
label = data.label,
|
||||
data = k,
|
||||
canInteract = data.canInteract or function()
|
||||
if QBCore.Functions.GetPlayerData().gang.name == v.gang or v.gang == 1 then return true end end
|
||||
}
|
||||
},
|
||||
distance = 2.5
|
||||
})
|
||||
elseif Config.Target == 'ox' then
|
||||
exports.ox_target:addBoxZone({coords = v.loc, size = vec3(1,1,1), options = {
|
||||
{
|
||||
type = data.type or nil,
|
||||
event = data.event or nil,
|
||||
onSelect = data.action or nil,
|
||||
icon = data.icon,
|
||||
label = data.label,
|
||||
data = k,
|
||||
distance = 2.5,
|
||||
canInteract = data.canInteract or function()
|
||||
if QBCore.Functions.GetPlayerData().gang.name == v.gang or v.gang == 1 then return true end end
|
||||
}
|
||||
}, })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AddBoxZoneMultiOptions(name, loc, data)
|
||||
if Config.Target == 'qb' then
|
||||
exports['qb-target']:AddBoxZone(name , loc, 1.5, 1.75, {name = name, minZ = loc.z-1.50,maxZ = loc.z +1.5},
|
||||
{ options = data, distance = 2.5})
|
||||
elseif Config.Target == 'ox' then
|
||||
exports.ox_target:addBoxZone({coords = loc, size = vec3(1,1,1), options = data })
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function AddSingleModel(model, data, num)
|
||||
if Config.Target == 'qb' then
|
||||
exports['qb-target']:AddTargetEntity(model, {options = {
|
||||
{icon = data.icon, label = data.label, event = data.event or nil, action = data.action or nil, data = num }
|
||||
}, distance = 2.5})
|
||||
elseif Config.Target == 'ox' then
|
||||
exports.ox_target:addLocalEntity(model, {icon = data.icon, label = data.label, event = data.event or nil, onSelect = data.action or nil, data = num, distance = 2.5 })
|
||||
end
|
||||
end
|
||||
|
||||
function AddMultiModel(model, data, num)
|
||||
local options = {}
|
||||
for k, v in pairs (data) do
|
||||
table.insert(options,{
|
||||
icon = v.icon, label = v.label, event = v.event or nil, action = v.action or nil,
|
||||
onSelect = v.action,data = v.data,canInteract = v.canInteract or nil, distance = 2.0,
|
||||
})
|
||||
end
|
||||
if Config.Target == 'qb' then
|
||||
exports['qb-target']:AddTargetEntity(model, {options = options, distance = 2.5})
|
||||
elseif Config.Target == 'ox' then
|
||||
exports.ox_target:addLocalEntity(model, options)
|
||||
end
|
||||
SetEntityInvincible(entity, toggle)
|
||||
SetEntityAsMissionEntity(entity, toggle, toggle)
|
||||
FreezeEntityPosition(entity, toggle)
|
||||
SetEntityHeading(entity, head)
|
||||
SetBlockingOfNonTemporaryEvents(entity, toggle)
|
||||
end
|
||||
|
||||
local created = false
|
||||
@@ -471,12 +147,13 @@ local heading = 180.0
|
||||
function StartRay()
|
||||
local run = true
|
||||
local pedcoord = GetEntityCoords(PlayerPedId())
|
||||
ps.requestModel('v_ret_ml_tablea', 30000)
|
||||
local table = CreateObject('v_ret_ml_tablea', pedcoord.x, pedcoord.y, pedcoord.z+1, heading, false, false)
|
||||
repeat
|
||||
local hit, entityHit, endCoords, surfaceNormal, matHash = lib.raycast.cam(511, 4, 10)
|
||||
local hit, endCoords, surfaceNormal, entityHit = ps.raycast()
|
||||
if not created then
|
||||
created = true
|
||||
lib.showTextUI([[[E] To Place
|
||||
ps.drawText([[[E] To Place
|
||||
[DEL] To Cancel
|
||||
[<-] To Move Left
|
||||
[->] To Move Right]])
|
||||
@@ -493,7 +170,7 @@ function StartRay()
|
||||
heading = heading + 2
|
||||
end
|
||||
if IsControlPressed(0, 38) then
|
||||
lib.hideTextUI()
|
||||
ps.hideText()
|
||||
run = false
|
||||
DeleteObject(table)
|
||||
created = false
|
||||
@@ -501,7 +178,7 @@ function StartRay()
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 178) then
|
||||
lib.hideTextUI()
|
||||
ps.hideText()
|
||||
run = false
|
||||
created = false
|
||||
DeleteObject(table)
|
||||
@@ -514,12 +191,13 @@ end
|
||||
function StartRay2()
|
||||
local run = true
|
||||
local pedcoord = GetEntityCoords(PlayerPedId())
|
||||
ps.requestModel('bkr_prop_coke_press_01aa', 30000)
|
||||
local table = CreateObject('bkr_prop_coke_press_01aa', pedcoord.x, pedcoord.y, pedcoord.z+1, heading, false, false)
|
||||
repeat
|
||||
local hit, entityHit, endCoords, surfaceNormal, matHash = lib.raycast.cam(511, 4, 10)
|
||||
local hit, endCoords, surfaceNormal, entityHit = ps.raycast()
|
||||
if not created then
|
||||
created = true
|
||||
lib.showTextUI([[[E] To Place
|
||||
ps.drawText([[[E] To Place
|
||||
[DEL] To Cancel
|
||||
[<-] To Move Left
|
||||
[->] To Move Right]])
|
||||
@@ -536,7 +214,7 @@ function StartRay2()
|
||||
heading = heading + 2
|
||||
end
|
||||
if IsControlPressed(0, 38) then
|
||||
lib.hideTextUI()
|
||||
ps.hideText()
|
||||
run = false
|
||||
DeleteObject(table)
|
||||
created = false
|
||||
@@ -544,7 +222,7 @@ function StartRay2()
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 178) then
|
||||
lib.hideTextUI()
|
||||
ps.hideText()
|
||||
run = false
|
||||
created = false
|
||||
DeleteObject(table)
|
||||
@@ -554,34 +232,25 @@ function StartRay2()
|
||||
until run == false
|
||||
end
|
||||
|
||||
|
||||
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
|
||||
Wait(3000)
|
||||
LoadModel('prop_plant_01b') TriggerEvent('heroin:init')
|
||||
LoadModel('prop_plant_01a') TriggerEvent('coke:init')
|
||||
LoadModel('prop_cactus_03') TriggerEvent('Mescaline:init')
|
||||
LoadModel('mushroom') TriggerEvent('shrooms:init')
|
||||
LoadModel('bkr_prop_weed_lrg_01b') TriggerEvent('weed:init')
|
||||
local check = lib.callback.await('md-drugs:server:GetRep', false)
|
||||
|
||||
return
|
||||
ps.registerCallback('md-drugs:client:uncuff', function(data)
|
||||
if not ps.progressbar(data, 4000, 'uncuff') then return end
|
||||
return true
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStart', function(resource)
|
||||
if resource == GetCurrentResourceName() then
|
||||
LoadModel('prop_plant_01b') TriggerEvent('heroin:init')
|
||||
LoadModel('prop_plant_01a') TriggerEvent('coke:init')
|
||||
LoadModel('prop_cactus_03') TriggerEvent('Mescaline:init')
|
||||
LoadModel('mushroom') TriggerEvent('shrooms:init')
|
||||
LoadModel('bkr_prop_weed_lrg_01b') TriggerEvent('weed:init')
|
||||
end
|
||||
end)
|
||||
local active = false
|
||||
RegisterNetEvent('md-drugs:client:minusTier', function(data)
|
||||
if active then return end
|
||||
if not data then return end
|
||||
active = true
|
||||
if not progressbar('Cutting This ' ..GetLabel(data.item) .. ' More', 4000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:AddMas', data)
|
||||
active = false
|
||||
end)
|
||||
RegisterCommand('DrugRep', function()
|
||||
if not Config.TierSystem then return end
|
||||
local rep = ps.callback('md-drugs:server:GetRep', false)
|
||||
ps.menu('Drug Rep', 'Drug Rep', {
|
||||
{icon = "fa-solid fa-face-flushed", title = 'Cocaine: '..rep.coke},
|
||||
{icon = "fa-solid fa-syringe", title = 'Heroin: '..rep.heroin},
|
||||
{icon = "fa-solid fa-vial", title = 'LSD: '..rep.lsd},
|
||||
{icon = "fa-solid fa-plug", title = 'Dealer: '..rep.dealerrep},
|
||||
{icon = "fa-solid fa-money-bill", title = 'Corner Selling: ' .. rep.cornerselling.rep, description = 'Rank: ' .. rep.cornerselling.label }
|
||||
})
|
||||
end, false)
|
||||
|
||||
function handleGang(gang)
|
||||
if gang == nil or gang == '' or gang == "" then return true end
|
||||
if ps.getGangName() == gang or gang == 1 then return true end
|
||||
return false
|
||||
end
|
||||
+137
-122
@@ -1,139 +1,154 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local PoppyPlants = {}
|
||||
local herointable = false
|
||||
|
||||
local function createLabKit(coord, head)
|
||||
local herointable = false
|
||||
local dirty = false
|
||||
local locations = ps.callback('md-drugs:server:GetHeroinLocations')
|
||||
|
||||
local function createLabKit(coord, head)
|
||||
local heroinlabkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false,false)
|
||||
SetEntityHeading(heroinlabkit, head)
|
||||
PlaceObjectOnGroundProperly(heroinlabkit)
|
||||
local options = {
|
||||
{ event = "md-drugs:client:heatliquidheroin", icon = "fa-solid fa-temperature-high", label = Lang.targets.heroin.cook, data = heroinlabkit},
|
||||
{ event = "md-drugs:client:getheroinkitback", icon = "fas fa-box-circle-check", label = Lang.targets.heroin.up, data = heroinlabkit, canInteract = function() if herointable then return true end end},
|
||||
}
|
||||
AddMultiModel(heroinlabkit, options, heroinlabkit)
|
||||
end
|
||||
|
||||
local function pickher(loc)
|
||||
if not progressbar(Lang.Heroin.pick, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("heroin:pickupCane", loc)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
local Ped = "g_m_y_famdnf_01"
|
||||
lib.requestModel("g_m_y_famdnf_01", Config.RequestModelTime)
|
||||
local labkitlocation = Config.buyheroinlabkit
|
||||
local heroinkitdealer = CreatePed(0, Ped, labkitlocation.x, labkitlocation.y, labkitlocation.z-1, labkitlocation.w, false, false)
|
||||
Freeze(heroinkitdealer, true, labkitlocation.w)
|
||||
AddSingleModel(heroinkitdealer, { label = Lang.targets.heroin.kit, icon = "fa-solid fa-money-bill", event = "md-drugs:client:buyheroinlabkit", distance = 2.0}, nil )
|
||||
end)
|
||||
|
||||
RegisterNetEvent('heroin:respawnCane', function(loc)
|
||||
local v = GlobalState.PoppyPlants[loc]
|
||||
local hash = GetHashKey(v.model)
|
||||
if not PoppyPlants[loc] then
|
||||
PoppyPlants[loc] = CreateObject(hash, v.location, false, true, true)
|
||||
Freeze(PoppyPlants[loc], true, v.heading)
|
||||
AddSingleModel(PoppyPlants[loc], {icon = "fa-solid fa-seedling", label = Lang.targets.heroin.pick, action = function() pickher(loc) end}, loc )
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('heroin:removeCane', function(loc)
|
||||
if DoesEntityExist(PoppyPlants[loc]) then DeleteEntity(PoppyPlants[loc]) end
|
||||
PoppyPlants[loc] = nil
|
||||
end)
|
||||
|
||||
RegisterNetEvent("heroin:init", function()
|
||||
for k, v in pairs (GlobalState.PoppyPlants) do
|
||||
local hash = GetHashKey(v.model)
|
||||
if not HasModelLoaded(hash) then LoadModel(hash) end
|
||||
if not v.taken then
|
||||
PoppyPlants[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z, false, true, true)
|
||||
Freeze(PoppyPlants[k], true, v.heading)
|
||||
AddSingleModel(PoppyPlants[k], {icon = "fa-solid fa-seedling", label = Lang.targets.heroin.pick, action = function() pickher(k) end}, k )
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStop', function(resourceName)
|
||||
if GetCurrentResourceName() == resourceName then
|
||||
SetModelAsNoLongerNeeded(GetHashKey('prop_plant_01b'))
|
||||
for k, v in pairs(PoppyPlants) do
|
||||
if DoesEntityExist(v) then
|
||||
DeleteEntity(v) SetEntityAsNoLongerNeeded(v)
|
||||
ps.entityTarget(heroinlabkit, {
|
||||
{
|
||||
icon = "fa-solid fa-temperature-high",
|
||||
label = ps.lang('heroin.targetCook'),
|
||||
action = function()
|
||||
if not ps.hasItem('emptyvial') then
|
||||
ps.notify(ps.lang('Catches.itemMissings', ps.getLabel('emptyvial')), 'error')
|
||||
return
|
||||
end
|
||||
|
||||
if not minigame() then
|
||||
dirty = true
|
||||
TriggerServerEvent("md-drugs:server:failheatingheroin")
|
||||
ps.requestPTFX("core")
|
||||
local heroinkit = StartParticleFxLoopedOnEntity("exp_air_molotov", heroinlabkit, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
|
||||
SetParticleFxLoopedAlpha(heroinkit, 3.0)
|
||||
SetPedToRagdoll(PlayerPedId(), 1300, 1300, 0, 0, 0, 0)
|
||||
return end
|
||||
|
||||
if not ps.progressbar(ps.lang('heroin.pbCook'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:heatliquidheroin")
|
||||
end,
|
||||
canInteract = function()
|
||||
if not dirty then return true end
|
||||
end
|
||||
end
|
||||
end)
|
||||
},
|
||||
{
|
||||
icon = "fas fa-box-circle-check",
|
||||
label = ps.lang('heroin.targetPickup'),
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('heroin.pbPickup'), 4000, 'uncuff') then return end
|
||||
herointable = false
|
||||
DeleteObject(heroinlabkit)
|
||||
TriggerServerEvent("md-drugs:server:getheroinlabkitback")
|
||||
end,
|
||||
canInteract = function()
|
||||
if not dirty then return true end
|
||||
return false
|
||||
end
|
||||
},
|
||||
{
|
||||
icon = "fa-solid fa-hand-sparkles",
|
||||
label = ps.lang('heroin.targetClean'),
|
||||
action = function()
|
||||
if not ps.hasItem('cleaningkit') then
|
||||
ps.notify(ps.lang('Catches.itemMissings', ps.getLabel('cleaningkit')), 'error')
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('heroin.pbClean'), 4000, 'clean') then return end
|
||||
local done = ps.callback('removeCleaningkit', false)
|
||||
if done then dirty = false end
|
||||
end,
|
||||
canInteract = function()
|
||||
if dirty then return true end
|
||||
return false
|
||||
end
|
||||
}})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:dryplant", function(data)
|
||||
if not progressbar(Lang.Heroin.dryout, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:dryplant",data.data)
|
||||
end)
|
||||
for k, v in pairs (locations.dryplant) do
|
||||
ps.boxTarget('dryHeroin'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('heroin.targetDry'),
|
||||
icon = 'fa-solid fa-temperature-high',
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('heroin.pbDry'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:dryplant", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:cutheroin", function(data)
|
||||
if not ItemCheck('bakingsoda') then return end
|
||||
if not progressbar(Lang.Heroin.cutting, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:cutheroin", data.data)
|
||||
end)
|
||||
for k, v in pairs (locations.cutheroinone) do
|
||||
ps.boxTarget('cutHeroin'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('heroin.targetCutHeroin'),
|
||||
icon = 'fa-solid fa-seedling',
|
||||
action = function()
|
||||
if not ps.hasItem('bakingsoda') then return end
|
||||
if not ps.progressbar(ps.lang('heroin.pbCutHeroin'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:cutheroin", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
local peds = {}
|
||||
for k, v in pairs (locations.buyKit) do
|
||||
ps.requestModel(v.ped, 1000)
|
||||
peds[k] = CreatePed(4, v.ped, v.loc.x, v.loc.y, v.loc.z, v.loc.w, false, false)
|
||||
Freeze(peds[k], true, v.loc.w)
|
||||
SetBlockingOfNonTemporaryEvents(peds[k], true)
|
||||
SetEntityInvincible(peds[k], true)
|
||||
ps.entityTarget(peds[k], {
|
||||
{
|
||||
label = ps.lang('heroin.targetBuyKit'),
|
||||
icon = 'fa-solid fa-box-open',
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('heroin.pbBuyKit'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getheroinlabkit", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:buyheroinlabkit", function()
|
||||
if not progressbar(Lang.Heroin.secret, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getheroinlabkit")
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:setheroinlabkit", function()
|
||||
if herointable then
|
||||
Notify(Lang.Heroin.tableout, 'error')
|
||||
ps.registerCallback("md-drugs:client:setheroinlabkit", function()
|
||||
if herointable then
|
||||
ps.notify(ps.lang('heroin.tableout'), 'error')
|
||||
return false
|
||||
else
|
||||
herointable = true
|
||||
local location, head = StartRay()
|
||||
if not location then herointable = false TriggerServerEvent('md-drugs:server:getheroinlabkitback') return end
|
||||
if not progressbar(Lang.Heroin.table, 4000, 'uncuff') then TriggerServerEvent('md-drugs:server:getheroinlabkitback') return end
|
||||
if not location then herointable = false return end
|
||||
if not ps.progressbar(ps.lang('heroin.placing'), 4000, 'uncuff') then return end
|
||||
createLabKit(location, head)
|
||||
return true, location
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:heatliquidheroin", function(data)
|
||||
local loc, head = GetEntityCoords(data.data), GetEntityHeading(data.data)
|
||||
if not ItemCheck('emptyvial') then return end
|
||||
if not minigame() then
|
||||
TriggerServerEvent("md-drugs:server:failheatingheroin")
|
||||
DeleteObject(data.data)
|
||||
local dirtylabkitheroin = CreateObject("v_ret_ml_tablea", loc.x, loc.y, loc.z-1, true, false)
|
||||
SetEntityHeading(dirtylabkitheroin, head)
|
||||
PlaceObjectOnGroundProperly(dirtylabkitheroin)
|
||||
loadParticle("core")
|
||||
heroinkit = StartParticleFxLoopedOnEntity("exp_air_molotov", dirtylabkitheroin, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
|
||||
SetParticleFxLoopedAlpha(heroinkit, 3.0)
|
||||
SetPedToRagdoll(PlayerPedId(), 1300, 1300, 0, 0, 0, 0)
|
||||
AddMultiModel(dirtylabkitheroin, {{event = "md-drugs:client:cleanheroinlabkit",icon = "fa-solid fa-hand-sparkles",label = Lang.targets.heroin.clean, data = dirtylabkitheroin}}, nil )
|
||||
return end
|
||||
if not progressbar(Lang.Heroin.success, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:heatliquidheroin")
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:cleanheroinlabkit", function(data)
|
||||
if not ItemCheck('cleaningkit') then return end
|
||||
if not progressbar(Lang.Heroin.clean, 4000, 'clean') then return end
|
||||
TriggerServerEvent("md-drugs:server:removecleaningkitheroin", data.data)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:deletedirtyheroin", function(data)
|
||||
local location,head = GetEntityCoords(data), GetEntityHeading(data)
|
||||
DeleteObject(data)
|
||||
createLabKit(location, head)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getheroinkitback", function(data)
|
||||
if not progressbar(Lang.Heroin.pickup, 4000, 'uncuff') then return end
|
||||
herointable = false
|
||||
DeleteObject(data.data)
|
||||
TriggerServerEvent("md-drugs:server:getheroinlabkitback")
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:fillneedle", function(data)
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:failheroin", data.data) return end
|
||||
if not progressbar(Lang.Heroin.needles, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:fillneedle", data.data)
|
||||
end)
|
||||
for k, v in pairs (locations.fillneedle) do
|
||||
ps.boxTarget('fillNeedle'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('heroin.targetFill'),
|
||||
icon = 'fa-solid fa-syringe',
|
||||
action = function()
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:failheroin", k) return end
|
||||
if not ps.progressbar(ps.lang('heroin.pbFill'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:fillneedle", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
+76
-46
@@ -1,52 +1,82 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
CreateThread(function()
|
||||
local current = "s_m_m_doctor_01"
|
||||
lib.requestModel(current, Config.RequestModelTime)
|
||||
local SyrupLocation = CreatePed(0, current,Config.SyrupVendor.x,Config.SyrupVendor.y,Config.SyrupVendor.z-1, Config.SyrupVendor.w, false, false)
|
||||
Freeze(SyrupLocation, true, Config.SyrupVendor.w)
|
||||
AddSingleModel(SyrupLocation, { type = "client", label = Lang.targets.lean.git, icon = "fa-solid fa-circle-info", event = "md-drugs:client:getsyruplocationtobuy", distance = 2.0}, nil )
|
||||
end)
|
||||
local started = false
|
||||
local hit = 0
|
||||
local location = ps.callback('md-drugs:server:GetLeanLocs')
|
||||
|
||||
local function SpawnCarPedChase()
|
||||
local stoploc = vector3(-1157.63, -3056.71, 13.94)
|
||||
local start = location.StartLoc[math.random(1,#location.StartLoc)]
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getsyruplocationtobuy", function()
|
||||
Notify(Lang.Lean.marked, "success")
|
||||
SpawnCarPedChase()
|
||||
end)
|
||||
if started then ps.notify(ps.lang('lean.alreadyChasing'), 'error') return end
|
||||
started = true
|
||||
|
||||
RegisterNetEvent('md-drugs:client:leancraft', function()
|
||||
local store = {}
|
||||
local label = {}
|
||||
local items = lib.callback.await('md-drugs:server:GetRecipe', false,'lean', 'cups')
|
||||
for k, v in pairs (items) do
|
||||
label = {}
|
||||
local item = ''
|
||||
for m, d in pairs (items[k].take) do table.insert(label, GetLabel(m) .. ' X ' .. d) end
|
||||
for m,d in pairs (items[k].give) do item = m end
|
||||
store[#store + 1] = {
|
||||
icon = GetImage(item),
|
||||
description = table.concat(label, ", "),
|
||||
title = GetLabel(item),
|
||||
event = 'md-drugs:client:stirlean',
|
||||
args = {
|
||||
item = item,
|
||||
recipe = 'lean',
|
||||
num = k,
|
||||
label = 'Cooking Up ' .. GetLabel(item),
|
||||
table = 'cups'
|
||||
}
|
||||
}
|
||||
sorter(store, 'title')
|
||||
lib.registerContext({id = 'leanCraft',title = "Make Lean", options = store})
|
||||
ps.callback('md-drugs:server:RegisterLean')
|
||||
ps.requestModel("pounder", 30000)
|
||||
ps.requestModel("ig_priest", 30000)
|
||||
ps.requestModel("cargobob3", 30000)
|
||||
|
||||
local leancar = CreateVehicle("pounder", start.x+3, start.y-2, start.z-1, 52.0, true, false)
|
||||
local driver = CreatePed(26, "ig_priest", start.x, start.y, start.z, 268.9422, false, false)
|
||||
local pilot2 = CreatePed(26, "ig_priest", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, false, false)
|
||||
|
||||
FreezeEntityPosition(pilot2, true)
|
||||
SetEntityInvincible(pilot2, true)
|
||||
SetEntityAsMissionEntity(leancar)
|
||||
AddBlipForEntity(leancar)
|
||||
SetPedIntoVehicle(driver, leancar, -1)
|
||||
SetPedFleeAttributes(driver,false)
|
||||
TaskVehicleDriveToCoordLongrange(driver, leancar, stoploc.x, stoploc.y, stoploc.z-1, 50.0, 524288, 25.0)
|
||||
SetPedKeepTask(driver, true)
|
||||
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(driver) - stoploc) < 20.0 or GetEntityHealth(driver) == 0
|
||||
|
||||
RemoveBlip(leancar)
|
||||
|
||||
if GetEntityHealth(driver) == 0 then
|
||||
ps.entityTarget(leancar, {
|
||||
{
|
||||
name = 'leancar',
|
||||
icon = 'fa-solid fa-car',
|
||||
label = ps.lang('lean.stealFromTruck'),
|
||||
action = function()
|
||||
hit = hit + 1
|
||||
if not minigame() then return end
|
||||
TriggerServerEvent('md-drugs:server:givelean')
|
||||
started = false
|
||||
if math.random(1,100) <= 30 or hit == 4 then
|
||||
hit = 0
|
||||
DeleteVehicle(leancar)
|
||||
DeleteEntity(driver)
|
||||
DeleteEntity(pilot2)
|
||||
end
|
||||
end
|
||||
}
|
||||
})
|
||||
else
|
||||
DeleteVehicle(leancar)
|
||||
DeleteEntity(driver)
|
||||
DeleteEntity(pilot2)
|
||||
end
|
||||
end
|
||||
lib.showContext('leanCraft')
|
||||
end)
|
||||
|
||||
local busy = false
|
||||
RegisterNetEvent('md-drugs:client:stirlean', function(data)
|
||||
if busy then return end
|
||||
busy = true
|
||||
if not progressbar(data.label, 4000, 'uncuff') then busy = false return end
|
||||
TriggerServerEvent('md-drugs:server:finishcup', data)
|
||||
busy = false
|
||||
end)
|
||||
local leanPeds = {}
|
||||
for k, v in pairs (location.SyrupVendor) do
|
||||
ps.requestModel(v.ped)
|
||||
leanPeds[k] = CreatePed(0, v.ped, v.loc.x, v.loc.y, v.loc.z, false, false)
|
||||
Freeze(leanPeds[k], true, v.loc.w)
|
||||
ps.entityTarget(leanPeds[k], {
|
||||
{
|
||||
icon = "fa-solid fa-hand-holding-medical",
|
||||
label = ps.lang('lean.startMission'),
|
||||
action = function()
|
||||
SpawnCarPedChase()
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
},
|
||||
})
|
||||
end
|
||||
+181
-101
@@ -1,116 +1,196 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local tableout = false
|
||||
local dirtylsd = false
|
||||
local locations = ps.callback('md-drugs:server:GetLSDLocations')
|
||||
|
||||
local function loadParticle(dict)
|
||||
if not HasNamedPtfxAssetLoaded(dict) then
|
||||
RequestNamedPtfxAsset(dict)
|
||||
end
|
||||
while not HasNamedPtfxAssetLoaded(dict) do
|
||||
Wait(0)
|
||||
end
|
||||
SetPtfxAssetNextCall(dict)
|
||||
end
|
||||
|
||||
local function createLabKit(coord, head)
|
||||
local labkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false)
|
||||
SetEntityHeading(labkit, head)
|
||||
PlaceObjectOnGroundProperly(labkit)
|
||||
local options = {
|
||||
{ event = "md-drugs:client:heatliquid", icon = "fa-solid fa-temperature-high", label = Lang.targets.lsd.heat, data = labkit },
|
||||
{ event = "md-drugs:client:refinequalityacid", icon = "fa-solid fa-temperature-high", label = Lang.targets.lsd.refine, data = labkit },
|
||||
{ event = "md-drugs:client:maketabpaper", icon = "fa-regular fa-note-sticky", label = Lang.targets.lsd.dab, data = labkit },
|
||||
{ event = "md-drugs:client:getlabkitback", icon = "fas fa-box-circle-check", label = Lang.targets.lsd.back, data = labkit, canInteract = function() return tableout end }
|
||||
}
|
||||
AddMultiModel(labkit, options, labkit)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
local Ped = "g_m_y_famdnf_01"
|
||||
lib.requestModel(Ped, Config.RequestModelTime)
|
||||
local tabdealer = CreatePed(0, Ped,Config.buylsdlabkit.x,Config.buylsdlabkit.y,Config.buylsdlabkit.z-1, Config.buylsdlabkit.w, false, false)
|
||||
Freeze(tabdealer, true, Config.buylsdlabkit.w)
|
||||
AddSingleModel(tabdealer,{ type = "client", label = Lang.targets.lsd.buy, icon = "fa-solid fa-money-bill", event = "md-drugs:client:buylabkit", distance = 2.0}, tabdealer )
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getlysergic", function(data)
|
||||
if not minigame() then return end
|
||||
if not progressbar(Lang.lsd.steallys, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getlysergic",data.data)
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getdiethylamide", function(data)
|
||||
if not minigame() then return end
|
||||
if not progressbar(Lang.lsd.stealdie, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:getdiethylamide', data.data)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:setlsdlabkit", function()
|
||||
if tableout then
|
||||
Notify(Lang.lsd.tableout, 'error')
|
||||
TriggerServerEvent('md-drugs:server:getlabkitback')
|
||||
else
|
||||
FreezeEntityPosition(labkit, true)
|
||||
tableout = true
|
||||
local loc, head = StartRay()
|
||||
if not loc then tableout = false TriggerServerEvent('md-drugs:server:getlabkitback') return end
|
||||
if not progressbar(Lang.lsd.place, 4000, 'uncuff') then TriggerServerEvent('md-drugs:server:getlabkitback') return end
|
||||
createLabKit(loc, head)
|
||||
local options = {
|
||||
{
|
||||
icon = "fa-solid fa-temperature-high",
|
||||
label = ps.lang('lsd.targetHeat'),
|
||||
action = function()
|
||||
local dict = "scr_ie_svm_technical2"
|
||||
if not minigame() then
|
||||
dirtylsd = true
|
||||
loadParticle(dict)
|
||||
local exitPtfx = StartParticleFxLoopedOnEntity("scr_dst_cocaine", labkit, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
|
||||
SetParticleFxLoopedAlpha(exitPtfx, 3.0)
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('lsd.heating'), 7000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:heatliquid")
|
||||
end,
|
||||
canInteract = function()
|
||||
if not dirtylsd then return true end
|
||||
end
|
||||
},
|
||||
{
|
||||
icon = "fa-solid fa-temperature-high",
|
||||
label = ps.lang('lsd.targetRefine'),
|
||||
action = function()
|
||||
if not ps.hasItem('lsd_one_vial') then
|
||||
ps.notify(ps.lang('Catches.itemNeeded', ps.getLabel('lsd_one_vial')), 'error')
|
||||
return
|
||||
end
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:failrefinequality") return end
|
||||
if not ps.progressbar(ps.lang('lsd.refining'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:refinequalityacid")
|
||||
end,
|
||||
canInteract = function()
|
||||
if not dirtylsd then return true end
|
||||
end
|
||||
},
|
||||
{
|
||||
icon = "fa-regular fa-note-sticky",
|
||||
label = ps.lang('lsd.targetDipping'),
|
||||
action = function()
|
||||
if not ps.hasItem('tab_paper') then
|
||||
ps.notify(ps.lang('Catches.itemNeeded', ps.getLabel('tab_paper')), 'error')
|
||||
return
|
||||
end
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:failtabs") return end
|
||||
if not ps.progressbar(ps.lang('lsd.dipping'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:maketabpaper")
|
||||
end,
|
||||
canInteract = function()
|
||||
if not dirtylsd then return true end
|
||||
end
|
||||
},
|
||||
{
|
||||
event = "md-drugs:client:getlabkitback",
|
||||
icon = "fas fa-box-circle-check",
|
||||
label = ps.lang('lsd.targetPickup'),
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('lsd.packup'), 4000, 'uncuff') then return end
|
||||
DeleteObject(labkit)
|
||||
TriggerServerEvent('md-drugs:server:getlabkitback')
|
||||
tableout = false
|
||||
end,
|
||||
canInteract = function()
|
||||
if not dirtylsd then return true end
|
||||
end
|
||||
},
|
||||
{
|
||||
icon = "fa-solid fa-hand-sparkles",
|
||||
label = ps.lang('lsd.targetClean'),
|
||||
action = function()
|
||||
if not ps.hasItem('cleaningkit') then
|
||||
ps.notify(ps.lang('Catches.itemNeeded', ps.getLabel('cleaningkit')), 'error')
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('lsd.cleaning'), 4000, 'clean') then return end
|
||||
local check = ps.callback('md-drugs:server:removecleaningkit')
|
||||
if check then
|
||||
dirtylsd = false
|
||||
end
|
||||
end,
|
||||
canInteract = function() if dirtylsd then return true end end
|
||||
}
|
||||
}
|
||||
ps.entityTarget(labkit, options)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getlabkitback", function(data)
|
||||
if not progressbar(Lang.lsd.tablepack, 4000, 'uncuff') then return end
|
||||
DeleteObject(data.data)
|
||||
TriggerServerEvent('md-drugs:server:getlabkitback')
|
||||
tableout = false
|
||||
end)
|
||||
for k, v in pairs (locations.lysergicacid) do
|
||||
ps.boxTarget('lysergicacid'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('lsd.targetLys'),
|
||||
icon = 'fa-solid fa-temperature-high',
|
||||
action = function()
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:faillysergic") return end
|
||||
if not ps.progressbar(ps.lang('lsd.stealLys'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getlysergic", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:heatliquid", function(data)
|
||||
local PedCoords, head = GetEntityCoords(data.data), GetEntityHeading(data.data)
|
||||
local dict = "scr_ie_svm_technical2"
|
||||
if not ItemCheck('lysergic_acid') then return end
|
||||
if not ItemCheck('diethylamide') then return end
|
||||
if not minigame() then
|
||||
TriggerServerEvent("md-drugs:server:failheating")
|
||||
DeleteObject(data.data)
|
||||
local dirtylabkit = CreateObject("v_ret_ml_tablea", PedCoords.x, PedCoords.y, PedCoords.z-1, true, false)
|
||||
SetEntityHeading(dirtylabkit, head)
|
||||
loadParticle(dict)
|
||||
exitPtfx = StartParticleFxLoopedOnEntity("scr_dst_cocaine", dirtylabkit, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
|
||||
PlaceObjectOnGroundProperly(dirtylabkit)
|
||||
SetParticleFxLoopedAlpha(exitPtfx, 3.0)
|
||||
Wait(100)
|
||||
AddMultiModel(dirtylabkit, { event = "md-drugs:client:cleanlabkit", icon = "fa-solid fa-hand-sparkles", label = Lang.targets.lsd.clean, data = dirtylabkit}, nil )
|
||||
return end
|
||||
if not progressbar(Lang.lsd.heat, 7000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:heatliquid")
|
||||
end)
|
||||
for k, v in pairs (locations.diethylamide) do
|
||||
ps.boxTarget('diethylamide'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('lsd.targetDie'),
|
||||
icon = 'fa-solid fa-temperature-high',
|
||||
action = function()
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:faildiethylamide") return end
|
||||
if not ps.progressbar(ps.lang('lsd.stealDie'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getdiethylamide", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:cleanlabkit", function(data)
|
||||
if not ItemCheck('cleaningkit') then return end
|
||||
if not progressbar(Lang.lsd.clean, 4000, 'clean') then return end
|
||||
local check = lib.callback.await('md-drugs:server:removecleaningkit')
|
||||
if check then
|
||||
local coord, head = GetEntityCoords(data.data), GetEntityHeading(data.data)
|
||||
DeleteObject(data.data)
|
||||
createLabKit(coord, head)
|
||||
end
|
||||
end)
|
||||
for k, v in pairs (locations.gettabs) do
|
||||
ps.boxTarget('gettabs'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('lsd.targetBuyTab'),
|
||||
icon = 'fa-solid fa-hand-holding-dollar',
|
||||
action = function()
|
||||
TriggerServerEvent("md-drugs:server:gettabpaper", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
local seller = {}
|
||||
for k, v in pairs (locations.buyLSDkit) do
|
||||
ps.requestModel(v.ped, 1000)
|
||||
seller[k] = CreatePed(4, v.ped, v.loc.x, v.loc.y, v.loc.z, v.loc.w, false, false)
|
||||
Freeze(seller[k], true, v.loc.w)
|
||||
ps.entityTarget(seller[k], {
|
||||
{
|
||||
label = ps.lang('lsd.targetBuyKit'),
|
||||
icon = 'fa-solid fa-hand-holding-dollar',
|
||||
action = function()
|
||||
if ps.hasItem('lsdlabkit') then
|
||||
ps.notify(ps.lang('lsd.alreadyOwn'), 'error')
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('lsd.buyingKit'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:getlabkit', k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:refinequalityacid", function()
|
||||
if not ItemCheck('lsd_one_vial') then return end
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:failrefinequality") return end
|
||||
if not progressbar(Lang.lsd.refine, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:refinequalityacid")
|
||||
end)
|
||||
ps.registerCallback("md-drugs:client:setlsdlabkit", function()
|
||||
if tableout then
|
||||
ps.notify(ps.lang('lsd.tableout'), 'error')
|
||||
return false
|
||||
else
|
||||
tableout = true
|
||||
local loc, head = StartRay()
|
||||
if not loc then tableout = false return end
|
||||
if not ps.progressbar(ps.lang('lsd.placing'), 4000, 'uncuff') then return end
|
||||
createLabKit(loc, head)
|
||||
return true, loc
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:maketabpaper", function()
|
||||
if not ItemCheck('tab_paper') then return end
|
||||
if not minigame() then TriggerServerEvent("md-drugs:server:failtabs") return end
|
||||
if not progressbar(Lang.lsd.dip, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:maketabpaper")
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:buytabs", function(data)
|
||||
if not progressbar(Lang.lsd.buypaper, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:gettabpaper", data.data)
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:buylabkit", function()
|
||||
if QBCore.Functions.HasItem('lsdlabkit') then Notify(Lang.lsd.hav, 'error') return end
|
||||
if not progressbar(Lang.lsd.buykit, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getlabkit")
|
||||
end)
|
||||
+33
-50
@@ -1,61 +1,44 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local Mescaline = {}
|
||||
|
||||
local function pick(loc)
|
||||
if not progressbar(Lang.mescaline.pick, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("Mescaline:pickupCane", loc)
|
||||
local locations = ps.callback('md-drugs:server:GetMescalineLocs')
|
||||
local badTrip = 20
|
||||
local function AlienEffect()
|
||||
StartScreenEffect("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsMichaelAliensFightIn")
|
||||
StopScreenEffect("DrugsMichaelAliensFight")
|
||||
StopScreenEffect("DrugsMichaelAliensFightOut")
|
||||
end
|
||||
|
||||
RegisterNetEvent('Mescaline:respawnCane', function(loc)
|
||||
local v = GlobalState.Mescaline[loc]
|
||||
local hash = GetHashKey(v.model)
|
||||
if not Mescaline[loc] then
|
||||
Mescaline[loc] = CreateObject(hash, v.location, false, true, true)
|
||||
Freeze(Mescaline[loc], true, v.heading)
|
||||
AddSingleModel(Mescaline[loc], {icon = "fa-solid fa-seedling",label = Lang.targets.mescaline.pick, action = function() pick(loc) end}, loc )
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('Mescaline:removeCane', function(loc)
|
||||
if DoesEntityExist(Mescaline[loc]) then DeleteEntity(Mescaline[loc]) end
|
||||
Mescaline[loc] = nil
|
||||
end)
|
||||
|
||||
RegisterNetEvent("Mescaline:init", function()
|
||||
for k, v in pairs (GlobalState.Mescaline) do
|
||||
local hash = GetHashKey(v.model)
|
||||
if not HasModelLoaded(hash) then LoadModel(hash) end
|
||||
if not v.taken then
|
||||
Mescaline[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z, false, true, true)
|
||||
Freeze(Mescaline[k], true, v.heading)
|
||||
AddSingleModel(Mescaline[k], {icon = "fa-solid fa-seedling",label = Lang.targets.mescaline.pick,action = function() pick(k) end}, k)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStop', function(resourceName)
|
||||
if GetCurrentResourceName() == resourceName then
|
||||
SetModelAsNoLongerNeeded(GetHashKey('prop_cactus_03'))
|
||||
for k, v in pairs(Mescaline) do
|
||||
if DoesEntityExist(v) then
|
||||
DeleteEntity(v) SetEntityAsNoLongerNeeded(v)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:drymescaline", function()
|
||||
if not ItemCheck('cactusbulb') then return end
|
||||
if not progressbar(Lang.mescaline.dry, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:drymescaline")
|
||||
end)
|
||||
for k, v in pairs (locations.DryOutMescaline) do
|
||||
ps.boxTarget('dryoutMesc'..k, v.loc, {length = v.l, width = v.w, height = 1.0, rotation = v.rot}, {
|
||||
{
|
||||
label = ps.lang('mesc.targetDry'),
|
||||
icon = 'fa-solid fa-temperature-high',
|
||||
action = function()
|
||||
if not ps.hasItem('cactusbulb') then
|
||||
ps.notify(ps.lang('Catches.itemNeeded', ps.getLabel('cactusbulb')), 'error')
|
||||
return
|
||||
end
|
||||
if not ps.progressbar(ps.lang('mescaline.dry'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:drymescaline", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:takemescaline", function()
|
||||
local chance, chance2 = math.random(1,100), math.random(1,100)
|
||||
local weapon = ''
|
||||
if chance2 == 100 then weapon = 'weapon_rpg' else weapon = 'weapon_flaregun' end
|
||||
if not progressbar(Lang.mescaline.eat, 4000, 'uncuff') then return end
|
||||
if chance <= Config.Badtrip then
|
||||
if not ps.progressbar(ps.lang('mescaline.eat'), 4000, 'uncuff') then return end
|
||||
if chance <= badTrip then
|
||||
AlienEffect()
|
||||
local clone = ClonePed(PlayerPedId(), false, false, true)
|
||||
SetEntityAsMissionEntity(clone)
|
||||
|
||||
+402
-110
@@ -1,78 +1,303 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local amonia = nil
|
||||
local tray = nil
|
||||
local heated = nil
|
||||
local active = nil
|
||||
local function startcook()
|
||||
if not ItemCheck('empty_weed_bag') then return end
|
||||
if not ItemCheck('acetone') then return end
|
||||
if not ItemCheck('ephedrine') then return end
|
||||
if amonia == nil then
|
||||
local amonia = false
|
||||
local tray = false
|
||||
local heated = false
|
||||
local active = false
|
||||
local trays = nil
|
||||
local locations = ps.callback('md-drugs:server:GetMethLocs')
|
||||
--- meth heist
|
||||
local startedmeth = false
|
||||
|
||||
local function SpawnMethCarPedChase()
|
||||
local stoploc = vector3(-1157.63, -3056.71, 13.94)
|
||||
local start = locations.StartLoc[math.random(1,#locations.StartLoc)]
|
||||
if startedmeth then
|
||||
ps.notify(ps.lang('meth.alreadyChasing'),'error')
|
||||
else
|
||||
startedmeth = true
|
||||
ps.callback('md-drugs:server:registerMeth')
|
||||
|
||||
ps.requestModel("journey", 30000)
|
||||
ps.requestModel("a_m_m_hillbilly_02", 30000)
|
||||
ps.requestModel("cargobob3", 30000)
|
||||
|
||||
local methcar = CreateVehicle("journey", start.x+3, start.y-2, start.z-1, 52.0, true, false)
|
||||
local methdriver = CreatePed(26, "a_m_m_hillbilly_02", start.x, start.y, start.z, 268.9422, false, false)
|
||||
local methpilot = CreatePed(26, "a_m_m_hillbilly_02", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, false, false)
|
||||
|
||||
FreezeEntityPosition(methpilot, true)
|
||||
SetEntityInvincible(methpilot, true)
|
||||
SetEntityAsMissionEntity(methcar)
|
||||
AddBlipForEntity(methcar)
|
||||
SetPedIntoVehicle(methdriver, methcar, -1)
|
||||
SetPedFleeAttributes(methdriver,false)
|
||||
TaskVehicleDriveToCoordLongrange(methdriver, methcar, stoploc.x, stoploc.y, stoploc.z-1, 50.0, 524288, 25.0)
|
||||
SetPedKeepTask(methdriver, true)
|
||||
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(methdriver) - stoploc) < 20.0 or GetEntityHealth(methdriver) == 0
|
||||
|
||||
if GetEntityHealth(methdriver) == 0 then
|
||||
ps.entityTarget(methcar, {
|
||||
{
|
||||
name = 'methcar',
|
||||
icon = 'fa-solid fa-car',
|
||||
label = ps.lang('meth.targetStealFromCar'),
|
||||
action = function()
|
||||
if not minigame() then return end
|
||||
TriggerServerEvent('md-drugs:server:givemethingridients')
|
||||
startedmeth = false
|
||||
if math.random(1,100) <= 30 then
|
||||
DeleteVehicle(methcar)
|
||||
DeleteEntity(methdriver)
|
||||
DeleteEntity(methpilot)
|
||||
end
|
||||
end,
|
||||
}
|
||||
})
|
||||
else
|
||||
DeleteVehicle(methcar)
|
||||
DeleteEntity(methdriver)
|
||||
DeleteEntity(methpilot)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local peds = {}
|
||||
for k, v in pairs (locations.MethHeist) do
|
||||
peds[k] = CreatePed(4, GetHashKey(v.ped), v.loc.x, v.loc.y, v.loc.z, v.loc.w, false, true)
|
||||
Freeze(peds[k], true, v.loc.w)
|
||||
ps.entityTarget(peds[k], {
|
||||
{
|
||||
name = 'methheist'..k,
|
||||
icon = 'fa-solid fa-user-secret',
|
||||
label = ps.lang('meth.targetHeist'),
|
||||
action = function()
|
||||
if startedmeth then ps.notify(ps.lang('meth.alreadyChasing'),'error') return end
|
||||
SpawnMethCarPedChase()
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
---- start animation shit
|
||||
local function loadParticle(dict)
|
||||
if not HasNamedPtfxAssetLoaded(dict) then
|
||||
RequestNamedPtfxAsset(dict)
|
||||
end
|
||||
while not HasNamedPtfxAssetLoaded(dict) do
|
||||
Wait(0)
|
||||
end
|
||||
SetPtfxAssetNextCall(dict)
|
||||
end
|
||||
|
||||
local function MethCooking(coords, offset, rotation)
|
||||
local animDict, animName = "anim@amb@business@meth@meth_monitoring_cooking@cooking@", "chemical_pour_short_cooker"
|
||||
ps.requestAnim(animDict, 500)
|
||||
SetEntityCoords(PlayerPedId(), coords)
|
||||
local targetPosition = GetEntityCoords(PlayerPedId())
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 800
|
||||
FreezeEntityPosition(PlayerPedId(), true)
|
||||
local scenePos, sceneRot = vector3(coords.x + offset.x, coords.y + offset.y, coords.z + offset.z), rotation
|
||||
local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(PlayerPedId(), netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
local sacid = CreateObjectNoOffset("bkr_prop_meth_sacid", targetPosition, 1, 1, 0)
|
||||
NetworkAddEntityToSynchronisedScene(sacid, netScene, animDict, "chemical_pour_short_sacid", 4.0, -8.0, 1)
|
||||
local ammonia = CreateObjectNoOffset("bkr_prop_meth_ammonia", targetPosition, 1, 1, 0)
|
||||
NetworkAddEntityToSynchronisedScene(ammonia, netScene, animDict, "chemical_pour_short_ammonia", 4.0, -8.0, 1)
|
||||
NetworkStartSynchronisedScene(netScene)
|
||||
Wait(animDuration)
|
||||
NetworkStopSynchronisedScene(netScene)
|
||||
DeleteObject(sacid) DeleteObject(ammonia)
|
||||
FreezeEntityPosition(PlayerPedId(), false)
|
||||
ps.requestModel('hei_prop_heist_thermite', 2000)
|
||||
loadParticle('scr_ornate_heist')
|
||||
local thermite = CreateObject('hei_prop_heist_thermite', vector3(1005.76, -3201.3, -39.25), true, false, false)
|
||||
FreezeEntityPosition(thermite, true)
|
||||
SetEntityRotation(thermite, 190.0, 90.0, 140.0, 3, true )
|
||||
Wait(1000)
|
||||
local therm = StartParticleFxLoopedOnEntity('scr_heist_ornate_thermal_burn', thermite, 0.0, 1.4, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
|
||||
Wait(math.random(10000, 20000))
|
||||
StopParticleFxLooped(therm, true)
|
||||
end
|
||||
|
||||
|
||||
local function SmashMeth(coords, offset, rotation)
|
||||
local ver = ""
|
||||
local animDict, animName = "anim@amb@business@meth@meth_smash_weight_check@", "break_weigh_"..ver.."char02"
|
||||
ps.requestAnim(animDict, 500)
|
||||
local ped = PlayerPedId()
|
||||
local targetPosition = coords
|
||||
SetEntityCoords(ped, targetPosition)
|
||||
Wait(1)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 800
|
||||
FreezeEntityPosition(ped, true)
|
||||
local scenePos, sceneRot = vector3(coords.x + offset.x, coords.y + offset.y, coords.z + offset.z), rotation
|
||||
local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
local objects, sceneObjects = {}, {
|
||||
{ hash = "w_me_hammer", animName = "break_weigh_" .. ver .. "hammer"},
|
||||
{ hash = "bkr_Prop_Meth_SmashedTray_01_frag_", animName = "break_weigh_"..ver.."tray01"},
|
||||
{ hash = "bkr_Prop_Meth_Tray_02a", animName = "break_weigh_"..ver.."tray01^1"},
|
||||
{ hash = "bkr_Prop_Meth_Tray_02a", animName = "break_weigh_"..ver.."tray01^2"},
|
||||
{ hash = "bkr_Prop_Meth_SmashedTray_01_frag_", animName = "break_weigh_"..ver.."tray01^3"},
|
||||
}
|
||||
for i=1, #sceneObjects, 1 do
|
||||
local obj = CreateObjectNoOffset(sceneObjects[i].hash, targetPosition, true, true, true)
|
||||
NetworkAddEntityToSynchronisedScene(obj, netScene, animDict, sceneObjects[i].animName, 4.0, -8.0, 1)
|
||||
objects[#objects+1] = obj
|
||||
end
|
||||
NetworkStartSynchronisedScene(netScene)
|
||||
Wait(animDuration)
|
||||
NetworkStopSynchronisedScene(netScene)
|
||||
for i=1, #objects, 1 do
|
||||
DeleteObject(objects[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
|
||||
local function BagMeth(coords, offset, rotation)
|
||||
local ver = ""
|
||||
local animDict, animName = "anim@amb@business@meth@meth_smash_weight_check@", "break_weigh_"..ver.."char01"
|
||||
ps.requestAnim(animDict, 500)
|
||||
local animDuration = GetAnimDuration(animDict, animName) * 1000
|
||||
local ped = PlayerPedId()
|
||||
SetEntityCoords(ped, coords)
|
||||
local scenePos, sceneRot = vector3(coords.x + offset.x, coords.y + offset.y, coords.z + offset.z), rotation
|
||||
local scenes = {
|
||||
{
|
||||
{ hash = "bkr_prop_meth_bigbag_04a", animName = "break_weigh_"..ver.."box01"},
|
||||
{ hash = "bkr_prop_meth_bigbag_03a", animName = "break_weigh_"..ver.."box01^1"},
|
||||
{ hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01"}
|
||||
},
|
||||
{
|
||||
{ hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^1"},
|
||||
{ hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^2"},
|
||||
{ hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^3"}
|
||||
},
|
||||
{
|
||||
{ hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^4"},
|
||||
{ hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^5"},
|
||||
{ hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^6"}
|
||||
},
|
||||
{
|
||||
{ hash = "bkr_prop_meth_scoop_01a", animName = "break_weigh_"..ver.."scoop"},
|
||||
{ hash = "bkr_prop_coke_scale_01", animName = "break_weigh_"..ver.."scale"},
|
||||
{ hash = "bkr_prop_fakeid_penclipboard", animName = "break_weigh_"..ver.."pen"}
|
||||
},
|
||||
{
|
||||
{ hash = "bkr_prop_fakeid_clipboard_01a", animName = "break_weigh_"..ver.."clipboard"},
|
||||
{ hash = "bkr_Prop_Meth_Tray_02a", animName = "break_weigh_"..ver.."tray01^5"}
|
||||
}
|
||||
}
|
||||
local scenesList, entitiesList = {}, {}
|
||||
for i=1, #scenes, 1 do
|
||||
local scene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
|
||||
NetworkAddPedToSynchronisedScene(ped, scene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
|
||||
for j=1, #scenes[i], 1 do
|
||||
local s = scenes[i][j]
|
||||
RequestModel(s.hash)
|
||||
while not HasModelLoaded(s.hash) do
|
||||
Wait(0)
|
||||
end
|
||||
local obj = CreateObjectNoOffset(s.hash, coords, true, true, true)
|
||||
SetModelAsNoLongerNeeded(s.hash)
|
||||
entitiesList[#entitiesList+1] = obj
|
||||
NetworkAddEntityToSynchronisedScene(obj, scene, animDict, s.animName, 4.0, -8.0, 1)
|
||||
end
|
||||
scenesList[#scenesList+1] = scene
|
||||
end
|
||||
DisableCamCollisionForEntity(ped)
|
||||
FreezeEntityPosition(ped, true)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStartSynchronisedScene(scenesList[i])
|
||||
end
|
||||
|
||||
Wait(animDuration-11000)
|
||||
for i=1, #scenesList, 1 do
|
||||
NetworkStopSynchronisedScene(scenesList[i])
|
||||
end
|
||||
for i=1, #entitiesList, 1 do
|
||||
DeleteEntity(entitiesList[i])
|
||||
end
|
||||
RemoveAnimDict(animDict)
|
||||
FreezeEntityPosition(ped, false)
|
||||
end
|
||||
---------------------- end animation shit
|
||||
---
|
||||
|
||||
local function startcook(num, coords, offset, rotation)
|
||||
if not amonia then
|
||||
local adding = ps.callback('md-drugs:server:startcook', num)
|
||||
if not adding then return end
|
||||
active = true
|
||||
TriggerServerEvent("md-drugs:server:startcook")
|
||||
MethCooking()
|
||||
amonia = true
|
||||
MethCooking(coords, offset, rotation)
|
||||
amonia = true
|
||||
else
|
||||
Notify(Lang.meth.inside, "error")
|
||||
ps.notify(ps.lang('meth.started'), "error")
|
||||
end
|
||||
end
|
||||
|
||||
local function dials()
|
||||
|
||||
local function dials(coords)
|
||||
if amonia == true then
|
||||
if not minigame() then
|
||||
AddExplosion(1005.773, -3200.402, -38.524, 49, 10, true, false, true, true)
|
||||
ClearPedTasks(PlayerPedId())
|
||||
amonia = nil
|
||||
active = nil
|
||||
if not ps.minigame('ps-circle', {amount = 2, speed = 8}) then
|
||||
AddExplosion(coords.x, coords.y,coords.z, 49, 10, true, false, true)
|
||||
amonia = false
|
||||
active = false
|
||||
return end
|
||||
Notify(Lang.meth.increaseheat, "success")
|
||||
ClearPedTasks(PlayerPedId())
|
||||
heated = true
|
||||
else
|
||||
ps.notify(ps.lang('meth.increaseHeat'), "success")
|
||||
heated = true
|
||||
end
|
||||
end
|
||||
|
||||
local function smash()
|
||||
if tray then
|
||||
tray = false
|
||||
DeleteObject(trays)
|
||||
local bucket = CreateObject(`bkr_prop_meth_bigbag_03a`, vector3(1012.85, -3194.29, -39.2), true, true, true)
|
||||
Freeze(bucket, true, 90.0)
|
||||
SmashMeth()
|
||||
Wait(100)
|
||||
AddSingleModel(bucket,
|
||||
{name = 'bucket',icon = "fa-solid fa-sack-xmark",label = Lang.targets.meth.bag, canInteract = function() if active == nil then return false end end,
|
||||
action = function()
|
||||
active = nil
|
||||
DeleteObject(bucket)
|
||||
amonia = nil
|
||||
heated = nil
|
||||
tray = nil
|
||||
BagMeth()
|
||||
TriggerServerEvent('md-drugs:server:getmeth')
|
||||
end,}, bucket)
|
||||
end
|
||||
local function smash(coords, offset, rotation, buckets, k)
|
||||
if tray then
|
||||
tray = false
|
||||
DeleteObject(trays)
|
||||
local bucket = CreateObject("bkr_prop_meth_bigbag_03a", buckets.x, buckets.y, buckets.z, true, true, true)
|
||||
Freeze(bucket, true, buckets.w)
|
||||
ps.entityTarget(bucket, {
|
||||
{
|
||||
name = 'bucket',
|
||||
icon = "fa-solid fa-sack-xmark",
|
||||
label = ps.lang('meth.targetBag'),
|
||||
canInteract = function()
|
||||
if active == false then return false end
|
||||
end,
|
||||
action = function()
|
||||
DeleteObject(bucket)
|
||||
active = false
|
||||
amonia = false
|
||||
heated = false
|
||||
tray = false
|
||||
BagMeth(locations.BagMeth[k].loc, locations.BagMeth[k].offset, locations.BagMeth[k].rotation)
|
||||
TriggerServerEvent('md-drugs:server:getmeth', k)
|
||||
end,
|
||||
}
|
||||
})
|
||||
SmashMeth(coords, offset, rotation)
|
||||
Wait(100)
|
||||
end
|
||||
end
|
||||
|
||||
local function trayscarry()
|
||||
if amonia then
|
||||
local pos = GetEntityCoords(PlayerPedId(), true)
|
||||
RequestAnimDict('anim@heists@box_carry@')
|
||||
while (not HasAnimDictLoaded('anim@heists@box_carry@')) do
|
||||
Wait(7)
|
||||
end
|
||||
TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false,
|
||||
false)
|
||||
RequestModel("bkr_prop_meth_tray_02a")
|
||||
while not HasModelLoaded("bkr_prop_meth_tray_02a") do
|
||||
Wait(0)
|
||||
end
|
||||
trays = CreateObject("bkr_prop_meth_tray_02a", pos.x, pos.y, pos.z, true, true, true)
|
||||
AttachEntityToEntity(trays, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 28422), 0.01, -0.2,
|
||||
-0.2, 20.0, 0.0, 0.0, true, true, false, true, 1, true)
|
||||
ps.requestAnim('anim@heists@box_carry@')
|
||||
TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false, false)
|
||||
ps.requestModel('bkr_prop_meth_tray_02a')
|
||||
trays = CreateObject("bkr_prop_meth_tray_02a", pos.x, pos.y, pos.z, true, true, true)
|
||||
AttachEntityToEntity(trays, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 28422), 0.01, -0.2,-0.2, 20.0, 0.0, 0.0, true, true, false, true, 1, true)
|
||||
tray = true
|
||||
end
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
BikerMethLab = exports['bob74_ipl']:GetBikerMethLabObject()
|
||||
BikerMethLab.Style.Set(BikerMethLab.Style.upgrade)
|
||||
@@ -81,66 +306,133 @@ CreateThread(function()
|
||||
RefreshInterior(BikerMethLab.interiorId)
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
AddBoxZoneSingle("methTeleOut",Config.MethTeleIn, {name = 'teleout', icon = "fa-solid fa-door-open", label = Lang.targets.meth.enter, action = function() SetEntityCoords(PlayerPedId(), Config.MethTeleOut) end} )
|
||||
AddBoxZoneSingle("methtelein",Config.MethTeleOut, {name = 'teleout', icon = "fa-solid fa-door-closed", label = Lang.targets.meth.exit, action = function() SetEntityCoords(PlayerPedId(), Config.MethTeleIn) end} )
|
||||
local options = {
|
||||
{ name = 'methcook', icon = "fa-solid fa-temperature-high", label = Lang.targets.meth.cook, distance = 2.5, action = function() startcook() end,
|
||||
canInteract = function()
|
||||
if amonia == nil and active == nil then
|
||||
for k, v in pairs (locations.CookMeth) do
|
||||
ps.boxTarget('cookMeth'..k, v.loc, {length = v.l, width = v.w, rotation = v.rot, height = 1.0},{
|
||||
{
|
||||
label = ps.lang('meth.targetCook'),
|
||||
icon = 'fa-solid fa-temperature-high',
|
||||
action = function()
|
||||
startcook(k, v.loc, v.offset or vec3(0,0,0), v.rotation or vector3(0,0,180.0))
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
if not amonia and not active then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
|
||||
end,
|
||||
},
|
||||
{ name = 'grabtray', icon = "fas fa-sign-in-alt", label = Lang.targets.meth.tray, distance = 2.5, action = function() trayscarry() end,
|
||||
canInteract = function()
|
||||
if heated and amonia and tray == nil then return true end
|
||||
end,
|
||||
{
|
||||
icon = "fas fa-sign-in-alt",
|
||||
label = ps.lang('meth.targetGrabTray'),
|
||||
action = function() trayscarry() end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
if heated and amonia and not tray then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
},
|
||||
}
|
||||
AddBoxZoneMultiOptions("cookmeth",vector3(1005.72, -3200.33, -38.52), options )
|
||||
AddBoxZoneSingle('boxmeth', vector3(1012.15, -3194.04, -39.20), {name = 'boxmeth',icon = "fas fa-sign-in-alt",label = Lang.targets.meth.box,action = function() smash()end,
|
||||
canInteract = function()
|
||||
if tray then return true end
|
||||
end})
|
||||
AddBoxZoneSingle('adjustdials',vector3(1007.89, -3201.17, -38.99),{ name = 'adjustdials', icon = "fas fa-sign-in-alt", label = Lang.targets.meth.adjust,
|
||||
distance = 5, action = function() dials() end,
|
||||
canInteract = function()
|
||||
if amonia and heated == nil then return true end end
|
||||
})
|
||||
if Config.MethHeist == false then
|
||||
AddBoxZoneMulti('methep', Config.MethEph, {icon = "fas fa-sign-in-alt", label = Lang.targets.meth.eph, event = 'md-drugs:client:stealeph'})
|
||||
AddBoxZoneMulti('methace', Config.Methace, {icon = "fas fa-sign-in-alt", label = Lang.targets.meth.ace, event = 'md-drugs:client:stealace'})
|
||||
end
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
if not Config.MethHeist == false then
|
||||
local current = "g_m_y_famdnf_01"
|
||||
lib.requestModel(current, Config.RequestModelTime)
|
||||
local CurrentLocation = Config.MethHeistStart
|
||||
local methdealer = CreatePed(0, current, CurrentLocation.x, CurrentLocation.y, CurrentLocation.z - 1, false, false)
|
||||
Freeze(methdealer, true, 220.0)
|
||||
Wait(100)
|
||||
AddSingleModel(methdealer,{
|
||||
label = Lang.targets.meth.mission,
|
||||
icon = "fas fa-eye",
|
||||
action = function()
|
||||
Notify(Lang.meth.mission, "success")
|
||||
SpawnMethCarPedChase()
|
||||
end,
|
||||
},nil )
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs (locations.MethDials) do
|
||||
ps.boxTarget('adjustMethDials'..k, v.loc, {length = v.l, width = v.w, rotation = v.rot, height = 1.0},{
|
||||
{
|
||||
name = 'adjustdials',
|
||||
icon = "fa-solid fa-temperature-three-quarters",
|
||||
label = ps.lang('meth.targetHeat'),
|
||||
action = function()
|
||||
dials(locations.CookMeth[k].loc)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
if amonia and heated == false then return true end
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs (locations.MethSmash) do
|
||||
ps.boxTarget('smashMeth'..k, v.loc, {length = v.l, width = v.w, rotation = v.rot, height = 1.0},{
|
||||
{
|
||||
name = 'smash',
|
||||
icon = "fa-solid fa-weight-scale",
|
||||
label = ps.lang('meth.targetSmash'),
|
||||
action = function()
|
||||
smash(v.loc, v.offset, v.rotation, v.bucket,k)
|
||||
end,
|
||||
canInteract = function()
|
||||
if not handleGang(v.gang) then return false end
|
||||
if heated and amonia and tray then return true end
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs (locations.MethTele) do
|
||||
ps.boxTarget('meth_tele'..k, v.inside, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-door-open',
|
||||
label = ps.lang('coke.teleOut'),
|
||||
action = function()
|
||||
SetEntityCoords(PlayerPedId(), v.outside)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
ps.boxTarget('meth_teleout'..k, v.outside, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-door-closed',
|
||||
label = ps.lang('coke.teleIn'),
|
||||
action = function()
|
||||
SetEntityCoords(PlayerPedId(), v.inside)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
RegisterCommand('offset', function()
|
||||
local pos = GetEntityCoords(PlayerPedId())
|
||||
Wait(4000)
|
||||
local offset = GetEntityCoords(PlayerPedId()) - pos
|
||||
print("Offset: ", offset)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:stealeph", function(data)
|
||||
if not progressbar('Stealing Ephedrine', 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:geteph", data.data)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:stealace", function(data)
|
||||
if not progressbar('Stealing Acetone', 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getace", data.data)
|
||||
end)
|
||||
for k, v in pairs (locations.MethEph) do
|
||||
ps.boxTarget('stealMethEph'..k, v.loc, {length = v.l, width = v.w, rotation = v.rot, height = 1.0},{
|
||||
{
|
||||
label = ps.lang('meth.targetStealEPH'),
|
||||
icon = 'fa-solid fa-bucket',
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('meth.stealingEPH'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:geteph", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
for k, v in pairs (locations.MethAce) do
|
||||
ps.boxTarget('stealMethAce'..k, v.loc, {length = v.l, width = v.w, rotation = v.rot, height = 1.0},{
|
||||
{
|
||||
label = ps.lang('meth.targetStealACE'),
|
||||
icon = 'fa-solid fa-bucket',
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('meth.stealingACE'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:getace", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
+89
-70
@@ -1,81 +1,100 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local carryPackage = nil
|
||||
local onMission = false
|
||||
local locations = ps.callback('md-drugs:server:GetOxyLocs')
|
||||
local pdAlert = 90
|
||||
|
||||
RegisterNetEvent("md-drugs:client:GetOxyCar", function()
|
||||
lib.requestModel("burrito3", Config.RequestModelTime)
|
||||
local paid = lib.callback.await('md-drugs:server:payfortruck', false)
|
||||
if not paid then return end
|
||||
local oxycar = CreateVehicle("burrito3",Config.truckspawn.x, Config.truckspawn.y,Config.truckspawn.z, Config.truckspawn.w, true, false)
|
||||
exports[Config.Fuel]:SetFuel(oxycar, 100.0)
|
||||
TriggerEvent("vehiclekeys:client:SetOwner", QBCore.Functions.GetPlate(oxycar))
|
||||
Notify(Lang.oxy.truck, 'success')
|
||||
TriggerEvent("md-drugs:client:getoxylocationroute")
|
||||
AddSingleModel(oxycar, { event = "md-drugs:client:getfromtrunk", icon = "fas fa-box-circle-check", label = Lang.targets.oxy.pack}, nil )
|
||||
end)
|
||||
local function getRoute()
|
||||
local Route = ps.callback('md-drugs:server:getRoute')
|
||||
if not Route then
|
||||
ps.notify(ps.lang('oxy.ditchCar'), "error")
|
||||
onMission = false
|
||||
return false
|
||||
end
|
||||
|
||||
SetNewWaypoint(Route.x, Route.y)
|
||||
ps.requestModel('g_m_y_famdnf_01', 30000)
|
||||
local oxybuyer = CreatePed(0, 'g_m_y_famdnf_01',Route.x,Route.y,Route.z-1, Route.w, false, false)
|
||||
Freeze(oxybuyer, true, Route.w)
|
||||
local timeOut = 300
|
||||
|
||||
repeat
|
||||
Wait(1000)
|
||||
timeOut = timeOut - 1
|
||||
until #(GetEntityCoords(PlayerPedId()) - vector3(Route.x,Route.y,Route.z)) < 5.0 or timeOut == 0
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getoxylocationroute", function()
|
||||
local CurrentLocation = Config.oxylocations[math.random(#Config.oxylocations)]
|
||||
if CurrentLocation ~= nil then
|
||||
SetNewWaypoint(CurrentLocation.x, CurrentLocation.y)
|
||||
local current = "g_m_y_famdnf_01"
|
||||
lib.requestModel(current, Config.RequestModelTime)
|
||||
local oxybuyer = CreatePed(0, current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, CurrentLocation.w, false, false)
|
||||
Freeze(oxybuyer, true, CurrentLocation.w)
|
||||
repeat
|
||||
Wait(1000)
|
||||
until #(GetEntityCoords(PlayerPedId()) - vector3(CurrentLocation.x,CurrentLocation.y,CurrentLocation.z)) < 5.0
|
||||
|
||||
PoliceCall(Config.PoliceAlertOxy)
|
||||
AddSingleModel(oxybuyer, { type = "client", label = Lang.targets.oxy.talk, icon = "fas fa-eye",
|
||||
action = function()
|
||||
if carryPackage then
|
||||
if not progressbar(Lang.oxy.hand, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:giveoxybox")
|
||||
DeleteEntity(oxybuyer)
|
||||
DetachEntity(carryPackage, true, true)
|
||||
DeleteObject(carryPackage)
|
||||
carryPackage = nil
|
||||
else
|
||||
Notify(Lang.oxy.empty, "error")
|
||||
PoliceCall(pdAlert)
|
||||
ps.entityTarget(oxybuyer,{
|
||||
{
|
||||
label = ps.lang('oxy.targetHandoff'),
|
||||
icon = "fa-solid fa-dollar-sign",
|
||||
action = function()
|
||||
if carryPackage then
|
||||
if not ps.progressbar(ps.lang('oxy.handingoff'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:giveoxybox")
|
||||
DeleteEntity(oxybuyer)
|
||||
DetachEntity(carryPackage, true, true)
|
||||
DeleteObject(carryPackage)
|
||||
carryPackage = nil
|
||||
getRoute()
|
||||
else
|
||||
ps.notify(ps.lang('oxy.emptyHands'), "error")
|
||||
end
|
||||
end
|
||||
end}, oxybuyer)
|
||||
end
|
||||
end)
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs(locations.OxyPayForTruck) do
|
||||
ps.boxTarget('oxyTruckPur' ..k , v.loc, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-truck-fast',
|
||||
label = ps.lang('oxy.targetPay'),
|
||||
action = function()
|
||||
ps.requestModel("burrito3", 30000)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getfromtrunk", function()
|
||||
if carryPackage then
|
||||
Notify(Lang.oxy.cantcarry, "error")
|
||||
else
|
||||
local pos = GetEntityCoords(PlayerPedId(), true)
|
||||
RequestAnimDict('anim@heists@box_carry@')
|
||||
while (not HasAnimDictLoaded('anim@heists@box_carry@')) do
|
||||
Wait(7)
|
||||
end
|
||||
TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false, false)
|
||||
RequestModel("hei_prop_drug_statue_box_big")
|
||||
while not HasModelLoaded("hei_prop_drug_statue_box_big") do
|
||||
Wait(0)
|
||||
end
|
||||
local object = CreateObject("hei_prop_drug_statue_box_big", pos.x, pos.y, pos.z, true, true, true)
|
||||
AttachEntityToEntity(object, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 57005), 0.05, 0.1, -0.3, 300.0, 250.0, 20.0, true, true, false, true, 1, true)
|
||||
carryPackage = object
|
||||
end
|
||||
end)
|
||||
local paid = ps.callback('md-drugs:server:payfortruck', false)
|
||||
if not paid then return end
|
||||
local oxycar = CreateVehicle("burrito3",v.truckSpawn.x, v.truckSpawn.y, v.truckSpawn.z, v.truckSpawn.w, true, false)
|
||||
|
||||
if Config.Fuel == "ox_fuel" then
|
||||
Entity(oxycar).state.fuel = 100.0
|
||||
else
|
||||
exports[Config.Fuel]:SetFuel(oxycar, 100.0)
|
||||
end
|
||||
TriggerEvent("vehiclekeys:client:SetOwner", GetVehicleNumberPlateText(oxycar))
|
||||
ps.notify(ps.lang('oxy.keys'), 'success')
|
||||
onMission = true
|
||||
getRoute()
|
||||
|
||||
RegisterNetEvent("md-drugs:client:giveoxybox", function(data)
|
||||
if carryPackage then
|
||||
if not progressbar(Lang.oxy.hand, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:giveoxybox")
|
||||
DeleteEntity(data.ped)
|
||||
DetachEntity(carryPackage, true, true)
|
||||
DeleteObject(carryPackage)
|
||||
carryPackage = nil
|
||||
else
|
||||
Notify(Lang.oxy.empty, "error")
|
||||
end
|
||||
end)
|
||||
ps.entityTarget(oxycar, {
|
||||
{
|
||||
icon = "fa-solid fa-box",
|
||||
label = ps.lang('oxy.targetGetPackage'),
|
||||
action = function()
|
||||
if carryPackage then
|
||||
ps.notify(ps.lang('oxy.alreadyCarrying'), "error")
|
||||
else
|
||||
local pos = GetEntityCoords(PlayerPedId(), true)
|
||||
ps.requestAnim('anim@heists@box_carry@')
|
||||
TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false, false)
|
||||
ps.requestModel("hei_prop_drug_statue_box_big")
|
||||
carryPackage = CreateObject("hei_prop_drug_statue_box_big", pos.x, pos.y, pos.z, true, true, true)
|
||||
AttachEntityToEntity(carryPackage, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 57005), 0.05, 0.1, -0.3, 300.0, 250.0, 20.0, true, true, false, true, 1, true)
|
||||
end
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end,
|
||||
canInteract = function()
|
||||
if onMission then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
end
|
||||
+24
-32
@@ -1,39 +1,31 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local locations = ps.callback('md-drugs:server:GetPharmaLocs')
|
||||
|
||||
RegisterNetEvent("md-drugs:client:prescriptionpad", function(args)
|
||||
local icon, event = 'fa-solid fa-file-prescription', 'md-drugs:client:writeprescription'
|
||||
if QBCore.Functions.GetPlayerData().job.type == Config.PharmaJob then
|
||||
lib.registerContext({
|
||||
id = 'prescriptionpad',
|
||||
title = "Prescription Pad",
|
||||
options = {
|
||||
{title = 'Give Vics', description = 'Give Vics ', icon = icon, event = event, args = {item = 'vicodin_prescription'}},
|
||||
{title = 'Give Madderal', description = 'Give Madderal ', icon = icon, event = event, args = {item = 'adderal_prescription'}},
|
||||
{title = 'Give Morphin', description = 'Give Morphin ', icon = icon, event = event, args = {item = 'morphine_prescription'}},
|
||||
{title = 'Give Zany', description = 'Give Zany ', icon = icon, event = event, args = {item = 'xanax_prescription'} },
|
||||
}
|
||||
ps.registerCallback("md-drugs:client:prescriptionpad", function(data, op)
|
||||
if ps.getJobType() ~= 'ems' then return end
|
||||
local input = ps.input(ps.lang('pharma.input.header'), {
|
||||
{type = 'select', title = ps.lang('pharma.input.title1'), options = data},
|
||||
{type = 'select', title = ps.lang('pharma.input.title2'), options = op}
|
||||
})
|
||||
lib.showContext('prescriptionpad')
|
||||
else
|
||||
Notify(Lang.Pharma.notems, "error")
|
||||
end
|
||||
if not input[1] then return end
|
||||
if not ps.progressbar(ps.lang('pharma.write'), 4000, 'notepad') then return end
|
||||
return {who = input[1], what = input[2]}
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:writeprescription", function(args)
|
||||
if not progressbar(Lang.Pharma.write, 4000, 'notepad') then return end
|
||||
TriggerServerEvent("md-drugs:server:giveprescription", args.item)
|
||||
ps.registerCallback("md-drugs:client:unbottle", function()
|
||||
if not ps.progressbar(ps.lang('pharma.opening'), 4000, 'uncuff') then return end
|
||||
return true
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:fillprescription", function(data)
|
||||
if not progressbar(Lang.Pharma.fill, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:fillprescription", data.data)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:unbottle", function(item)
|
||||
if not progressbar(Lang.Pharma.open, 4000, 'uncuff') then return end
|
||||
if item.name == 'vicodinbottle' then item = 'vicodin' end
|
||||
if item.name == 'adderalbottle' then item = 'adderal' end
|
||||
if item.name == 'morphinebottle' then item = 'morphine' end
|
||||
if item.name == 'xanaxbottle' then item = 'xanax' end
|
||||
TriggerServerEvent('md-drugs:server:unbottle', item)
|
||||
end)
|
||||
for k, v in pairs (locations.FillPrescription) do
|
||||
ps.boxTarget('pharma' ..k , v.loc, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-capsules',
|
||||
label = ps.lang('pharma.targetFill'),
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('pharma.fill'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:fillprescription", k)
|
||||
end,
|
||||
}
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,106 @@
|
||||
|
||||
local DrugPlants = {
|
||||
{model = 'prop_plant_01a', label = 'coke', langs = ps.lang('coke.targetPick'), tbl = GlobalState.CocaPlant, plantTbl = {},
|
||||
pick = function(loc)
|
||||
if not ps.progressbar(ps.lang('coke.picking'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("coke:pickupCane", loc)
|
||||
return true
|
||||
end,
|
||||
allow = Config.Drugs.cocaine,
|
||||
},
|
||||
{model = 'prop_plant_01b', label = 'heroin',langs = ps.lang('heroin.targetPick'), tbl = GlobalState.PoppyPlants, plantTbl = {},
|
||||
pick = function(loc)
|
||||
if not ps.progressbar(ps.lang('heroin.picking'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("heroin:pickupCane", loc)
|
||||
return true
|
||||
end,
|
||||
allow = Config.Drugs.heroin,
|
||||
},
|
||||
{model = 'prop_cactus_03', label = 'Mescaline', langs = ps.lang('mesc.targetPick'), tbl = GlobalState.Mescaline, plantTbl = {},
|
||||
pick = function(loc)
|
||||
if not ps.progressbar(ps.lang('mesc.picking'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("Mescaline:pickupCane", loc)
|
||||
return true
|
||||
end,
|
||||
allow = Config.Drugs.mescaline,
|
||||
|
||||
},
|
||||
{model = 'prop_weed_01', label = 'weed', langs = ps.lang('weed.targetPick'), tbl = GlobalState.WeedPlant, plantTbl = {},
|
||||
pick = function(loc)
|
||||
if not ps.progressbar(ps.lang('weed.picking'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("weed:pickupCane", loc)
|
||||
return true
|
||||
end,
|
||||
allow = Config.Drugs.weed,
|
||||
},
|
||||
{model = 'mushroom', label = 'shrooms', langs = ps.lang('shrooms.targetPick'), tbl = GlobalState.shrooms, plantTbl = {},
|
||||
pick = function(loc)
|
||||
if not ps.progressbar(ps.lang('shrooms.picking'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("shrooms:pickupCane", loc)
|
||||
return true
|
||||
end,
|
||||
allow = Config.Drugs.shrooms,
|
||||
},
|
||||
}
|
||||
|
||||
for k, v in pairs (DrugPlants) do
|
||||
if not v.allow then goto continue end
|
||||
RegisterNetEvent(v.label ..':respawnCane', function(loc)
|
||||
local plant = v.tbl[loc]
|
||||
local hash = GetHashKey(plant.model)
|
||||
if not v.plantTbl[loc] then
|
||||
ps.requestModel(hash)
|
||||
v.plantTbl[loc] = CreateObject(hash, plant.location, false, true, true)
|
||||
Freeze(v.plantTbl[loc], true, plant.heading)
|
||||
ps.entityTarget(v.plantTbl[loc], {
|
||||
{
|
||||
icon = v.icon,
|
||||
label = v.langs,
|
||||
action = function()
|
||||
if not v.pick(loc) then return end
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent(v.label ..':removeCane', function(loc)
|
||||
DeleteEntity(v.plantTbl[loc])
|
||||
v.plantTbl[loc] = nil
|
||||
end)
|
||||
|
||||
RegisterNetEvent(v.label ..":init", function()
|
||||
if not v.plantTbl then v.plantTbl = {} end
|
||||
for key, value in pairs (v.tbl) do
|
||||
local hash = GetHashKey(value.model)
|
||||
if not value.taken then
|
||||
v.plantTbl[key] = CreateObject(hash, value.location.x, value.location.y, value.location.z, false, true, true)
|
||||
Freeze(v.plantTbl[key], true, v.heading)
|
||||
ps.entityTarget(v.plantTbl[key], {
|
||||
{
|
||||
icon = v.icon,
|
||||
label = v.langs,
|
||||
action = function()
|
||||
if not v.pick(key) then return end
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
end
|
||||
end)
|
||||
TriggerEvent(v.label ..":init")
|
||||
::continue::
|
||||
|
||||
end
|
||||
|
||||
AddEventHandler('onResourceStop', function(resourceName)
|
||||
if GetCurrentResourceName() == resourceName then
|
||||
SetModelAsNoLongerNeeded(GetHashKey('prop_plant_01a'))
|
||||
for k, v in pairs(DrugPlants) do
|
||||
for key, plant in pairs(v.plantTbl) do
|
||||
if DoesEntityExist(plant) then DeleteEntity(plant) end
|
||||
v.plantTbl[key] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
+21
-54
@@ -1,58 +1,25 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local shrooms = {}
|
||||
|
||||
local function pick(loc)
|
||||
if not progressbar(Lang.Shrooms.pick, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("shrooms:pickupCane", loc)
|
||||
end
|
||||
|
||||
function LoadModel(hash)
|
||||
RequestModel(hash)
|
||||
while not HasModelLoaded(hash) do
|
||||
Wait(0)
|
||||
end
|
||||
end
|
||||
|
||||
RegisterNetEvent('shrooms:respawnCane', function(loc)
|
||||
local v = GlobalState.shrooms[loc]
|
||||
local hash = GetHashKey(v.model)
|
||||
if not shrooms[loc] then
|
||||
shrooms[loc] = CreateObject(hash, v.location, false, true, true)
|
||||
Freeze(shrooms[loc], true, v.heading)
|
||||
AddSingleModel(shrooms[loc],{ icon = "fas fa-hand", label = Lang.targets.shrooms.pick, action = function() pick(loc) end }, loc )
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStop', function(resourceName)
|
||||
if GetCurrentResourceName() == resourceName then
|
||||
SetModelAsNoLongerNeeded(GetHashKey('mushroom'))
|
||||
for k, v in pairs(shrooms) do
|
||||
if DoesEntityExist(v) then
|
||||
DeleteEntity(v) SetEntityAsNoLongerNeeded(v)
|
||||
end
|
||||
local function EcstasyEffect()
|
||||
local startStamina = 50
|
||||
SetFlash(0, 0, 500, 20000, 500)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
startStamina = startStamina - 1
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
if math.random(1, 100) < 51 then
|
||||
SetFlash(0, 0, 500, 7000, 500)
|
||||
ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', 0.08)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('shrooms:removeCane', function(loc)
|
||||
if DoesEntityExist(shrooms[loc]) then DeleteEntity(shrooms[loc]) end
|
||||
shrooms[loc] = nil
|
||||
end)
|
||||
|
||||
RegisterNetEvent("shrooms:init", function()
|
||||
for k, v in pairs (GlobalState.shrooms) do
|
||||
local hash = GetHashKey(v.model)
|
||||
lib.requestModel(v.model, Config.RequestModelTime)
|
||||
if not v.taken then
|
||||
shrooms[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z, false, true, true)
|
||||
Freeze(shrooms[k], true, v.heading)
|
||||
AddSingleModel(shrooms[k],{ icon = "fas fa-hand", label = Lang.targets.shrooms.pick, action = function() pick(k) end }, k )
|
||||
end
|
||||
if IsPedRunning(PlayerPedId()) then
|
||||
SetPedToRagdoll(PlayerPedId(), math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
end)
|
||||
startStamina = 0
|
||||
end
|
||||
|
||||
RegisterNetEvent('md-drugs:client:takeshrooms', function()
|
||||
if not progressbar(Lang.Shrooms.eat, 500, 'eat') then return end
|
||||
TriggerEvent("evidence:client:SetStatus", "widepupils", 300)
|
||||
EcstasyEffect()
|
||||
end)
|
||||
ps.registerCallback("md-drugs:client:shrooms", function()
|
||||
if not ps.progressbar(ps.lang('shrooms.eat'), 5000, 'eat') then return end
|
||||
CreateThread(function()
|
||||
EcstasyEffect()
|
||||
end)
|
||||
return true
|
||||
end)
|
||||
@@ -1,23 +0,0 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local icon = "fa solid fa-eye"
|
||||
CreateThread(function()
|
||||
AddBoxZoneSingle('telecokein', Config.CokeTeleIn, {action = function()tele(Config.CokeTeleOut)end, icon = 'fa-solid fa-door-open', label = Lang.targets.coke.enter}) -- coke
|
||||
AddBoxZoneSingle('telecokeout', Config.CokeTeleOut, {action = function()tele(Config.CokeTeleIn) end, icon = "fa-solid fa-door-closed", label = Lang.targets.coke.exit}) -- coke
|
||||
AddBoxZoneMulti('makepowder', Config.MakePowder, {event = "md-drugs:client:makepowder", icon = "fa-solid fa-scissors", label = Lang.targets.coke.chop}) -- coke
|
||||
AddBoxZoneMulti('steallysergic', Config.lysergicacid, {event = "md-drugs:client:getlysergic", icon = icon, label = Lang.targets.lsd.lys}) -- lsd
|
||||
AddBoxZoneMulti('stealdiethylamide', Config.diethylamide, {event = "md-drugs:client:getdiethylamide", icon = icon, label = Lang.targets.lsd.die}) -- lsd
|
||||
AddBoxZoneMulti('gettabs', Config.gettabs, {event = "md-drugs:client:buytabs", icon = icon, label = Lang.targets.lsd.buyt}) -- lsd
|
||||
AddBoxZoneMulti('dryheroin', Config.dryplant, {event = "md-drugs:client:dryplant", icon = icon, label = Lang.targets.heroin.dry}) -- heroin
|
||||
AddBoxZoneMulti('cutheroin', Config.cutheroinone, {event = "md-drugs:client:cutheroin", icon = icon, label = Lang.targets.heroin.cut}) -- heroin
|
||||
AddBoxZoneMulti('fillneedle', Config.fillneedle, {event = "md-drugs:client:fillneedle", icon = icon, label = Lang.targets.heroin.fill}) -- heroin
|
||||
AddBoxZoneMulti('makecrack', Config.makecrack, {event = "md-drugs:client:makecrackone", icon = icon, label = Lang.targets.crack.cook}) -- crack
|
||||
AddBoxZoneMulti('bagcrack', Config.bagcrack, {event = "md-drugs:client:bagcrack", icon = icon, label = Lang.targets.crack.bag}) -- crack
|
||||
AddBoxZoneMulti('fillprescription', Config.FillPrescription, {event = "md-drugs:client:fillprescription", icon = icon, label = Lang.targets.pha.fill}) -- pharma
|
||||
AddBoxZoneSingle('payfortruck', Config.Payfortruck, {event = "md-drugs:client:GetOxyCar", icon = icon, label = Lang.targets.oxy.pay}) -- oxy runs
|
||||
AddBoxZoneSingle('drymescaline', Config.DryOut, {event = "md-drugs:client:drymescaline", icon = icon, label = Lang.targets.mescaline.dry}) -- mescaline
|
||||
AddBoxZoneMulti('stealisosafrole', Config.isosafrole, {event = "md-drugs:client:stealisosafrole", icon = icon, label = Lang.targets.xtc.iso}) -- xtc
|
||||
AddBoxZoneMulti('stealmdp2p', Config.mdp2p, {event = "md-drugs:client:stealmdp2p", icon = icon, label = Lang.targets.xtc.mdp}) -- xtc
|
||||
AddBoxZoneMulti('rawxtcloc', Config.rawxtcloc, {event = "md-drugs:client:makingrawxtc", icon = icon, label = Lang.targets.xtc.raw}) -- xtc
|
||||
AddBoxZoneSingle('buypress', Config.buypress, {event = "md-drugs:client:buypress", icon = icon, label = Lang.targets.xtc.press}) -- xtc
|
||||
AddBoxZoneMulti('stamp', Config.stamp, {event = "md-drugs:client:stampwhite", icon = icon, label = Lang.targets.xtc.stamp}) -- xtc
|
||||
end)
|
||||
@@ -1,15 +0,0 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
CreateThread(function()
|
||||
local current = "g_m_y_famdnf_01"
|
||||
lib.requestModel(current, Config.RequestModelTime)
|
||||
local num = lib.callback.await('md-drugs:server:GetMerchant', false)
|
||||
local CurrentLocation = Config.Travellingmerchant[num]
|
||||
local travellingmerchant = CreatePed(0, current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, CurrentLocation.w, false, false)
|
||||
Freeze(travellingmerchant, true, CurrentLocation.w)
|
||||
AddSingleModel(travellingmerchant, { label = Lang.targets.travel.travel, icon = "fas fa-eye",
|
||||
action = function()
|
||||
makeMenu('travellingMerchant')
|
||||
lib.showContext('travellingMerchant')
|
||||
end}, nil)
|
||||
end)
|
||||
+99
-170
@@ -1,130 +1,57 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local WeedPlant = {}
|
||||
local exploded, drying = false, false
|
||||
|
||||
local function hasJob()
|
||||
if Config.Joblock then
|
||||
if QBCore.Functions.GetPlayerData().job.name == Config.weedjob then
|
||||
return true else return false end
|
||||
else
|
||||
return true end
|
||||
end
|
||||
|
||||
RegisterNetEvent('weed:respawnCane', function(loc)
|
||||
local v = GlobalState.WeedPlant[loc]
|
||||
local hash = GetHashKey(v.model)
|
||||
if not HasModelLoaded(hash) then LoadModel(hash) end
|
||||
if not WeedPlant[loc] then
|
||||
WeedPlant[loc] = CreateObject(hash, v.location.x, v.location.y, v.location.z-3.5, false, true, true)
|
||||
Freeze(WeedPlant[loc],true, v.heading)
|
||||
AddSingleModel(WeedPlant[loc],
|
||||
{icon = "fas fa-hand",label = Lang.targets.weed.pick,
|
||||
action = function()if not progressbar(Lang.Weed.pick, 4000, 'uncuff') then return end TriggerServerEvent("weed:pickupCane", loc) end},
|
||||
loc)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('weed:removeCane', function(loc)
|
||||
if DoesEntityExist(WeedPlant[loc]) then DeleteEntity(WeedPlant[loc]) end
|
||||
WeedPlant[loc] = nil
|
||||
end)
|
||||
|
||||
RegisterNetEvent("weed:init", function()
|
||||
for k, v in pairs (GlobalState.WeedPlant) do
|
||||
local hash = GetHashKey(v.model)
|
||||
if not HasModelLoaded(hash) then LoadModel(hash) end
|
||||
if not v.taken then
|
||||
WeedPlant[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z-3.5, false, true, true)
|
||||
Freeze(WeedPlant[k],true, v.heading)
|
||||
AddSingleModel(WeedPlant[k],
|
||||
{icon = "fas fa-hand",label = Lang.targets.weed.pick,
|
||||
action = function()if not progressbar(Lang.Weed.pick, 4000, 'uncuff') then return end TriggerServerEvent("weed:pickupCane", k) end},
|
||||
k)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStop', function(resourceName)
|
||||
if GetCurrentResourceName() == resourceName then
|
||||
SetModelAsNoLongerNeeded(GetHashKey('bkr_prop_weed_lrg_01b'))
|
||||
for k, v in pairs(WeedPlant) do
|
||||
if DoesEntityExist(v) then
|
||||
DeleteEntity(v) SetEntityAsNoLongerNeeded(v)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
AddBoxZoneMulti('weeddry', Config.WeedDry, {
|
||||
name = 'dryweed',
|
||||
icon = "fas fa-sign-in-alt",
|
||||
label = Lang.targets.weed.dry,
|
||||
distance = 1,
|
||||
action = function()
|
||||
if not ItemCheck('wetcannabis') then return end
|
||||
if drying then
|
||||
Notify(Lang.Weed.busy, "error")
|
||||
else
|
||||
local locations = ps.callback('md-drugs:server:GetWeedLocs')
|
||||
for k, v in pairs (locations.WeedDry) do
|
||||
ps.boxTarget('weed_dry'..k, v.loc, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-cannabis',
|
||||
label = ps.lang('weed.targetDry'),
|
||||
action = function()
|
||||
if not ps.hasItem('wetcannabis', 1) then
|
||||
ps.notify(ps.lang('weed.nodry'), "error")
|
||||
return
|
||||
end
|
||||
if drying then return end
|
||||
local loc = GetEntityCoords(PlayerPedId())
|
||||
local weedplant = CreateObject("bkr_prop_weed_drying_01a", loc.x, loc.y+.2, loc.z, true, false)
|
||||
drying = true
|
||||
FreezeEntityPosition(weedplant, true)
|
||||
Notify(Lang.Weed.wait, "success")
|
||||
ps.notify(ps.lang('weed.wait'), "success")
|
||||
Wait(math.random(1000,5000))
|
||||
Notify(Lang.Weed.take, "success")
|
||||
AddSingleModel(weedplant, {
|
||||
icon = "fas fa-sign-in-alt",
|
||||
label = Lang.targets.weed.dpick,
|
||||
ps.notify(ps.lang('weed.take'), "success")
|
||||
ps.entityTarget(weedplant, {
|
||||
icon = "fa-solid fa-cannabis",
|
||||
label = ps.lang('weed.targetDryed'),
|
||||
action = function()
|
||||
DeleteEntity(weedplant)
|
||||
drying = false
|
||||
TriggerServerEvent('md-drugs:server:dryoutweed')
|
||||
end,
|
||||
canInteract = function()
|
||||
if hasJob() then return true end end
|
||||
}, nil)
|
||||
})
|
||||
end
|
||||
end,
|
||||
canInteract = function()
|
||||
if hasJob() then return true end end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
AddBoxZoneSingle('teleinweedout', Config.Teleout, { name = 'teleout', icon = "fas fa-sign-in-alt", label = Lang.targets.coke.exit, distance = 2.0, action = function() SetEntityCoords(PlayerPedId(),Config.Telein) end,
|
||||
canInteract = function() if hasJob() then return true end end
|
||||
})
|
||||
AddBoxZoneSingle('teleinweedin', Config.Telein, { name = 'teleout', icon = "fas fa-sign-in-alt", label = Lang.targets.coke.enter, distance = 2.0, action = function() SetEntityCoords(PlayerPedId(),Config.Teleout) end,
|
||||
canInteract = function() if hasJob() then return true end end
|
||||
})
|
||||
AddBoxZoneSingle('MakeButterCrafting', Config.MakeButter, {label = Lang.targets.weed.butt, action = function() lib.showContext('ButterCraft') end, icon = "fas fa-sign-in-alt",
|
||||
canInteract = function() if hasJob() then return true end end
|
||||
})
|
||||
|
||||
AddBoxZoneSingle('makeoil',Config.MakeOil, {
|
||||
name = 'Oil',
|
||||
icon = "fas fa-sign-in-alt",
|
||||
label = Lang.targets.weed.oil,
|
||||
action = function()
|
||||
if not ItemCheckMulti({'butane', 'grindedweed'}) then return end
|
||||
if not minigame() then
|
||||
local explosion = math.random(1,100)
|
||||
local loc = GetEntityCoords(PlayerPedId())
|
||||
if explosion <= 99 then
|
||||
AddExplosion(loc.x, loc.y, loc.z, 49, 10, true, false, true, true)
|
||||
exploded = true
|
||||
Notify(Lang.Weed.stovehot, "error")
|
||||
Wait(1000 * 30)
|
||||
exploded = false
|
||||
end
|
||||
return end
|
||||
if not progressbar(Lang.Weed.shat, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makeoil")
|
||||
end,
|
||||
canInteract = function()
|
||||
if hasJob() and exploded == false then return true end
|
||||
end,
|
||||
} )
|
||||
end)
|
||||
for k, v in pairs (locations.WeedTele) do
|
||||
ps.boxTarget('weed_tele'..k, v.inside, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-door-open',
|
||||
label = ps.lang('weed.teleportOut'),
|
||||
action = function()
|
||||
SetEntityCoords(PlayerPedId(), v.outside)
|
||||
end
|
||||
}
|
||||
})
|
||||
ps.boxTarget('weed_teleout'..k, v.outside, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-door-closed',
|
||||
label = ps.lang('weed.teleportIn'),
|
||||
action = function()
|
||||
SetEntityCoords(PlayerPedId(), v.inside)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
BikerWeedFarm = exports['bob74_ipl']:GetBikerWeedFarmObject()
|
||||
@@ -136,83 +63,85 @@ CreateThread(function()
|
||||
BikerWeedFarm.Plant4.Clear(false) BikerWeedFarm.Plant5.Clear(false) BikerWeedFarm.Plant6.Clear(false)
|
||||
BikerWeedFarm.Plant7.Clear(false) BikerWeedFarm.Plant8.Clear(false) BikerWeedFarm.Plant9.Clear(false)
|
||||
RefreshInterior(BikerWeedFarm.interiorId)
|
||||
local stove = CreateObject("prop_cooker_03",vector3(1045.49, -3198.46, -38.15-1), true, false)
|
||||
SetEntityHeading(stove, 270.00)
|
||||
FreezeEntityPosition(stove, true)
|
||||
local stove2 = CreateObject("prop_cooker_03",vector3(1038.90, -3198.66, -38.17-1), true, false)
|
||||
SetEntityHeading(stove2, 90.00)
|
||||
FreezeEntityPosition(stove2, true)
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:rollanim", function()
|
||||
if not progressbar(Lang.Weed.roll, 4000, 'uncuff') then return end
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:grind", function()
|
||||
if not progressbar("grinding", 4000, 'uncuff') then return end
|
||||
end)
|
||||
local function AlienEffect()
|
||||
StartScreenEffect("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
StartScreenEffect("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsMichaelAliensFightIn")
|
||||
StopScreenEffect("DrugsMichaelAliensFight")
|
||||
StopScreenEffect("DrugsMichaelAliensFightOut")
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:dodabs", function()
|
||||
if not progressbar('Doing Dabs', 4000, 'bong2') then return end
|
||||
AlienEffect()
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
local current = "u_m_m_jesus_01"
|
||||
lib.requestModel(current, Config.RequestModelTime)
|
||||
local CurrentLocation = Config.WeedSaleman
|
||||
local WeedGuy = CreatePed(0,current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, CurrentLocation.w, false, false)
|
||||
Freeze(WeedGuy, true, CurrentLocation.w)
|
||||
AddSingleModel(WeedGuy, {label = "Weed Shop",icon = "fas fa-eye", action = function() makeMenu('WeedShop') lib.showContext('WeedShop')end}, nil)
|
||||
if not ps.progressbar(ps.lang('weed.dabs'), 4000, 'bong2') then AlienEffect() return end
|
||||
end)
|
||||
|
||||
local function createBluntOptions(contextId, contextTitle, eventLabelPrefix, tableName)
|
||||
local options = {}
|
||||
local items = lib.callback.await('md-drugs:server:GetRecipe', false,'weed',tableName)
|
||||
local items = ps.callback('md-drugs:server:GetWeedRecipe', 'weed', tableName)
|
||||
for k, v in pairs(items) do
|
||||
local label = {}
|
||||
local item = ''
|
||||
for m, d in pairs(v.take) do table.insert(label, GetLabel(m) .. ' X ' .. d) end
|
||||
for m, d in pairs(v.take) do table.insert(label, ps.getLabel(m) .. ' X ' .. d) end
|
||||
for m, d in pairs(v.give) do item = m end
|
||||
options[#options + 1] = {
|
||||
icon = GetImage(item),
|
||||
icon = ps.getImage(item),
|
||||
description = table.concat(label, ", "),
|
||||
title = GetLabel(item),
|
||||
event = "md-drugs:client:MakeWeedItems",
|
||||
args = {
|
||||
item = item,
|
||||
recipe = 'weed',
|
||||
num = k,
|
||||
label = eventLabelPrefix .. GetLabel(item),
|
||||
table = tableName
|
||||
}
|
||||
title = ps.getLabel(item),
|
||||
action = function()
|
||||
if not minigame() then return end
|
||||
if not ps.progressbar(eventLabelPrefix .. ps.getLabel(item), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:MakeWeedItems', {item = item, recipe = 'weed', num = k, table = tableName})
|
||||
end
|
||||
}
|
||||
end
|
||||
sorter(options, 'title')
|
||||
lib.registerContext({
|
||||
id = contextId,
|
||||
title = contextTitle,
|
||||
options = options
|
||||
})
|
||||
ps.sorter(options, 'title')
|
||||
ps.menu(contextTitle, contextTitle, options)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
createBluntOptions('ButterCraft', "Edible Cooking", 'Cooking A ', 'edibles')
|
||||
createBluntOptions('mddrugsblunts', "Roll Blunts", 'Rolling A ', 'blunts')
|
||||
createBluntOptions('mddrugsbluntwraps', "Dipping Syrup", 'Dipping Syrup To Make ', 'bluntwrap')
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:MakeWeedItems", function(data)
|
||||
if not minigame() then return end
|
||||
if not progressbar('Making ' .. data.item, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:MakeWeedItems', data)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('md-drugs:client:makeBluntWrap', function(data)
|
||||
lib.showContext('mddrugsbluntwraps')
|
||||
createBluntOptions('mddrugsbluntwraps', "Dipping Syrup", ps.lang('weed.bluntWrap'), 'bluntwrap')
|
||||
end)
|
||||
|
||||
RegisterNetEvent('md-drugs:client:rollBlunt', function(data)
|
||||
lib.showContext('mddrugsblunts')
|
||||
createBluntOptions('mddrugsblunts', "Roll Blunts", ps.lang('weed.blunts'), 'blunts')
|
||||
end)
|
||||
|
||||
for k, v in pairs (locations.WeedSalesman) do
|
||||
ps.requestModel(v.ped)
|
||||
local ped = CreatePed(4, v.ped, v.loc.x, v.loc.y, v.loc.z - 1.0, v.loc.w, false, true)
|
||||
FreezeEntityPosition(ped, true)
|
||||
SetEntityInvincible(ped, true)
|
||||
SetBlockingOfNonTemporaryEvents(ped, true)
|
||||
ps.entityTarget(ped, {
|
||||
{
|
||||
icon = "fa-solid fa-cannabis",
|
||||
label = ps.lang('weed.targetSales'),
|
||||
action = function()
|
||||
local itemList = ps.callback('md-drugs:server:getWeedItems')
|
||||
local options = {}
|
||||
for m, d in pairs (itemList) do
|
||||
options[#options + 1] = {
|
||||
icon = ps.getImage(m),
|
||||
title = ps.getLabel(m),
|
||||
description = '$' .. d,
|
||||
action = function()
|
||||
local input = ps.input('Amount To Buy',{
|
||||
{type = 'number', title = 'How Many To Buy', min = 1, max = 1000}
|
||||
})
|
||||
if not input and input[1] then return end
|
||||
if not ps.progressbar(ps.lang('weed.buying', ps.getLabel(m)), 2000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:buyWeedItem', k, m, input[1])
|
||||
end
|
||||
}
|
||||
end
|
||||
ps.menu('Weed Shop', 'Weed Shop', options)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
+137
-54
@@ -1,70 +1,153 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local miss = false
|
||||
local settings = ps.callback('md-drugs:server:GetWSsettings')
|
||||
|
||||
function SetUpPeds(drugCount)
|
||||
local attackerCount = settings.WholesaleAmbushBase
|
||||
if settings.WholesaleAmbushScale then
|
||||
if drugCount > settings.WholesaleAmbushTier1 then
|
||||
attackerCount = 3
|
||||
end
|
||||
if drugCount > settings.WholesaleAmbushTier2 then
|
||||
attackerCount = 4
|
||||
end
|
||||
if drugCount > settings.WholesaleAmbushTier3 then
|
||||
attackerCount = 5
|
||||
end
|
||||
end
|
||||
local weaponTier = settings.WholesaleWeaponsTier1
|
||||
if settings.WholesaleWeaponTiers then
|
||||
if drugCount > settings.WholesaleAmbushTier3 then
|
||||
weaponTier = settings.WholesaleWeaponsTier4
|
||||
elseif drugCount > settings.WholesaleAmbushTier2 then
|
||||
weaponTier = settings.WholesaleWeaponsTier3
|
||||
elseif drugCount > settings.WholesaleAmbushTier1 then
|
||||
weaponTier = settings.WholesaleWeaponsTier2
|
||||
end
|
||||
end
|
||||
local playerPed = PlayerPedId()
|
||||
local playerCoords = GetEntityCoords(playerPed, false)
|
||||
local models = {"g_m_y_ballasout_01", "g_m_y_famdnf_01", "g_m_y_famca_01", "g_m_y_mexgoon_01", "g_m_y_salvagoon_01"}
|
||||
for i = 1, attackerCount do
|
||||
local angle = (360 / attackerCount) * i
|
||||
local x = playerCoords.x + math.cos(math.rad(angle)) * 15
|
||||
local y = playerCoords.y + math.sin(math.rad(angle)) * 15
|
||||
local z = playerCoords.z
|
||||
local modelHash = GetHashKey(models[math.random(1, #models)])
|
||||
ps.requestModel(modelHash)
|
||||
local ped = CreatePed(4, modelHash, x, y, z, 0.0, true, false)
|
||||
local weapon = weaponTier[math.random(1, #weaponTier)]
|
||||
SetPedRelationshipGroupHash(ped, GetHashKey("HATES_PLAYER"))
|
||||
SetPedCombatAttributes(ped, 46, true)
|
||||
SetPedCombatAttributes(ped, 0, true)
|
||||
SetPedCombatAttributes(ped, 5, true)
|
||||
SetPedCombatAttributes(ped, 2, true)
|
||||
local healthMultiplier = 1.0
|
||||
if drugCount > settings.WholesaleAmbushTier3 then
|
||||
healthMultiplier = 1.5
|
||||
elseif drugCount > settings.WholesaleAmbushTier2 then
|
||||
healthMultiplier = 1.3
|
||||
elseif drugCount > settings.WholesaleAmbushTier1 then
|
||||
healthMultiplier = 1.2
|
||||
end
|
||||
local baseHealth = GetEntityHealth(ped)
|
||||
SetEntityHealth(ped, math.floor(baseHealth * healthMultiplier))
|
||||
GiveWeaponToPed(ped, GetHashKey(weapon), 500, false, true)
|
||||
TaskCombatPed(ped, playerPed, 0, 16)
|
||||
local blip = AddBlipForEntity(ped)
|
||||
SetBlipAsShortRange(blip, true)
|
||||
SetBlipColour(blip, 1)
|
||||
SetBlipScale(blip, 0.7)
|
||||
SetEntityAsNoLongerNeeded(ped)
|
||||
end
|
||||
local tierName = "Basic"
|
||||
if drugCount > settings.WholesaleAmbushTier3 then
|
||||
tierName = "Elite"
|
||||
elseif drugCount > settings.WholesaleAmbushTier2 then
|
||||
tierName = "Advanced"
|
||||
elseif drugCount > settings.WholesaleAmbushTier1 then
|
||||
tierName = "Medium"
|
||||
end
|
||||
ps.notify(string.format(ps.lang('wholesale.ambush'), attackerCount, tierName), 'error')
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:client:GetLocation", function(drug, notify)
|
||||
if not GetCops(Config.PoliceCount) then return end
|
||||
if miss then
|
||||
Notify(Lang.Wholesale.al, 'error')
|
||||
else
|
||||
TriggerServerEvent('md-drugs:server:RemoveBurner', drug)
|
||||
Notify(notify, 'success')
|
||||
local CurrentLocation = Config.oxylocations[math.random(#Config.oxylocations)]
|
||||
local timer = 0
|
||||
miss = true
|
||||
SetNewWaypoint(CurrentLocation.x, CurrentLocation.y)
|
||||
lib.requestModel("g_m_y_famdnf_01", Config.RequestModelTime)
|
||||
local current = "g_m_y_famdnf_01"
|
||||
local drugdealer = CreatePed(0, current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, 90.0, false, false)
|
||||
RegisterNetEvent("md-drugs:client:GetLocation", function(drug)
|
||||
if not GetCops(settings.PoliceCount) then return end
|
||||
if miss then
|
||||
ps.notify(ps.lang('wholesale.alreadyWholesale'), 'error')
|
||||
else
|
||||
local loc = drug.location
|
||||
local timer = 0
|
||||
miss = true
|
||||
SetNewWaypoint(loc.x, loc.y)
|
||||
if settings.WholesaleShowEstimates and drug.count > 0 then
|
||||
local bonusTiers = math.floor(drug.count / 10)
|
||||
local potentialBonus = math.min(bonusTiers * settings.WholesaleQuantityBonus, settings.WholesaleMaxBonus)
|
||||
local bonusPercent = math.floor(potentialBonus * 100)
|
||||
local minPayout = math.floor(drug.price.min * (1 + potentialBonus))
|
||||
local maxPayout = math.floor(drug.price.max * (1 + potentialBonus))
|
||||
local totalMinPayout = drug.count * minPayout
|
||||
local totalMaxPayout = drug.count * maxPayout
|
||||
ps.notify(string.format(ps.lang('wholesale.count'), drug.count), 'info')
|
||||
if bonusPercent > 0 then
|
||||
ps.notify(string.format(ps.lang('wholesale.bonus'), bonusPercent), 'info')
|
||||
end
|
||||
ps.notify(string.format(ps.lang('wholesale.estimate'), totalMinPayout, totalMaxPayout), 'info')
|
||||
elseif drug.count <= 0 then
|
||||
ps.notify(ps.lang('wholesale.no_drugs'), 'error')
|
||||
end
|
||||
ps.requestModel("g_m_y_famdnf_01", settings.RequestModelTime)
|
||||
local current = "g_m_y_famdnf_01"
|
||||
local drugdealer = CreatePed(0, current,loc.x,loc.y,loc.z-1, 90.0, false, false)
|
||||
FreezeEntityPosition(drugdealer, true)
|
||||
SetEntityInvincible(drugdealer, true)
|
||||
AddSingleModel(drugdealer, {
|
||||
type = "client",
|
||||
label = Lang.Wholesale.talk,
|
||||
ps.entityTarget(drugdealer, {{
|
||||
label = ps.lang('wholesale.targetBuyer'),
|
||||
icon = "fas fa-eye",
|
||||
action = function()
|
||||
local luck = math.random(1,100)
|
||||
if luck >= Config.SuccessfulChance then
|
||||
TriggerEvent("md-drugs:client:SuccessSale", drug)
|
||||
if luck <= settings.SuccessfulChance then
|
||||
if not ps.progressbar(ps.lang('wholesale.wholesaling'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:SuccessSale", drug)
|
||||
else
|
||||
TriggerEvent("md-drugs:client:SetUp")
|
||||
ps.progressbar("Deal Going Bad", 4000, 'uncuff')
|
||||
if settings.WholesaleAmbushEnabled then
|
||||
SetUpPeds(drug.count)
|
||||
end
|
||||
if settings.WholesaleFailPoliceAlert > 0 then
|
||||
local alertChance = math.random(1, 100)
|
||||
if alertChance <= settings.WholesaleFailPoliceAlert then
|
||||
PoliceCall(100)
|
||||
end
|
||||
end
|
||||
TriggerServerEvent('md-drugs:server:CleanupWholesale')
|
||||
end
|
||||
Wait(3000)
|
||||
DeleteEntity(drugdealer)
|
||||
miss = false
|
||||
end,
|
||||
},nil )
|
||||
repeat
|
||||
Wait(1000)
|
||||
timer = timer + 1
|
||||
until #(GetEntityCoords(PlayerPedId()) - vector3(CurrentLocation.x, CurrentLocation.y, CurrentLocation.z) ) < 4.0 or timer == Config.WholesaleTimeout + 1
|
||||
PoliceCall(Config.AlertPoliceWholesale)
|
||||
if timer <= Config.WholesaleTimeout or #(GetEntityCoords(PlayerPedId()) - vector3(CurrentLocation.x, CurrentLocation.y, CurrentLocation.z) ) < 4.0 then
|
||||
timer = 0
|
||||
else
|
||||
Notify('The Buyer Waited To Long')
|
||||
DeleteEntity(drugdealer)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:SuccessSale", function(drug)
|
||||
if not progressbar("Wholesaling Drugs", 4000, 'uncuff') then return end
|
||||
if drug == 'coke' then
|
||||
TriggerServerEvent("md-drugs:server:wholesalecoke")
|
||||
elseif drug == 'crack' then
|
||||
TriggerServerEvent("md-drugs:server:wholesalecrack")
|
||||
elseif drug == 'lsd' then
|
||||
TriggerServerEvent("md-drugs:server:wholesalelsd")
|
||||
elseif drug == 'heroin' then
|
||||
TriggerServerEvent("md-drugs:server:wholesaleheroin")
|
||||
elseif drug == 'xtc' then
|
||||
TriggerEvent("md-drugs:client:wholesalextc")
|
||||
end
|
||||
}},drugdealer )
|
||||
repeat
|
||||
Wait(1000)
|
||||
timer = timer + 1
|
||||
until #(GetEntityCoords(PlayerPedId()) - vector3(loc.x, loc.y, loc.z) ) < 4.0 or timer == settings.WholesaleTimeout + 1
|
||||
PoliceCall(settings.AlertPoliceWholesale)
|
||||
if timer <= settings.WholesaleTimeout or #(GetEntityCoords(PlayerPedId()) - vector3(loc.x, loc.y, loc.z) ) < 4.0 then
|
||||
timer = 0
|
||||
else
|
||||
ps.notify(ps.lang('wholesale.tooLong'), 'error')
|
||||
DeleteEntity(drugdealer)
|
||||
TriggerServerEvent('md-drugs:server:CleanupWholesale')
|
||||
if settings.WholesaleResetOnTimeout then
|
||||
miss = false
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:SetUp", function()
|
||||
progressbar("YOU FUCKED NOW", 4000, 'uncuff')
|
||||
SetUpPeds()
|
||||
end)
|
||||
RegisterNetEvent('md-drugs:client:WholesaleComplete', function(data)
|
||||
local bonusText = ""
|
||||
if data.bonus > 0 then
|
||||
bonusText = " (+" .. data.bonus .. "% quantity bonus)"
|
||||
end
|
||||
ps.notify(string.format(ps.lang('wholesale.complete'), data.quantity, data.payout, bonusText), 'success')
|
||||
end)
|
||||
+182
-131
@@ -1,139 +1,190 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local xtcpress = false
|
||||
local locations = ps.callback('md-drugs:server:GetXtcLocs')
|
||||
|
||||
RegisterNetEvent("md-drugs:client:setpress", function(type)
|
||||
if xtcpress then
|
||||
Notify(Lang.xtc.out, 'error')
|
||||
else
|
||||
local coords, head = StartRay2()
|
||||
xtcpress = true
|
||||
progressbar('Setting Press On The Ground', 4000, 'uncuff')
|
||||
local press = CreateObject("bkr_prop_coke_press_01aa", coords.x, coords.y, coords.z, true, false, false)
|
||||
PlaceObjectOnGroundProperly(press)
|
||||
SetEntityHeading(press, head)
|
||||
local options = {
|
||||
{ icon = "fas fa-eye", label = Lang.targets.xtc.make, distance = 2.0, action = function() TriggerEvent("md-drugs:client:XTCMenu", type) end,
|
||||
canInteract = function() if xtcpress then return true end end
|
||||
},
|
||||
{icon = "fas fa-eye", label = Lang.targets.xtc.pick, action = function() TriggerEvent("md-drugs:client:GetPressBack", type, press) end, distance = 2.0,
|
||||
canInteract = function() if xtcpress then return true end end
|
||||
},
|
||||
}
|
||||
AddMultiModel(press, options, nil)
|
||||
local function getRecipeList(tbl)
|
||||
local rec = {}
|
||||
for m, d in pairs(tbl) do table.insert(rec, ps.getLabel(m) .. ' X ' .. d) end
|
||||
return table.concat(rec, ', ')
|
||||
end
|
||||
|
||||
ps.registerCallback('md-drugs:client:setpress', function(xtcData)
|
||||
if xtcpress then
|
||||
ps.notify(ps.lang('xtc.alreadyOut'), 'error')
|
||||
return
|
||||
end
|
||||
local coords, head = StartRay2()
|
||||
xtcpress = true
|
||||
if not ps.progressbar(ps.lang('xtc.settingDown'), 4000, 'uncuff') then return end
|
||||
local press = CreateObject("bkr_prop_coke_press_01aa", coords.x, coords.y, coords.z, true, false, false)
|
||||
PlaceObjectOnGroundProperly(press)
|
||||
Freeze(press, true, head)
|
||||
local options = {
|
||||
{
|
||||
icon = "fas fa-eye",
|
||||
label = ps.lang('xtc.targetMake'),
|
||||
distance = 2.0,
|
||||
action = function()
|
||||
local options = {}
|
||||
for k, v in pairs(xtcData.recipes) do
|
||||
local descript = getRecipeList(v.take)
|
||||
options[#options + 1] = {
|
||||
icon = ps.getImage(k),
|
||||
title = ps.getLabel(k),
|
||||
description = descript,
|
||||
action = function()
|
||||
if not minigame() then ps.notify(ps.lang('xtc.fail'), "error") return end
|
||||
if not ps.progressbar(ps.lang('xtc.making', ps.getLabel(k)), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makextc", k)
|
||||
end,
|
||||
distance = 2.0
|
||||
}
|
||||
end
|
||||
ps.menu('XTC Recipes', 'XTC Recipes', options)
|
||||
end,
|
||||
canInteract = function()
|
||||
if xtcpress then return true end
|
||||
end
|
||||
},
|
||||
{
|
||||
icon = "fas fa-eye",
|
||||
label = ps.lang('xtc.targetPickup'),
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('xtc.picking'), 5000, 'uncuff') then return end
|
||||
DeleteObject(press)
|
||||
xtcpress = false
|
||||
TriggerServerEvent("md-drugs:server:getpressback")
|
||||
end,
|
||||
canInteract = function()
|
||||
if xtcpress then return true end
|
||||
end
|
||||
},
|
||||
}
|
||||
ps.entityTarget(press, options)
|
||||
return true
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:XTCMenu", function(type)
|
||||
local event = "md-drugs:client:MakeXTC"
|
||||
lib.registerContext({
|
||||
id = 'XTCmenu',
|
||||
title = 'XTC Menu',
|
||||
options = {
|
||||
{icon = GetImage('white_xtc'), title = 'White XTC', description = '1 X Raw XTC', event = event, args = { data = type, color = 'white'}},
|
||||
{icon = GetImage('red_xtc'), title = 'Red XTC', description = '1 X Raw XTC and 1 X Loose Coke', event = event, args = { data = type, color = 'red'}},
|
||||
{icon = GetImage('orange_xtc'), title = 'Orange XTC', description = '1 X Raw XTC and 1 X Heroin Vial', event = event, args = { data = type, color = 'orange'}},
|
||||
{icon = GetImage('blue_xtc'), title = 'Blue XTC', description = '1 X Raw XTC and 1 X Crack Rock', event = event, args = { data = type, color = 'blue'}},
|
||||
for k, v in pairs(locations.mdp2p) do
|
||||
ps.boxTarget('mdp2p'..k, v.loc, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-flask',
|
||||
label = ps.lang('xtc.targetStealMDP2P'),
|
||||
action = function()
|
||||
if not minigame() then ps.notify(ps.lang('xtc.fail'), "error") return end
|
||||
if not ps.progressbar(ps.lang('xtc.stealingMDP2P'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stealmdp2p", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
lib.showContext('XTCmenu')
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:GetPressBack", function(type, press)
|
||||
if not progressbar(Lang.xtc.pickup, 5000, 'uncuff') then return end
|
||||
DeleteObject(press)
|
||||
xtcpress = false
|
||||
TriggerServerEvent("md-drugs:server:getpressback", type)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:stealisosafrole", function(data)
|
||||
if not minigame() then Notify(Lang.xtc.fail, "error") return end
|
||||
if not progressbar(Lang.xtc.iso, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stealisosafrole",data.data)
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:stealmdp2p", function(data)
|
||||
if not minigame() then Notify(Lang.xtc.fail, "error") return end
|
||||
if not progressbar(Lang.xtc.mdp2p, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stealmdp2p", data.data)
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:makingrawxtc", function(data)
|
||||
if not ItemCheck('isosafrole') then return end
|
||||
if not ItemCheck('mdp2p') then return end
|
||||
if not progressbar(Lang.xtc.raw, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makingrawxtc",data.data)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:MakeXTC", function(data)
|
||||
if not ItemCheck('raw_xtc') then return end
|
||||
if not progressbar(Lang.xtc.pressing, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makextc",data)
|
||||
end)
|
||||
|
||||
------------------------------------------------------------------ Stamping
|
||||
|
||||
RegisterNetEvent("md-drugs:client:stampwhite", function(data)
|
||||
lib.registerContext({ id = 'stampxtc', title = 'Stamp XTC Menu',
|
||||
options = {
|
||||
{ icon = GetImage('white_xtc'), title = 'White XTC',
|
||||
onSelect = function()
|
||||
if not minigame() then Notify(Lang.xtc.fail, "error") return end
|
||||
if not progressbar(string.format(Lang.xtc.stamp, 'White'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stampwhite",data.data)
|
||||
end
|
||||
},
|
||||
{ icon = GetImage('red_xtc'), title = 'Red XTC',
|
||||
onSelect = function()
|
||||
if not minigame() then Notify(Lang.xtc.fail, "error") return end
|
||||
if not progressbar(string.format(Lang.xtc.stamp, 'Red'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stampred", data.data)
|
||||
end
|
||||
},
|
||||
{ icon = GetImage('orange_xtc'), title = 'Orange XTC',
|
||||
onSelect = function()
|
||||
if not minigame() then Notify(Lang.xtc.fail, "error") return end
|
||||
if not progressbar(string.format(Lang.xtc.stamp, 'Orange'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stamporange", data.data)
|
||||
end,
|
||||
},
|
||||
{ icon = GetImage('blue_xtc'), title = 'Blue XTC',
|
||||
onSelect = function()
|
||||
if not minigame() then Notify(Lang.xtc.fail, "error") return end
|
||||
if not progressbar(string.format(Lang.xtc.stamp, 'Blue'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stampblue", data.data)
|
||||
end
|
||||
},
|
||||
}
|
||||
})
|
||||
lib.showContext('stampxtc')
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:getsinglepress", function()
|
||||
if not progressbar(Lang.xtc.buyp, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:buypress")
|
||||
end)
|
||||
|
||||
|
||||
RegisterNetEvent("md-drugs:client:exchangepresses", function(data)
|
||||
if not progressbar(Lang.xtc.buyp, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:upgradepress", data.data)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:client:buypress", function()
|
||||
local img = GetImage('singlepress')
|
||||
lib.registerContext({
|
||||
id = 'buypresses',
|
||||
title = 'Purchase Presses',
|
||||
options = {
|
||||
{title = Lang.xtc.press.title.single, description = Lang.xtc.des.title.single, icon = img, event = 'md-drugs:client:getsinglepress'},
|
||||
{title = Lang.xtc.press.title.dual, description = Lang.xtc.des.title.dual, icon = img, event = 'md-drugs:client:exchangepresses', args = {data = 'dual'}},
|
||||
{title = Lang.xtc.press.title.triple, description = Lang.xtc.des.title.triple, icon = img, event = 'md-drugs:client:exchangepresses', args = {data = 'triple'}},
|
||||
{title = Lang.xtc.press.title.quad, description = Lang.xtc.des.title.quad, icon = img, event = 'md-drugs:client:exchangepresses', args = {data = 'quad'}}
|
||||
}
|
||||
})
|
||||
lib.showContext('buypresses')
|
||||
end)
|
||||
end
|
||||
for k, v in pairs(locations.isosafrole) do
|
||||
ps.boxTarget('isosafrole'..k, v.loc, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-flask',
|
||||
label = ps.lang('xtc.targetStealIsosafrole'),
|
||||
action = function()
|
||||
if not minigame() then ps.notify(ps.lang('xtc.fail'), "error") return end
|
||||
if not ps.progressbar(ps.lang('xtc.stealingIsosafrole'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stealisosafrole", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs(locations.rawxtcloc) do
|
||||
ps.boxTarget('xtcraw'..k, v.loc, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-flask',
|
||||
label = ps.lang('xtc.targetRaw'),
|
||||
action = function()
|
||||
if not minigame() then ps.notify(ps.lang('xtc.fail'), "error") return end
|
||||
if not ps.progressbar(ps.lang('xtc.makingRaw'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:makingrawxtc", k)
|
||||
end,
|
||||
canInteract = function()
|
||||
return handleGang(v.gang)
|
||||
end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs(locations.xtcpress) do
|
||||
ps.requestModel(v.ped)
|
||||
local ped = CreatePed(0, v.ped, v.loc, false, false)
|
||||
Freeze(ped, true, v.loc.w)
|
||||
ps.entityTarget(ped, {
|
||||
{
|
||||
icon = 'fa-solid fa-flask',
|
||||
label = ps.lang('xtc.getPress'),
|
||||
action = function()
|
||||
local options = {}
|
||||
local recipeList = ps.callback('md-drugs:server:getpressrecipes')
|
||||
for m, d in pairs(recipeList) do
|
||||
if m == 'singlepress' then
|
||||
options[#options + 1] = {
|
||||
icon = ps.getImage(m),
|
||||
title = ps.getLabel(m),
|
||||
description = ps.lang('xtc.buySingle', d.cash),
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('xtc.buyp'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent('md-drugs:server:buypress',k, m)
|
||||
end,
|
||||
}
|
||||
else
|
||||
local descript = getRecipeList(d.take)
|
||||
options[#options + 1] = {
|
||||
icon = ps.getImage(m),
|
||||
title = ps.getLabel(m),
|
||||
description = descript,
|
||||
action = function()
|
||||
if not ps.progressbar(ps.lang('xtc.buyp'), 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:upgradepress", k, m)
|
||||
end,
|
||||
distance = 2.0
|
||||
}
|
||||
end
|
||||
end
|
||||
ps.menu('XTC Presses', 'XTC Presses', options)
|
||||
end,
|
||||
canInteract = function() return handleGang(v.gang) end
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs (locations.stamp) do
|
||||
ps.boxTarget('xtcstamp'..k, v.loc, {length = v.l, width = v.w, heading = v.rot}, {
|
||||
{
|
||||
icon = 'fa-solid fa-flask',
|
||||
label = ps.lang('xtc.targetStamp'),
|
||||
action = function()
|
||||
local item = {
|
||||
{item = 'white_xtc', label = ps.getLabel('white_xtc'), color = 'white'},
|
||||
{item = 'red_xtc', label = ps.getLabel('red_xtc'), color = 'red'},
|
||||
{item = 'orange_xtc', label = ps.getLabel('orange_xtc'), color = 'orange'},
|
||||
{item = 'blue_xtc', label = ps.getLabel('blue_xtc'), color = 'blue'},
|
||||
}
|
||||
local options = {}
|
||||
for m, d in pairs (item) do
|
||||
options[#options + 1] = {
|
||||
icon = ps.getImage(d.item),
|
||||
title = d.label,
|
||||
description = ps.lang('xtc.stamp_desc', d.color),
|
||||
action = function()
|
||||
if not minigame() then ps.notify(ps.lang('xtc.fail'), "error") return end
|
||||
if not ps.progressbar(ps.lang('xtc.stamping'), d.label, 4000, 'uncuff') then return end
|
||||
TriggerServerEvent("md-drugs:server:stamp", k, d.color)
|
||||
end,
|
||||
distance = 2.0
|
||||
}
|
||||
end
|
||||
ps.menu('Stamp Pills', 'Stamp Pills', options)
|
||||
end,
|
||||
canInteract = function() return handleGang(v.gang) end
|
||||
}
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,27 @@
|
||||
function loadFile(filePath)
|
||||
local resourceName = 'md-drugs'
|
||||
local fullScript = LoadResourceFile(resourceName, filePath)
|
||||
if not fullScript then
|
||||
ps.error("Error: Failed to load module '" .. filePath .. "' from resource '" .. resourceName .. "'.")
|
||||
return false
|
||||
end
|
||||
local chunk, err = load(fullScript, filePath, "t")
|
||||
if not chunk then
|
||||
ps.error("Error loading Lua chunk from '" .. filePath .. "': " .. tostring(err))
|
||||
return false
|
||||
end
|
||||
|
||||
local success, execErr = pcall(chunk)
|
||||
if not success then
|
||||
ps.error("Error executing Lua chunk from '" .. filePath .. "': " .. tostring(execErr))
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
for scriptName, toggle in pairs(Config.Drugs) do
|
||||
if not toggle then goto continue end
|
||||
loadFile('client/' .. scriptName .. '.lua')
|
||||
::continue::
|
||||
end
|
||||
+10
-12
@@ -3,30 +3,28 @@ author "mustache_dom"
|
||||
description "drugs by mustache dom"
|
||||
fx_version "cerulean"
|
||||
game "gta5"
|
||||
version '3.8.0'
|
||||
version '4.0.0'
|
||||
client_scripts {
|
||||
'client/**.lua',
|
||||
'client/functions.lua',
|
||||
'client/plantSpawns.lua',
|
||||
'clientRun.lua',
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
'server/**.lua',
|
||||
'server/functions.lua',
|
||||
'server/plantSpawns.lua',
|
||||
'serverRun.lua',
|
||||
'@oxmysql/lib/MySQL.lua',
|
||||
|
||||
}
|
||||
|
||||
shared_scripts {
|
||||
'@ox_lib/init.lua',
|
||||
'shared/**.lua',
|
||||
|
||||
}
|
||||
|
||||
|
||||
lua54 'yes'
|
||||
|
||||
|
||||
dependency 'bob74_ipl'
|
||||
files {
|
||||
'stream/mushroom.ytyp'
|
||||
'client/**.lua',
|
||||
'server/**.lua',
|
||||
'locales/**.lua'
|
||||
}
|
||||
|
||||
data_file 'DLC_ITYP_REQUEST' 'stream/mushroom.ytyp'
|
||||
+297
@@ -0,0 +1,297 @@
|
||||
Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
|
||||
This is a human-readable summary of (and not a substitute for) the license. Disclaimer.
|
||||
|
||||
You are free to:
|
||||
|
||||
Share — copy and redistribute the material in any medium or format Adapt — remix, transform, and build upon the material
|
||||
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms: Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
|
||||
|
||||
NonCommercial — You may not use the material for commercial purposes.
|
||||
|
||||
ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices: You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation. No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
|
||||
|
||||
k. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
|
||||
|
||||
l. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
|
||||
|
||||
m. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||
|
||||
n. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part, for NonCommercial purposes only; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material for
|
||||
NonCommercial purposes only.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties, including when
|
||||
the Licensed Material is used other than for NonCommercial
|
||||
purposes.
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-NC-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;
|
||||
|
||||
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
+262
@@ -0,0 +1,262 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Yo! You ain’t in the right SPOT, let’s gooooo!',
|
||||
needItems = 'Whoa! You’re missing the ESSENTIALS, come on!',
|
||||
notEnoughMoney = 'Uh-oh! Not enough CASH, gotta grind!',
|
||||
buySuccess = 'BOOM! You copped %s %s for $%s, YEAH!',
|
||||
itemMissings = 'CHECK IT! You need: \n',
|
||||
itemNeeded = 'Grab that %s, LET’S GOOOO!',
|
||||
cooldown = 'Hold up! Chill for a sec, speed racer!',
|
||||
invalidItem = 'Uh-uh! That ain’t sold HERE, fam!',
|
||||
onCooldownWarn = '%s tried to run %s but cooldown, BOOM!',
|
||||
noCops = 'Not enough COPS online, can’t roll out!',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'GRAB that coca leaf, LET’S GO!',
|
||||
picking = 'Snatching those leaves, wooo!',
|
||||
targetMakePow = 'Turn it into POWDER, party time!',
|
||||
noleaf = 'Need a leaf first, LET’S HUSTLE!',
|
||||
makePow = 'Choppin’ leaves into POWER, YA!',
|
||||
targetCutCoke = 'Slice that cocaine, woohoo!',
|
||||
targetBagCoke = 'Bag it UP, fam!',
|
||||
teleIn = 'Step into the LAB, LIGHT IT UP!',
|
||||
teleOut = 'Exit the lab, keep it moving!',
|
||||
needBakingSoda = 'Baking soda NEEDED, come on!',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Yo, stranger alert! Stay safe!',
|
||||
selling = 'Flippin’ %s for $%s, CASH TIME!',
|
||||
deny = 'NAH, PASS THAT OFFER!',
|
||||
wait = 'Hold tight, waiting on the crowd!',
|
||||
nodrugs = 'No stock? Get back in the game!',
|
||||
searching = 'Scanning for buyers, keep it HYPE!',
|
||||
targetTakeBack = 'Grab back the goods, LET’S GO!',
|
||||
targetSell = 'Sell %s of %s for $%s, PARTY!',
|
||||
targetDeny = 'Decline that weak offer!',
|
||||
stopped = 'You ain’t selling? COME ON!',
|
||||
start = 'GO show your moves, LEGEND!',
|
||||
gotRobbed = 'Yo, you got JACKED!',
|
||||
gotBack = 'Reclaimed the goods, YEAH!',
|
||||
notEnough = 'Not enough stock, HUSTLE UP!',
|
||||
comDes = 'Sell that heat on the corner, LET’S GO!',
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cook that crack, turn it UP!',
|
||||
cook = 'Heating it up, PARTY MODE!',
|
||||
targetBag = 'Bag it tight, woohoo!',
|
||||
bag = 'Packing it like a BOSS!',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Grab a delivery mission, LET’S GO!',
|
||||
targetOpenShop = 'Open that dealer shop, LIGHT IT UP!',
|
||||
shopHeader = 'Dealer Shop, TIME TO SHINE!',
|
||||
targetHandOff = 'Hand off the package, PARTY TIME!',
|
||||
delivering = 'Delivering to the dealer, let’s get it!',
|
||||
alreadyDelivering = 'Already moving that package, nonstop!',
|
||||
slowAf = 'TOO SLOW! PICK IT UP!',
|
||||
newDealerHelp = {
|
||||
help = 'Place a dealer, LIGHT IT UP!',
|
||||
name = 'Dealer name, YO!',
|
||||
timeMin = 'Min time, stay hyped!',
|
||||
timeMax = 'Max time, keep moving!',
|
||||
},
|
||||
DealerExists = 'Dealer already in the house, BOOM!',
|
||||
deleteDealer = {
|
||||
help = 'Remove a dealer, let’s GOO!',
|
||||
name = 'Dealer name, YEAH!',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer deleted, PARTY ON!',
|
||||
deleteDealerFail = 'Failed? Try again, NEVER STOP!',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Grab that heroin, LIGHT IT UP!',
|
||||
picking = 'Picking heroin, GET IT!',
|
||||
targetCook = 'Cook it up, TURN IT UP!',
|
||||
pbCook = 'Cooking that fire, WOO!',
|
||||
targetPickup = 'Pick up the lab, LET’S GO!',
|
||||
pbPickup = 'Picking up the lab, HYPE!',
|
||||
targetClean = 'Clean that lab, SHINE!',
|
||||
pbClean = 'Cleaning the lab, YEAH!',
|
||||
targetDry = 'Dry out the plant, KEEP IT MOVIN’!',
|
||||
pbDry = 'Drying plant, PARTY MODE!',
|
||||
targetCutHeroin = 'Cut that heroin, BOOM!',
|
||||
pbCutHeroin = 'Cutting it smooth, YEAH!',
|
||||
targetBuyKit = 'Buy your lab kit, GET IT!',
|
||||
pbBuyKit = 'Buying that kit, HYPE!',
|
||||
tableout = 'Table’s already out, LIGHT IT UP!',
|
||||
placing = 'Placing table down, WOO!',
|
||||
targetFill = 'Fill that syringe, LET’S GOOOO!',
|
||||
pbFill = 'Filling up, HYPE ENERGY!',
|
||||
hasKitAlready = 'Kit already in play, BOOM!',
|
||||
notEnoughMoney = 'Need $%s cash, hustle up!',
|
||||
placedKit = 'Placed your lab kit, PARTY TIME!',
|
||||
failed = 'Failed? Shake it off, KEEP MOVIN’!',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Snag the truck, GET HYPED!',
|
||||
startMission = 'Start lean mission, LET’S GO!',
|
||||
notOnRun = 'Not on a run yet, COME ON!',
|
||||
alreadyChasing = 'Already chasing a truck, WOO!',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Heating LSD, TURN IT UP!',
|
||||
heating = 'Heating it UP, PARTY TIME!',
|
||||
targetRefine = 'Refine that acid, LET’S GOOOO!',
|
||||
refining = 'Refining, keep it lit!',
|
||||
targetDipping = 'Dip those tabs, HYPE!',
|
||||
dipping = 'Dipping, WOO WOO!',
|
||||
targetPickup = 'Pick up the lab kit, LET’S GO!',
|
||||
packup = 'Packing up, PARTY MODE!',
|
||||
targetClean = 'Clean the lab kit, LIGHT IT UP!',
|
||||
needCleaning = 'Need the cleaning kit, COME ON!',
|
||||
cleaning = 'Cleaning, keep it hype!',
|
||||
targetLys = 'Steal lysergic acid, BOOM!',
|
||||
stealLys = 'Stealing, GET IT!',
|
||||
targetDie = 'Snag diethylamide, PARTY TIME!',
|
||||
stealDie = 'Stealing that fire, LET’S GOOOO!',
|
||||
targetBuyTab = 'Buy tab paper, WOO!',
|
||||
targetBuyKit = 'Buy LSD lab kit, HYPE ENERGY!',
|
||||
alreadyOwn = 'Already got this, BOOM!',
|
||||
buyingKit = 'Buying kit, PARTY ON!',
|
||||
tableout = 'Table out already, LET’S GO!',
|
||||
placing = 'Placing down, KEEP IT LIT!',
|
||||
failed = 'Failed? Shake it off, PARTY TIME!',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Grab that cactus, WOO!',
|
||||
picking = 'Picking cactus, LET’S GOOOO!',
|
||||
targetDry = 'Dry the cactus, HYPE!',
|
||||
dry = 'Drying cactus, PARTY MODE!',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Chasing a truck already, WOO!',
|
||||
targetStealFromCar = 'Snag the meth car, LIGHT IT UP!',
|
||||
targetHeist = 'Start meth mission, GET HYPED!',
|
||||
started = 'Meth’s cooking, BOOM!',
|
||||
increaseHeat = 'Turn up the heat, PARTY TIME!',
|
||||
targetBag = 'Bag meth, HYPE ENERGY!',
|
||||
targetCook = 'Cook meth, LET’S GOOOO!',
|
||||
targetGrabTray = 'Grab the tray, WOO!',
|
||||
targetHeat = 'Adjust those dials, KEEP IT LIT!',
|
||||
targetSmash = 'Smash the tray, BOOM!',
|
||||
targetStealEPH = 'Steal ephedrine, GET IT!',
|
||||
stealingEPH = 'Stealing it, PARTY ON!',
|
||||
targetStealACE = 'Snag acetone, WOO!',
|
||||
stealingACE = 'Stealing acetone, LET’S GOOOO!',
|
||||
notOnRun = 'Not on a meth run, COME ON!',
|
||||
onCooldown = 'Cooldown in effect, CHILL!',
|
||||
teleIn = 'Step into the lab, HYPE!',
|
||||
teleOut = 'Exit the lab, PARTY MODE!',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Hot van? Leave it, WOO!',
|
||||
targetHandoff = 'Hand off the package, LET’S GO!',
|
||||
handingoff = 'Handing it off, HYPE ENERGY!',
|
||||
emptyHands = 'Not carrying anything, GET MOVING!',
|
||||
targetPay = 'Rent oxy van, PARTY TIME!',
|
||||
keys = 'Keys are in the van, BOOM!',
|
||||
targetGetPackage = 'Grab the package, WOO!',
|
||||
alreadyCarrying = 'Already got a package, KEEP IT LIT!',
|
||||
paid = 'Paid $%s, LET’S GOOOO!',
|
||||
notOn = 'Not on a route, HYPE!',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Who’s getting the prescription? LET’S GO!',
|
||||
title1 = 'Player name, GET HYPED!',
|
||||
title2 = 'Prescription, PARTY TIME!',
|
||||
},
|
||||
write = 'Writing prescription, WOO!',
|
||||
opening = 'Opening the bottle, LIGHT IT UP!',
|
||||
targetFill = 'Fill that prescription, HYPE!',
|
||||
fill = 'Filling up, LET’S GOOOO!',
|
||||
canceled = 'Canceled? Shake it off, PARTY MODE!',
|
||||
unbottle = 'Opened the bottle, BOOM!',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Pick those shrooms, WOO!',
|
||||
picking = 'Picking shrooms, LET’S GOOOO!',
|
||||
eat = 'Eating shrooms, PARTY TIME!',
|
||||
cancel = 'Decided not to? HYPE!',
|
||||
took = 'You took some shrooms! LET’S GO!',
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Grab that weed, WOO!',
|
||||
picking = 'Picking weed, PARTY MODE!',
|
||||
targetDry = 'Dry the weed, LET’S GOOOO!',
|
||||
noDry = 'Need wet weed first, HYPE ENERGY!',
|
||||
wait = 'Waiting for it to dry... KEEP IT LIT!',
|
||||
take = 'Ready to take weed, BOOM!',
|
||||
targetDryed = 'Pickup that weed, PARTY TIME!',
|
||||
teleportIn = 'Enter the grow house, HYPE!',
|
||||
teleportOut = 'Leave the grow house, WOO!',
|
||||
dabs = 'Doing some dabs, LET’S GOOOO!',
|
||||
bluntWrap = 'Dipping syrup to make %s, PARTY MODE!',
|
||||
rollBlunt = 'Rolling a %s, BOOM!',
|
||||
targetSales = 'Buy from dealer, HYPE!',
|
||||
buying = 'Buying %s from dealer, WOO!',
|
||||
itemDoesntExist = 'Item doesn’t exist here, LET’S GO!',
|
||||
needItem = 'Need a %s for this, PARTY TIME!',
|
||||
crackBlunt = 'Cracking open a blunt, HYPE ENERGY!',
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Already wholesaling, WOO!',
|
||||
targetBuyer = 'Talk to the buyer, LET’S GOOOO!',
|
||||
wholesaling = 'Wholesaling drugs, PARTY MODE!',
|
||||
uhoh = 'Buyer’s getting sketchy, HYPE!',
|
||||
tooLong = 'Buyer waited too long, WOO!',
|
||||
notEnoughCops = 'Not enough cops, KEEP IT LIT!',
|
||||
count = 'Quantity detected: %s, BOOM!',
|
||||
bonus = 'Quantity bonus: +%s%%, HYPE!',
|
||||
estimate = 'Estimated payout: $%s - $%s, PARTY TIME!',
|
||||
no_drugs = 'No drugs to sell, LET’S GOOOO!',
|
||||
ambush = 'AMBUSH! %s attackers with %s weapons coming! WOO!',
|
||||
complete = 'Sold %s items for $%s%s, HYPE!',
|
||||
min_quantity = 'Gotta sell at least %s to wholesale, PARTY MODE!',
|
||||
deal_failed_cleanup = 'Deal failed? Try again, KEEP IT LIT!',
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Press is out already, WOO!',
|
||||
settingDown = 'Setting down the press, LET’S GO!',
|
||||
noPressOut = 'No press out? HYPE!',
|
||||
targetMake = 'Press pills, PARTY TIME!',
|
||||
making = 'Pressing a %s, BOOM!',
|
||||
targetPickup = 'Pick up press, HYPE!',
|
||||
picking = 'Picking up press, LET’S GOOOO!',
|
||||
targetStealMDP2P = 'Steal MDP2P, PARTY MODE!',
|
||||
stealingMDP2P = 'Stealing it, WOO!',
|
||||
fail = 'Damn dude, you suck, KEEP IT LIT!',
|
||||
targetStealIsosafrole = 'Steal isosafrole, HYPE!',
|
||||
stealingIsosafrole = 'Stealing it, LET’S GOOOO!',
|
||||
targetRaw = 'Make raw XTC, PARTY TIME!',
|
||||
makingRaw = 'Making raw XTC, WOO!',
|
||||
getPress = 'Get the press, LET’S GOOOO!',
|
||||
buySingle = 'Buy single press for $%s, HYPE!',
|
||||
buyp = 'Buying press, BOOM!',
|
||||
targetStamp = 'Stamp XTC, PARTY MODE!',
|
||||
stamp_desc = 'Stamp %s pills, WOO!',
|
||||
stamping = 'Stamping %s pills, LET’S GO!',
|
||||
noPills = 'No unstamped pills? HYPE!',
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Open merchant menu, LET’S GOOOO!',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Nejste na správném místě',
|
||||
needItems = 'Nemáte potřebné předměty',
|
||||
notEnoughMoney = 'Jste příliš chudí',
|
||||
buySuccess = 'Koupili jste %s %s za $%s',
|
||||
itemMissings = 'Potřebujete \n',
|
||||
itemNeeded = 'Potřebujete %s',
|
||||
cooldown = 'Zpomalte, rychlíku',
|
||||
invalidItem = 'Tento předmět zde není k prodeji',
|
||||
onCooldownWarn = '%s se pokusil spustit událost %s \n během cooldownu',
|
||||
noCops = 'Není dostatek policistů online',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Sbírat listy koky',
|
||||
picking = 'Sbírání listů koky',
|
||||
targetMakePow = 'Vyrobit kokainový prášek',
|
||||
noleaf = 'Potřebujete list koky',
|
||||
makePow = 'Drcení listů na prášek',
|
||||
targetCutCoke = 'Řezat kokain',
|
||||
targetBagCoke = 'Balicí kokain',
|
||||
teleIn = 'Vstoupit do laboratoře',
|
||||
teleOut = 'Opustit laboratoř',
|
||||
needBakingSoda = 'Potřebujete jedlou sodu pro tuto akci',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Nebezpečí od cizinců!',
|
||||
selling = 'Prodávání %s za $%s',
|
||||
deny = 'Sakra, tohle nabídka ne!',
|
||||
wait = 'Čekání na zákazníka',
|
||||
nodrugs = 'Nemáte žádné drogy na prodej',
|
||||
searching = 'Hledání zákazníků v okolí',
|
||||
targetTakeBack = 'Vzít zpět drogy',
|
||||
targetSell = 'Prodat %s z %s za $%s',
|
||||
targetDeny = 'Odmítnout nabídku',
|
||||
stopped = 'Vaše líné zadky ani neumí prodávat drogy!',
|
||||
start = 'Jděte udělat svou mámu pyšnou',
|
||||
gotRobbed = 'Dostali jste se okradeni, frajere!',
|
||||
gotBack = 'Dostali jste své věci zpět!',
|
||||
notEnough = 'Nemáte dostatek tohoto předmětu',
|
||||
comDes = 'Prodávejte věci na rohu'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Vařit crack',
|
||||
cook = 'Vaření cracku',
|
||||
targetBag = 'Balicí crack',
|
||||
bag = 'Balení cracku',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Získat doručovací misi',
|
||||
targetOpenShop = 'Otevřít obchod dealera',
|
||||
shopHeader = 'Obchod dealera',
|
||||
targetHandOff = 'Předat zásilku',
|
||||
delivering = 'Předávání balíčku drogovému dealerovi',
|
||||
alreadyDelivering = 'Už doručujete balíček',
|
||||
slowAf = 'Trvalo vám to příliš dlouho!',
|
||||
newDealerHelp = {
|
||||
help = 'Umístit dealera',
|
||||
name = 'Jméno dealera',
|
||||
timeMin = 'Minimální čas',
|
||||
timeMax = 'Maximální čas'
|
||||
},
|
||||
DealerExists = 'Dealer již existuje',
|
||||
deleteDealer = {
|
||||
help = 'Smazat dealera',
|
||||
name = 'Jméno dealera',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer smazán',
|
||||
deleteDealerFail = 'Selhalo smazání dealera',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Sbírat heroin',
|
||||
picking = 'Sbírání heroinu',
|
||||
targetCook = 'Vařit heroin',
|
||||
pbCook = 'Vaření heroinu',
|
||||
targetPickup = 'Zvednout laboratoř',
|
||||
pbPickup = 'Zvedání laboratoře',
|
||||
targetClean = 'Čistit laboratoř',
|
||||
pbClean = 'Čištění laboratoře',
|
||||
targetDry = 'Sušit rostlinu',
|
||||
pbDry = 'Sušení rostliny',
|
||||
targetCutHeroin = 'Řezat heroin',
|
||||
pbCutHeroin = 'Řezání heroinu',
|
||||
targetBuyKit = 'Koupit heroinovou laboratorní sadu',
|
||||
pbBuyKit = 'Nákup heroinové laboratorní sady',
|
||||
tableout = 'Už máte stůl venku',
|
||||
placing = 'Pokládání stolu',
|
||||
targetFill = 'Naplňovat stříkačku',
|
||||
pbFill = 'Plnění stříkačky',
|
||||
hasKitAlready = 'Už máte heroinovou laboratorní sadu',
|
||||
notEnoughMoney = 'Potřebujete $%s v hotovosti pro tento nákup',
|
||||
placedKit = 'Umístili jste svou heroinovou laboratorní sadu',
|
||||
failed = 'Nepodařilo se vám vyrobit heroin a ztratili jste suroviny',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Krást z náklaďáku',
|
||||
startMission = 'Spustit misi Lean',
|
||||
notOnRun = 'Nejste na misi Lean',
|
||||
alreadyChasing = 'Už pronásledujete náklaďák',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Zahřívat LSD',
|
||||
heating = 'Zahřívání LSD',
|
||||
targetRefine = 'Rafinovat kyselinu',
|
||||
refining = 'Rafinace kyseliny',
|
||||
targetDipping = 'Namáčet tablety',
|
||||
dipping = 'Namáčení tablet',
|
||||
targetPickup = 'Zvednout laboratorní sadu',
|
||||
packup = 'Balení laboratorní sady',
|
||||
targetClean = 'Čistit laboratorní sadu',
|
||||
needCleaning = 'Potřebujete čisticí sadu k vyčištění laboratoře',
|
||||
cleaning = 'Čištění laboratorní sady',
|
||||
targetLys = 'Krást lysergickou kyselinu',
|
||||
stealLys = 'Krácení lysergické kyseliny',
|
||||
targetDie = 'Krást diethylamid',
|
||||
stealDie = 'Krácení diethylamidu',
|
||||
targetBuyTab = 'Koupit papír na tablety',
|
||||
targetBuyKit = 'Koupit LSD laboratorní sadu',
|
||||
alreadyOwn = 'Tento předmět již vlastníte',
|
||||
buyingKit = 'Nákup LSD laboratorní sady',
|
||||
tableout = 'Už máte stůl venku',
|
||||
placing = 'Pokládání laboratorní sady!',
|
||||
failed = 'Jste hrozní ve výrobě drog',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Sbírat kaktus',
|
||||
picking = 'Sbírání kaktusu',
|
||||
targetDry = 'Sušit kaktus',
|
||||
dry = 'Sušení kaktusu',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Už pronásledujete auto',
|
||||
targetStealFromCar = 'Krást z meth auta',
|
||||
targetHeist = 'Spustit meth misi',
|
||||
started = 'Už vaříte meth',
|
||||
increaseHeat = 'Zvýšili jste teplo',
|
||||
targetBag = 'Balicí meth',
|
||||
targetCook = 'Vařit meth',
|
||||
targetGrabTray = 'Vzít tác methu',
|
||||
targetHeat = 'Nastavit ovladače',
|
||||
targetSmash = 'Rozdrtit tác',
|
||||
targetStealEPH = 'Krást ephedrin',
|
||||
stealingEPH = 'Krácení ephedrinu',
|
||||
targetStealACE = 'Krást aceton',
|
||||
stealingACE = 'Krácení acetonu',
|
||||
notOnRun = 'Nejste na meth misi',
|
||||
onCooldown = 'Jste na cooldownu',
|
||||
teleIn = 'Vstoupit do laboratoře',
|
||||
teleOut = 'Opustit laboratoř',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Dodávka je horká, nechte ji někde',
|
||||
targetHandoff = 'Předat balíček',
|
||||
handingoff = 'Předávání balíčku',
|
||||
emptyHands = 'Nic nenosíte',
|
||||
targetPay = 'Pronajmout oxy dodávku',
|
||||
keys = 'Klíče jsou v dodávce',
|
||||
targetGetPackage = 'Vzít balíček',
|
||||
alreadyCarrying = 'Už nesete balíček',
|
||||
paid = 'Zaplatili jste $%s za pronájem dodávky',
|
||||
notOn = 'Nejste na trase',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Komu předepsat lék?',
|
||||
title1 = 'Jméno hráče',
|
||||
title2 = 'Předpis',
|
||||
},
|
||||
write = 'Psaní předpisu',
|
||||
opening = 'Otevírání lahvičky s předpisem',
|
||||
targetFill = 'Vyplnit předpis',
|
||||
fill = 'Vyplňování předpisu',
|
||||
canceled = 'Zrušili jste předpis',
|
||||
unbottle = 'Otevřeli jste lahvičku',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Sbírat houby',
|
||||
picking = 'Sbírání hub',
|
||||
eat = 'Jídlo hub',
|
||||
cancel = 'Rozhodli jste se nebrat houby',
|
||||
took = 'Vzali jste si nějaké houby!'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Sbírat marihuanu',
|
||||
picking = 'Sbírání marihuany',
|
||||
targetDry = 'Sušit marihuanu',
|
||||
noDry = 'Potřebujete mokrou marihuanu pro tuto akci',
|
||||
wait = 'Čekání, až marihuana uschne...',
|
||||
take = 'Připraveni vzít marihuanu',
|
||||
targetDryed = 'Zvednout marihuanu',
|
||||
teleportIn = 'Vstoupit do pěstírny',
|
||||
teleportOut = 'Opustit pěstírnu',
|
||||
dabs = 'Dělání dabů',
|
||||
bluntWrap = 'Namáčení sirupu pro výrobu %s',
|
||||
rollBlunt = 'Točení %s',
|
||||
targetSales = 'Koupit od dealera',
|
||||
buying = 'Nákup %s od dealera',
|
||||
itemDoesntExist = 'Tento předmět zde neexistuje',
|
||||
needItem = 'Potřebujete %s pro tuto akci',
|
||||
crackBlunt = 'Rozlomení jointu'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Už prodáváte velkoobchodně',
|
||||
targetBuyer = 'Promluvit si s kupcem',
|
||||
wholesaling = 'Velkoobchodní prodej drog',
|
||||
uhoh = 'Kupce začíná být podezřelý',
|
||||
tooLong = 'Kupce čekal příliš dlouho',
|
||||
notEnoughCops = 'Není dostatek policistů na službě',
|
||||
|
||||
count = 'Zjištěné množství: %s',
|
||||
bonus = 'Bonus množství: +%s%%',
|
||||
estimate = 'Odhadovaný výdělek: $%s - $%s',
|
||||
no_drugs = 'Nemáte žádné z těchto drog na prodej',
|
||||
ambush = 'Přepadení! %s útočníků s %s zbraněmi se blíží!',
|
||||
complete = 'Prodáno %s kusů za $%s%s',
|
||||
min_quantity = 'Musíte prodat alespoň %s kusů pro velkoobchod',
|
||||
deal_failed_cleanup = 'Obchod selhal – můžete to zkusit znovu'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Už máte lis venku',
|
||||
settingDown = 'Pokládání lisu',
|
||||
noPressOut = 'Nemáte žádný lis venku',
|
||||
targetMake = 'Lisovat pilulky',
|
||||
making = 'Lisování %s',
|
||||
targetPickup = 'Zvednout lis',
|
||||
picking = 'Zvedání lisu',
|
||||
targetStealMDP2P = 'Krást MDP2P',
|
||||
stealingMDP2P = 'Krácení MDP2P',
|
||||
fail = 'Sakra, jste v tom hrozní',
|
||||
targetStealIsosafrole = 'Krást isosafrol',
|
||||
stealingIsosafrole = 'Krácení isosafrolu',
|
||||
targetRaw = 'Vyrobit surové XTC',
|
||||
makingRaw = 'Výroba surového XTC',
|
||||
getPress = 'Získat lis',
|
||||
buySingle = 'Koupit jednotlivý lis za $%s',
|
||||
buyp = 'Nákup lisu',
|
||||
targetStamp = 'Razítkovat XTC',
|
||||
stamp_desc = 'Razítkování %s pilulek',
|
||||
stamping = 'Razítkování %s pilulek',
|
||||
noPills = 'Nemáte žádné neoznačené pilulky'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Otevřít obchodní nabídku',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Du bist nicht am richtigen Ort',
|
||||
needItems = 'Du hast nicht die benötigten Gegenstände',
|
||||
notEnoughMoney = 'Du bist zu pleite',
|
||||
buySuccess = 'Du hast %s %s für $%s gekauft',
|
||||
itemMissings = 'Du brauchst \n',
|
||||
itemNeeded = 'Du brauchst %s',
|
||||
cooldown = 'Langsam, Speed Racer',
|
||||
invalidItem = 'Dieser Artikel wird hier nicht verkauft',
|
||||
onCooldownWarn = '%s hat versucht, Event %s auszuführen \n während Cooldown',
|
||||
noCops = 'Nicht genug Polizisten online',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Kokablätter pflücken',
|
||||
picking = 'Pflücke Kokablätter',
|
||||
targetMakePow = 'Kokainpulver herstellen',
|
||||
noleaf = 'Du brauchst ein Kokablatt',
|
||||
makePow = 'Zerkleinere Blätter zu Pulver',
|
||||
targetCutCoke = 'Kokain schneiden',
|
||||
targetBagCoke = 'Kokain verpacken',
|
||||
teleIn = 'Betrete das Labor',
|
||||
teleOut = 'Verlasse das Labor',
|
||||
needBakingSoda = 'Du brauchst Backpulver dafür',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Fremdengefahr!',
|
||||
selling = 'Verkaufe %s für $%s',
|
||||
deny = 'Fick das Angebot',
|
||||
wait = 'Warte auf Kunden',
|
||||
nodrugs = 'Du hast keine Drogen zum Verkaufen',
|
||||
searching = 'Suche nach Kunden in der Nähe',
|
||||
targetTakeBack = 'Drogen zurücknehmen',
|
||||
targetSell = 'Verkaufe %s von %s für $%s',
|
||||
targetDeny = 'Angebot ablehnen',
|
||||
stopped = 'Dein fauler Arsch kann nicht mal Drogen verkaufen!',
|
||||
start = 'Mach deine Mama stolz',
|
||||
gotRobbed = 'Du wurdest ausgeraubt, Nerd!',
|
||||
gotBack = 'Du hast deine Sachen zurückbekommen!',
|
||||
notEnough = 'Du hast nicht genug davon',
|
||||
comDes = 'Verkaufe Sachen an der Ecke'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Crack kochen',
|
||||
cook = 'Koche Crack',
|
||||
targetBag = 'Crack verpacken',
|
||||
bag = 'Verpacke Crack',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Liefermission annehmen',
|
||||
targetOpenShop = 'Dealer-Shop öffnen',
|
||||
shopHeader = 'Dealer-Shop',
|
||||
targetHandOff = 'Lieferung übergeben',
|
||||
delivering = 'Übergebe das Paket an den Dealer',
|
||||
alreadyDelivering = 'Du lieferst bereits ein Paket aus',
|
||||
slowAf = 'Du warst zu langsam!',
|
||||
newDealerHelp = {
|
||||
help = 'Platziere einen Dealer',
|
||||
name = 'Dealer-Name',
|
||||
timeMin = 'Mindestzeit',
|
||||
timeMax = 'Maximalzeit'
|
||||
},
|
||||
DealerExists = 'Dealer existiert bereits',
|
||||
deleteDealer = {
|
||||
help = 'Lösche einen Dealer',
|
||||
name = 'Dealer-Name',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer gelöscht',
|
||||
deleteDealerFail = 'Fehler beim Löschen des Dealers',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Heroin sammeln',
|
||||
picking = 'Sammle Heroin',
|
||||
targetCook = 'Heroin kochen',
|
||||
pbCook = 'Koche Heroin',
|
||||
targetPickup = 'Labor abholen',
|
||||
pbPickup = 'Hebe Labor auf',
|
||||
targetClean = 'Labor reinigen',
|
||||
pbClean = 'Reinige Labor',
|
||||
targetDry = 'Pflanze trocknen',
|
||||
pbDry = 'Trockne Pflanze',
|
||||
targetCutHeroin = 'Heroin schneiden',
|
||||
pbCutHeroin = 'Schneide Heroin',
|
||||
targetBuyKit = 'Heroin-Laborkit kaufen',
|
||||
pbBuyKit = 'Kaufe Heroin-Laborkit',
|
||||
tableout = 'Du hast bereits einen Tisch draußen',
|
||||
placing = 'Stelle Tisch auf',
|
||||
targetFill = 'Spritze füllen',
|
||||
pbFill = 'Fülle Spritze',
|
||||
hasKitAlready = 'Du besitzt bereits ein Heroin-Laborkit',
|
||||
notEnoughMoney = 'Du brauchst $%s Bargeld dafür',
|
||||
placedKit = 'Du hast dein Heroin-Laborkit aufgestellt',
|
||||
failed = 'Du hast beim Heroin-Kochen versagt und die Zutaten verloren',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Vom LKW stehlen',
|
||||
startMission = 'Lean-Mission starten',
|
||||
notOnRun = 'Du bist nicht auf einer Lean-Mission',
|
||||
alreadyChasing = 'Du verfolgst bereits einen LKW',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'LSD erhitzen',
|
||||
heating = 'Erhitze LSD',
|
||||
targetRefine = 'Säure raffinieren',
|
||||
refining = 'Raffiniere die Säure',
|
||||
targetDipping = 'Tabs eintauchen',
|
||||
dipping = 'Tauche Tabs ein',
|
||||
targetPickup = 'Laborkit abholen',
|
||||
packup = 'Packe Laborkit ein',
|
||||
targetClean = 'Laborkit reinigen',
|
||||
needCleaning = 'Du brauchst ein Reinigungsset, um das Labor zu reinigen',
|
||||
cleaning = 'Reinige Laborkit',
|
||||
targetLys = 'Lysergsäure stehlen',
|
||||
stealLys = 'Stehle Lysergsäure',
|
||||
targetDie = 'Diethylamid stehlen',
|
||||
stealDie = 'Stehle Diethylamid',
|
||||
targetBuyTab = 'Tab-Papier kaufen',
|
||||
targetBuyKit = 'LSD-Laborkit kaufen',
|
||||
alreadyOwn = 'Du besitzt diesen Gegenstand bereits',
|
||||
buyingKit = 'Kaufe LSD-Laborkit',
|
||||
tableout = 'Du hast bereits einen Tisch draußen',
|
||||
placing = 'Stelle Laborkit auf!',
|
||||
failed = 'Du bist schlecht im Drogenmachen',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Kaktus pflücken',
|
||||
picking = 'Pflücke Kaktus',
|
||||
targetDry = 'Kaktus trocknen',
|
||||
dry = 'Trockne Kaktus',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Du verfolgst bereits ein Auto',
|
||||
targetStealFromCar = 'Vom Meth-Auto stehlen',
|
||||
targetHeist = 'Meth-Mission starten',
|
||||
started = 'Du kochst bereits Meth',
|
||||
increaseHeat = 'Du hast die Hitze erhöht',
|
||||
targetBag = 'Meth verpacken',
|
||||
targetCook = 'Meth kochen',
|
||||
targetGrabTray = 'Meth-Behälter nehmen',
|
||||
targetHeat = 'Regler einstellen',
|
||||
targetSmash = 'Behälter zerschlagen',
|
||||
targetStealEPH = 'Ephedrin stehlen',
|
||||
stealingEPH = 'Stehle Ephedrin',
|
||||
targetStealACE = 'Aceton stehlen',
|
||||
stealingACE = 'Stehle Aceton',
|
||||
notOnRun = 'Du bist nicht auf einer Meth-Mission',
|
||||
onCooldown = 'Du bist im Cooldown',
|
||||
teleIn = 'Betrete das Labor',
|
||||
teleOut = 'Verlasse das Labor',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Der Van ist heiß, lass ihn irgendwo stehen',
|
||||
targetHandoff = 'Paket übergeben',
|
||||
handingoff = 'Übergebe das Paket',
|
||||
emptyHands = 'Du trägst nichts',
|
||||
targetPay = 'Oxy-Van mieten',
|
||||
keys = 'Die Schlüssel liegen im Van',
|
||||
targetGetPackage = 'Paket nehmen',
|
||||
alreadyCarrying = 'Du trägst bereits ein Paket',
|
||||
paid = 'Du hast $%s bezahlt, um den Van zu mieten',
|
||||
notOn = 'Du bist nicht auf einer Route',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Wem ein Rezept ausstellen?',
|
||||
title1 = 'Spielername',
|
||||
title2 = 'Rezept',
|
||||
},
|
||||
write = 'Schreibe Rezept',
|
||||
opening = 'Öffne Rezeptflasche',
|
||||
targetFill = 'Rezept einlösen',
|
||||
fill = 'Löse Rezept ein',
|
||||
canceled = 'Du hast das Rezept abgebrochen',
|
||||
unbottle = 'Du hast die Flasche geöffnet',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Pilze sammeln',
|
||||
picking = 'Sammle Pilze',
|
||||
eat = 'Iss Pilze',
|
||||
cancel = 'Habe mich entschieden, keine Pilze zu nehmen',
|
||||
took = 'Du hast Pilze genommen!'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Weed pflücken',
|
||||
picking = 'Pflücke Weed',
|
||||
targetDry = 'Weed trocknen',
|
||||
noDry = 'Du brauchst nasses Weed dafür',
|
||||
wait = 'Warte, bis das Weed trocknet...',
|
||||
take = 'Bereit, Weed zu nehmen',
|
||||
targetDryed = 'Weed aufheben',
|
||||
teleportIn = 'Betrete das Grow-Haus',
|
||||
teleportOut = 'Verlasse das Grow-Haus',
|
||||
dabs = 'Mache Dabs',
|
||||
bluntWrap = 'Tauche Sirup ein, um %s herzustellen',
|
||||
rollBlunt = 'Drehe einen %s',
|
||||
targetSales = 'Vom Dealer kaufen',
|
||||
buying = 'Kaufe %s vom Dealer',
|
||||
itemDoesntExist = 'Dieser Gegenstand existiert hier nicht',
|
||||
needItem = 'Du brauchst einen %s dafür',
|
||||
crackBlunt = 'Knacke einen Joint auf'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Du verkaufst bereits im Großhandel',
|
||||
targetBuyer = 'Mit dem Käufer sprechen',
|
||||
wholesaling = 'Verkaufe Drogen im Großhandel',
|
||||
uhoh = 'Der Käufer wird misstrauisch',
|
||||
tooLong = 'Der Käufer hat zu lange gewartet',
|
||||
notEnoughCops = 'Nicht genug Polizisten im Dienst',
|
||||
|
||||
count = 'Erkannte Menge: %s',
|
||||
bonus = 'Mengenbonus: +%s%%',
|
||||
estimate = 'Geschätzte Auszahlung: $%s - $%s',
|
||||
no_drugs = 'Du hast keine dieser Drogen zum Verkauf',
|
||||
ambush = 'Hinterhalt! %s Angreifer mit %s Waffen nähern sich!',
|
||||
complete = 'Verkauft %s Artikel für $%s%s',
|
||||
min_quantity = 'Du musst mindestens %s Artikel verkaufen, um Großhandel zu betreiben',
|
||||
deal_failed_cleanup = 'Deal fehlgeschlagen – du kannst es erneut versuchen'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Du hast bereits eine Presse draußen',
|
||||
settingDown = 'Stelle die Presse auf',
|
||||
noPressOut = 'Du hast keine Presse draußen',
|
||||
targetMake = 'Pillen pressen',
|
||||
making = 'Presse eine %s',
|
||||
targetPickup = 'Presse aufheben',
|
||||
picking = 'Hebe Presse auf',
|
||||
targetStealMDP2P = 'MDP2P stehlen',
|
||||
stealingMDP2P = 'Stehle MDP2P',
|
||||
fail = 'Verdammt, du bist schlecht darin',
|
||||
targetStealIsosafrole = 'Isosafrol stehlen',
|
||||
stealingIsosafrole = 'Stehle Isosafrol',
|
||||
targetRaw = 'Rohes XTC herstellen',
|
||||
makingRaw = 'Stelle rohes XTC her',
|
||||
getPress = 'Presse holen',
|
||||
buySingle = 'Einzelne Presse für $%s kaufen',
|
||||
buyp = 'Kaufe Presse',
|
||||
targetStamp = 'XTC stempeln',
|
||||
stamp_desc = 'Stemple %s Pillen',
|
||||
stamping = 'Stemple %s Pillen',
|
||||
noPills = 'Du hast keine ungestempelten Pillen'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Händlermenü öffnen',
|
||||
}
|
||||
|
||||
return Lang
|
||||
@@ -0,0 +1,262 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Ni los daar do fin nol vokul',
|
||||
needItems = 'Zu’u fen do los vulon los wah dii',
|
||||
notEnoughMoney = 'Nii lot kruziik, fin sahvot!',
|
||||
buySuccess = 'Zu’u krah %s %s do $%s, wahrii!',
|
||||
itemMissings = 'Zu’u fen do wah: \n',
|
||||
itemNeeded = 'Zu’u fen do %s',
|
||||
cooldown = 'Zu’u pahk do, naal vokun',
|
||||
invalidItem = 'Dii item ni los los hi',
|
||||
onCooldownWarn = '%s fen zul do run %s \n hi do cooldown',
|
||||
noCops = 'Nii lot cops online, fin sahvot!'
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Tol coca los',
|
||||
picking = 'Tol coca losing',
|
||||
targetMakePow = 'Dii cocaine powdr los',
|
||||
noleaf = 'Zu’u fen do coca los',
|
||||
makePow = 'Tol leaves do powdr',
|
||||
targetCutCoke = 'Krah cocaine',
|
||||
targetBagCoke = 'Bag cocaine',
|
||||
teleIn = 'Fahdon lab',
|
||||
teleOut = 'Los lab',
|
||||
needBakingSoda = 'Zu’u fen do baking soda do hi'
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Zu’u voth stranger!',
|
||||
selling = 'Krah %s do $%s',
|
||||
deny = 'Ni! Dii offer!',
|
||||
wait = 'Lahvu do customer',
|
||||
nodrugs = 'Zu’u ni los drugs do sell',
|
||||
searching = 'Fahdon do nearby customer',
|
||||
targetTakeBack = 'Tol back drugs',
|
||||
targetSell = 'Sell %s do %s for $%s',
|
||||
targetDeny = 'Deny offer',
|
||||
stopped = 'Zu’u lazy ni sell drugs!',
|
||||
start = 'Frah do mom proud',
|
||||
gotRobbed = 'Zu’u los robbed!',
|
||||
gotBack = 'Zu’u los back hi stuff!',
|
||||
notEnough = 'Zu’u ni los enough do hi item',
|
||||
comDes = 'Sell things do corner'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Krah crack',
|
||||
cook = 'Krah crack',
|
||||
targetBag = 'Bag crack',
|
||||
bag = 'Tol crack do bag'
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Tol delivery mission',
|
||||
targetOpenShop = 'Fahdon dealer shop',
|
||||
shopHeader = 'Dealer Shop',
|
||||
targetHandOff = 'Hand off delivery',
|
||||
delivering = 'Hand package do dealer',
|
||||
alreadyDelivering = 'Zu’u los already delivering',
|
||||
slowAf = 'Zu’u los too sahvot!',
|
||||
newDealerHelp = {
|
||||
help = 'Place dealer',
|
||||
name = 'Dealer Name',
|
||||
timeMin = 'Minimum Time',
|
||||
timeMax = 'Maximum Time'
|
||||
},
|
||||
DealerExists = 'Dealer los exist',
|
||||
deleteDealer = {
|
||||
help = 'Delete dealer',
|
||||
name = 'Dealer Name',
|
||||
},
|
||||
deleteDealerSuccess = 'Deleted dealer',
|
||||
deleteDealerFail = 'Failed delete dealer'
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Tol heroin',
|
||||
picking = 'Picking heroin',
|
||||
targetCook = 'Krah heroin',
|
||||
pbCook = 'Krah up heroin',
|
||||
targetPickup = 'Tol lab up',
|
||||
pbPickup = 'Picking up lab',
|
||||
targetClean = 'Kreh lab',
|
||||
pbClean = 'Cleaning lab',
|
||||
targetDry = 'Dry plant',
|
||||
pbDry = 'Drying plant',
|
||||
targetCutHeroin = 'Krah heroin',
|
||||
pbCutHeroin = 'Cutting heroin',
|
||||
targetBuyKit = 'Buy heroin kit',
|
||||
pbBuyKit = 'Buying heroin kit',
|
||||
tableout = 'Zu’u los table out',
|
||||
placing = 'Placing table',
|
||||
targetFill = 'Fill syringe',
|
||||
pbFill = 'Filling syringe',
|
||||
hasKitAlready = 'Zu’u los heroin kit',
|
||||
notEnoughMoney = 'Zu’u fen do $%s',
|
||||
placedKit = 'Placed heroin kit',
|
||||
failed = 'Zu’u los failed krah heroin'
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Stahl from truck',
|
||||
startMission = 'Start lean mission',
|
||||
notOnRun = 'Zu’u ni los on lean run',
|
||||
alreadyChasing = 'Zu’u los chasing truck'
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Heat LSD',
|
||||
heating = 'Heating LSD',
|
||||
targetRefine = 'Refine acid',
|
||||
refining = 'Refining acid',
|
||||
targetDipping = 'Dip tabs',
|
||||
dipping = 'Dipping tabs',
|
||||
targetPickup = 'Tol lab kit up',
|
||||
packup = 'Packing up lab kit',
|
||||
targetClean = 'Clean lab kit',
|
||||
needCleaning = 'Zu’u fen do cleaning kit',
|
||||
cleaning = 'Cleaning lab kit',
|
||||
targetLys = 'Stahl lysergic acid',
|
||||
stealLys = 'Stealing lysergic acid',
|
||||
targetDie = 'Stahl diethylamide',
|
||||
stealDie = 'Stealing diethylamide',
|
||||
targetBuyTab = 'Buy tab paper',
|
||||
targetBuyKit = 'Buy LSD lab kit',
|
||||
alreadyOwn = 'Zu’u los own hi item',
|
||||
buyingKit = 'Buying LSD lab kit',
|
||||
tableout = 'Table los out',
|
||||
placing = 'Placing lab kit',
|
||||
failed = 'Zu’u los failed make drugs'
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Tol cactus',
|
||||
picking = 'Picking cactus',
|
||||
targetDry = 'Dry cactus',
|
||||
dry = 'Drying cactus'
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Zu’u los chasing truck',
|
||||
targetStealFromCar = 'Stahl meth car',
|
||||
targetHeist = 'Start meth mission',
|
||||
started = 'Zu’u los meth cooking',
|
||||
increaseHeat = 'Zu’u los increase heat',
|
||||
targetBag = 'Bag meth',
|
||||
targetCook = 'Cook meth',
|
||||
targetGrabTray = 'Grab meth tray',
|
||||
targetHeat = 'Adjust dials',
|
||||
targetSmash = 'Smash tray',
|
||||
targetStealEPH = 'Stahl ephedrine',
|
||||
stealingEPH = 'Stealing ephedrine',
|
||||
targetStealACE = 'Stahl acetone',
|
||||
stealingACE = 'Stealing acetone',
|
||||
notOnRun = 'Zu’u ni los on meth run',
|
||||
onCooldown = 'Zu’u los on cooldown',
|
||||
teleIn = 'Fahdon lab',
|
||||
teleOut = 'Los lab'
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Van los hot, leave it',
|
||||
targetHandoff = 'Hand off package',
|
||||
handingoff = 'Handing off package',
|
||||
emptyHands = 'Zu’u ni los carry',
|
||||
targetPay = 'Rent oxy van',
|
||||
keys = 'Keys los in van',
|
||||
targetGetPackage = 'Grab package',
|
||||
alreadyCarrying = 'Zu’u los carry package',
|
||||
paid = 'Paid $%s',
|
||||
notOn = 'Zu’u ni los on route'
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Who to give prescription?',
|
||||
title1 = 'Player name',
|
||||
title2 = 'Prescription'
|
||||
},
|
||||
write = 'Writing prescription',
|
||||
opening = 'Opening bottle',
|
||||
targetFill = 'Fill prescription',
|
||||
fill = 'Getting prescription filled',
|
||||
canceled = 'Canceled prescription',
|
||||
unbottle = 'Opened bottle'
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Tol shrooms',
|
||||
picking = 'Picking shrooms',
|
||||
eat = 'Eating shrooms',
|
||||
cancel = 'Decided not to',
|
||||
took = 'Took shrooms'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Tol weed',
|
||||
picking = 'Picking weed',
|
||||
targetDry = 'Dry weed',
|
||||
noDry = 'Need wet weed',
|
||||
wait = 'Waiting for weed',
|
||||
take = 'Ready to take weed',
|
||||
targetDryed = 'Pickup weed',
|
||||
teleportIn = 'Fahdon grow house',
|
||||
teleportOut = 'Los grow house',
|
||||
dabs = 'Doing dabs',
|
||||
bluntWrap = 'Dipping syrup %s',
|
||||
rollBlunt = 'Rolling %s',
|
||||
targetSales = 'Buy from dealer',
|
||||
buying = 'Buying %s',
|
||||
itemDoesntExist = 'Item does not exist',
|
||||
needItem = 'Need %s',
|
||||
crackBlunt = 'Cracking blunt'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Already wholesaling',
|
||||
targetBuyer = 'Talk to buyer',
|
||||
wholesaling = 'Wholesaling drugs',
|
||||
uhoh = 'Buyer getting sketchy',
|
||||
tooLong = 'Buyer waited too long',
|
||||
notEnoughCops = 'Not enough guards',
|
||||
count = 'Quantity: %s',
|
||||
bonus = 'Bonus: +%s%%',
|
||||
estimate = 'Estimated payout: $%s - $%s',
|
||||
no_drugs = 'No drugs to sell',
|
||||
ambush = 'AMBUSH! %s attackers coming!',
|
||||
complete = 'Sold %s for $%s%s',
|
||||
min_quantity = 'Must sell %s minimum',
|
||||
deal_failed_cleanup = 'Deal failed, try again'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Press out already',
|
||||
settingDown = 'Setting press down',
|
||||
noPressOut = 'No press out',
|
||||
targetMake = 'Press pills',
|
||||
making = 'Pressing %s',
|
||||
targetPickup = 'Pickup press',
|
||||
picking = 'Picking press',
|
||||
targetStealMDP2P = 'Stahl MDP2P',
|
||||
stealingMDP2P = 'Stealing MDP2P',
|
||||
fail = 'Failed!',
|
||||
targetStealIsosafrole = 'Stahl isosafrole',
|
||||
stealingIsosafrole = 'Stealing isosafrole',
|
||||
targetRaw = 'Make raw XTC',
|
||||
makingRaw = 'Making raw XTC',
|
||||
getPress = 'Get press',
|
||||
buySingle = 'Buy single press $%s',
|
||||
buyp = 'Buying press',
|
||||
targetStamp = 'Stamp XTC',
|
||||
stamp_desc = 'Stamp %s pills',
|
||||
stamping = 'Stamping %s pills',
|
||||
noPills = 'No unstamped pills'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Open merchant menu'
|
||||
}
|
||||
|
||||
return Lang
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'You Are Not In The Correct Location',
|
||||
needItems = 'You Do Not Have The Required Items',
|
||||
notEnoughMoney = 'Youre To Broke',
|
||||
buySuccess = 'You Bought %s %s For $%s',
|
||||
itemMissings = 'You Need \n',
|
||||
itemNeeded = 'You Need %s',
|
||||
cooldown = 'Slow Down Speed Racer',
|
||||
invalidItem = 'This Item Is Not Sold Here',
|
||||
onCooldownWarn = '%s Attempted To Run Event %s \n while on cooldown',
|
||||
noCops = 'Not Enough Police Online',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Pick Coca Leaf',
|
||||
picking = 'Picking Coca Leaf',
|
||||
targetMakePow = 'Make Cocaine Powder',
|
||||
noleaf = 'You Need A Coke Leaf',
|
||||
makePow = 'Chopping Leaves into Powder',
|
||||
targetCutCoke = 'Cut Cocaine',
|
||||
targetBagCoke = 'Bag Cocaine',
|
||||
teleIn = 'Enter the Lab',
|
||||
teleOut = 'Exit the Lab',
|
||||
needBakingSoda = 'You Need Baking Soda For This',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Stranger Danger!',
|
||||
selling = 'Selling %s for $%s',
|
||||
deny = 'Fuck That Offer',
|
||||
wait = 'Waiting For Customer',
|
||||
nodrugs = 'You Do Not Have Any Drugs To Sell',
|
||||
searching = 'Searching For Nearby Customers',
|
||||
targetTakeBack = 'Take Back Drugs',
|
||||
targetSell = 'Sell %s Of %s For $%s',
|
||||
targetDeny = 'Deny Offer',
|
||||
stopped = 'Your Lazy Ass Cant Even Sell Drugs!',
|
||||
start = 'Go Make Your Mom Proud',
|
||||
gotRobbed = 'You Got Robbed Nerd!',
|
||||
gotBack = 'You Got Your Stuff Back!',
|
||||
notEnough = 'You Dont Have Enough Of This Item',
|
||||
comDes = 'Sell Things On The Corner'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cook Some Crack',
|
||||
cook = 'Cooking Crack',
|
||||
targetBag = 'Bag Crack',
|
||||
bag = 'Bagging Crack',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Get Delivery Mission',
|
||||
targetOpenShop = 'Open Dealer Shop',
|
||||
shopHeader = 'Dealer Shop',
|
||||
targetHandOff = 'Hand Off Delivery',
|
||||
delivering = 'Handing The Package To Drug Dealer',
|
||||
alreadyDelivering = 'You Are Already Delivering A Package',
|
||||
slowAf = 'You Took To Long!',
|
||||
newDealerHelp = {
|
||||
help = 'Place A Dealer',
|
||||
name = 'Dealer Name',
|
||||
timeMin = 'Minimum Time',
|
||||
timeMax = 'Maximum Time'
|
||||
},
|
||||
DealerExists = 'Dealer Already Exists',
|
||||
deleteDealer = {
|
||||
help = 'Delete A Dealer',
|
||||
name = 'Dealer Name',
|
||||
},
|
||||
deleteDealerSuccess = 'Deleted Dealer',
|
||||
deleteDealerFail = 'Failed To Delete Dealer',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Pick Heroin',
|
||||
picking = 'Picking Heroin',
|
||||
targetCook = 'Cook Heroin',
|
||||
pbCook = 'Cooking Up Heroin',
|
||||
targetPickup = 'Pick Up Lab',
|
||||
pbPickup = 'Picking Up Lab',
|
||||
targetClean = 'Clean Lab',
|
||||
pbClean = 'Cleaning Lab',
|
||||
targetDry = 'Dry Out Plant',
|
||||
pbDry = 'Drying Out Plant',
|
||||
targetCutHeroin = 'Cut Heroin',
|
||||
pbCutHeroin = 'Cutting Heroin',
|
||||
targetBuyKit = 'Buy Heroin Lab Kit',
|
||||
pbBuyKit = 'Buying Heroin Lab Kit',
|
||||
tableout = 'You Already Have A Table Out',
|
||||
placing = 'Placing Down Table',
|
||||
targetFill = 'Fill Syringe',
|
||||
pbFill = 'Filling Syringe',
|
||||
hasKitAlready = 'You Already Have A Heroin Lab Kit',
|
||||
notEnoughMoney = 'You Need $%s In Cash For This',
|
||||
placedKit = 'You Placed Down Your Heroin Lab Kit',
|
||||
failed = 'You Failed To Make Heroin And Lost Your Ingredients',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Steal From Truck',
|
||||
startMission = 'Start Lean Mission',
|
||||
notOnRun = 'You Are Not On A Lean Run',
|
||||
alreadyChasing = 'You Are Already Chasing A Truck',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Heating LSD',
|
||||
heating = 'Heating Up LSD',
|
||||
targetRefine = 'Refine The Acid',
|
||||
refining = 'Refining The Acid',
|
||||
targetDipping = 'Dip Tabs',
|
||||
dipping = 'Dipping Tabs',
|
||||
targetPickup = 'Pick Up Lab Kit',
|
||||
packup = 'Packing Up Lab Kit',
|
||||
targetClean = 'Clean Lab Kit',
|
||||
needCleaning = 'You Need A Cleaning Kit To Clean The Lab',
|
||||
cleaning = 'Cleaning Lab Kit',
|
||||
targetLys = 'Steal Lysergic Acid',
|
||||
stealLys = 'Stealing Lysergic Acid',
|
||||
targetDie = 'Steal Diethylamide',
|
||||
stealDie = 'Stealing Diethylamide',
|
||||
targetBuyTab = 'Buy Tab Paper',
|
||||
targetBuyKit = 'Buy LSD Lab Kit',
|
||||
alreadyOwn = 'You Already Own This Item',
|
||||
buyingKit = 'Buying LSD Lab Kit',
|
||||
tableout = 'You Already Have A Table Out',
|
||||
placing = 'Placing Lab Kit Down!',
|
||||
failed = 'You Suck At Making Drugs',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Pick Cactus',
|
||||
picking = 'Picking Cactus',
|
||||
targetDry = 'Dry Cactus',
|
||||
dry = 'Drying Cactus',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'You Already Are Chasing A Truck',
|
||||
targetStealFromCar = 'Steal From Meth Car',
|
||||
targetHeist = 'Start Meth Mission',
|
||||
started = 'You Already Have Meth Cooking',
|
||||
increaseHeat = 'You Increased The Heat',
|
||||
targetBag = 'Bag Meth',
|
||||
targetCook = 'Cook Meth',
|
||||
targetGrabTray = 'Grab Meth Tray',
|
||||
targetHeat = 'Adjust The Dials',
|
||||
targetSmash = 'Smash The Tray',
|
||||
targetStealEPH = 'Steal Ephedrine',
|
||||
stealingEPH = 'Stealing Ephedrine',
|
||||
targetStealACE = 'Steal Acetone',
|
||||
stealingACE = 'Stealing Acetone',
|
||||
notOnRun = 'You Are Not On A Meth Run',
|
||||
onCooldown = 'You Are On A Cooldown',
|
||||
teleIn = 'Enter the Lab',
|
||||
teleOut = 'Exit the Lab',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'The Van Is Hot, Leave It Somewhere',
|
||||
targetHandoff = 'Hand Off The Package',
|
||||
handingoff = 'Handing Off The Package',
|
||||
emptyHands = 'You Are Not Carrying Anything',
|
||||
targetPay = 'Rent Oxy Van',
|
||||
keys = 'The Keys Are In The Van',
|
||||
targetGetPackage = 'Grab Package',
|
||||
alreadyCarrying = 'You Are Already Carrying A Package',
|
||||
paid = 'You Paid $%s To Rent The Van',
|
||||
notOn = 'You Are Not On A Route',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Who To Give A Prescription To?',
|
||||
title1 = 'Player Name',
|
||||
title2 = 'Prescription',
|
||||
},
|
||||
write = 'Writing Prescription',
|
||||
opening = 'Opening Prescription Bottle',
|
||||
targetFill = 'Fill Prescription',
|
||||
fill = 'Getting Prescription Filled',
|
||||
canceled = 'You Canceled The Prescription',
|
||||
unbottle = 'You Opened The Bottle',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Pick Shrooms',
|
||||
picking = 'Picking Shrooms',
|
||||
eat = 'Eating Shrooms',
|
||||
cancel = 'Decided To Not Do Shrooms',
|
||||
took = 'You Took Some Shrooms!'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Pick Weed',
|
||||
picking = 'Picking Weed',
|
||||
targetDry = 'Dry Weed',
|
||||
noDry = 'You Need Wet Weed For This',
|
||||
wait = 'Waiting For Weed To Dry...',
|
||||
take = 'Ready To Take Weed',
|
||||
targetDryed = 'Pickup Weed',
|
||||
teleportIn = 'Enter The Grow House',
|
||||
teleportOut = 'Leave The Grow House',
|
||||
dabs = 'Doing Some Dabs',
|
||||
bluntWrap = 'Dipping Syrup To Make %s',
|
||||
rollBlunt = 'Rolling A %s',
|
||||
targetSales = 'Buy From Dealer',
|
||||
buying = 'Buying %s From Dealer',
|
||||
itemDoesntExist = 'This Item Does Not Exist Here',
|
||||
needItem = 'You Need A %s For This',
|
||||
crackBlunt = 'Cracking Open A Blunt'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Already Wholesaling',
|
||||
targetBuyer = 'Talk To The Buyer',
|
||||
wholesaling = 'Wholesaling Drugs',
|
||||
uhoh = 'The Buyer Is Getting Sketchy',
|
||||
tooLong = 'The Buyer Waited Too Long',
|
||||
notEnoughCops = 'Not Enough Cops On Duty',
|
||||
|
||||
count = 'Quantity detected: %s',
|
||||
bonus = 'Quantity bonus: +%s%%',
|
||||
estimate = 'Estimated payout: $%s - $%s',
|
||||
no_drugs = 'You do not have any of this drug to sell',
|
||||
ambush = 'Ambush! %s attackers with %s weapons are approaching!',
|
||||
complete = 'Sold %s items for $%s%s',
|
||||
min_quantity = 'You must sell at least %s items to wholesale',
|
||||
deal_failed_cleanup = 'Deal failed - you can try again'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'You Have A Press Out Already',
|
||||
settingDown = 'Setting Down The Press',
|
||||
noPressOut = 'You Do Not Have A Press Out',
|
||||
targetMake = 'Press Pills',
|
||||
making = 'Pressing A %s',
|
||||
targetPickup = 'Pick Up Press',
|
||||
picking = 'Picking Up Press',
|
||||
targetStealMDP2P = 'Steal MDP2P',
|
||||
stealingMDP2P = 'Stealing MDP2P',
|
||||
fail = 'Damn Dude You Suck',
|
||||
targetStealIsosafrole = 'Steal Isosafrole',
|
||||
stealingIsosafrole = 'Stealing Isosafrole',
|
||||
targetRaw = 'Make Raw XTC',
|
||||
makingRaw = 'Making Raw XTC',
|
||||
getPress = 'Get Press',
|
||||
buySingle = 'Buy Single Press For $%s',
|
||||
buyp = 'Buying Press',
|
||||
targetStamp = 'Stamp XTC',
|
||||
stamp_desc = 'Stamp %s Pills',
|
||||
stamping = 'Stamping %s Pills',
|
||||
noPills = 'You Dont Have Any Unstamped Pills'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Open Merchant Menu',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'No estás en la ubicación correcta',
|
||||
needItems = 'No tienes los objetos requeridos',
|
||||
notEnoughMoney = 'Estás demasiado pobre',
|
||||
buySuccess = 'Compraste %s %s por $%s',
|
||||
itemMissings = 'Necesitas \n',
|
||||
itemNeeded = 'Necesitas %s',
|
||||
cooldown = 'Despacio, Speed Racer',
|
||||
invalidItem = 'Este artículo no se vende aquí',
|
||||
onCooldownWarn = '%s intentó ejecutar el evento %s \n mientras estaba en cooldown',
|
||||
noCops = 'No hay suficientes policías en línea',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Recoger hojas de coca',
|
||||
picking = 'Recogiendo hojas de coca',
|
||||
targetMakePow = 'Hacer polvo de cocaína',
|
||||
noleaf = 'Necesitas una hoja de coca',
|
||||
makePow = 'Triturando hojas en polvo',
|
||||
targetCutCoke = 'Cortar cocaína',
|
||||
targetBagCoke = 'Empaquetar cocaína',
|
||||
teleIn = 'Entrar al laboratorio',
|
||||
teleOut = 'Salir del laboratorio',
|
||||
needBakingSoda = 'Necesitas bicarbonato de sodio para esto',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = '¡Peligro de desconocidos!',
|
||||
selling = 'Vendiendo %s por $%s',
|
||||
deny = 'A la mierda esa oferta',
|
||||
wait = 'Esperando cliente',
|
||||
nodrugs = 'No tienes drogas para vender',
|
||||
searching = 'Buscando clientes cercanos',
|
||||
targetTakeBack = 'Recuperar drogas',
|
||||
targetSell = 'Vender %s de %s por $%s',
|
||||
targetDeny = 'Rechazar oferta',
|
||||
stopped = '¡Tu perezoso trasero ni siquiera puede vender drogas!',
|
||||
start = 'Ve a hacer sentir orgullosa a tu mamá',
|
||||
gotRobbed = '¡Te robaron, nerd!',
|
||||
gotBack = '¡Recuperaste tus cosas!',
|
||||
notEnough = 'No tienes suficiente de este artículo',
|
||||
comDes = 'Vende cosas en la esquina'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cocinar crack',
|
||||
cook = 'Cocinando crack',
|
||||
targetBag = 'Empaquetar crack',
|
||||
bag = 'Empaquetando crack',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Obtener misión de entrega',
|
||||
targetOpenShop = 'Abrir tienda de dealer',
|
||||
shopHeader = 'Tienda de Dealer',
|
||||
targetHandOff = 'Entregar paquete',
|
||||
delivering = 'Entregando el paquete al dealer',
|
||||
alreadyDelivering = 'Ya estás entregando un paquete',
|
||||
slowAf = '¡Te tomó demasiado tiempo!',
|
||||
newDealerHelp = {
|
||||
help = 'Colocar un dealer',
|
||||
name = 'Nombre del dealer',
|
||||
timeMin = 'Tiempo mínimo',
|
||||
timeMax = 'Tiempo máximo'
|
||||
},
|
||||
DealerExists = 'El dealer ya existe',
|
||||
deleteDealer = {
|
||||
help = 'Eliminar un dealer',
|
||||
name = 'Nombre del dealer',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer eliminado',
|
||||
deleteDealerFail = 'Error al eliminar dealer',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Recoger heroína',
|
||||
picking = 'Recogiendo heroína',
|
||||
targetCook = 'Cocinar heroína',
|
||||
pbCook = 'Cocinando heroína',
|
||||
targetPickup = 'Recoger laboratorio',
|
||||
pbPickup = 'Recogiendo laboratorio',
|
||||
targetClean = 'Limpiar laboratorio',
|
||||
pbClean = 'Limpiando laboratorio',
|
||||
targetDry = 'Secar planta',
|
||||
pbDry = 'Secando planta',
|
||||
targetCutHeroin = 'Cortar heroína',
|
||||
pbCutHeroin = 'Cortando heroína',
|
||||
targetBuyKit = 'Comprar kit de laboratorio de heroína',
|
||||
pbBuyKit = 'Comprando kit de laboratorio de heroína',
|
||||
tableout = 'Ya tienes una mesa colocada',
|
||||
placing = 'Colocando mesa',
|
||||
targetFill = 'Llenar jeringa',
|
||||
pbFill = 'Llenando jeringa',
|
||||
hasKitAlready = 'Ya tienes un kit de laboratorio de heroína',
|
||||
notEnoughMoney = 'Necesitas $%s en efectivo para esto',
|
||||
placedKit = 'Colocaste tu kit de laboratorio de heroína',
|
||||
failed = 'Fallaste al hacer heroína y perdiste los ingredientes',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Robar del camión',
|
||||
startMission = 'Iniciar misión de Lean',
|
||||
notOnRun = 'No estás en una misión de Lean',
|
||||
alreadyChasing = 'Ya estás persiguiendo un camión',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Calentar LSD',
|
||||
heating = 'Calentando LSD',
|
||||
targetRefine = 'Refinar el ácido',
|
||||
refining = 'Refinando el ácido',
|
||||
targetDipping = 'Sumergir pastillas',
|
||||
dipping = 'Sumergiendo pastillas',
|
||||
targetPickup = 'Recoger kit de laboratorio',
|
||||
packup = 'Empacando kit de laboratorio',
|
||||
targetClean = 'Limpiar kit de laboratorio',
|
||||
needCleaning = 'Necesitas un kit de limpieza para limpiar el laboratorio',
|
||||
cleaning = 'Limpiando kit de laboratorio',
|
||||
targetLys = 'Robar ácido lisérgico',
|
||||
stealLys = 'Robando ácido lisérgico',
|
||||
targetDie = 'Robar dietilamida',
|
||||
stealDie = 'Robando dietilamida',
|
||||
targetBuyTab = 'Comprar papel para pastillas',
|
||||
targetBuyKit = 'Comprar kit de laboratorio de LSD',
|
||||
alreadyOwn = 'Ya posees este artículo',
|
||||
buyingKit = 'Comprando kit de laboratorio de LSD',
|
||||
tableout = 'Ya tienes una mesa colocada',
|
||||
placing = '¡Colocando kit de laboratorio!',
|
||||
failed = 'Eres pésimo haciendo drogas',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Recoger cactus',
|
||||
picking = 'Recogiendo cactus',
|
||||
targetDry = 'Secar cactus',
|
||||
dry = 'Secando cactus',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Ya estás persiguiendo un auto',
|
||||
targetStealFromCar = 'Robar del auto de metanfetamina',
|
||||
targetHeist = 'Iniciar misión de metanfetamina',
|
||||
started = 'Ya tienes metanfetamina cocinándose',
|
||||
increaseHeat = 'Aumentaste el calor',
|
||||
targetBag = 'Empaquetar metanfetamina',
|
||||
targetCook = 'Cocinar metanfetamina',
|
||||
targetGrabTray = 'Agarrar bandeja de metanfetamina',
|
||||
targetHeat = 'Ajustar las perillas',
|
||||
targetSmash = 'Romper la bandeja',
|
||||
targetStealEPH = 'Robar efedrina',
|
||||
stealingEPH = 'Robando efedrina',
|
||||
targetStealACE = 'Robar acetona',
|
||||
stealingACE = 'Robando acetona',
|
||||
notOnRun = 'No estás en una misión de metanfetamina',
|
||||
onCooldown = 'Estás en cooldown',
|
||||
teleIn = 'Entrar al laboratorio',
|
||||
teleOut = 'Salir del laboratorio',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'La camioneta está caliente, déjala en algún lugar',
|
||||
targetHandoff = 'Entregar el paquete',
|
||||
handingoff = 'Entregando el paquete',
|
||||
emptyHands = 'No estás cargando nada',
|
||||
targetPay = 'Alquilar camioneta de Oxy',
|
||||
keys = 'Las llaves están en la camioneta',
|
||||
targetGetPackage = 'Agarrar paquete',
|
||||
alreadyCarrying = 'Ya estás cargando un paquete',
|
||||
paid = 'Pagaste $%s para alquilar la camioneta',
|
||||
notOn = 'No estás en una ruta',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = '¿A quién recetar?',
|
||||
title1 = 'Nombre del jugador',
|
||||
title2 = 'Receta',
|
||||
},
|
||||
write = 'Escribiendo receta',
|
||||
opening = 'Abriendo frasco de receta',
|
||||
targetFill = 'Llenar receta',
|
||||
fill = 'Llenando receta',
|
||||
canceled = 'Cancelaste la receta',
|
||||
unbottle = 'Abriste el frasco',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Recoger hongos',
|
||||
picking = 'Recogiendo hongos',
|
||||
eat = 'Comiendo hongos',
|
||||
cancel = 'Decidiste no tomar hongos',
|
||||
took = '¡Tomaste algunos hongos!'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Recoger hierba',
|
||||
picking = 'Recogiendo hierba',
|
||||
targetDry = 'Secar hierba',
|
||||
noDry = 'Necesitas hierba mojada para esto',
|
||||
wait = 'Esperando a que la hierba se seque...',
|
||||
take = 'Listo para tomar la hierba',
|
||||
targetDryed = 'Recoger hierba',
|
||||
teleportIn = 'Entrar a la casa de cultivo',
|
||||
teleportOut = 'Salir de la casa de cultivo',
|
||||
dabs = 'Haciendo dabs',
|
||||
bluntWrap = 'Mojando jarabe para hacer %s',
|
||||
rollBlunt = 'Armando un %s',
|
||||
targetSales = 'Comprar del dealer',
|
||||
buying = 'Comprando %s del dealer',
|
||||
itemDoesntExist = 'Este artículo no existe aquí',
|
||||
needItem = 'Necesitas un %s para esto',
|
||||
crackBlunt = 'Rompiendo un porro'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Ya estás vendiendo al por mayor',
|
||||
targetBuyer = 'Hablar con el comprador',
|
||||
wholesaling = 'Vendiendo drogas al por mayor',
|
||||
uhoh = 'El comprador se está poniendo sospechoso',
|
||||
tooLong = 'El comprador esperó demasiado',
|
||||
notEnoughCops = 'No hay suficientes policías de servicio',
|
||||
|
||||
count = 'Cantidad detectada: %s',
|
||||
bonus = 'Bono de cantidad: +%s%%',
|
||||
estimate = 'Pago estimado: $%s - $%s',
|
||||
no_drugs = 'No tienes ninguna de estas drogas para vender',
|
||||
ambush = '¡Emboscada! ¡%s atacantes con %s armas se acercan!',
|
||||
complete = 'Vendiste %s artículos por $%s%s',
|
||||
min_quantity = 'Debes vender al menos %s artículos para vender al por mayor',
|
||||
deal_failed_cleanup = 'El trato falló: puedes intentarlo de nuevo'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Ya tienes una prensa colocada',
|
||||
settingDown = 'Colocando la prensa',
|
||||
noPressOut = 'No tienes una prensa colocada',
|
||||
targetMake = 'Prensar pastillas',
|
||||
making = 'Prensando una %s',
|
||||
targetPickup = 'Recoger prensa',
|
||||
picking = 'Recogiendo prensa',
|
||||
targetStealMDP2P = 'Robar MDP2P',
|
||||
stealingMDP2P = 'Robando MDP2P',
|
||||
fail = 'Maldita sea, eres pésimo en esto',
|
||||
targetStealIsosafrole = 'Robar isosafrol',
|
||||
stealingIsosafrole = 'Robando isosafrol',
|
||||
targetRaw = 'Hacer XTC crudo',
|
||||
makingRaw = 'Haciendo XTC crudo',
|
||||
getPress = 'Obtener prensa',
|
||||
buySingle = 'Comprar prensa individual por $%s',
|
||||
buyp = 'Comprando prensa',
|
||||
targetStamp = 'Estampar XTC',
|
||||
stamp_desc = 'Estampar %s pastillas',
|
||||
stamping = 'Estampando %s pastillas',
|
||||
noPills = 'No tienes pastillas sin estampar'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Abrir menú de comerciante',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Vous n’êtes pas au bon endroit',
|
||||
needItems = 'Vous n’avez pas les objets requis',
|
||||
notEnoughMoney = 'Vous êtes trop fauché',
|
||||
buySuccess = 'Vous avez acheté %s %s pour $%s',
|
||||
itemMissings = 'Vous avez besoin de \n',
|
||||
itemNeeded = 'Vous avez besoin de %s',
|
||||
cooldown = 'Ralentissez, Speed Racer',
|
||||
invalidItem = 'Cet objet n’est pas vendu ici',
|
||||
onCooldownWarn = '%s a tenté de lancer l’événement %s \n pendant le cooldown',
|
||||
noCops = 'Pas assez de policiers en ligne',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Ramasser des feuilles de coca',
|
||||
picking = 'Ramassage de feuilles de coca',
|
||||
targetMakePow = 'Fabriquer de la poudre de cocaïne',
|
||||
noleaf = 'Vous avez besoin d’une feuille de coca',
|
||||
makePow = 'Hachage des feuilles en poudre',
|
||||
targetCutCoke = 'Couper la cocaïne',
|
||||
targetBagCoke = 'Mettre la cocaïne en sachets',
|
||||
teleIn = 'Entrer dans le labo',
|
||||
teleOut = 'Sortir du labo',
|
||||
needBakingSoda = 'Vous avez besoin de bicarbonate de soude pour ça',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Danger inconnu !',
|
||||
selling = 'Vente de %s pour $%s',
|
||||
deny = 'Va te faire foutre, cette offre',
|
||||
wait = 'En attente de client',
|
||||
nodrugs = 'Vous n’avez aucune drogue à vendre',
|
||||
searching = 'Recherche de clients à proximité',
|
||||
targetTakeBack = 'Récupérer les drogues',
|
||||
targetSell = 'Vendre %s de %s pour $%s',
|
||||
targetDeny = 'Refuser l’offre',
|
||||
stopped = 'Votre cul paresseux ne peut même pas vendre de la drogue !',
|
||||
start = 'Allez rendre fière votre mère',
|
||||
gotRobbed = 'Vous vous êtes fait braquer, bouffon !',
|
||||
gotBack = 'Vous avez récupéré vos affaires !',
|
||||
notEnough = 'Vous n’en avez pas assez de cet objet',
|
||||
comDes = 'Vendez des trucs dans la rue'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cuire du crack',
|
||||
cook = 'Cuisson du crack',
|
||||
targetBag = 'Mettre le crack en sachets',
|
||||
bag = 'Mise en sachets du crack',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Prendre une mission de livraison',
|
||||
targetOpenShop = 'Ouvrir la boutique du dealer',
|
||||
shopHeader = 'Boutique du Dealer',
|
||||
targetHandOff = 'Remettre la livraison',
|
||||
delivering = 'Remise du paquet au dealer',
|
||||
alreadyDelivering = 'Vous êtes déjà en train de livrer un paquet',
|
||||
slowAf = 'Vous avez mis trop de temps !',
|
||||
newDealerHelp = {
|
||||
help = 'Placer un dealer',
|
||||
name = 'Nom du dealer',
|
||||
timeMin = 'Temps minimum',
|
||||
timeMax = 'Temps maximum'
|
||||
},
|
||||
DealerExists = 'Le dealer existe déjà',
|
||||
deleteDealer = {
|
||||
help = 'Supprimer un dealer',
|
||||
name = 'Nom du dealer',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer supprimé',
|
||||
deleteDealerFail = 'Échec de la suppression du dealer',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Ramasser de l’héroïne',
|
||||
picking = 'Ramassage d’héroïne',
|
||||
targetCook = 'Cuire de l’héroïne',
|
||||
pbCook = 'Cuisson d’héroïne',
|
||||
targetPickup = 'Récupérer le labo',
|
||||
pbPickup = 'Récupération du labo',
|
||||
targetClean = 'Nettoyer le labo',
|
||||
pbClean = 'Nettoyage du labo',
|
||||
targetDry = 'Sécher la plante',
|
||||
pbDry = 'Séchage de la plante',
|
||||
targetCutHeroin = 'Couper l’héroïne',
|
||||
pbCutHeroin = 'Découpage de l’héroïne',
|
||||
targetBuyKit = 'Acheter un kit de labo d’héroïne',
|
||||
pbBuyKit = 'Achat du kit de labo d’héroïne',
|
||||
tableout = 'Vous avez déjà une table installée',
|
||||
placing = 'Installation de la table',
|
||||
targetFill = 'Remplir la seringue',
|
||||
pbFill = 'Remplissage de la seringue',
|
||||
hasKitAlready = 'Vous possédez déjà un kit de labo d’héroïne',
|
||||
notEnoughMoney = 'Vous avez besoin de $%s en liquide pour ça',
|
||||
placedKit = 'Vous avez installé votre kit de labo d’héroïne',
|
||||
failed = 'Vous avez échoué à fabriquer de l’héroïne et perdu vos ingrédients',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Voler du camion',
|
||||
startMission = 'Démarrer la mission Lean',
|
||||
notOnRun = 'Vous n’êtes pas en mission Lean',
|
||||
alreadyChasing = 'Vous poursuivez déjà un camion',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Chauffer le LSD',
|
||||
heating = 'Chauffage du LSD',
|
||||
targetRefine = 'Raffiner l’acide',
|
||||
refining = 'Raffinage de l’acide',
|
||||
targetDipping = 'Tremper les comprimés',
|
||||
dipping = 'Trempage des comprimés',
|
||||
targetPickup = 'Récupérer le kit de labo',
|
||||
packup = 'Rangement du kit de labo',
|
||||
targetClean = 'Nettoyer le kit de labo',
|
||||
needCleaning = 'Vous avez besoin d’un kit de nettoyage pour nettoyer le labo',
|
||||
cleaning = 'Nettoyage du kit de labo',
|
||||
targetLys = 'Vol de l’acide lysergique',
|
||||
stealLys = 'Vol d’acide lysergique',
|
||||
targetDie = 'Vol de diéthylamide',
|
||||
stealDie = 'Vol de diéthylamide',
|
||||
targetBuyTab = 'Acheter du papier pour comprimés',
|
||||
targetBuyKit = 'Acheter un kit de labo LSD',
|
||||
alreadyOwn = 'Vous possédez déjà cet objet',
|
||||
buyingKit = 'Achat du kit de labo LSD',
|
||||
tableout = 'Vous avez déjà une table installée',
|
||||
placing = 'Installation du kit de labo !',
|
||||
failed = 'Vous êtes nul pour fabriquer des drogues',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Ramasser un cactus',
|
||||
picking = 'Ramassage de cactus',
|
||||
targetDry = 'Sécher le cactus',
|
||||
dry = 'Séchage du cactus',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Vous poursuivez déjà une voiture',
|
||||
targetStealFromCar = 'Vol de la voiture de méth',
|
||||
targetHeist = 'Démarrer la mission méth',
|
||||
started = 'Vous êtes déjà en train de cuire de la méth',
|
||||
increaseHeat = 'Vous avez augmenté la chaleur',
|
||||
targetBag = 'Mettre la méth en sachets',
|
||||
targetCook = 'Cuire de la méth',
|
||||
targetGrabTray = 'Prendre le plateau de méth',
|
||||
targetHeat = 'Ajuster les boutons',
|
||||
targetSmash = 'Écraser le plateau',
|
||||
targetStealEPH = 'Vol d’éphédrine',
|
||||
stealingEPH = 'Vol d’éphédrine',
|
||||
targetStealACE = 'Vol d’acétone',
|
||||
stealingACE = 'Vol d’acétone',
|
||||
notOnRun = 'Vous n’êtes pas en mission méth',
|
||||
onCooldown = 'Vous êtes en cooldown',
|
||||
teleIn = 'Entrer dans le labo',
|
||||
teleOut = 'Sortir du labo',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Le van est brûlant, laissez-le quelque part',
|
||||
targetHandoff = 'Remettre le paquet',
|
||||
handingoff = 'Remise du paquet',
|
||||
emptyHands = 'Vous ne portez rien',
|
||||
targetPay = 'Louer le van Oxy',
|
||||
keys = 'Les clés sont dans le van',
|
||||
targetGetPackage = 'Prendre le paquet',
|
||||
alreadyCarrying = 'Vous portez déjà un paquet',
|
||||
paid = 'Vous avez payé $%s pour louer le van',
|
||||
notOn = 'Vous n’êtes pas sur un trajet',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'À qui prescrire ?',
|
||||
title1 = 'Nom du joueur',
|
||||
title2 = 'Ordonnance',
|
||||
},
|
||||
write = 'Rédaction de l’ordonnance',
|
||||
opening = 'Ouverture du flacon d’ordonnance',
|
||||
targetFill = 'Faire exécuter l’ordonnance',
|
||||
fill = 'Exécution de l’ordonnance',
|
||||
canceled = 'Vous avez annulé l’ordonnance',
|
||||
unbottle = 'Vous avez ouvert le flacon',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Ramasser des champignons',
|
||||
picking = 'Ramassage de champignons',
|
||||
eat = 'Manger des champignons',
|
||||
cancel = 'Vous avez décidé de ne pas prendre de champignons',
|
||||
took = 'Vous avez pris des champignons !'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Ramasser de l’herbe',
|
||||
picking = 'Ramassage d’herbe',
|
||||
targetDry = 'Sécher l’herbe',
|
||||
noDry = 'Vous avez besoin d’herbe humide pour ça',
|
||||
wait = 'Attente du séchage de l’herbe...',
|
||||
take = 'Prêt à prendre l’herbe',
|
||||
targetDryed = 'Ramasser l’herbe',
|
||||
teleportIn = 'Entrer dans la serre',
|
||||
teleportOut = 'Sortir de la serre',
|
||||
dabs = 'Faire des dabs',
|
||||
bluntWrap = 'Tremper du sirop pour faire %s',
|
||||
rollBlunt = 'Rouler un %s',
|
||||
targetSales = 'Acheter au dealer',
|
||||
buying = 'Achat de %s auprès du dealer',
|
||||
itemDoesntExist = 'Cet objet n’existe pas ici',
|
||||
needItem = 'Vous avez besoin d’un %s pour ça',
|
||||
crackBlunt = 'Casser un joint'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Vous vendez déjà en gros',
|
||||
targetBuyer = 'Parler à l’acheteur',
|
||||
wholesaling = 'Vente de drogues en gros',
|
||||
uhoh = 'L’acheteur devient méfiant',
|
||||
tooLong = 'L’acheteur a trop attendu',
|
||||
notEnoughCops = 'Pas assez de flics en service',
|
||||
|
||||
count = 'Quantité détectée : %s',
|
||||
bonus = 'Bonus de quantité : +%s%%',
|
||||
estimate = 'Paiement estimé : $%s - $%s',
|
||||
no_drugs = 'Vous n’avez aucune de ces drogues à vendre',
|
||||
ambush = 'Embush ! %s attaquants avec %s armes approchent !',
|
||||
complete = 'Vendu %s articles pour $%s%s',
|
||||
min_quantity = 'Vous devez vendre au moins %s articles pour vendre en gros',
|
||||
deal_failed_cleanup = 'Échec de la transaction — vous pouvez réessayer'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Vous avez déjà une presse installée',
|
||||
settingDown = 'Installation de la presse',
|
||||
noPressOut = 'Vous n’avez pas de presse installée',
|
||||
targetMake = 'Presser des pilules',
|
||||
making = 'Pressage d’une %s',
|
||||
targetPickup = 'Récupérer la presse',
|
||||
picking = 'Récupération de la presse',
|
||||
targetStealMDP2P = 'Vol de MDP2P',
|
||||
stealingMDP2P = 'Vol de MDP2P',
|
||||
fail = 'Putain, vous êtes nul',
|
||||
targetStealIsosafrole = 'Vol d’isosafrole',
|
||||
stealingIsosafrole = 'Vol d’isosafrole',
|
||||
targetRaw = 'Fabriquer du XTC brut',
|
||||
makingRaw = 'Fabrication de XTC brut',
|
||||
getPress = 'Obtenir une presse',
|
||||
buySingle = 'Acheter une presse individuelle pour $%s',
|
||||
buyp = 'Achat de la presse',
|
||||
targetStamp = 'Estamper le XTC',
|
||||
stamp_desc = 'Estampage de %s pilules',
|
||||
stamping = 'Estampage de %s pilules',
|
||||
noPills = 'Vous n’avez pas de pilules non estampées'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Ouvrir le menu du marchand',
|
||||
}
|
||||
|
||||
return Lang
|
||||
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Yousa not bein in da right place-o!',
|
||||
needItems = 'Yousa no havin da tings needed!',
|
||||
notEnoughMoney = 'Yousa too broke, mooey mooey!',
|
||||
buySuccess = 'Yousa buyin %s %s for %s credits!',
|
||||
itemMissings = 'Yousa needin dis stuff: \n',
|
||||
itemNeeded = 'Yousa needin %s',
|
||||
cooldown = 'Ooooh, slow down speeda racer!',
|
||||
invalidItem = 'Dis item not bein sold here, okeeday?',
|
||||
onCooldownWarn = '%s tryin to do da event %s \n while still on da cooldown!',
|
||||
noCops = 'Nosa! Not enough cops online, okeeday!',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Pickin coca leafies, okeeday',
|
||||
picking = 'Meesa pickin coca leaf',
|
||||
targetMakePow = 'Makin da powdery stuff',
|
||||
noleaf = 'Yousa needin a coca leaf!',
|
||||
makePow = 'Choppin leafies into da powder',
|
||||
targetCutCoke = 'Cutty-cut da cocaine',
|
||||
targetBagCoke = 'Baggin da cocaine',
|
||||
teleIn = 'Meesa goin inside da lab',
|
||||
teleOut = 'Meesa leavin da lab',
|
||||
needBakingSoda = 'Yousa needin bakin soda for dis, okeeday',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Stranger danger, stay outta da speeder!',
|
||||
selling = 'Meesa sellin %s for %s credits',
|
||||
deny = 'Nosa, meesa no likin dat offer!',
|
||||
wait = 'Waitin for da customer to come',
|
||||
nodrugs = 'Yousa not havin no tings to sell',
|
||||
searching = 'Meesa lookin for customers, okeeday',
|
||||
targetTakeBack = 'Takin back da stuff',
|
||||
targetSell = 'Sellin %s of %s for %s credits',
|
||||
targetDeny = 'Sayin nosa to da offer',
|
||||
stopped = 'Yousa too lazy, can’t even sell nuttin!',
|
||||
start = 'Go make yo mama proud, okeeday!',
|
||||
gotRobbed = 'Yousa got robbed, mooey mooey!',
|
||||
gotBack = 'Yousa gots yo tings back!',
|
||||
notEnough = 'Yousa no havin enough of dis item',
|
||||
comDes = 'Sellin da tings on da corner',
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cookin da cracky-crack',
|
||||
cook = 'Meesa cookin crack',
|
||||
targetBag = 'Baggin da crack',
|
||||
bag = 'Meesa baggin crack',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Gettin da deliver mission',
|
||||
targetOpenShop = 'Openin da dealer shop',
|
||||
shopHeader = 'Dealer shop, okeeday',
|
||||
targetHandOff = 'Handin da package to da dealer',
|
||||
delivering = 'Meesa givin da package to da drug dealer',
|
||||
alreadyDelivering = 'Yousa already doin a delivery, okeeday',
|
||||
slowAf = 'Yousa too slow, oh no!',
|
||||
newDealerHelp = {
|
||||
help = 'Placina dealer',
|
||||
name = 'Dealer name',
|
||||
timeMin = 'Da minimum time',
|
||||
timeMax = 'Da maximum time',
|
||||
},
|
||||
DealerExists = 'Dis dealer already existin!',
|
||||
deleteDealer = {
|
||||
help = 'Deletin a dealer',
|
||||
name = 'Dealer name',
|
||||
},
|
||||
deleteDealerSuccess = 'Meesa deletin da dealer!',
|
||||
deleteDealerFail = 'Nosa! Failed deletin da dealer!',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Pickin da heroin plant',
|
||||
picking = 'Meesa pickin da heroin',
|
||||
targetCook = 'Cookin da heroin',
|
||||
pbCook = 'Meesa cookin heroin up',
|
||||
targetPickup = 'Pickin up da lab',
|
||||
pbPickup = 'Meesa pickin up lab',
|
||||
targetClean = 'Cleanin da lab',
|
||||
pbClean = 'Meesa cleanin da lab',
|
||||
targetDry = 'Dryin da plant',
|
||||
pbDry = 'Meesa dryin out plant',
|
||||
targetCutHeroin = 'Cuttin heroin',
|
||||
pbCutHeroin = 'Meesa cuttin heroin',
|
||||
targetBuyKit = 'Buyin da heroin kit',
|
||||
pbBuyKit = 'Meesa buyin da heroin kit',
|
||||
tableout = 'Yousa already havin a table out!',
|
||||
placing = 'Placin down table',
|
||||
targetFill = 'Fillin syringe',
|
||||
pbFill = 'Meesa fillin syringe',
|
||||
hasKitAlready = 'Yousa already havin a kit',
|
||||
notEnoughMoney = 'Yousa needin %s credits for dis',
|
||||
placedKit = 'Yousa placed down da kit',
|
||||
failed = 'Oh no! Yousa fail makin heroin, lost all da stuff!',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Stealin from da truck',
|
||||
startMission = 'Startin lean mission',
|
||||
notOnRun = 'Yousa not on no lean run',
|
||||
alreadyChasing = 'Yousa already chasin a truck!',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Heat up da LSD',
|
||||
heating = 'Meesa heating da LSD',
|
||||
targetRefine = 'Refine da acid',
|
||||
refining = 'Refinin da acid',
|
||||
targetDipping = 'Dippin tabs',
|
||||
dipping = 'Meesa dippin tabs',
|
||||
targetPickup = 'Pickin up da lab kit',
|
||||
packup = 'Packin da lab kit',
|
||||
targetClean = 'Cleanin da lab kit',
|
||||
needCleaning = 'Yousa needin a cleanin kit',
|
||||
cleaning = 'Meesa cleanin lab kit',
|
||||
targetLys = 'Stealin lysergic acid',
|
||||
stealLys = 'Meesa stealin da acid',
|
||||
targetDie = 'Stealin diethylamide',
|
||||
stealDie = 'Meesa stealin da diethylamide',
|
||||
targetBuyTab = 'Buyin da tab paper',
|
||||
targetBuyKit = 'Buyin da LSD kit',
|
||||
alreadyOwn = 'Yousa already havin dis ting',
|
||||
buyingKit = 'Meesa buyin da LSD kit',
|
||||
tableout = 'Yousa already havin table out!',
|
||||
placing = 'Placin da kit down!',
|
||||
failed = 'Yousa suck makin da drugs, okeeday',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Pickin cactus',
|
||||
picking = 'Meesa pickin cactus',
|
||||
targetDry = 'Dryin cactus',
|
||||
dry = 'Meesa dryin cactus',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Yousa already chasin da truck',
|
||||
targetStealFromCar = 'Stealin from meth car',
|
||||
targetHeist = 'Startin meth mission',
|
||||
started = 'Yousa already cookin meth',
|
||||
increaseHeat = 'Yousa increasin da heat',
|
||||
targetBag = 'Baggin meth',
|
||||
targetCook = 'Cookin meth',
|
||||
targetGrabTray = 'Grabbin da tray',
|
||||
targetHeat = 'Adjustin da dials',
|
||||
targetSmash = 'Smashin da tray',
|
||||
targetStealEPH = 'Stealin ephedrine',
|
||||
stealingEPH = 'Meesa stealin ephedrine',
|
||||
targetStealACE = 'Stealin acetone',
|
||||
stealingACE = 'Meesa stealin acetone',
|
||||
notOnRun = 'Yousa not on no meth run',
|
||||
onCooldown = 'Yousa bein on cooldown!',
|
||||
teleIn = 'Enterin da lab',
|
||||
teleOut = 'Leavin da lab',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Dis van hot! Yousa leave it somewhere',
|
||||
targetHandoff = 'Handin da package',
|
||||
handingoff = 'Meesa handin off da package',
|
||||
emptyHands = 'Yousa no carryin nuttin',
|
||||
targetPay = 'Rentin oxy van',
|
||||
keys = 'Da keys in da van',
|
||||
targetGetPackage = 'Grabbin da package',
|
||||
alreadyCarrying = 'Yousa already carryin package',
|
||||
paid = 'Yousa payin %s credits to rent van',
|
||||
notOn = 'Yousa not on no route',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Who meesa givin da prescription to?',
|
||||
title1 = 'Da player name',
|
||||
title2 = 'Prescription',
|
||||
},
|
||||
write = 'Meesa writin prescription',
|
||||
opening = 'Openin da bottle',
|
||||
targetFill = 'Fillin prescription',
|
||||
fill = 'Meesa fillin prescription',
|
||||
canceled = 'Yousa cancel da prescription',
|
||||
unbottle = 'Meesa openin da bottle',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Pickin shroomies',
|
||||
picking = 'Meesa pickin shrooms',
|
||||
eat = 'Meesa eatin shrooms',
|
||||
cancel = 'Nosa, no doin da shrooms',
|
||||
took = 'Yousa takin da shrooms!',
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Pickin da weed',
|
||||
picking = 'Meesa pickin weed',
|
||||
targetDry = 'Dryin da weed',
|
||||
noDry = 'Yousa needin da wet weed',
|
||||
wait = 'Waitin for da weed to dry, okeeday',
|
||||
take = 'Ready to take weed!',
|
||||
targetDryed = 'Pickin up da dry weed',
|
||||
teleportIn = 'Meesa goin in da grow house',
|
||||
teleportOut = 'Meesa leavin da grow house',
|
||||
dabs = 'Meesa doin da dabs',
|
||||
bluntWrap = 'Dippin syrup makin %s',
|
||||
rollBlunt = 'Rollin a %s',
|
||||
targetSales = 'Buyin from da dealer',
|
||||
buying = 'Meesa buyin %s from dealer',
|
||||
itemDoesntExist = 'Nosa, dis ting no exist here',
|
||||
needItem = 'Yousa needin %s for dis',
|
||||
crackBlunt = 'Crackin open da blunt',
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Yousa already wholesalin!',
|
||||
targetBuyer = 'Talkin to da buyer',
|
||||
wholesaling = 'Meesa wholesalin da drugs',
|
||||
uhoh = 'Buyer gettin all sketchy, uh oh!',
|
||||
tooLong = 'Buyer waitin too long!',
|
||||
notEnoughCops = 'Nosa! Not enough cops here',
|
||||
|
||||
count = 'Quantity detected: %s',
|
||||
bonus = 'Quantity bonus: +%s%%',
|
||||
estimate = 'Estimated payout: %s - %s credits',
|
||||
no_drugs = 'Yousa not havin dis ting to sell',
|
||||
ambush = 'Ambush! %s attackers wit %s weapons comin!',
|
||||
complete = 'Sold %s items for %s credits%s',
|
||||
min_quantity = 'Yousa must be sellin at least %s',
|
||||
deal_failed_cleanup = 'Deal failed, yousa tryin again',
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Yousa already havin da press out',
|
||||
settingDown = 'Placin down da press',
|
||||
noPressOut = 'Yousa no havin no press out',
|
||||
targetMake = 'Pressin da pills',
|
||||
making = 'Pressin a %s pill',
|
||||
targetPickup = 'Pickin up da press',
|
||||
picking = 'Meesa pickin up da press',
|
||||
targetStealMDP2P = 'Stealin MDP2P',
|
||||
stealingMDP2P = 'Meesa stealin MDP2P',
|
||||
fail = 'Nosa! Yousa fail dis ting!',
|
||||
targetStealIsosafrole = 'Stealin isosafrole',
|
||||
stealingIsosafrole = 'Meesa stealin isosafrole',
|
||||
targetRaw = 'Makin raw XTC',
|
||||
makingRaw = 'Meesa makin raw XTC',
|
||||
getPress = 'Gettin da press',
|
||||
buySingle = 'Buyin one press for %s credits',
|
||||
buyp = 'Meesa buyin press',
|
||||
targetStamp = 'Stampin da XTC',
|
||||
stamp_desc = 'Stampin %s pills',
|
||||
stamping = 'Stampin %s pills',
|
||||
noPills = 'Yousa not havin no pills to stamp',
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Openin da merchant menu',
|
||||
}
|
||||
|
||||
return Lang
|
||||
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'bIvumtaHbe’ Daq lughDaq',
|
||||
needItems = 'Dochmey lugh DaHutlh',
|
||||
notEnoughMoney = 'HuchlIj machqu’',
|
||||
buySuccess = 'DaSuqta’ %s %s chenmoHmeH $%s',
|
||||
itemMissings = 'DaHutlh Dochmey \n',
|
||||
itemNeeded = 'DaHutlh %s',
|
||||
cooldown = 'yIyep! nomqu’ bIvum',
|
||||
invalidItem = 'Dochvam naDbe’ SuvwI’',
|
||||
onCooldownWarn = '%s tay’mo’ nIDta’ %s ghu’vamDaq (cooldown)',
|
||||
noCops = 'Nii lot cops online, fin sahvot!'
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'coca tI’ jon',
|
||||
picking = 'coca tI’ lupung',
|
||||
targetMakePow = 'cocaine hach',
|
||||
noleaf = 'coca tI’ DaHutlh',
|
||||
makePow = 'tI’ QorwI’powDaq rurchu’',
|
||||
targetCutCoke = 'cocaine polHa’',
|
||||
targetBagCoke = 'cocaine pochHa’',
|
||||
teleIn = 'labDaq yI’el',
|
||||
teleOut = 'labvo’ yImej',
|
||||
needBakingSoda = 'DochvamvaD baking soda DaHutlh'
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'nov vIQoy!',
|
||||
selling = '%s DajonmeH $%s',
|
||||
deny = 'Qo’! bIDoH',
|
||||
wait = 'lojmItDaq lojmIt',
|
||||
nodrugs = 'Dochmey Hutlh',
|
||||
searching = 'nuvmey SamtaH',
|
||||
targetTakeBack = 'DochmeylIj cheghmoH',
|
||||
targetSell = '%s Doch %s jonmeH $%s',
|
||||
targetDeny = 'Qoch',
|
||||
stopped = 'bIQongmo’ bIjonlaHbe’',
|
||||
start = 'SoSlI’ quvmoH!',
|
||||
gotRobbed = 'DochmeylIj jonlu’!',
|
||||
gotBack = 'DochmeylIj Daja’chu’ta’',
|
||||
notEnough = 'Dochvam machqu’ Daghaj',
|
||||
comDes = 'lojmItDaq Dochmey jon'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'crack vuv',
|
||||
cook = 'crack vuvtaH',
|
||||
targetBag = 'crack pochHa’',
|
||||
bag = 'crack pochHa’taH'
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'ngoq Qu’ Hev',
|
||||
targetOpenShop = 'dealer mIch poSmoH',
|
||||
shopHeader = 'dealer mIch',
|
||||
targetHandOff = 'paket nob',
|
||||
delivering = 'paket nobtaH',
|
||||
alreadyDelivering = 'paket naQ DInobtaH',
|
||||
slowAf = 'tughqu’ bIvum!',
|
||||
newDealerHelp = {
|
||||
help = 'dealer ghoS',
|
||||
name = 'dealer pong',
|
||||
timeMin = 'poHHom puS',
|
||||
timeMax = 'poHHom nI’'
|
||||
},
|
||||
DealerExists = 'dealer tu’lu already',
|
||||
deleteDealer = {
|
||||
help = 'dealer qIl',
|
||||
name = 'dealer pong',
|
||||
},
|
||||
deleteDealerSuccess = 'dealer qIlta’',
|
||||
deleteDealerFail = 'dealer qIlHa’'
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'heroin tI’ jon',
|
||||
picking = 'heroin tI’ lupung',
|
||||
targetCook = 'heroin vuv',
|
||||
pbCook = 'heroin vuvtaH',
|
||||
targetPickup = 'lab lupung',
|
||||
pbPickup = 'lab lupungtaH',
|
||||
targetClean = 'lab Say’moH',
|
||||
pbClean = 'lab Say’moHtaH',
|
||||
targetDry = 'tI’ mach puv',
|
||||
pbDry = 'tI’ mach puvtaH',
|
||||
targetCutHeroin = 'heroin polHa’',
|
||||
pbCutHeroin = 'heroin polHa’taH',
|
||||
targetBuyKit = 'heroin lab jan je’',
|
||||
pbBuyKit = 'heroin lab jan je’taH',
|
||||
tableout = 'raS SoHtaH already',
|
||||
placing = 'raS lanlu’taH',
|
||||
targetFill = 'syringe teblI’',
|
||||
pbFill = 'syringe teblI’taH',
|
||||
hasKitAlready = 'lab jan DaHutlh already',
|
||||
notEnoughMoney = 'DochvamvaD $%s Huch DaHutlh',
|
||||
placedKit = 'lab jan Dalanpu’',
|
||||
failed = 'heroin QapHa’pu’, DochmeylIj lujpu’'
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'rutlhDaq Doch jon',
|
||||
startMission = 'lean Qu’ tagh',
|
||||
notOnRun = 'lean Qu’ Daghajbe’',
|
||||
alreadyChasing = 'rutlh Daq DajachtaH already'
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'LSD tujmoH',
|
||||
heating = 'LSD tujtaH',
|
||||
targetRefine = 'acid tetlh',
|
||||
refining = 'acid tetlhtaH',
|
||||
targetDipping = 'tabDaq tlhap',
|
||||
dipping = 'tabDaq tlhaptaH',
|
||||
targetPickup = 'lab jan lupung',
|
||||
packup = 'lab jan nItebHa’moH',
|
||||
targetClean = 'lab jan Say’moH',
|
||||
needCleaning = 'Say’meH jan DaHutlh',
|
||||
cleaning = 'lab jan Say’moHtaH',
|
||||
targetLys = 'lysergic acid jon',
|
||||
stealLys = 'lysergic acid jonlu’taH',
|
||||
targetDie = 'diethylamide jon',
|
||||
stealDie = 'diethylamide jonlu’taH',
|
||||
targetBuyTab = 'tab nav je’',
|
||||
targetBuyKit = 'LSD lab jan je’',
|
||||
alreadyOwn = 'Dochvam Daghaj already',
|
||||
buyingKit = 'lab jan je’taH',
|
||||
tableout = 'raS SoHtaH already',
|
||||
placing = 'lab jan lanlu’taH',
|
||||
failed = 'bIQapbe’! bIjonHa’pu’'
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'cactus jon',
|
||||
picking = 'cactus jonlu’taH',
|
||||
targetDry = 'cactus puv',
|
||||
dry = 'cactus puvtaH'
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'rutlh Daq DajachtaH already',
|
||||
targetStealFromCar = 'meth car jon',
|
||||
targetHeist = 'meth Qu’ tagh',
|
||||
started = 'meth vuvtaH already',
|
||||
increaseHeat = 'tuj nIbtaH',
|
||||
targetBag = 'meth pochHa’',
|
||||
targetCook = 'meth vuv',
|
||||
targetGrabTray = 'meth tray lupung',
|
||||
targetHeat = 'Dial tu’Qom',
|
||||
targetSmash = 'tray Qop',
|
||||
targetStealEPH = 'ephedrine jon',
|
||||
stealingEPH = 'ephedrine jonlu’taH',
|
||||
targetStealACE = 'acetone jon',
|
||||
stealingACE = 'acetone jonlu’taH',
|
||||
notOnRun = 'meth Qu’ Daghajbe’',
|
||||
onCooldown = 'DaH bIQutlh',
|
||||
teleIn = 'labDaq yI’el',
|
||||
teleOut = 'labvo’ yImej'
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'rutlh QIHmoH, pa’ lan',
|
||||
targetHandoff = 'paket nob',
|
||||
handingoff = 'paket nobtaH',
|
||||
emptyHands = 'Doch Daghajbe’',
|
||||
targetPay = 'oxy rutlh rent',
|
||||
keys = 'rutlh QI’meyDaq chaHtaH',
|
||||
targetGetPackage = 'paket lupung',
|
||||
alreadyCarrying = 'paket Daghaj already',
|
||||
paid = 'DaSuqta’ $%s rutlh rentmeH',
|
||||
notOn = 'rutlh Heghajbe’'
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'SoHvaD prescription noblu’ ’Iv?',
|
||||
title1 = 'nuv pong',
|
||||
title2 = 'prescription',
|
||||
},
|
||||
write = 'prescription ghItlh',
|
||||
opening = 'bottle poSmoH',
|
||||
targetFill = 'prescription teblI’',
|
||||
fill = 'prescription teblI’taH',
|
||||
canceled = 'prescription DaqIlHa’',
|
||||
unbottle = 'bottle DaPoSmoHta’'
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'mushroom jon',
|
||||
picking = 'mushroom jonlu’taH',
|
||||
eat = 'mushroom Sop',
|
||||
cancel = 'mushroom Sopbe’',
|
||||
took = 'mushroom Daje’pu’'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'weed jon',
|
||||
picking = 'weed jonlu’taH',
|
||||
targetDry = 'weed puv',
|
||||
noDry = 'weed bIQ puv DaHutlh',
|
||||
wait = 'weed puv lurgh',
|
||||
take = 'weed lupunglaH',
|
||||
targetDryed = 'weed lupung',
|
||||
teleportIn = 'grow house yI’el',
|
||||
teleportOut = 'grow house yImej',
|
||||
dabs = 'dab Qap',
|
||||
bluntWrap = '%s chenmoHmeH syrup Dap',
|
||||
rollBlunt = '%s QorwI’ roll',
|
||||
targetSales = 'dealervo’ je’',
|
||||
buying = '%s dealervo’ DaSuq',
|
||||
itemDoesntExist = 'Dochvam tu’lu’be’',
|
||||
needItem = 'DochvamvaD %s DaHutlh',
|
||||
crackBlunt = 'blunt Qop'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'wholesale naQ already',
|
||||
targetBuyer = 'buyer tlhoch',
|
||||
wholesaling = 'wholesale Qap',
|
||||
uhoh = 'buyer vItlhutlh',
|
||||
tooLong = 'buyer loS nI’qu’',
|
||||
notEnoughCops = 'cop puSqu’',
|
||||
|
||||
count = 'Dochmey mI’: %s',
|
||||
bonus = 'mI’ bonus: +%s%%',
|
||||
estimate = 'payout SeH: $%s - $%s',
|
||||
no_drugs = 'Dochvam Daghajbe’',
|
||||
ambush = 'jonlu’! %s jagh %s nuH lulo’taH',
|
||||
complete = '%s Dochmey jonlu’ $%s%s',
|
||||
min_quantity = 'Dochmey %s puS naQ jonlaH',
|
||||
deal_failed_cleanup = 'jonHa’pu’ – wa’logh nIDlaH'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'press SoHtaH already',
|
||||
settingDown = 'press lanlu’taH',
|
||||
noPressOut = 'press Daghajbe’',
|
||||
targetMake = 'pill QorwI’',
|
||||
making = '%s QorwI’taH',
|
||||
targetPickup = 'press lupung',
|
||||
picking = 'press lupungtaH',
|
||||
targetStealMDP2P = 'MDP2P jon',
|
||||
stealingMDP2P = 'MDP2P jonlu’taH',
|
||||
fail = 'QapHa’pu’! bIjatlhHa’',
|
||||
targetStealIsosafrole = 'isosafrole jon',
|
||||
stealingIsosafrole = 'isosafrole jonlu’taH',
|
||||
targetRaw = 'XTC raw chenmoH',
|
||||
makingRaw = 'XTC raw chenmoHtaH',
|
||||
getPress = 'press Suq',
|
||||
buySingle = 'wa’ press je’ $%s',
|
||||
buyp = 'press je’taH',
|
||||
targetStamp = 'XTC maq',
|
||||
stamp_desc = '%s pill maq',
|
||||
stamping = '%s pill maqtaH',
|
||||
noPills = 'pill unstamped Daghajbe’'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'merchant mIch poSmoH',
|
||||
}
|
||||
|
||||
return Lang
|
||||
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Oi, you ain’t in the damn right spot',
|
||||
needItems = 'You don’t even have the shit you need',
|
||||
notEnoughMoney = 'You’re too broke, loser',
|
||||
buySuccess = 'Finally bought %s %s for $%s, smartass',
|
||||
itemMissings = 'You need this crap: \n',
|
||||
itemNeeded = 'Get your hands on %s, idiot',
|
||||
cooldown = 'Slow your ass down, speed freak',
|
||||
invalidItem = 'This crap ain’t sold here, dumbfuck',
|
||||
onCooldownWarn = '%s tried to run %s while on cooldown, lol',
|
||||
noCops = 'Nosa! Not enough cops online, okeeday!',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Grab that coke leaf, lazy ass',
|
||||
picking = 'Picking the damn leaf',
|
||||
targetMakePow = 'Whip up some cocaine powder',
|
||||
noleaf = 'No leaf? Can’t make shit, genius',
|
||||
makePow = 'Chop those leaves into powder, dumbass',
|
||||
targetCutCoke = 'Cut the damn cocaine',
|
||||
targetBagCoke = 'Bag that shit up',
|
||||
teleIn = 'Step into the lab, dipshit',
|
||||
teleOut = 'Get out of the lab, moron',
|
||||
needBakingSoda = 'You need baking soda for this, noob',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Get out, stranger danger!',
|
||||
selling = 'Selling %s for $%s, cha-ching',
|
||||
deny = 'Hell no, fuck that offer',
|
||||
wait = 'Stand around waiting for a sucker',
|
||||
nodrugs = 'You got no drugs to sell, dumbfuck',
|
||||
searching = 'Scoping for nearby marks',
|
||||
targetTakeBack = 'Take back that crap',
|
||||
targetSell = 'Sell %s of %s for $%s, duh',
|
||||
targetDeny = 'Reject the pathetic offer',
|
||||
stopped = 'Lazy piece of shit can’t sell for shit!',
|
||||
start = 'Go make your mom proud, loser',
|
||||
gotRobbed = 'You got jacked, nerd!',
|
||||
gotBack = 'You got your shit back, finally',
|
||||
notEnough = 'You don’t have enough of this crap',
|
||||
comDes = 'Sell stuff on the corner, dumbass'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cook some crack, shithead',
|
||||
cook = 'Cooking that crack, duh',
|
||||
targetBag = 'Bag up that crap',
|
||||
bag = 'Bagging the crack, moron',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Grab a delivery, lazy bastard',
|
||||
targetOpenShop = 'Open dealer shop, finally',
|
||||
shopHeader = 'Dealer shop, not your playground',
|
||||
targetHandOff = 'Hand over the package, asshole',
|
||||
delivering = 'Handing package to dealer, hurry up',
|
||||
alreadyDelivering = 'You’re already doing a delivery, dipshit',
|
||||
slowAf = 'You took too damn long!',
|
||||
newDealerHelp = {
|
||||
help = 'Place a dealer, lazy fuck',
|
||||
name = 'Dealer name, dumbass',
|
||||
timeMin = 'Min time, asshole',
|
||||
timeMax = 'Max time, moron'
|
||||
},
|
||||
DealerExists = 'Dealer already exists, genius',
|
||||
deleteDealer = {
|
||||
help = 'Delete a dealer, loser',
|
||||
name = 'Dealer name, duh',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer deleted, finally',
|
||||
deleteDealerFail = 'Failed to delete dealer, lol',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Pick heroin, idiot',
|
||||
picking = 'Picking heroin, duh',
|
||||
targetCook = 'Cook heroin, shithead',
|
||||
pbCook = 'Cooking up heroin, finally',
|
||||
targetPickup = 'Pick up lab, dipshit',
|
||||
pbPickup = 'Picking up lab, moron',
|
||||
targetClean = 'Clean the lab, lazy ass',
|
||||
pbClean = 'Cleaning lab, you useless fuck',
|
||||
targetDry = 'Dry out the plant, dumbass',
|
||||
pbDry = 'Drying out the damn plant',
|
||||
targetCutHeroin = 'Cut the heroin, fucker',
|
||||
pbCutHeroin = 'Cutting the heroin, finally',
|
||||
targetBuyKit = 'Buy heroin lab kit, moron',
|
||||
pbBuyKit = 'Buying that kit, dumbass',
|
||||
tableout = 'You already have a table out, loser',
|
||||
placing = 'Placing the damn table down',
|
||||
targetFill = 'Fill the syringe, idiot',
|
||||
pbFill = 'Filling that syringe, moron',
|
||||
hasKitAlready = 'You already have a heroin lab kit, fucker',
|
||||
notEnoughMoney = 'You need $%s cash for this, brokeass',
|
||||
placedKit = 'Placed your heroin kit, finally',
|
||||
failed = 'Failed to make heroin, you fuckup',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Steal from truck, dumbfuck',
|
||||
startMission = 'Start lean mission, asshole',
|
||||
notOnRun = 'You aren’t on a lean run, moron',
|
||||
alreadyChasing = 'Already chasing a truck, lazy ass',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Heating LSD, dipshit',
|
||||
heating = 'Heating up LSD, moron',
|
||||
targetRefine = 'Refine the acid, shithead',
|
||||
refining = 'Refining acid, lazy bastard',
|
||||
targetDipping = 'Dip tabs, idiot',
|
||||
dipping = 'Dipping tabs, dumbass',
|
||||
targetPickup = 'Pick up lab kit, loser',
|
||||
packup = 'Packing up lab kit, finally',
|
||||
targetClean = 'Clean lab kit, moron',
|
||||
needCleaning = 'You need cleaning kit, dumbfuck',
|
||||
cleaning = 'Cleaning lab kit, dipshit',
|
||||
targetLys = 'Steal lysergic acid, asshole',
|
||||
stealLys = 'Stealing lysergic acid, moron',
|
||||
targetDie = 'Steal diethylamide, fucker',
|
||||
stealDie = 'Stealing diethylamide, idiot',
|
||||
targetBuyTab = 'Buy tab paper, lazy ass',
|
||||
targetBuyKit = 'Buy LSD lab kit, dumbfuck',
|
||||
alreadyOwn = 'You already own this crap, loser',
|
||||
buyingKit = 'Buying LSD lab kit, finally',
|
||||
tableout = 'You already have a table out, shithead',
|
||||
placing = 'Placing lab kit down, idiot',
|
||||
failed = 'You suck at making drugs, moron',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Pick cactus, dumbass',
|
||||
picking = 'Picking cactus, idiot',
|
||||
targetDry = 'Dry cactus, lazy fuck',
|
||||
dry = 'Drying cactus, shithead',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Already chasing a truck, asshole',
|
||||
targetStealFromCar = 'Steal from meth car, moron',
|
||||
targetHeist = 'Start meth mission, dipshit',
|
||||
started = 'Already have meth cooking, dumbfuck',
|
||||
increaseHeat = 'You increased the heat, shithead',
|
||||
targetBag = 'Bag meth, lazy ass',
|
||||
targetCook = 'Cook meth, idiot',
|
||||
targetGrabTray = 'Grab meth tray, loser',
|
||||
targetHeat = 'Adjust the dials, fucker',
|
||||
targetSmash = 'Smash the tray, moron',
|
||||
targetStealEPH = 'Steal ephedrine, dumbass',
|
||||
stealingEPH = 'Stealing ephedrine, idiot',
|
||||
targetStealACE = 'Steal acetone, shithead',
|
||||
stealingACE = 'Stealing acetone, dipshit',
|
||||
notOnRun = 'Not on a meth run, moron',
|
||||
onCooldown = 'You’re on cooldown, loser',
|
||||
teleIn = 'Enter the lab, dumbfuck',
|
||||
teleOut = 'Exit the lab, idiot',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Van is hot, leave it somewhere, fucker',
|
||||
targetHandoff = 'Hand off the package, dipshit',
|
||||
handingoff = 'Handing off package, moron',
|
||||
emptyHands = 'You’re not carrying shit, idiot',
|
||||
targetPay = 'Rent oxy van, lazy ass',
|
||||
keys = 'Keys are in the van, dumbfuck',
|
||||
targetGetPackage = 'Grab the package, shithead',
|
||||
alreadyCarrying = 'Already carrying a package, loser',
|
||||
paid = 'Paid $%s to rent van, finally',
|
||||
notOn = 'Not on a route, moron',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Who the fuck gets this prescription?',
|
||||
title1 = 'Player name, asshole',
|
||||
title2 = 'Prescription, dumbfuck',
|
||||
},
|
||||
write = 'Writing prescription, shithead',
|
||||
opening = 'Opening prescription bottle, moron',
|
||||
targetFill = 'Fill prescription, idiot',
|
||||
fill = 'Getting prescription filled, dipshit',
|
||||
canceled = 'You canceled the prescription, loser',
|
||||
unbottle = 'Opened the bottle, fucker',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Pick shrooms, dumbass',
|
||||
picking = 'Picking shrooms, idiot',
|
||||
eat = 'Eating shrooms, shithead',
|
||||
cancel = 'Decided not to do shrooms, loser',
|
||||
took = 'Took some shrooms, fucker!',
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Pick weed, dumbfuck',
|
||||
picking = 'Picking weed, idiot',
|
||||
targetDry = 'Dry weed, shithead',
|
||||
noDry = 'Need wet weed for this, loser',
|
||||
wait = 'Waiting for weed to dry, dipshit...',
|
||||
take = 'Ready to take weed, moron',
|
||||
targetDryed = 'Pick up weed, fucker',
|
||||
teleportIn = 'Enter grow house, asshole',
|
||||
teleportOut = 'Leave grow house, idiot',
|
||||
dabs = 'Doing some dabs, dumbfuck',
|
||||
bluntWrap = 'Dipping syrup to make %s, loser',
|
||||
rollBlunt = 'Rolling a %s, shithead',
|
||||
targetSales = 'Buy from dealer, dipshit',
|
||||
buying = 'Buying %s from dealer, moron',
|
||||
itemDoesntExist = 'Item does not exist here, dumbass',
|
||||
needItem = 'Need a %s for this, fucker',
|
||||
crackBlunt = 'Cracking open a blunt, loser',
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Already wholesaling, asshole',
|
||||
targetBuyer = 'Talk to the buyer, shithead',
|
||||
wholesaling = 'Wholesaling drugs, moron',
|
||||
uhoh = 'Buyer’s getting sketchy, dipshit',
|
||||
tooLong = 'Buyer waited too long, dumbfuck',
|
||||
notEnoughCops = 'Not enough cops on duty, loser',
|
||||
|
||||
count = 'Quantity detected: %s, fucker',
|
||||
bonus = 'Quantity bonus: +%s%%, shithead',
|
||||
estimate = 'Estimated payout: $%s - $%s, moron',
|
||||
no_drugs = 'You don’t have any of this drug, dumbass',
|
||||
ambush = 'Ambush! %s attackers with %s weapons approaching, fucker!',
|
||||
complete = 'Sold %s items for $%s%s, idiot',
|
||||
min_quantity = 'Must sell at least %s items, loser',
|
||||
deal_failed_cleanup = 'Deal failed, try again, dumbfuck',
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'You have a press out already, shithead',
|
||||
settingDown = 'Setting down the press, moron',
|
||||
noPressOut = 'No press out, dumbass',
|
||||
targetMake = 'Press pills, loser',
|
||||
making = 'Pressing a %s, fucker',
|
||||
targetPickup = 'Pick up press, idiot',
|
||||
picking = 'Picking up press, dipshit',
|
||||
targetStealMDP2P = 'Steal MDP2P, asshole',
|
||||
stealingMDP2P = 'Stealing MDP2P, moron',
|
||||
fail = 'Damn dude, you suck, shithead',
|
||||
targetStealIsosafrole = 'Steal isosafrole, dumbfuck',
|
||||
stealingIsosafrole = 'Stealing isosafrole, loser',
|
||||
targetRaw = 'Make raw XTC, fucker',
|
||||
makingRaw = 'Making raw XTC, idiot',
|
||||
getPress = 'Get press, moron',
|
||||
buySingle = 'Buy single press for $%s, shithead',
|
||||
buyp = 'Buying press, dumbass',
|
||||
targetStamp = 'Stamp XTC, loser',
|
||||
stamp_desc = 'Stamp %s pills, fucker',
|
||||
stamping = 'Stamping %s pills, idiot',
|
||||
noPills = 'No unstamped pills, shithead',
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Open merchant menu, asshole',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Je bent niet op de juiste locatie',
|
||||
needItems = 'Je hebt de benodigde items niet',
|
||||
notEnoughMoney = 'Je bent te arm',
|
||||
buySuccess = 'Je hebt %s %s gekocht voor $%s',
|
||||
itemMissings = 'Je hebt nodig: \n',
|
||||
itemNeeded = 'Je hebt %s nodig',
|
||||
cooldown = 'Rustig aan, Speed Racer',
|
||||
invalidItem = 'Dit item wordt hier niet verkocht',
|
||||
onCooldownWarn = '%s probeerde event %s uit te voeren \n terwijl hij/zij in cooldown zat',
|
||||
noCops = 'Niet genoeg politie online',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Cocabladeren plukken',
|
||||
picking = 'Cocabladeren aan het plukken',
|
||||
targetMakePow = 'Cocaïnepoeder maken',
|
||||
noleaf = 'Je hebt een cocablad nodig',
|
||||
makePow = 'Bladeren aan het malen tot poeder',
|
||||
targetCutCoke = 'Cocaïne snijden',
|
||||
targetBagCoke = 'Cocaïne verpakken',
|
||||
teleIn = 'Betreed het lab',
|
||||
teleOut = 'Verlaat het lab',
|
||||
needBakingSoda = 'Je hebt zuiveringszout nodig voor dit proces',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Vreemdelingengevaar!',
|
||||
selling = 'Verkopen van %s voor $%s',
|
||||
deny = 'Deze deal kan me niks schelen',
|
||||
wait = 'Wachten op klant',
|
||||
nodrugs = 'Je hebt geen drugs om te verkopen',
|
||||
searching = 'Zoeken naar klanten in de buurt',
|
||||
targetTakeBack = 'Drugs terugnemen',
|
||||
targetSell = 'Verkoop %s van %s voor $%s',
|
||||
targetDeny = 'Bod weigeren',
|
||||
stopped = 'Je luie reet kan niet eens drugs verkopen!',
|
||||
start = 'Ga je moeder trots maken',
|
||||
gotRobbed = 'Je bent beroofd, sukkel!',
|
||||
gotBack = 'Je hebt je spullen teruggekregen!',
|
||||
notEnough = 'Je hebt hier niet genoeg van',
|
||||
comDes = 'Verkoop spullen op straat'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Crack koken',
|
||||
cook = 'Crack aan het koken',
|
||||
targetBag = 'Crack verpakken',
|
||||
bag = 'Crack aan het verpakken',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Bezorgmissie ophalen',
|
||||
targetOpenShop = 'Dealerwinkel openen',
|
||||
shopHeader = 'Dealerwinkel',
|
||||
targetHandOff = 'Pakket afleveren',
|
||||
delivering = 'Pakket aan dealer aan het overhandigen',
|
||||
alreadyDelivering = 'Je bent al een pakket aan het bezorgen',
|
||||
slowAf = 'Je deed er veel te lang over!',
|
||||
newDealerHelp = {
|
||||
help = 'Plaats een dealer',
|
||||
name = 'Dealer Naam',
|
||||
timeMin = 'Minimum tijd',
|
||||
timeMax = 'Maximum tijd'
|
||||
},
|
||||
DealerExists = 'Dealer bestaat al',
|
||||
deleteDealer = {
|
||||
help = 'Verwijder een dealer',
|
||||
name = 'Dealer Naam',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer verwijderd',
|
||||
deleteDealerFail = 'Kon dealer niet verwijderen',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Heroïne plukken',
|
||||
picking = 'Heroïne aan het plukken',
|
||||
targetCook = 'Heroïne koken',
|
||||
pbCook = 'Heroïne aan het koken',
|
||||
targetPickup = 'Labo ophalen',
|
||||
pbPickup = 'Labo aan het ophalen',
|
||||
targetClean = 'Labo schoonmaken',
|
||||
pbClean = 'Labo aan het schoonmaken',
|
||||
targetDry = 'Plant drogen',
|
||||
pbDry = 'Plant aan het drogen',
|
||||
targetCutHeroin = 'Heroïne snijden',
|
||||
pbCutHeroin = 'Heroïne aan het snijden',
|
||||
targetBuyKit = 'Heroïne labokit kopen',
|
||||
pbBuyKit = 'Heroïne labokit aan het kopen',
|
||||
tableout = 'Je hebt al een tafel neergezet',
|
||||
placing = 'Tafel aan het neerzetten',
|
||||
targetFill = 'Spuits vullen',
|
||||
pbFill = 'Spuits aan het vullen',
|
||||
hasKitAlready = 'Je hebt al een heroïne labokit',
|
||||
notEnoughMoney = 'Je hebt $%s contant nodig voor dit item',
|
||||
placedKit = 'Je hebt je heroïne labokit neergezet',
|
||||
failed = 'Je bent gefaald bij het maken van heroïne en bent je ingrediënten kwijtgeraakt',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Van de vrachtwagen stelen',
|
||||
startMission = 'Lean-missie starten',
|
||||
notOnRun = 'Je bent niet bezig met een Lean-run',
|
||||
alreadyChasing = 'Je bent al een vrachtwagen aan het achtervolgen',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'LSD verwarmen',
|
||||
heating = 'LSD aan het verwarmen',
|
||||
targetRefine = 'Zuur zuiveren',
|
||||
refining = 'Zuur aan het zuiveren',
|
||||
targetDipping = 'Tabletten dopen',
|
||||
dipping = 'Tabletten aan het dopen',
|
||||
targetPickup = 'Labokit ophalen',
|
||||
packup = 'Labokit aan het inpakken',
|
||||
targetClean = 'Labokit schoonmaken',
|
||||
needCleaning = 'Je hebt een schoonmaakkit nodig om het labo schoon te maken',
|
||||
cleaning = 'Labokit aan het schoonmaken',
|
||||
targetLys = 'Lysergeenzuur stelen',
|
||||
stealLys = 'Lysergeenzuur aan het stelen',
|
||||
targetDie = 'Diethylamide stelen',
|
||||
stealDie = 'Diethylamide aan het stelen',
|
||||
targetBuyTab = 'Tabletpapier kopen',
|
||||
targetBuyKit = 'LSD labokit kopen',
|
||||
alreadyOwn = 'Je bezit dit item al',
|
||||
buyingKit = 'LSD labokit aan het kopen',
|
||||
tableout = 'Je hebt al een tafel neergezet',
|
||||
placing = 'Labokit aan het neerzetten!',
|
||||
failed = 'Je bent slecht in het maken van drugs',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Cactus plukken',
|
||||
picking = 'Cactus aan het plukken',
|
||||
targetDry = 'Cactus drogen',
|
||||
dry = 'Cactus aan het drogen',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Je bent al een auto aan het achtervolgen',
|
||||
targetStealFromCar = 'Van de methauto stelen',
|
||||
targetHeist = 'Meth-missie starten',
|
||||
started = 'Je hebt al meth aan het koken',
|
||||
increaseHeat = 'Je hebt de hitte verhoogd',
|
||||
targetBag = 'Meth verpakken',
|
||||
targetCook = 'Meth koken',
|
||||
targetGrabTray = 'Meth-lade pakken',
|
||||
targetHeat = 'Knoppen aanpassen',
|
||||
targetSmash = 'Lade kapotslaan',
|
||||
targetStealEPH = 'Efedrine stelen',
|
||||
stealingEPH = 'Efedrine aan het stelen',
|
||||
targetStealACE = 'Aceton stelen',
|
||||
stealingACE = 'Aceton aan het stelen',
|
||||
notOnRun = 'Je bent niet op een meth-run',
|
||||
onCooldown = 'Je zit in cooldown',
|
||||
teleIn = 'Betreed het lab',
|
||||
teleOut = 'Verlaat het lab',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'De bus is te heet, laat hem ergens achter',
|
||||
targetHandoff = 'Pakket overhandigen',
|
||||
handingoff = 'Pakket aan het overhandigen',
|
||||
emptyHands = 'Je draagt niets',
|
||||
targetPay = 'Oxy-bus huren',
|
||||
keys = 'De sleutels zitten in de bus',
|
||||
targetGetPackage = 'Pakket pakken',
|
||||
alreadyCarrying = 'Je draagt al een pakket',
|
||||
paid = 'Je hebt $%s betaald om de bus te huren',
|
||||
notOn = 'Je bent niet op een route',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Aan wie een recept geven?',
|
||||
title1 = 'Spelernaam',
|
||||
title2 = 'Recept',
|
||||
},
|
||||
write = 'Recept aan het schrijven',
|
||||
opening = 'Receptflesje aan het openen',
|
||||
targetFill = 'Recept invullen',
|
||||
fill = 'Recept aan het invullen',
|
||||
canceled = 'Je hebt het recept geannuleerd',
|
||||
unbottle = 'Je hebt het flesje geopend',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Paddestoelen plukken',
|
||||
picking = 'Paddestoelen aan het plukken',
|
||||
eat = 'Paddestoelen aan het eten',
|
||||
cancel = 'Besloten om geen paddestoelen te nemen',
|
||||
took = 'Je hebt wat paddestoelen genomen!'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Wiet plukken',
|
||||
picking = 'Wiet aan het plukken',
|
||||
targetDry = 'Wiet drogen',
|
||||
noDry = 'Je hebt natte wiet nodig voor dit proces',
|
||||
wait = 'Wachten tot de wiet droog is...',
|
||||
take = 'Klaar om wiet te nemen',
|
||||
targetDryed = 'Wiet oppakken',
|
||||
teleportIn = 'Betreed de kweekruimte',
|
||||
teleportOut = 'Verlaat de kweekruimte',
|
||||
dabs = 'Dabs aan het doen',
|
||||
bluntWrap = 'Siroop aan het dopen om %s te maken',
|
||||
rollBlunt = 'Een %s aan het rollen',
|
||||
targetSales = 'Kopen van de dealer',
|
||||
buying = 'Aan het kopen van %s bij de dealer',
|
||||
itemDoesntExist = 'Dit item bestaat hier niet',
|
||||
needItem = 'Je hebt een %s nodig voor dit proces',
|
||||
crackBlunt = 'Een joint openbreken'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Je bent al groothandelend',
|
||||
targetBuyer = 'Praat met de koper',
|
||||
wholesaling = 'Drugs groothandelend',
|
||||
uhoh = 'De koper wordt nerveus',
|
||||
tooLong = 'De koper heeft te lang gewacht',
|
||||
notEnoughCops = 'Niet genoeg politieagenten op dienst',
|
||||
|
||||
count = 'Gedetecteerde hoeveelheid: %s',
|
||||
bonus = 'Hoeveelheidsbonus: +%s%%',
|
||||
estimate = 'Geschatte uitbetaling: $%s - $%s',
|
||||
no_drugs = 'Je hebt geen van deze drugs om te verkopen',
|
||||
ambush = 'Overval! %s aanvallers met %s wapens naderen!',
|
||||
complete = '%s items verkocht voor $%s%s',
|
||||
min_quantity = 'Je moet minstens %s items verkopen om groothandel te doen',
|
||||
deal_failed_cleanup = 'Deal mislukt — je kunt het opnieuw proberen'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Je hebt al een pers neergezet',
|
||||
settingDown = 'Pers aan het neerzetten',
|
||||
noPressOut = 'Je hebt geen pers neergezet',
|
||||
targetMake = 'Pillen persen',
|
||||
making = 'Een %s aan het persen',
|
||||
targetPickup = 'Pers oppakken',
|
||||
picking = 'Pers aan het oppakken',
|
||||
targetStealMDP2P = 'MDP2P stelen',
|
||||
stealingMDP2P = 'MDP2P aan het stelen',
|
||||
fail = 'Verdomme, je bent hier slecht in',
|
||||
targetStealIsosafrole = 'Isosafrol stelen',
|
||||
stealingIsosafrole = 'Isosafrol aan het stelen',
|
||||
targetRaw = 'Ruwe XTC maken',
|
||||
makingRaw = 'Ruwe XTC aan het maken',
|
||||
getPress = 'Pers ophalen',
|
||||
buySingle = 'Enkele pers kopen voor $%s',
|
||||
buyp = 'Pers aan het kopen',
|
||||
targetStamp = 'XTC stempelen',
|
||||
stamp_desc = '%s pillen aan het stempelen',
|
||||
stamping = '%s pillen aan het stempelen',
|
||||
noPills = 'Je hebt geen ongestempelde pillen'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Handelaarsmenu openen',
|
||||
}
|
||||
|
||||
return Lang
|
||||
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'ouYay Areyay otnay Inyay Ethay Orrectcay Ocationlay',
|
||||
needItems = 'ouYay Oday Otnay Avehay Ethay Equiredray Itemsyay',
|
||||
notEnoughMoney = 'ouYay Ereyay Otay Okebray',
|
||||
buySuccess = 'ouYay Oughtbay %s %s Orfay $%s',
|
||||
itemMissings = 'ouYay Eednay \n',
|
||||
itemNeeded = 'ouYay Eednay %s',
|
||||
cooldown = 'owSlay OwnDay Eedspay AcerRay',
|
||||
invalidItem = 'isThay Itemyay Isyay Otnay Oldsay EreHay',
|
||||
onCooldownWarn = '%s Attemptedyay Otay Unray Eventyay %s \n ilewhay onyay ooldowncay',
|
||||
noCops = 'Nosa! Not enough cops online, okeeday!'
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'ickPay Ocacay Eaflay',
|
||||
picking = 'ickingPay Ocacay Eaflay',
|
||||
targetMakePow = 'akeMay Ocacaineyay Owderpay',
|
||||
noleaf = 'ouYay Eednay Ayay Okecay Eaflay',
|
||||
makePow = 'oppingChay Eaveslay intoyay Owderpay',
|
||||
targetCutCoke = 'utCay Ocacaineyay',
|
||||
targetBagCoke = 'agBay Ocacaineyay',
|
||||
teleIn = 'Enteryay ethay Ablay',
|
||||
teleOut = 'Exityay ethay Ablay',
|
||||
needBakingSoda = 'ouYay Eednay Akingbay Odasay Orfay isThay',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'angerStray angerDay!',
|
||||
selling = 'ellingSay %s orfay $%s',
|
||||
deny = 'uckFay AtThay Offeray',
|
||||
wait = 'aitingWay Orfay Ustomercay',
|
||||
nodrugs = 'ouYay Oday Otnay Avehay Anyyay Ugsdray Otay EllSay',
|
||||
searching = 'earchingSay Orfay Earbynay Ustomerscay',
|
||||
targetTakeBack = 'akeTay AckBay Ugsdray',
|
||||
targetSell = 'ellSay %s Ofyay %s Orfay $%s',
|
||||
targetDeny = 'enyDay Offeray',
|
||||
stopped = 'ourYay Azylay Assyay AntCay Evenyay EllSay Ugsdray!',
|
||||
start = 'oGay AkeMay ourYay OmMay OudPray',
|
||||
gotRobbed = 'ouYay OtGay ObbedRay ErdNay!',
|
||||
gotBack = 'ouYay OtGay ourYay UffStay AckBay!',
|
||||
notEnough = 'ouYay OntDay Avehay Enoughyay Ofyay isThay Itemyay',
|
||||
comDes = 'ellSay ingsThay Onyay Ethay OrnerCay'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'ookCay OmeSay AckCray',
|
||||
cook = 'ookingCay AckCray',
|
||||
targetBag = 'agBay AckCray',
|
||||
bag = 'aggingBay AckCray',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'etGay EliveryDay IssionMay',
|
||||
targetOpenShop = 'Openyay EalerDay OpShay',
|
||||
shopHeader = 'EalerDay OpShay',
|
||||
targetHandOff = 'andHay Offyay EliveryDay',
|
||||
delivering = 'andingHay Ethay AckagePay Otay Ugdray EalerDay',
|
||||
alreadyDelivering = 'ouYay Areyay Alreadyyay EliveringDay Ayay AckagePay',
|
||||
slowAf = 'ouYay OokTay Otay OngLay!',
|
||||
newDealerHelp = {
|
||||
help = 'acePlay Ayay EalerDay',
|
||||
name = 'EalerDay Amenay',
|
||||
timeMin = 'inimumMay ImeTay',
|
||||
timeMax = 'aximumMay ImeTay'
|
||||
},
|
||||
DealerExists = 'EalerDay Alreadyyay Existsyay',
|
||||
deleteDealer = {
|
||||
help = 'eleteDay Ayay EalerDay',
|
||||
name = 'EalerDay Amenay',
|
||||
},
|
||||
deleteDealerSuccess = 'eletedDay EalerDay',
|
||||
deleteDealerFail = 'ailedFay Otay eleteDay EalerDay',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'ickPay EroinHay',
|
||||
picking = 'ickingPay EroinHay',
|
||||
targetCook = 'ookCay EroinHay',
|
||||
pbCook = 'ookingCay Upyay EroinHay',
|
||||
targetPickup = 'ickPay Upyay Ablay',
|
||||
pbPickup = 'ickingPay Upyay Ablay',
|
||||
targetClean = 'eanClay Ablay',
|
||||
pbClean = 'eaningClay Ablay',
|
||||
targetDry = 'yDray Outyay AntPlay',
|
||||
pbDry = 'ryingDay Outyay AntPlay',
|
||||
targetCutHeroin = 'utCay EroinHay',
|
||||
pbCutHeroin = 'uttingCay EroinHay',
|
||||
targetBuyKit = 'uyBay EroinHay Ablay ItKay',
|
||||
pbBuyKit = 'uyingBay EroinHay Ablay ItKay',
|
||||
tableout = 'ouYay Alreadyyay Avehay Ayay AbleTay Outyay',
|
||||
placing = 'acingPlay OwnDay AbleTay',
|
||||
targetFill = 'illFay Yringesay',
|
||||
pbFill = 'illingFay Yringesay',
|
||||
hasKitAlready = 'ouYay Alreadyyay Avehay Ayay EroinHay Ablay ItKay',
|
||||
notEnoughMoney = 'ouYay Eednay $%s Inyay AshCay Orfay isThay',
|
||||
placedKit = 'ouYay AcedPlay OwnDay ourYay EroinHay Ablay ItKay',
|
||||
failed = 'ouYay ailedFay Otay AkeMay EroinHay Andyay OstLay ourYay Ingredientsyay',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'ealStay Omfray UckTray',
|
||||
startMission = 'artStay EanLay IssionMay',
|
||||
notOnRun = 'ouYay Areyay Otnay Onyay Ayay EanLay UnRay',
|
||||
alreadyChasing = 'ouYay Areyay Alreadyyay AsingChay Ayay UckTray',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'eatingHay LSD',
|
||||
heating = 'eatingHay Upyay LSD',
|
||||
targetRefine = 'efineRay Ethay Acidyay',
|
||||
refining = 'efiningRay Ethay Acidyay',
|
||||
targetDipping = 'ipDay AbsTay',
|
||||
dipping = 'ippingDay AbsTay',
|
||||
targetPickup = 'ickPay Upyay Ablay ItKay',
|
||||
packup = 'ackingPay Upyay Ablay ItKay',
|
||||
targetClean = 'eanClay Ablay ItKay',
|
||||
needCleaning = 'ouYay Eednay Ayay EaningClay ItKay Otay EanClay Ethay Ablay',
|
||||
cleaning = 'eaningClay Ablay ItKay',
|
||||
targetLys = 'ealStay YsergicLay Acidyay',
|
||||
stealLys = 'ealingStay YsergicLay Acidyay',
|
||||
targetDie = 'ealStay iethylamideDay',
|
||||
stealDie = 'ealingStay iethylamideDay',
|
||||
targetBuyTab = 'uyBay AbTay AperPay',
|
||||
targetBuyKit = 'uyBay LSD Ablay ItKay',
|
||||
alreadyOwn = 'ouYay Alreadyyay Ownyay isThay Itemyay',
|
||||
buyingKit = 'uyingBay LSD Ablay ItKay',
|
||||
tableout = 'ouYay Alreadyyay Avehay Ayay AbleTay Outyay',
|
||||
placing = 'acingPlay Ablay ItKay OwnDay!',
|
||||
failed = 'ouYay UcksSay Atyay AkingMay UgsDray',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'ickPay ActusCay',
|
||||
picking = 'ickingPay ActusCay',
|
||||
targetDry = 'yDray ActusCay',
|
||||
dry = 'ryingDay ActusCay',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'ouYay Alreadyyay Areyay AsingChay Ayay UckTray',
|
||||
targetStealFromCar = 'ealStay Omfray EthMay ArCay',
|
||||
targetHeist = 'artStay EthMay IssionMay',
|
||||
started = 'ouYay Alreadyyay Avehay EthMay OokingCay',
|
||||
increaseHeat = 'ouYay Increasedyay Ethay EatHay',
|
||||
targetBag = 'agBay EthMay',
|
||||
targetCook = 'ookCay EthMay',
|
||||
targetGrabTray = 'abGray EthMay AyTray',
|
||||
targetHeat = 'adjustyay Ethay IalsDay',
|
||||
targetSmash = 'ashSmay Ethay AyTray',
|
||||
targetStealEPH = 'ealStay Ephedrineyay',
|
||||
stealingEPH = 'ealingStay Ephedrineyay',
|
||||
targetStealACE = 'ealStay Acetoneyay',
|
||||
stealingACE = 'ealingStay Acetoneyay',
|
||||
notOnRun = 'ouYay Areyay Otnay Onyay Ayay EthMay UnRay',
|
||||
onCooldown = 'ouYay Areyay Onyay Ayay OoldownCay',
|
||||
teleIn = 'Enteryay Ethay Ablay',
|
||||
teleOut = 'Exityay Ethay Ablay',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Ethay AnVay Isyay OtHay, Eavelay Ityay Omewheresay',
|
||||
targetHandoff = 'andHay Offyay Ethay AckagePay',
|
||||
handingoff = 'andingHay Offyay Ethay AckagePay',
|
||||
emptyHands = 'ouYay Areyay Otnay ArryingCay Anythingyay',
|
||||
targetPay = 'entRay Oxyyay AnVay',
|
||||
keys = 'Ethay Eyskay Areyay Inyay Ethay AnVay',
|
||||
targetGetPackage = 'abGray AckagePay',
|
||||
alreadyCarrying = 'ouYay Areyay Alreadyyay ArryingCay Ayay AckagePay',
|
||||
paid = 'ouYay AidPay $%s Otay EntRay Ethay AnVay',
|
||||
notOn = 'ouYay Areyay Otnay Onyay Ayay OuteRay',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'oWhay Otay IveGay Ayay EscriptionPray Otyay?',
|
||||
title1 = 'ayerPlay Amenay',
|
||||
title2 = 'escriptionPray',
|
||||
},
|
||||
write = 'itingWray EscriptionPray',
|
||||
opening = 'openingyay EscriptionPray OttleBay',
|
||||
targetFill = 'illFay EscriptionPray',
|
||||
fill = 'ettingGay EscriptionPray IlledFay',
|
||||
canceled = 'ouYay AnceledCay Ethay EscriptionPray',
|
||||
unbottle = 'ouYay Openedyay Ethay OttleBay',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'ickPay RoomsShay',
|
||||
picking = 'ickingPay RoomsShay',
|
||||
eat = 'eatingyay RoomsShay',
|
||||
cancel = 'ecidedDay Otay Otnay Oday RoomsShay',
|
||||
took = 'ouYay OokTay Omesay RoomsShay!',
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'ickPay EedWay',
|
||||
picking = 'ickingPay EedWay',
|
||||
targetDry = 'yDray EedWay',
|
||||
noDry = 'ouYay Eednay EtWay EedWay Orfay isThay',
|
||||
wait = 'aitingWay Orfay EedWay Otay yDray...',
|
||||
take = 'eadyRay Otay AkeTay EedWay',
|
||||
targetDryed = 'ickupPay EedWay',
|
||||
teleportIn = 'Enteryay Ethay OwGray OuseHay',
|
||||
teleportOut = 'eaveLay Ethay OwGray OuseHay',
|
||||
dabs = 'oingDay Omesay AbsDay',
|
||||
bluntWrap = 'ippingDay YrupSay Otay AkeMay %s',
|
||||
rollBlunt = 'ollingRay Ayay %s',
|
||||
targetSales = 'uyBay Omfray EalerDay',
|
||||
buying = 'uyingBay %s Omfray EalerDay',
|
||||
itemDoesntExist = 'isThay Itemyay OesDay Otnay Existyay EreHay',
|
||||
needItem = 'ouYay Eednay Ayay %s Orfay isThay',
|
||||
crackBlunt = 'ackingCray Openyay Ayay UntBlay'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Alreadyyay OlesalingWhay',
|
||||
targetBuyer = 'alkTay Otay Ethay UyerBay',
|
||||
wholesaling = 'olesalingWhay UgsDray',
|
||||
uhoh = 'Ethay UyerBay Isyay EttingGay EtchySkay',
|
||||
tooLong = 'Ethay UyerBay AitedWay Otay OngLay',
|
||||
notEnoughCops = 'Otnay Enoughyay OpsCay Onyay UtyDay',
|
||||
|
||||
count = 'antityQuay EtectedDay: %s',
|
||||
bonus = 'antityQuay OnusBay: +%s%%',
|
||||
estimate = 'Estimatedyay AyoutPay: $%s - $%s',
|
||||
no_drugs = 'ouYay Oday Otnay Avehay Anyyay Ofyay isthay UgDray Otay EllSay',
|
||||
ambush = 'Ambushyay! %s attackersyay ithway %s eaponsway areyay approachingyay!',
|
||||
complete = 'oldSay %s itemsyay orfay $%s%s',
|
||||
min_quantity = 'ouYay Ustmay EllSay Atlay Eastyay %s itemsyay Otay OlesaleWhay',
|
||||
deal_failed_cleanup = 'EalDay ailedFay - ouyay ancay ytray againyay'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'ouYay Avehay Ayay EssPray Outyay Alreadyyay',
|
||||
settingDown = 'ettingSay OwnDay Ethay EssPray',
|
||||
noPressOut = 'ouYay Oday Otnay Avehay Ayay EssPray Outyay',
|
||||
targetMake = 'essPray IllsPay',
|
||||
making = 'essingPray Ayay %s',
|
||||
targetPickup = 'ickPay Upyay EssPray',
|
||||
picking = 'ickingPay Upyay EssPray',
|
||||
targetStealMDP2P = 'ealStay MDP2Pyay',
|
||||
stealingMDP2P = 'ealingStay MDP2Pyay',
|
||||
fail = 'amnDay UdeDay ouYay UcksSay',
|
||||
targetStealIsosafrole = 'ealStay Isosafroleyay',
|
||||
stealingIsosafrole = 'ealingStay Isosafroleyay',
|
||||
targetRaw = 'akeMay AwRay XTCyay',
|
||||
makingRaw = 'akingMay AwRay XTCyay',
|
||||
getPress = 'etGay EssPray',
|
||||
buySingle = 'uyBay IngleSay EssPray Orfay $%s',
|
||||
buyp = 'uyingBay EssPray',
|
||||
targetStamp = 'ampStay XTCyay',
|
||||
stamp_desc = 'ampStay %s IllsPay',
|
||||
stamping = 'ampingStay %s IllsPay',
|
||||
noPills = 'ouYay OntDay Avehay Anyyay Unstampedyay IllsPay'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Openyay ErchantMay EnuMay',
|
||||
}
|
||||
|
||||
return Lang
|
||||
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Ye be not in the right port, matey!',
|
||||
needItems = 'Ye be lackin’ the proper booty',
|
||||
notEnoughMoney = 'Ye pockets be emptier than Davey Jones’ locker',
|
||||
buySuccess = 'Ye plundered %s %s fer $%s',
|
||||
itemMissings = 'Ye be needin’ \n',
|
||||
itemNeeded = 'Ye be needin’ %s',
|
||||
cooldown = 'Avast! Slow yer sails, sailor!',
|
||||
invalidItem = 'This booty ain’t sold on these seas',
|
||||
onCooldownWarn = '%s tried to run the voyage %s \n while the crew be restin’',
|
||||
noCops = 'Not enough watchmen on duty, yarrr!'
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Pluck the coca leaf',
|
||||
picking = 'Plunderin’ coca leaves',
|
||||
targetMakePow = 'Grind the white powder',
|
||||
noleaf = 'Ye need a coca leaf, swabbie!',
|
||||
makePow = 'Choppin’ leaves inta powder',
|
||||
targetCutCoke = 'Carve up the cocaine',
|
||||
targetBagCoke = 'Stash cocaine in sacks',
|
||||
teleIn = 'Sneak inta the secret hold',
|
||||
teleOut = 'Slip outta the secret hold',
|
||||
needBakingSoda = 'Ye be needin’ bakin’ soda fer this, yarrr'
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Stranger danger, ye scallywag!',
|
||||
selling = 'Hawk’n %s fer $%s',
|
||||
deny = 'Blimey, shove that deal!',
|
||||
wait = 'Waitin’ fer a matey with coin',
|
||||
nodrugs = 'Ye hold no contraband, landlubber',
|
||||
searching = 'Scoutin’ fer passin’ sailors',
|
||||
targetTakeBack = 'Snatch back the goods',
|
||||
targetSell = 'Trade %s o’ %s fer $%s',
|
||||
targetDeny = 'Turn down the offer',
|
||||
stopped = 'Ye lazy bilge rat, can’t even peddle the wares!',
|
||||
start = 'Go make yer mum proud, lad',
|
||||
gotRobbed = 'Ye been plundered, ye sorry dog!',
|
||||
gotBack = 'Ye reclaimed yer booty!',
|
||||
notEnough = 'Ye don’t hold enough o’ this booty',
|
||||
comDes = 'Sellin’ goods on the street corner, yarrr'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cook some crack in the galley',
|
||||
cook = 'Brewin’ crack on the stove',
|
||||
targetBag = 'Stash the crack',
|
||||
bag = 'Stashin’ the crack, yarrr',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Snag a smuggler’s run',
|
||||
targetOpenShop = 'Open the dealer’s chest',
|
||||
shopHeader = 'Dealer’s Market',
|
||||
targetHandOff = 'Hand off the cargo',
|
||||
delivering = 'Passin’ the package to a shady sailor',
|
||||
alreadyDelivering = 'Ye already got a run, bucko',
|
||||
slowAf = 'Too slow, ye barnacle brain!',
|
||||
newDealerHelp = {
|
||||
help = 'Drop anchor a dealer',
|
||||
name = 'Dealer’s Name',
|
||||
timeMin = 'Shortest tide',
|
||||
timeMax = 'Longest tide'
|
||||
},
|
||||
DealerExists = 'That dealer’s already sailin’',
|
||||
deleteDealer = {
|
||||
help = 'Scuttle a dealer',
|
||||
name = 'Dealer’s Name',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer scuttled to the depths',
|
||||
deleteDealerFail = 'The dealer lives yet, yarrr',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Pick the poppy treasure',
|
||||
picking = 'Harvestin’ heroin booty',
|
||||
targetCook = 'Brew the heroin stew',
|
||||
pbCook = 'Cookin’ up heroin grog',
|
||||
targetPickup = 'Snatch the lab chest',
|
||||
pbPickup = 'Packin’ up the lab',
|
||||
targetClean = 'Swab the lab deck',
|
||||
pbClean = 'Swabbin’ down the lab',
|
||||
targetDry = 'Dry out the devil’s weed',
|
||||
pbDry = 'Hangin’ plants to dry',
|
||||
targetCutHeroin = 'Slice the heroin',
|
||||
pbCutHeroin = 'Cuttin’ heroin',
|
||||
targetBuyKit = 'Buy a heroin galley kit',
|
||||
pbBuyKit = 'Buyin’ the galley kit',
|
||||
tableout = 'Ye already got a table out, matey',
|
||||
placing = 'Droppin’ the galley table',
|
||||
targetFill = 'Fill a syringe',
|
||||
pbFill = 'Filling the syringe',
|
||||
hasKitAlready = 'Ye already got a heroin galley kit',
|
||||
notEnoughMoney = 'Ye need $%s in coin fer this',
|
||||
placedKit = 'Ye set yer galley kit down',
|
||||
failed = 'Ye bungled the brew an’ lost yer stash',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Plunder the cargo wagon',
|
||||
startMission = 'Set sail on a lean run',
|
||||
notOnRun = 'Ye be not on a lean voyage',
|
||||
alreadyChasing = 'Ye be already tailin’ a wagon',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Heat the acid grog',
|
||||
heating = 'Stokin’ the acid fire',
|
||||
targetRefine = 'Refine the devil’s brew',
|
||||
refining = 'Refinin’ the acid',
|
||||
targetDipping = 'Dip the cursed tabs',
|
||||
dipping = 'Dippin’ tabs',
|
||||
targetPickup = 'Snatch the lab kit',
|
||||
packup = 'Stashin’ the lab kit',
|
||||
targetClean = 'Scrub the lab kit',
|
||||
needCleaning = 'Ye need a scrub kit to swab this lab',
|
||||
cleaning = 'Swabbin’ the lab kit',
|
||||
targetLys = 'Steal lysergic acid booty',
|
||||
stealLys = 'Snatchin’ lysergic acid',
|
||||
targetDie = 'Steal diethylamide loot',
|
||||
stealDie = 'Snatchin’ diethylamide',
|
||||
targetBuyTab = 'Buy tab parchment',
|
||||
targetBuyKit = 'Buy LSD lab kit',
|
||||
alreadyOwn = 'Ye already hold this booty',
|
||||
buyingKit = 'Buyin’ LSD galley kit',
|
||||
tableout = 'Ye already got a table out',
|
||||
placing = 'Plantin’ the lab kit',
|
||||
failed = 'Ye botched the brew, yarrr',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Harvest the cactus booty',
|
||||
picking = 'Pluckin’ cactus',
|
||||
targetDry = 'Dry the cactus flesh',
|
||||
dry = 'Dryin’ cactus',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Ye already be chasin’ a wagon',
|
||||
targetStealFromCar = 'Plunder the meth cart',
|
||||
targetHeist = 'Set sail on a meth run',
|
||||
started = 'Ye already be brewin’ meth, matey',
|
||||
increaseHeat = 'Ye stoked the fire hotter',
|
||||
targetBag = 'Bag the meth booty',
|
||||
targetCook = 'Cook the meth stew',
|
||||
targetGrabTray = 'Snatch the meth tray',
|
||||
targetHeat = 'Twist the dials',
|
||||
targetSmash = 'Smash the tray',
|
||||
targetStealEPH = 'Steal ephedrine booty',
|
||||
stealingEPH = 'Snatchin’ ephedrine',
|
||||
targetStealACE = 'Steal acetone booty',
|
||||
stealingACE = 'Snatchin’ acetone',
|
||||
notOnRun = 'Ye be not on a meth run',
|
||||
onCooldown = 'Ye be coolin’ yer heels, yarrr',
|
||||
teleIn = 'Sneak into the meth galley',
|
||||
teleOut = 'Slip outta the meth galley',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'The wagon be too hot, stash it away',
|
||||
targetHandoff = 'Hand off the cursed cargo',
|
||||
handingoff = 'Passin’ the package',
|
||||
emptyHands = 'Ye be carryin’ nothin’, bilge rat',
|
||||
targetPay = 'Rent an oxy wagon',
|
||||
keys = 'The keys be in the wagon, matey',
|
||||
targetGetPackage = 'Snatch a parcel',
|
||||
alreadyCarrying = 'Ye already be carryin’ a parcel',
|
||||
paid = 'Ye paid $%s to rent the wagon',
|
||||
notOn = 'Ye be not on a smuggler’s route',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Who gets this magic scroll?',
|
||||
title1 = 'Sailor’s Name',
|
||||
title2 = 'Prescription',
|
||||
},
|
||||
write = 'Scrawlin’ a prescription',
|
||||
opening = 'Poppin’ open the medicine chest',
|
||||
targetFill = 'Fill the prescription',
|
||||
fill = 'Fetchin’ the potion',
|
||||
canceled = 'Ye canceled the scroll',
|
||||
unbottle = 'Ye popped open the potion flask',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Harvest the magic shrooms',
|
||||
picking = 'Pluckin’ shrooms',
|
||||
eat = 'Munchin’ shrooms, yarrr',
|
||||
cancel = 'Changed yer mind on the shrooms',
|
||||
took = 'Ye ate the shrooms, matey!',
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Harvest the devil’s lettuce',
|
||||
picking = 'Pluckin’ weed',
|
||||
targetDry = 'Dry the weed booty',
|
||||
noDry = 'Ye need wet weed fer this, swabbie',
|
||||
wait = 'Waitin’ fer the weed to dry...',
|
||||
take = 'Time to snatch the weed',
|
||||
targetDryed = 'Pick up the weed stash',
|
||||
teleportIn = 'Sneak into the grow cabin',
|
||||
teleportOut = 'Slip outta the grow cabin',
|
||||
dabs = 'Dabbin’ the wax, yarrr',
|
||||
bluntWrap = 'Dippin’ syrup to make %s',
|
||||
rollBlunt = 'Rollin’ a %s',
|
||||
targetSales = 'Buy off a shady dealer',
|
||||
buying = 'Buyin’ %s from a dealer',
|
||||
itemDoesntExist = 'This booty be not here',
|
||||
needItem = 'Ye need a %s fer this',
|
||||
crackBlunt = 'Crackin’ open a blunt',
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Ye already be tradin’ in bulk',
|
||||
targetBuyer = 'Speak to the buyer',
|
||||
wholesaling = 'Sellin’ contraband by the chest',
|
||||
uhoh = 'The buyer looks shifty, yarrr',
|
||||
tooLong = 'The buyer grew weary o’ waitin’',
|
||||
notEnoughCops = 'Not enough watchmen on duty',
|
||||
|
||||
count = 'Booty counted: %s',
|
||||
bonus = 'Bonus fer quantity: +%s%%',
|
||||
estimate = 'Ye may get $%s - $%s',
|
||||
no_drugs = 'Ye hold none o’ this contraband',
|
||||
ambush = 'An ambush! %s rogues with %s weapons approach!',
|
||||
complete = 'Sold %s booty fer $%s%s',
|
||||
min_quantity = 'Ye must sell at least %s to wholesale',
|
||||
deal_failed_cleanup = 'The trade sank – try again later',
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Ye already got a press out, matey',
|
||||
settingDown = 'Droppin’ the press',
|
||||
noPressOut = 'Ye got no press, bilge rat',
|
||||
targetMake = 'Press the pills',
|
||||
making = 'Pressin’ a %s',
|
||||
targetPickup = 'Snatch up the press',
|
||||
picking = 'Grabbin’ the press',
|
||||
targetStealMDP2P = 'Snatch the MDP2P booty',
|
||||
stealingMDP2P = 'Stealin’ MDP2P',
|
||||
fail = 'By thunder, ye be useless!',
|
||||
targetStealIsosafrole = 'Snatch isosafrole booty',
|
||||
stealingIsosafrole = 'Stealin’ isosafrole',
|
||||
targetRaw = 'Cook raw XTC grog',
|
||||
makingRaw = 'Brewin’ raw XTC',
|
||||
getPress = 'Fetch a press',
|
||||
buySingle = 'Buy a single press fer $%s',
|
||||
buyp = 'Buyin’ the press',
|
||||
targetStamp = 'Stamp the XTC',
|
||||
stamp_desc = 'Stamp %s pills',
|
||||
stamping = 'Stampin’ %s pills',
|
||||
noPills = 'Ye got no naked pills to stamp',
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Open the trader’s menu',
|
||||
}
|
||||
|
||||
return Lang
|
||||
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Você não está no local correto',
|
||||
needItems = 'Você não tem os itens necessários',
|
||||
notEnoughMoney = 'Você tá muito liso',
|
||||
buySuccess = 'Você comprou %s %s por $%s',
|
||||
itemMissings = 'Você precisa de \n',
|
||||
itemNeeded = 'Você precisa de %s',
|
||||
cooldown = 'Calma, Speed Racer',
|
||||
invalidItem = 'Este item não é vendido aqui',
|
||||
onCooldownWarn = '%s tentou executar o evento %s \n enquanto estava em cooldown',
|
||||
noCops = 'Poucos policiais online',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Colher folhas de coca',
|
||||
picking = 'Colhendo folhas de coca',
|
||||
targetMakePow = 'Fazer pó de cocaína',
|
||||
noleaf = 'Você precisa de uma folha de coca',
|
||||
makePow = 'Moendo folhas em pó',
|
||||
targetCutCoke = 'Cortar cocaína',
|
||||
targetBagCoke = 'Ensacar cocaína',
|
||||
teleIn = 'Entrar no laboratório',
|
||||
teleOut = 'Sair do laboratório',
|
||||
needBakingSoda = 'Você precisa de bicarbonato de sódio para isso',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Perigo de desconhecido!',
|
||||
selling = 'Vendendo %s por $%s',
|
||||
deny = 'Foda-se essa oferta',
|
||||
wait = 'Esperando por cliente',
|
||||
nodrugs = 'Você não tem drogas para vender',
|
||||
searching = 'Procurando por clientes próximos',
|
||||
targetTakeBack = 'Recuperar drogas',
|
||||
targetSell = 'Vender %s de %s por $%s',
|
||||
targetDeny = 'Recusar oferta',
|
||||
stopped = 'Seu bunda mole nem consegue vender droga!',
|
||||
start = 'Vai fazer sua mãe se orgulhar',
|
||||
gotRobbed = 'Você foi roubado, otário!',
|
||||
gotBack = 'Você recuperou suas coisas!',
|
||||
notEnough = 'Você não tem o suficiente desse item',
|
||||
comDes = 'Venda coisas na esquina'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cozinhar crack',
|
||||
cook = 'Cozinhando crack',
|
||||
targetBag = 'Ensacar crack',
|
||||
bag = 'Ensacando crack',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Pegar missão de entrega',
|
||||
targetOpenShop = 'Abrir loja do traficante',
|
||||
shopHeader = 'Loja do Traficante',
|
||||
targetHandOff = 'Entregar encomenda',
|
||||
delivering = 'Entregando o pacote ao traficante',
|
||||
alreadyDelivering = 'Você já está entregando um pacote',
|
||||
slowAf = 'Você demorou demais!',
|
||||
newDealerHelp = {
|
||||
help = 'Colocar um traficante',
|
||||
name = 'Nome do traficante',
|
||||
timeMin = 'Tempo mínimo',
|
||||
timeMax = 'Tempo máximo'
|
||||
},
|
||||
DealerExists = 'Traficante já existe',
|
||||
deleteDealer = {
|
||||
help = 'Deletar um traficante',
|
||||
name = 'Nome do traficante',
|
||||
},
|
||||
deleteDealerSuccess = 'Traficante deletado',
|
||||
deleteDealerFail = 'Falha ao deletar traficante',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Colher heroína',
|
||||
picking = 'Colhendo heroína',
|
||||
targetCook = 'Cozinhar heroína',
|
||||
pbCook = 'Cozinhando heroína',
|
||||
targetPickup = 'Recuperar laboratório',
|
||||
pbPickup = 'Recuperando laboratório',
|
||||
targetClean = 'Limpar laboratório',
|
||||
pbClean = 'Limpando laboratório',
|
||||
targetDry = 'Secar planta',
|
||||
pbDry = 'Secando planta',
|
||||
targetCutHeroin = 'Cortar heroína',
|
||||
pbCutHeroin = 'Cortando heroína',
|
||||
targetBuyKit = 'Comprar kit de laboratório de heroína',
|
||||
pbBuyKit = 'Comprando kit de laboratório de heroína',
|
||||
tableout = 'Você já tem uma mesa montada',
|
||||
placing = 'Montando mesa',
|
||||
targetFill = 'Encher seringa',
|
||||
pbFill = 'Enchendo seringa',
|
||||
hasKitAlready = 'Você já tem um kit de laboratório de heroína',
|
||||
notEnoughMoney = 'Você precisa de $%s em dinheiro para isso',
|
||||
placedKit = 'Você montou seu kit de laboratório de heroína',
|
||||
failed = 'Você falhou em fazer heroína e perdeu os ingredientes',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Roubar do caminhão',
|
||||
startMission = 'Iniciar missão de Lean',
|
||||
notOnRun = 'Você não está em uma missão de Lean',
|
||||
alreadyChasing = 'Você já está perseguindo um caminhão',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Aquecer LSD',
|
||||
heating = 'Aquecendo LSD',
|
||||
targetRefine = 'Refinar o ácido',
|
||||
refining = 'Refinando o ácido',
|
||||
targetDipping = 'Mergulhar comprimidos',
|
||||
dipping = 'Mergulhando comprimidos',
|
||||
targetPickup = 'Recuperar kit de laboratório',
|
||||
packup = 'Guardando kit de laboratório',
|
||||
targetClean = 'Limpar kit de laboratório',
|
||||
needCleaning = 'Você precisa de um kit de limpeza para limpar o laboratório',
|
||||
cleaning = 'Limpando kit de laboratório',
|
||||
targetLys = 'Roubar ácido lisérgico',
|
||||
stealLys = 'Roubando ácido lisérgico',
|
||||
targetDie = 'Roubar dietilamida',
|
||||
stealDie = 'Roubando dietilamida',
|
||||
targetBuyTab = 'Comprar papel para comprimidos',
|
||||
targetBuyKit = 'Comprar kit de laboratório de LSD',
|
||||
alreadyOwn = 'Você já possui este item',
|
||||
buyingKit = 'Comprando kit de laboratório de LSD',
|
||||
tableout = 'Você já tem uma mesa montada',
|
||||
placing = 'Montando kit de laboratório!',
|
||||
failed = 'Você é péssimo em fazer drogas',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Colher cacto',
|
||||
picking = 'Colhendo cacto',
|
||||
targetDry = 'Secar cacto',
|
||||
dry = 'Secando cacto',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Você já está perseguindo um carro',
|
||||
targetStealFromCar = 'Roubar do carro de metanfetamina',
|
||||
targetHeist = 'Iniciar missão de metanfetamina',
|
||||
started = 'Você já tem metanfetamina cozinhando',
|
||||
increaseHeat = 'Você aumentou o calor',
|
||||
targetBag = 'Ensacar metanfetamina',
|
||||
targetCook = 'Cozinhar metanfetamina',
|
||||
targetGrabTray = 'Pegar bandeja de metanfetamina',
|
||||
targetHeat = 'Ajustar os controles',
|
||||
targetSmash = 'Esmagar a bandeja',
|
||||
targetStealEPH = 'Roubar efedrina',
|
||||
stealingEPH = 'Roubando efedrina',
|
||||
targetStealACE = 'Roubar acetona',
|
||||
stealingACE = 'Roubando acetona',
|
||||
notOnRun = 'Você não está em uma missão de metanfetamina',
|
||||
onCooldown = 'Você está em cooldown',
|
||||
teleIn = 'Entrar no laboratório',
|
||||
teleOut = 'Sair do laboratório',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'A van tá quente, deixe ela em algum lugar',
|
||||
targetHandoff = 'Entregar o pacote',
|
||||
handingoff = 'Entregando o pacote',
|
||||
emptyHands = 'Você não está carregando nada',
|
||||
targetPay = 'Alugar van de Oxy',
|
||||
keys = 'As chaves estão dentro da van',
|
||||
targetGetPackage = 'Pegar pacote',
|
||||
alreadyCarrying = 'Você já está carregando um pacote',
|
||||
paid = 'Você pagou $%s para alugar a van',
|
||||
notOn = 'Você não está em uma rota',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Para quem passar a receita?',
|
||||
title1 = 'Nome do jogador',
|
||||
title2 = 'Receita',
|
||||
},
|
||||
write = 'Escrevendo receita',
|
||||
opening = 'Abrindo frasco da receita',
|
||||
targetFill = 'Preencher receita',
|
||||
fill = 'Preenchendo receita',
|
||||
canceled = 'Você cancelou a receita',
|
||||
unbottle = 'Você abriu o frasco',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Colher cogumelos',
|
||||
picking = 'Colhendo cogumelos',
|
||||
eat = 'Comendo cogumelos',
|
||||
cancel = 'Decidiu não usar cogumelos',
|
||||
took = 'Você usou alguns cogumelos!'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Colher maconha',
|
||||
picking = 'Colhendo maconha',
|
||||
targetDry = 'Secar maconha',
|
||||
noDry = 'Você precisa de maconha úmida para isso',
|
||||
wait = 'Esperando a maconha secar...',
|
||||
take = 'Pronto para pegar a maconha',
|
||||
targetDryed = 'Pegar maconha seca',
|
||||
teleportIn = 'Entrar na estufa',
|
||||
teleportOut = 'Sair da estufa',
|
||||
dabs = 'Fazendo dabs',
|
||||
bluntWrap = 'Molhando xarope para fazer %s',
|
||||
rollBlunt = 'Enrolando um %s',
|
||||
targetSales = 'Comprar do traficante',
|
||||
buying = 'Comprando %s do traficante',
|
||||
itemDoesntExist = 'Este item não existe aqui',
|
||||
needItem = 'Você precisa de um %s para isso',
|
||||
crackBlunt = 'Quebrando um baseado'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Você já está vendendo no atacado',
|
||||
targetBuyer = 'Falar com o comprador',
|
||||
wholesaling = 'Vendendo drogas no atacado',
|
||||
uhoh = 'O comprador está ficando desconfiado',
|
||||
tooLong = 'O comprador esperou demais',
|
||||
notEnoughCops = 'Policiais insuficientes de plantão',
|
||||
|
||||
count = 'Quantidade detectada: %s',
|
||||
bonus = 'Bônus de quantidade: +%s%%',
|
||||
estimate = 'Pagamento estimado: $%s - $%s',
|
||||
no_drugs = 'Você não tem nenhuma dessas drogas para vender',
|
||||
ambush = 'Emboscada! %s atacantes com %s armas se aproximam!',
|
||||
complete = 'Vendidos %s itens por $%s%s',
|
||||
min_quantity = 'Você precisa vender pelo menos %s itens para vender no atacado',
|
||||
deal_failed_cleanup = 'Negócio falhou — você pode tentar novamente'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Você já tem uma prensa montada',
|
||||
settingDown = 'Montando a prensa',
|
||||
noPressOut = 'Você não tem uma prensa montada',
|
||||
targetMake = 'Prensar pílulas',
|
||||
making = 'Prensando uma %s',
|
||||
targetPickup = 'Recuperar prensa',
|
||||
picking = 'Recuperando prensa',
|
||||
targetStealMDP2P = 'Roubar MDP2P',
|
||||
stealingMDP2P = 'Roubando MDP2P',
|
||||
fail = 'Porra, você é ruim nisso',
|
||||
targetStealIsosafrole = 'Roubar isosafrol',
|
||||
stealingIsosafrole = 'Roubando isosafrol',
|
||||
targetRaw = 'Fazer XTC cru',
|
||||
makingRaw = 'Fazendo XTC cru',
|
||||
getPress = 'Pegar prensa',
|
||||
buySingle = 'Comprar prensa individual por $%s',
|
||||
buyp = 'Comprando prensa',
|
||||
targetStamp = 'Carimbar XTC',
|
||||
stamp_desc = 'Carimbando %s pílulas',
|
||||
stamping = 'Carimbando %s pílulas',
|
||||
noPills = 'Você não tem pílulas sem carimbo'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Abrir menu do comerciante',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Doğru konumda değilsiniz',
|
||||
needItems = 'Gerekli eşyalara sahip değilsiniz',
|
||||
notEnoughMoney = 'Çok fakirsin',
|
||||
buySuccess = '%s adet %s satın aldınız, ücret: $%s',
|
||||
itemMissings = 'Şunlara ihtiyacınız var: \n',
|
||||
itemNeeded = '%s gerekli',
|
||||
cooldown = 'Yavaşla, Speed Racer',
|
||||
invalidItem = 'Bu ürün burada satılmıyor',
|
||||
onCooldownWarn = '%s, %s olayını cooldown süresinde çalıştırmaya çalıştı \n',
|
||||
noCops = 'Yeterli polis çevrimiçi değil',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Koka yaprağı topla',
|
||||
picking = 'Koka yaprağı toplanıyor',
|
||||
targetMakePow = 'Kokain tozu yap',
|
||||
noleaf = 'Bir koka yaprağına ihtiyacın var',
|
||||
makePow = 'Yapraklar toza dönüştürülüyor',
|
||||
targetCutCoke = 'Kokaini kes',
|
||||
targetBagCoke = 'Kokaini paketle',
|
||||
teleIn = 'Laboratuvara gir',
|
||||
teleOut = 'Laboratuvardan çık',
|
||||
needBakingSoda = 'Bunun için kabartma tozu gerekli',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Yabancı tehlikesi!',
|
||||
selling = '%s satılıyor, fiyat: $%s',
|
||||
deny = 'Bu teklifi geç',
|
||||
wait = 'Müşteri bekleniyor',
|
||||
nodrugs = 'Satılacak uyuşturucun yok',
|
||||
searching = 'Yakınlarda müşteri aranıyor',
|
||||
targetTakeBack = 'Uyuşturucuları geri al',
|
||||
targetSell = '%s adet %s sat, fiyat: $%s',
|
||||
targetDeny = 'Teklifi reddet',
|
||||
stopped = 'Tembel götün uyuşturucu bile satamıyor!',
|
||||
start = 'Git anneni gururlandır',
|
||||
gotRobbed = 'Soyuldun, salak!',
|
||||
gotBack = 'Eşyalarını geri aldın!',
|
||||
notEnough = 'Bu eşyadan yeterince yok',
|
||||
comDes = 'Sokakta şeyler sat'
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Crack pişir',
|
||||
cook = 'Crack pişiriliyor',
|
||||
targetBag = 'Crack paketle',
|
||||
bag = 'Crack paketleniyor',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Teslimat görevi al',
|
||||
targetOpenShop = 'Bayi dükkanını aç',
|
||||
shopHeader = 'Bayi Dükkanı',
|
||||
targetHandOff = 'Paketi teslim et',
|
||||
delivering = 'Paketi bayiye teslim ediyorsun',
|
||||
alreadyDelivering = 'Zaten bir paket teslim ediyorsun',
|
||||
slowAf = 'Çok fazla vakit harcadın!',
|
||||
newDealerHelp = {
|
||||
help = 'Bir bayi yerleştir',
|
||||
name = 'Bayi Adı',
|
||||
timeMin = 'Minimum süre',
|
||||
timeMax = 'Maksimum süre'
|
||||
},
|
||||
DealerExists = 'Bayi zaten mevcut',
|
||||
deleteDealer = {
|
||||
help = 'Bir bayiyi sil',
|
||||
name = 'Bayi Adı',
|
||||
},
|
||||
deleteDealerSuccess = 'Bayi silindi',
|
||||
deleteDealerFail = 'Bayi silinemedi',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Heroin topla',
|
||||
picking = 'Heroin toplanıyor',
|
||||
targetCook = 'Heroin pişir',
|
||||
pbCook = 'Heroin pişiriliyor',
|
||||
targetPickup = 'Laboratuvarı topla',
|
||||
pbPickup = 'Laboratuvar toplanıyor',
|
||||
targetClean = 'Laboratuvarı temizle',
|
||||
pbClean = 'Laboratuvar temizleniyor',
|
||||
targetDry = 'Bitkiyi kurut',
|
||||
pbDry = 'Bitki kurutuluyor',
|
||||
targetCutHeroin = 'Heroini kes',
|
||||
pbCutHeroin = 'Heroin kesiliyor',
|
||||
targetBuyKit = 'Heroin laboratuvar kiti satın al',
|
||||
pbBuyKit = 'Heroin laboratuvar kiti satın alınıyor',
|
||||
tableout = 'Zaten bir masa çıkarttın',
|
||||
placing = 'Masa yerleştiriliyor',
|
||||
targetFill = 'Şırıngayı doldur',
|
||||
pbFill = 'Şırınga dolduruluyor',
|
||||
hasKitAlready = 'Zaten bir heroin laboratuvar kiti sahibisin',
|
||||
notEnoughMoney = 'Bunun için $%s nakit gerekli',
|
||||
placedKit = 'Heroin laboratuvar kitini yerleştirdin',
|
||||
failed = 'Heroin yapımında başarısız oldun ve malzemelerini kaybettin',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Kamyonetten çal',
|
||||
startMission = 'Lean görevini başlat',
|
||||
notOnRun = 'Lean görevinde değilsin',
|
||||
alreadyChasing = 'Zaten bir kamyoneti kovalıyorsun',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'LSD’yi ısıt',
|
||||
heating = 'LSD ısıtılıyor',
|
||||
targetRefine = 'Asidi rafine et',
|
||||
refining = 'Asit rafine ediliyor',
|
||||
targetDipping = 'Tabletleri daldır',
|
||||
dipping = 'Tabletler daldırılıyor',
|
||||
targetPickup = 'Laboratuvar kiti topla',
|
||||
packup = 'Laboratuvar kiti paketleniyor',
|
||||
targetClean = 'Laboratuvar kiti temizle',
|
||||
needCleaning = 'Laboratuvarı temizlemek için temizlik kiti gerekli',
|
||||
cleaning = 'Laboratuvar kiti temizleniyor',
|
||||
targetLys = 'Liserjik asit çal',
|
||||
stealLys = 'Liserjik asit çalınıyor',
|
||||
targetDie = 'Dietilamid çal',
|
||||
stealDie = 'Dietilamid çalınıyor',
|
||||
targetBuyTab = 'Tablet kağıdı satın al',
|
||||
targetBuyKit = 'LSD laboratuvar kiti satın al',
|
||||
alreadyOwn = 'Bu eşyaya zaten sahipsin',
|
||||
buyingKit = 'LSD laboratuvar kiti satın alınıyor',
|
||||
tableout = 'Zaten bir masa çıkarttın',
|
||||
placing = 'Laboratuvar kiti yerleştiriliyor!',
|
||||
failed = 'Uyuşturucu yapmada berbatsın',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Kaktüs topla',
|
||||
picking = 'Kaktüs toplanıyor',
|
||||
targetDry = 'Kaktüsü kurut',
|
||||
dry = 'Kaktüs kurutuluyor',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Zaten bir aracı kovalıyorsun',
|
||||
targetStealFromCar = 'Meth arabasından çal',
|
||||
targetHeist = 'Meth görevini başlat',
|
||||
started = 'Zaten meth pişiriyorsun',
|
||||
increaseHeat = 'Isıyı artırdın',
|
||||
targetBag = 'Meth paketle',
|
||||
targetCook = 'Meth pişir',
|
||||
targetGrabTray = 'Meth tepsisini al',
|
||||
targetHeat = 'Kontrolleri ayarla',
|
||||
targetSmash = 'Tepsinin üzerine vur',
|
||||
targetStealEPH = 'Efedrin çal',
|
||||
stealingEPH = 'Efedrin çalınıyor',
|
||||
targetStealACE = 'Aseton çal',
|
||||
stealingACE = 'Aseton çalınıyor',
|
||||
notOnRun = 'Meth görevinde değilsin',
|
||||
onCooldown = 'Cooldown süresindesin',
|
||||
teleIn = 'Laboratuvara gir',
|
||||
teleOut = 'Laboratuvardan çık',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Araba sıcak, bir yere bırak',
|
||||
targetHandoff = 'Paketi teslim et',
|
||||
handingoff = 'Paketi teslim ediyorsun',
|
||||
emptyHands = 'Hiçbir şey taşıyorsun',
|
||||
targetPay = 'Oxy minibüsünü kirala',
|
||||
keys = 'Anahtarlar minibüsün içinde',
|
||||
targetGetPackage = 'Paketi al',
|
||||
alreadyCarrying = 'Zaten bir paket taşıyorsun',
|
||||
paid = 'Minibüsü kiralamak için $%s ödedin',
|
||||
notOn = 'Bir rotada değilsin',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Kime reçete yazmak istiyorsun?',
|
||||
title1 = 'Oyuncu Adı',
|
||||
title2 = 'Reçete',
|
||||
},
|
||||
write = 'Reçete yazılıyor',
|
||||
opening = 'Reçete şişesi açılıyor',
|
||||
targetFill = 'Reçeteyi doldur',
|
||||
fill = 'Reçete dolduruluyor',
|
||||
canceled = 'Reçeteyi iptal ettin',
|
||||
unbottle = 'Şişeyi açtın',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Mantar topla',
|
||||
picking = 'Mantar toplanıyor',
|
||||
eat = 'Mantar yiyorsun',
|
||||
cancel = 'Mantar almaktan vazgeçtin',
|
||||
took = 'Biraz mantar aldın!'
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Ot topla',
|
||||
picking = 'Ot toplanıyor',
|
||||
targetDry = 'Otu kurut',
|
||||
noDry = 'Bunun için ıslak ota ihtiyacın var',
|
||||
wait = 'Otların kuruması bekleniyor...',
|
||||
take = 'Otu almaya hazır',
|
||||
targetDryed = 'Kurutulmuş otu al',
|
||||
teleportIn = 'Yetiştirme evine gir',
|
||||
teleportOut = 'Yetiştirme evinden çık',
|
||||
dabs = 'Dab çekiyorsun',
|
||||
bluntWrap = '%s yapmak için şurup daldırılıyor',
|
||||
rollBlunt = 'Bir %s sarılıyor',
|
||||
targetSales = 'Bayiden satın al',
|
||||
buying = 'Bayiden %s alınıyor',
|
||||
itemDoesntExist = 'Bu eşya burada mevcut değil',
|
||||
needItem = 'Bunun için bir %s gerekli',
|
||||
crackBlunt = 'Sarılı jointi aç'
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Zaten toptan satış yapıyorsun',
|
||||
targetBuyer = 'Alıcıyla konuş',
|
||||
wholesaling = 'Uyuşturucular toptan satılıyor',
|
||||
uhoh = 'Alıcı şüphelenmeye başladı',
|
||||
tooLong = 'Alıcı çok fazla bekledi',
|
||||
notEnoughCops = 'Yeterli polis nöbette değil',
|
||||
|
||||
count = 'Tespit edilen miktar: %s',
|
||||
bonus = 'Miktar bonusu: +%s%%',
|
||||
estimate = 'Tahmini ödeme: $%s - $%s',
|
||||
no_drugs = 'Bu uyuşturucudan satılacak hiçbiri yok',
|
||||
ambush = 'Pusula! %s saldırgan, %s silahlı yaklaşıyor!',
|
||||
complete = '%s adet ürün $%s%s karşılığında satıldı',
|
||||
min_quantity = 'Toptan satış yapmak için en az %s adet satmalısın',
|
||||
deal_failed_cleanup = 'Anlaşma başarısız — tekrar deneyebilirsin'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Zaten bir pres yerleştirdin',
|
||||
settingDown = 'Pres yerleştiriliyor',
|
||||
noPressOut = 'Hiçbir pres yerleştirilmemiş',
|
||||
targetMake = 'Hapları presle',
|
||||
making = 'Bir %s presleniyor',
|
||||
targetPickup = 'Presi topla',
|
||||
picking = 'Pres toplanıyor',
|
||||
targetStealMDP2P = 'MDP2P çal',
|
||||
stealingMDP2P = 'MDP2P çalınıyor',
|
||||
fail = 'Amına koyayım, bunda çok kötüsün',
|
||||
targetStealIsosafrole = 'Isosafrol çal',
|
||||
stealingIsosafrole = 'Isosafrol çalınıyor',
|
||||
targetRaw = 'Ham XTC yap',
|
||||
makingRaw = 'Ham XTC yapılıyor',
|
||||
getPress = 'Pres al',
|
||||
buySingle = 'Tekli presi $%s karşılığında satın al',
|
||||
buyp = 'Pres satın alınıyor',
|
||||
targetStamp = 'XTC’yi damgala',
|
||||
stamp_desc = '%s adet hap damgalanıyor',
|
||||
stamping = '%s adet hap damgalanıyor',
|
||||
noPills = 'Damgasız hapların yok'
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Tüccar menüsünü aç',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+260
@@ -0,0 +1,260 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Nya~ You\'re not in the right spot! >_<',
|
||||
needItems = 'Aww... you don’t have all da items I need... 😢',
|
||||
notEnoughMoney = 'Oof, you’re too broke, sweetie 💸',
|
||||
buySuccess = 'Yay! You bought %s %s for $%s! 💖',
|
||||
itemMissings = 'You need:\n',
|
||||
itemNeeded = 'You need %s... plz go get it! 🥺',
|
||||
cooldown = 'Silly baka, slow down! ⏳',
|
||||
invalidItem = 'Eh? This item isn’t sold here, silly! 🙃',
|
||||
onCooldownWarn = '%s tried to run %s but is on cooldown, oopsie! ❄️',
|
||||
noCops = 'Nosa! Not enough cops online, okeeday!',
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Pick a coca leef (so fresh! 🌿)',
|
||||
picking = 'Picking leefs... so crunchy~ 💚',
|
||||
targetMakePow = 'Make pow-pow from leefs 💨',
|
||||
noleaf = 'Nooo leef? No pow! 😿',
|
||||
makePow = 'Choppin’ leefs into fine pow~ ✂️✨',
|
||||
targetCutCoke = 'Cut da coke, cut it real good ✂️💎',
|
||||
targetBagCoke = 'Bag it up, pretty lil’ bags! 🎀',
|
||||
teleIn = 'Enter the secret lab~ 🔐',
|
||||
teleOut = 'Leave the lab... for now... 👋',
|
||||
needBakingSoda = 'You need bakie soda, silly! 🧂',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'No sellin’ from da car, weirdo! 🚗❌',
|
||||
selling = 'Selling %s for $%s... cha-ching! 💵',
|
||||
deny = 'NOPE! I don’t like dis offer! 🙅♀️',
|
||||
wait = 'Waiting for a cutie customer... 👀',
|
||||
nodrugs = 'You got no drugs to sell... 😔',
|
||||
searching = 'Looking for lil’ customers nearby... 🔍',
|
||||
targetTakeBack = 'Take back my stuff! 🫵',
|
||||
targetSell = 'Sell %s of %s for $%s 💼',
|
||||
targetDeny = 'Say no to dumb offers! 🚫',
|
||||
stopped = 'You gave up?? Booo! 😤',
|
||||
start = 'Go make mama proud, cutie! 💪',
|
||||
gotRobbed = 'Owie... you got robbed... 💔',
|
||||
gotBack = 'Yay! You got your stuff back! 🎉',
|
||||
notEnough = 'You don’t have enough, silly! 🥺',
|
||||
comDes = 'Sell drugs on da corner, hustler~ 🕶️',
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Cook some crack, bby 💣',
|
||||
cook = 'Cookin’ crack... smoky smoky~ 💨',
|
||||
targetBag = 'Bag da crack, make it purrty~ 🎀',
|
||||
bag = 'Baggin’ crack like a pro! 💼',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Get a delivery mission, go go! 🚚',
|
||||
targetOpenShop = 'Open your lil’ shop! 🏪',
|
||||
shopHeader = 'Deally Dealer Shop 💊',
|
||||
targetHandOff = 'Hand off da package, quick! 📦',
|
||||
delivering = 'Givin’ da package to da dealer... 💌',
|
||||
alreadyDelivering = 'You’re already deliverin’, silly! 🐢',
|
||||
slowAf = 'Tooo slow! Mission failed... 😵',
|
||||
newDealerHelp = {
|
||||
help = 'Place a new dealer friend! 🤝',
|
||||
name = 'What’s their name?',
|
||||
timeMin = 'Min time (mins)',
|
||||
timeMax = 'Max time (mins)',
|
||||
},
|
||||
DealerExists = 'Oopsie! Dealer already here! 🙈',
|
||||
deleteDealer = {
|
||||
help = 'Delete a dealer... bye bye~ 👋',
|
||||
name = 'Dealer name to delete?',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer deleted! Peace out! ✌️',
|
||||
deleteDealerFail = 'Couldn’t delete... maybe they ran? 🏃♂️',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Pick up da plant, bby~ 🌱',
|
||||
picking = 'Picking plant... so fresh! 💚',
|
||||
targetCook = 'Cook da heroin, make it strong 💪',
|
||||
pbCook = 'Cookin’ up some strong stuff... 🔥',
|
||||
targetPickup = 'Pick up lab table~ 🧪',
|
||||
pbPickup = 'Picking up da lil’ lab... 🧫',
|
||||
targetClean = 'Clean da lab, make it sparkly ✨',
|
||||
pbClean = 'Wiping down da table... 🧼',
|
||||
targetDry = 'Dry da plant, make it cruncky~ 💤',
|
||||
pbDry = 'Drying da plant... patience, bby~ ⏳',
|
||||
targetCutHeroin = 'Cut da heroin, make it pretty ✂️',
|
||||
pbCutHeroin = 'Cutting like a pro chef! 👩🍳',
|
||||
targetBuyKit = 'Buy a heroin lab kit? 💰',
|
||||
pbBuyKit = 'Buying da kit... now you’re official! 🎉',
|
||||
tableout = 'You already got a table out, silly! 🙃',
|
||||
placing = 'Placing da table... science time! 🔬',
|
||||
targetFill = 'Fill da syringe... be careful! 💉',
|
||||
pbFill = 'Filling da needle... drip drip~ 💧',
|
||||
hasKitAlready = 'You already got a kit, silly! 🤪',
|
||||
notEnoughMoney = 'You need $%s in cash, cutie 💸',
|
||||
placedKit = 'You placed your lab kit! Science go! 🧪✨',
|
||||
failed = 'Oof... you failed and lost it all... 😭',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Steal from da truck, shhh~ 🤫',
|
||||
startMission = 'Start da lean mission! 🍬',
|
||||
notOnRun = 'You’re not on a run, silly! 🙅♂️',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Heat da LSD, make it bubble~ 🔥',
|
||||
heating = 'Heating up... don’t burn it! 😳',
|
||||
targetRefine = 'Refine da acid, make it pure 💎',
|
||||
refining = 'Purifying da tabs... so shiny~ ✨',
|
||||
targetDipping = 'Dip da tabs, make em glow 💫',
|
||||
dipping = 'Dipping tabs like a cookie~ 🍪',
|
||||
targetPickup = 'Pick up da lab kit~ 🎒',
|
||||
packup = 'Packing up da lab... bye bye~ 👋',
|
||||
targetClean = 'Clean da lab, make it sparkly ✨',
|
||||
needCleaning = 'You need a cleaning kit, silly! 🧽',
|
||||
cleaning = 'Cleaning da lab... so tidy~ 🧹',
|
||||
targetLys = 'Steal lysergic acid... shhh~ 🤫',
|
||||
stealLys = 'Snatching da acid... so sneaky~ 🦝',
|
||||
targetDie = 'Steal diethylamide... risky! 😈',
|
||||
stealDie = 'Grabbin’ da chems... ooooh~ 🔬',
|
||||
targetBuyTab = 'Buy tab paper, make it pretty~ 📄',
|
||||
targetBuyKit = 'Buy LSD lab kit? 💖',
|
||||
alreadyOwn = 'You already got it, silly! 🙃',
|
||||
buyingKit = 'Buying da kit... artist in da making! 🎨',
|
||||
tableout = 'Table already out, no space! 🙈',
|
||||
placing = 'Placing da lab down! Science time~ 🔬',
|
||||
failed = 'You suck at making drugs... lol 😂',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Pick da cactus, ouchie~ 🌵',
|
||||
picking = 'Picking cactus... careful of spikes! 😬',
|
||||
targetDry = 'Dry da cactus, make it powdery~ 💨',
|
||||
dry = 'Drying slowly... patience, bby~ ⏳',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'You’re already chasin’ a truck, silly! 🚛',
|
||||
targetStealFromCar = 'Steal from da meth car~ 🚗',
|
||||
targetHeist = 'Start da meth mission! 💥',
|
||||
started = 'Meth already cookin’, chill! 🧊',
|
||||
increaseHeat = 'You turned up da heat... 🔥',
|
||||
targetBag = 'Bag da meth, make it pretty~ 🎀',
|
||||
targetCook = 'Cook da meth, make it strong 💪',
|
||||
targetGrabTray = 'Grab da meth tray~ 🍽️',
|
||||
targetHeat = 'Adjust da dials... science! 🔬',
|
||||
targetSmash = 'Smash da tray, big baddie~ 💣',
|
||||
targetStealEPH = 'Steal ephedrine... shhh~ 🤫',
|
||||
stealingEPH = 'Snatching da ephedrine... 🧪',
|
||||
targetStealACE = 'Steal acetone... 💨',
|
||||
stealingACE = 'Grabbin’ da acetone... 🧫',
|
||||
notOnRun = 'You’re not on a run, silly! 🙅♂️',
|
||||
onCooldown = 'You’re on cooldown, take a nap~ 😴',
|
||||
teleIn = 'Enter da lab... secretly~ 🔐',
|
||||
teleOut = 'Leave da lab... for now~ 👋',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Da van is hot! Ditch it quick! 🚨',
|
||||
targetHandoff = 'Hand off da package, fast! 📦',
|
||||
handingoff = 'Givin’ da package... done! ✅',
|
||||
emptyHands = 'Your hands are empty, silly! 🙃',
|
||||
targetPay = 'Rent da oxy van? 💰',
|
||||
keys = 'Keys are in da van... shhh~ 🔑',
|
||||
targetGetPackage = 'Grab da package~ 📦',
|
||||
alreadyCarrying = 'You already got a package! 🤸♂️',
|
||||
paid = 'You paid $%s for da van! 💸',
|
||||
notOn = 'You’re not on a route, silly! 🗺️',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Who gets da prescription, bby?',
|
||||
title1 = 'Player name?',
|
||||
title2 = 'What medicine?',
|
||||
},
|
||||
write = 'Writing da prescription... 📝',
|
||||
opening = 'Opening da bottle... pop! 💊',
|
||||
targetFill = 'Fill da prescription~ 💊',
|
||||
fill = 'Getting it filled... almost! 💉',
|
||||
canceled = 'You canceled... no meds for you! 😢',
|
||||
unbottle = 'You opened da bottle! Yay! 🎉',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Pick da shrooms, little fun-gi~ 🍄',
|
||||
picking = 'Picking shrooms... so cute! 💚',
|
||||
eat = 'Eating shrooms... trip time! 🌈',
|
||||
cancel = 'Changed your mind? No tripping! 😌',
|
||||
took = 'You took some shrooms! Wheee~ 🌀',
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Pick da weed, so green~ 🌿',
|
||||
picking = 'Picking weed... sticky icky~ ✂️',
|
||||
targetDry = 'Dry da weed, make it crisp~ 💨',
|
||||
noDry = 'You need wet weed, silly! 🌱',
|
||||
wait = 'Waiting for it to dry... patience~ ⏳',
|
||||
take = 'It’s ready! Take it now! 🎉',
|
||||
targetDryed = 'Pick up da dry weed~ 🌿',
|
||||
teleportIn = 'Enter da grow house~ 🏡',
|
||||
teleportOut = 'Leave da grow house~ 👋',
|
||||
dabs = 'Doing some dabs... strong stuff~ 💨',
|
||||
bluntWrap = 'Dipping syrup to make %s... 🍯',
|
||||
rollBlunt = 'Rolling a %s... puffer puffer~ 🚬',
|
||||
targetSales = 'Buy from da dealer~ 💵',
|
||||
buying = 'Buying %s from dealer... 🛒',
|
||||
itemDoesntExist = 'That item doesn’t exist here... 🤷♂️',
|
||||
needItem = 'You need a %s for this, silly! 🙃',
|
||||
crackBlunt = 'Cracking open a blunt... 🚬💥',
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Already wholesaling, chill! 😌',
|
||||
targetBuyer = 'Talk to da buyer, make a deal~ 💼',
|
||||
wholesaling = 'Wholesaling drugs... big moves~ 💰',
|
||||
uhoh = 'The buyer looks sketchy... 👀',
|
||||
tooLong = 'Buyer got impatient... bye bye~ 👋',
|
||||
notEnoughCops = 'Not enough cops on duty... safe! 🚔',
|
||||
count = 'Found %s itemies~',
|
||||
bonus = 'Bonus: +%s%% mowe sparkwes~ ✨',
|
||||
estimate = 'You get $%s - $%s monies~ 💖',
|
||||
no_drugs = 'No dwugies to seww, sadge~',
|
||||
ambush = 'AMBUSCH! %s bad guys wif %s bang-bangs~ 💥',
|
||||
complete = 'Sowd %s itemies fow $%s%s~ 🎉',
|
||||
min_quantity = 'Need to seww %s itemies min~',
|
||||
deal_failed_cleanup = 'Deaw faiwed... twy again? 💔'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'You already got a press out! 🙃',
|
||||
settingDown = 'Setting down da press... 💤',
|
||||
noPressOut = 'No press out... where it go? 🤔',
|
||||
targetMake = 'Press pills, make em pop~ 💊',
|
||||
making = 'Pressing a %s... so satisfying~ ✨',
|
||||
targetPickup = 'Pick up da press~ 🧰',
|
||||
picking = 'Picking up da press... bye bye~ 👋',
|
||||
targetStealMDP2P = 'Steal MDP2P... shhh~ 🤫',
|
||||
stealingMDP2P = 'Snatching da MDP2P... 🧪',
|
||||
fail = 'Damn dude... you really suck... 😅',
|
||||
targetStealIsosafrole = 'Steal isosafrole~ 💨',
|
||||
stealingIsosafrole = 'Grabbin’ da chems... 🧫',
|
||||
targetRaw = 'Make raw XTC, yikes~ 💣',
|
||||
makingRaw = 'Making raw XTC... risky! 🔥',
|
||||
getPress = 'Get press, make pills~ 🖨️',
|
||||
buySingle = 'Buy single press for $%s? 💰',
|
||||
buyp = 'Buying press... factory time! 🏭',
|
||||
targetStamp = 'Stamp XTC, make it pretty~ ✨',
|
||||
stamp_desc = 'Stamp %s pills with design~ 🖋️',
|
||||
stamping = 'Stamping %s pills... so clean~ ✨',
|
||||
noPills = 'You got no unstamped pills... 🫙',
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Open Wopen Store',
|
||||
}
|
||||
return Lang
|
||||
@@ -0,0 +1,260 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.Catches = {
|
||||
notIn = 'Rraaarrrr!',
|
||||
needItems = 'Hnnngh oogar!',
|
||||
notEnoughMoney = 'Whroooaah mmgra!',
|
||||
buySuccess = 'Raaar %s %s whrrr $%s!',
|
||||
itemMissings = 'Oogar:\n%s',
|
||||
itemNeeded = 'Rraa %s!',
|
||||
cooldown = 'Whhrrroooaannn!',
|
||||
invalidItem = 'Khhrrrnnngh!',
|
||||
onCooldownWarn = '%s RRRRAAAAAAAAUGGGGHHH %s \n WHHHRRROOOAAANNN!',
|
||||
noCops = 'WROAH RaW RRRRRRA!'
|
||||
}
|
||||
|
||||
Lang.coke = {
|
||||
targetPick = 'Rraaarr whrroo!',
|
||||
picking = 'Whrrroo hnnngh!',
|
||||
targetMakePow = 'Rraa pow!',
|
||||
noleaf = 'Oogar whrroo!',
|
||||
makePow = 'Rraa powwhrrr!',
|
||||
targetCutCoke = 'Khhrrr pow!',
|
||||
targetBagCoke = 'Blarrg sack!',
|
||||
teleIn = 'Vrroo hnnn!',
|
||||
teleOut = 'Vrroo nngh!',
|
||||
needBakingSoda = 'Rraa baka soda!',
|
||||
}
|
||||
|
||||
Lang.Cornerselling = {
|
||||
inVeh = 'Rraa whrrroo!',
|
||||
selling = 'Skreee %s whrrr $%s!',
|
||||
deny = 'Grrrnnn!',
|
||||
wait = 'Oogar oogar!',
|
||||
nodrugs = 'Hnnngh oogar!',
|
||||
searching = 'Whhrrroooaannn skreee!',
|
||||
targetTakeBack = 'Rraa back!',
|
||||
targetSell = 'Skreee %s ra %s whrrr $%s!',
|
||||
targetDeny = 'Grrrnnn!',
|
||||
stopped = 'Whhrrroooaannn oogar!',
|
||||
start = 'Rraa oogar!',
|
||||
gotRobbed = 'Rraa blarrg!',
|
||||
gotBack = 'Rraa back oogar!',
|
||||
notEnough = 'Hnnngh ra %s!',
|
||||
comDes = 'Skreee oogar!',
|
||||
}
|
||||
|
||||
Lang.crack = {
|
||||
targetMake = 'Rraa crack!',
|
||||
cook = 'Crack rraa!',
|
||||
targetBag = 'Blarrg crack!',
|
||||
bag = 'Crack sack!',
|
||||
}
|
||||
|
||||
Lang.Deliveries = {
|
||||
targetGetDel = 'Rraa del!',
|
||||
targetOpenShop = 'Oogar shop!',
|
||||
shopHeader = 'Oogar Shop',
|
||||
targetHandOff = 'Rraa package!',
|
||||
delivering = 'Package rraa!',
|
||||
alreadyDelivering = 'Rraa del oogar!',
|
||||
slowAf = 'Whhrrroooaannn grrr!',
|
||||
newDealerHelp = {
|
||||
help = 'Rraa dealer!',
|
||||
name = 'Dealer rraa?',
|
||||
timeMin = 'Rraa min?',
|
||||
timeMax = 'Rraa max?',
|
||||
},
|
||||
DealerExists = 'Dealer oogar!',
|
||||
deleteDealer = {
|
||||
help = 'Rraa delete!',
|
||||
name = 'Dealer rraa?',
|
||||
},
|
||||
deleteDealerSuccess = 'Dealer rraa gone!',
|
||||
deleteDealerFail = 'Dealer rraa no gone!',
|
||||
}
|
||||
|
||||
Lang.heroin = {
|
||||
targetPick = 'Rraa plant!',
|
||||
picking = 'Plant rraa!',
|
||||
targetCook = 'Rraa heroin!',
|
||||
pbCook = 'Heroin rraa!',
|
||||
targetPickup = 'Rraa lab!',
|
||||
pbPickup = 'Lab rraa!',
|
||||
targetClean = 'Rraa clean!',
|
||||
pbClean = 'Clean lab!',
|
||||
targetDry = 'Rraa dry!',
|
||||
pbDry = 'Dry plant!',
|
||||
targetCutHeroin = 'Rraa cut!',
|
||||
pbCutHeroin = 'Cut heroin!',
|
||||
targetBuyKit = 'Rraa kit!',
|
||||
pbBuyKit = 'Buy kit rraa!',
|
||||
tableout = 'Rraa table oogar!',
|
||||
placing = 'Table rraa!',
|
||||
targetFill = 'Rraa syringe!',
|
||||
pbFill = 'Fill rraa!',
|
||||
hasKitAlready = 'Kit oogar!',
|
||||
notEnoughMoney = 'Rraa $%s!',
|
||||
placedKit = 'Kit rraa placed!',
|
||||
failed = 'Rraa fail oogar!',
|
||||
}
|
||||
|
||||
Lang.lean = {
|
||||
stealFromTruck = 'Rraa truck!',
|
||||
startMission = 'Rraa mission!',
|
||||
notOnRun = 'Run no oogar!',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
targetHeat = 'Rraa heat!',
|
||||
heating = 'Heat rraa!',
|
||||
targetRefine = 'Rraa refine!',
|
||||
refining = 'Refine rraa!',
|
||||
targetDipping = 'Rraa dip!',
|
||||
dipping = 'Dip rraa!',
|
||||
targetPickup = 'Rraa labkit!',
|
||||
packup = 'Labkit rraa!',
|
||||
targetClean = 'Rraa clean!',
|
||||
needCleaning = 'Clean kit rraa!',
|
||||
cleaning = 'Clean rraa!',
|
||||
targetLys = 'Rraa lys!',
|
||||
stealLys = 'Lys rraa!',
|
||||
targetDie = 'Rraa die!',
|
||||
stealingDie = 'Die rraa!',
|
||||
targetBuyTab = 'Rraa tab!',
|
||||
targetBuyKit = 'Rraa kit!',
|
||||
alreadyOwn = 'Kit oogar!',
|
||||
buyingKit = 'Buy kit rraa!',
|
||||
tableout = 'Table oogar!',
|
||||
placing = 'Place rraa!',
|
||||
failed = 'Rraa fail oogar!',
|
||||
}
|
||||
|
||||
Lang.mesc = {
|
||||
targetPick = 'Rraa cactus!',
|
||||
picking = 'Cactus rraa!',
|
||||
targetDry = 'Rraa dry!',
|
||||
dry = 'Dry cactus!',
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
alreadyChasing = 'Chase oogar!',
|
||||
targetStealFromCar = 'Rraa car!',
|
||||
targetHeist = 'Rraa mission!',
|
||||
started = 'Meth rraa!',
|
||||
increaseHeat = 'Rraa heat up!',
|
||||
targetBag = 'Rraa bag!',
|
||||
targetCook = 'Rraa cook!',
|
||||
targetGrabTray = 'Rraa tray!',
|
||||
targetHeat = 'Rraa dial!',
|
||||
targetSmash = 'Rraa smash!',
|
||||
targetStealEPH = 'Rraa eph!',
|
||||
stealingEPH = 'Eph rraa!',
|
||||
targetStealACE = 'Rraa ace!',
|
||||
stealingACE = 'Ace rraa!',
|
||||
notOnRun = 'Run no oogar!',
|
||||
onCooldown = 'Rraa cool!',
|
||||
teleIn = 'SSSNNNAAARRR!!',
|
||||
teleOut = 'WRRROOOOWW!!',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
ditchCar = 'Rraa van!',
|
||||
targetHandoff = 'Rraa hand!',
|
||||
handingoff = 'Hand rraa!',
|
||||
emptyHands = 'Hands oogar!',
|
||||
targetPay = 'Rraa pay!',
|
||||
keys = 'Keys rraa!',
|
||||
targetGetPackage = 'Rraa grab!',
|
||||
alreadyCarrying = 'Carry oogar!',
|
||||
paid = 'Paid $%s rraa!',
|
||||
notOn = 'On no oogar!',
|
||||
}
|
||||
|
||||
Lang.pharma = {
|
||||
input = {
|
||||
header = 'Rraa who?',
|
||||
title1 = 'Player rraa?',
|
||||
title2 = 'Prescription rraa?',
|
||||
},
|
||||
write = 'Rraa write!',
|
||||
opening = 'Rraa open!',
|
||||
targetFill = 'Rraa fill!',
|
||||
fill = 'Fill rraa!',
|
||||
canceled = 'Rraa cancel!',
|
||||
unbottle = 'Rraa open!',
|
||||
}
|
||||
|
||||
Lang.shrooms = {
|
||||
targetPick = 'Rraa shroom!',
|
||||
picking = 'Shroom rraa!',
|
||||
eat = 'Eat rraa!',
|
||||
cancel = 'No rraa!',
|
||||
took = 'Rraa took!',
|
||||
}
|
||||
|
||||
Lang.weed = {
|
||||
targetPick = 'Rraa weed!',
|
||||
picking = 'Weed rraa!',
|
||||
targetDry = 'Rraa dry!',
|
||||
noDry = 'Wet rraa!',
|
||||
wait = 'Wait rraa!',
|
||||
take = 'Take rraa!',
|
||||
targetDryed = 'Rraa dry!',
|
||||
teleportIn = 'Rraa house!',
|
||||
teleportOut = 'Rraa leave!',
|
||||
dabs = 'Rraa dab!',
|
||||
bluntWrap = 'Rraa wrap %s!',
|
||||
rollBlunt = 'Rraa roll %s!',
|
||||
targetSales = 'Rraa buy!',
|
||||
buying = 'Buy %s rraa!',
|
||||
itemDoesntExist = 'No rraa!',
|
||||
needItem = 'Rraa %s!',
|
||||
crackBlunt = 'Rraa crack!',
|
||||
}
|
||||
|
||||
Lang.wholesale = {
|
||||
alreadyWholesale = 'Rraa whole!',
|
||||
targetBuyer = 'Rraa buyer!',
|
||||
wholesaling = 'Whole rraa!',
|
||||
uhoh = 'Buyer rraa!',
|
||||
tooLong = 'Time rraa!',
|
||||
notEnoughCops = 'Cops no oogar!',
|
||||
count = '%s RRRAAAUGH!!',
|
||||
bonus = ' +%s%% — GRRROWL!!',
|
||||
estimate = '$%s - $%s — BWAAAAARRGH!!',
|
||||
no_drugs = ' NNAARRGH!!',
|
||||
ambush = ' %s WRAAAAAGH!! %s!!',
|
||||
complete = ' %s — $%s%s — RRROWWR!!',
|
||||
min_quantity = ' %s — BWAAAAH!!',
|
||||
deal_failed_cleanup = ' MMMRRR...',
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
alreadyOut = 'Press oogar!',
|
||||
settingDown = 'Press rraa!',
|
||||
noPressOut = 'No press!',
|
||||
targetMake = 'Rraa press!',
|
||||
making = 'Press %s rraa!',
|
||||
targetPickup = 'Rraa pick!',
|
||||
picking = 'Pick rraa!',
|
||||
targetStealMDP2P = 'Rraa mdp!',
|
||||
stealingMDP2P = 'Mdp rraa!',
|
||||
targetStealIsosafrole = 'Rraa iso!',
|
||||
stealingIsosafrole = 'Iso rraa!',
|
||||
targetRaw = 'Rraa raw!',
|
||||
makingRaw = 'Raw rraa!',
|
||||
getPress = 'Rraa press!',
|
||||
buySingle = 'Buy press $%s!',
|
||||
buyp = 'Buy rraa!',
|
||||
targetStamp = 'Rraa stamp!',
|
||||
stamp_desc = 'Stamp %s rraa!',
|
||||
stamping = 'Stamp %s rraa!',
|
||||
noPills = 'Pills no oogar!',
|
||||
}
|
||||
|
||||
Lang.merchant = {
|
||||
targetOpen = 'Rraa raw!',
|
||||
}
|
||||
|
||||
return Lang
|
||||
+19
-19
@@ -1,19 +1,19 @@
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `deliveriesdealer` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`cid` varchar(50) NOT NULL,
|
||||
`itemdata` varchar(50) NOT NULL,
|
||||
`timestart` varchar(50) NOT NULL,
|
||||
`timestop` varchar(50) DEFAULT NULL,
|
||||
`maxtime` varchar(50) NOT NULL,
|
||||
`location` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `drugrep` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`cid` varchar(50) DEFAULT NULL,
|
||||
`drugrep` varchar(255) DEFAULT NULL,
|
||||
`name` varchar(50) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `deliveriesdealer` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`cid` varchar(50) NOT NULL,
|
||||
`itemdata` varchar(50) NOT NULL,
|
||||
`timestart` varchar(50) NOT NULL,
|
||||
`timestop` varchar(50) DEFAULT NULL,
|
||||
`maxtime` varchar(50) NOT NULL,
|
||||
`location` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `drugrep` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`cid` varchar(50) DEFAULT NULL,
|
||||
`drugrep` varchar(255) DEFAULT NULL,
|
||||
`name` varchar(50) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
-103
@@ -1,103 +0,0 @@
|
||||
Notes from 3.5.2 -> 3.5.3
|
||||
|
||||
added easier calls for GetCops
|
||||
|
||||
added support for qs phone emails
|
||||
|
||||
added option for minigames 'none' so its not required
|
||||
|
||||
|
||||
3.5.3 - > 3.5.4
|
||||
|
||||
1) Removed Config.imagelink - too tired of people not changing that and then asking me why images wont load.
|
||||
- should work for qb, ps, lj, ox, qs, core, origen. if you use another inventory go to line 147 of the functions.lua in the client folder
|
||||
- make this adjustment
|
||||
```
|
||||
elseif GetResourceState('yourinventoryname') == 'started' then
|
||||
return "nui:/yourinventoryname/folder1/folder2/".. QBCore.Shared.Items[img].image
|
||||
```
|
||||
2 )small bug fixes in meth.lua client side
|
||||
3) small bug fixes in pharma.lua server side
|
||||
4) bug allowing to see target for drying weed when waiting for the weed to dry patched
|
||||
|
||||
3.5.4 - > 3.5.5
|
||||
Updated small tweaks to client and server functions.lua
|
||||
|
||||
|
||||
3.5.5 - > 3.5.6
|
||||
updated mainly client/server functions.lua to include a check for if using scully emotes then use the export to cancel emote once done with progressbar, added support for a few other inventories and dispatch
|
||||
|
||||
added new item box events for additem and removeitem functions in the server/functions.lua
|
||||
I left the original itembox event in, if you dont use the old event it will just trigger to a blank event and the next event will trigger, its a duct tape backwards compat method
|
||||
|
||||
3.5.6 - > 3.5.7
|
||||
|
||||
added a couple new functions to cut back on repeating natives needed ( Freeze() ) will now set an entitys heading, block temp events, freeze, and set invincible)
|
||||
added better calls for GetImage and GetLabel for ox inventory
|
||||
converted all callbacks to lib.callback to increase optimization
|
||||
should be fully compatible with qbx without needing to make a couple edits now
|
||||
|
||||
3.5.7 - > 3.5.8
|
||||
Added support for fivemerr logs
|
||||
3.5.8 -> 3.5.9
|
||||
added command /cornersell **you only need to update server/cornserselling.lua** from previous update
|
||||
|
||||
3.5.9 - > 3.7.0
|
||||
|
||||
im bad at numbers sue me kek
|
||||
|
||||
a lot has been changed with this version
|
||||
The main thing to update from 3.5.9 to 3.7.0 is a couple things in your config
|
||||
SAVE YOUR SHARED FOLDER AND COPY AND PASTE IT TO YOUR DESKTOP SO YOU HAVE A SECOND COPY
|
||||
|
||||
```
|
||||
Config.oxtarget:
|
||||
no longer exists in new version. Change it to
|
||||
|
||||
Config.Target = 'qb' -- qb or ox
|
||||
|
||||
Config.minigametype:
|
||||
changed a little bit. you need to add this table to make things work now
|
||||
|
||||
Config.Minigames = {
|
||||
ps = { amount = 2, speed = 8,},
|
||||
ox = { 'easy', 'easy'}, --easy medium or hard each one corresponds to how many skillchecks and the difficulty
|
||||
blcirprog = { amount = 2, speed = 50}, -- speed = 1-100
|
||||
blprog = { amount = 1, speed = 50}, -- speed = 1-100
|
||||
blkeyspam = { amount = 1, difficulty = 50}, -- difficulty = 1-100
|
||||
blkeycircle = { amount = 1, difficulty = 50, keynumbers = 3},
|
||||
blnumberslide = { amount = 1, difficulty = 50, keynumbers = 3},
|
||||
blrapidlines = { amount = 1, difficulty = 50, numberofline = 3},
|
||||
blcircleshake = { amount = 1, difficulty = 50, stages = 3},
|
||||
glpath = { gridsize = 10, lives = 3, timelimit = 999999},
|
||||
glspot = {gridSize = 6, timeLimit = 999999, charSet = "alphabet", required = 10},
|
||||
glmath = {timeLimit = 300000},
|
||||
|
||||
}
|
||||
|
||||
what does this do, adds 10 more minigames than before you can use. How to set it, change Config.minigametype to the key of that table like ps ox blcirprog
|
||||
|
||||
```
|
||||
|
||||
Now thats the config changes so you dont need to reconfig everything as I do my best to not change much in the config and work around what has been done
|
||||
|
||||
Whats been added
|
||||
```
|
||||
i moved tier system to SQL as its better than using metadata
|
||||
run the SQL and it will autopopulate your metadata for rep so people wont lose anything
|
||||
|
||||
I added a new sql table for deliveries
|
||||
|
||||
it not checks overall time for deliveries regardless if you crash or not.
|
||||
|
||||
Added new server file called recipes.lua
|
||||
|
||||
its what you imagine, about 80-90% of the recipes for md-drugs
|
||||
|
||||
```
|
||||
|
||||
Is there bugs, probably. But im tired of beta testing it over and over so please report bugs to my discord where i can see them and patch them quickly.
|
||||
|
||||
|
||||
3.7.0 -> 3.7.1
|
||||
slight bug fixes with ox items, meth targeting
|
||||
@@ -1,72 +1,71 @@
|
||||
# MD-Drugs
|
||||
# 🌿 MD-Drugs – Advanced Drug System for FiveM
|
||||
|
||||
A fully customizable, immersive drug system for FiveM servers.
|
||||
|
||||
<div align="center">
|
||||
<a href="https://discord.gg/sAMzrB4DDx">
|
||||
<img align="center" src="https://i.imgur.com/t65G9Z0.png" width="100">
|
||||
</a><br>
|
||||
<a href="https://discord.gg/sAMzrB4DDx">Mustache Scripts Discord</a><br>
|
||||
<img src="https://i.imgur.com/t65G9Z0.png" width="200" alt="Mustache Scripts Logo">
|
||||
</a>
|
||||
<br>
|
||||
<a href="https://discord.gg/sAMzrB4DDx"><strong>Join Mustache Scripts Discord</strong></a>
|
||||
</div>
|
||||
|
||||
# Credits
|
||||
---
|
||||
|
||||
- I used [Samuel's development](https://fivem.samueldev.shop/) Christmas script global states and prop spawning (with permission obtained prior to release) in the development process.
|
||||
- **[Samuel's Development](https://fivem.samueldev.shop/ ):** Used their Christmas script global states and prop spawning (with permission).
|
||||
- **[STACHY225](https://babiczind.tebex.io/category/2103836 ):** Meth network animations.
|
||||
- **[Bostra](https://discord.gg/5ncbwMNq ):** Free scripts, sanity checks, and those cute mushrooms!
|
||||
- **[Feisty]():** Stunning visuals that make everything look amazing.
|
||||
- **Beta Testers:** Your invaluable feedback made this possible.
|
||||
- **[1of1 Servers](https://1of1servers.com/ ):** Top-notch hosting and support. Join their [Discord](https://discord.gg/1of1servers ).
|
||||
- **[Kamaryn](https://discord.gg/KPRmZqFS ):** For the [installation guide video](https://youtu.be/zvuYnUfrqaA?si=FGJuBO5krZMC14Nd).
|
||||
|
||||
- Shout out to [STACHY225](https://babiczind.tebex.io/category/2103836) for working out the meth network animations!
|
||||
## 🎬 Preview
|
||||
|
||||
- Huge credit to [Bostra](https://discord.gg/5ncbwMNq) for sharing free scripts and providing sanity checks during moments of confusion. Those cute mushrooms? His creation!
|
||||
|
||||
- Special thanks to [Feisty]() for the stunning visuals. If it looks good, she probably had a hand in it.
|
||||
|
||||
- Special shoutout to [Beta Testers]()Your feedback has been invaluable!
|
||||
|
||||
- Big Credit to [Bostra](https://discord.gg/5ncbwMNq). if you have been around you may have seen him post some free scripts and help people, There was definetly times I dm'd him saying what the fuck am I doing and he helped keep me sane. He also made the cute mushrooms!
|
||||
|
||||
- [Jim's Tebex](https://jimathy666.tebex.io/) for putting out open source resources that I was able to break and fix and learn how to code
|
||||
|
||||
- [jixeltay](https://jixeltay.tebex.io/category/scripts) for putting out banger after banger. These people help the community learn so much more
|
||||
|
||||
- Our partner [1of1 Servers]( https://1of1servers.com/) and their [discord](https://discord.gg/1of1servers) for their amazing server hosting! absolutely top notch.
|
||||
- Special Thanks To Kamaryn For The Preview
|
||||
- Thanks to Kamaryn for this [install guide video](https://youtu.be/zvuYnUfrqaA?si=FGJuBO5krZMC14Nd)
|
||||
|
||||
- join their [discord](https://discord.gg/KPRmZqFS) for other videos updates.
|
||||
|
||||
# Dependencies
|
||||
|
||||
- [ox_lib](https://github.com/overextended/ox_lib/releases/tag/v3.12.0)
|
||||
|
||||
- [qb-target](https://github.com/qbcore-framework/qb-target) **or** [ox_target](https://github.com/overextended/ox_target)
|
||||
|
||||
- emote script that uses the animations event
|
||||
- for example one of these
|
||||
- [dpemotes](https://github.com/andristum/dpemotes) -- should use RP instead
|
||||
- [rpemotes](https://github.com/alberttheprince/rpemotes-reborn)
|
||||
- [scully_emotemenu](https://github.com/Scullyy/scully_emotemenu)
|
||||
|
||||
- [read](https://letters.hookedonphonics.com/us/read-guaranteed-G14.html?vc=HPG1&pc=SHPGBR&tracking_id=102917836048989658da259e8c83e6&url_id=5586&oid=707&vid=1855&cid=4194&hid=14509&utm_source=1855&aff_id2={aff_id2}&utm_campaign=PracticePackHOS&utm_medium=S&utm_content=BrandDollarPacks&gc_id=184380999&h_ad_id=374941048206&src=O&qid=3&msvid=v2)
|
||||
|
||||
- GAME BUILD 2944 OR LATER
|
||||
🎥 **[Watch Full Preview Video](https://www.youtube.com/watch?v=I_x7_oz_SAU)**
|
||||
|
||||
|
||||
# Preview
|
||||
---
|
||||
|
||||
### [Preview link](https://www.youtube.com/watch?v=I_x7_oz_SAU)
|
||||
## 📦 Dependencies
|
||||
|
||||
# How to install like a fuckin boss
|
||||
| Dependency | Link |
|
||||
|----------|------|
|
||||
| `ps_lib` | [GitHub - Project-Sloth/ps_lib](https://github.com/Project-Sloth/ps_lib) |
|
||||
| `Read` | [Read Docs](https://letters.hookedonphonics.com/us/read-guaranteed-G14.html) |
|
||||
| Game Build | **2944 or later** required |
|
||||
|
||||
### STEP 1
|
||||
> ⚠️ Ensure all dependencies are installed and up to date before proceeding.
|
||||
|
||||
- qb-inventory users go to md-drugs/items_install/qb-inventory and add the Items to `qb-core/shared/items.lua` and - Add items from md-drugs/items_install/images to qb-inventory/html/images
|
||||
- ox_inventory users go to md-drugs/items_install/ox_inventory and add the Items to `ox_inventory/data/items.lua` and - Add items from md-drugs/items_install/images to ox_inventory/web/images
|
||||
---
|
||||
|
||||
### STEP 2
|
||||
- delete `qb-drugs`
|
||||
## 🛠️ Installation
|
||||
|
||||
### Step 1: Inventory Integration
|
||||
|
||||
#### For QBCore (`qb-inventory`)
|
||||
1. Copy items from `md-drugs/items_install/qb-inventory` into `qb-core/shared/items.lua`.
|
||||
2. Add item images from `md-drugs/items_install/images` to `qb-inventory/html/images`.
|
||||
|
||||
#### For OX_Inventory
|
||||
1. Copy items from `md-drugs/items_install/ox_inventory` into `ox_inventory/data/items.lua`.
|
||||
2. Add item images to `ox_inventory/web/images`.
|
||||
|
||||
---
|
||||
|
||||
### Step 2: Configure Drug Locations & Recipes
|
||||
|
||||
- All **processing locations and recipes** are located in their respective drug type files:
|
||||
- `cocaine.lua`,
|
||||
- `meth.lua`,
|
||||
- `weed.lua`,
|
||||
- etc.
|
||||
- **Plant spawns** are managed in `server/plantSpawns.lua`.
|
||||
|
||||
> ✏️ Modify these files to customize spawn points, yields, and processing times.
|
||||
|
||||
---
|
||||
### STEP 3
|
||||
- Inside the config file change **all** the locations for everything.
|
||||
- **ps: All locations have been changed to make a preview video easier and with how big of a script this is, Im not going to config it for every city. THESE LOCATION DO NOT DO WELL FOR A LIVE SERVER SO CHANGE THEM**
|
||||
|
||||
### STEP 4
|
||||
- Head to your emote script search for **uncuff** if it's missing add it
|
||||
- if rpemotes do this
|
||||
- go to client/animationListCustom.lua
|
||||
@@ -143,7 +142,7 @@
|
||||
```
|
||||
|
||||
|
||||
# STEP 5
|
||||
### STEP 4 (IF QBCore)
|
||||
- check `qb-smallresources/config.lua` and if this exists, delete it
|
||||
- look for this code
|
||||
```lua
|
||||
@@ -161,50 +160,7 @@
|
||||
}
|
||||
```
|
||||
|
||||
# STEP 6
|
||||
### STEP 5
|
||||
- Run SQL
|
||||
|
||||
|
||||
# OPTIONAL STEPS
|
||||
|
||||
## Fivemerr
|
||||
This is NOT a requirement but something I personally use and believe in.
|
||||
|
||||
|
||||
- to integrate with fivemerr make sure you have ```set fivemerrLogs "API_KEY"``` in your server.cfg
|
||||
|
||||
- Head to /server/functions.lua turn local logs = true
|
||||
|
||||
- profit
|
||||
|
||||
Why integrate with Fivemerr? Its a great place to store logs as it doesnt rely on discord webhooks and its far easier to search through
|
||||
|
||||
As well as a place to offload images and videos from fivem that doesnt rely on discord since discord API will be automatically deleting images and videos after a certain amount of time If you need an invite to their server look below
|
||||
- [Fivemerr Discord](https://discord.com/invite/fivemerr)
|
||||
- [Fivemerr Docs](https://docs.fivemerr.com/)
|
||||
|
||||
# Radial Menu
|
||||
- head to `qb-radial/config.lua` and search for the following event
|
||||
```lua
|
||||
event = 'qb-drugs:client:cornerselling',
|
||||
```
|
||||
- and change it to this
|
||||
```lua
|
||||
event = 'md-drugs:client:cornerselling',
|
||||
```
|
||||
|
||||
|
||||
# For Qb-shops users
|
||||
|
||||
- Head to `qb-shops/config.lua` **Config.Products** and add the folowing items to OR anywhere else you want them. The Only way in this script to get them is to find the travelling merchant
|
||||
|
||||
```lua
|
||||
{name = 'bakingsoda', price = 100, amount = 5000, info = {}, type = 'item'},
|
||||
{name = 'emptyvial', price = 100, amount = 5000, info = {}, type = 'item'},
|
||||
{name = 'needle', price = 100, amount = 5000, info = {}, type = 'item'},
|
||||
```
|
||||
|
||||
# Tier System
|
||||
- Turn On Config.TierSystem after you run the sql file
|
||||
|
||||
[mlo i use](https://www.gta5-mods.com/maps/mlo-4x-drug-lab-interiors-sp-fivem) heres an option. use it or dont.
|
||||
- if you dont know how, click this image below
|
||||
- [](https://www.youtube.com/watch?v=8QpFOluK_xo)
|
||||
@@ -0,0 +1,62 @@
|
||||
|
||||
local Target = {
|
||||
Travellingmerchant = {
|
||||
vector4(-119.66, -977.43, 304.25, 88.21),
|
||||
vector4(-1522.93, 1476.01, 111.45, 41.25),
|
||||
vector4(-3278.98, 973.38, 5.35, 101.53),
|
||||
},
|
||||
}
|
||||
|
||||
local loc = Target.Travellingmerchant[math.random(1, #Target.Travellingmerchant)]
|
||||
|
||||
local stores = {
|
||||
travel = {
|
||||
tab_paper = 50,
|
||||
bakingsoda = 25,
|
||||
isosafrole = 25,
|
||||
mdp2p = 25,
|
||||
lysergic_acid = 25,
|
||||
diethylamide = 25,
|
||||
lockpick = 2,
|
||||
emptyvial = 2,
|
||||
needle = 2,
|
||||
cokeburner = 25,
|
||||
crackburner = 2,
|
||||
lsdburner = 2,
|
||||
heroinburner = 2,
|
||||
mdlean = 50,
|
||||
weedgrinder = 25,
|
||||
mdbutter = 25,
|
||||
flour = 25,
|
||||
chocolate = 25,
|
||||
butane = 25,
|
||||
butanetorch = 2,
|
||||
dabrig = 2,
|
||||
mdwoods = 2,
|
||||
leancup = 25,
|
||||
xtcburner = 25,
|
||||
},
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetMerchant', function(source)
|
||||
return {loc = loc, items = stores.travel}
|
||||
end)
|
||||
|
||||
|
||||
|
||||
RegisterServerEvent("md-drugs:server:purchaseGoods", function(item)
|
||||
local src = source
|
||||
if not ps.checkDistance(src, loc, 10) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if not stores.travel[item] then
|
||||
ps.notify(src, ps.lang('Catches.invalidItem'), "error")
|
||||
return
|
||||
end
|
||||
if ps.removeMoney(src, 'cash', stores.travel[item]) then
|
||||
ps.addItem(src, item, 1)
|
||||
else
|
||||
ps.notify(src, ps.lang('Catches.notEnoughMoney'), "error")
|
||||
end
|
||||
end)
|
||||
+90
-68
@@ -1,61 +1,73 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
GlobalState.CocaPlant = Config.CocaPlant
|
||||
local cocaineRecipes = {
|
||||
cokepowder = {
|
||||
tier1 = {take = {coca_leaf = 1}, give = {coke = 1}},
|
||||
tier2 = {take = {coca_leaf = 1}, give = {cokestagetwo = 1}},
|
||||
tier3 = {take = {coca_leaf = 1}, give = {cokestagethree = 1}},
|
||||
},
|
||||
cutcoke = {
|
||||
tier1 = {take = {coke = 1, bakingsoda = 1}, give = {loosecoke = 1}},
|
||||
tier2 = {take = {cokestagetwo = 1, bakingsoda = 1}, give = {loosecokestagetwo = 1}},
|
||||
tier3 = {take = {cokestagethree = 1, bakingsoda = 1}, give = {loosecokestagethree = 1}},
|
||||
},
|
||||
bagcoke = {
|
||||
tier1 = {take = {loosecoke = 1, empty_weed_bag = 1}, give = {cokebaggy = 1}},
|
||||
tier2 = {take = {loosecokestagetwo = 1, empty_weed_bag = 1}, give = {cokebaggystagetwo = 1}},
|
||||
tier3 = {take = {loosecokestagethree = 1, empty_weed_bag = 1}, give = {cokebaggystagethree = 1}},
|
||||
}
|
||||
}
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
for _, v in pairs(Config.CocaPlant) do
|
||||
v.taken = false
|
||||
end
|
||||
end)
|
||||
local cocaineLocations = {
|
||||
MakePowder = {
|
||||
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
CuttingCoke = {
|
||||
{loc = vector3(1095.61, -3195.62, -39.13), l = 1.0, w = 1.0, rot = 45.0, offset = vec3(-1.782227, 0.445068, -0.502701), rotation = vector3(0,0,0), gang = ""},
|
||||
--{loc = vector3(1092.74, -3196.68, -38.99), l = 1.0, w = 1.0, rot = 45.0, offset = vec3(1.983398, 0.407959, -0.642696), rotation = vector3(0,0,180.0), gang = ""},
|
||||
},
|
||||
BaggingCoke = {
|
||||
{loc = vector3(1093.16, -3195.78, -39.19), l = 1.0, w = 1.0, rot = 45.0,offset = vec3(4.515137, 2.542969, -0.814194), rotation = vector3(0,0,180.0), gang = ""},
|
||||
--{loc = vector3(1090.17, -3196.59, -38.99), l = 1.0, w = 1.0, rot = 45.0, offset = vec3(-5.207642, -1.666504, -1.014198), rotation = vector3(0,0, 0.0), gang = ""},
|
||||
},
|
||||
cokeTele = {
|
||||
{inside = vector3(1088.81, -3187.57, -38.99), outside = vector3(198.16, -1276.92, 29.33), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
}
|
||||
|
||||
function CaneCooldown(loc)
|
||||
CreateThread(function()
|
||||
Wait(Config.respawnTime * 1000)
|
||||
Config.CocaPlant[loc].taken = false
|
||||
GlobalState.CocaPlant = Config.CocaPlant
|
||||
Wait(1000)
|
||||
TriggerClientEvent('coke:respawnCane', -1, loc)
|
||||
Log('Coca Plant Respawned At ' .. Config.CocaPlant[loc].location, 'coke')
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterNetEvent("coke:pickupCane")
|
||||
AddEventHandler("coke:pickupCane", function(loc)
|
||||
local src = source
|
||||
if CheckDist(src, Config.CocaPlant[loc].location) then return end
|
||||
if not Config.CocaPlant[loc].taken then
|
||||
Config.CocaPlant[loc].taken = true
|
||||
GlobalState.CocaPlant = Config.CocaPlant
|
||||
TriggerClientEvent("coke:removeCane", -1, loc)
|
||||
CaneCooldown(loc)
|
||||
AddItem(src, 'coca_leaf', 1)
|
||||
Log(GetName(src) .. ' Picked A Coca Leaf With a distance of ' .. dist(src, Config.CocaPlant[loc].location) .. ' vectors', 'coke')
|
||||
end
|
||||
ps.registerCallback('md-drugs:server:GetCokeLocations', function()
|
||||
return cocaineLocations
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:makepowder', function(num)
|
||||
local src = source
|
||||
if CheckDist(src, Config.MakePowder[num]['loc']) then return end
|
||||
if timeOut(src, 'md-drugs:server:makepowder') then return end
|
||||
if not ps.checkDistance(src, cocaineLocations.MakePowder[num].loc, 3.5) then
|
||||
ps.warn(ps.lang('Catches.notIn', ps.getPlayerName(src)), 'md-drugs:server:makepowder')
|
||||
return
|
||||
end
|
||||
local tier = 'tier1'
|
||||
local logMessage = ' Made Raw Coke'
|
||||
if Config.TierSystem then
|
||||
local coke = getRep(src, 'coke')
|
||||
local coke = tonumber(getRep(src, 'coke'))
|
||||
if coke > Config.Tier1 and coke <= Config.Tier2 then
|
||||
tier = 'tier2'
|
||||
logMessage = ' Made Raw Coke tier 2'
|
||||
elseif coke > Config.Tier2 then
|
||||
tier = 'tier3'
|
||||
logMessage = ' Made Raw Coke tier 3'
|
||||
end
|
||||
end
|
||||
if not GetRecipe(src, 'cocaine', 'cokepowder', tier) then return end
|
||||
Log(GetName(src) .. logMessage .. dist(src, Config.MakePowder[num]['loc']) .. ' vectors', 'coke')
|
||||
if not ps.craftItem(src, cocaineRecipes['cokepowder'][tier]) then
|
||||
verifyHas(src, cocaineRecipes['cokepowder'][tier].take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:cutcokeone', function()
|
||||
RegisterServerEvent('md-drugs:server:cutcokeone', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local count = 0
|
||||
local tier = 'tier1'
|
||||
if timeOut(src, 'md-drugs:server:cutcokeone') then return end
|
||||
if not ps.checkDistance(src, cocaineLocations.CuttingCoke[num].loc, 2.5) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
if Config.TierSystem then
|
||||
local cokeTiers = {
|
||||
{item = 'coke', tier = 'tier1', log = ' Cut Coke'},
|
||||
@@ -63,55 +75,65 @@ RegisterServerEvent('md-drugs:server:cutcokeone', function()
|
||||
{item = 'cokestagethree', tier = 'tier3', log = ' Cut Coke tier 3'}
|
||||
}
|
||||
for _, v in ipairs(cokeTiers) do
|
||||
if count >= 1 then return end
|
||||
if Player.Functions.GetItemByName(v.item) then
|
||||
if not GetRecipe(src, 'cocaine', 'cutcoke', v.tier) then return end
|
||||
Log(GetName(src) .. v.log, 'coke')
|
||||
return
|
||||
if ps.hasItem(src, v.item) then
|
||||
tier = v.tier
|
||||
break
|
||||
end
|
||||
end
|
||||
Notifys(src, Lang.Coke.nocutcoke, "error")
|
||||
else
|
||||
if not GetRecipe(src, 'cocaine', 'cutcoke', 'tier1') then return end
|
||||
Log(GetName(src) .. ' Cut Coke', 'coke')
|
||||
end
|
||||
if not ps.craftItem(src, cocaineRecipes['cutcoke'][tier]) then
|
||||
verifyHas(src, cocaineRecipes['cutcoke'][tier].take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:bagcoke', function()
|
||||
RegisterServerEvent('md-drugs:server:bagcoke', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local count = 0
|
||||
local tier = 'tier1'
|
||||
if timeOut(src, 'md-drugs:server:bagcoke') then return end
|
||||
if not ps.checkDistance(src, cocaineLocations.BaggingCoke[num].loc, 2.5) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
if Config.TierSystem then
|
||||
local coke = getRep(src, 'coke')
|
||||
local cokeTiers = {
|
||||
{item = 'loosecoke', tier = 'tier1', log = ' Bagged Coke'},
|
||||
{item = 'loosecokestagetwo', tier = 'tier2', log = ' Bagged Coke tier 2'},
|
||||
{item = 'loosecokestagethree', tier = 'tier3', log = ' Bagged Coke tier 3'}
|
||||
}
|
||||
for _, v in ipairs(cokeTiers) do
|
||||
if Player.Functions.GetItemByName(v.item) then
|
||||
if count >= 1 then return end
|
||||
if not GetRecipe(src, 'cocaine', 'bagcoke', v.tier) then return end
|
||||
AddRep(src, 'coke')
|
||||
Log(GetName(src) .. v.log .. ' and now has a rep of ' .. coke + 1, 'coke')
|
||||
return
|
||||
if ps.hasItem(src, v.item) then
|
||||
tier = v.tier
|
||||
break
|
||||
end
|
||||
end
|
||||
Notifys(src, Lang.Coke.nobagcoke, "error")
|
||||
if not ps.craftItem(src, cocaineRecipes['bagcoke'][tier]) then
|
||||
verifyHas(src, cocaineRecipes['bagcoke'][tier].take)
|
||||
return
|
||||
end
|
||||
AddRep(src, 'coke')
|
||||
else
|
||||
if not GetRecipe(src, 'cocaine', 'bagcoke', 'tier1') then return end
|
||||
Log(GetName(src) .. ' Bagged Coke', 'coke')
|
||||
if not ps.craftItem(src, cocaineRecipes['bagcoke'][tier]) then
|
||||
verifyHas(src, cocaineRecipes['bagcoke'][tier].take)
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
local cokecut = {loosecokestagetwo = 2, loosecokestagethree = 3}
|
||||
for k, v in pairs (cokecut) do
|
||||
QBCore.Functions.CreateUseableItem(k, function(source, item)
|
||||
ps.createUseable(k, function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if Player.Functions.GetItemByName(item.name) then
|
||||
if not Itemcheck(src, 'bakingsoda', 1) then return end
|
||||
TriggerClientEvent('md-drugs:client:minusTier', src, {type = 'coke', xt = 'bakingsoda', item = k, amount = v,recieve = 'loosecoke'})
|
||||
if not ps.hasItem(src, 'bakingsoda') then
|
||||
ps.notify(src, ps.lang('coke.needBakingSoda'), 'error')
|
||||
return
|
||||
end
|
||||
if ps.hasItem(src,item.name) then
|
||||
local check = ps.callback('md-drugs:client:uncuff', src, 'Cutting It Further')
|
||||
if not check then return end
|
||||
if ps.removeItem(src, k, 1) and ps.removeItem(src, 'bakingsoda', 1) then
|
||||
ps.addItem(src, 'loosecoke', v)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
+171
-22
@@ -1,40 +1,189 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
for k, v in pairs(Consumables.Items) do
|
||||
QBCore.Functions.CreateUseableItem(k, function(source, item)
|
||||
if not Itemcheck(source, k, 1) then return end
|
||||
--[[
|
||||
effect options
|
||||
alien
|
||||
ecstacy
|
||||
meth
|
||||
coke
|
||||
trevor
|
||||
none
|
||||
]]
|
||||
|
||||
--[[
|
||||
add = {}
|
||||
health = number -- amount of health to give
|
||||
stress = number -- number of stress to give
|
||||
speed = number -- number of seconds you a fast boi
|
||||
hunger = number -- number of hunger to fill
|
||||
thirst = number -- same shit
|
||||
strength = number -- how long you are strong boi
|
||||
|
||||
]]
|
||||
|
||||
local Consumables = {}
|
||||
Consumables.defaulttime = 4000
|
||||
Consumables.defaultanim = 'pflag2'
|
||||
Consumables.defaultprogresstext = 'Consuming ' -- it will always show the label of the item being used after what you put here, make sure to keep the space at the end :)
|
||||
Consumables.defaultstatval = 0
|
||||
|
||||
local Consume = {
|
||||
-- meth
|
||||
methbags = { time = 4000, effect = 'meth', anim = "smoke", progressbartext = "Injesting",
|
||||
add = {health = -20, stress = -10, speed = 40, strength = 10, thirst = -30}},
|
||||
cokebaggy = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
cokebaggystagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
cokebaggystagethree = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
-- heroin
|
||||
heroin_ready = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
heroin_readystagetwo = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
heroin_readystagethree = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
-- crack
|
||||
baggedcracked = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
baggedcrackedstagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
baggedcrackedstagethree = { anim = 'smell', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
-- xtc
|
||||
white_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10, hunger = 10 }},
|
||||
red_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboy2s = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
-- weed
|
||||
specialbrownie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
specialcookie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
specialchocolate = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
specialmuffin = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
blunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
dextroblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
leanblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
chewyblunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
-- lean
|
||||
cupofdextro = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
|
||||
cupoflean = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
|
||||
-- lsd
|
||||
smiley_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
wildcherry_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
yinyang_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
pineapple_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
bart_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
gratefuldead_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
|
||||
-- pharma
|
||||
vicodin = { anim = 'pill', effect = 'none', add = { health = 20 }},
|
||||
adderal = { anim = 'pill', effect = 'none', add = { stress = -20 }},
|
||||
morphine = { anim = 'pill', effect = 'none', add = { health = 40 }},
|
||||
xanax = { anim = 'pill', effect = 'none', add = { stress = -40 }},
|
||||
}
|
||||
|
||||
for k, v in pairs(Consume) do
|
||||
ps.createUseable(k, function(source, item)
|
||||
if not ps.hasItem(source, k, 1) then return end
|
||||
local time = v.time or Consumables.defaulttime
|
||||
local effect = v.effect or 0
|
||||
local anim = v.anim or Consumables.defaultanim
|
||||
local progressbartext = v.progressbartext or Consumables.defaultprogresstext
|
||||
local add = v.add or {hunger = 0}
|
||||
TriggerClientEvent("md-drugs:client:consumedrugs", source, time, effect, anim, progressbartext, add, k)
|
||||
local done = ps.callback('md-drugs:client:consumedrugs', source, time, effect, anim, progressbartext, add, k)
|
||||
if done then
|
||||
ps.removeItem(source, k, 1)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterNetEvent('md-drugs:server:removeconsum', function(item)
|
||||
RemoveItem(source,item, 1)
|
||||
Log(GetName(source) .. ' Got High With ' .. item .. '!', 'consuming')
|
||||
end)
|
||||
|
||||
RegisterNetEvent('md-drugs:server:updatestatus', function(stat, statval)
|
||||
local Player = getPlayer(source)
|
||||
local src = source
|
||||
local Player = ps.getPlayer(src)
|
||||
if GetResourceState('es_extended') == 'started' then return end
|
||||
local hunger, thirst = Player.PlayerData.metadata.hunger, Player.PlayerData.metadata.thirst
|
||||
if stat == "thirst" then
|
||||
local value = Player.PlayerData.metadata.thirst + statval
|
||||
Player.Functions.SetMetaData('hunger', value)
|
||||
TriggerClientEvent('hud:client:UpdateNeeds', source, Player.PlayerData.metadata.hunger, value)
|
||||
elseif stat == "hunger" then
|
||||
local value = Player.PlayerData.metadata.hunger + statval
|
||||
local value = thirst + statval
|
||||
Player.Functions.SetMetaData('thirst', value)
|
||||
TriggerClientEvent('hud:client:UpdateNeeds', source, Player.PlayerData.metadata.thirst, value)
|
||||
elseif stat == "stress" then
|
||||
TriggerClientEvent('hud:client:UpdateNeeds', src, hunger, value)
|
||||
elseif stat == "hunger" then
|
||||
local value = hunger + statval
|
||||
Player.Functions.SetMetaData('hunger', value)
|
||||
TriggerClientEvent('hud:client:UpdateNeeds', src, value, thirst)
|
||||
elseif stat == "stress" then
|
||||
local value = Player.PlayerData.metadata.stress + statval
|
||||
Player.Functions.SetMetaData('stress', value)
|
||||
TriggerClientEvent('hud:client:UpdateStress', source, Player.PlayerData.metadata.stress, value)
|
||||
TriggerClientEvent('hud:client:UpdateStress', src, Player.PlayerData.metadata.stress, value)
|
||||
elseif stat == "armor" then
|
||||
local value = Player.PlayerData.metadata.armor + statval
|
||||
TriggerEvent('hospital:server:SetArmor', value)
|
||||
TriggerClientEvent('hud:client:UpdateStress', source, Player.PlayerData.metadata.armor, value)
|
||||
else
|
||||
TriggerEvent('hospital:server:SetArmor', value)
|
||||
TriggerClientEvent('hud:client:UpdateStress', src, Player.PlayerData.metadata.armor, value)
|
||||
end
|
||||
end)
|
||||
+237
-39
@@ -1,56 +1,254 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
lib.callback.register('md-drugs:server:cornerselling:getAvailableDrugs', function(source, cb)
|
||||
local Player = getPlayer(source)
|
||||
local rep = getRep(source, 'cornerselling')
|
||||
if not Player then return nil end
|
||||
local type = 0
|
||||
for k, v in pairs(QBConfig.DrugsPrice) do
|
||||
local item = Player.Functions.GetItemByName(k)
|
||||
if item and type == 0 then
|
||||
type = type + 1
|
||||
Log(GetName(source) .. ' Allowed To Sell ' .. item.name .. '!' , 'cornerselling')
|
||||
local amount = math.random(1,item.amount)
|
||||
if amount >= 15 then amount = 15 end
|
||||
local price = math.random(QBConfig.DrugsPrice[k]['min'], QBConfig.DrugsPrice[k]['max']) * amount
|
||||
local result = math.floor(price * rep.price)
|
||||
return item.name, amount, result
|
||||
local DrugDeals = {}
|
||||
local Drugs = {
|
||||
["weed_white-widow"] = {rep = 1,min = 15, max = 24 },
|
||||
["weed_og-kush"] = {rep = 1,min = 15, max = 28 },
|
||||
["weed_skunk"] = {rep = 1,min = 15, max = 31 },
|
||||
["weed_amnesia"] = {rep = 1,min = 18, max = 34 },
|
||||
["weed_purple-haze"] = {rep = 1,min = 18, max = 37},
|
||||
["weed_ak47"] = {rep = 1,min = 18, max = 40},
|
||||
["crack_baggy"] = {rep = 1,min = 18, max = 34},
|
||||
["cokebaggy"] = {rep = 1,min = 18, max = 37},
|
||||
["cokebaggystagetwo"] = {rep = 1,min = 18, max = 40},
|
||||
["cokebaggystagethree"] = {rep = 1,min = 18, max = 40},
|
||||
["heroin_ready"] = {rep = 1,min = 18, max = 40},
|
||||
["heroin_readystagetwo"] = {rep = 1,min = 18, max = 40},
|
||||
["heroin_readystagethree"] = {rep = 1,min = 18, max = 40},
|
||||
["baggedcracked"] = {rep = 1,min = 18, max = 40},
|
||||
["baggedcrackedstagetwo"] = {rep = 1,min = 18, max = 40},
|
||||
["baggedcrackedstagethree"] = {rep = 1,min = 18, max = 40},
|
||||
["white_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["white_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
["blunts"] = {rep = 1,min = 18, max = 40},
|
||||
["leanblunts"] = {rep = 1,min = 18, max = 40},
|
||||
["dextroblunts"] = {rep = 1,min = 18, max = 40},
|
||||
["chewyblunt"] = {rep = 1,min = 18, max = 40},
|
||||
["blunt"] = {rep = 1,min = 18, max = 40},
|
||||
["specialchocolate"] = {rep = 1,min = 18, max = 40},
|
||||
["specialbrownie"] = {rep = 1,min = 18, max = 40},
|
||||
["specialcookie"] = {rep = 1,min = 18, max = 40},
|
||||
["specialmuffin"] = {rep = 1,min = 18, max = 40},
|
||||
["shatter"] = {rep = 1,min = 18, max = 40},
|
||||
["ciggie"] = {rep = 1,min = 18, max = 40},
|
||||
["methbags"] = {rep = 1,min = 18, max = 40},
|
||||
["driedmescaline"] = {rep = 1,min = 18, max = 40},
|
||||
["shrooms"] = {rep = 1,min = 18, max = 40},
|
||||
["gratefuldead_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["bart_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["pineapple_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["yinyang_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["wildcherry_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["smiley_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["cupoflean"] = {rep = 1,min = 18, max = 40},
|
||||
["cupofdextro"] = {rep = 1,min = 18, max = 40},
|
||||
}
|
||||
|
||||
local drugsNames = {}
|
||||
for k, v in pairs(Drugs) do
|
||||
table.insert(drugsNames, k)
|
||||
end
|
||||
GlobalState.DrugNames = drugsNames
|
||||
|
||||
local RobbedDrugs = {}
|
||||
local cornsellConfig = {
|
||||
MarkedBills = false, -- if you want to use qb markedbills for selling set to true, if you want to use a custom item or cash set to false
|
||||
CustomItem = '', -- If you want to use a custom item for selling, put the item name here, if not leave it blank ''
|
||||
--- if MarkedBills is false and CustomItem is blank it will pay cash
|
||||
policeRequired = 0, -- if you want cops to be required to sell set this to a number above 0
|
||||
robChance = 1, -- Chance To Be Robbed 1 = 1%
|
||||
}
|
||||
local function beingRobbed(source, item, amount, ped)
|
||||
local src = source
|
||||
ps.removeItem(src, item, amount)
|
||||
ps.notify(src, ps.lang('Cornerselling.gotRobbed'), 'error')
|
||||
RobbedDrugs[ps.getIdentifier(source)] = {item = item, amount = amount, ped = ped}
|
||||
return true
|
||||
end
|
||||
|
||||
local function getDrugBack(source, item, amount)
|
||||
local src = source
|
||||
if RobbedDrugs[ps.getIdentifier(source)] then
|
||||
if RobbedDrugs[ps.getIdentifier(source)].item == item and RobbedDrugs[ps.getIdentifier(source)].amount == amount then
|
||||
ps.addItem(src, item, amount)
|
||||
ps.notify(src, ps.lang('Cornerselling.gotBack'), 'success')
|
||||
RobbedDrugs[ps.getIdentifier(source)] = nil
|
||||
return true
|
||||
end
|
||||
end
|
||||
if type == 0 then
|
||||
return 'nothing', 0, 0
|
||||
end
|
||||
|
||||
ps.registerCallback('md-drugs:server:cornerselling:getAvailableDrugs', function(source, ped)
|
||||
local Player = ps.getPlayer(source)
|
||||
local rep = getRep(source, 'cornerselling')
|
||||
local priceAdjust = json.decode(rep).price
|
||||
if not Player then return nil end
|
||||
for k, v in pairs(Drugs) do
|
||||
local item = ps.getItemCount(source, k) or 0
|
||||
if item >= 1 then
|
||||
local maths = math.random(1,100)
|
||||
if maths <= cornsellConfig.robChance then
|
||||
beingRobbed(source, k, item, ped)
|
||||
return 'robbed'
|
||||
else
|
||||
if item > 15 then item = 15 end
|
||||
local amount = math.random(1, item)
|
||||
local price = (math.random(Drugs[k]['min'], Drugs[k]['max']) * amount) * priceAdjust
|
||||
DrugDeals[ps.getIdentifier(source)] = {item = k, amount = amount, price = math.floor(price), ped = ped}
|
||||
return DrugDeals[ps.getIdentifier(source)]
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end)
|
||||
|
||||
ps.registerCallback('md-drugs:server:hasDrugs', function(source)
|
||||
for k, v in pairs(Drugs) do
|
||||
if ps.hasItem(source, k, 1) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end)
|
||||
|
||||
local function csCheck(src, item, amount, price)
|
||||
local isIn = false
|
||||
for k, v in pairs (Drugs) do
|
||||
if item == k then
|
||||
isIn = true
|
||||
end
|
||||
end
|
||||
if not isIn then return false end
|
||||
if DrugDeals[ps.getIdentifier(src)] then
|
||||
if DrugDeals[ps.getIdentifier(src)].item == item and DrugDeals[ps.getIdentifier(src)].amount == amount and DrugDeals[ps.getIdentifier(src)].price == price then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
RegisterNetEvent('md-drugs:server:sellCornerDrugs', function(item, amount, price)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if RemoveItem(src, item, amount) then
|
||||
AddRep(src, 'cornerselling', QBConfig.DrugsPrice[item].rep * amount)
|
||||
Log(GetName(src) .. ' Sold ' .. amount .. ' Of ' .. item .. ' For A Price Of ' .. price .. '!' , 'cornerselling')
|
||||
if QBConfig.MarkedBills then
|
||||
if price >= QBConfig.DrugsPrice[item]['min'] * amount and price <= QBConfig.DrugsPrice[item]['max'] * amount then
|
||||
local info = {
|
||||
worth = price
|
||||
}
|
||||
Player.Functions.AddItem('markedbills', 1, false, info )
|
||||
end
|
||||
elseif QBConfig.CustomDirtyMoney then
|
||||
AddItem(src, QBConfig.CustomDirtyMoneyitem, price)
|
||||
else
|
||||
Player.Functions.AddMoney('cash', price)
|
||||
end
|
||||
end
|
||||
if not csCheck(src, item, amount, price) then return end
|
||||
if not ps.removeItem(src, item, amount) then
|
||||
ps.notify(src, ps.lang('Cornerselling.notEnough'), 'error')
|
||||
DrugDeals[ps.getIdentifier(src)] = nil
|
||||
return
|
||||
end
|
||||
AddRep(src, 'cornerselling', Drugs[item].rep * amount)
|
||||
DrugDeals[ps.getIdentifier(src)] = nil
|
||||
if cornsellConfig.MarkedBills then
|
||||
ps.addItem(src, 'markedbills', price, {worth = price})
|
||||
return
|
||||
end
|
||||
if cornsellConfig.CustomItem ~= '' then
|
||||
ps.addItem(src, cornsellConfig.CustomItem, price)
|
||||
return
|
||||
end
|
||||
ps.addMoney(src, 'cash', price)
|
||||
end)
|
||||
|
||||
lib.addCommand('cornersell', {
|
||||
help = 'Sell Things On The Corner',
|
||||
RegisterNetEvent('md-drugs:server:getBackRobbed', function()
|
||||
local tabl = RobbedDrugs[ps.getIdentifier(source)]
|
||||
if tabl == nil then return end
|
||||
getDrugBack(source, tabl.item, tabl.amount)
|
||||
RobbedDrugs[ps.getIdentifier(source)] = nil
|
||||
end)
|
||||
|
||||
ps.registerCommand('cornersell', {
|
||||
help = ps.lang('Cornerselling.comDes'),
|
||||
params = {
|
||||
},
|
||||
}, function(source, args, raw)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
Log(GetName(source) .. ' Used Command cornersell!' , 'cornerselling')
|
||||
local jobCount = ps.getJobTypeCount('leo')
|
||||
if jobCount < cornsellConfig.policeRequired then
|
||||
ps.notify(src, ps.lang('Catches.noCops'), 'error')
|
||||
return
|
||||
end
|
||||
TriggerClientEvent('md-drugs:client:cornerselling', src)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:cornerselling:stop', function()
|
||||
local src = source
|
||||
if DrugDeals[ps.getIdentifier(src)] then
|
||||
DrugDeals[ps.getIdentifier(src)] = nil
|
||||
end
|
||||
end)
|
||||
+86
-31
@@ -1,61 +1,116 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local crackRecipe = {
|
||||
cookcrack = {
|
||||
tier1 = {take = {loosecoke = 1, bakingsoda = 1}, give = {crackrock = 1}},
|
||||
tier2 = {take = {loosecokestagetwo = 1, bakingsoda = 1}, give = {crackrockstagetwo = 1}},
|
||||
tier3 = {take = {loosecokestagethree = 1,bakingsoda = 1}, give = {crackrockstagethree = 1}},
|
||||
},
|
||||
bagcrack = {
|
||||
tier1 = {take = {crackrock = 1, empty_weed_bag = 1}, give = {baggedcracked = 1}},
|
||||
tier2 = {take = {crackrockstagetwo = 1, empty_weed_bag = 1}, give = {baggedcrackedstagetwo = 1}},
|
||||
tier3 = {take = {crackrockstagethree = 1, empty_weed_bag = 1}, give = {baggedcrackedstagethree = 1}},
|
||||
}
|
||||
}
|
||||
|
||||
local CrackLocations = {
|
||||
makecrack = { -- make crack with baking soda with cut coke 1-3
|
||||
{loc = vector3(2433.47, 4970.02, 42.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
bagcrack = { --- bag crack 1-3 stages
|
||||
{loc = vector3(2436.55, 4964.96, 42.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetCrackLocations', function()
|
||||
return CrackLocations
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:makecrackone', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local count,type, tier = 0, 'cookcrack', 'tier1'
|
||||
if CheckDist(src, Config.makecrack[num]['loc']) then return end
|
||||
local tier = 'tier1'
|
||||
if timeOut(src, 'md-drugs:server:makecrackone') then return end
|
||||
if not ps.checkDistance(src, CrackLocations.makecrack[num].loc, 2.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
|
||||
if Config.TierSystem then
|
||||
local crackTiers = {
|
||||
{item = 'loosecoke', tier = 'tier1', log = ' Cut Crack'},
|
||||
{item = 'loosecokestagetwo', tier = 'tier2', log = ' Cut Crack tier 2'},
|
||||
{item = 'loosecokestagethree', tier = 'tier3', log = ' Cut Crack tier 3'}
|
||||
{item = 'loosecoke', tier = 'tier1'},
|
||||
{item = 'loosecokestagetwo', tier = 'tier2'},
|
||||
{item = 'loosecokestagethree', tier = 'tier3'}
|
||||
}
|
||||
for _, v in ipairs(crackTiers) do
|
||||
if count >= 1 then break end
|
||||
print(v.item)
|
||||
if Player.Functions.GetItemByName(v.item) then
|
||||
tier = v.tier
|
||||
count = count + 1
|
||||
Log(GetName(src) .. v.log, 'crack')
|
||||
if ps.hasItem(src, v.item) then
|
||||
tier = v.tier
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
print(tier)
|
||||
if not GetRecipe(src, 'crack', type, tier) then return end
|
||||
if not ps.craftItem(src, crackRecipe['cookcrack'][tier]) then
|
||||
verifyHas(src, crackRecipe['cookcrack'][tier].take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:bagcrack', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local count,type, tier = 0, 'bagcrack', 'tier1'
|
||||
local tier = 'tier1'
|
||||
if timeOut(src, 'md-drugs:server:bagcrack') then return end
|
||||
if not ps.checkDistance(src, CrackLocations.bagcrack[num].loc, 2.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
if Config.TierSystem then
|
||||
local crackTiers = {
|
||||
{item = 'crackrock', tier = 'tier1', log = ' Bagged Crack'},
|
||||
{item = 'crackrockstagetwo', tier = 'tier2', log = ' Bagged Crack tier 2'},
|
||||
{item = 'crackrockstagethree', tier = 'tier3', log = ' Bagged Crack tier 3'}
|
||||
{item = 'crackrock', tier = 'tier1'},
|
||||
{item = 'crackrockstagetwo', tier = 'tier2'},
|
||||
{item = 'crackrockstagethree', tier = 'tier3'}
|
||||
}
|
||||
for _, v in ipairs(crackTiers) do
|
||||
if count >= 1 then break end
|
||||
if Player.Functions.GetItemByName(v.item) then
|
||||
tier = v.tier
|
||||
count = count + 1
|
||||
Log(GetName(src) .. v.log, 'crack')
|
||||
if ps.hasItem(src, v.item) then
|
||||
tier = v.tier
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if not GetRecipe(src, 'crack', type, tier) then return end
|
||||
if not ps.craftItem(src, crackRecipe['bagcrack'][tier]) then
|
||||
verifyHas(src, crackRecipe['bagcrack'][tier].take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
local cokecut = {crackrockstagetwo = 2, crackrockstagethree = 3}
|
||||
for k, v in pairs (cokecut) do
|
||||
QBCore.Functions.CreateUseableItem(k, function(source, item)
|
||||
ps.createUseable(k, function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if Player.Functions.GetItemByName(item.name) then
|
||||
if not Itemcheck(src, 'bakingsoda', 1) then return end
|
||||
TriggerClientEvent('md-drugs:client:minusTier', src, {type = 'crack', xt = 'bakingsoda', item = k, amount = v,recieve = 'crackrock'})
|
||||
if ps.hasItem(src, item.name) then
|
||||
if not ps.hasItem(src, 'bakingsoda', 1) then return end
|
||||
local check = ps.callback('md-drugs:client:uncuff', src, 'Cutting Crack Rock Further')
|
||||
if not check then return end
|
||||
if ps.removeItem(src, k, 1) and ps.removeItem(src, 'bakingsoda', 1) then
|
||||
ps.addItem(src, 'crackrock', v)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterNetEvent("md-drugs:server:failcrackone", function(num)
|
||||
local src = source
|
||||
if not ps.checkDistance(src, CrackLocations.makecrack[num].loc, 2.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
local items = {
|
||||
loosecoke = 1,
|
||||
loosecokestagetwo = 1,
|
||||
loosecokestagethree = 1
|
||||
}
|
||||
for k,v in pairs(items) do
|
||||
if ps.hasItem(src, k, v) then
|
||||
ps.removeItem(src, k, v)
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
+188
-70
@@ -1,126 +1,244 @@
|
||||
QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
|
||||
-- Callbacks
|
||||
lib.callback.register('md-drugs:server:getDealers', function(data)
|
||||
local dloc = {
|
||||
{coords = vector4(282.48, -1814.32, 27.23, 145.11)},
|
||||
{coords = vector4(-296.11, -1300.65, 31.31, 270.87)},
|
||||
{coords = vector4(-36.64, -1492.04, 31.22, 151.91)},
|
||||
{coords = vector4(282.48, -1814.32, 27.23, 232.19)},
|
||||
{coords = vector4(54.54, -1873.22, 22.81, 131.47)},
|
||||
{coords = vector4(-269.34, -2437.25, 6.40, 252.67)},
|
||||
{coords = vector4(269.19, -3248.55, 5.79, 252.67)},
|
||||
{coords = vector4(632.94, -3015.44, 7.34, 3.44)},
|
||||
{coords = vector4(1049.55, -2427.88, 30.30, 79.52)},
|
||||
{coords = vector4(853.16, -2207.32, 30.68, 284.88)},
|
||||
{coords = vector4(903.10, -1721.98, 32.25, 168.71)},
|
||||
{coords = vector4(1289.30, -1710.49, 55.48, 208.57)},
|
||||
{coords = vector4(1412.01, -1490.53, 60.66, 132.46)},
|
||||
{coords = vector4(734.26, -1311.26, 27.01, 102.99)},
|
||||
{coords = vector4(1231.60, -1083.06, 38.53, 102.99)},
|
||||
{coords = vector4(1143.55, -1000.19, 45.32, 257.05)},
|
||||
{coords = vector4(1264.82, -702.87, 64.72, 257.05)},
|
||||
{coords = vector4(1119.65, -639.76, 56.81, 284.53)},
|
||||
{coords = vector4(1129.59, -462.59, 66.49, 79.23)},
|
||||
{coords = vector4(42.80, -811.45, 31.43, 79.23)},
|
||||
{coords = vector4(-509.48, -1001.66, 23.55, 79.23)},
|
||||
{coords = vector4(-830.97, -862.41, 20.69, 13.72)},
|
||||
{coords = vector4(-1320.26, -1177.34, 4.89, 74.29)},
|
||||
{coords = vector4(-1097.63, -1673.24, 8.40, 136.51)},
|
||||
{coords = vector4(-1147.61, -1452.10, 4.60, 51.50)},
|
||||
{coords = vector4(-1241.69, -1208.39, 8.52, 107.56)},
|
||||
{coords = vector4(-1876.92, -584.44, 11.85, 329.54)},
|
||||
{coords = vector4(-1303.94, -441.39, 35.22, 128.73)},
|
||||
{coords = vector4(-1705.48, -433.46, 42.17, 128.73)},
|
||||
{coords = vector4(-1305.99, 336.35, 65.50, 35.13)},
|
||||
{coords = vector4(-741.80, 484.84, 109.47, 110.85)},
|
||||
{coords = vector4(-409.57, 341.49, 108.91, 270.45)},
|
||||
{coords = vector4(-126.44, 588.18, 204.71, 8.12)},
|
||||
{coords = vector4(211.42, -101.42, 73.28, 174.10)},
|
||||
{coords = vector4(490.61, -95.04, 66.44, 273.57)},
|
||||
{coords = vector4(387.19, -993.59, 29.42, 273.57)},
|
||||
{coords = vector4(-500.47, -712.37, 33.21, 273.57)},
|
||||
{coords = vector4(2572.20, 479.97, 108.68, 80.27)},
|
||||
{coords = vector4(-430.10, 1205.41, 325.76, 169.25)},
|
||||
{coords = vector4(-126.06, 1896.58, 197.33, 169.25)},
|
||||
{coords = vector4(-2521.08, 2310.31, 33.22, 276.87)},
|
||||
{coords = vector4(1129.01, 2125.14, 55.55, 276.87)},
|
||||
{coords = vector4(1546.64, 2166.56, 78.72, 100.37)},
|
||||
{coords = vector4(404.34, 2584.54, 43.52, 100.37)},
|
||||
{coords = vector4(180.15, 2792.99, 45.66, 283.04)},
|
||||
{coords = vector4(287.67, 2843.89, 44.70, 118.41)},
|
||||
{coords = vector4(2030.23, 3184.42, 45.13, 146.06)},
|
||||
{coords = vector4(2175.33, 3321.92, 46.13, 214.53)},
|
||||
{coords = vector4(2389.61, 3340.98, 47.34, 214.52)},
|
||||
{coords = vector4(1716.25, 3295.08, 41.26, 196.21)},
|
||||
{coords = vector4(1779.38, 3640.83, 34.50, 24.16)},
|
||||
{coords = vector4(1894.59, 3715.34, 32.75, 127.89)},
|
||||
{coords = vector4(1861.90, 3857.15, 36.27, 293.45)},
|
||||
{coords = vector4(996.38, 3575.07, 34.61, 328.30)},
|
||||
{coords = vector4(387.45, 3584.73, 33.29, 351.41)},
|
||||
{coords = vector4(68.08, 3693.22, 40.66, 63.98)},
|
||||
{coords = vector4(15.55, 3688.70, 39.81, 230.89)},
|
||||
{coords = vector4(2566.59, 4283.34, 41.97, 348.53)},
|
||||
{coords = vector4(2570.82, 4667.95, 34.08, 135.30)},
|
||||
{coords = vector4(2882.05, 4511.72, 48.02, 66.58)},
|
||||
{coords = vector4(2243.78, 5154.02, 57.89, 139.42)},
|
||||
{coords = vector4(1642.91, 4846.08, 45.51, 109.83)},
|
||||
{coords = vector4(1308.87, 4362.17, 41.55, 256.01)},
|
||||
{coords = vector4(-1090.27, 4940.57, 214.13, 256.01)},
|
||||
{coords = vector4(-552.37, 5348.37, 74.76, 62.18)},
|
||||
{coords = vector4(-679.02, 5834.27, 17.33, 137.18)},
|
||||
{coords = vector4(-481.97, 6276.93, 13.35, 323.16)},
|
||||
{coords = vector4(-24.92, 6472.60, 31.49, 144.42)},
|
||||
{coords = vector4(36.03, 6549.18, 31.43, 287.85)},
|
||||
{coords = vector4(406.08, 6526.43, 27.75, 97.45)},
|
||||
{coords = vector4(1522.39, 6329.23, 24.61, 331.71)},
|
||||
{coords = vector4(1741.39, 6419.62, 35.04, 331.71)},
|
||||
{coords = vector4(3426.72, 5174.42, 7.40, 112.64)},
|
||||
{coords = vector4(2525.99, 2586.62, 38.94, 257.02)},
|
||||
{coords = vector4(2696.29, 1664.44, 24.52, 70.12)},
|
||||
{coords = vector4(106.24, -1280.32, 29.24, 350.89)},
|
||||
{coords = vector4(223.98, 121.53, 102.76, 259.68)},
|
||||
{coords = vector4(102.19, -255.02, 50.05, 83.59)},
|
||||
}
|
||||
local Products = {
|
||||
{name = "weed_whitewidow_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_skunk_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_purplehaze_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_ogkush_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_amnesia_seed", price = 15, amount = 150, minrep = 0},
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:dealerList', function()
|
||||
return Products
|
||||
end)
|
||||
|
||||
ps.registerCallback('md-drugs:server:getDealers', function(source)
|
||||
local check = MySQL.query.await('SELECT * FROM dealers', {})
|
||||
local loc = json.encode({x = 899.98, y = -2603.24, z = 6.11, h = 176.12 })
|
||||
if not check[1] then
|
||||
if not check[1] then
|
||||
MySQL.insert('INSERT INTO dealers SET name = ?, coords = ?, time = ?, createdby = ?', {'MD', loc, 'any', 'code Newb'})
|
||||
Wait(2000)
|
||||
local check2 = MySQL.query.await('SELECT * FROM dealers', {})
|
||||
Wait(2000)
|
||||
local check2 = MySQL.query.await('SELECT * FROM dealers', {})
|
||||
return check2
|
||||
else
|
||||
return check
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
lib.callback.register('md-drugs:server:GetDeliveryItem', function(data)
|
||||
|
||||
local DeliveryItems = {
|
||||
{ item = "weed_brick", minrep = 0, payout = {min = 10, max = 50}},
|
||||
{ item = "coke_brick", minrep = 0, payout = {min = 10, max = 50}},
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetDeliveryItem', function(source, data)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local item = math.random(1, #QBConfig.DeliveryItems)
|
||||
local Player = ps.getPlayer(src)
|
||||
local itemnum = math.random(1, #DeliveryItems)
|
||||
local item = DeliveryItems[itemnum].item
|
||||
local amount = math.random(1,4)
|
||||
local check = MySQL.query.await('SELECT * FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid})
|
||||
local locnum = math.random(1, #QBConfig.DeliveryLocations)
|
||||
local locnum = math.random(1, #dloc)
|
||||
local coord = json.encode({
|
||||
x = math.floor(QBConfig.DeliveryLocations[locnum].coords.x * 100) / 100,
|
||||
y = math.floor(QBConfig.DeliveryLocations[locnum].coords.y * 100) / 100,
|
||||
z = math.floor(QBConfig.DeliveryLocations[locnum].coords.z * 100) / 100,
|
||||
x = dloc[locnum].coords.x,
|
||||
y = dloc[locnum].coords.y,
|
||||
z = dloc[locnum].coords.z ,
|
||||
w = dloc[locnum].coords.w
|
||||
})
|
||||
if not check[1] then
|
||||
MySQL.insert('INSERT INTO deliveriesdealer SET cid = ?, itemdata = ?, timestart = ?, maxtime = ?, location = ?',
|
||||
{Player.PlayerData.citizenid, json.encode({item = QBConfig.DeliveryItems[item].item, amount = amount}), os.time(), os.time() + (15 * 60), coord })
|
||||
AddItem(Player.PlayerData.source, QBConfig.DeliveryItems[item].item, amount)
|
||||
return true, QBConfig.DeliveryItems[item].item, amount, coord
|
||||
{ps.getIdentifier(src), json.encode({item = item, amount = amount}), os.time(), os.time() + (15 * 60), coord })
|
||||
ps.addItem(src, item, amount)
|
||||
return true, item, amount, coord
|
||||
else
|
||||
local time = os.time()
|
||||
local timeout = math.floor(os.difftime(time, check[1].maxtime) / 60)
|
||||
|
||||
if timeout > 15 then MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) Notifys(src, 'You Failed To Make It In Time!', 'error' ) return false end
|
||||
Notifys(src,'You Already Have A Delivery To Make', 'error' ) return false, QBConfig.DeliveryItems[item].item, amount, coord
|
||||
|
||||
if timeout > 15 then
|
||||
MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {ps.getIdentifier(src)})
|
||||
ps.notify(src, ps.lang('Deliveries.slowAf'), 'error' )
|
||||
return false
|
||||
end
|
||||
ps.notify(src,ps.lang('Deliveries.alreadyDelivering'), 'error' )
|
||||
return false, item, amount, coord
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('md-drugs:server:giveDeliveryItems', function(item, amount)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local check = MySQL.query.await('SELECT * FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid})
|
||||
local Player = ps.getPlayer(src)
|
||||
local check = MySQL.query.await('SELECT * FROM deliveriesdealer WHERE cid = ?', {ps.getIdentifier(src)})
|
||||
if not check[1] then return end
|
||||
local time = os.time()
|
||||
local timeout = math.floor(os.difftime(time, check[1].maxtime) / 60)
|
||||
local itemData = json.decode(check[1].itemdata)
|
||||
if timeout >= 15 then MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) Notifys(source, 'You Failed To Make It In Time!', 'error' ) return end
|
||||
if timeout >= 15 then
|
||||
MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {ps.getIdentifier(src)})
|
||||
ps.notify(src, ps.lang('Deliveries.slowAf'), 'error' )
|
||||
return
|
||||
end
|
||||
if item ~= itemData.item then return end
|
||||
if amount ~= itemData.amount then return end
|
||||
if RemoveItem(src, item, amount) then
|
||||
for k, v in pairs (QBConfig.DeliveryItems) do
|
||||
if ps.removeItem(src, item, amount) then
|
||||
for k, v in pairs (DeliveryItems) do
|
||||
if v.item == item then
|
||||
local income = math.random(v.payout.min, v.payout.max)
|
||||
Player.Functions.AddMoney('cash', income)
|
||||
ps.addMoney(src, 'cash', income)
|
||||
AddRep(src, 'dealerrep')
|
||||
end
|
||||
end
|
||||
MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid})
|
||||
MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {ps.getIdentifier(src)})
|
||||
end
|
||||
end)
|
||||
|
||||
-- Commands
|
||||
QBCore.Commands.Add("newdealer", "Place a dealer (Admin Only)", {{ name = "name", help = "Dealer name"}, { name = "min", help = "Minimum Time"}, {name = "max", help = "Maximum Time"}}, true, function(source, args)
|
||||
ps.registerCommand("newdealer", {
|
||||
help = ps.lang('Deliveries.newDealerHelp.help'),
|
||||
description = {
|
||||
{ name = "name", help = ps.lang('Deliveries.newDealerHelp.name'), type = "string" },
|
||||
{ name = "min", help = ps.lang('Deliveries.newDealerHelp.timeMin'), type = "number" },
|
||||
{ name = "max", help = ps.lang('Deliveries.newDealerHelp.timeMax'), type = "number" }
|
||||
},
|
||||
admin = true,
|
||||
}, function(source, args)
|
||||
local ped = GetPlayerPed(source)
|
||||
local coords = GetEntityCoords(ped)
|
||||
local Player = getPlayer(source)
|
||||
local Player = ps.getPlayer(source)
|
||||
if not Player then return end
|
||||
local dealerName = args[1]
|
||||
local minTime = tonumber(args[2])
|
||||
local maxTime = tonumber(args[3])
|
||||
local time = json.encode({min = minTime, max = maxTime})
|
||||
|
||||
local dealerName = args.name
|
||||
local pos = json.encode({x = coords.x, y = coords.y, z = coords.z})
|
||||
local result = MySQL.scalar.await('SELECT name FROM dealers WHERE name = ?', {dealerName})
|
||||
if result then return TriggerClientEvent('QBCore:Notify', source, "Already Exists", "error") end
|
||||
MySQL.insert('INSERT INTO dealers (name, coords, time, createdby) VALUES (?, ?, ?, ?)', {dealerName, pos, time, Player.PlayerData.citizenid}, function()
|
||||
|
||||
local result = MySQL.scalar.await('SELECT name FROM dealers WHERE name = ?', { dealerName })
|
||||
if result then
|
||||
return ps.notify(source,ps.lang('Deliveries.DealerExists'), "error")
|
||||
end
|
||||
|
||||
MySQL.insert('INSERT INTO dealers (name, coords, time, createdby) VALUES (?, ?, ?, ?)', {
|
||||
dealerName, pos, 'nil', Player.PlayerData.citizenid
|
||||
}, function()
|
||||
QBConfig.Dealers[dealerName] = {
|
||||
["name"] = dealerName,
|
||||
["coords"] = {
|
||||
["x"] = coords.x,
|
||||
["y"] = coords.y,
|
||||
["z"] = coords.z,
|
||||
name = dealerName,
|
||||
coords = {
|
||||
x = coords.x,
|
||||
y = coords.y,
|
||||
z = coords.z,
|
||||
h = GetEntityHeading(ped)
|
||||
},
|
||||
["time"] = {
|
||||
["min"] = minTime,
|
||||
["max"] = maxTime
|
||||
},
|
||||
["products"] = QBConfig.Products
|
||||
}
|
||||
TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers)
|
||||
end)
|
||||
end, "admin")
|
||||
end)
|
||||
|
||||
ps.registerCommand("deletedealer", {
|
||||
help = ps.lang('Deliveries.deleteDealerHelp.help'),
|
||||
description = {
|
||||
{ name = "name", help = ps.lang('Deliveries.deleteDealerHelp.name'), type = "string" }
|
||||
},
|
||||
admin = true
|
||||
}, function(source, args)
|
||||
local dealerName = args.name
|
||||
local result = MySQL.scalar.await('SELECT * FROM dealers WHERE name = ?', { dealerName })
|
||||
|
||||
QBCore.Commands.Add("deletedealer", "Delete a dealer (Admin Only)", {{
|
||||
name = "name",
|
||||
help = "Dealer Name"
|
||||
}}, true, function(source, args)
|
||||
local dealerName = args[1]
|
||||
local result = MySQL.scalar.await('SELECT * FROM dealers WHERE name = ?', {dealerName})
|
||||
if result then
|
||||
MySQL.query('DELETE FROM dealers WHERE name = ?', {dealerName})
|
||||
MySQL.query('DELETE FROM dealers WHERE name = ?', { dealerName })
|
||||
QBConfig.Dealers[dealerName] = nil
|
||||
TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers)
|
||||
TriggerClientEvent('QBCore:Notify', source, "Dealer Deleted" , "success")
|
||||
ps.notify(source, ps.lang('Deliveries.deleteDealerSuccess'), "success")
|
||||
else
|
||||
TriggerClientEvent('QBCore:Notify', source, "Who You Tryna Delete", "error")
|
||||
ps.notify(source, ps.lang('Deliveries.deleteDealerFail'), "error")
|
||||
end
|
||||
end, "admin")
|
||||
|
||||
RegisterServerEvent("md-drugs:server:Dealershop", function(amount, value, item, info)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local balance = Player.Functions.GetMoney(tostring(value))
|
||||
if Player.Functions.RemoveMoney(tostring(value), tonumber(info) * tonumber(amount)) then
|
||||
TriggerClientEvent('inventory:client:ItemBox', src, item.name, "add", amount)
|
||||
Player.Functions.AddItem(item, amount)
|
||||
else
|
||||
TriggerClientEvent('QBCore:Notify', source, "Can't give item!", "error")
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
RegisterNetEvent('md-drugs:server:buyItemDealer', function(num)
|
||||
local src = source
|
||||
local itemData = Products[num]
|
||||
if not itemData then return end
|
||||
local Player = ps.getPlayer(src)
|
||||
if not Player then return end
|
||||
if not ps.removeMoney(src, 'cash', itemData.price) or not ps.removeMoney(src,'bank', itemData.price) then
|
||||
ps.notify(src, ps.lang('Catches.notEnoughMoney'), 'error')
|
||||
return
|
||||
end
|
||||
ps.addItem(src, itemData.name, 1)
|
||||
ps.notify(src, string.format(ps.lang('Deliveries.buyItemSuccess'), 1, ps.getLabel(itemData.name), itemData.price), 'success')
|
||||
end)
|
||||
+59
-339
@@ -1,252 +1,70 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local notify = Config.Notify -- qb or ox
|
||||
local timeOutPlayers = {}
|
||||
|
||||
------------------------------------------ logging stuff
|
||||
local logs = false
|
||||
local logapi = GetConvar("fivemerrLogs", "")
|
||||
local endpoint = 'https://api.fivemerr.com/v1/logs'
|
||||
local headers = {
|
||||
['Authorization'] = logapi,
|
||||
['Content-Type'] = 'application/json',
|
||||
}
|
||||
local function timeOutThread(src)
|
||||
CreateThread(function()
|
||||
timeOutPlayers[ps.getIdentifier(src)] = true
|
||||
Wait(3000)
|
||||
timeOutPlayers[ps.getIdentifier(src)] = nil
|
||||
end)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
if logs then
|
||||
print'^2 Logs Enabled for md-drugs'
|
||||
if logapi == 'insert string here' then
|
||||
print'^1 homie you gotta set your api on line 4'
|
||||
else
|
||||
print'^2 API Key Looks Good, Dont Trust Me Though, Im Not Smart'
|
||||
function timeOut(src, event)
|
||||
if timeOutPlayers[ps.getIdentifier(src)] then
|
||||
ps.warn(ps.lang('Catches.onCooldownWarn', ps.getPlayerName(src), event))
|
||||
return true
|
||||
end
|
||||
else
|
||||
print'^1 logs disabled for md-drugs'
|
||||
end
|
||||
end)
|
||||
|
||||
function Log(message, type)
|
||||
if logs == false then return end
|
||||
local buffer = {
|
||||
level = "info",
|
||||
message = message,
|
||||
resource = GetCurrentResourceName(),
|
||||
metadata = {
|
||||
drugs = type,
|
||||
playerid = source
|
||||
}
|
||||
}
|
||||
SetTimeout(500, function()
|
||||
PerformHttpRequest(endpoint, function(status, _, _, response)
|
||||
if status ~= 200 then
|
||||
if type(response) == 'string' then
|
||||
response = json.decode(response) or response
|
||||
end
|
||||
end
|
||||
end, 'POST', json.encode(buffer), headers)
|
||||
buffer = nil
|
||||
end)
|
||||
end
|
||||
---------------------------------------------------- inventory catcher
|
||||
local invname = ''
|
||||
CreateThread(function()
|
||||
if GetResourceState('ps-inventory') == 'started' then
|
||||
invname = 'ps-inventory'
|
||||
elseif GetResourceState('qb-inventory') == 'started' then
|
||||
invname = 'qb-inventory'
|
||||
else
|
||||
invname = 'inventory'
|
||||
end
|
||||
end)
|
||||
|
||||
local inventory = ''
|
||||
|
||||
CreateThread(function()
|
||||
if GetResourceState('ox_inventory') == 'started' then
|
||||
inventory = 'ox'
|
||||
else
|
||||
inventory = 'qb'
|
||||
end
|
||||
end)
|
||||
------------------------------------ Player Stuff functions
|
||||
function getPlayer(source)
|
||||
local src = source
|
||||
local Player = QBCore.Functions.GetPlayer(src)
|
||||
return Player
|
||||
timeOutThread(src)
|
||||
return false
|
||||
end
|
||||
|
||||
function GetName(source)
|
||||
local Player = getPlayer(source)
|
||||
return Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname
|
||||
end
|
||||
function verifyHas(source, items)
|
||||
local need = 0
|
||||
local have = 0
|
||||
local missingList = {}
|
||||
|
||||
function GetCoords(source)
|
||||
local ped = GetPlayerPed(source)
|
||||
local playerCoords = GetEntityCoords(ped)
|
||||
return playerCoords
|
||||
end
|
||||
|
||||
function dist(source, coords)
|
||||
local playerPed = GetPlayerPed(source)
|
||||
local pcoords = GetEntityCoords(playerPed)
|
||||
local dist = #(pcoords - coords)
|
||||
return dist
|
||||
end
|
||||
|
||||
function CheckDist(source, coords)
|
||||
local playerPed = GetPlayerPed(source)
|
||||
local pcoords = GetEntityCoords(playerPed)
|
||||
local ok
|
||||
if #(pcoords - coords) < 4.0 then
|
||||
return ok
|
||||
else
|
||||
DropPlayer(source, 'md-drugs: You Were A Total Of ' .. #(pcoords - coords) .. ' Too Far Away To Trigger This Event')
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Notifys(source, text, type)
|
||||
local src = source
|
||||
if notify == 'qb' then
|
||||
TriggerClientEvent("QBCore:Notify", src, text, type)
|
||||
elseif notify == 'ox' then
|
||||
lib.notify(src, { title = text, type = type})
|
||||
elseif notify == 'okok' then
|
||||
TriggerClientEvent('okokNotify:Alert', src, '', text, 4000, type, false)
|
||||
else
|
||||
print"^1 Look At The Config For Proper Alert Options"
|
||||
end
|
||||
end
|
||||
|
||||
function GetLabels(item)
|
||||
if inventory == 'qb' then
|
||||
return QBCore.Shared.Items[item].label
|
||||
elseif inventory == 'ox' then
|
||||
local items = exports.ox_inventory:Items()
|
||||
return items[item].label
|
||||
end
|
||||
end
|
||||
|
||||
function Itemcheck(source, item, amount)
|
||||
if inventory == 'qb' then
|
||||
local Player = getPlayer(source)
|
||||
local itemchecks = Player.Functions.GetItemByName(item)
|
||||
if itemchecks and itemchecks.amount >= amount then
|
||||
return true
|
||||
else
|
||||
Notifys(source, 'You Need ' .. amount .. ' Of ' .. GetLabels(item) .. ' To Do this', 'error')
|
||||
return false
|
||||
end
|
||||
elseif inventory == 'ox' then
|
||||
local items = exports.ox_inventory:GetItem(source, item, nil, false)
|
||||
if items.count >= amount then
|
||||
return true
|
||||
for k, v in pairs(items) do
|
||||
need = need + 1
|
||||
if ps.hasItem(source, k, v) then
|
||||
have = have + 1
|
||||
else
|
||||
Notifys(source, 'You Need ' .. amount .. ' Of ' .. GetLabels(item) .. ' To Do This', 'error')
|
||||
return false
|
||||
local label = ps.getItemLabel(k) or k
|
||||
table.insert(missingList, v .. " " .. label)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveItem(source, item, amount)
|
||||
if inventory == 'qb' then
|
||||
local Player = getPlayer(source)
|
||||
if Player.Functions.RemoveItem(item, amount) then
|
||||
TriggerClientEvent(invname ..":client:ItemBox", source, QBCore.Shared.Items[item], "remove", amount)
|
||||
return true
|
||||
else
|
||||
Notifys(source, 'You Need ' .. amount .. ' Of ' .. GetLabels(item) .. ' To Do This', 'error')
|
||||
end
|
||||
elseif inventory == 'ox' then
|
||||
if exports.ox_inventory:RemoveItem(source, item, amount) then
|
||||
return true
|
||||
else
|
||||
Notifys(source, 'You Need ' .. amount .. ' Of ' .. GetLabels(item) .. ' To Do This', 'error')
|
||||
end
|
||||
if need == have then
|
||||
return true
|
||||
end
|
||||
|
||||
local message = ps.lang('Catches.itemMissings') .. table.concat(missingList, "\n")
|
||||
ps.notify(source, message, 'error')
|
||||
return false
|
||||
end
|
||||
|
||||
function AddItem(source, item, amount)
|
||||
if inventory == 'qb' then
|
||||
local Player = getPlayer(source)
|
||||
if Player.Functions.AddItem(item, amount) then
|
||||
TriggerClientEvent(invname ..":client:ItemBox", source, QBCore.Shared.Items[item], "add", amount)
|
||||
return true
|
||||
else
|
||||
print('Failed To Give Item: ' .. item .. ' Check Your qb-core/shared/items.lua')
|
||||
return false
|
||||
end
|
||||
else
|
||||
local carry = exports.ox_inventory:CanCarryItem(source, item, amount)
|
||||
if not carry then Notifys(source, 'You Cant Carry that Much Weight!', 'error') return false end
|
||||
if exports.ox_inventory:AddItem(source, item, amount) then
|
||||
return true
|
||||
else
|
||||
print('Failed To Give Item: ' .. item .. ' Check Your ox_inventory/data/items.lua')
|
||||
return false
|
||||
end
|
||||
end
|
||||
local function handleFresh(source)
|
||||
local table = json.encode({
|
||||
coke = 0,lsd = 0,heroin = 0,dealerrep = 0,
|
||||
cornerselling = { price = QBConfig.SellLevel[1].price,rep = 0,label = QBConfig.SellLevel[1].label,level = 1}
|
||||
})
|
||||
MySQL.insert('INSERT INTO drugrep SET cid = ?, drugrep = ?, name = ?', {ps.getIdentifier(source), table, ps.getPlayerName(source)})
|
||||
return json.decode(table)
|
||||
end
|
||||
|
||||
|
||||
function getRep(source, type)
|
||||
local Player = getPlayer(source)
|
||||
local sql = MySQL.query.await('SELECT * FROM drugrep WHERE cid = ?', {Player.PlayerData.citizenid})
|
||||
function getRep(source, type)
|
||||
local sql = MySQL.query.await('SELECT JSON_UNQUOTE(JSON_EXTRACT(drugrep, ?)) AS rep FROM drugrep WHERE cid = ?', {'$.' .. type, ps.getIdentifier(source)})
|
||||
if not sql[1] then
|
||||
local table = json.encode({
|
||||
coke = Player.PlayerData.metadata.coke or 0,
|
||||
lsd = Player.PlayerData.metadata.lsd or 0,
|
||||
heroin = Player.PlayerData.metadata.heroin or 0,
|
||||
dealerrep = Player.PlayerData.metadata.dealerrep or 0,
|
||||
cornerselling = {
|
||||
price = QBConfig.SellLevel[1].price,
|
||||
rep = 0,
|
||||
label = QBConfig.SellLevel[1].label,
|
||||
level = 1
|
||||
}
|
||||
})
|
||||
MySQL.insert('INSERT INTO drugrep SET cid = ?, drugrep = ?, name = ?', {Player.PlayerData.citizenid, table, GetName(source)})
|
||||
Wait(1000)
|
||||
return json.decode(table)
|
||||
local new = handleFresh(source)
|
||||
return new[type]
|
||||
else
|
||||
local reps = json.decode(sql[1].drugrep)
|
||||
local rep = ''
|
||||
if reps.coke == nil then rep = reps[1] else rep = reps end
|
||||
if type == 'coke' then
|
||||
return rep.coke
|
||||
elseif type == 'heroin' then
|
||||
return rep.heroin
|
||||
elseif type == 'lsd' then
|
||||
return rep.lsd
|
||||
elseif type == 'dealerrep' then
|
||||
return rep.dealerrep
|
||||
elseif type == 'cornerselling' then
|
||||
return rep.cornerselling
|
||||
else
|
||||
print('^1 Error: No Valid Drug Rep Option Chosen')
|
||||
end
|
||||
return false
|
||||
return sql[1].rep
|
||||
end
|
||||
end
|
||||
|
||||
function GetAllRep(source)
|
||||
local Player = getPlayer(source)
|
||||
local sql = MySQL.query.await('SELECT * FROM drugrep WHERE cid = ?', {Player.PlayerData.citizenid})
|
||||
function GetAllRep(source)
|
||||
local sql = MySQL.query.await('SELECT * FROM drugrep WHERE cid = ?', {ps.getIdentifier(source)})
|
||||
if not sql[1] then
|
||||
local table = json.encode({
|
||||
coke = Player.PlayerData.metadata.coke or 0,
|
||||
lsd = Player.PlayerData.metadata.lsd or 0,
|
||||
heroin = Player.PlayerData.metadata.heroin or 0,
|
||||
dealerrep = Player.PlayerData.metadata.dealerrep or 0,
|
||||
cornerselling = {
|
||||
price = QBConfig.SellLevel[1].price,
|
||||
rep = 0,
|
||||
label = QBConfig.SellLevel[1].label,
|
||||
level = 1
|
||||
}
|
||||
})
|
||||
MySQL.insert('INSERT INTO drugrep SET cid = ?, drugrep = ?, name = ?', {Player.PlayerData.citizenid, table, GetName(source)})
|
||||
Wait(1000)
|
||||
return json.decode(table)
|
||||
local new = handleFresh(source)
|
||||
return new
|
||||
else
|
||||
local rep = json.decode(sql[1].drugrep)
|
||||
if rep.coke == nil then return rep[1] end
|
||||
@@ -254,10 +72,10 @@ function GetAllRep(source)
|
||||
end
|
||||
end
|
||||
|
||||
function AddRep(source, type, amount)
|
||||
function AddRep(source, type, amount)
|
||||
if not Config.TierSystem then return false end
|
||||
if not amount then amount = 1 end
|
||||
local Player = getPlayer(source)
|
||||
local sql = MySQL.query.await('SELECT * FROM drugrep WHERE cid = ?', {Player.PlayerData.citizenid})
|
||||
local sql = MySQL.query.await('SELECT * FROM drugrep WHERE cid = ?', {ps.getIdentifier(source)})
|
||||
local reps = json.decode(sql[1].drugrep)
|
||||
local update
|
||||
local rep = ''
|
||||
@@ -271,122 +89,24 @@ function AddRep(source, type, amount)
|
||||
update = json.encode({coke = rep.coke, heroin = rep.heroin, lsd = rep.lsd, dealerrep = rep.dealerrep, cornerselling = {label = v.label, price = v.price, rep = rep.cornerselling.rep + amount, level = k}})
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif type == 'coke' then
|
||||
update = json.encode({coke = rep.coke + amount, heroin = rep.heroin, lsd = rep.lsd, dealerrep = rep.dealerrep, cornerselling = rep.cornerselling})
|
||||
elseif type == 'heroin' then
|
||||
update = json.encode({coke = rep.coke, heroin = rep.heroin + amount, lsd = rep.lsd, dealerrep = rep.dealerrep, cornerselling = rep.cornerselling})
|
||||
elseif type == 'lsd' then
|
||||
update = json.encode({coke = rep.coke, heroin = rep.heroin, lsd = rep.lsd +amount , dealerrep = rep.dealerrep, cornerselling = rep.cornerselling})
|
||||
elseif type == 'dealerrep' then
|
||||
update = json.encode({coke = rep.coke, heroin = rep.heroin, lsd = rep.lsd, dealerrep = rep.dealerrep + amount, cornerselling = rep.cornerselling})
|
||||
end
|
||||
if update == '' then return false end
|
||||
MySQL.update('UPDATE drugrep SET drugrep = ? WHERE cid = ?', {update, Player.PlayerData.citizenid})
|
||||
return true
|
||||
end
|
||||
|
||||
lib.addCommand('addCornerSellingTOREP', {
|
||||
help = 'RUN THIS ONCE AND DELETE',
|
||||
restricted = 'group.admin'
|
||||
}, function(source, args, raw)
|
||||
local sql = MySQL.query.await('SELECT * FROM drugrep', {})
|
||||
for k, v in pairs (sql) do
|
||||
local new = {}
|
||||
local old = json.decode(v.drugrep)
|
||||
local get = old[1] or old
|
||||
table.insert(new, {
|
||||
coke = get.coke,
|
||||
lsd = get.lsd,
|
||||
heroin = get.heroin,
|
||||
dealerrep = get.dealerrep,
|
||||
cornerselling = {
|
||||
price = QBConfig.SellLevel[1].price,
|
||||
rep = 0,
|
||||
label = QBConfig.SellLevel[1].label,
|
||||
level = 1
|
||||
}
|
||||
})
|
||||
local news = json.encode(new)
|
||||
MySQL.query.await('UPDATE drugrep SET drugrep = ? WHERE cid = ?', {news, v.cid})
|
||||
end
|
||||
end)
|
||||
|
||||
function sortTab(tbl, type)
|
||||
table.sort(tbl, function(a, b)
|
||||
return a[type] < b[type]
|
||||
end)
|
||||
end
|
||||
|
||||
function ChecknRemove(source, table)
|
||||
local Player = getPlayer(source)
|
||||
local hass = 0
|
||||
local need = 0
|
||||
for k, v in pairs (table) do
|
||||
need = need + 1
|
||||
if inventory == 'qb' then
|
||||
local itemchecks = Player.Functions.GetItemByName(k)
|
||||
if itemchecks and itemchecks.amount >= v then
|
||||
hass = hass + 1
|
||||
else
|
||||
Notifys(source, 'You Need ' .. v .. ' Of ' .. GetLabels(k) .. ' To Do this', 'error')
|
||||
end
|
||||
elseif inventory == 'ox' then
|
||||
local items = exports.ox_inventory:GetItem(source, k, nil, false)
|
||||
if items.count >= v then
|
||||
hass = hass + 1
|
||||
else
|
||||
Notifys(source, 'You Need ' .. v .. ' Of ' .. GetLabels(k) .. ' To Do This', 'error')
|
||||
end
|
||||
end
|
||||
end
|
||||
if hass == need then
|
||||
for k, v in pairs (table) do
|
||||
RemoveItem(source, k, v)
|
||||
end
|
||||
if update == '' then return false end
|
||||
MySQL.update('UPDATE drugrep SET drugrep = ? WHERE cid = ?', {update, ps.getIdentifier(source)})
|
||||
return true
|
||||
else
|
||||
return false
|
||||
rep[type] = rep[type] + amount
|
||||
MySQL.update('UPDATE drugrep SET drugrep = ? WHERE cid = ?', {json.encode(rep), ps.getIdentifier(source)})
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
lib.callback.register('md-drugs:server:GetCoppers', function(source, cb, args)
|
||||
local amount = 0
|
||||
local players = QBCore.Functions.GetQBPlayers()
|
||||
for k, v in pairs(players) do
|
||||
if v.PlayerData.job.type == 'leo' and v.PlayerData.job.onduty then
|
||||
amount = amount + 1
|
||||
end
|
||||
end
|
||||
return amount
|
||||
ps.registerCallback('md-drugs:server:GetCoppers', function(source, cb, args)
|
||||
return ps.getJobTypeCount('leo')
|
||||
end)
|
||||
|
||||
lib.callback.register('md-drugs:server:GetRep', function(source, cb, args)
|
||||
local src = source
|
||||
local rep = GetAllRep(source)
|
||||
ps.registerCallback('md-drugs:server:GetRep', function(source, cb, args)
|
||||
local rep = GetAllRep(source)
|
||||
return rep
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
if not GetResourceState('ox_lib'):find("start") then
|
||||
print('^1 ox_lib Is A Depndancy, Not An Optional ')
|
||||
end
|
||||
end)
|
||||
CreateThread(function()
|
||||
local url = "https://raw.githubusercontent.com/Mustachedom/md-drugs/main/version.txt"
|
||||
local version = GetResourceMetadata('md-drugs', "version" )
|
||||
PerformHttpRequest(url, function(err, text, headers)
|
||||
if (text ~= nil) then
|
||||
print('^2 Your Version:' .. version .. ' | Current Version:' .. text .. '' )
|
||||
end
|
||||
end, "GET", "", "")
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:AddMas', function(data)
|
||||
local src = source
|
||||
if not data then return end
|
||||
if not Itemcheck(src, data.xt, 1) then return end
|
||||
if not RemoveItem(src, data.item, 1) then return end
|
||||
RemoveItem(src, data.xt, 1)
|
||||
AddItem(src, data.recieve, data.amount)
|
||||
end)
|
||||
ps.versionCheck('md-drugs', 'https://raw.githubusercontent.com/Mustachedom/md-drugs/refs/heads/hushhushmotherfucker/version.txt', 'https://github.com/Mustachedom/md-drugs/')
|
||||
+223
-160
@@ -1,224 +1,287 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
GlobalState.PoppyPlants = Config.PoppyPlants
|
||||
local heroinLabKits = {}
|
||||
local heroinRecipes = {
|
||||
dryheroin = {
|
||||
tier1 = {take = {poppyresin = 1}, give = {heroin = 1}},
|
||||
tier2 = {take = {poppyresin = 1}, give = {heroinstagetwo = 1}},
|
||||
tier3 = {take = {poppyresin = 1}, give = {heroinstagethree = 1}},
|
||||
},
|
||||
cutheroin = {
|
||||
tier1 = {take = {heroin = 1, bakingsoda = 1}, give = {heroincut = 1}},
|
||||
tier2 = {take = {heroinstagetwo = 1, bakingsoda = 1}, give = {heroincutstagetwo = 1}},
|
||||
tier3 = {take = {heroinstagethree = 1, bakingsoda = 1}, give = {heroincutstagethree = 1}},
|
||||
},
|
||||
fillvial = {
|
||||
tier1 = {take = {heroincut = 1, emptyvial = 1}, give = {heroinvial = 1}},
|
||||
tier2 = {take = {heroincutstagetwo = 1, emptyvial = 1}, give = {heroinvialstagetwo = 1}},
|
||||
tier3 = {take = {heroincutstagethree = 1, emptyvial = 1}, give = {heroinvialstagethree = 1}},
|
||||
},
|
||||
fillneedle = {
|
||||
tier1 = {take = {heroinvial = 1, needle = 1}, give = {heroin_ready = 1}},
|
||||
tier2 = {take = {heroinvialstagetwo = 1, needle = 1}, give = {heroin_readystagetwo = 1}},
|
||||
tier3 = {take = {heroinvialstagethree = 1, needle = 1}, give = {heroin_readystagethree = 1}},
|
||||
}
|
||||
}
|
||||
|
||||
local heroinLocations = {
|
||||
dryplant = { -- turn resin into powder
|
||||
{loc = vector3(-1353.77, -335.58, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
cutheroinone = { -- cut heroin stage 1-3 with baking soda
|
||||
{loc = vector3(-1360.14, -337.03, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
fillneedle = { -- fill needles with heroin
|
||||
{loc = vector3(-1366.32, -334.40, 44.44), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
buyKit = {
|
||||
{ped = 'a_m_m_farmer_01',loc = vector4(-1366.32, -334.40, 44.44,180.0), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
}
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
for _, v in pairs(Config.PoppyPlants) do
|
||||
v.taken = false
|
||||
end
|
||||
local prices = {
|
||||
heroinlabkitprice = 10000
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetHeroinLocations', function(source)
|
||||
return heroinLocations
|
||||
end)
|
||||
|
||||
|
||||
function heroinCooldown(loc)
|
||||
CreateThread(function()
|
||||
Wait(Config.respawnTime * 1000)
|
||||
Config.PoppyPlants[loc].taken = false
|
||||
GlobalState.PoppyPlants = Config.PoppyPlants
|
||||
Wait(1000)
|
||||
TriggerClientEvent('heroin:respawnCane', -1, loc)
|
||||
Log('Heroin Plant Respawned At ' .. Config.PoppyPlants[loc].location, 'heroin')
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('md-drugs:server:removecleaningkitheroin', function(data)
|
||||
local src = source
|
||||
if RemoveItem(src,"cleaningkit", 1) then
|
||||
TriggerClientEvent("md-drugs:client:deletedirtyheroin", src, data)
|
||||
Log(GetName(src) .. ' Wiped Down Their Heroin Lab Kit!' , 'heroin')
|
||||
else
|
||||
Notifys(src, "You cant clean it with spit alone", "error")
|
||||
ps.registerCallback('removeCleaningkit', function(source)
|
||||
for k, v in pairs(heroinLabKits) do
|
||||
if v.ownerid == ps.getIdentifier(source) then
|
||||
ps.removeItem(source, 'cleaningkit', 1)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent("heroin:pickupCane", function(loc)
|
||||
if CheckDist(source, Config.PoppyPlants[loc].location) then return end
|
||||
if not Config.PoppyPlants[loc].taken then
|
||||
Config.PoppyPlants[loc].taken = true
|
||||
GlobalState.PoppyPlants = Config.PoppyPlants
|
||||
TriggerClientEvent("heroin:removeCane", -1, loc)
|
||||
heroinCooldown(loc)
|
||||
AddItem(source, 'poppyresin', 1)
|
||||
Log(GetName(source) .. ' Picked A Poppies With a distance of ' .. dist(source, Config.PoppyPlants[loc].location) .. ' vectors', 'heroin')
|
||||
end
|
||||
return false
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:dryplant', function(num)
|
||||
local src = source
|
||||
if CheckDist(source, Config.dryplant[num]['loc']) then return end
|
||||
if not Itemcheck(source, 'poppyresin', 1) then return end
|
||||
|
||||
if timeOut(src, 'md-drugs:server:dryplant') then return end
|
||||
if not ps.checkDistance(src, heroinLocations.dryplant[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
|
||||
local tier = 'tier1'
|
||||
if Config.TierSystem then
|
||||
local heroin = getRep(src, 'heroin')
|
||||
local heroin = tonumber(getRep(src, 'heroin'))
|
||||
if heroin <= Config.Tier1 then
|
||||
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier1') then return end
|
||||
Log(GetName(src) ..' Made Heroin Powder With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
|
||||
tier = 'tier1'
|
||||
elseif heroin >= Config.Tier1 and heroin <= Config.Tier2 then
|
||||
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier2') then return end
|
||||
Log(GetName(src) ..' Made Heroin Powder Tier 2 With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
|
||||
tier = 'tier2'
|
||||
else
|
||||
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier3') then return end
|
||||
Log(GetName(src) ..' Made Heroin Powder Tier 3 With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
|
||||
tier = 'tier3'
|
||||
end
|
||||
else
|
||||
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier1') then return end
|
||||
Log(GetName(src) ..' Made Heroin Powder With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
|
||||
end
|
||||
if not ps.craftItem(src, heroinRecipes['dryheroin'][tier]) then
|
||||
verifyHas(src, heroinRecipes['dryheroin'][tier].take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:cutheroin', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if CheckDist(source, Config.cutheroinone[num]['loc']) then return end
|
||||
if not Itemcheck(src, 'bakingsoda', 1) then return end
|
||||
|
||||
if timeOut(src, 'md-drugs:server:cutheroin') then return end
|
||||
|
||||
if not ps.checkDistance(src, heroinLocations.cutheroinone[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
if Config.TierSystem then
|
||||
local rawh = Player.Functions.GetItemByName('heroin')
|
||||
local rawh2 = Player.Functions.GetItemByName('heroinstagetwo')
|
||||
local rawh3 = Player.Functions.GetItemByName('heroinstagethree')
|
||||
if rawh then
|
||||
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier1') then return end
|
||||
Log(GetName(src) ..' Cut Heroin With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
|
||||
elseif rawh2 then
|
||||
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier2') then return end
|
||||
Log(GetName(src) ..' Cut Heroin Tier 2 With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
|
||||
elseif rawh3 then
|
||||
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier3') then return end
|
||||
Log(GetName(src) .. ' Cut Heroin Tier 3 With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
|
||||
else
|
||||
Notifys(src, Lang.Heroin.noheroin, "error")
|
||||
local itemList = {
|
||||
heroin = 'tier1',
|
||||
heroinstagetwo = 'tier2',
|
||||
heroinstagethree = 'tier3'
|
||||
}
|
||||
for k, v in pairs(itemList) do
|
||||
local cuth = ps.hasItem(src, k)
|
||||
if cuth then
|
||||
if not ps.craftItem(src, heroinRecipes['cutheroin'][v]) then
|
||||
verifyHas(src, heroinRecipes['cutheroin'][v].take)
|
||||
return
|
||||
end
|
||||
AddRep(src, 'heroin')
|
||||
return
|
||||
end
|
||||
end
|
||||
else
|
||||
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier1') then return end
|
||||
Log(GetName(src) ..' Cut Heroin With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
|
||||
if not ps.craftItem(src, heroinRecipes['cutheroin']['tier1']) then
|
||||
verifyHas(src, heroinRecipes['cutheroin']['tier1'].take)
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getheroinlabkit', function()
|
||||
RegisterServerEvent('md-drugs:server:getheroinlabkit', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
|
||||
if CheckDist(source, vector3(Config.buyheroinlabkit.x,Config.buyheroinlabkit.y,Config.buyheroinlabkit.z)) then return end
|
||||
if Player.Functions.RemoveMoney('cash', Config.heroinlabkitprice) then
|
||||
AddItem(src, 'heroinlabkit', 1)
|
||||
Log(GetName(src) ..' Bought A Heroin lab Kit ' .. dist(source, vector3(Config.buyheroinlabkit.x,Config.buyheroinlabkit.y,Config.buyheroinlabkit.z)) .. ' vectors', 'heroin')
|
||||
if timeOut(src, 'md-drugs:server:getheroinlabkit') then return end
|
||||
if not ps.checkDistance(src, heroinLocations.buyKit[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
local has = ps.hasItem(src, 'heroinlabkit')
|
||||
if has then ps.notify(src, ps.lang('heroin.hasKitAlready'), 'error') return end
|
||||
if ps.removeMoney(src, 'cash', prices.heroinlabkitprice) then
|
||||
ps.addItem(src, 'heroinlabkit', 1)
|
||||
else
|
||||
Notifys(src, 'You Need '.. Config.heroinlabkitprice .. ' In Cash For This', 'error')
|
||||
ps.notify(src, ps.lang('heroin.notEnoughMoney', prices.heroinlabkitprice), 'error')
|
||||
end
|
||||
end)
|
||||
|
||||
local function hasHKit(src)
|
||||
for k, v in pairs(heroinLabKits) do
|
||||
if v.ownerid == ps.getIdentifier(src) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getheroinlabkitback', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if AddItem(src, "heroinlabkit", 1) then
|
||||
Log(GetName(src) ..' Picked Up Their Heroin Lab Kit Back At ' .. GetCoords(src) .. '!', 'heroin')
|
||||
end
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem('heroinlabkit', function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if not Itemcheck(source, 'heroinlabkit', 1) then return end
|
||||
if TriggerClientEvent("md-drugs:client:setheroinlabkit", src) then
|
||||
RemoveItem(src, "heroinlabkit", 1)
|
||||
Log(GetName(src) ..' Placed Their Heroin Lab Kit Back At ' .. GetCoords(src) .. '!', 'heroin')
|
||||
local src = source
|
||||
if not hasHKit(src) then return end
|
||||
for k, v in pairs (heroinLabKits) do
|
||||
if v.ownerid == ps.getIdentifier(src) then
|
||||
table.remove(heroinLabKits, k)
|
||||
ps.addItem(src, 'heroinlabkit', 1)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
ps.createUseable('heroinlabkit', function(source, item)
|
||||
local src = source
|
||||
if not ps.hasItem(src, 'heroinlabkit', 1) then return end
|
||||
local placed, loc = ps.callback('md-drugs:client:setheroinlabkit', src)
|
||||
if placed then
|
||||
if ps.removeItem(src, 'heroinlabkit', 1) then
|
||||
table.insert(heroinLabKits, {
|
||||
src = src,
|
||||
ownerid = ps.getIdentifier(src),
|
||||
coords = loc,
|
||||
name = ps.getPlayerName(src)
|
||||
})
|
||||
ps.notify(src, ps.lang('heroin.placedKit'), "success")
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:heatliquidheroin', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if not Itemcheck(source, 'emptyvial', 1) then return end
|
||||
local src = source
|
||||
|
||||
if timeOut(src, 'md-drugs:server:heatliquidheroin') then return end
|
||||
|
||||
if not hasHKit(src) then return end
|
||||
if not ps.hasItem(src, 'emptyvial', 1) then return end
|
||||
|
||||
if Config.TierSystem then
|
||||
local cuth = Player.Functions.GetItemByName('heroincut')
|
||||
local cuth2 = Player.Functions.GetItemByName('heroincutstagetwo')
|
||||
local cuth3 = Player.Functions.GetItemByName('heroincutstagethree')
|
||||
if cuth then
|
||||
if not GetRecipe(src, 'heroin', 'fillvial', 'tier1') then return end
|
||||
Log(GetName(src) ..' Made A Vial Of Heroin', 'heroin')
|
||||
elseif cuth2 then
|
||||
if not GetRecipe(src, 'heroin', 'fillvial', 'tier2') then return end
|
||||
Log(GetName(src) ..' Made A Vial Of Heroin Tier 2', 'heroin')
|
||||
elseif cuth3 then
|
||||
if not GetRecipe(src, 'heroin', 'fillvial', 'tier3') then return end
|
||||
Log(GetName(src) ..' Made A Vial Of Heroin Tier 3', 'heroin')
|
||||
else
|
||||
Notifys(src, 'no cut heroin', "error")
|
||||
local itemList = {
|
||||
heroincut = 'tier1',
|
||||
heroincutstagetwo = 'tier2',
|
||||
heroincutstagethree = 'tier3'
|
||||
}
|
||||
for k, v in pairs(itemList) do
|
||||
local cuth = ps.hasItem(src, k)
|
||||
if cuth then
|
||||
if not ps.craftItem(src, heroinRecipes['fillvial'][v]) then
|
||||
verifyHas(src, heroinRecipes['fillvial'][v].take)
|
||||
return
|
||||
end
|
||||
AddRep(src, 'heroin')
|
||||
return
|
||||
end
|
||||
end
|
||||
else
|
||||
if not GetRecipe(src, 'heroin', 'fillvial', 'tier1') then return end
|
||||
Log(GetName(src) ..' Made A Vial Of Heroin', 'heroin')
|
||||
if not ps.craftItem(src, heroinRecipes['fillvial']['tier1']) then
|
||||
verifyHas(src, heroinRecipes['fillvial']['tier1'].take)
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:failheatingheroin', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local cuth = Player.Functions.GetItemByName('heroincut')
|
||||
local cuth2 = Player.Functions.GetItemByName('heroincutstagetwo')
|
||||
local cuth3 = Player.Functions.GetItemByName('heroincutstagethree')
|
||||
Log(GetName(src) ..' Sucks And Burned Their Heroin', 'heroin')
|
||||
if cuth then
|
||||
RemoveItem(src, 'heroincut', 1)
|
||||
Notifys(src,Lang.Heroin.fail, "error")
|
||||
elseif cuth2 then
|
||||
RemoveItem(src, 'heroincutstagetwo', 1)
|
||||
Notifys(src,Lang.Heroin.fail, "error")
|
||||
elseif cuth3 then
|
||||
RemoveItem(src, 'heroincutstagethree', 1)
|
||||
Notifys(src,Lang.Heroin.fail, "error")
|
||||
local src = source
|
||||
if not hasHKit(src) then return end
|
||||
local itemList = {
|
||||
heroincut = 1,
|
||||
heroincutstagetwo = 1,
|
||||
heroincutstagethree = 1
|
||||
}
|
||||
for k, v in pairs(itemList) do
|
||||
local cuth = ps.hasItem(src, k)
|
||||
if cuth then
|
||||
ps.removeItem(src, k, v)
|
||||
ps.notify(src, ps.lang('heroin.failed'), "error")
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:fillneedle', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if CheckDist(source, Config.fillneedle[num]['loc']) then return end
|
||||
if not Itemcheck(src, 'needle', 1) then return end
|
||||
if timeOut(src, 'md-drugs:server:fillneedle') then return end
|
||||
if not ps.checkDistance(src, heroinLocations.fillneedle[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
if not ps.hasItem(src, 'needle', 1) then return end
|
||||
if Config.TierSystem then
|
||||
local heroin = getRep(src, 'heroin')
|
||||
local vh = Player.Functions.GetItemByName('heroinvial')
|
||||
local vh2 = Player.Functions.GetItemByName('heroinvialstagetwo')
|
||||
local vh3 = Player.Functions.GetItemByName('heroinvialstagethree')
|
||||
if vh then
|
||||
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier1') then return end
|
||||
AddRep(src, 'heroin')
|
||||
Log(GetName(src) ..' Filled A Needle Of Heroin And Now Has A Rep Of ' .. heroin + 1 .. '!' , 'heroin')
|
||||
elseif vh2 then
|
||||
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier2') then return end
|
||||
AddRep(src, 'heroin')
|
||||
Log(GetName(src) ..' Filled A Needle Of Heroin Tier 2 And Now Has A Rep Of ' .. heroin + 1 .. '!' , 'heroin')
|
||||
elseif vh3 then
|
||||
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier3') then return end
|
||||
AddRep(src, 'heroin')
|
||||
Log(GetName(src) ..' Filled A Needle Of Heroin Tier 3 And Now Has A Rep Of ' .. heroin + 1 .. '!' , 'heroin')
|
||||
else
|
||||
Notifys(src,Lang.Heroin.nofill, "error")
|
||||
local itemList = {
|
||||
{item = 'heroinvial', tier = 'tier1', log = ' Filled Heroin Needle'},
|
||||
{item = 'heroinvialstagetwo', tier = 'tier2', log = ' Filled Heroin Needle tier 2'},
|
||||
{item = 'heroinvialstagethree', tier = 'tier3', log = ' Filled Heroin Needle tier 3'}
|
||||
}
|
||||
for k, v in pairs(itemList) do
|
||||
local vh = ps.hasItem(src, v.item)
|
||||
if vh then
|
||||
if not ps.craftItem(src, heroinRecipes['fillneedle'][v.tier]) then
|
||||
verifyHas(src, heroinRecipes['fillneedle'][v.tier].take)
|
||||
return
|
||||
end
|
||||
AddRep(src, 'heroin')
|
||||
return
|
||||
end
|
||||
end
|
||||
else
|
||||
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier1') then return end
|
||||
Log(GetName(src) ..' Filled A Needle Of Heroin!' , 'heroin')
|
||||
if not ps.craftItem(src, heroinRecipes['fillneedle']['tier1']) then
|
||||
verifyHas(src, heroinRecipes['fillneedle']['tier1'].take)
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:failheroin', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
Log(GetName(src) ..' Sucks And Burned Their Heroin', 'heroin')
|
||||
if Config.TierSystem then
|
||||
local vh = Player.Functions.GetItemByName('heroinvial')
|
||||
local vh2 = Player.Functions.GetItemByName('heroinvialstagetwo')
|
||||
local vh3 = Player.Functions.GetItemByName('heroinvialstagethree')
|
||||
if vh then RemoveItem(src, 'heroinvialstagethree', 1 )
|
||||
elseif vh2 then RemoveItem(src, 'heroinvialstagetwo', 1)
|
||||
elseif vh3 then RemoveItem(src, 'heroinvial', 1)
|
||||
local itemList = {
|
||||
heroinvial = 1,
|
||||
heroinvialstagetwo = 1,
|
||||
heroinvialstagethree = 1
|
||||
}
|
||||
for k, v in pairs (itemList) do
|
||||
local cuth = ps.hasItem(src, k)
|
||||
if cuth then
|
||||
ps.removeItem(src, k, v)
|
||||
ps.notify(src, ps.lang('Heroin.failneedle'), "error")
|
||||
return
|
||||
end
|
||||
end
|
||||
else
|
||||
RemoveItem(src, 'heroinvial', 1)
|
||||
ps.removeItem(src, 'heroinvial', 1)
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('playerDropped', function()
|
||||
local src = source
|
||||
for k, v in pairs(heroinLabKits) do
|
||||
if v.src == src then
|
||||
table.remove(heroinLabKits, k)
|
||||
ps.addItem(src, 'heroinlabkit', 1)
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
+86
-20
@@ -1,27 +1,93 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
RegisterServerEvent('md-drugs:server:givelean', function()
|
||||
local chance = math.random(1,100)
|
||||
local amount = math.random(1,5)
|
||||
if chance <= 50 then
|
||||
if AddItem(source, 'mdlean', amount) then
|
||||
Notifys(Lang.Lean.lean, "success")
|
||||
Log(GetName(source) .. ' Got ' .. amount .. ' Of Lean' , 'lean')
|
||||
end
|
||||
else
|
||||
if AddItem(source, 'mdreddextro', amount) then
|
||||
Notifys(Lang.Lean.dextro, "success")
|
||||
Log(GetName(source) .. ' Got ' .. amount .. ' Of Red Dextro' , 'lean')
|
||||
end
|
||||
end
|
||||
local onRun = {}
|
||||
local leanLocs = {
|
||||
MakeLean = {
|
||||
{
|
||||
loc = vector3(2635.81, 4240.57, 45.32),
|
||||
checks = { -- these can be arrays like {'police', 'ambulance'} or just a single string like 'police'
|
||||
--gang = {},
|
||||
--item = {},
|
||||
--job = {},
|
||||
--citizenid = {}
|
||||
}
|
||||
},
|
||||
},
|
||||
SyrupVendor = {
|
||||
{ped = 'a_m_m_farmer_01', loc = vector4(365.21, -578.77, 39.30, 347.23), l = 1.0, w = 1.0, rot = 347.23, gang = ""},
|
||||
},
|
||||
StartLoc = { -- where truck spawns for lean and meth missions
|
||||
vector3(-2307.22, 434.77, 174.47),
|
||||
vector3(614.75, 1786.26, 199.39),
|
||||
vector3(-224.89, 6388.32, 31.59)
|
||||
},
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetLeanLocs', function(source)
|
||||
return leanLocs
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem('leancup', function(source, item)
|
||||
if Itemcheck(source, 'leancup', 1) then
|
||||
TriggerClientEvent('md-drugs:client:leancraft', source)
|
||||
local function setTimeout(identifier)
|
||||
if onRun[identifier] then
|
||||
CreateThread(function()
|
||||
Wait(10 * 60 * 1000)
|
||||
onRun[identifier] = nil
|
||||
end)
|
||||
end
|
||||
end
|
||||
RegisterServerEvent('md-drugs:server:givelean', function()
|
||||
local src = source
|
||||
local amount = math.random(1,5)
|
||||
if not onRun[ps.getIdentifier(src)] then return ps.notify(src, ps.lang('lean.notOnRun'), "error") end
|
||||
onRun[ps.getIdentifier(src)] = onRun[ps.getIdentifier(src)] + 1
|
||||
if math.random(1,100) <= 50 then
|
||||
ps.addItem(src, "mdlean", amount)
|
||||
else
|
||||
ps.addItem(src, "mdreddextro", amount)
|
||||
end
|
||||
if onRun[ps.getIdentifier(src)] >= 4 then
|
||||
onRun[ps.getIdentifier(src)] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:finishcup', function(data)
|
||||
if not GetRecipe(source, 'lean','cups', data.item) then return end
|
||||
exports.ps_lib:registerCrafter({
|
||||
loc = leanLocs.MakeLean,
|
||||
recipes = {
|
||||
cupoflean = {
|
||||
amount = 1,
|
||||
time = 5000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
leancup = 1,
|
||||
mdlean = 1,
|
||||
sprunk = 1
|
||||
}
|
||||
},
|
||||
cupofdextro = {
|
||||
amount = 1,
|
||||
time = 5000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
leancup = 1,
|
||||
mdreddextro = 1,
|
||||
sprunk = 1
|
||||
}
|
||||
}
|
||||
},
|
||||
targetData = {
|
||||
size = {height = 1.0, width = 1.0, length = 1.0, rotation = 180.0},
|
||||
label = 'Make Lean',
|
||||
icon = 'fa-solid fa-mug-saucer',
|
||||
},
|
||||
})
|
||||
|
||||
ps.registerCallback('md-drugs:server:RegisterLean', function(source)
|
||||
local identifier = ps.getIdentifier(source)
|
||||
if not identifier then return false end
|
||||
if onRun[identifier] then
|
||||
return false
|
||||
else
|
||||
onRun[identifier] = 0
|
||||
setTimeout(identifier)
|
||||
return true
|
||||
end
|
||||
end)
|
||||
+149
-88
@@ -1,137 +1,199 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
local prices = {
|
||||
tabcost = 100, -- price per piece of tab paper event does 10 at a time
|
||||
lsdlabkitcost = 10000 -- price of the lsd lab kit
|
||||
}
|
||||
local lsdRecipes = {
|
||||
vial = {
|
||||
heat = {take = {lysergic_acid = 1, diethylamide = 1,}, give = {lsd_one_vial = 1}}
|
||||
},
|
||||
}
|
||||
|
||||
local lsdLocations = {
|
||||
lysergicacid = { -- get lysergic acid
|
||||
{loc = vector3(-1381.21, -327.75, 39.85), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(2405.53, 5008.39, 46.02), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
diethylamide = { -- get diethylamide
|
||||
{loc = vector3(-1371.71, -316.02, 39.53), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(2408.38, 5011.18, 46.08), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
gettabs = { -- buy tab paper
|
||||
{loc = vector3(-1370.77, -314.51, 39.58), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(2409.59, 5012.45, 46.09), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
buyLSDkit = {
|
||||
{ped = 'g_f_y_families_01', loc = vector4(2598.47, 5033.06, 105.86, 283.51), l = 1.0, w = 1.0, rot = 283.51, gang = ""},
|
||||
},
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetLSDLocations', function(source)
|
||||
return lsdLocations
|
||||
end)
|
||||
|
||||
local lsdTables = {}
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getlysergic', function(num)
|
||||
local src = source
|
||||
if CheckDist(src, Config.lysergicacid[num]['loc']) then return end
|
||||
if AddItem(src,'lysergic_acid', 2) then
|
||||
Log(GetName(src) ..' Got Lysergic acid with a distance of ' .. dist(source, Config.lysergicacid[num]['loc']) .. '!', 'lsd')
|
||||
if timeOut(src, 'md-drugs:server:getlysergic') then return end
|
||||
if not ps.checkDistance(src, lsdLocations.lysergicacid[num].loc, 2.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
ps.addItem(src, 'lysergic_acid', 2)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getdiethylamide', function(num)
|
||||
local src = source
|
||||
if CheckDist(src, Config.diethylamide[num]['loc']) then return end
|
||||
if AddItem(src,'diethylamide', 2) then
|
||||
Log(GetName(src) ..' Got Diethylamide with a distance of ' .. dist(source, Config.diethylamide[num]['loc']) .. '!', 'lsd')
|
||||
if timeOut(src, 'md-drugs:server:getdiethylamide') then return end
|
||||
if not ps.checkDistance(src, lsdLocations.diethylamide[num].loc, 2.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
ps.addItem(src, 'diethylamide', 2)
|
||||
end)
|
||||
|
||||
|
||||
QBCore.Functions.CreateUseableItem('lsdlabkit', function(source, item)
|
||||
local src = source
|
||||
if TriggerClientEvent("md-drugs:client:setlsdlabkit", src) then
|
||||
RemoveItem(src, "lsdlabkit", 1)
|
||||
Log(GetName(src) ..' Placed Their LSD Lab Kit Back At ' .. GetCoords(src) .. '!', 'lsd')
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
lib.callback.register('md-drugs:server:removecleaningkit', function(source)
|
||||
ps.createUseable('lsdlabkit', function(source, item)
|
||||
local src = source
|
||||
if not Itemcheck(src, 'cleaningkit', 1) then return end
|
||||
if RemoveItem(src,"cleaningkit", 1) then
|
||||
Log(GetName(src) ..' Wiped Down Their LSD Lab Kit!' , 'lsd')
|
||||
return true
|
||||
local placed, loc = ps.callback('md-drugs:client:setlsdlabkit', src)
|
||||
if placed then
|
||||
if ps.removeItem(src, 'lsdlabkit', 1) then
|
||||
table.insert(lsdTables, {
|
||||
owner = ps.getPlayerName(src),
|
||||
ownerid = ps.getIdentifier(src),
|
||||
src = src,
|
||||
loc = loc
|
||||
})
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
local function hasLabKit(source)
|
||||
local src = source
|
||||
for k, v in pairs (lsdTables) do
|
||||
if v.ownerid == ps.getIdentifier(src) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ps.registerCallback('md-drugs:server:removecleaningkit', function(source)
|
||||
local src = source
|
||||
return ps.removeItem(src, "cleaningkit", 1)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getlabkitback', function()
|
||||
local src = source
|
||||
if AddItem(src,"lsdlabkit", 1) then
|
||||
Log(GetName(src) ..' Picked Up Their LSD Lab Kit Back At ' .. GetCoords(src) .. '!', 'lsd')
|
||||
for k, v in pairs (lsdTables) do
|
||||
if v.ownerid == ps.getIdentifier(src) then
|
||||
table.remove(lsdTables, k)
|
||||
ps.addItem(src, 'lsdlabkit', 1)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:heatliquid', function()
|
||||
local src = source
|
||||
if not GetRecipe(src, 'lsd', 'vial', 'heat') then return end
|
||||
Log(GetName(src) ..' Heated Basic LSD!', 'lsd')
|
||||
if not hasLabKit(src) then return end
|
||||
if timeOut(src, 'md-drugs:server:heatliquid') then return end
|
||||
if not ps.craftItem(src, lsdRecipes['vial']['heat']) then
|
||||
verifyHas(src, lsdRecipes['vial']['heat'].take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:failheating', function()
|
||||
local src = source
|
||||
if not ChecknRemove(source, {lysergic_acid = 1, diethylamide = 1}) then return end
|
||||
Notifys(src,Lang.lsd.failed, "error")
|
||||
Log(GetName(src) ..' Failed Basic LSD Like An Idiot!', 'lsd')
|
||||
if not hasLabKit(src) then return end
|
||||
ps.removeItem(src, 'lysergic_acid', 1)
|
||||
ps.removeItem(src, 'diethylamide', 1)
|
||||
ps.notify(src, ps.lang('lsd.failed'), "error")
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:refinequalityacid', function()
|
||||
local src = source
|
||||
if not Itemcheck(src, 'lsd_one_vial', 1) then return end
|
||||
local src = source
|
||||
if not hasLabKit(src) then return end
|
||||
if timeOut(src, 'md-drugs:server:refinequalityacid') then return end
|
||||
if not ps.hasItem(src, 'lsd_one_vial', 1) then return end
|
||||
if Config.TierSystem then
|
||||
local lsd = getRep(src, 'lsd')
|
||||
if RemoveItem(src, 'lsd_one_vial', 1) then
|
||||
if lsd <= 30 then
|
||||
AddItem(src,'lsd_vial_two', 1)
|
||||
local lsd = tonumber(getRep(src, 'lsd'))
|
||||
if ps.removeItem(src, 'lsd_one_vial', 1) then
|
||||
if lsd <= 30 then
|
||||
ps.addItem(src,'lsd_vial_two', 1)
|
||||
elseif lsd >= 31 and lsd <= 60 then
|
||||
AddItem(src,'lsd_vial_three', 1)
|
||||
ps.addItem(src,'lsd_vial_three', 1)
|
||||
elseif lsd >= 61 and lsd <= 90 then
|
||||
AddItem(src,'lsd_vial_four', 1)
|
||||
ps.addItem(src,'lsd_vial_four', 1)
|
||||
elseif lsd >= 91 and lsd <= 120 then
|
||||
AddItem(src,'lsd_vial_five', 1)
|
||||
ps.addItem(src,'lsd_vial_five', 1)
|
||||
else
|
||||
AddItem(src,'lsd_vial_six', 1)
|
||||
ps.addItem(src,'lsd_vial_six', 1)
|
||||
end
|
||||
AddRep(src,'lsd')
|
||||
Log(GetName(src) ..' Refined Acid and Now Has A Rep Of ' .. lsd + 1 .. '!', 'lsd')
|
||||
end
|
||||
else
|
||||
local randomchance = math.random(1,100)
|
||||
if RemoveItem(src,'lsd_one_vial', 1) then
|
||||
if ps.removeItem(src,'lsd_one_vial', 1) then
|
||||
if randomchance <= 60 then
|
||||
AddItem(src,'lsd_vial_two', 1)
|
||||
ps.addItem(src,'lsd_vial_two', 1)
|
||||
elseif randomchance >= 61 and randomchance <= 75 then
|
||||
AddItem(src,'lsd_vial_three', 1)
|
||||
ps.addItem(src,'lsd_vial_three', 1)
|
||||
elseif randomchance >= 76 and randomchance <= 85 then
|
||||
AddItem(src,'lsd_vial_four', 1)
|
||||
ps.addItem(src,'lsd_vial_four', 1)
|
||||
elseif randomchance >= 86 and randomchance <= 93 then
|
||||
AddItem(src,'lsd_vial_five', 1)
|
||||
else
|
||||
AddItem(src,'lsd_vial_six', 1)
|
||||
ps.addItem(src,'lsd_vial_five', 1)
|
||||
else
|
||||
ps.addItem(src,'lsd_vial_six', 1)
|
||||
end
|
||||
Log(GetName(src) ..' Refined Acid!', 'lsd')
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:failrefinequality', function()
|
||||
local src = source
|
||||
if not Itemcheck(src, 'lsd_one_vial', 1) then return end
|
||||
RemoveItem(src,'lsd_one_vial', 1)
|
||||
if not hasLabKit(src) then return end
|
||||
ps.removeItem(src,'lsd_one_vial', 1)
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:gettabpaper', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if CheckDist(source, Config.gettabs[num]['loc']) then return end
|
||||
if Player.Functions.RemoveMoney('cash', Config.tabcost * 10) then
|
||||
AddItem(src,'tab_paper', 10)
|
||||
Log(GetName(src) ..' Bought Tab Paper!', 'lsd')
|
||||
if timeOut(src, 'md-drugs:server:gettabpaper') then return end
|
||||
if not ps.checkDistance(src, lsdLocations.gettabs[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if ps.removeMoney(src, 'cash', prices.tabcost * 10) then
|
||||
ps.addItem(src,'tab_paper', 10)
|
||||
else
|
||||
Notifys(Lang.lsd.broke, "error")
|
||||
ps.notify(src, ps.lang('Catches.notEnoughMoney'), "error")
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getlabkit', function()
|
||||
RegisterServerEvent('md-drugs:server:getlabkit', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if CheckDist(source, vector3(Config.buylsdlabkit.x, Config.buylsdlabkit.y, Config.buylsdlabkit.z)) then return end
|
||||
if Player.Functions.RemoveMoney('cash', Config.lsdlabkitcost) then
|
||||
AddItem(src,'lsdlabkit', 1)
|
||||
Log(GetName(src) ..' Bought A LSD Lab Kit!', 'lsd')
|
||||
if timeOut(src, 'md-drugs:server:getlabkit') then return end
|
||||
if ps.hasItem(src,'lsdlabkit', 1) then
|
||||
return
|
||||
end
|
||||
if not ps.checkDistance(src, lsdLocations.buyLSDkit[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if ps.removeMoney(src, 'cash', prices.lsdlabkitcost) then
|
||||
ps.addItem(src,'lsdlabkit', 1)
|
||||
else
|
||||
Notifys(src, Lang.lsd.broke, "error")
|
||||
ps.notify(src, ps.lang('Catches.notEnoughMoney'), "error")
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:maketabpaper', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if not Itemcheck(src,'tab_paper', 1) then return end
|
||||
local count = 0
|
||||
local items, recieve = nil, nil
|
||||
if timeOut(src, 'md-drugs:server:maketabpaper') then return end
|
||||
if not hasLabKit(src) then return end
|
||||
if not ps.hasItem(src,'tab_paper', 1) then return end
|
||||
local vialdata = {
|
||||
{vial = 'lsd_one_vial', sheet = 'smileyfacesheet', log = 'Made A Smiley Face Sheet'},
|
||||
{vial = 'lsd_vial_two', sheet = 'wildcherrysheet', log = 'Made A Wild Cherry Sheet'},
|
||||
@@ -140,21 +202,12 @@ RegisterServerEvent('md-drugs:server:maketabpaper', function()
|
||||
{vial = 'lsd_vial_five', sheet = 'bartsheet', log = 'Made A Cluckin Bell Sheet'},
|
||||
{vial = 'lsd_vial_six', sheet = 'gratefuldeadsheet', log = 'Made A Maze Sheet'}
|
||||
}
|
||||
sortTab(vialdata, 'vial')
|
||||
for k, v in pairs (vialdata) do
|
||||
if count >= 1 then break end
|
||||
local check = Player.Functions.GetItemByName(v.vial)
|
||||
|
||||
if check and check.amount >= 1 then
|
||||
items = v.vial
|
||||
recieve = v.sheet
|
||||
Log(GetName(src) ..' ' .. v.log, 'lsd')
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
if count >= 1 then
|
||||
if RemoveItem(src, items, 1) and RemoveItem(src, 'tab_paper', 1) then
|
||||
AddItem(src, recieve, 1)
|
||||
for k, v in ipairs (vialdata) do
|
||||
local check = ps.hasItem(src, v.vial) and ps.hasItem(src, 'tab_paper')
|
||||
if check then
|
||||
if ps.removeItem(src, v.vial, 1) and ps.removeItem(src, 'tab_paper', 1) then
|
||||
ps.addItem(src, v.sheet, 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
@@ -168,14 +221,22 @@ local sheets = {
|
||||
{item = 'gratefuldeadsheet', recieve = "gratefuldead_tabs", },
|
||||
}
|
||||
|
||||
for k, v in pairs (sheets) do
|
||||
QBCore.Functions.CreateUseableItem(v.item, function(source)
|
||||
for k, v in pairs (sheets) do
|
||||
ps.createUseable(v.item, function(source)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local math = math.random(1,10)
|
||||
if RemoveItem(src, v.item, 1) then
|
||||
AddItem(src, v.recieve, math)
|
||||
Log(GetName(src) ..' Made ' .. math .. 'Tabs of ' .. v.recieve .. '!', 'lsd')
|
||||
if ps.removeItem(src, v.item, 1) then
|
||||
ps.addItem(src, v.recieve, math)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
AddEventHandler('playerDropped', function()
|
||||
local src = source
|
||||
for k, v in pairs (lsdTables) do
|
||||
if v.ownerid == ps.getPlayerCitizenId(src) then
|
||||
table.remove(lsdTables, k)
|
||||
ps.addItem(src, 'lsdlabkit', 1)
|
||||
end
|
||||
end
|
||||
end)
|
||||
+29
-39
@@ -1,46 +1,36 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
GlobalState.Mescaline = Config.Mescaline
|
||||
local mescalineLocation = {
|
||||
DryOutMescaline = { -- where to dry out your mescaline
|
||||
{loc = vector3(1850.12, 2595.23, 45.67), l = 1.0, w = 1.0, rot = 0.0, gang = ""},
|
||||
},
|
||||
}
|
||||
local mescalineRecipes = {
|
||||
mescaline = {
|
||||
dry = {
|
||||
dried = {take = {cactusbulb = 1}, give = {driedmescaline = 1} }
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
for _, v in pairs(Config.Mescaline) do
|
||||
v.taken = false
|
||||
ps.registerCallback('md-drugs:server:GetMescalineLocs', function(source)
|
||||
return mescalineLocation
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:server:drymescaline", function(num)
|
||||
local src = source
|
||||
if timeOut(src, 'md-drugs:server:drymescaline') then return end
|
||||
if not ps.checkDistance(src, mescalineLocation.DryOutMescaline[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if not ps.craftItem(src, mescalineRecipes.mescaline.dry.dried) then
|
||||
verifyHas(src, mescalineRecipes.mescaline.dry.dried.take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
function MescalineCooldown(loc)
|
||||
CreateThread(function()
|
||||
Wait(Config.respawnTime * 1000)
|
||||
Config.Mescaline[loc].taken = false
|
||||
GlobalState.Mescaline = Config.Mescaline
|
||||
Wait(1000)
|
||||
TriggerClientEvent('Mescaline:respawnCane', -1, loc)
|
||||
Log('Cactus Respawned At ' .. Config.Mescaline[loc].location, 'mescaline')
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
RegisterNetEvent("Mescaline:pickupCane", function(loc)
|
||||
if CheckDist(source, Config.Mescaline[loc].location) then return end
|
||||
if not Config.Mescaline[loc].taken then
|
||||
Config.Mescaline[loc].taken = true
|
||||
GlobalState.Mescaline = Config.Mescaline
|
||||
TriggerClientEvent("Mescaline:removeCane", -1, loc)
|
||||
MescalineCooldown(loc)
|
||||
AddItem(source,'cactusbulb', 1)
|
||||
Log(GetName(source) .. ' Picked Cactus Bulbs With a distance of ' .. dist(source, Config.Mescaline[loc].location) .. ' vectors', 'mescaline')
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent("md-drugs:server:drymescaline", function()
|
||||
ps.createUseable("driedmescaline", function(source, item)
|
||||
local src = source
|
||||
if not GetRecipe(src, 'mescaline', 'dry', 'dried') then return end
|
||||
Log(GetName(source) .. ' Dried Mescaline', 'mescaline')
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem("driedmescaline", function(source, item)
|
||||
local src = source
|
||||
if RemoveItem(src, "driedmescaline", 1) then
|
||||
if ps.removeItem(src, "driedmescaline", 1) then
|
||||
TriggerClientEvent("md-drugs:client:takemescaline", src)
|
||||
Log(GetName(source) .. ' Consumed Mescaline', 'consume')
|
||||
end
|
||||
end)
|
||||
end)
|
||||
+130
-29
@@ -1,47 +1,148 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
RegisterServerEvent('md-drugs:server:startcook', function()
|
||||
local src = source
|
||||
if not GetRecipe(source, 'meth', 'cook', 'heat') then return end
|
||||
Notifys(src, "Adding Things To The Mix", "success")
|
||||
Log(GetName(source) .. ' Started A Meth Batch', 'Meth')
|
||||
local onRun = {}
|
||||
local cool = {}
|
||||
|
||||
local methLocs = {
|
||||
CookMeth = {
|
||||
{loc = vector3(1006.09, -3200.59, -38.52), l = 1.0, w = 1.0, rot = 45.0, offset = vec3(4.79, 2.13, -0.41), rotation = vector3(0,0,0.0), gang = ""},
|
||||
},
|
||||
MethDials = {
|
||||
{loc = vector3(1007.89, -3201.17, -38.99),l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
MethSmash = {
|
||||
{loc = vector3(1012.04, -3194.96, -38.99), bucket = vector4(1012.86, -3194.13, -39.20, 90.00), l = 1.0, w = 1.0, rot = 45.0, offset = vec3(-3.143311, -1.666748, -1.010128), rotation = vector3(0,0,0.0), gang = ""},
|
||||
},
|
||||
BagMeth = {
|
||||
{loc = vector3(1014.25, -3194.93, -38.99), l = 1.0, w = 1.0, rot = 45.0, offset = vec3(-4.9, -1.70, -1.01), rotation = vector3(0,0,0.0), gang = ""},
|
||||
},
|
||||
MethEph = { -- get ephedrine
|
||||
{loc = vector3(3559.86, 3673.9, 28.13), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
MethAce = { -- get acetone
|
||||
{loc = vector3(3535.41, 3661.05, 28.12), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
MethHeist = {
|
||||
{loc = vector4(-1520.84, 827.72, 181.66, 184.13), ped = 'a_m_m_farmer_01', gang = ""},
|
||||
},
|
||||
StartLoc = { -- where truck spawns for lean and meth missions
|
||||
vector3(-2307.22, 434.77, 174.47),
|
||||
vector3(614.75, 1786.26, 199.39),
|
||||
vector3(-224.89, 6388.32, 31.59)
|
||||
},
|
||||
MethTele = {
|
||||
{inside = vector3(996.91, -3200.83, -36.39), outside = vector3(-2222.04, 303.99, 174.6), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
}
|
||||
|
||||
local methRecipes = {
|
||||
cook = {
|
||||
heat = {take = {ephedrine = 1, acetone = 1}, give = {}} --Missing item
|
||||
},
|
||||
bag = {
|
||||
bags = {take = {empty_weed_bag = 5}, give = {methbags = 5} }
|
||||
}
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetMethLocs', function(source)
|
||||
return methLocs
|
||||
end)
|
||||
|
||||
local function setTimeout(identifier)
|
||||
if onRun[identifier] then
|
||||
CreateThread(function()
|
||||
Wait(10 * 60 * 1000)
|
||||
onRun[identifier] = nil
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
local function coolDown(identifier)
|
||||
if cool[identifier] then
|
||||
return false
|
||||
else
|
||||
cool[identifier] = true
|
||||
CreateThread(function()
|
||||
Wait(3500)
|
||||
cool[identifier] = nil
|
||||
end)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
RegisterServerEvent('md-drugs:server:givemethingridients', function()
|
||||
local src = source
|
||||
local chance = math.random(1,100)
|
||||
local src = source
|
||||
local amount = math.random(1,5)
|
||||
if chance <= 50 then
|
||||
if AddItem(src,'ephedrine', amount) then
|
||||
Log(GetName(src) .. ' Got ' .. amount .. ' Of Ephedrine', 'Meth')
|
||||
end
|
||||
if not onRun[ps.getIdentifier(src)] then return ps.notify(src, ps.lang('meth.notOnRun'), "error") end
|
||||
onRun[ps.getIdentifier(src)] = onRun[ps.getIdentifier(src)] + 1
|
||||
if math.random(1,100) <= 50 then
|
||||
ps.addItem(src, "ephedrine", amount)
|
||||
else
|
||||
if AddItem(src, 'acetone', amount) then
|
||||
Log(GetName(src) .. ' Got ' .. amount .. ' Of Acetone', 'Meth')
|
||||
end
|
||||
end
|
||||
ps.addItem(src, "acetone", amount)
|
||||
end
|
||||
if onRun[ps.getIdentifier(src)] >= 4 then
|
||||
onRun[ps.getIdentifier(src)] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getmeth', function()
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getmeth', function(num)
|
||||
local src = source
|
||||
if not GetRecipe(src, 'meth', 'bag', 'bags') then return end
|
||||
Log(GetName(src) .. ' Bagged 5 Of Meth', 'Meth')
|
||||
if timeOut(src, 'md-drugs:server:getmeth') then return end
|
||||
if not ps.checkDistance(src, methLocs.BagMeth[num].loc, 2.5) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if not ps.craftItem(src, methRecipes.bag.bags) then
|
||||
verifyHas(src, methRecipes.bag.bags.take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:geteph', function(num)
|
||||
local src = source
|
||||
if CheckDist(src, Config.MethEph[num]['loc']) then return end
|
||||
if AddItem(src, 'ephedrine', 1) then
|
||||
Notifys(src, 'Got Ephedrine!', "success")
|
||||
Log(GetName(src) .. ' Got ' .. 1 .. 'Of Ephedrine', 'Meth')
|
||||
if not ps.checkDistance(src, methLocs.MethEph[num].loc, 2.5) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if timeOut(src, 'md-drugs:server:geteph') then return end
|
||||
ps.addItem(src, 'ephedrine', 1)
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getace', function(num)
|
||||
local src = source
|
||||
if CheckDist(src, Config.Methace[num]['loc']) then return end
|
||||
if AddItem(src, 'acetone', 1) then
|
||||
Log(GetName(src) .. ' Got ' .. 1 .. 'Of Acetone', 'Meth')
|
||||
Notifys(src, 'Got Acetone!', "success")
|
||||
if not ps.checkDistance(src, methLocs.MethAce[num].loc, 2.5) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
end)
|
||||
if timeOut(src, 'md-drugs:server:getace') then return end
|
||||
ps.addItem(src, 'acetone', 1)
|
||||
end)
|
||||
|
||||
ps.registerCallback('md-drugs:server:startcook', function(source, num)
|
||||
local src = source
|
||||
if not ps.checkDistance(src, methLocs.CookMeth[num].loc, 2.5) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return false
|
||||
end
|
||||
local recipe = ps.craftItem(src, methRecipes.cook.heat)
|
||||
if not recipe then
|
||||
verifyHas(src, methRecipes.cook.heat.take)
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end)
|
||||
|
||||
ps.registerCallback('md-drugs:server:registerMeth', function(source)
|
||||
local identifier = ps.getIdentifier(source)
|
||||
if not identifier then return false end
|
||||
if onRun[identifier] then
|
||||
return false
|
||||
else
|
||||
onRun[identifier] = 0
|
||||
setTimeout(identifier)
|
||||
return true
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
+68
-28
@@ -1,13 +1,42 @@
|
||||
QBCore = exports['qb-core']:GetCoreObject()
|
||||
local prices = {
|
||||
payfortruck = 500,
|
||||
hotchance = 30,
|
||||
itemChance = 20,
|
||||
}
|
||||
local onRoute = {}
|
||||
|
||||
lib.callback.register('md-drugs:server:payfortruck', function()
|
||||
local oxyLocs = {
|
||||
OxyPayForTruck = {
|
||||
{loc = vector3(1437.64, -1491.91, 63.62), truckSpawn = vector4(1450.87, -1482.13, 63.22, 69.95), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
oxylocations = {
|
||||
vector4(-2352.32, 266.78, 165.3, 23.46),
|
||||
vector4(-1467.49, 874.01, 183.59, 298.45),
|
||||
vector4(-856.71, 874.26, 202.85, 205.3),
|
||||
vector4(950.58, -128.49, 74.42, 205.3),
|
||||
vector4(1152.71, -328.43, 69.21, 205.3),
|
||||
vector4(112.66, -1955.67, 20.75, 37.94),
|
||||
vector4(-544.4, -1684.8, 19.89, 252.07),
|
||||
vector4(-1185.02, -1805.4, 3.91, 184.83),
|
||||
vector4(-1641.4, -981.99, 7.58, 35.38),
|
||||
vector4(-1827.93, 782.36, 138.29, 219.99),
|
||||
vector4(-320.84, 2818.73, 59.45, 337.22),
|
||||
vector4(474.88, 2609.56, 44.48, 357.0),
|
||||
}
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetOxyLocs', function(source)
|
||||
return oxyLocs
|
||||
end)
|
||||
|
||||
ps.registerCallback('md-drugs:server:payfortruck', function(source)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if Player.Functions.RemoveMoney('cash', Config.TruckPrice ) or Player.Functions.RemoveMoney('bank', Config.TruckPrice ) then
|
||||
Log(GetName(src) .. ' Rented A Van For OxyRuns', 'oxy')
|
||||
if ps.removeMoney(src, 'cash', prices.payfortruck) or ps.removeMoney(src, 'bank', prices.payfortruck) then
|
||||
onRoute[src] = true
|
||||
ps.notify(src, ps.lang('oxy.paid', prices.payfortruck), "success")
|
||||
return true
|
||||
else
|
||||
Notifys(src, Lang.oxy.broke, "error")
|
||||
ps.notify(src, ps.lang('Catches.notEnoughMoney'), "error")
|
||||
return false
|
||||
end
|
||||
end)
|
||||
@@ -15,28 +44,39 @@ end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:giveoxybox', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local chance = math.random(1,100)
|
||||
local cash = Config.OxyRunCompleteCash
|
||||
local itemchance = math.random(1,100)
|
||||
local item = Config.OxyRandItems[math.random(1, #Config.OxyRandItems)]
|
||||
|
||||
if chance <= Config.OxyRunDitchChance then
|
||||
Notifys(src, Lang.oxy.hot, "error")
|
||||
Player.Functions.AddMoney("cash", cash * 0.5)
|
||||
if itemchance <= Config.OxyItemChance then
|
||||
AddItem(src, item, Config.OxyItemAmount)
|
||||
Log(GetName(source) .. ' Got ' .. Config.OxyItemAmount .. ' Of ' .. item .. ' For This Drop Off', 'oxy')
|
||||
end
|
||||
else
|
||||
Notifys(Lang.oxy.next, "success")
|
||||
TriggerClientEvent("md-drugs:client:getoxylocationroute", src)
|
||||
Player.Functions.AddMoney("cash", cash)
|
||||
if itemchance <= Config.OxyItemChance then
|
||||
AddItem(src, item, Config.OxyItemAmount)
|
||||
Log(GetName(source) .. ' Got ' .. Config.OxyItemAmount .. ' Of ' .. item .. ' For This Drop Off', 'oxy')
|
||||
end
|
||||
if timeOut(src, 'md-drugs:server:giveoxybox') then return end
|
||||
if not onRoute[src] then
|
||||
ps.notify(src, ps.lang('oxy.notOn'), "error")
|
||||
return
|
||||
end
|
||||
|
||||
if not ps.checkDistance(src, oxyLocs.oxylocations[onRoute[src]], 3.5) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
|
||||
local cash = math.random(50, 200)
|
||||
local itemchance = math.random(1,100)
|
||||
local itemList = {
|
||||
{item = 'oxy', amount = 2},
|
||||
{item = 'houselockpick', amount = 1},
|
||||
}
|
||||
local item = itemList[math.random(1, #itemList)]
|
||||
ps.addMoney(src,"cash", cash)
|
||||
if itemchance <= prices.itemChance then
|
||||
ps.addItem(src, item.item, item.amount)
|
||||
end
|
||||
end)
|
||||
|
||||
ps.registerCallback('md-drugs:server:getRoute', function(source)
|
||||
if not onRoute[source] then return false end
|
||||
local giveLocation = math.random(1, 10)
|
||||
if giveLocation >= 8 then
|
||||
onRoute[source] = nil
|
||||
return false
|
||||
else
|
||||
onRoute[source] = math.random(1, #oxyLocs.oxylocations)
|
||||
return oxyLocs.oxylocations[onRoute[source]]
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
+60
-57
@@ -1,73 +1,76 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local pharmaLocations = {
|
||||
FillPrescription = { -- where to fill out your prescription
|
||||
{loc = vector3(2855.62, 4446.73, 48.53), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
}
|
||||
|
||||
local function GetJob(source)
|
||||
ps.registerCallback('md-drugs:server:GetPharmaLocs', function()
|
||||
return pharmaLocations
|
||||
end)
|
||||
|
||||
local function GetJob(source)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if Player.PlayerData.job.type == 'ems' then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
return ps.getJobType(src) == 'ems'
|
||||
end
|
||||
|
||||
QBCore.Functions.CreateUseableItem('prescription_pad', function(source, item)
|
||||
local src = source
|
||||
if GetJob(src) then
|
||||
TriggerClientEvent("md-drugs:client:prescriptionpad", src, item)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:giveprescription', function(item)
|
||||
ps.createUseable('prescription_pad', function(source, item)
|
||||
local src = source
|
||||
local near = {}
|
||||
if GetJob(src) then
|
||||
AddItem(src, item, 1)
|
||||
Log(GetName(src) .. ' Made A Prescription Of ' .. item .. '!', 'pharma')
|
||||
near = ps.getNearbyPlayers(src, 5.0)
|
||||
local options = {
|
||||
{label = ps.getItemLabel('vicodin_prescription'), value = 'vicodin_prescription'},
|
||||
{label = ps.getItemLabel('adderal_prescription'), value = 'adderal_prescription'},
|
||||
{label = ps.getItemLabel('morphine_prescription'), value = 'morphine_prescription'},
|
||||
{label = ps.getItemLabel('xanax_prescription'), value = 'xanax_prescription'}
|
||||
}
|
||||
local data = ps.callback('md-drugs:client:prescriptionpad', src, near, options)
|
||||
if not data then return ps.notify(src, ps.lang('pharma.canceled'), "error") end
|
||||
ps.addItem(ps.getSource(data.who), data.what, 1)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:unbottle', function(item)
|
||||
local src = source
|
||||
local amount = math.random(10,30)
|
||||
AddItem(src, item, amount)
|
||||
Log(GetName(src) .. ' Unbottled '.. amount .. ' Of ' .. item .. '!', 'pharma')
|
||||
end)
|
||||
|
||||
local pharmabottle = {'vicodinbottle', 'adderalbottle','morphinebottle','xanaxbottle'}
|
||||
for m, d in pairs (pharmabottle) do
|
||||
QBCore.Functions.CreateUseableItem(d, function(source, item)
|
||||
local src = source
|
||||
if RemoveItem(src, d, 1) then
|
||||
TriggerClientEvent("md-drugs:client:unbottle", src, item)
|
||||
end
|
||||
end)
|
||||
ps.createUseable(d, function(source, item)
|
||||
local src = source
|
||||
local check = ps.callback("md-drugs:client:unbottle", src)
|
||||
if check then
|
||||
local get = {
|
||||
['vicodinbottle'] = 'vicodin',
|
||||
['adderalbottle'] = 'adderal',
|
||||
['morphinebottle'] = 'morphine',
|
||||
['xanaxbottle'] = 'xanax'
|
||||
}
|
||||
for k, v in pairs (get) do
|
||||
if d == k then
|
||||
if ps.removeItem(src, d, 1) then
|
||||
ps.addItem(src, v, math.random(10,30))
|
||||
ps.notify(src,ps.lang('pharma.unbottle'), "success")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:fillprescription', function()
|
||||
RegisterServerEvent('md-drugs:server:fillprescription', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local vic = Player.Functions.GetItemByName('vicodin_prescription')
|
||||
local add = Player.Functions.GetItemByName('adderal_prescription')
|
||||
local mor = Player.Functions.GetItemByName('morphine_prescription')
|
||||
local xan = Player.Functions.GetItemByName('xanax_prescription')
|
||||
if vic then
|
||||
RemoveItem(src,'vicodin_prescription', 1 )
|
||||
AddItem(src,'vicodinbottle', 1)
|
||||
Notifys(src,Lang.Pharma.pills, "success")
|
||||
elseif add then
|
||||
RemoveItem(src,'adderal_prescription', 1 )
|
||||
AddItem(src,'adderalbottle', 1)
|
||||
Notifys(src,Lang.Pharma.pills, "success")
|
||||
elseif mor then
|
||||
RemoveItem(src,'morphine_prescription', 1 )
|
||||
AddItem(src,'morphinebottle', 1)
|
||||
Notifys(src,Lang.Pharma.pills, "success")
|
||||
elseif xan then
|
||||
RemoveItem(src,'xanax_prescription', 1 )
|
||||
AddItem(src,'xanaxbottle', 1)
|
||||
Notifys(src,Lang.Pharma.pills, "success")
|
||||
else
|
||||
Notifys(src,Lang.Pharma.no, "error")
|
||||
if timeOut(src, 'md-drugs:server:fillprescription') then return end
|
||||
if not ps.checkDistance(src, pharmaLocations.FillPrescription[num].loc, 3.5) then
|
||||
return ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
end
|
||||
local pres = {
|
||||
vicodin_prescription = 'vicodinbottle',
|
||||
adderal_prescription = 'adderalbottle',
|
||||
morphine_prescription = 'morphinebottle',
|
||||
xanax_prescription = 'xanaxbottle'
|
||||
}
|
||||
for k, v in pairs (pres) do
|
||||
if ps.hasItem(src, k, 1) then
|
||||
ps.removeItem(src, k, 1)
|
||||
ps.addItem(src, v, 1)
|
||||
break
|
||||
end
|
||||
end
|
||||
Log(GetName(src) .. ' Filled A Prescription!', 'pharma')
|
||||
end)
|
||||
@@ -0,0 +1,237 @@
|
||||
local drugModels = {
|
||||
cocaine = "prop_plant_01a",
|
||||
heroin = "prop_plant_01b",
|
||||
mescaline = "prop_cactus_03",
|
||||
shrooms = "prop_stoneshroom2",
|
||||
weed = "bkr_prop_weed_lrg_01b"
|
||||
}
|
||||
local drugModelsBuzz = {
|
||||
cocaine = "bzzz_plant_coca_c",
|
||||
heroin = "bzzz_plants_poppy_1c",
|
||||
shrooms = "bzzz_mushrooms_amanita_a",
|
||||
weed = "bzzz_plant_weed_pot_green_d"
|
||||
}
|
||||
local function propsLabels(drugType)
|
||||
if Config.Bzz[drugType] then
|
||||
return drugModelsBuzz[drugType]
|
||||
else
|
||||
return drugModels[drugType]
|
||||
end
|
||||
end
|
||||
|
||||
local plants = {
|
||||
cocaine = {
|
||||
{ location = vector3(1474.25, -2643.87, 42.88), heading = 334.49, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1472.35, -2649.3, 41.87), heading = 329.56, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1475.7, -2652.9, 40.8), heading = 25.16, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1481.0, -2654.99, 39.86), heading = 21.52, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1480.9, -2660.63, 38.68), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1477.18, -2666.53, 38.19), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1477.58, -2670.82, 37.73), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1476.56, -2675.82, 37.46), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1474.8, -2680.19, 37.03), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1471.52, -2685.0, 36.82), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1462.82, -2676.58, 38.83), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1461.31, -2667.74, 39.67), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1456.3, -2647.61, 43.39), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
{ location = vector3(1453.65, -2641.56, 45.0), heading = 202.97, model = propsLabels('cocaine'), taken = false },
|
||||
},
|
||||
heroin = {
|
||||
{ location = vector3(-2251.3, -99.18, 100.11), heading = 334.49, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2249.63, -92.97, 101.8), heading = 329.56, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2245.57, -85.12, 104.5), heading = 25.16, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2240.81, -88.48, 105.88), heading = 21.52, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2240.87, -93.36, 103.88), heading = 334.49, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2236.0, -95.34, 102.55), heading = 329.56, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2240.6, -100.01, 100.49), heading = 25.16, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2246.29, -104.92, 99.27), heading = 21.52, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2243.64, -107.99, 96.71), heading = 334.49, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2254.22, -108.76, 97.25), heading = 329.56, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2247.33, -108.92, 97.70), heading = 25.16, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(-2250.96, -111.22, 97.50), heading = 21.52, model = propsLabels('heroin'), taken = false},
|
||||
{ location = vector3(465.95, -1021.32, 31.78), heading = 21.52, model = propsLabels('heroin'), taken = false},
|
||||
},
|
||||
mescaline = {
|
||||
{ location = vector3(2598.73, 4207.89, 41.02), heading = 334.49, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2601.46, 4199.34, 40.62), heading = 329.56, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2611.63, 4194.18, 41.18), heading = 25.16, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2620.18, 4202.69, 41.5), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2624.26, 4211.75, 42.34), heading = 334.49, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2635.21, 4207.5, 42.49), heading = 329.56, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2644.97, 4193.51, 42.11), heading = 25.16, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2654.21, 4195.31, 41.23), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2653.32, 4206.49, 41.62), heading = 334.49, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2647.45, 4213.94, 42.49), heading = 329.56, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2636.3, 4218.49, 43.03), heading = 25.16, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2627.37, 4223.2, 42.88), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2617.86, 4230.38, 42.63), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2609.8, 4222.12, 41.19), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2602.96, 4194.05, 41.01), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2614.39, 4188.3, 41.68), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
{ location = vector3(2623.82, 4189.97, 41.44), heading = 21.52, model = "prop_cactus_03", taken = false},
|
||||
},
|
||||
shrooms = {
|
||||
{ location = vector3(2185.14, 5183.81, 57.48), heading = 334.49, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2174.45, 5187.85, 57.43), heading = 329.56, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2166.22, 5196.56, 58.0), heading = 25.16, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2166.82, 5204.83, 58.63), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2174.84, 5205.82, 59.19), heading = 334.49, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2184.46, 5201.23, 59.2), heading = 329.56, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2192.45, 5194.89, 58.86), heading = 25.16, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2207.53, 5187.81, 58.95), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2213.46, 5191.11, 59.81), heading = 334.49, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2218.31, 5180.0, 58.18), heading = 329.56, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2212.75, 5172.35, 57.2), heading = 25.16, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2208.56, 5167.06, 56.34), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2196.9, 5158.59, 54.84), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2191.62, 5174.91, 56.68), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2190.18, 5182.54, 57.47), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2185.85, 5190.49, 58.1), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
{ location = vector3(2179.95, 5194.19, 58.26), heading = 21.52, model = propsLabels('shrooms'), taken = false},
|
||||
},
|
||||
weed = {
|
||||
{ location = vector3(1064.84, -3199.84, -42.70), heading = 334.49, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1063.88, -3198.69, -42.70), heading = 329.56, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1061.68, -3196.46, -42.70), heading = 25.16, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1061.62, -3199.63, -42.70), heading = 21.52, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1062.82, -3197.70, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1064.69, -3196.31, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1062.92, -3198.78, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1049.73, -3201.92, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1052.94, -3202.21, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1051.93, -3201.17, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1050.98, -3201.13, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1050.89, -3200.07, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1050.89, -3198.95, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
{ location = vector3(1049.72, -3198.95, -42.70), heading = 202.97, model = propsLabels('weed'), taken = false},
|
||||
}
|
||||
}
|
||||
|
||||
local plantRespawnTimers = {
|
||||
coke = 100,
|
||||
heroin = 100,
|
||||
mescaline = 100,
|
||||
shrooms = 100,
|
||||
weed = 100
|
||||
}
|
||||
|
||||
local plantData = {
|
||||
{
|
||||
label = 'coke',
|
||||
plants = plants.cocaine,
|
||||
globalState = function()
|
||||
GlobalState.CocaPlant = plants.cocaine
|
||||
end,
|
||||
itemGive = function(src)
|
||||
ps.debug("Giving Coca Leaf")
|
||||
ps.addItem(src, 'coca_leaf', 1)
|
||||
end,
|
||||
coolDown = function(loc)
|
||||
CreateThread(function()
|
||||
Wait(plantRespawnTimers.coke * 1000)
|
||||
plants.cocaine[loc].taken = false
|
||||
GlobalState.CocaPlant = plants.cocaine
|
||||
TriggerClientEvent('coke:respawnCane', -1, loc)
|
||||
end)
|
||||
end,
|
||||
allow = Config.Drugs.cocaine
|
||||
},
|
||||
{
|
||||
label = 'heroin',
|
||||
plants = plants.heroin,
|
||||
globalState = function()
|
||||
GlobalState.PoppyPlants = plants.heroin
|
||||
end,
|
||||
itemGive = function(src)
|
||||
ps.addItem(src, 'poppyresin', 1)
|
||||
end,
|
||||
coolDown = function(loc)
|
||||
CreateThread(function()
|
||||
Wait(plantRespawnTimers.heroin * 1000)
|
||||
plants.heroin[loc].taken = false
|
||||
GlobalState.PoppyPlants = plants.heroin
|
||||
TriggerClientEvent('heroin:respawnCane', -1, loc)
|
||||
end)
|
||||
end,
|
||||
allow = Config.Drugs.heroin
|
||||
},
|
||||
{
|
||||
label = 'Mescaline',
|
||||
plants = plants.mescaline,
|
||||
globalState = function()
|
||||
GlobalState.Mescaline = plants.mescaline
|
||||
end,
|
||||
itemGive = function(src)
|
||||
ps.addItem(src, 'cactusbulb', 1)
|
||||
end,
|
||||
coolDown = function(loc)
|
||||
CreateThread(function()
|
||||
Wait(plantRespawnTimers.mescaline * 1000)
|
||||
plants.mescaline[loc].taken = false
|
||||
GlobalState.Mescaline = plants.mescaline
|
||||
TriggerClientEvent('Mescaline:respawnCane', -1, loc)
|
||||
end)
|
||||
end,
|
||||
allow = Config.Drugs.mescaline
|
||||
},
|
||||
{
|
||||
label = 'shrooms',
|
||||
plants = plants.shrooms,
|
||||
globalState = function()
|
||||
GlobalState.shrooms = plants.shrooms
|
||||
end,
|
||||
itemGive = function(src)
|
||||
ps.addItem(src, 'shrooms', 1)
|
||||
end,
|
||||
coolDown = function(loc)
|
||||
CreateThread(function()
|
||||
Wait(plantRespawnTimers.shrooms * 1000)
|
||||
plants.shrooms[loc].taken = false
|
||||
GlobalState.shrooms = plants.shrooms
|
||||
TriggerClientEvent('shrooms:respawnCane', -1, loc)
|
||||
end)
|
||||
end,
|
||||
allow = Config.Drugs.shrooms
|
||||
},
|
||||
{
|
||||
label = 'weed',
|
||||
plants = plants.weed,
|
||||
globalState = function()
|
||||
GlobalState.WeedPlant = plants.weed
|
||||
end,
|
||||
itemGive = function(src)
|
||||
ps.addItem(src, 'wetcannabis', 1)
|
||||
end,
|
||||
coolDown = function(loc)
|
||||
CreateThread(function()
|
||||
Wait(plantRespawnTimers.weed * 1000)
|
||||
plants.weed[loc].taken = false
|
||||
GlobalState.WeedPlant = plants.weed
|
||||
TriggerClientEvent('weed:respawnCane', -1, loc)
|
||||
end)
|
||||
end,
|
||||
allow = Config.Drugs.weed
|
||||
}
|
||||
}
|
||||
|
||||
for k, v in pairs (plantData) do
|
||||
if not v.allow then goto continue end
|
||||
v.globalState()
|
||||
RegisterNetEvent(v.label ..":pickupCane", function(loc)
|
||||
local src = source
|
||||
if timeOut(src, v.label .. ":pickupCane") then return end
|
||||
if ps.checkDistance(src, v.plants[loc].location, 5.0) then
|
||||
if not v.plants[loc].taken then
|
||||
v.plants[loc].taken = true
|
||||
v.globalState()
|
||||
TriggerClientEvent(v.label ..":removeCane", -1, loc)
|
||||
v.coolDown(loc)
|
||||
v.itemGive(src)
|
||||
end
|
||||
else
|
||||
ps.notify(src, ps.lang('Catches.notIn'), 'error')
|
||||
return
|
||||
end
|
||||
end)
|
||||
::continue::
|
||||
end
|
||||
@@ -1,169 +0,0 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
local recipe = {
|
||||
cocaine = {
|
||||
cokepowder = {
|
||||
tier1 = {take = {coca_leaf = 1}, give = {coke = 1}},
|
||||
tier2 = {take = {coca_leaf = 1}, give = {cokestagetwo = 1}},
|
||||
tier3 = {take = {coca_leaf = 1}, give = {cokestagethree = 1}},
|
||||
},
|
||||
cutcoke = {
|
||||
tier1 = {take = {coke = 1, bakingsoda = 1}, give = {loosecoke = 1}},
|
||||
tier2 = {take = {cokestagetwo = 1, bakingsoda = 1}, give = {loosecokestagetwo = 1}},
|
||||
tier3 = {take = {cokestagethree = 1, bakingsoda = 1}, give = {loosecokestagethree = 1}},
|
||||
},
|
||||
bagcoke = {
|
||||
tier1 = {take = {loosecoke = 1, empty_weed_bag = 1}, give = {cokebaggy = 1}},
|
||||
tier2 = {take = {loosecokestagetwo = 1, empty_weed_bag = 1}, give = {cokebaggystagetwo = 1}},
|
||||
tier3 = {take = {loosecokestagethree = 1, empty_weed_bag = 1}, give = {cokebaggystagethree = 1}},
|
||||
}
|
||||
},
|
||||
crack = {
|
||||
cookcrack = {
|
||||
tier1 = {take = {loosecoke = 1, bakingsoda = 1}, give = {crackrock = 1}},
|
||||
tier2 = {take = {loosecokestagetwo = 1, bakingsoda = 1}, give = {crackrockstagetwo = 1}},
|
||||
tier3 = {take = {loosecokestagethree = 1,bakingsoda = 1}, give = {crackrockstagethree = 1}},
|
||||
},
|
||||
bagcrack = {
|
||||
tier1 = {take = {crackrock = 1, empty_weed_bag = 1}, give = {baggedcracked = 1}},
|
||||
tier2 = {take = {crackrockstagetwo = 1, empty_weed_bag = 1}, give = {baggedcrackedstagetwo = 1}},
|
||||
tier3 = {take = {crackrockstagethree = 1, empty_weed_bag = 1}, give = {baggedcrackedstagethree = 1}},
|
||||
}
|
||||
},
|
||||
heroin = {
|
||||
dryheroin = {
|
||||
tier1 = {take = {poppyresin = 1}, give = {heroin = 1}},
|
||||
tier2 = {take = {poppyresin = 1}, give = {heroinstagetwo = 1}},
|
||||
tier3 = {take = {poppyresin = 1}, give = {heroinstagethree = 1}},
|
||||
},
|
||||
cutheroin = {
|
||||
tier1 = {take = {heroin = 1, bakingsoda = 1}, give = {heroincut = 1}},
|
||||
tier2 = {take = {heroinstagetwo = 1, bakingsoda = 1}, give = {heroincutstagetwo = 1}},
|
||||
tier3 = {take = {heroinstagethree = 1, bakingsoda = 1}, give = {heroincutstagethree = 1}},
|
||||
},
|
||||
fillvial = {
|
||||
tier1 = {take = {heroincut = 1, emptyvial = 1}, give = {heroinvial = 1}},
|
||||
tier2 = {take = {heroincutstagetwo = 1, emptyvial = 1}, give = {heroinvialstagetwo = 1}},
|
||||
tier3 = {take = {heroincutstagethree = 1, emptyvial = 1}, give = {heroinvialstagethree = 1}},
|
||||
},
|
||||
fillneedle = {
|
||||
tier1 = {take = {heroinvial = 1, needle = 1}, give = {heroin_ready = 1}},
|
||||
tier2 = {take = {heroin_readystagetwo = 1, needle = 1}, give = {heroin_readystagetwo = 1}},
|
||||
tier3 = {take = {heroinvialstagethree = 1, needle = 1}, give = {heroin_readystagethree = 1}},
|
||||
}
|
||||
},
|
||||
lsd = {
|
||||
vial = {
|
||||
heat = {take = {lysergic_acid = 1, diethylamide = 1,}, give = {lsd_one_vial = 1}}
|
||||
},
|
||||
|
||||
},
|
||||
mescaline = {
|
||||
dry = {
|
||||
dried = {take = {cactusbulb = 1}, give = {driedmescaline = 1} }
|
||||
}
|
||||
},
|
||||
lean = {
|
||||
cups = {
|
||||
cupoflean = {take = {leancup = 1, sprunk = 1, mdlean = 1}, give = {cupoflean = 1}},
|
||||
cupofdextro = {take = {leancup = 1, sprunk = 1, mdreddextro = 1}, give = {cupofdextro = 1}},
|
||||
}
|
||||
},
|
||||
meth = {
|
||||
cook = {
|
||||
heat = {take = {ephedrine = 1, acetone = 1}, give = {}}
|
||||
},
|
||||
bag = {
|
||||
bags = {take = {empty_weed_bag = 5}, give = {methbags = 5} }
|
||||
}
|
||||
},
|
||||
weed = {
|
||||
edibles = {
|
||||
cannabutter = {take = { mdbutter = 1, grindedweed = 1}, give = {cannabutter = 1}},
|
||||
specialbrownie = {take = { cannabutter = 1, flour = 1, chocolate = 1}, give = {specialbrownie = 1}},
|
||||
specialcookie = { take = { cannabutter = 1, flour = 1}, give = {specialcookie = 1}},
|
||||
specialchocolate = { take = { cannabutter = 1, chocolate = 1}, give = {specialchocolate = 1}},
|
||||
specialmuffin = { take = { cannabutter = 1, flour = 1}, give = {specialmuffin = 1}},
|
||||
},
|
||||
oil = {
|
||||
shatter = {take = {butane = 1, grindedweed = 1}, give = {shatter = 1}}
|
||||
},
|
||||
blunts = {
|
||||
blunt = {take = {bluntwrap = 1, grindedweed = 1}, give = {blunt = 1}},
|
||||
chewyblunt = {take = {bluntwrap = 1, grindedweed = 1, loosecoke = 1}, give = {chewyblunt = 1}},
|
||||
leanblunts = {take = {leanbluntwrap = 1, grindedweed = 1}, give = {leanblunts = 1}},
|
||||
dextroblunts = {take = {dextrobluntwrap = 1, grindedweed = 1}, give = {dextroblunts = 1}}
|
||||
},
|
||||
bluntwrap = {
|
||||
leanbluntwrap = {take = {bluntwrap = 5, mdlean = 1}, give = {leanbluntwrap = 5}},
|
||||
dextrobluntwrap = {take = {bluntwrap = 5, mdreddextro = 1}, give = {dextrobluntwrap = 5}},
|
||||
}
|
||||
},
|
||||
xtc = {
|
||||
raw = {
|
||||
raw_xtc = {take = {mdp2p = 1, isosafrole = 1}, give = {raw_xtc = 1}}
|
||||
},
|
||||
singlestack = {
|
||||
white = {take = {raw_xtc = 1}, give = {white_xtc = 1}},
|
||||
red = {take = {raw_xtc = 1, loosecoke = 1 }, give = {red_xtc = 1}},
|
||||
orange = {take = {raw_xtc = 1, heroinvial = 1}, give = {orange_xtc = 1}},
|
||||
blue = {take = {raw_xtc = 1, crackrock = 1 }, give = {blue_xtc = 1}},
|
||||
},
|
||||
dualstack = {
|
||||
white = {take = {raw_xtc = 1}, give = {white_xtc2 = 1}},
|
||||
red = {take = {raw_xtc = 1, loosecoke = 1}, give = {red_xtc2 = 1}},
|
||||
orange = {take = {raw_xtc = 1, heroinvial = 1}, give = {orange_xtc2 = 1}},
|
||||
blue = {take = {raw_xtc = 1, crackrock = 1}, give = {blue_xtc2 = 1}},
|
||||
},
|
||||
triplestack = {
|
||||
white = {take = {raw_xtc = 1}, give = {white_xtc3 = 1}},
|
||||
red = {take = {raw_xtc = 1, loosecoke = 1}, give = {red_xtc3 = 1}},
|
||||
orange = {take = {raw_xtc = 1, heroinvial = 1}, give = {orange_xtc3 = 1}},
|
||||
blue = {take = {raw_xtc = 1, crackrock = 1}, give = {blue_xtc3 = 1}},
|
||||
},
|
||||
quadstack = {
|
||||
white = {take = {raw_xtc = 1}, give = {white_xtc4 = 1}},
|
||||
red = {take = {raw_xtc = 1, loosecoke = 1}, give = {red_xtc4 = 1}},
|
||||
orange = {take = {raw_xtc = 1, heroinvial = 1}, give = {orange_xtc4 = 1}},
|
||||
blue = {take = {raw_xtc = 1, crackrock = 1}, give = {blue_xtc4 = 1}},
|
||||
},
|
||||
press = {
|
||||
dual = {take = {white_xtc = 20, blue_xtc = 20, red_xtc = 20, orange_xtc = 20, singlepress = 1}, give = {dualpress = 1}},
|
||||
triple = {take = {white_xtc2 = 50, blue_xtc2 = 50, red_xtc2 = 50, orange_xtc2 = 50, dualpress = 1}, give = {triplepres = 1}},
|
||||
quad = { take = {white_xtc3 = 50, blue_xtc3 = 50, red_xtc3 = 50, orange_xtc3 = 50, triplepress = 1}, give = {quadpress = 1}}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function GetRecipe(source, type, method, tier)
|
||||
local src = source
|
||||
local Player = getPlayer(source)
|
||||
local has = 0
|
||||
local need = 0
|
||||
for k, v in pairs (recipe[type][method][tier].take) do
|
||||
local item = Player.Functions.GetItemByName(k)
|
||||
if item and item.amount >= v then
|
||||
has = has + 1
|
||||
else
|
||||
Notifys(src, ' You Need ' .. v .. ' Of ' .. GetLabels(k) .. ' To Do This', 'error')
|
||||
end
|
||||
need = need + 1
|
||||
end
|
||||
if has == need then
|
||||
for k, v in pairs (recipe[type][method][tier].take) do
|
||||
RemoveItem(src, k, v)
|
||||
end
|
||||
for k,v in pairs (recipe[type][method][tier].give) do
|
||||
AddItem(src, k, v)
|
||||
end
|
||||
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
lib.callback.register('md-drugs:server:GetRecipe', function(source, type, cat)
|
||||
if not source then return false end
|
||||
return recipe[type][cat]
|
||||
end)
|
||||
+7
-39
@@ -1,43 +1,11 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
GlobalState.shrooms = Config.shrooms
|
||||
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
for _, v in pairs(Config.shrooms) do
|
||||
v.taken = false
|
||||
ps.createUseable('shrooms', function(source, item)
|
||||
local src = source
|
||||
if not ps.callback("md-drugs:client:shrooms", src) then
|
||||
ps.notify(src, ps.lang('shrooms.cancel'), "error")
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
function shroomsCooldown(loc)
|
||||
CreateThread(function()
|
||||
Wait(Config.respawnTime * 1000)
|
||||
Config.shrooms[loc].taken = false
|
||||
GlobalState.shrooms = Config.shrooms
|
||||
Wait(1000)
|
||||
TriggerClientEvent('shrooms:respawnCane', -1, loc)
|
||||
Log('Cactus Respawned At ' .. Config.shrooms[loc].location, 'shrooms')
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterNetEvent("shrooms:pickupCane", function(loc)
|
||||
if CheckDist(source, Config.shrooms[loc].location) then return end
|
||||
if not Config.shrooms[loc].taken then
|
||||
Config.shrooms[loc].taken = true
|
||||
GlobalState.shrooms = Config.shrooms
|
||||
TriggerClientEvent("shrooms:removeCane", -1, loc)
|
||||
shroomsCooldown(loc)
|
||||
AddItem(source, 'shrooms', 1)
|
||||
Log(GetName(source) .. ' Picked A Shroom With a distance of ' .. dist(source, Config.shrooms[loc].location) .. ' vectors', 'shrooms')
|
||||
end
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem('shrooms', function(source, item)
|
||||
local src = source
|
||||
if TriggerClientEvent('md-drugs:client:takeshrooms', src, item.name) then
|
||||
RemoveItem(src, 'shrooms', 1)
|
||||
Log(GetName(source) .. ' Took Some Mushrooms', 'shrooms')
|
||||
Notifys(src, 'You Took Some Shrooms!', 'success')
|
||||
end
|
||||
ps.removeItem(src, 'shrooms', 1)
|
||||
ps.notify(src, ps.lang('shrooms.took'), 'success')
|
||||
end)
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local loc = math.random(1, #Config.Travellingmerchant)
|
||||
local stores = {
|
||||
travel = {
|
||||
{name = "tab_paper", price = 50, amount = 50, },
|
||||
{name = "bakingsoda", price = 25, amount = 50, },
|
||||
{name = "isosafrole", price = 25, amount = 50, },
|
||||
{name = "mdp2p", price = 25, amount = 50, },
|
||||
{name = "lysergic_acid", price = 25, amount = 50, },
|
||||
{name = "diethylamide", price = 25, amount = 50, },
|
||||
{name = "lockpick", price = 2, amount = 1000, },
|
||||
{name = "emptyvial", price = 2, amount = 1000, },
|
||||
{name = "needle", price = 2, amount = 1000, },
|
||||
{name = "cokeburner", price = 25, amount = 50, },
|
||||
{name = "crackburner", price = 2, amount = 50, },
|
||||
{name = "lsdburner", price = 2, amount = 50, },
|
||||
{name = "heroinburner", price = 2, amount = 50, },
|
||||
{name = "mdlean", price = 50, amount = 50, },
|
||||
{name = "weedgrinder", price = 25, amount = 50, },
|
||||
{name = "mdbutter", price = 25, amount = 50, },
|
||||
{name = "flour", price = 25, amount = 50, },
|
||||
{name = "chocolate", price = 25, amount = 50, },
|
||||
{name = "butane", price = 25, amount = 50, },
|
||||
{name = "butanetorch", price = 2, amount = 1000, },
|
||||
{name = "dabrig", price = 2, amount = 1000, },
|
||||
{name = "mdwoods", price = 2, amount = 1000, },
|
||||
{name = "leancup", price = 25, amount = 50, },
|
||||
{name = "xtcburner", price = 25, amount = 50, },
|
||||
},
|
||||
Weed = {
|
||||
{name = "weedgrinder", price = 25, amount = 50, },
|
||||
{name = "mdbutter", price = 25, amount = 50, },
|
||||
{name = "flour", price = 25, amount = 50, },
|
||||
{name = "chocolate", price = 25, amount = 50, },
|
||||
{name = "butane", price = 25, amount = 50, },
|
||||
{name = "butanetorch", price = 2, amount = 1000,},
|
||||
{name = "dabrig", price = 2, amount = 1000,},
|
||||
{name = "mdwoods", price = 2, amount = 1000},
|
||||
},
|
||||
Products = {
|
||||
{name = "weed_white-widow_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_skunk_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_purple-haze_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_og-kush_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_amnesia_seed", price = 15, amount = 150, minrep = 0},
|
||||
},
|
||||
ProductsStupidNameRewrite = {
|
||||
{name = "weed_whitewidow_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_skunk_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_purplehaze_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_ogkush_seed", price = 15, amount = 150, minrep = 0},
|
||||
{name = "weed_amnesia_seed", price = 15, amount = 150, minrep = 0},
|
||||
}
|
||||
}
|
||||
|
||||
lib.callback.register('md-drugs:server:menu', function(source, data)
|
||||
local src = source
|
||||
if data == 'travellingMerchant' then
|
||||
return {table = stores.travel, des = '$', id = 'travellingMerchant', title = 'travelling Merchant'}
|
||||
elseif data == 'dealermenu' then
|
||||
local table
|
||||
if Config.StupidassNewQbItemName then table = stores.ProductsStupidNameRewrite else table = stores.Products end
|
||||
return {table = table, id = 'dealermenu', title = "Dealer Menu"}
|
||||
elseif data == 'WeedShop' then
|
||||
return {table = stores.Weed, id = 'WeedShop', title = "Weed Shop"}
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent("md-drugs:server:purchaseGoods", function(amount, money, item, price,table,num)
|
||||
local src = source local Player = getPlayer(src)
|
||||
for i = 1, #table do
|
||||
if table[i].name == item then
|
||||
if not table[i].price == price then return end
|
||||
if Player.Functions.RemoveMoney(tostring(money), tonumber(table[i].price) * tonumber(amount)) then
|
||||
AddItem(src, item, amount)
|
||||
Log(GetName(src) .. ' Bought ' .. amount .. ' Of ' .. item .. ' For ' .. tonumber(price) * tonumber(amount) .. '!', 'merchant')
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
lib.callback.register('md-drugs:server:GetMerchant', function(source)
|
||||
return loc
|
||||
end)
|
||||
+168
-72
@@ -1,112 +1,208 @@
|
||||
local weedLocs = {
|
||||
WeedTele = { -- where you tele out of weed
|
||||
{inside = vector3(1066.31, -3183.36, -39.16), outside = vector3(244.74, 374.54, 105.74), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
MakeButter = {
|
||||
{loc = vector3(1045.48, -3198.49, -38.22), checks = {}},
|
||||
},
|
||||
MakeOil = {
|
||||
{loc = vector3(1038.90, -3198.66, -38.17), checks = {}},
|
||||
},
|
||||
WeedDry = {
|
||||
{loc = vector3(1043.0, -3191.59, -38.39),},
|
||||
{loc = vector3(1041.0, -3191.59, -38.39),},
|
||||
{loc = vector3(1045.0, -3191.59, -38.39),},
|
||||
{loc = vector3(1039.0, -3191.59, -38.39),},
|
||||
},
|
||||
WeedSalesman = {
|
||||
{loc = vector4(1030.77, -3203.18, -38.2, 262.37), ped = 'a_m_m_farmer_01', gang = ""},
|
||||
},
|
||||
}
|
||||
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local weedStore = {
|
||||
weedgrinder =25,
|
||||
mdbutter =25,
|
||||
flour =25,
|
||||
chocolate =25,
|
||||
butane =25,
|
||||
butanetorch =2,
|
||||
dabrig =2,
|
||||
mdwoods =2,
|
||||
}
|
||||
|
||||
GlobalState.WeedPlant = Config.WeedPlant
|
||||
local weed = {
|
||||
blunts = {
|
||||
blunt = {take = {bluntwrap = 1, grindedweed = 1}, give = {blunt = 1}},
|
||||
chewyblunt = {take = {bluntwrap = 1, grindedweed = 1, loosecoke = 1}, give = {chewyblunt = 1}},
|
||||
leanblunts = {take = {leanbluntwrap = 1, grindedweed = 1}, give = {leanblunts = 1}},
|
||||
dextroblunts = {take = {dextrobluntwrap = 1, grindedweed = 1}, give = {dextroblunts = 1}}
|
||||
},
|
||||
bluntwrap = {
|
||||
leanbluntwrap = {take = {bluntwrap = 5, mdlean = 1}, give = {leanbluntwrap = 5}},
|
||||
dextrobluntwrap = {take = {bluntwrap = 5, mdreddextro = 1}, give = {dextrobluntwrap = 5}},
|
||||
}
|
||||
}
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
for _, v in pairs(Config.WeedPlant) do
|
||||
v.taken = false
|
||||
end
|
||||
ps.registerCallback('md-drugs:server:GetWeedRecipe', function(source, tableName)
|
||||
if not source then return false end
|
||||
return weed[tableName]
|
||||
end)
|
||||
|
||||
function WeedCooldown(loc)
|
||||
CreateThread(function()
|
||||
Wait(Config.respawnTime * 1000)
|
||||
Config.WeedPlant[loc].taken = false
|
||||
GlobalState.WeedPlant = Config.WeedPlant
|
||||
Wait(1000)
|
||||
TriggerClientEvent('weed:respawnCane', -1, loc)
|
||||
Log('Weed Plant Respawned At ' .. Config.WeedPlant[loc].location, 'weed')
|
||||
end)
|
||||
end
|
||||
ps.registerCallback('md-drugs:server:GetWeedLocs', function(source)
|
||||
return weedLocs
|
||||
end)
|
||||
|
||||
RegisterNetEvent("weed:pickupCane", function(loc)
|
||||
ps.registerCallback('md-drugs:server:getWeedItems', function(source)
|
||||
return weedStore
|
||||
end)
|
||||
|
||||
RegisterNetEvent('md-drugs:server:buyWeedItem', function(loc, name, amount)
|
||||
local src = source
|
||||
if not Config.WeedPlant[loc].taken then
|
||||
Config.WeedPlant[loc].taken = true
|
||||
GlobalState.WeedPlant = Config.WeedPlant
|
||||
TriggerClientEvent("weed:removeCane", -1, loc)
|
||||
WeedCooldown(loc)
|
||||
AddItem(src, 'wetcannabis', 1)
|
||||
Log(GetName(source) .. ' Picked Weed With a distance of ' .. dist(source, Config.WeedPlant[loc].location) .. ' vectors', 'weed')
|
||||
if not ps.checkDistance(src, weedLocs.WeedSalesman[loc].loc, 3.5) then
|
||||
ps.notify(src, ps.lang('Checks.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if not weedStore[name] then
|
||||
ps.notify(src, ps.lang('weed.itemDoesntExist'), "error")
|
||||
return
|
||||
end
|
||||
if ps.removeMoney(src, 'cash', weedStore[name] * amount) or ps.removeMoney(src, 'bank', weedStore[name] * amount) then
|
||||
ps.addItem(src, name, amount)
|
||||
else
|
||||
ps.notify(src, ps.lang('Catches.notEnoughMoney'), "error")
|
||||
end
|
||||
end)
|
||||
--------------- events
|
||||
|
||||
RegisterServerEvent('md-drugs:server:dryoutweed', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if RemoveItem(src,"wetcannabis", 1) then
|
||||
AddItem(src,"drycannabis", 1)
|
||||
Log(GetName(source) .. ' Dried Weed', 'weed')
|
||||
if timeOut(src, 'md-drugs:server:dryoutweed') then return end
|
||||
if ps.removeItem(src,"wetcannabis", 1) then
|
||||
ps.addItem(src,"drycannabis", 1)
|
||||
else
|
||||
Notifys(src, Lang.Weed.nodry, "error")
|
||||
ps.notify(src, ps.lang('weed.noDry'), "error")
|
||||
end
|
||||
end)
|
||||
|
||||
local bluntwrap = {'mdreddextro','mdlean'}
|
||||
for k, v in pairs (bluntwrap) do
|
||||
QBCore.Functions.CreateUseableItem(v, function(source, item)
|
||||
local src = source
|
||||
TriggerClientEvent('md-drugs:client:makeBluntWrap', src)
|
||||
end)
|
||||
for k, v in pairs (bluntwrap) do
|
||||
ps.createUseable(v, function(source, item) TriggerClientEvent('md-drugs:client:makeBluntWrap', source) end)
|
||||
end
|
||||
|
||||
local bluntwraps = {'leanbluntwrap', 'dextrobluntwrap', 'bluntwrap'}
|
||||
|
||||
for k, v in pairs (bluntwraps) do
|
||||
QBCore.Functions.CreateUseableItem(v, function(source, item)
|
||||
local src = source
|
||||
TriggerClientEvent('md-drugs:client:rollBlunt', source)
|
||||
end)
|
||||
ps.createUseable(v, function(source, item) TriggerClientEvent('md-drugs:client:rollBlunt', source) end)
|
||||
end
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:MakeWeedItems', function(data)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if not Player then return end
|
||||
if not GetRecipe(src, data.recipe, data.table, data.item) then return end
|
||||
if timeOut(src, 'md-drugs:server:MakeWeedItems') then return end
|
||||
if not ps.craftItem(src, weed[data.table][data.item]) then
|
||||
verifyHas(src, weed[data.table][data.item].take)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:makeoil', function(data)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if not Player then return end
|
||||
if not GetRecipe(src, 'weed', 'oil', 'shatter') then return end
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem("dabrig", function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
|
||||
if Player.Functions.GetItemByName("butanetorch") then
|
||||
if RemoveItem(src, "shatter", 1) then
|
||||
Notifys(src, 'test', 'success')
|
||||
TriggerClientEvent("md-drugs:client:dodabs", src)
|
||||
ps.createUseable("dabrig", function(source, item)
|
||||
local src = source
|
||||
if ps.hasItem(src, "butanetorch") then
|
||||
if ps.removeItem(src, "shatter", 1) then
|
||||
TriggerClientEvent("md-drugs:client:dodabs", src)
|
||||
end
|
||||
else
|
||||
ps.notify(src, ps.lang('weed.needItem', ps.getItemLabel("butanetorch")), 'error')
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem("weedgrinder", function(source, item)
|
||||
local src = source
|
||||
if RemoveItem(src, "drycannabis",1 ) then
|
||||
AddItem(src, "grindedweed", 1)
|
||||
TriggerClientEvent("md-drugs:client:grind", src)
|
||||
else
|
||||
Notifys(src,'You Need Dried Weed', 'error')
|
||||
end
|
||||
ps.createUseable("weedgrinder", function(source, item)
|
||||
local src = source
|
||||
if not ps.hasItem(src, "drycannabis") then ps.notify(src, ps.lang('weed.needItem', ps.getItemLabel("drycannabis")), 'error') return end
|
||||
local check = ps.callback('md-drugs:client:uncuff', src, 'Grinding Weed')
|
||||
if not check then return end
|
||||
if ps.removeItem(src, "drycannabis",1 ) then
|
||||
ps.addItem(src, "grindedweed", 1)
|
||||
end
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem("mdwoods", function(source, item)
|
||||
ps.createUseable("mdwoods", function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
TriggerClientEvent("md-drugs:client:rollanim", src)
|
||||
Wait(4000)
|
||||
if RemoveItem(src, "mdwoods",1 ) then
|
||||
AddItem(src, "bluntwrap", 5)
|
||||
AddItem(src, "tobacco", 5)
|
||||
local check = ps.callback('md-drugs:client:uncuff', src, ps.lang('weed.crackBlunt'))
|
||||
if not check then return end
|
||||
if ps.removeItem(src, "mdwoods",1 ) then
|
||||
ps.addItem(src, "bluntwrap", 5)
|
||||
ps.addItem(src, "tobacco", 5)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
exports['ps_lib']:registerCrafter({
|
||||
loc = weedLocs.MakeButter,
|
||||
recipes = {
|
||||
cannabutter = {
|
||||
amount = 1,
|
||||
time = 4000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
mdbutter = 1,
|
||||
grindedweed = 1
|
||||
}
|
||||
},
|
||||
specialbrownie = {
|
||||
amount = 1,
|
||||
time = 4000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
cannabutter = 1,
|
||||
flour = 1,
|
||||
chocolate = 1
|
||||
}
|
||||
},
|
||||
specialcookie = {
|
||||
amount = 1,
|
||||
time = 4000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
cannabutter = 1,
|
||||
flour = 1
|
||||
}
|
||||
},
|
||||
specialchocolate = {
|
||||
amount = 1,
|
||||
time = 4000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
cannabutter = 1,
|
||||
chocolate = 1
|
||||
}
|
||||
},
|
||||
specialmuffin = {
|
||||
amount = 1,
|
||||
time = 4000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
cannabutter = 1,
|
||||
flour = 1
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
exports['ps_lib']:registerCrafter({
|
||||
loc = weedLocs.MakeOil,
|
||||
recipes = {
|
||||
shatter = {
|
||||
amount = 1,
|
||||
time = 4000,
|
||||
anim = 'uncuff',
|
||||
recipe = {
|
||||
butane = 1,
|
||||
grindedweed = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
+178
-142
@@ -1,157 +1,193 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
local coke = { "cokebaggy", "cokebaggystagethree", "cokebaggystagetwo"}
|
||||
local crack = {"baggedcracked", "baggedcrackedstagetwo", "baggedcrackedstagethree"}
|
||||
local lsd = {'smiley_tabs', 'yinyang_tabs', 'wildcherry_tabs', 'pineapple_tabs', 'bart_tabs', 'gratefuldead_tabs'}
|
||||
local heroin = {'heroin_ready', 'heroin_readystagetwo', 'heroin_readystagethree'}
|
||||
local xtc = {"white_playboys", "white_playboys2", "white_playboys3", "white_playboys4", "blue_playboys", "blue_playboys2", "blue_playboys3", "blue_playboys4", "red_playboys", "red_playboys2", "red_playboys3", "red_playboys4", "orange_playboys", "orange_playboy2s", "orange_playboys3", "orange_playboys4", "white_aliens", "white_aliens2", "white_aliens3", "white_aliens4", "blue_aliens", "blue_aliens2", "blue_aliens3", "blue_aliens4", "red_aliens", "red_aliens3", "red_aliens2", "red_aliens4", "orange_aliens", "orange_aliens2", "orange_aliens3", "orange_aliens4", "white_pl", "white_pl2", "white_pl3", "white_pl4", "blue_pl", "blue_pl2", "blue_pl3", "blue_pl4", "red_pl", "red_pl2", "red_pl3", "red_pl4", "orange_pl", "orange_pl2", "orange_pl3", "orange_pl4", "white_trolls", "white_trolls2", "white_trolls3", "white_trolls4", "blue_trolls", "blue_trolls2", "blue_trolls3", "blue_trolls4", "red_trolls", "red_trolls2", "red_trolls3", "red_trolls4", "orange_trolls", "orange_trolls2", "orange_trolls3", "orange_trolls4", "white_cats2", "white_cats3", "white_cats4", "white_cats", "blue_cats", "blue_cats3", "blue_cats2", "blue_cats4", "red_cats", "red_cats2", "red_cats3", "red_cats4", "orange_cats", "orange_cats2", "orange_cats3", "orange_cats4" }
|
||||
local burners = {cokeburner = coke, crackburner = crack, lsdburner = lsd, heroinburner = heroin, xtcburner = xtc}
|
||||
local active = {}
|
||||
local settings = {}
|
||||
settings.WholesaleQuantityBonus = 0.05 -- 5% bonus per 10 units sold (up to 20%)
|
||||
settings.WholesaleMaxBonus = 0.20 -- Maximum 20% bonus
|
||||
settings.WholesaleMinQuantity = 1 -- Minimum quantity required for wholesale
|
||||
settings.WholesaleAmbushEnabled = true -- Enable or disable ambush on failed deals
|
||||
settings.WholesaleAmbushBase = 2 -- Base number of attackers on failed deals
|
||||
settings.WholesaleAmbushScale = true -- Scale number of attackers based on drug quantity
|
||||
settings.WholesaleAmbushTier1 = 10 -- Drug quantity threshold for 3 attackers
|
||||
settings.WholesaleAmbushTier2 = 20 -- Drug quantity threshold for 4 attackers
|
||||
settings.WholesaleAmbushTier3 = 30 -- Drug quantity threshold for 5 attackers
|
||||
settings.WholesaleWeaponTiers = true -- Scale weapon difficulty based on drug quantity
|
||||
settings.WholesaleWeaponsTier1 = { -- Basic weapons (default)
|
||||
"WEAPON_PISTOL",
|
||||
"WEAPON_BAT",
|
||||
"WEAPON_KNIFE",
|
||||
"WEAPON_MACHETE"
|
||||
}
|
||||
settings.WholesaleWeaponsTier2 = { -- Medium weapons (10+ drugs)
|
||||
"WEAPON_COMBATPISTOL",
|
||||
"WEAPON_MICROSMG",
|
||||
"WEAPON_SAWNOFFSHOTGUN",
|
||||
"WEAPON_CROWBAR"
|
||||
}
|
||||
settings.WholesaleWeaponsTier3 = { -- Advanced weapons (20+ drugs)
|
||||
"WEAPON_APPISTOL",
|
||||
"WEAPON_SMG",
|
||||
"WEAPON_PUMPSHOTGUN",
|
||||
"WEAPON_CARBINERIFLE"
|
||||
}
|
||||
settings.WholesaleWeaponsTier4 = { -- Elite weapons (30+ drugs)
|
||||
"WEAPON_HEAVYPISTOL",
|
||||
"WEAPON_ASSAULTSMG",
|
||||
"WEAPON_ASSAULTSHOTGUN",
|
||||
"WEAPON_SPECIALCARBINE"
|
||||
}
|
||||
settings.WholesaleShowEstimates = true -- Show estimated value before deal
|
||||
settings.WholesaleFailPoliceAlert = 75 -- Chance to alert police on failed deals (0-100)
|
||||
settings.WholesaleResetOnTimeout = true -- Reset wholesale flag when buyer times out
|
||||
settings.SuccessfulChance = 90 --- this is the chance of a Success wholesale 1-100
|
||||
settings.AlertPoliceWholesale = 90 -- 1-100 of how often it will alert police
|
||||
settings.WholesaleTimeout = 600 -- time in seconds to get to the location
|
||||
settings.PoliceCount = 2
|
||||
|
||||
QBCore.Functions.CreateUseableItem("cokeburner", function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(source)
|
||||
TriggerClientEvent("md-drugs:client:GetLocation", src, 'coke', "Bring Me All The Coke You Have")
|
||||
local Price = {
|
||||
coke = {
|
||||
min = math.floor(250 * 0.80), -- 250 * 0.80 = 200
|
||||
max = math.floor(450 * 0.80) -- 450 * 0.80 = 360
|
||||
},
|
||||
crack = {
|
||||
min = math.floor(200 * 0.80), -- 200 * 0.80 = 160
|
||||
max = math.floor(400 * 0.80) -- 400 * 0.80 = 320
|
||||
},
|
||||
lsd = {
|
||||
min = math.floor(200 * 0.80), -- 200 * 0.80 = 160
|
||||
max = math.floor(350 * 0.80) -- 350 * 0.80 = 280
|
||||
},
|
||||
heroin = {
|
||||
min = math.floor(200 * 0.80), -- 200 * 0.80 = 160
|
||||
max = math.floor(400 * 0.80) -- 400 * 0.80 = 320
|
||||
},
|
||||
xtc = {
|
||||
min = math.floor(350 * 0.80), -- 350 * 0.80 = 280
|
||||
max = math.floor(665 * 0.80) -- 665 * 0.80 = 532
|
||||
},
|
||||
meth = {
|
||||
min = math.floor(200 * 0.80), -- 200 * 0.80 = 160
|
||||
max = math.floor(400 * 0.80) -- 400 * 0.80 = 320
|
||||
}
|
||||
}
|
||||
local locs = {
|
||||
vector4(-2352.32, 266.78, 165.3, 23.46),
|
||||
vector4(-1467.49, 874.01, 183.59, 298.45),
|
||||
vector4(-856.71, 874.26, 202.85, 205.3),
|
||||
vector4(950.58, -128.49, 74.42, 205.3),
|
||||
vector4(1152.71, -328.43, 69.21, 205.3),
|
||||
vector4(112.66, -1955.67, 20.75, 37.94),
|
||||
vector4(-544.4, -1684.8, 19.89, 252.07),
|
||||
vector4(-1185.02, -1805.4, 3.91, 184.83),
|
||||
vector4(-1641.4, -981.99, 7.58, 35.38),
|
||||
vector4(-1827.93, 782.36, 138.29, 219.99),
|
||||
vector4(-320.84, 2818.73, 59.45, 337.22),
|
||||
vector4(474.88, 2609.56, 44.48, 357.0),
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetWSsettings', function(source)
|
||||
return settings
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:wholesalecoke', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local price = math.random(Config.Wcoke.min, Config.Wcoke.max)
|
||||
for k, v in pairs(coke) do
|
||||
local item = Player.Functions.GetItemByName(v)
|
||||
function getRandW(source)
|
||||
local rand = math.random(1, #locs)
|
||||
return locs[rand]
|
||||
end
|
||||
|
||||
if item and item.amount > 0 then
|
||||
local removed = Player.Functions.RemoveItem(v, item.amount)
|
||||
Player.Functions.AddMoney("cash", item.amount * price)
|
||||
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
|
||||
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
|
||||
for k, v in pairs (burners) do
|
||||
ps.createUseable(k, function(source, item)
|
||||
local Player = ps.getPlayer(source)
|
||||
if ps.getJobTypeCount('leo') < Config.PoliceCount then return ps.notify(source, ps.lang('wholesale.notEnoughCops'), 'error') end
|
||||
for m, d in pairs (active) do
|
||||
if d.cid == ps.getIdentifier(source) then
|
||||
return ps.notify(source, ps.lang('wholesale.alreadyWholesale'), 'error')
|
||||
end
|
||||
end
|
||||
local tab = ''
|
||||
if k == 'cokeburner' then tab = 'coke' end
|
||||
if k == 'crackburner' then tab = 'crack' end
|
||||
if k == 'lsdburner' then tab = 'lsd' end
|
||||
if k == 'heroinburner' then tab = 'heroin' end
|
||||
if k == 'xtcburner' then tab = 'xtc' end
|
||||
if k == 'methburner' then tab = 'meth' end
|
||||
if ps.removeItem(source, k, 1) then
|
||||
local Player = ps.getPlayer(source)
|
||||
local drugCount = 0
|
||||
for m, d in pairs (v) do
|
||||
local amt = ps.getItemCount(source, d) or 0
|
||||
if amt > 0 then
|
||||
drugCount = drugCount + amt
|
||||
end
|
||||
end
|
||||
table.insert(active, {
|
||||
src = source,
|
||||
item = k,
|
||||
location = getRandW(source),
|
||||
cid = ps.getIdentifier(source),
|
||||
type = v,
|
||||
price = Price[tab],
|
||||
count = drugCount
|
||||
})
|
||||
for m, d in pairs (active) do
|
||||
if d.cid == ps.getIdentifier(source) then
|
||||
TriggerClientEvent("md-drugs:client:GetLocation", source, active[m])
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterNetEvent('md-drugs:server:SuccessSale', function(data)
|
||||
local Player = ps.getPlayer(source)
|
||||
for k, v in pairs (active) do
|
||||
if v.cid == ps.getIdentifier(source) then
|
||||
local totalQuantity = 0
|
||||
local itemCounts = {}
|
||||
for m, d in pairs (v.type) do
|
||||
local count = ps.getItemCount(source, d) or 0
|
||||
if count >= 1 then
|
||||
totalQuantity = totalQuantity + count
|
||||
itemCounts[d] = count
|
||||
end
|
||||
end
|
||||
if totalQuantity < Config.WholesaleMinQuantity then
|
||||
ps.notify(source, string.format(ps.lang('wholesale.min_quantity'), Config.WholesaleMinQuantity), 'error')
|
||||
return
|
||||
end
|
||||
local bonusTiers = math.floor(totalQuantity / 10)
|
||||
local quantityBonus = math.min(bonusTiers * Config.WholesaleQuantityBonus, Config.WholesaleMaxBonus)
|
||||
local bonusMultiplier = 1 + quantityBonus
|
||||
|
||||
local basePayout = math.random(v.price.min, v.price.max)
|
||||
local finalPayout = math.floor(basePayout * bonusMultiplier)
|
||||
local totalPayout = 0
|
||||
for drug, amount in pairs(itemCounts) do
|
||||
ps.removeItem(source, drug, amount)
|
||||
totalPayout = totalPayout + (amount * finalPayout)
|
||||
end
|
||||
ps.addMoney(source, 'cash', totalPayout)
|
||||
TriggerClientEvent('md-drugs:client:WholesaleComplete', source, {
|
||||
quantity = totalQuantity,
|
||||
bonus = math.floor(quantityBonus * 100),
|
||||
payout = totalPayout
|
||||
})
|
||||
table.remove(active, k)
|
||||
break
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateUseableItem("crackburner", function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(source)
|
||||
TriggerClientEvent("md-drugs:client:GetLocation", src, 'crack', "Bring Me All The Crack You Have")
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:wholesalecrack', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local price = math.random(Config.Wcrack.min, Config.Wcrack.max)
|
||||
for k, v in pairs(crack) do
|
||||
local item = Player.Functions.GetItemByName(v)
|
||||
if item and item.amount > 0 then
|
||||
local removed = Player.Functions.RemoveItem(v, item.amount)
|
||||
Player.Functions.AddMoney("cash", item.amount * price)
|
||||
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
|
||||
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
|
||||
RegisterNetEvent('md-drugs:server:CleanupWholesale', function()
|
||||
local Player = ps.getPlayer(source)
|
||||
for k, v in pairs(active) do
|
||||
if v.cid == ps.getIdentifier(source) then
|
||||
table.remove(active, k)
|
||||
ps.notify(source, ps.lang('wholesale.deal_failed_cleanup') or 'Deal failed - you can try again', 'error')
|
||||
break
|
||||
end
|
||||
end
|
||||
end)
|
||||
----------------- lsd
|
||||
|
||||
QBCore.Functions.CreateUseableItem("lsdburner", function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(source)
|
||||
TriggerClientEvent("md-drugs:client:GetLocation", src, 'lsd', "Bring Me All The lsd You Have")
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:wholesalelsd', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local price = math.random(Config.Wlsd.min, Config.Wlsd.max)
|
||||
|
||||
for k, v in pairs(lsd) do
|
||||
local item = Player.Functions.GetItemByName(v)
|
||||
|
||||
if item and item.amount > 0 then
|
||||
local removed = Player.Functions.RemoveItem(v, item.amount)
|
||||
Player.Functions.AddMoney("cash", item.amount * price)
|
||||
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
|
||||
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
|
||||
end
|
||||
end
|
||||
end)
|
||||
----------------- heroin
|
||||
|
||||
QBCore.Functions.CreateUseableItem("heroinburner", function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(source)
|
||||
TriggerClientEvent("md-drugs:client:GetLocation", src, 'heroin', "Bring Me All The Heroin You Have")
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:wholesaleheroin', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local price = math.random(Config.WHeroin.min, Config.WHeroin.max)
|
||||
for k, v in pairs(heroin) do
|
||||
local item = Player.Functions.GetItemByName(v)
|
||||
|
||||
if item and item.amount > 0 then
|
||||
local removed = Player.Functions.RemoveItem(v, item.amount)
|
||||
Player.Functions.AddMoney("cash", item.amount * price)
|
||||
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
|
||||
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
|
||||
end
|
||||
end
|
||||
end)
|
||||
---- xtc
|
||||
QBCore.Functions.CreateUseableItem("xtcburner", function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(source)
|
||||
TriggerClientEvent("md-drugs:client:GetLocation", src, 'xtc', "Bring Me All The xtc You Have")
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:wholesalextc', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local price = math.random(Config.WXTC.min, Config.WXTC.max)
|
||||
for k, v in pairs(xtc) do
|
||||
local item = Player.Functions.GetItemByName(v)
|
||||
|
||||
if item and item.amount > 0 then
|
||||
local removed = Player.Functions.RemoveItem(v, item.amount)
|
||||
Player.Functions.AddMoney("cash", item.amount * price)
|
||||
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
|
||||
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:RemoveBurner', function(item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
|
||||
if item == 'coke' then
|
||||
if Player.Functions.RemoveItem('cokeburner', 1) then
|
||||
else
|
||||
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
|
||||
end
|
||||
elseif item == 'crack' then
|
||||
if Player.Functions.RemoveItem('crackburner', 1) then
|
||||
else
|
||||
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
|
||||
end
|
||||
elseif item == 'heroin' then
|
||||
if Player.Functions.RemoveItem('heroinburner', 1) then
|
||||
else
|
||||
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
|
||||
end
|
||||
elseif item == 'lsd' then
|
||||
if Player.Functions.RemoveItem('lsdburner', 1) then
|
||||
else
|
||||
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
|
||||
end
|
||||
elseif item == 'xtc' then
|
||||
if Player.Functions.RemoveItem('xtcburner', 1) then
|
||||
else
|
||||
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end)
|
||||
+197
-251
@@ -1,283 +1,229 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
-------------------- stealing ingridients
|
||||
local RecipeList = {
|
||||
raw = {
|
||||
raw_xtc = {take = {mdp2p = 1, isosafrole = 1}, give = {raw_xtc = 1}}
|
||||
},
|
||||
singlestack = {
|
||||
white_xtc = {amount = 1, take = {raw_xtc = 1}},
|
||||
red_xtc = {amount = 1, take = {raw_xtc = 1, loosecoke = 1},},
|
||||
orange_xtc = {amount = 1, take = {raw_xtc = 1, heroinvial = 1},},
|
||||
blue_xtc = {amount = 1, take = {raw_xtc = 1, crackrock = 1},},
|
||||
},
|
||||
dualstack = {
|
||||
white_xtc2 = {amount = 1, take = {raw_xtc = 1},},
|
||||
red_xtc2 = {amount = 1, take = {raw_xtc = 1, loosecoke = 1},},
|
||||
orange_xtc2 = {amount = 1, take = {raw_xtc = 1, heroinvial = 1},},
|
||||
blue_xtc2 = {amount = 1, take = {raw_xtc = 1, crackrock = 1},},
|
||||
},
|
||||
triplestack = {
|
||||
white_xtc3 = {amount = 1, take = {raw_xtc = 1},},
|
||||
red_xtc3 = {amount = 1, take = {raw_xtc = 1, loosecoke = 1},},
|
||||
orange_xtc3 = {amount = 1, take = {raw_xtc = 1, heroinvial = 1},},
|
||||
blue_xtc3 = {amount = 1, take = {raw_xtc = 1, crackrock = 1},},
|
||||
},
|
||||
quadstack = {
|
||||
white_xtc4 = {amount = 1, take = {raw_xtc = 1},},
|
||||
red_xtc4 = {amount = 1, take = {raw_xtc = 1, loosecoke = 1},},
|
||||
orange_xtc4 = {amount = 1, take = {raw_xtc = 1, heroinvial = 1},},
|
||||
blue_xtc4 = {amount = 1, take = {raw_xtc = 1, crackrock = 1},},
|
||||
},
|
||||
presses = {
|
||||
singlepress = {cash = 10000},
|
||||
dualpress = {amount = 1, take = {white_xtc = 20, blue_xtc = 20, red_xtc = 20, orange_xtc = 20, singlepress = 1}},
|
||||
triplepress = {amount = 1, take = {white_xtc2 = 50, blue_xtc2 = 50, red_xtc2 = 50, orange_xtc2 = 50, dualpress = 1}},
|
||||
quadpress = {amount = 1, take = {white_xtc3 = 50, blue_xtc3 = 50, red_xtc3 = 50, orange_xtc3 = 50, triplepress = 1}},
|
||||
}
|
||||
}
|
||||
|
||||
local xtcLocations = {
|
||||
isosafrole = { -- where to steal isosafrole
|
||||
{loc = vector3(844.39, -902.92, 25.42), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
mdp2p = { -- where to steal mdp2p
|
||||
{loc = vector3(844.4, -898.79, 25.23), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
rawxtcloc = { -- where to combine the 2 ingridents to make raw xtc
|
||||
{loc = vector3(844.71, -910.33, 25.37), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
xtcpress = {
|
||||
{ped = 'g_f_y_families_01',loc = vector4(845.82, -884.79, 25.18, 180.0), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
stamp = { -- where to stamp pills
|
||||
{loc = vector3(844.71, -900.56, 25.43), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
},
|
||||
}
|
||||
|
||||
ps.registerCallback('md-drugs:server:GetXtcLocs', function(source)
|
||||
return xtcLocations
|
||||
end)
|
||||
|
||||
local function craft(source, tbl, item)
|
||||
local src = source
|
||||
local need, have = 0,0
|
||||
for k, v in pairs(tbl.take) do
|
||||
if ps.hasItem(src, k, v) then
|
||||
have = have + v
|
||||
end
|
||||
need = need + v
|
||||
end
|
||||
if need == have then
|
||||
for k, v in pairs (tbl.take) do
|
||||
ps.removeItem(src, k, v)
|
||||
end
|
||||
ps.addItem(src, item , tbl.amount)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local activePresses = {}
|
||||
|
||||
RegisterServerEvent('md-drugs:server:stealisosafrole', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if CheckDist(source, Config.isosafrole[num]['loc']) then return end
|
||||
if AddItem(src, "isosafrole", 1) then
|
||||
Log(GetName(source) .. ' Stole isosafrole with a distance of ' .. dist(source, Config.isosafrole[num]['loc']) .. ' vectors!', 'xtc')
|
||||
end
|
||||
if not ps.checkDistance(src, xtcLocations.isosafrole[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Checks.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if timeOut(src, 'md-drugs:server:stealisosafrole') then return end
|
||||
ps.addItem(src, "isosafrole", 1)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:stealmdp2p', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if CheckDist(source, Config.mdp2p[num]['loc']) then return end
|
||||
if AddItem(src,"mdp2p", 1) then
|
||||
Log(GetName(source) .. ' Stole MDP2P with a distance of ' .. dist(source, Config.mdp2p[num]['loc']) .. ' vectors!', 'xtc')
|
||||
end
|
||||
if not ps.checkDistance(src, xtcLocations.mdp2p[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Checks.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if timeOut(src, 'md-drugs:server:stealmdp2p') then return end
|
||||
ps.addItem(src, "mdp2p", 1)
|
||||
end)
|
||||
|
||||
local presses = {
|
||||
{item = 'singlepress', data = 'single'},
|
||||
{item = 'dualpress', data = 'dual'},
|
||||
{item = 'triplepress', data = 'triple'},
|
||||
{item = 'quadpress', data = 'quad'},
|
||||
{item = 'singlepress', data = 'singlestack', recipes = RecipeList.singlestack},
|
||||
{item = 'dualpress', data = 'dualstack', recipes = RecipeList.dualstack},
|
||||
{item = 'triplepress', data = 'triplestack', recipes = RecipeList.triplestack},
|
||||
{item = 'quadpress', data = 'quadstack', recipes = RecipeList.quadstack},
|
||||
}
|
||||
for k, v in pairs (presses) do
|
||||
QBCore.Functions.CreateUseableItem(v.item, function(source, item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if TriggerClientEvent("md-drugs:client:setpress", src, v.data) then
|
||||
RemoveItem(src, v.item, 1)
|
||||
Log(GetName(source) .. ' Placed A ' .. v.item .. ' At ' .. GetCoords(source) .. '!', 'xtc')
|
||||
end
|
||||
end)
|
||||
|
||||
for k, v in pairs (presses) do
|
||||
ps.createUseable(v.item, function(source, item)
|
||||
local src = source
|
||||
local check, loc = ps.callback('md-drugs:client:setpress', src, v)
|
||||
if check then
|
||||
if ps.removeItem(src, v.item, 1) then
|
||||
activePresses[ps.getIdentifier(src)] = {
|
||||
press = v.data,
|
||||
get = v.item,
|
||||
owner = ps.getPlayerName(src),
|
||||
ownerid = ps.getIdentifier(src),
|
||||
src = src,
|
||||
loc = loc
|
||||
}
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('md-drugs:server:getpressback', function(type)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if type == 'single' then
|
||||
if Player.Functions.GetItemByName('singlepress') then Notifys(src, 'You Already Have A Kit') return end
|
||||
AddItem(src, 'singlepress', 1)
|
||||
Log(GetName(source) .. ' Picked Their Single Press At ' .. GetCoords(source) .. '!', 'xtc')
|
||||
elseif type == 'dual' then
|
||||
if Player.Functions.GetItemByName('dualpress') then Notifys(src, 'You Already Have A Kit') return end
|
||||
AddItem(src, 'dualpress', 1)
|
||||
Log(GetName(source) .. ' Picked Their Dual Press At ' .. GetCoords(source) .. '!', 'xtc')
|
||||
elseif type == 'triple' then
|
||||
if Player.Functions.GetItemByName('triplepress') then Notifys(src, 'You Already Have A Kit') return end
|
||||
AddItem(src, 'triplepress', 1)
|
||||
Log(GetName(source) .. ' Picked Their Triple Press At ' .. GetCoords(source) .. '!', 'xtc')
|
||||
elseif type == 'quad' then
|
||||
if Player.Functions.GetItemByName('quadpress') then Notifys(src, 'You Already Have A Kit') return end
|
||||
AddItem(src, 'quadpress', 1)
|
||||
Log(GetName(source) .. ' Picked Their Quad Press At ' .. GetCoords(source) .. '!', 'xtc')
|
||||
end
|
||||
RegisterServerEvent('md-drugs:server:getpressback', function()
|
||||
local src = source
|
||||
if not activePresses[ps.getIdentifier(src)] then return end
|
||||
local press = activePresses[ps.getIdentifier(src)]
|
||||
if not ps.checkDistance(src, press.loc, 2.0) then return end
|
||||
ps.addItem(src, press.get, 1)
|
||||
activePresses[ps.getIdentifier(src)] = nil
|
||||
end)
|
||||
|
||||
|
||||
RegisterServerEvent('md-drugs:server:makextc', function(data)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if not Itemcheck(src, 'raw_xtc', 1) then return end
|
||||
if data.data == 'single' then
|
||||
if data.color == 'white' then
|
||||
if not GetRecipe(src, 'xtc', 'singlestack', 'white') then return end
|
||||
Log(GetName(source) .. ' Made A Single Stack White Pill!', 'xtc')
|
||||
elseif data.color == 'red' then
|
||||
if not GetRecipe(src, 'xtc', 'singlestack', 'red') then return end
|
||||
Log(GetName(source) .. ' Made A Single Stack Red Pill!', 'xtc')
|
||||
elseif data.color == 'orange' then
|
||||
if not GetRecipe(src, 'xtc', 'singlestack', 'orange') then return end
|
||||
Log(GetName(source) .. ' Made A Single Stack Orange Pill!', 'xtc')
|
||||
elseif data.color == 'blue' then
|
||||
if not GetRecipe(src, 'xtc', 'singlestack', 'blue') then return end
|
||||
Log(GetName(source) .. ' Made A Single Stack Blue Pill!', 'xtc')
|
||||
end
|
||||
elseif data.data == 'dual' then
|
||||
if data.color == 'white' then
|
||||
if not GetRecipe(src, 'xtc', 'dualstack', 'white') then return end
|
||||
Log(GetName(source) .. ' Made A Dual Stack White Pill!', 'xtc')
|
||||
elseif data.color == 'red' then
|
||||
if not GetRecipe(src, 'xtc', 'dualstack', 'red') then return end
|
||||
Log(GetName(source) .. ' Made A Dual Stack Red Pill!', 'xtc')
|
||||
elseif data.color == 'orange' then
|
||||
if not GetRecipe(src, 'xtc', 'dualstack', 'orange') then return end
|
||||
Log(GetName(source) .. ' Made A Dual Stack Orange Pill!', 'xtc')
|
||||
elseif data.color == 'blue' then
|
||||
if not GetRecipe(src, 'xtc', 'dualstack', 'blue') then return end
|
||||
Log(GetName(source) .. ' Made A Dual Stack Blue Pill!', 'xtc')
|
||||
end
|
||||
elseif data.data == 'triple' then
|
||||
if data.color == 'white' then
|
||||
if not GetRecipe(src, 'xtc', 'triplestack', 'white') then return end
|
||||
Log(GetName(source) .. ' Made A Triple Stack White Pill!', 'xtc')
|
||||
elseif data.color == 'red' then
|
||||
if not GetRecipe(src, 'xtc', 'triplestack', 'red') then return end
|
||||
Log(GetName(source) .. ' Made A Triple Stack Red Pill!', 'xtc')
|
||||
elseif data.color == 'orange' then
|
||||
if not GetRecipe(src, 'xtc', 'triplestack', 'orange') then return end
|
||||
Log(GetName(source) .. ' Made A Triple Stack Orange Pill!', 'xtc')
|
||||
elseif data.color == 'blue' then
|
||||
if not GetRecipe(src, 'xtc', 'triplestack', 'blue') then return end
|
||||
Log(GetName(source) .. ' Made A Triple Stack Blue Pill!', 'xtc')
|
||||
end
|
||||
elseif data.data == 'quad' then
|
||||
if data.color == 'white' then
|
||||
if not GetRecipe(src, 'xtc', 'quadstack', 'white') then return end
|
||||
Log(GetName(source) .. ' Made A Quad Stack White Pill!', 'xtc')
|
||||
elseif data.color == 'red' then
|
||||
if not GetRecipe(src, 'xtc', 'quadstack', 'red') then return end
|
||||
Log(GetName(source) .. ' Made A Quad Stack Red Pill!', 'xtc')
|
||||
elseif data.color == 'orange' then
|
||||
if not GetRecipe(src, 'xtc', 'quadstack', 'orange') then return end
|
||||
Log(GetName(source) .. ' Made A Quad Stack Orange Pill!', 'xtc')
|
||||
elseif data.color == 'blue' then
|
||||
if not GetRecipe(src, 'xtc', 'quadstack', 'blue') then return end
|
||||
Log(GetName(source) .. ' Made A Quad Stack Blue Pill!', 'xtc')
|
||||
end
|
||||
end
|
||||
local src = source
|
||||
if not activePresses[ps.getIdentifier(src)] then
|
||||
ps.notify(src, ps.lang('xtc.noPressOut'), 'error')
|
||||
return
|
||||
end
|
||||
if timeOut(src, 'md-drugs:server:makextc') then return end
|
||||
if not ps.checkDistance(src, activePresses[ps.getIdentifier(src)].loc, 2.0) then return end
|
||||
craft(src, RecipeList[activePresses[ps.getIdentifier(src)].press][data], data)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:buypress', function()
|
||||
RegisterServerEvent('md-drugs:server:buypress', function(loc, item)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
|
||||
if Player.Functions.RemoveMoney("cash", 20000) then
|
||||
AddItem(src, "singlepress", 1)
|
||||
Log(GetName(source) .. ' Bought A Pill Press', 'xtc')
|
||||
else
|
||||
Notifys(Lang.xtc.cash, "error")
|
||||
end
|
||||
end)
|
||||
if not ps.checkDistance(src, xtcLocations.xtcpress[loc].loc, 2.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if timeOut(src, 'md-drugs:server:buypress') then return end
|
||||
if ps.removeMoney(src,"cash", RecipeList.presses['singlepress'].cash) then
|
||||
ps.addItem(src, "singlepress", 1)
|
||||
else
|
||||
ps.notify(src, ps.lang('Catches.notEnoughMoney'), "error")
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:upgradepress', function(data)
|
||||
local src = source
|
||||
|
||||
if CheckDist(source, Config.buypress) then return end
|
||||
if data == 'dual' then
|
||||
if not GetRecipe(src, 'xtc', 'press', 'dual') then return end
|
||||
Log(GetName(source) .. ' Upgraded Press To Dual Press', 'xtc')
|
||||
elseif data == 'triple' then
|
||||
if not GetRecipe(src, 'xtc', 'press', 'triple') then return end
|
||||
Log(GetName(source) .. ' Upgraded Press To Triple Press', 'xtc')
|
||||
elseif data == 'quad' then
|
||||
if not GetRecipe(src, 'xtc', 'press', 'quad') then return end
|
||||
Log(GetName(source) .. ' Upgraded Press To Quad Press', 'xtc')
|
||||
else
|
||||
Notifys(src, 'huh', 'error')
|
||||
end
|
||||
local src = source
|
||||
if timeOut(src, 'md-drugs:server:upgradepress') then return end
|
||||
if not ps.checkDistance(src, xtcLocations.xtcpress[data].loc, 2.0) then
|
||||
ps.notify(src, ps.lang('Catches.notIn'), "error")
|
||||
return
|
||||
end
|
||||
craft(src, RecipeList.presses[data], data)
|
||||
end)
|
||||
|
||||
ps.registerCallback('md-drugs:server:getpressrecipes', function(source)
|
||||
return RecipeList.presses
|
||||
end)
|
||||
------------- making powder
|
||||
RegisterServerEvent('md-drugs:server:makingrawxtc', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
if CheckDist(source, Config.rawxtcloc[num]['loc']) then return end
|
||||
if not GetRecipe(src, 'xtc', 'raw', 'raw_xtc') then return end
|
||||
Log(GetName(source) .. ' Made Raw XTC With A Distance Of ' .. dist(source, Config.rawxtcloc[num]['loc']) .. '!', 'xtc')
|
||||
local src = source
|
||||
if not ps.checkDistance(src, xtcLocations.rawxtcloc[num].loc, 3.0) then
|
||||
ps.notify(src, ps.lang('Checks.notIn'), "error")
|
||||
return
|
||||
end
|
||||
if timeOut(src, 'md-drugs:server:makingrawxtc') then return end
|
||||
if not ps.craftItem(src, RecipeList.raw.raw_xtc) then return end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:stampwhite', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local one = {'white_playboys', 'white_aliens', 'white_pl', 'white_trolls', 'white_cats'}
|
||||
local chance = math.random(#one)
|
||||
local two = {'white_playboys2', 'white_aliens2', 'white_pl2', 'white_trolls2', 'white_cats2'}
|
||||
local chance2 = math.random(#one)
|
||||
local three = {'white_playboys3', 'white_aliens3', 'white_pl3', 'white_trolls3', 'white_cats3'}
|
||||
local chance3 = math.random(#one)
|
||||
local four = {'white_playboys4', 'white_aliens4', 'white_pl4', 'white_trolls4', 'white_cats4'}
|
||||
local chance4 = math.random(#one)
|
||||
if CheckDist(source, Config.stamp[num]['loc']) then return end
|
||||
|
||||
if RemoveItem(src, "white_xtc", 1) then
|
||||
AddItem(src, one[chance], 1)
|
||||
Log(GetName(source) .. ' Stamped A Single White Pill And Got ' .. one[chance] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "white_xtc2", 1) then
|
||||
AddItem(src, two[chance2], 1)
|
||||
Log(GetName(source) .. ' Stamped A Dual White Pill And Got ' .. two[chance2] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "white_xtc3", 1) then
|
||||
AddItem(src, three[chance3], 1)
|
||||
Log(GetName(source) .. ' Stamped A Triple White Pill And Got ' .. three[chance3] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "white_xtc4", 1) then
|
||||
AddItem(src, four[chance4], 1)
|
||||
Log(GetName(source) .. ' Stamped A Quad White Pill And Got ' .. four[chance4] .. '!', 'xtc')
|
||||
else
|
||||
Notifys('You Dont Have Unstamped White Pills', 'error')
|
||||
local function getColor(color)
|
||||
local colors = {
|
||||
white = {'white_playboys', 'white_aliens', 'white_pl', 'white_trolls', 'white_cats'},
|
||||
red = {'red_playboys', 'red_aliens', 'red_pl', 'red_trolls', 'red_cats'},
|
||||
orange = {'orange_playboys', 'orange_aliens', 'orange_pl', 'orange_trolls', 'orange_cats'},
|
||||
blue = {'blue_playboys', 'blue_aliens', 'blue_pl', 'blue_trolls', 'blue_cats'}
|
||||
}
|
||||
if colors[color] then
|
||||
return colors[color][math.random(#colors[color])]
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
RegisterServerEvent('md-drugs:server:stamp', function(num, color)
|
||||
local src = source
|
||||
if not ps.checkDistance(src, xtcLocations.stamp[num].loc, 3.0) then return end
|
||||
if timeOut(src, 'md-drugs:server:stamp') then return end
|
||||
local item = getColor(color)
|
||||
local colors = {
|
||||
white = 'white_xtc',
|
||||
red = 'red_xtc',
|
||||
orange = 'orange_xtc',
|
||||
blue = 'blue_xtc'
|
||||
}
|
||||
if ps.removeItem(src, colors[color], 1) then
|
||||
ps.addItem(src, item, 1)
|
||||
elseif ps.removeItem(src, colors[color].."2", 1) then
|
||||
ps.addItem(src, item..'2', 1)
|
||||
elseif ps.removeItem(src, colors[color].."3", 1) then
|
||||
ps.addItem(src, item..'3', 1)
|
||||
elseif ps.removeItem(src, colors[color].."4", 1) then
|
||||
ps.addItem(src, item..'4', 1)
|
||||
else
|
||||
ps.notify(src, ps.lang('xtc.noPills'), 'error')
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:stampred', function(num)
|
||||
AddEventHandler('playerDropped', function()
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local one = {'red_playboys', 'red_aliens', 'red_pl', 'red_trolls', 'red_cats'}
|
||||
local chance = math.random(#one)
|
||||
local two = {'red_playboys2', 'red_aliens2', 'red_pl2', 'red_trolls2', 'red_cats2'}
|
||||
local chance2 = math.random(#one)
|
||||
local three = {'red_playboys3', 'red_aliens3', 'red_pl3', 'red_trolls3', 'red_cats3'}
|
||||
local chance3 = math.random(#one)
|
||||
local four = {'red_playboys4', 'red_aliens4', 'red_pl4', 'red_trolls4', 'red_cats4'}
|
||||
local chance4 = math.random(#one)
|
||||
local playerPed = GetPlayerPed(source)
|
||||
if CheckDist(source, Config.stamp[num]['loc']) then return end
|
||||
|
||||
if RemoveItem(src, "red_xtc", 1) then
|
||||
AddItem(src, one[chance], 1)
|
||||
Log(GetName(source) .. ' Stamped A Single Red Pill And Got ' .. one[chance] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "red_xtc2", 1) then
|
||||
AddItem(src, two[chance2], 1)
|
||||
Log(GetName(source) .. ' Stamped A Dual Red Pill And Got ' .. two[chance2] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "red_xtc3", 1) then
|
||||
AddItem(src, three[chance3], 1)
|
||||
Log(GetName(source) .. ' Stamped A Triple Red Pill And Got ' .. three[chance3] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "red_xtc4", 1) then
|
||||
AddItem(src, four[chance4], 1)
|
||||
Log(GetName(source) .. ' Stamped A Quad Red Pill And Got ' .. four[chance4] .. '!', 'xtc')
|
||||
else
|
||||
Notifys('You Dont Have Unstamped red Pills', 'error')
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:stamporange', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local one = {'orange_playboys', 'orange_aliens', 'orange_pl', 'orange_trolls', 'orange_cats'}
|
||||
local chance = math.random(#one)
|
||||
local two = {'orange_playboys2', 'orange_aliens2', 'orange_pl2', 'orange_trolls2', 'orange_cats2'}
|
||||
local chance2 = math.random(#one)
|
||||
local three = {'orange_playboys3', 'orange_aliens3', 'orange_pl3', 'orange_trolls3', 'orange_cats3'}
|
||||
local chance3 = math.random(#one)
|
||||
local four = {'orange_playboys4', 'orange_aliens4', 'orange_pl4', 'orange_trolls4', 'orange_cats4'}
|
||||
local chance4 = math.random(#one)
|
||||
local playerPed = GetPlayerPed(source)
|
||||
if CheckDist(source, Config.stamp[num]['loc']) then return end
|
||||
|
||||
if RemoveItem(src, "orange_xtc", 1) then
|
||||
AddItem(src, one[chance], 1)
|
||||
Log(GetName(source) .. ' Stamped A Single Orange Pill And Got ' .. one[chance] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "orange_xtc2", 1) then
|
||||
AddItem(src, two[chance2], 1)
|
||||
Log(GetName(source) .. ' Stamped A Dual Orange Pill And Got ' .. two[chance2] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "orange_xtc3", 1) then
|
||||
AddItem(src, three[chance3], 1)
|
||||
Log(GetName(source) .. ' Stamped A Triple Orange Pill And Got ' .. three[chance3] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "orange_xtc4", 1) then
|
||||
AddItem(src, four[chance4], 1)
|
||||
Log(GetName(source) .. ' Stamped A Quad Orange Pill And Got ' .. four[chance4] .. '!', 'xtc')
|
||||
else
|
||||
Notifys('You Dont Have Unstamped orange Pills', 'error')
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('md-drugs:server:stampblue', function(num)
|
||||
local src = source
|
||||
local Player = getPlayer(src)
|
||||
local one = {'blue_playboys', 'blue_aliens', 'blue_pl', 'blue_trolls', 'blue_cats'}
|
||||
local chance = math.random(#one)
|
||||
local two = {'blue_playboys2', 'blue_aliens2', 'blue_pl2', 'blue_trolls2', 'blue_cats2'}
|
||||
local chance2 = math.random(#one)
|
||||
local three = {'blue_playboys3', 'blue_aliens3', 'blue_pl3', 'blue_trolls3', 'blue_cats3'}
|
||||
local chance3 = math.random(#one)
|
||||
local four = {'blue_playboys4', 'blue_aliens4', 'blue_pl4', 'blue_trolls4', 'blue_cats4'}
|
||||
local chance4 = math.random(#one)
|
||||
local playerPed = GetPlayerPed(source)
|
||||
if CheckDist(source, Config.stamp[num]['loc']) then return end
|
||||
Log(GetName(source) .. ' Stamped A Single Blue Pill And Got ' .. one[chance] .. '!', 'xtc')
|
||||
if RemoveItem(src, "blue_xtc", 1) then
|
||||
AddItem(src, one[chance], 1)
|
||||
elseif RemoveItem(src, "blue_xtc2", 1) then
|
||||
AddItem(src, two[chance2], 1)
|
||||
Log(GetName(source) .. ' Stamped A Dual Blue Pill And Got ' .. two[chance2] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "blue_xtc3", 1) then
|
||||
AddItem(src, three[chance3], 1)
|
||||
Log(GetName(source) .. ' Stamped A Triple Blue Pill And Got ' .. three[chance3] .. '!', 'xtc')
|
||||
elseif RemoveItem(src, "blue_xtc4", 1) then
|
||||
AddItem(src, four[chance4], 1)
|
||||
Log(GetName(source) .. ' Stamped A Quad Blue Pill And Got ' .. four[chance4] .. '!', 'xtc')
|
||||
else
|
||||
Notifys('You Dont Have Unstamped blue Pills', 'error')
|
||||
end
|
||||
if activePresses[ps.getIdentifier(src)] then
|
||||
ps.addItem(src, activePresses[ps.getIdentifier(src)].get, 1)
|
||||
activePresses[ps.getIdentifier(src)] = nil
|
||||
end
|
||||
end)
|
||||
@@ -0,0 +1,26 @@
|
||||
function loadFile(filePath)
|
||||
local resourceName = 'md-drugs'
|
||||
local fullScript = LoadResourceFile(resourceName, filePath)
|
||||
if not fullScript then
|
||||
ps.error("Error: Failed to load module '" .. filePath .. "' from resource '" .. resourceName .. "'.")
|
||||
return false
|
||||
end
|
||||
local chunk, err = load(fullScript, filePath, "t")
|
||||
if not chunk then
|
||||
ps.error("Error loading Lua chunk from '" .. filePath .. "': " .. tostring(err))
|
||||
return false
|
||||
end
|
||||
|
||||
local success, execErr = pcall(chunk)
|
||||
if not success then
|
||||
ps.error("Error executing Lua chunk from '" .. filePath .. "': " .. tostring(execErr))
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
for scriptName, toggle in pairs(Config.Drugs) do
|
||||
if not toggle then goto continue end
|
||||
loadFile('server/' .. scriptName .. '.lua')
|
||||
::continue::
|
||||
end
|
||||
+28
-304
@@ -1,20 +1,14 @@
|
||||
Config = {} --Ignore.
|
||||
ps = exports.ps_lib:init() --Ignore.
|
||||
ps.loadLangs("uwu") -- set your language
|
||||
|
||||
Config.Target = 'ox' -- qb or ox
|
||||
Config.respawnTime = 150 -- Seconds
|
||||
Config.Fuel = "LegacyFuel" -- type the name of script you use i.e. ps-fuel, cdn-fuel, LegacyFuel
|
||||
Config.Fuel = "LegacyFuel" -- type the name of script you use i.e. ps-fuel, cdn-fuel, LegacyFuel, ox_fuel
|
||||
Config.TierSystem = true -- allows for three tiers of certain drugs ( coke, heroin, crack, lsd)
|
||||
Config.StupidassNewQbItemName = true -- true if you have updated your items.lua from base qb after november 2023 because changing item names this far in a framework is 3 IQ points total
|
||||
Config.RequestModelTime = 30000 -- if you need more time than this, uhhhh wow
|
||||
|
||||
----------------------------------- TierSystem levels ** ONLY IN USE IF CONFIG.TIERSYTEM IS TRUE
|
||||
Config.Tier1 = 100 -- amount to hit for level 2
|
||||
Config.Tier2 = 300 -- amount to hit for level 3
|
||||
|
||||
---------------------------------- BRIDGE
|
||||
Config.progressbartype = 'oxcir' -- either 'qb', 'oxcir', 'oxbar'
|
||||
Config.Notify = 'ox' -- -- either 'qb' or 'ox' or 'okok'
|
||||
Config.Phone = 'qb' -- either 'qb' or 'yflip' or 'qs'
|
||||
Config.Dispatch = 'ps' -- either 'ps', 'cd', 'core', 'aty'
|
||||
|
||||
Config.Minigames = {
|
||||
@@ -34,304 +28,34 @@ Config.Minigames = {
|
||||
glpath = {gridSize = 19, lives = 3, timelimit = 10000},
|
||||
glspot = {gridSize = 6, timeLimit = 999999, charSet = "alphabet", required = 10},
|
||||
glmath = {timeLimit = 300000},
|
||||
|
||||
}
|
||||
Config.minigametype = 'ox' -- look above for options or choose none if you dont want any minigames
|
||||
Config.minigametype = 'ps_circle' -- look above for options or choose none if you dont want any minigames
|
||||
|
||||
------------- you can either set a gang or leave it blank, if blank it will autopopulate data to not require it :)
|
||||
------------- Cocaine -- new animations require to be in a certain spot or they get fucky. uses bob74 ipl if you turn Config.FancyCokeAnims you can put it anywhere :)
|
||||
Config.FancyCokeAnims = true -- if you want multi location this needs to be false
|
||||
|
||||
Config.CokeTeleIn = vector3(198.16, -1276.92, 29.33)-- where you target to go inside
|
||||
|
||||
Config.CokeTeleOut = vector3(1088.81, -3187.57, -38.99) -- where you target to leave
|
||||
|
||||
Config.MakePowder = { -- where you chop your coca leaves to make powder
|
||||
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(1090.15, -3199.5, -39.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(1093.09, -3199.53, -39.05), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
Config.CuttingCoke = { -- only active if Config.FancyCokeAnims = false
|
||||
{loc = vector3(1095.61, -3195.62, -39.13), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
Config.BaggingCoke = { -- only active if Config.FancyCokeAnims = false
|
||||
{loc = vector3(1100.3, -3199.42, -39.19), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
---------------- Crack locations
|
||||
Config.makecrack = { -- make crack with baking soda with cut coke 1-3
|
||||
{loc = vector3(2434.07, 4969.39, 42.35), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
Config.Drugs = { -- want a drug turn on? keep it true, want it turned off, mark it false
|
||||
cocaine = true,
|
||||
consumables = true,
|
||||
cornerselling = true,
|
||||
crack = true,
|
||||
deliveries = true,
|
||||
heroin = true,
|
||||
lean = true,
|
||||
lsd = true,
|
||||
mescaline = true,
|
||||
meth = true,
|
||||
oxyruns = true,
|
||||
pharma = true,
|
||||
shrooms = true,
|
||||
TravellingMerchant = true,
|
||||
weed = true,
|
||||
wholesale = false,
|
||||
xtc = true,
|
||||
}
|
||||
|
||||
Config.bagcrack = { --- bag crack 1-3 stages
|
||||
{loc = vector3(2435.85, 4965.3, 42.35), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
Config.Bzz = { -- if you have BZZZ props for these turn it on if you want
|
||||
cocaine = false,
|
||||
heroin =false,
|
||||
shrooms = false,
|
||||
weed = false,
|
||||
|
||||
}
|
||||
------------------------- LSD Locations
|
||||
Config.lysergicacid = { -- get lysergic acid
|
||||
{loc = vector3(-1381.21, -327.75, 39.85), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(2405.53, 5008.39, 46.02), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.diethylamide = { -- get diethylamide
|
||||
{loc = vector3(-1371.71, -316.02, 39.53), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(2408.38, 5011.18, 46.08), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.gettabs = { -- buy tab paper
|
||||
{loc = vector3(-1370.77, -314.51, 39.58), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
{loc = vector3(2409.59, 5012.45, 46.09), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.buylsdlabkit = vector4(2598.47, 5033.06, 105.86, 283.51)-- buy lab kit
|
||||
Config.tabcost = 100 -- price per piece of tab paper event does 10 at a time
|
||||
Config.lsdlabkitcost = 10000 -- price of the lsd lab kit
|
||||
------------------------- Heroin Locations
|
||||
|
||||
Config.dryplant = { -- turn resin into powder
|
||||
{loc = vector3(-1353.77, -335.58, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.cutheroinone = { -- cut heroin stage 1-3 with baking soda
|
||||
{loc = vector3(-1360.14, -337.03, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.fillneedle = { -- fill needles with heroin
|
||||
{loc = vector3(-1366.32, -334.40, 44.44), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.buyheroinlabkit = vector4(-1358.77, -339.12, 43.92, 302.13) -- buy heroin lab kit
|
||||
Config.heroinlabkitprice = 10000 -- price of the lsd lab kit
|
||||
|
||||
------------ XTC
|
||||
Config.isosafrole = { -- where to steal isosafrole
|
||||
{loc = vector3(844.39, -902.92, 25.42), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.mdp2p = { -- where to steal mdp2p
|
||||
{loc = vector3(844.4, -898.79, 25.23), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.rawxtcloc = { -- where to combine the 2 ingridents to make raw xtc
|
||||
{loc = vector3(844.71, -910.33, 25.37), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.stamp = { -- where to stamp pills
|
||||
{loc = vector3(844.71, -900.56, 25.43), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.buypress = vector3(845.82, -884.79, 25.18)-- Where you buy your presses
|
||||
|
||||
----- mescaline
|
||||
Config.DryOut = vector3(2638.22, 4237.93, 44.78) -- Place to dry out mescaline into usuable drug
|
||||
Config.Badtrip = 20 -- number means % chance to spawn a clone that chases and attacks while on mescaline
|
||||
|
||||
|
||||
-------------- lean
|
||||
Config.SyrupVendor = vector4(365.21, -578.77, 39.30, 347.23) -- where the mission ped starts
|
||||
|
||||
Config.StartLoc = {
|
||||
vector3(-2307.22, 434.77, 174.47), -- where the truck spawns
|
||||
vector3(614.75, 1786.26, 199.39),
|
||||
vector3(-224.89, 6388.32, 31.59)
|
||||
}
|
||||
|
||||
---------- Pharma
|
||||
|
||||
Config.FillPrescription = {---------- this is where you want people to take their prescription to get a bottle of pills. They use bottle to get a random amount of prescription pills
|
||||
{loc = vector3(2432.89, 4252.2, 36.35), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
Config.PharmaJob = "ems" -- what TYPE role you need to be on to get the command
|
||||
-------------- weed
|
||||
Config.Teleout = vector3(1066.31, -3183.36, -39.16) -- where you target to tele in
|
||||
Config.Telein = vector3(244.74, 374.54, 105.74) -- where you target to tele out
|
||||
Config.MakeButter = vector3(1045.48, -3198.49, -38.22) -- where you make cannabutter and baked edibles
|
||||
Config.MakeOil = vector3(1038.90, -3198.66, -38.17) -- where you make shatter
|
||||
Config.WeedSaleman = vector4(1030.77, -3203.18, -38.2, 262.37)
|
||||
|
||||
Config.WeedDry = { -- where you dry leaves
|
||||
{loc = vector3(1043.0, -3191.59, -38.39),},
|
||||
{loc = vector3(1041.0, -3191.59, -38.39),},
|
||||
{loc = vector3(1045.0, -3191.59, -38.39),},
|
||||
{loc = vector3(1039.0, -3191.59, -38.39),},
|
||||
}
|
||||
|
||||
Config.Joblock = false -- if you want weed to be a job
|
||||
Config.weedjob = "" -- what the job name is
|
||||
|
||||
----------------- Wholesale
|
||||
Config.SuccessfulChance = 90 --- this is the chance of a Success wholesale 1-100
|
||||
Config.AlertPoliceWholesale = 90 -- 1-100 of how often it will alert police
|
||||
Config.WholesaleTimeout = 600 -- time in seconds to get to the location
|
||||
Config.PoliceCount = 0 -- Amount of police required
|
||||
Config.Wcoke = { min = 20, max = 60} -- pricings per item
|
||||
Config.Wcrack = { min = 20, max = 60} -- pricings per item
|
||||
Config.Wlsd = { min = 20, max = 60} -- pricings per item
|
||||
Config.WXTC = { min = 20, max = 60} -- pricings per item
|
||||
|
||||
|
||||
--- travelling merchant
|
||||
|
||||
Config.Travellingmerchant = { ------------ these are the random locations the merchant can spawn on script start. whatever you want for the merchant is in Config.Items right below
|
||||
vector4(-119.66, -977.43, 304.25, 88.21),
|
||||
vector4(-1522.93, 1476.01, 111.45, 41.25),
|
||||
vector4(-3278.98, 973.38, 5.35, 101.53),
|
||||
}
|
||||
|
||||
--------------------------------------- oxy runs
|
||||
---- How oxyruns work. You pay for a truck, you get in it and it gives a route. There is a 20% chance that the car will be "hot" and you have to ditch it. No Routes will spawn if that pops up
|
||||
----- when you get to the drop off point third eye the truck. You will carry a box to the ped. He will give you cash, some oxy and maybe a random item. Rinse and repeat
|
||||
|
||||
|
||||
Config.truckspawn = vector4(1450.87, -1482.13, 63.22, 69.95) --- where the truck will spawn when you pay for it
|
||||
Config.Payfortruck = vector3(1437.64, -1491.91, 63.62) --- where you pay for the truck
|
||||
Config.TruckPrice = 500 -- amount the truck will cost to rent
|
||||
Config.OxyRunCompleteCash = 200 -- base price you get for completeing a run. 50% if the car needs to be ditched
|
||||
Config.OxyRunDitchChance = 20 -- % of a fail mission and having to ditch the car and not get a new order
|
||||
Config.OxyItemChance = 50 -- chance to recieve an item from the OxyRandItems list below
|
||||
Config.OxyItemAmount = 1 -- amount of the item you recieve when you get an item from OxyRandItems
|
||||
Config.PoliceAlertOxy = 90 -- This is a % out of 100 to alert police
|
||||
|
||||
Config.oxylocations = { -- These are different locations where a ped spawns.
|
||||
vector4(-2352.32, 266.78, 165.3, 23.46),
|
||||
vector4(-1467.49, 874.01, 183.59, 298.45),
|
||||
vector4(-856.71, 874.26, 202.85, 205.3),
|
||||
vector4(950.58, -128.49, 74.42, 205.3),
|
||||
vector4(1152.71, -328.43, 69.21, 205.3),
|
||||
vector4(112.66, -1955.67, 20.75, 37.94),
|
||||
vector4(-544.4, -1684.8, 19.89, 252.07),
|
||||
vector4(-1185.02, -1805.4, 3.91, 184.83),
|
||||
vector4(-1641.4, -981.99, 7.58, 35.38),
|
||||
vector4(-1827.93, 782.36, 138.29, 219.99),
|
||||
vector4(-320.84, 2818.73, 59.45, 337.22),
|
||||
vector4(474.88, 2609.56, 44.48, 357.0),
|
||||
}
|
||||
|
||||
Config.OxyRandItems = { -- random items you get for completing the mission
|
||||
"oxy",
|
||||
"lockpick",
|
||||
"cryptostick",
|
||||
}
|
||||
|
||||
|
||||
---------------------- Meth Config
|
||||
Config.MethTeleIn = vector3(-2222.04, 303.99, 174.6) -- where you target to tele in
|
||||
Config.MethTeleOut = vector3(996.91, -3200.83, -36.39) -- where you target to tele out
|
||||
Config.MethHeist = false
|
||||
Config.MethHeistStart = vector3(-1102.93, -3066.76, 14.00) -- where you get the mission to get ingridients if meth heist = true
|
||||
Config.MethEph = {
|
||||
{loc = vector3(3559.86, 3673.9, 28.13), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
Config.Methace = {
|
||||
{loc = vector3(3535.41, 3661.05, 28.12), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
|
||||
}
|
||||
|
||||
----------------------------- these are the locations where props will be spawned to be picked
|
||||
Config.CocaPlant = {
|
||||
{ location = vector3(1474.25, -2643.87, 42.88), heading = 334.49, model = "prop_plant_01a" },
|
||||
{ location = vector3(1472.35, -2649.3, 41.87), heading = 329.56, model = "prop_plant_01a" },
|
||||
{ location = vector3(1475.7, -2652.9, 40.8), heading = 25.16, model = "prop_plant_01a" },
|
||||
{ location = vector3(1481.0, -2654.99, 39.86), heading = 21.52, model = "prop_plant_01a" },
|
||||
{ location = vector3(1480.9, -2660.63, 38.68), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1477.18, -2666.53, 38.19), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1477.58, -2670.82, 37.73), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1476.56, -2675.82, 37.46), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1474.8, -2680.19, 37.03), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1471.52, -2685.0, 36.82), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1462.82, -2676.58, 38.83), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1461.31, -2667.74, 39.67), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1456.3, -2647.61, 43.39), heading = 202.97, model = "prop_plant_01a" },
|
||||
{ location = vector3(1453.65, -2641.56, 45.0), heading = 202.97, model = "prop_plant_01a" },
|
||||
}
|
||||
|
||||
Config.WeedPlant = {
|
||||
{ location = vector3(1049.63, -3202.12, -39.15), heading = 334.49, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.85, -3202.15, -39.15), heading = 329.56, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1052.01, -3202.22, -39.13), heading = 25.16, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1052.99, -3202.15, -39.15), heading = 21.52, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1053.08, -3201.11, -39.13), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1052.91, -3199.99, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1053.02, -3198.97, -39.11), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1051.95, -3198.93, -39.11), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1051.96, -3199.86, -39.12), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1051.93, -3201.17, -39.12), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.98, -3201.13, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.89, -3200.07, -39.12), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.89, -3198.95, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1049.72, -3198.95, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1049.98, -3200.1, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1049.82, -3201.01, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1053.07, -3194.51, -39.15), heading = 334.49, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1052.97, -3195.55, -39.15), heading = 329.56, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1052.82, -3196.58, -39.15), heading = 25.16, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1052.94, -3197.59, -39.15), heading = 21.52, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1051.92, -3197.54, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1051.88, -3196.61, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1051.82, -3195.52, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1051.95, -3194.38, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.88, -3194.31, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.78, -3195.29, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.76, -3196.49, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1050.77, -3197.62, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1049.64, -3197.61, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1049.64, -3196.59, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1049.62, -3195.51, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
{ location = vector3(1049.66, -3194.36, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
|
||||
}
|
||||
|
||||
|
||||
Config.PoppyPlants = {
|
||||
{ location = vector3(-2251.3, -99.18, 100.11), heading = 334.49, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2249.63, -92.97, 101.8), heading = 329.56, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2245.57, -85.12, 104.5), heading = 25.16, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2240.81, -88.48, 105.88), heading = 21.52, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2240.87, -93.36, 103.88), heading = 334.49, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2236.0, -95.34, 102.55), heading = 329.56, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2240.6, -100.01, 100.49), heading = 25.16, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2246.29, -104.92, 99.27), heading = 21.52, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2243.64, -107.99, 96.71), heading = 334.49, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2254.22, -108.76, 97.25), heading = 329.56, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2247.33, -108.92, 97.70), heading = 25.16, model = "prop_plant_01b"},
|
||||
{ location = vector3(-2250.96, -111.22, 97.50), heading = 21.52, model = "prop_plant_01b"},
|
||||
{ location = vector3(465.95, -1021.32, 31.78), heading = 21.52, model = "prop_plant_01b"},
|
||||
}
|
||||
|
||||
Config.shrooms = {
|
||||
{ location = vector3(2185.14, 5183.81, 57.48), heading = 334.49, model = "mushroom"},
|
||||
{ location = vector3(2174.45, 5187.85, 57.43), heading = 329.56, model = "mushroom"},
|
||||
{ location = vector3(2166.22, 5196.56, 58.0), heading = 25.16, model = "mushroom"},
|
||||
{ location = vector3(2166.82, 5204.83, 58.63), heading = 21.52, model = "mushroom"},
|
||||
{ location = vector3(2174.84, 5205.82, 59.19), heading = 334.49, model = "mushroom"},
|
||||
{ location = vector3(2184.46, 5201.23, 59.2), heading = 329.56, model = "mushroom"},
|
||||
{ location = vector3(2192.45, 5194.89, 58.86), heading = 25.16, model = "mushroom"},
|
||||
{ location = vector3(2207.53, 5187.81, 58.95), heading = 21.52, model = "mushroom"},
|
||||
{ location = vector3(2213.46, 5191.11, 59.81), heading = 334.49, model = "mushroom"},
|
||||
{ location = vector3(2218.31, 5180.0, 58.18), heading = 329.56, model = "mushroom"},
|
||||
{ location = vector3(2212.75, 5172.35, 57.2), heading = 25.16, model = "mushroom"},
|
||||
{ location = vector3(2208.56, 5167.06, 56.34), heading = 21.52, model = "mushroom"},
|
||||
{ location = vector3(2196.9, 5158.59, 54.84), heading = 21.52, model = "mushroom"},
|
||||
{ location = vector3(2191.62, 5174.91, 56.68), heading = 21.52, model = "mushroom"},
|
||||
{ location = vector3(2190.18, 5182.54, 57.47), heading = 21.52, model = "mushroom"},
|
||||
{ location = vector3(2185.85, 5190.49, 58.1), heading = 21.52, model = "mushroom"},
|
||||
{ location = vector3(2179.95, 5194.19, 58.26), heading = 21.52, model = "mushroom"},
|
||||
}
|
||||
|
||||
Config.Mescaline = {
|
||||
{ location = vector3(2598.73, 4207.89, 41.02), heading = 334.49, model = "prop_cactus_03"},
|
||||
{ location = vector3(2601.46, 4199.34, 40.62), heading = 329.56, model = "prop_cactus_03"},
|
||||
{ location = vector3(2611.63, 4194.18, 41.18), heading = 25.16, model = "prop_cactus_03"},
|
||||
{ location = vector3(2620.18, 4202.69, 41.5), heading = 21.52, model = "prop_cactus_03"},
|
||||
{ location = vector3(2624.26, 4211.75, 42.34), heading = 334.49, model = "prop_cactus_03"},
|
||||
{ location = vector3(2635.21, 4207.5, 42.49), heading = 329.56, model = "prop_cactus_03"},
|
||||
{ location = vector3(2644.97, 4193.51, 42.11), heading = 25.16, model = "prop_cactus_03"},
|
||||
{ location = vector3(2654.21, 4195.31, 41.23), heading = 21.52, model = "prop_cactus_03"},
|
||||
{ location = vector3(2653.32, 4206.49, 41.62), heading = 334.49, model = "prop_cactus_03"},
|
||||
{ location = vector3(2647.45, 4213.94, 42.49), heading = 329.56, model = "prop_cactus_03"},
|
||||
{ location = vector3(2636.3, 4218.49, 43.03), heading = 25.16, model = "prop_cactus_03"},
|
||||
{ location = vector3(2627.37, 4223.2, 42.88), heading = 21.52, model = "prop_cactus_03"},
|
||||
{ location = vector3(2617.86, 4230.38, 42.63), heading = 21.52, model = "prop_cactus_03"},
|
||||
{ location = vector3(2609.8, 4222.12, 41.19), heading = 21.52, model = "prop_cactus_03"},
|
||||
{ location = vector3(2602.96, 4194.05, 41.01), heading = 21.52, model = "prop_cactus_03"},
|
||||
{ location = vector3(2614.39, 4188.3, 41.68), heading = 21.52, model = "prop_cactus_03"},
|
||||
{ location = vector3(2623.82, 4189.97, 41.44), heading = 21.52, model = "prop_cactus_03"},
|
||||
}
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
Consumables = {}
|
||||
Consumables.defaulttime = 4000
|
||||
Consumables.defaultanim = 'pflag2'
|
||||
Consumables.defaultprogresstext = 'Consuming ' -- it will always show the label of the item being used after what you put here, make sure to keep the space at the end :)
|
||||
Consumables.defaultstatval = 0
|
||||
--[[
|
||||
effect options
|
||||
alien
|
||||
ecstacy
|
||||
meth
|
||||
coke
|
||||
trevor
|
||||
none
|
||||
]]
|
||||
|
||||
--[[
|
||||
add = {}
|
||||
health = number -- amount of health to give
|
||||
stress = number -- number of stress to give
|
||||
speed = number -- number of seconds you a fast boi
|
||||
hunger = number -- number of hunger to fill
|
||||
thirst = number -- same shit
|
||||
strength = number -- how long you are strong boi
|
||||
|
||||
]]
|
||||
Consumables.Items = {
|
||||
-- meth
|
||||
methbags = { time = 4000, effect = 'meth', anim = "smoke", progressbartext = "Injesting",
|
||||
add = {health = -20, stress = -10, speed = 40, strength = 10, thirst = -30}},
|
||||
cokebaggy = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
cokebaggystagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
cokebaggystagethree = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
-- heroin
|
||||
heroin_ready = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
heroin_readystagetwo = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
heroin_readystagethree = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
-- crack
|
||||
baggedcracked = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
baggedcrackedstagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
|
||||
baggedcrackedstagethree = { anim = 'smell', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
-- xtc
|
||||
white_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboy2s = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
white_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
blue_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
red_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
orange_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
|
||||
-- weed
|
||||
specialbrownie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
specialcookie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
specialchocolate = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
specialmuffin = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
|
||||
blunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
dextroblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
leanblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
chewyblunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
|
||||
-- lean
|
||||
cupofdextro = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
|
||||
cupoflean = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
|
||||
-- lsd
|
||||
smiley_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
wildcherry_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
yinyang_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
pineapple_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
bart_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
gratefuldead_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
|
||||
|
||||
-- pharma
|
||||
vicodin = { anim = 'pill', effect = 'none', add = { health = 20 }},
|
||||
adderal = { anim = 'pill', effect = 'none', add = { stress = -20 }},
|
||||
morphine = { anim = 'pill', effect = 'none', add = { health = 40 }},
|
||||
xanax = { anim = 'pill', effect = 'none', add = { stress = -40 }},
|
||||
}
|
||||
@@ -1,292 +0,0 @@
|
||||
Lang = {}
|
||||
|
||||
Lang.targets = {
|
||||
coke = {
|
||||
pick = 'Pick Cocaine',
|
||||
cut = 'Cut Cocaine',
|
||||
bag = 'Bag Cocaine',
|
||||
enter = 'Enter Building',
|
||||
exit = 'Exit Building',
|
||||
chop = 'Chop Coca Leaves',
|
||||
|
||||
},
|
||||
CornerSell = {
|
||||
sell = 'Sell %s Of %s For $%s',
|
||||
deny = 'Deny Price'
|
||||
},
|
||||
crack = {
|
||||
cook = 'Cook Crack',
|
||||
bag = 'Bag Crack'
|
||||
},
|
||||
Delivery = {
|
||||
Deliver = 'Deliver For %s',
|
||||
open = 'Open %s Shop',
|
||||
hand = 'Hand Over'
|
||||
},
|
||||
heroin = {
|
||||
pick = 'Pick Poppies',
|
||||
up = 'Pick Up Table',
|
||||
dry = 'Dry Poppies',
|
||||
cut = 'Cut Heroin',
|
||||
cook = 'Cook Heroin',
|
||||
kit = 'Buy Heroin Lab Kit',
|
||||
clean = 'Clean Table',
|
||||
fill = 'Fill Syringe',
|
||||
vial = 'Make Vial',
|
||||
},
|
||||
lean = {
|
||||
git = 'Get Task'
|
||||
},
|
||||
lsd = {
|
||||
buy = 'Buy LSD Lab Kit',
|
||||
heat = 'Heat Liquid',
|
||||
refine = 'Refine Quality',
|
||||
paper = 'Make Tab Paper',
|
||||
back = 'Pick Up Lab Kit',
|
||||
dab = 'Dab LSD on sheets',
|
||||
clean = 'Clean Table',
|
||||
lys = 'Steal Lysergic Acid',
|
||||
die = 'Steal Diethylamide',
|
||||
buyt = 'Buy Tabs',
|
||||
},
|
||||
mescaline = {
|
||||
pick = 'Pick Cactus',
|
||||
dry = 'Dry Out Cactus',
|
||||
},
|
||||
meth = {
|
||||
bag = 'Bag Up Meth',
|
||||
enter = 'Enter Buidling',
|
||||
exit = 'Exit Building',
|
||||
cook = 'Cook Meth',
|
||||
tray = 'Grab Tray',
|
||||
box = 'Box Up Meth',
|
||||
adjust = 'Adjust Temperature',
|
||||
eph = 'Steal Ephedrine',
|
||||
ace = 'Steal Acetone',
|
||||
mission = 'Get Mission',
|
||||
stealfromcar = 'Steal From Car',
|
||||
},
|
||||
oxy = {
|
||||
pack = 'Get Oxy Package',
|
||||
talk = 'Talk To Buyer',
|
||||
pay = 'Pay For Truck',
|
||||
},
|
||||
pha = {
|
||||
fill = 'Fill Prescription',
|
||||
},
|
||||
shrooms = {
|
||||
pick = 'Pick Shrooms',
|
||||
},
|
||||
travel = {
|
||||
travel = 'Open Travelling Merchant',
|
||||
},
|
||||
xtc = {
|
||||
iso = 'Steal Isosafrole',
|
||||
mdp = 'Steal MDP2P',
|
||||
raw = 'Make Raw XTC',
|
||||
press = 'Buy XTC Press',
|
||||
stamp = 'Stamp Pills',
|
||||
make = 'Make XTC',
|
||||
pick = 'Pick Up Press',
|
||||
},
|
||||
weed = {
|
||||
pick = 'Pick Weed',
|
||||
dry = 'Dry Weed',
|
||||
dpick = 'Pick Dried Weed',
|
||||
butt = 'Open Edible Menu',
|
||||
oil = 'Make Oil'
|
||||
},
|
||||
Wholesale = {
|
||||
talk = 'Talk To Buyer'
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
Lang.Coke = {
|
||||
-- client side progressbars
|
||||
picking = "Picking Leaves",
|
||||
makepow = 'Chopping Leaves Into A Powder',
|
||||
cutting = 'Cutting Coke With Baking Soda',
|
||||
bagging = "Bilbo Baggins This Bitch",
|
||||
-- end progressbars
|
||||
cut = "You Cut Some Coke",
|
||||
nocutcoke = "You Cant Cut Coke With No Coke Idiot",
|
||||
bagcoke = "You Bagged Up Coke",
|
||||
nobagcoke = "You Cant Bag Up Coke Without Coke Idiot",
|
||||
}
|
||||
Lang.Crack = {
|
||||
--client side
|
||||
cookcrack = "Cooking Some Crack",
|
||||
bagcrack = 'Bilbo Baggin This Bitch',
|
||||
-- server
|
||||
makecrack = 'Nice Crack',
|
||||
nocoke = 'You Cant Make This Without Coke'
|
||||
}
|
||||
Lang.Cornerselling = {
|
||||
-- client side notifys
|
||||
inveh = 'STRANGER DANGER, I WONT GET IN THE CAR WITH YOU',
|
||||
toofar = "To Far From Your Corner Homie",
|
||||
selling = 'Selling %s For $%s',
|
||||
deny = "Fuck That Offer",
|
||||
start = "Get That Paper",
|
||||
stop = "Lazy Ass Cant Even Sell Drugs",
|
||||
nodrugs = "What You Gonna sell? Air?",
|
||||
notcops = "Not Enough Cops",
|
||||
no = 'You Cant Sell Drugs Here!',
|
||||
-- end client side notifys
|
||||
-- progressbars
|
||||
sell = "Selling Drugs",
|
||||
}
|
||||
Lang.Delivery = {
|
||||
-- client side
|
||||
emailn = 'Not A Drug Dealer',
|
||||
emailsub = 'Hurry Up And Get The Package To The Buyer',
|
||||
emailcon = 'I Swear To God If It Doesnt Get There I Will Tell Your Mom You Said Fuck Just Bring %s Of %s',
|
||||
search = "Searching For A Delivery ...",
|
||||
none = "Nothing Close By",
|
||||
busy = "You Havent Even Finished The One I Told You Too",
|
||||
found = "Marked On Your Map",
|
||||
already = "Already Deliverying",
|
||||
checkrep = "Current Dealer Rep: ",
|
||||
-- progressbars
|
||||
pack = 'Handing Off Package',
|
||||
-- end client side
|
||||
}
|
||||
|
||||
Lang.Heroin = {
|
||||
--client
|
||||
pick = " Picking Poppies Up",
|
||||
tableout = 'You Already Have A Table Out',
|
||||
dryout = "Drying Out Poppies",
|
||||
cutting = "Cutting Heroin With Baking Soda",
|
||||
secret = "SHHHHHHHHH",
|
||||
table = "Placing Table Down",
|
||||
success = "Heated Heroin Properly",
|
||||
clean = 'Cleaning Heroin Table',
|
||||
needles = 'Filling Syringe',
|
||||
pickup = 'Picking Up The Heroin Table',
|
||||
--
|
||||
cutheroin = 'You Made Some Cut Heroin',
|
||||
noheroin = "How Can You Cut Heroin Without Heroin Idiot",
|
||||
vial = 'You Made A Vial Of Heroin',
|
||||
novial = "How Can You Make Heroin Vials Without Heroin Idiot",
|
||||
fail = 'You Over Heated Them Idiot',
|
||||
fill = 'Filled The Syringe',
|
||||
nofill = 'How Are You Going To Fill Needles Of Heroin Without Heroin'
|
||||
}
|
||||
Lang.Lean = {
|
||||
marked = ' Car Has Been Marked On Your Map',
|
||||
lean = 'You Got Purple Lean',
|
||||
dextro = ' You Got Red Dextro',
|
||||
act = 'You Already Have A Lean Task',
|
||||
}
|
||||
|
||||
Lang.lsd = {
|
||||
steallys = 'Stealing Lysergic Acid',
|
||||
stealdie = 'Stealing Lysergic Acid',
|
||||
tableout = 'You Already Have A Table Out',
|
||||
tablepack = 'Packing Table Up',
|
||||
heat = 'Heating Up Liquids',
|
||||
clean = 'Cleaning The Table',
|
||||
refine = 'Refining The Quality',
|
||||
dip = 'Dipping LSD On The Paper',
|
||||
buypaper = 'Buying Tab Paper',
|
||||
buykit = 'Buying Lab Kit',
|
||||
place = 'Placing Table Down',
|
||||
hav = 'You Already Have A Table',
|
||||
-- server
|
||||
lys = 'You Got Lysergic Acid',
|
||||
die = 'You Got Diethylamide',
|
||||
cleaned = 'You Cleaned It Perfectly',
|
||||
madelsd = 'You Made LSD!',
|
||||
failed = 'You Over Heated Them Idiot',
|
||||
refined = 'You Refined Them!',
|
||||
broke = 'Your Broke Ass Cant Afford these!',
|
||||
novial = 'No LSD Vials Idiot',
|
||||
}
|
||||
Lang.mescaline = {
|
||||
pick = "Picking Cactus",
|
||||
dry = 'Drying Out Cactus',
|
||||
nocactus = 'No Cactus Bulbs',
|
||||
eat = 'eating mescaline'
|
||||
}
|
||||
|
||||
Lang.meth = {
|
||||
inside = 'Stuff Inside Already',
|
||||
increaseheat = 'Increasing Heat',
|
||||
mission = 'Car Has Been Marked On Your Map',
|
||||
ace = 'You Got Some Acetone',
|
||||
eph = 'You Got Some Ephedrine',
|
||||
mix = 'Adding Things To The Mix',
|
||||
nobag = 'No Bags',
|
||||
act = 'You Already Have A Meth Task',
|
||||
}
|
||||
|
||||
Lang.oxy = {
|
||||
truck = 'Your Truck Is Here',
|
||||
cantcarry = 'You Aint That Strong, You Can Only Carry One',
|
||||
hand = 'Handing Over oxy',
|
||||
empty = 'You Cant Be Empty Handed Idiot',
|
||||
broke = 'Your Broke Ass Cant Afford This',
|
||||
hot = 'Car Is Hot Dump It Now',
|
||||
next = 'Get To the Next Location'
|
||||
}
|
||||
|
||||
Lang.Pharma = {
|
||||
notems = 'You Are Not A Medical Person',
|
||||
write = 'Writing Prescription',
|
||||
fill = 'Filling Prescription',
|
||||
open = 'Opening Bottle',
|
||||
pills = 'You Got Some Pills!',
|
||||
no = 'You Dont Have A Prescription'
|
||||
}
|
||||
|
||||
Lang.Shrooms = {
|
||||
pick = 'Picking Shrooms',
|
||||
eat = 'Eating Shrooms',
|
||||
trip = 'Have A Good Trip!'
|
||||
}
|
||||
|
||||
Lang.Weed = {
|
||||
pick = 'Harvesting Weed',
|
||||
busy = 'Already Drying One Out',
|
||||
canna = 'Making Canna-butter',
|
||||
brown = 'Making Special Brownies',
|
||||
cook = 'Making Special Cookies',
|
||||
Choc = 'Making Special Chocolate',
|
||||
muff = 'Making Special Muffin',
|
||||
stovehot = 'Stove Is Too Hot Wait 30 Seconds To Cool Down',
|
||||
shat = 'Making Shatter',
|
||||
roll = 'Rolling Blunts',
|
||||
wait = 'Wait A Little Bit For To Drive',
|
||||
take = 'Taking Down The Weed',
|
||||
--
|
||||
nodry = 'You Need Wet Cannabis To Dry',
|
||||
noweed = 'Cant Roll A Blunt With Air',
|
||||
noshat = 'You Need Shatter To Do A Dab',
|
||||
notorch = 'You Need A butane Torch'
|
||||
}
|
||||
|
||||
Lang.xtc = {
|
||||
out = 'You Have A Press Out Already',
|
||||
pressing = 'Pressing Pills',
|
||||
raw = 'Making Raw XTC',
|
||||
mdp2p = 'Stealing MDP2P',
|
||||
iso = 'Stealing Isosafrole',
|
||||
fail = 'Dude Its A Circle Not Rocket Science',
|
||||
pickup = 'Picking Up The Press',
|
||||
stamp = 'Stamping %s Pills',
|
||||
buyp = "Buying Press",
|
||||
--
|
||||
cash = 'I need 20k In Cash',
|
||||
press = {
|
||||
title = {single = 'Single Press', dual = 'Dual Press', triple = 'Triple Press', quad = 'Quad Press'},
|
||||
des = {single ='Buy a single press for 20k', dual = '20 of each unstamped single stack pill and your single press ',
|
||||
triple = '50 of each unstamped dual stack pill and your dual press ', quad = '150 of each unstamped Triple stack pill and your triple press'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Lang.Wholesale = {
|
||||
al = 'Already Called Someone!'
|
||||
}
|
||||
+2
-225
@@ -1,233 +1,10 @@
|
||||
QBConfig = {}
|
||||
----------- qb-drugs update built in here below
|
||||
----------- Everything is now a target and not displaytext. Dealers are no longer just doors, they will spawn peds where you place your dealer. This is a literally qb-drugs with SLIGHT edits. mainly added peds for deliveries, made everything a target
|
||||
------------ and changed the range a ped will walk up to you to be a bigger radius.
|
||||
|
||||
QBConfig.MinimumDrugSalePolice = 0
|
||||
QBConfig.MarkedBills = true -- if false on both options below then it auto converts selling to give cash
|
||||
QBConfig.CustomDirtyMoney = false
|
||||
QBConfig.CustomDirtyMoneyitem = ''
|
||||
|
||||
QBConfig.DrugsPrice = {
|
||||
-- base qb
|
||||
["weed_white-widow"] = {rep = 1,min = 15, max = 24 },
|
||||
["weed_og-kush"] = {rep = 1,min = 15, max = 28 },
|
||||
["weed_skunk"] = {rep = 1,min = 15, max = 31 },
|
||||
["weed_amnesia"] = {rep = 1,min = 18, max = 34 },
|
||||
["weed_purple-haze"] = {rep = 1,min = 18, max = 37},
|
||||
["weed_ak47"] = {rep = 1,min = 18, max = 40},
|
||||
["crack_baggy"] = {rep = 1,min = 18, max = 34},
|
||||
["cokebaggy"] = {rep = 1,min = 18, max = 37},
|
||||
-- cokerep = 1,
|
||||
["cokebaggystagetwo"] = {rep = 1,min = 18, max = 40},
|
||||
["cokebaggystagethree"] = {rep = 1,min = 18, max = 40},
|
||||
-- heroin rep = 1,
|
||||
["heroin_ready"] = {rep = 1,min = 18, max = 40},
|
||||
["heroin_readystagetwo"] = {rep = 1,min = 18, max = 40},
|
||||
["heroin_readystagethree"] = {rep = 1,min = 18, max = 40},
|
||||
-- crackrep = 1,
|
||||
["baggedcracked"] = {rep = 1,min = 18, max = 40},
|
||||
["baggedcrackedstagetwo"] = {rep = 1,min = 18, max = 40},
|
||||
["baggedcrackedstagethree"] = {rep = 1,min = 18, max = 40},
|
||||
-- xtc rep = 1,
|
||||
["white_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["white_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_playboys4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_aliens4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_pl4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_trolls4"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["white_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["blue_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["red_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats2"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats3"] = {rep = 1,min = 18, max = 40},
|
||||
["orange_cats4"] = {rep = 1,min = 18, max = 40},
|
||||
-- weed stuffrep = 1,
|
||||
["blunts"] = {rep = 1,min = 18, max = 40},
|
||||
["leanblunts"] = {rep = 1,min = 18, max = 40},
|
||||
["dextroblunts"] = {rep = 1,min = 18, max = 40},
|
||||
["chewyblunt"] = {rep = 1,min = 18, max = 40},
|
||||
["blunt"] = {rep = 1,min = 18, max = 40},
|
||||
["specialchocolate"] = {rep = 1,min = 18, max = 40},
|
||||
["specialbrownie"] = {rep = 1,min = 18, max = 40},
|
||||
["specialcookie"] = {rep = 1,min = 18, max = 40},
|
||||
["specialmuffin"] = {rep = 1,min = 18, max = 40},
|
||||
["shatter"] = {rep = 1,min = 18, max = 40},
|
||||
["ciggie"] = {rep = 1,min = 18, max = 40},
|
||||
-- methrep = 1,
|
||||
["methbags"] = {rep = 1,min = 18, max = 40},
|
||||
-- mescalinerep = 1,
|
||||
["driedmescaline"] = {rep = 1,min = 18, max = 40},
|
||||
-- shroomsrep = 1,
|
||||
["shrooms"] = {rep = 1,min = 18, max = 40},
|
||||
-- LSDrep = 1,
|
||||
["gratefuldead_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["bart_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["pineapple_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["yinyang_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["wildcherry_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
["smiley_tabs"] = {rep = 1,min = 18, max = 40},
|
||||
-- lean
|
||||
["cupoflean"] = {rep = 1,min = 18, max = 40},
|
||||
["cupofdextro"] = {rep = 1,min = 18, max = 40},
|
||||
}
|
||||
|
||||
QBConfig.Dealers = {}
|
||||
|
||||
QBConfig.DeliveryItems = {
|
||||
{ item = "weed_brick", minrep = 0, payout = {min = 10, max = 50}},
|
||||
{ item = "coke_brick", minrep = 0, payout = {min = 10, max = 50}},
|
||||
}
|
||||
|
||||
QBConfig.DeliveryLocations = {
|
||||
[1] = { ["label"] = "Pork Factory", ["coords"] = vector3(-296.27, -1300.54, 31.31),},
|
||||
[2] = { ["label"] = "Forum Drive Deli", ["coords"] = vector3(-36.69, -1492.13, 31.22),},
|
||||
[3] = { ["label"] = "Hayes Autos South LS", ["coords"] = vector3(282.55, -1814.39, 27.1),},
|
||||
[4] = { ["label"] = "Grove Street", ["coords"] = vector3(54.55, -1873.15, 22.8),},
|
||||
[5] = { ["label"] = "Port1", ["coords"] = vector3(-269.4, -2437.15, 6.36),},
|
||||
[6] = { ["label"] = "Port2", ["coords"] = vector3(269.16, -3248.54, 5.79),},
|
||||
[7] = { ["label"] = "Port3", ["coords"] = vector3(632.9, -3015.42, 7.34),},
|
||||
[8] = { ["label"] = "Industrial1", ["coords"] = vector3(1049.52, -2427.96, 30.3),},
|
||||
[9] = { ["label"] = "Industrial2", ["coords"] = vector3(853.26, -2207.3, 30.68),},
|
||||
[10] = { ["label"] = "Industrial3", ["coords"] = vector3(903.02, -1721.94, 32.18),},
|
||||
[11] = { ["label"] = "EastLS1", ["coords"] = vector3(1289.33, -1710.47, 55.51),},
|
||||
[12] = { ["label"] = "EastLS2", ["coords"] = vector3(1411.94, -1490.54, 60.66),},
|
||||
[13] = { ["label"] = "Industrial4", ["coords"] = vector3(734.26, -1311.26, 27.01),},
|
||||
[14] = { ["label"] = "Industrial5", ["coords"] = vector3(1231.6, -1083.06, 38.53),},
|
||||
[15] = { ["label"] = "Mirror1", ["coords"] = vector3(1143.55, -1000.19, 45.32),},
|
||||
[16] = { ["label"] = "Mirror2", ["coords"] = vector3(1264.82, -702.87, 64.72),},
|
||||
[17] = { ["label"] = "Mirror3", ["coords"] = vector3(1119.65, -639.76, 56.81),},
|
||||
[18] = { ["label"] = "Mirror4", ["coords"] = vector3(1129.59, -462.59, 66.49),},
|
||||
[19] = { ["label"] = "City1", ["coords"] = vector3(42.8, -811.45, 31.43),},
|
||||
[20] = { ["label"] = "City2", ["coords"] = vector3(-509.48, -1001.66, 23.55),},
|
||||
[21] = { ["label"] = "City3", ["coords"] = vector3(-830.97, -862.41, 20.69),},
|
||||
[22] = { ["label"] = "Vesp1", ["coords"] = vector3(-1320.26, -1177.34, 4.89),},
|
||||
[23] = { ["label"] = "Vesp2", ["coords"] = vector3(-1097.63, -1673.24, 8.4),},
|
||||
[24] = { ["label"] = "Vesp3", ["coords"] = vector3(-1147.61, -1452.1, 4.6),},
|
||||
[25] = { ["label"] = "Vesp4", ["coords"] = vector3(-1241.69, -1208.39, 8.52),},
|
||||
[26] = { ["label"] = "Vesp5", ["coords"] = vector3(-1876.92, -584.44, 11.85),},
|
||||
[27] = { ["label"] = "City4", ["coords"] = vector3(-1303.94, -441.39, 35.22),},
|
||||
[28] = { ["label"] = "City5", ["coords"] = vector3(-1705.48, -433.46, 42.17),},
|
||||
[29] = { ["label"] = "City6", ["coords"] = vector3(-1305.99, 336.35, 65.5),},
|
||||
[30] = { ["label"] = "Vinewood1", ["coords"] = vector3(-741.8, 484.84, 109.47),},
|
||||
[31] = { ["label"] = "Vinewood2", ["coords"] = vector3(-409.57, 341.49, 108.91),},
|
||||
[32] = { ["label"] = "Vinewood3", ["coords"] = vector3(-126.44, 588.18, 204.71),},
|
||||
[33] = { ["label"] = "Vinewood4", ["coords"] = vector3(211.42, -101.42, 73.28),},
|
||||
[34] = { ["label"] = "Vinewood5", ["coords"] = vector3(490.61, -95.04, 66.44),},
|
||||
[35] = { ["label"] = "City7", ["coords"] = vector3(387.19, -993.59, 29.42),},
|
||||
[36] = { ["label"] = "City8", ["coords"] = vector3(-500.47, -712.37, 33.21),},
|
||||
[37] = { ["label"] = "EastHW", ["coords"] = vector3(2572.2, 479.97, 108.68),},
|
||||
[38] = { ["label"] = "Vinewood6", ["coords"] = vector3(-430.1, 1205.41, 325.76),},
|
||||
[39] = { ["label"] = "VinewoodHills1", ["coords"] = vector3(-126.06, 1896.58, 197.33),},
|
||||
[40] = { ["label"] = "VinewoodHills2", ["coords"] = vector3(-2521.08, 2310.31, 33.22),},
|
||||
[41] = { ["label"] = "RedwoodsCons", ["coords"] = vector3(1129.01, 2125.14, 55.55),},
|
||||
[42] = { ["label"] = "RedwoodsFarm", ["coords"] = vector3(1546.64, 2166.56, 78.72),},
|
||||
[43] = { ["label"] = "Harmony1", ["coords"] = vector3(404.34, 2584.54, 43.52),},
|
||||
[44] = { ["label"] = "Harmony2", ["coords"] = vector3(180.15, 2792.99, 45.66),},
|
||||
[45] = { ["label"] = "Harmony3", ["coords"] = vector3(287.67, 2843.89, 44.7),},
|
||||
[46] = { ["label"] = "Sandy1", ["coords"] = vector3(2030.23, 3184.42, 45.13),},
|
||||
[47] = { ["label"] = "Sandy2", ["coords"] = vector3(2175.33, 3321.92, 46.13),},
|
||||
[48] = { ["label"] = "Sandy3", ["coords"] = vector3(2389.61, 3340.98, 47.34),},
|
||||
[49] = { ["label"] = "Sandy4", ["coords"] = vector3(1716.25, 3295.08, 41.26),},
|
||||
[50] = { ["label"] = "Sandy5", ["coords"] = vector3(1779.38, 3640.83, 34.5),},
|
||||
[51] = { ["label"] = "Sandy6", ["coords"] = vector3(1894.59, 3715.34, 32.75),},
|
||||
[52] = { ["label"] = "Sandy7", ["coords"] = vector3(1861.9, 3857.15, 36.27),},
|
||||
[53] = { ["label"] = "Sandy8", ["coords"] = vector3(996.38, 3575.07, 34.61),},
|
||||
[54] = { ["label"] = "Sandy9", ["coords"] = vector3(387.45, 3584.73, 33.29),},
|
||||
[55] = { ["label"] = "Stab1", ["coords"] = vector3(68.08, 3693.22, 40.66),},
|
||||
[56] = { ["label"] = "Stab2", ["coords"] = vector3(15.55, 3688.7, 39.81),},
|
||||
[57] = { ["label"] = "Sandy10", ["coords"] = vector3(2566.59, 4283.34, 41.97),},
|
||||
[58] = { ["label"] = "Grape1", ["coords"] = vector3(2570.82, 4667.95, 34.08),},
|
||||
[59] = { ["label"] = "Grape2", ["coords"] = vector3(2882.05, 4511.72, 48.02),},
|
||||
[60] = { ["label"] = "Grape3", ["coords"] = vector3(2243.78, 5154.02, 57.89),},
|
||||
[61] = { ["label"] = "Grape4", ["coords"] = vector3(1642.91, 4846.08, 45.51),},
|
||||
[62] = { ["label"] = "Grape5", ["coords"] = vector3(1308.87, 4362.17, 41.55),},
|
||||
[63] = { ["label"] = "Paleto1", ["coords"] = vector3(-1090.27, 4940.57, 214.13),},
|
||||
[64] = { ["label"] = "Paleto2", ["coords"] = vector3(-552.37, 5348.37, 74.76),},
|
||||
[65] = { ["label"] = "Paleto3", ["coords"] = vector3(-679.02, 5834.27, 17.33),},
|
||||
[66] = { ["label"] = "Paleto4", ["coords"] = vector3(-481.97, 6276.93, 13.35),},
|
||||
[67] = { ["label"] = "Paleto5", ["coords"] = vector3(-24.92, 6472.6, 31.49),},
|
||||
[68] = { ["label"] = "Paleto6", ["coords"] = vector3(36.03, 6549.18, 31.43),},
|
||||
[69] = { ["label"] = "Paleto6", ["coords"] = vector3(406.08, 6526.43, 27.75),},
|
||||
[70] = { ["label"] = "Paleto7", ["coords"] = vector3(1522.39, 6329.23, 24.61),},
|
||||
[71] = { ["label"] = "Paleto8", ["coords"] = vector3(1741.39, 6419.62, 35.04),},
|
||||
[72] = { ["label"] = "Lighthouse", ["coords"] = vector3(3426.72, 5174.42, 7.4),},
|
||||
[73] = { ["label"] = "EastSandy", ["coords"] = vector3(2525.99, 2586.62, 38.94),},
|
||||
[74] = { ["label"] = "Power Station", ["coords"] = vector3(2696.29, 1664.44, 24.52),},
|
||||
[75] = { ["label"] = "Stripclub", ["coords"] = vector3(106.24, -1280.32, 29.24),},
|
||||
[76] = { ["label"] = "Vinewood Video", ["coords"] = vector3(223.98, 121.53, 102.76),},
|
||||
[77] = { ["label"] = "Taxi", ["coords"] = vector3(882.67, -160.26, 77.11),},
|
||||
[78] = { ["label"] = "Resort", ["coords"] = vector3(-1245.63, 376.21, 75.34),},
|
||||
[79] = { ["label"] = "Bahama Mamas", ["coords"] = vector3(-1383.1, -639.99, 28.67),},
|
||||
}
|
||||
-- Delivery locations and items is now in server/deliveries.lua
|
||||
-- cornerselling pricing and rep is now in server/cornerselling.lua
|
||||
|
||||
QBConfig.NoSellZones = {
|
||||
{loc = vector3(445.11, -991.3, 30.69), width = 10.0, length = 10.0, height = 10.0, rot = 180.0},
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+1
-2
@@ -1,2 +1 @@
|
||||
3.8.0
|
||||
|
||||
3.9.0
|
||||
Reference in new issue
Block a user