Author SHA1 Message Date
Mustache Dom 291ac27e36 Merge branch 'main' into hushhushmotherfucker 2025-09-08 00:12:58 -07:00
Mustache Dom 2765eef9b3 - update readme 2025-09-08 00:10:20 -07:00
Mustache Dom 0599c60864 - updated languages 2025-09-08 00:06:28 -07:00
Mustache Dom 880479b435 - added
- piglatin
- gungan
- pirate
- klingon
- meanieweenie
- DJ
2025-09-05 21:28:04 -07:00
Mustache Dom 1f3d7154aa - delete test commands 2025-08-16 23:52:07 -07:00
Mustache Dom d9fcb11930 - added timeout function. any event you trigger puts a 3 second hold on the rest of the script for that player to ensure no injectors can endlessly spam and get things. if triggered while on cooldown a console print happens 2025-08-16 23:43:20 -07:00
Mustache Dom af0efacfe9 Update TravellingMerchant.lua 2025-08-14 12:35:09 -07:00
Mustache Dom bf9d435b03 - adjust oxyruns to be 20% failure of new location
- fix meth location
2025-08-13 02:08:57 -06:00
Mustache Dom c47b69ceca - switched cocaine trigger events after animatiosn
- moved inits events from functions to plant spawns
2025-08-13 02:07:08 -06:00
Mustache Dom 108bed7443 Merge pull request #71 from Tater1987/hushhushmotherfucker
Few items I forgotten earlier. I believe this is all I had today.
2025-08-13 01:06:23 -07:00
Tater1987 59c094fdae Update meth.lua
Item missing in recipes.
2025-08-12 23:22:35 -05:00
Tater1987 f28a358c5c Update config.lua
ox_fuel as option
2025-08-12 23:17:41 -05:00
Tater1987 7cc5485864 Update oxyruns.lua
Possible set up for ox fuel? If you need to make changes thats fine. Haven't tested this fully.
2025-08-12 23:16:38 -05:00
Tater1987 ef328ac90c Update en.lua
Added missing lang for teleport handler
2025-08-12 23:10:09 -05:00
Tater1987 891d4abf73 Update meth.lua
Added missing teleport handler
2025-08-12 23:08:43 -05:00
Tater1987 52cf323a20 Merge branch 'Mustachedom:hushhushmotherfucker' into hushhushmotherfucker 2025-08-12 23:05:31 -05:00
Tater1987 87c4aa77a7 Update meth.lua
Spelling correction
2025-08-12 23:04:22 -05:00
Mustache Dom e8337514e7 Merge pull request #70 from Tater1987/hushhushmotherfucker
Hushhushmotherfucker
2025-08-12 18:07:27 -07:00
Tater1987 c4664ae5fb Update meth.lua
Unneeded text
2025-08-12 19:45:02 -05:00
Tater1987 68723ac088 Update meth.lua
Fixed spelling error
2025-08-12 19:43:32 -05:00
Tater1987 9f4339a4ea Update lsd.lua
Incorrect Server Event called
2025-08-12 19:42:53 -05:00
Mustache Dom 3364968e85 Merge pull request #69 from Tater1987/patch-2
Update heroin.lua
2025-08-12 14:49:43 -07:00
Tater1987 689bc79868 Update heroin.lua
Capitalization error
2025-08-12 16:49:08 -05:00
Mustache Dom 2764466d4c Merge pull request #68 from Tater1987/patch-1
Update cocaine.lua
2025-08-12 14:27:38 -06:00
Tater1987 e4c41458dc Update cocaine.lua
Added missing TriggerServerEvents
2025-08-12 15:26:56 -05:00
Mustache Dom b5eb60834f - fix lsd 2025-08-11 17:42:26 -06:00
Mustache Dom 804eba41c9 Create license.md 2025-08-11 16:56:49 -06:00
Mustache Dom 3c05cf79c3 Delete LICENSE 2025-08-11 16:56:05 -06:00
Mustache Dom 9511a46dad update license 2025-08-11 16:54:47 -06:00
Mustache Dom 25f9979731 added lang for travellingmerchant 2025-08-11 16:53:19 -06:00
Mustache Dom a079efd5c8 - fix bug with comparing rep
- fix travellingmerchant
2025-08-11 16:49:24 -06:00
Mustache Dom ca50437751 - added languages 2025-08-09 23:58:38 -06:00
Mustache Dom 51059f6aed - uwu and wookie 2025-08-09 03:25:40 -06:00
Mustache Dom 683eaff7de finished locales EN 2025-08-09 03:10:00 -06:00
Mustache Dom 37f86bf50d - add support for bzz props 2025-08-06 02:35:25 -06:00
Mustache Dom 3574ecef5b jesussssss 2025-08-06 02:25:06 -06:00
Mustache Dom daa1a4f8a3 fuckin christ 2025-07-18 01:19:12 -07:00
Mustache Dom 314f7381d1 Merge branch 'hushhushmotherfucker' of https://github.com/Mustachedom/md-drugs into hushhushmotherfucker 2025-07-17 02:06:21 -05:00
Mustache Dom 2fd900ec22 - holy fuck a lot 2025-07-17 02:06:17 -05:00
Mustache Dom 3c8b654b28 Update version.txt 2025-07-16 01:55:22 -07:00
Mustache Dom e3caf16b53 Update version.txt 2025-07-16 01:54:05 -07:00
Mustache Dom 49f43b997b Update version.txt 2025-07-16 01:53:38 -07:00
Mustache Dom 94c6458037 - update sv side plants 2025-07-16 01:48:56 -07:00
Mustache Dom 2dd8729dc9 - hush 2025-07-15 02:23:03 -07:00
Mustache Dom a86a342f4d - hush hush 2025-07-15 02:21:34 -07:00
Mustache Dom 4fdef3cf30 - fix up heroin 2025-07-14 01:34:58 -07:00
Mustache Dom 1b29aaa3b0 lots of shit 2025-07-01 03:09:46 -07:00
Mustache Dom 9e84111da3 - added multi location for coke fancy anims 2025-06-30 23:24:57 -07:00
Mustache Dom 7422c9d57b Update cocaine.lua 2025-03-26 22:48:12 -07:00
Mustache Dom 8e2dc89398 Merge pull request #63 from zent2g/main
Fix f8 console print spam
2025-02-03 15:01:25 -08:00
zent2g d199e017c2 Fix f8 console print spam 2025-02-03 23:56:50 +01:00
Mustache Dom 4cacab3c7c Merge pull request #59 from Mustachedom/test2
yolo
2025-01-13 22:48:13 -08:00
Mustache Dom 1e3264bb9a Merge branch 'main' into test2 2025-01-13 22:47:47 -08:00
Mustache Dom be0dd02166 yolo 2025-01-13 22:44:37 -08:00
Mustache Dom a5246ad55b Update recipes.lua 2025-01-02 17:57:13 -08:00
Mustache Dom 9520c88d58 adjust consumables 2024-12-16 03:53:59 -08:00
Mustache Dom aca346cc1c ps-ui fix 2024-12-16 03:34:20 -08:00
Mustache Dom 79569a18b6 fix for lean and meth missions
update lsd heroin tables
2024-12-16 03:22:44 -08:00
Mustache Dom b56e585691 added CUI function for createuseableitem. will add support for other frameworks in the future 2024-12-12 17:26:08 -08:00
Mustache Dom 3043ecd924 removed core export: fixed bugs 2024-12-12 15:26:48 -08:00
Mustache Dom a07118d0cb added sv function to check cops and threw a cop check in wholesale, made it so you can only buy heroin table if none are in your inventory 2024-12-12 14:50:05 -08:00
Mustache Dom bf1471e238 added codem dispatch support 2024-11-26 17:26:46 -08:00
Mustache Dom fc5b1f5164 yeehaw 2024-11-26 16:07:15 -08:00
Mustache Dom 26fd63d750 edit 2024-11-26 15:45:17 -08:00
Mustache Dom 65597810c7 fix qs images 2024-11-26 13:41:29 -08:00
Mustache Dom f9bc39fc1d version 2024-11-25 20:03:49 -08:00
Mustache Dom cc33ecb7e2 punctuation 2024-11-25 19:57:26 -08:00
Mustache Dom 9d04b359c1 vscode settings 2024-11-25 12:27:43 -08:00
Mustache Dom 0b943d8154 update readme 2024-11-25 02:07:07 -08:00
Mustache Dom c37b777748 added ped walk away feature if you dont cornersell to them fast enough 2024-11-25 01:46:26 -08:00
Mustache Dom c349563ef3 adjusted icons 2024-11-25 01:21:53 -08:00
Mustache Dom 5b6fef2d49 refractored a lot removed travellingmerchant file, now in pedspawns.lua 2024-11-24 01:25:09 -08:00
Mustache Dom 001378704c updated deliveries to be server sided and adjusted all locations to vec4 2024-11-23 15:33:17 -08:00
Mustache Dom cf5cfba909 patch for pharma, new callback to do animations and progressbar checks 2024-11-23 14:38:23 -08:00
Mustache Dom f1ed2c0860 ree 2024-11-23 02:55:09 -08:00
Mustache Dom e83cddd96f updated pharma to utilize nearby Players and give them the prescription directly 2024-11-23 02:21:39 -08:00
Mustache Dom 5c5f454207 removed 90% of logs ( added logs to getrecipe, locationcheck, and fixed wholesale, dealers, and oxyruns, and meth 2024-11-23 01:58:57 -08:00
Mustache Dom cdd26ab465 bug fixes
labkit/presses now are tabled in server side and has checks to see if you have an active table before proceeding/ gives back item if headpop or crash
2024-11-22 12:26:27 -08:00
Mustache Dom c2fddd6144 update
made server table for presses, will do same for lab kits
2024-11-22 01:35:25 -08:00
Mustache Dom 6df0983273 patch 2024-11-22 00:27:30 -08:00
Mustache Dom b7353b4e97 Update lsd.lua 2024-11-19 01:32:04 -08:00
Mustache Dom c81d113494 test2 2024-11-16 23:39:34 -08:00
Mustache Dom 07481651b8 test 2024-11-16 23:39:22 -08:00
Mustache Dom e04d91e79e update readme 2024-11-12 17:22:12 -08:00
Mustache Dom 07c84ff640 test 2024-11-12 17:08:02 -08:00
Mustache Dom 8df50c0417 moved things around 2024-11-12 02:36:45 -08:00
Mustache Dom abb1bba3fe fixed bugs 2024-11-12 02:07:16 -08:00
Mustache Dom 9d828a2b15 update readme 2024-11-12 01:19:37 -08:00
Mustache Dom 31ee7f88c0 update file names 2024-11-12 01:06:40 -08:00
Mustache Dom 5bc0e9f4e0 moved more 2024-11-12 01:04:42 -08:00
Mustache Dom bcdf71b17a check 2024-11-11 20:22:48 -08:00
Mustache Dom c6d8556c12 Update xtc.lua 2024-11-11 12:10:39 -08:00
Mustache Dom aa015ba757 Update xtc.lua 2024-11-11 12:10:07 -08:00
Mustache Dom 52224ab097 remove debug poly 2024-11-07 11:35:34 -08:00
Mustache Dom b486a28a4a Update cocaine.lua 2024-11-06 10:50:49 -08:00
Mustache Dom adcd5d7c2b Update cocaine.lua 2024-11-06 10:44:56 -08:00
Mustache Dom bb4d05373e Merge pull request #57 from Mustachedom/testing-shit
updated
2024-11-05 00:49:26 -08:00
76 changed files with 9512 additions and 5738 deletions

No files matched your search

+26
View File
@@ -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"
]
}
-674
View File
@@ -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>.
+28
View File
@@ -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()
-536
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+106
View File
@@ -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
View File
@@ -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)
-23
View File
@@ -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)
-15
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+27
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+262
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+263
View File
@@ -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
+263
View File
@@ -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
+263
View File
@@ -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
View File
@@ -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
+263
View File
@@ -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
+263
View File
@@ -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
+263
View File
@@ -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
View File
@@ -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
View File
@@ -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
+260
View File
@@ -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
View File
@@ -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
View File
@@ -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
+55 -99
View File
@@ -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
- [![YouTube Video](https://img.youtube.com/vi/8QpFOluK_xo/hqdefault.jpg)](https://www.youtube.com/watch?v=8QpFOluK_xo)
+62
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+237
View File
@@ -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
-169
View File
@@ -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
View File
@@ -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)
-84
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+26
View File
@@ -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
View File
@@ -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"},
}
-147
View File
@@ -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 }},
}
-292
View File
@@ -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
View File
@@ -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
View File
@@ -1,2 +1 @@
3.8.0
3.9.0