From 65cb0c0b8d6a7201fbd90b51fa50307432190c6b Mon Sep 17 00:00:00 2001 From: Kakarot <57848836+GhzGarage@users.noreply.github.com> Date: Thu, 13 Jan 2022 21:13:10 -0600 Subject: [PATCH] V2.1 Initial Commit --- LICENSE | 674 ---------------------------------- README.md | 24 -- client.lua | 786 ++++++++++++++++++++++++++++++++++----- config.lua | 75 +++- fxmanifest.lua | 17 +- html/app.js | 848 ++++++++++++++++++++++++++++++++++++++++--- html/brand-logo.svg | 60 +++ html/index.html | 258 +++++++++++-- html/responsive.css | 373 +++++++++++++++++++ html/styles.css | 203 ++++++++--- locales/en.lua | 21 ++ server.lua | 25 +- stream/circlemap.ytd | Bin 0 -> 5394 bytes stream/minimap.gfx | Bin 199737 -> 191613 bytes stream/squaremap.ytd | Bin 0 -> 833 bytes 15 files changed, 2425 insertions(+), 939 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md create mode 100644 html/brand-logo.svg create mode 100644 html/responsive.css create mode 100644 locales/en.lua create mode 100644 stream/circlemap.ytd create mode 100644 stream/squaremap.ytd diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f288702..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - 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. - - - Copyright (C) - - 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 . - -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: - - Copyright (C) - 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 -. - - 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 -. diff --git a/README.md b/README.md deleted file mode 100644 index a9acab2..0000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# qb-hud -Player HUD System written in vue.js - -![image](https://user-images.githubusercontent.com/57848836/130697551-a4d84a65-a2a1-47d3-b014-5d915e22e294.png) - -Color Palette: https://quasar.dev/style/color-palette - -# License - - QBCore Framework - Copyright (C) 2021 Joshua Eger - - 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 diff --git a/client.lua b/client.lua index fd7cbe7..544ff37 100644 --- a/client.lua +++ b/client.lua @@ -1,19 +1,442 @@ local QBCore = exports['qb-core']:GetCoreObject() +-- qb-hud local config = Config local speedMultiplier = config.UseMPH and 2.23694 or 3.6 local seatbeltOn = false local cruiseOn = false +local showAltitude = false +local showSeatbelt = false +local voice = 0 local nos = 0 local stress = 0 local hunger = 100 local thirst = 100 -local oxygen = 100 -local stamina = 100 local cashAmount = 0 local bankAmount = 0 +local nitroActive = 0 +local harness = 0 +local hp = 100 +local armed = 0 +local parachute = -1 +local oxygen = 100 +local engine = 0 +local dev = false +local playerDead = false +local showMenu = false +local showCircleB = false +local showSquareB = false + +-- qb-menu +local Menu = config.Menu +DisplayRadar(false) + +local loadSettings = function(settings) + for k,v in pairs(settings) do + if k == 'isToggleMapShapeChecked' then + Menu.isToggleMapShapeChecked = v + SendNUIMessage({ test = true, event = k, toggle = v}) + elseif k == 'isCineamticModeChecked' then + Menu.isCineamticModeChecked = v + CinematicShow(v) + SendNUIMessage({ test = true, event = k, toggle = v}) + elseif k == 'isChangeFPSChecked' then + Menu[k] = v + local val = v == true and 'Optimized' or 'Synced' + SendNUIMessage({ test = true, event = k, toggle = val}) + else + Menu[k] = v + SendNUIMessage({ test = true, event = k, toggle = v}) + end + end + QBCore.Functions.Notify(Lang:t("notify.hud_settings_loaded"), "success") + TriggerEvent("hud:client:LoadMap") +end + +local saveSettings = function() + SetResourceKvp('hudSettings', json.encode(Menu)) +end + +RegisterNetEvent("QBCore:Client:OnPlayerLoaded", function() + Wait(2000) + local hudSettings = GetResourceKvpString('hudSettings') + if hudSettings then loadSettings(json.decode(hudSettings)) end +end) + +AddEventHandler('onResourceStart', function(resourceName) + if GetCurrentResourceName() == resourceName then + Wait(2000) + local hudSettings = GetResourceKvpString('hudSettings') + if hudSettings then loadSettings(json.decode(hudSettings)) end + end +end) + +-- qb-menu Callbacks & Events +RegisterCommand('menu', function() + Wait(50) + if not showMenu then + TriggerEvent("hud:client:playOpenMenuSounds") + SetNuiFocus(true, true) + SendNUIMessage({ action = "open"}) + showMenu = true + end +end) + +RegisterNUICallback('closeMenu', function() + Wait(50) + showMenu = false + SetNuiFocus(false, false) +end) + +RegisterKeyMapping('menu', 'Open Menu', 'keyboard', Config.OpenMenu) + +-- reset hud +local restartHud = function() + TriggerEvent("hud:client:playResetHudSounds") + TriggerEvent('QBCore:Notify', Lang:t("notify.hud_restart"), "error") + if IsPedInAnyVehicle(PlayerPedId()) then + Wait(2600) + SendNUIMessage({ action = 'car', show = false }) + SendNUIMessage({ action = 'car', show = true }) + end + Wait(2600) + SendNUIMessage({ action = 'hudtick', show = false }) + SendNUIMessage({ action = 'hudtick', show = true }) + Wait(2600) + TriggerEvent('QBCore:Notify', Lang:t("notify.hud_start"), "success") +end + +RegisterNUICallback('restartHud', function() + Wait(50) + restartHud() +end) + +RegisterCommand('resethud', function() + Wait(50) + restartHud() +end) --- Events +RegisterNUICallback('resetStorage', function() + Wait(50) + TriggerEvent("hud:client:resetStorage") +end) + +RegisterNetEvent("hud:client:resetStorage", function() + Wait(50) + if Menu.isResetSoundsChecked == true then + TriggerServerEvent("InteractSound_SV:PlayOnSource", "airwrench", 0.1) + end + QBCore.Functions.TriggerCallback('hud:server:getMenu', function(menu) loadSettings(menu); SetResourceKvp('hudSettings', json.encode(menu)) end) +end) + +-- notifications +RegisterNUICallback('openMenuSounds', function() + Wait(50) + Menu.isOpenMenuSoundsChecked = not Menu.isOpenMenuSoundsChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNetEvent("hud:client:playOpenMenuSounds", function() + Wait(50) + if Menu.isOpenMenuSoundsChecked == true then + TriggerServerEvent("InteractSound_SV:PlayOnSource", "houses_door_open", 0.5) + end +end) + +RegisterNUICallback('resetHudSounds', function() + Wait(50) + Menu.isResetSoundsChecked = not Menu.isResetSoundsChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNetEvent("hud:client:playResetHudSounds", function() + Wait(50) + if Menu.isResetSoundsChecked == true then + TriggerServerEvent("InteractSound_SV:PlayOnSource", "airwrench", 0.1) + end +end) + +RegisterNUICallback('checklistSounds', function() + Wait(50) + TriggerEvent("hud:client:checklistSounds") +end) + +RegisterNetEvent("hud:client:checklistSounds", function() + Wait(50) + Menu.isListSoundsChecked = not Menu.isListSoundsChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNetEvent("hud:client:playHudChecklistSound", function() + Wait(50) + if Menu.isListSoundsChecked == true then + TriggerServerEvent("InteractSound_SV:PlayOnSource", "lock", 0.5) + end +end) + +RegisterNUICallback('showOutMap', function() + Wait(50) + Menu.isOutMapChecked = not Menu.isOutMapChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('showMapNotif', function() + Wait(50) + Menu.isMapNotifChecked = not Menu.isMapNotifChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('showFuelAlert', function() + Wait(50) + Menu.isLowFuelChecked = not Menu.isLowFuelChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('showCinematicNotif', function() + Wait(50) + Menu.isCinematicNotifChecked = not Menu.isCinematicNotifChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +-- status +RegisterNUICallback('dynamicHealth', function() + Wait(50) + TriggerEvent("hud:client:ToggleHealth") +end) + +RegisterNetEvent("hud:client:ToggleHealth", function() + Wait(50) + Menu.isDynamicHealthChecked = not Menu.isDynamicHealthChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + + +RegisterNUICallback('dynamicArmor', function() + Wait(50) + Menu.isDynamicArmorChecked = not Menu.isDynamicArmorChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('dynamicHunger', function() + Wait(50) + Menu.isDynamicHungerChecked = not Menu.isDynamicHungerChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('dynamicThirst', function() + Wait(50) + Menu.isDynamicThirstChecked = not Menu.isDynamicThirstChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + + +RegisterNUICallback('dynamicStress', function() + Wait(50) + Menu.isDynamicStressChecked = not Menu.isDynamicStressChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('dynamicOxygen', function() + Wait(50) + Menu.isDynamicOxygenChecked = not Menu.isDynamicOxygenChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +-- vehicle +RegisterNUICallback('changeFPS', function() + Wait(50) + Menu.isChangeFPSChecked = not Menu.isChangeFPSChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + + +RegisterNUICallback('HideMap', function() + Wait(50) + Menu.isHideMapChecked = not Menu.isHideMapChecked + if Menu.isHideMapChecked == true then + DisplayRadar(false) + else + DisplayRadar(true) + end + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNetEvent("hud:client:LoadMap", function() + Wait(50) + -- Credit to Dalrae for the solve. + local defaultAspectRatio = 1920/1080 -- Don't change this. + local resolutionX, resolutionY = GetActiveScreenResolution() + local aspectRatio = resolutionX/resolutionY + local minimapOffset = 0 + if aspectRatio > defaultAspectRatio then + minimapOffset = ((defaultAspectRatio-aspectRatio)/3.6)-0.008 + end + + if Menu.isToggleMapShapeChecked == "square" then + RequestStreamedTextureDict("squaremap", false) + if not HasStreamedTextureDictLoaded("squaremap") then + Wait(150) + end + if Menu.isMapNotifChecked == true then + TriggerEvent('QBCore:Notify', Lang:t("notify.load_square_map")) + end + SetMinimapClipType(0) + AddReplaceTexture("platform:/textures/graphics", "radarmasksm", "squaremap", "radarmasksm") + AddReplaceTexture("platform:/textures/graphics", "radarmask1g", "squaremap", "radarmasksm") + -- 0.0 = nav symbol and icons left + -- 0.1638 = nav symbol and icons stretched + -- 0.216 = nav symbol and icons raised up + SetMinimapComponentPosition("minimap", "L", "B", 0.0+minimapOffset, -0.047, 0.1638, 0.183) + + -- icons within map + SetMinimapComponentPosition("minimap_mask", "L", "B", 0.2+minimapOffset, 0.0, 0.065, 0.20) + + -- -0.01 = map pulled left + -- 0.025 = map raised up + -- 0.262 = map stretched + -- 0.315 = map shorten + SetMinimapComponentPosition('minimap_blur', 'L', 'B', -0.01+minimapOffset, 0.025, 0.262, 0.300) + SetBlipAlpha(GetNorthRadarBlip(), 0) + SetRadarBigmapEnabled(true, false) + SetMinimapClipType(0) + Wait(50) + SetRadarBigmapEnabled(false, false) + if Menu.isToggleMapBordersChecked == true then + showCircleB = false + showSquareB = true + end + Wait(1200) + if Menu.isMapNotifChecked == true then + TriggerEvent('QBCore:Notify', Lang:t("notify.loaded_square_map")) + end + elseif Menu.isToggleMapShapeChecked == "circle" then + RequestStreamedTextureDict("circlemap", false) + if not HasStreamedTextureDictLoaded("circlemap") then + Wait(150) + end + if Menu.isMapNotifChecked == true then + TriggerEvent('QBCore:Notify', Lang:t("notify.load_circle_map")) + end + SetMinimapClipType(1) + AddReplaceTexture("platform:/textures/graphics", "radarmasksm", "circlemap", "radarmasksm") + AddReplaceTexture("platform:/textures/graphics", "radarmask1g", "circlemap", "radarmasksm") + -- -0.0100 = nav symbol and icons left + -- 0.180 = nav symbol and icons stretched + -- 0.258 = nav symbol and icons raised up + SetMinimapComponentPosition("minimap", "L", "B", -0.0100+minimapOffset, -0.030, 0.180, 0.258) + + -- icons within map + SetMinimapComponentPosition("minimap_mask", "L", "B", 0.200+minimapOffset, 0.0, 0.065, 0.20) + + -- -0.00 = map pulled left + -- 0.015 = map raised up + -- 0.252 = map stretched + -- 0.338 = map shorten + SetMinimapComponentPosition('minimap_blur', 'L', 'B', -0.00+minimapOffset, 0.015, 0.252, 0.338) + SetBlipAlpha(GetNorthRadarBlip(), 0) + SetMinimapClipType(1) + SetRadarBigmapEnabled(true, false) + Wait(50) + SetRadarBigmapEnabled(false, false) + if Menu.isToggleMapBordersChecked == true then + showSquareB = false + showCircleB = true + end + Wait(1200) + if Menu.isMapNotifChecked == true then + TriggerEvent('QBCore:Notify', Lang:t("notify.loaded_circle_map")) + end + end +end) + +RegisterNUICallback('ToggleMapShape', function() + Wait(50) + if Menu.isHideMapChecked == false then + if Menu.isToggleMapShapeChecked == "circle" then + Menu.isToggleMapShapeChecked = "square" + else + Menu.isToggleMapShapeChecked = "circle" + end + Wait(50) + TriggerEvent("hud:client:LoadMap") + end + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('ToggleMapBorders', function() + Wait(50) + Menu.isToggleMapBordersChecked = not Menu.isToggleMapBordersChecked + if Menu.isToggleMapBordersChecked == false then + showSquareB = false + showCircleB = false + elseif Menu.isToggleMapBordersChecked == true then + if Menu.isToggleMapShapeChecked == "square" then + showSquareB = true + else + showCircleB = true + end + end + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('dynamicEngine', function() + Wait(50) + Menu.isDynamicEngineChecked = not Menu.isDynamicEngineChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('dynamicNitro', function() + Wait(50) + Menu.isDynamicNitroChecked = not Menu.isDynamicNitroChecked + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNUICallback('cinematicMode', function() + Wait(50) + if Menu.isCineamticModeChecked == true then + CinematicShow(false) + Menu.isCineamticModeChecked = false + if Menu.isCinematicNotifChecked == true then + TriggerEvent('QBCore:Notify', Lang:t("notify.cinematic_off"), 'error') + end + DisplayRadar(1) + elseif Menu.isCineamticModeChecked == false then + CinematicShow(true) + Menu.isCineamticModeChecked = true + if Menu.isCinematicNotifChecked == true then + TriggerEvent('QBCore:Notify', Lang:t("notify.cinematic_on")) + end + end + TriggerEvent("hud:client:playHudChecklistSound") + saveSettings() +end) + +RegisterNetEvent("hud:client:EngineHealth", function(newEngine) + engine = newEngine +end) + +RegisterNetEvent('hud:client:ToggleAirHud', function() + showAltitude = not showAltitude +end) RegisterNetEvent('hud:client:UpdateNeeds', function(newHunger, newThirst) -- Triggered in qb-core hunger = newHunger @@ -24,6 +447,10 @@ RegisterNetEvent('hud:client:UpdateStress', function(newStress) -- Add this even stress = newStress end) +RegisterNetEvent('hud:client:ToggleShowSeatbelt', function() + showSeatbelt = not showSeatbelt +end) + RegisterNetEvent('seatbelt:client:ToggleSeatbelt', function() -- Triggered in smallresources seatbeltOn = not seatbeltOn end) @@ -34,9 +461,43 @@ end) RegisterNetEvent('hud:client:UpdateNitrous', function(hasNitro, nitroLevel, bool) nos = nitroLevel + nitroActive = bool end) -local prevPlayerStats = { nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil } +RegisterNetEvent('hud:client:UpdateHarness', function(harnessHp) + hp = harnessHp +end) + +RegisterNetEvent("qb-admin:client:ToggleDevmode", function() + dev = not dev +end) + +RegisterCommand('+engine', function() + local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) + if vehicle ~= nil and vehicle ~= 0 and GetPedInVehicleSeat(vehicle, 0) then + if (GetIsVehicleEngineRunning(vehicle)) then + QBCore.Functions.Notify(Lang:t("notify.engine_off"), "error") + else + QBCore.Functions.Notify(Lang:t("notify.engine_on")) + end + SetVehicleEngineOn(vehicle, (not GetIsVehicleEngineRunning(vehicle)), false, true) + end +end) + +RegisterKeyMapping('+engine', 'Toggle Engine', 'keyboard', 'G') + +local function IsWhitelistedWeaponArmed(weapon) + if weapon ~= nil then + for _, v in pairs(config.WhitelistedWeaponArmed) do + if weapon == GetHashKey(v) then + return true + end + end + end + return false +end + +local prevPlayerStats = { nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil } local function updatePlayerHud(data) local shouldUpdate = false @@ -51,16 +512,35 @@ local function updatePlayerHud(data) SendNUIMessage({ action = 'hudtick', show = data[1], - health = data[2], - armor = data[3], - thirst = data[4], - hunger = data[5], - stress = data[6], - oxygen = data[7], - stamina = data[8], - voice = data[9], - radio = data[10], - talking = data[11], + dynamicHealth = data[2], + dynamicArmor = data[3], + dynamicHunger = data[4], + dynamicThirst = data[5], + dynamicStress = data[6], + dynamicOxygen = data[7], + dynamicEngine = data[8], + dynamicNitro = data[9], + health = data[10], + playerDead = data[11], + armor = data[12], + thirst = data[13], + hunger = data[14], + stress = data[15], + voice = data[16], + radio = data[17], + talking = data[18], + armed = data[19], + oxygen = data[20], + parachute = data[21], + nos = data[22], + cruise = data[23], + nitroActive = data[24], + harness = data[25], + hp = data[26], + speed = data[27], + engine = data[28], + cinematic = data[29], + dev = data[30], }) end end @@ -78,32 +558,18 @@ local function updateVehicleHud(data) action = 'car', show = data[1], isPaused = data[2], - direction = data[3], - street1 = data[4], - street2 = data[5], - seatbelt = data[6], - cruise = data[7], - speed = data[8], - nos = data[9], - fuel = data[10], + seatbelt = data[3], + speed = data[4], + fuel = data[5], + altitude = data[6], + showAltitude = data[7], + showSeatbelt = data[8], + showSquareB = data[9], + showCircleB = data[10], }) end end -local lastCrossroadUpdate = 0 -local lastCrossroadCheck = {} - -local function getCrossroads(player) - local updateTick = GetGameTimer() - if updateTick - lastCrossroadUpdate > 1500 then - local pos = GetEntityCoords(player) - local street1, street2 = GetStreetNameAtCoord(pos.x, pos.y, pos.z) - lastCrossroadUpdate = updateTick - lastCrossroadCheck = { GetStreetNameFromHashKey(street1), GetStreetNameFromHashKey(street2) } - end - return lastCrossroadCheck -end - local lastFuelUpdate = 0 local lastFuelCheck = {} @@ -116,67 +582,150 @@ local function getFuelLevel(vehicle) return lastFuelCheck end -local function GetDirectionText(head) - if ((head >= 0 and head < 45) or (head >= 315 and head < 360)) then return 'North' - elseif (head >= 45 and head < 135) then return 'West' - elseif (head >= 135 and head < 225) then return 'South' - elseif (head >= 225 and head < 315) then return 'East' end -end - -- HUD Update loop CreateThread(function() local wasInVehicle = false; while true do - Wait(50) + if Menu.isChangeFPSChecked == true then + Wait(500) + elseif Menu.isChangeFPSChecked == false then + Wait(50) + end if LocalPlayer.state.isLoggedIn then - local show = true + local show = true local player = PlayerPedId() - local playerId = PlayerId() + local weapon = GetSelectedPedWeapon(player) -- player hud - local oxygen = GetPlayerUnderwaterTimeRemaining(playerId) * 10 - local stamina = GetPlayerSprintStaminaRemaining(playerId) - local talking = NetworkIsPlayerTalking(playerId) + if not IsWhitelistedWeaponArmed(weapon) then + if weapon ~= `WEAPON_UNARMED` then + armed = true + else + armed = false + end + end + if IsPedDeadOrDying(player) or QBCore.Functions.GetPlayerData().metadata["inlaststand"] then + playerDead=true + + else + playerDead=false + end + parachute = GetPedParachuteState(PlayerPedId()) + -- stamina + if not IsEntityInWater(PlayerPedId()) then + oxygen = 100 - GetPlayerSprintStaminaRemaining(PlayerId()) + end + -- oxygen + if IsEntityInWater(PlayerPedId()) then + oxygen = GetPlayerUnderwaterTimeRemaining(PlayerId()) * 10 + end + -- player hud + local talking = NetworkIsPlayerTalking(PlayerId()) local voice = 0 - if LocalPlayer.state['proximity'] then + if LocalPlayer.state['proximity'] ~= nil then voice = LocalPlayer.state['proximity'].distance end if IsPauseMenuActive() then show = false end + if not ( IsPedInAnyVehicle(player) and not IsThisModelABicycle(vehicle) ) then updatePlayerHud({ - show, + show, + Menu.isDynamicHealthChecked, + Menu.isDynamicArmorChecked, + Menu.isDynamicHungerChecked, + Menu.isDynamicThirstChecked, + Menu.isDynamicStressChecked, + Menu.isDynamicOxygenChecked, + Menu.isDynamicEngineChecked, + Menu.isDynamicNitroChecked, GetEntityHealth(player) - 100, + playerDead, GetPedArmour(player), thirst, hunger, stress, - oxygen, - stamina, voice, LocalPlayer.state['radioChannel'], - talking - }) + talking, + armed, + oxygen, + GetPedParachuteState(player), + -1, + cruiseOn, + nitroActive, + harness, + hp, + math.ceil(GetEntitySpeed(vehicle) * speedMultiplier), + -1, + Menu.isCineamticModeChecked, + dev, + }) + end -- vehcle hud local vehicle = GetVehiclePedIsIn(player) + if IsPedInAnyHeli(player) or IsPedInAnyPlane(player) then + showAltitude = true + showSeatbelt = false + end if IsPedInAnyVehicle(player) and not IsThisModelABicycle(vehicle) then if not wasInVehicle then DisplayRadar(true) end wasInVehicle = true - local crossroads = getCrossroads(player) + QBCore.Functions.TriggerCallback('hud:server:HasHarness', function(hasItem) + if hasItem then + harness = true + else + harness = false + end + end, "harness") + updatePlayerHud({ + show, + Menu.isDynamicHealthChecked, + Menu.isDynamicArmorChecked, + Menu.isDynamicHungerChecked, + Menu.isDynamicThirstChecked, + Menu.isDynamicStressChecked, + Menu.isDynamicOxygenChecked, + Menu.isDynamicEngineChecked, + Menu.isDynamicNitroChecked, + GetEntityHealth(player) - 100, + playerDead, + GetPedArmour(player), + thirst, + hunger, + stress, + voice, + LocalPlayer.state['radioChannel'], + talking, + armed, + oxygen, + GetPedParachuteState(player), + nos, + cruiseOn, + nitroActive, + harness, + hp, + math.ceil(GetEntitySpeed(vehicle) * speedMultiplier), + (GetVehicleEngineHealth(vehicle) /10), + Menu.isCineamticModeChecked, + dev, + }) updateVehicleHud({ show, IsPauseMenuActive(), - GetDirectionText(GetEntityHeading(player)), - crossroads[1], - crossroads[2], seatbeltOn, - cruiseOn, math.ceil(GetEntitySpeed(vehicle) * speedMultiplier), - nos, getFuelLevel(vehicle), + math.ceil((GetEntityCoords(player).z *.5)), + showAltitude, + showSeatbelt, + showSquareB, + showCircleB, }) + showAltitude = false + showSeatbelt = true else if wasInVehicle then wasInVehicle = false @@ -188,39 +737,40 @@ CreateThread(function() }) seatbeltOn = false cruiseOn = false + harness = false + end + if Menu.isOutMapChecked == false then + DisplayRadar(false) + else + DisplayRadar(true) end - DisplayRadar(false) end else SendNUIMessage({ action = 'hudtick', show = false }) - DisplayRadar(false) - Wait(500) end end end) -CreateThread(function() -- Raise Minimap - local minimap = RequestScaleformMovie('minimap') - while not HasScaleformMovieLoaded(minimap) do Wait(1) end - -- Credit to Dalrae for the solve. - local defaultAspectRatio = 1920/1080 -- Don't change this. - local resolutionX, resolutionY = GetActiveScreenResolution() - local aspectRatio = resolutionX/resolutionY - local minimapXOffset,minimapYOffset = 0,-0.03 - if aspectRatio > defaultAspectRatio then - local aspectDifference = defaultAspectRatio-aspectRatio - minimapXOffset = aspectDifference/3.6 +-- low fuel +CreateThread(function() + while true do + if LocalPlayer.state.isLoggedIn then + local ped = PlayerPedId() + if IsPedInAnyVehicle(ped, false) then + if exports['LegacyFuel']:GetFuel(GetVehiclePedIsIn(PlayerPedId(), false)) <= 20 then -- At 20% Fuel Left + if Menu.isLowFuelChecked == true then + TriggerServerEvent("InteractSound_SV:PlayOnSource", "pager", 0.10) + TriggerEvent('QBCore:Notify', Lang:t("notify.low_fuel"), "error") + Wait(60000) -- repeats every 1 min until empty + end + end + end + end + Wait(10000) end - SetMinimapComponentPosition("minimap", "L", "B", -0.0045+minimapXOffset, 0.002+minimapYOffset, 0.150, 0.188888) - SetMinimapComponentPosition("minimap_mask", "L", "B", 0.020+minimapXOffset, 0.030+minimapYOffset, 0.111, 0.159) - SetMinimapComponentPosition("minimap_blur", "L", "B", -0.03+minimapXOffset, 0.022+minimapYOffset, 0.266, 0.237) - Wait(5000) - SetRadarBigmapEnabled(true, false) - Wait(0) - SetRadarBigmapEnabled(false, false) end) -- Money HUD @@ -276,9 +826,9 @@ CreateThread(function() -- Speeding end end) -local function IsWhitelistedWeapon(weapon) +local function IsWhitelistedWeaponStress(weapon) if weapon ~= nil then - for _, v in pairs(config.WhitelistedWeapons) do + for _, v in pairs(config.WhitelistedWeaponStress) do if weapon == GetHashKey(v) then return true end @@ -293,13 +843,13 @@ CreateThread(function() -- Shooting local ped = PlayerPedId() local weapon = GetSelectedPedWeapon(ped) if weapon ~= `WEAPON_UNARMED` then - if IsPedShooting(ped) and not IsWhitelistedWeapon(weapon) then + if IsPedShooting(ped) and not IsWhitelistedWeaponStress(weapon) then if math.random() < config.StressChance then TriggerServerEvent('hud:server:GainStress', math.random(1, 3)) end end else - Wait(500) + Wait(1000) end end Wait(8) @@ -322,7 +872,7 @@ CreateThread(function() SetPedToRagdollWithFall(ped, RagdollTimeout, RagdollTimeout, 1, GetEntityForwardVector(ped), 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) end - Wait(500) + Wait(1000) for i=1, FallRepeat, 1 do Wait(750) DoScreenFadeOut(200) @@ -361,3 +911,65 @@ function GetEffectInterval(stresslevel) end return retval end + +-- minimap update +Citizen.CreateThread(function() + while true do + Wait(500) + local player = PlayerPedId() + SetRadarZoom(1000) + SetRadarBigmapEnabled(false, false) + end +end) + +-- cinematic mode +CinematicHeight = 0.2 +CinematicModeOn = false +w = 0 + +function CinematicShow(bool) + SetRadarBigmapEnabled(true, false) + Wait(0) + SetRadarBigmapEnabled(false, false) + if bool then + for i = CinematicHeight, 0, -1.0 do + Wait(10) + w = i + end + else + for i = 0, CinematicHeight, 1.0 do + Wait(10) + w = i + end + end +end + +Citizen.CreateThread(function() + minimap = RequestScaleformMovie("minimap") + if not HasScaleformMovieLoaded(minimap) then + RequestScaleformMovie(minimap) + while not HasScaleformMovieLoaded(minimap) do + Wait(1) + end + end + while true do + Citizen.Wait(0) + if w > 0 then + BlackBars() + DisplayRadar(0) + SendNUIMessage({ + action = 'hudtick', + show = false, + }) + SendNUIMessage({ + action = 'car', + show = false, + }) + end + end +end) + +function BlackBars() + DrawRect(0.0, 0.0, 2.0, w, 0, 0, 0, 255) + DrawRect(0.0, 1.0, 2.0, w, 0, 0, 0, 255) +end diff --git a/config.lua b/config.lua index 961ff96..5199e9c 100644 --- a/config.lua +++ b/config.lua @@ -1,13 +1,56 @@ Config = {} + +Config.OpenMenu = 'I' -- https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ Config.StressChance = 0.1 -- Default: 10% -- Percentage Stress Chance When Shooting (0-1) -Config.UseMPH = true -- If true speed math will be done as MPH, if false KPH will be used +Config.UseMPH = true -- If true speed math will be done as MPH, if false KPH will be used (YOU HAVE TO CHANGE CONTENT IN STYLES.CSS TO DISPLAY THE CORRECT TEXT) Config.MinimumStress = 50 -- Minimum Stress Level For Screen Shaking Config.MinimumSpeedUnbuckled = 50 -- Going Over This Speed Will Cause Stress Config.MinimumSpeed = 100 -- Going Over This Speed Will Cause Stress -- Stress -Config.WhitelistedWeapons = { +Config.WhitelistedWeaponArmed = { -- weapons specifically whitelisted to not show armed mode + -- miscellaneous + 'weapon_petrolcan', + 'weapon_hazardcan', + 'weapon_fireextinguisher', + -- melee + 'weapon_dagger', + 'weapon_bat', + 'weapon_bottle', + 'weapon_crowbar', + 'weapon_flashlight', + 'weapon_golfclub', + 'weapon_hammer', + 'weapon_hatchet', + 'weapon_knuckle', + 'weapon_knife', + 'weapon_machete', + 'weapon_switchblade', + 'weapon_nightstick', + 'weapon_wrench', + 'weapon_battleaxe', + 'weapon_poolcue', + 'weapon_briefcase', + 'weapon_briefcase_02', + 'weapon_garbagebag', + 'weapon_handcuffs', + 'weapon_bread', + 'weapon_stone_hatchet', + -- throwables + 'weapon_grenade', + 'weapon_bzgas', + 'weapon_molotov', + 'weapon_stickybomb', + 'weapon_proxmine', + 'weapon_snowball', + 'weapon_pipebomb', + 'weapon_ball', + 'weapon_smokegrenade', + 'weapon_flare' +} + +Config.WhitelistedWeaponStress = { 'weapon_petrolcan', 'weapon_hazardcan', 'weapon_fireextinguisher' @@ -69,4 +112,30 @@ Config.EffectInterval = { max = 100, timeout = math.random(15000, 20000) } -} \ No newline at end of file +} + +Config.Menu = { + isOutMapChecked = false, -- isOutMapChecked + isOpenMenuSoundsChecked = true, -- isOpenMenuSoundsChecked + isResetSoundsChecked = true, -- isResetSoundsChecked + isListSoundsChecked = true, -- isListSoundsChecked + isMapNotifChecked = true, -- isMapNotifChecked + isLowFuelChecked = true, -- isLowFuelChecked + isCinematicNotifChecked = true, -- isCinematicNotifChecked + isDynamicHealthChecked = true, -- isDynamicHealthChecked + isDynamicArmorChecked= true, -- isDynamicArmorChecked + isDynamicHungerChecked = true, -- isDynamicHungerChecked + isDynamicThirstChecked = true, -- isDynamicThirstChecked + isDynamicStressChecked = true, -- isDynamicStressChecked + isDynamicOxygenChecked = true, -- isDynamicOxygenChecked + isChangeFPSChecked = true, -- isChangeFPSChecked + isHideMapChecked = false, -- isHideMapChecked + isToggleMapBordersChecked = true, -- isToggleMapBordersChecked + isDynamicEngineChecked = true, -- isDynamicEngineChecked + isDynamicNitroChecked = true, -- isDynamicNitroChecked + isHideCompassChecked = false, -- isHideCompassChecked + isHideStreetsChecked = false, -- isHideStreetsChecked + isCineamticModeChecked = false, -- isCineamticModeChecked + isToggleMapShapeChecked = 'circle', -- isToggleMapShapeChecked +} + diff --git a/fxmanifest.lua b/fxmanifest.lua index 11b4e17..f2abe1a 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -1,10 +1,15 @@ fx_version 'cerulean' game 'gta5' -description 'QB-HUD' -version '2.0.0' +description 'qb-hud' +version '2.1.0' + +shared_scripts { + '@qb-core/shared/locale.lua', + 'locales/en.lua', + 'config.lua' +} -client_script 'config.lua' client_script 'client.lua' server_script 'server.lua' lua54 'yes' @@ -12,7 +17,9 @@ lua54 'yes' ui_page 'html/index.html' files { + 'html/*', 'html/index.html', 'html/styles.css', - 'html/app.js' -} \ No newline at end of file + 'html/responsive.css', + 'html/app.js', +} diff --git a/html/app.js b/html/app.js index 369a4cd..e32956c 100644 --- a/html/app.js +++ b/html/app.js @@ -1,3 +1,537 @@ +const { ref, onBeforeUnmount } = Vue + +const app = Vue.createApp({ + data: function() { + return { + isOutMapChecked: this.initIsOutMapChecked(), + isOpenMenuSoundsChecked: this.initIsOpenMenuSoundsChecked(), + isResetSoundsChecked: this.initIsResetSoundsChecked(), + isListSoundsChecked: this.initIsListSoundsChecked(), + isMapNotifChecked: this.initIsMapNotifChecked(), + isLowFuelChecked: this.initIsLowFuelChecked(), + isCinematicNotifChecked: this.initIsCinematicNotifChecked(), + isDynamicHealthChecked: this.initIsDynamicHealthChecked(), + isDynamicArmorChecked: this.initIsDynamicArmorChecked(), + isDynamicHungerChecked: this.initIsDynamicHungerChecked(), + isDynamicThirstChecked: this.initIsDynamicThirstChecked(), + isDynamicStressChecked: this.initIsDynamicStressChecked(), + isDynamicOxygenChecked: this.initIsDynamicOxygenChecked(), + isChangeFPSChecked: this.initIsChangeFPSChecked(), + isToggleMapShapeChecked: this.initIsToggleMapShapeChecked(), + isHideMapChecked: this.initIsHideMapChecked(), + isToggleMapBordersChecked: this.initIsToggleMapBordersChecked(), + isDynamicEngineChecked: this.initIsDynamicEngineChecked(), + isDynamicNitroChecked: this.initIsDynamicNitroChecked(), + isHideCompassChecked: this.initIsHideCompassChecked(), + isHideStreetsChecked: this.initIsHideStreetsChecked(), + isCineamticModeChecked: this.initIsCineamticModeChecked(), + }; + }, + setup () { + const progress = ref([ + { loading: false, percentage: 0 }, + { loading: false, percentage: 0 }, + { loading: false, percentage: 0 } + ]) + + const intervals = [ null, null, null ] + + function startComputing (id) { + progress.value[ id ].loading = true + progress.value[ id ].percentage = 0 + + intervals[ id ] = setInterval(() => { + progress.value[ id ].percentage += Math.floor(Math.random() * 8 + 10) + if (progress.value[ id ].percentage >= 100) { + clearInterval(intervals[ id ]) + progress.value[ id ].loading = false + } + }, 700) + } + + onBeforeUnmount(() => { + intervals.forEach(val => { + clearInterval(val) + }) + }) + return { + framework: { + plugins: [ + 'LocalStorage', + 'SessionStorage' + ] + }, + tab: ref('hud'), + splitterModel: ref(20), + selection: ref([]), + progress, + startComputing, + } + }, + watch: { + isOutMapChecked: function() { + localStorage.setItem("isOutMapChecked", this.isOutMapChecked); + }, + isOpenMenuSoundsChecked: function() { + localStorage.setItem("isOpenMenuSoundsChecked", this.isOpenMenuSoundsChecked); + }, + isResetSoundsChecked: function() { + localStorage.setItem("isResetSoundsChecked", this.isResetSoundsChecked); + }, + isListSoundsChecked: function() { + localStorage.setItem("isListSoundsChecked", this.isListSoundsChecked); + }, + isMapNotifChecked: function() { + localStorage.setItem("isMapNotifChecked", this.isMapNotifChecked); + }, + isLowFuelChecked: function() { + localStorage.setItem("isLowFuelChecked", this.isLowFuelChecked); + }, + isCinematicNotifChecked: function() { + localStorage.setItem("isCinematicNotifChecked", this.isCinematicNotifChecked); + }, + isDynamicHealthChecked: function() { + localStorage.setItem("isDynamicHealthChecked", this.isDynamicHealthChecked); + }, + isDynamicArmorChecked: function() { + localStorage.setItem("isDynamicArmorChecked", this.isDynamicArmorChecked); + }, + isDynamicHungerChecked: function() { + localStorage.setItem("isDynamicHungerChecked", this.isDynamicHungerChecked); + }, + isDynamicThirstChecked: function() { + localStorage.setItem("isDynamicThirstChecked", this.isDynamicThirstChecked); + }, + isDynamicStressChecked: function() { + localStorage.setItem("isDynamicStressChecked", this.isDynamicStressChecked); + }, + isDynamicOxygenChecked: function() { + localStorage.setItem("isDynamicOxygenChecked", this.isDynamicOxygenChecked); + }, + isChangeFPSChecked: function() { + localStorage.setItem("isChangeFPSChecked", this.isChangeFPSChecked); + }, + isToggleMapShapeChecked: function() { + localStorage.setItem("isToggleMapShapeChecked", this.isToggleMapShapeChecked); + }, + isHideMapChecked: function() { + localStorage.setItem("isHideMapChecked", this.isHideMapChecked); + }, + isToggleMapBordersChecked: function() { + localStorage.setItem("isToggleMapBordersChecked", this.isToggleMapBordersChecked); + }, + isDynamicEngineChecked: function() { + localStorage.setItem("isDynamicEngineChecked", this.isDynamicEngineChecked); + }, + isDynamicNitroChecked: function() { + localStorage.setItem("isDynamicNitroChecked", this.isDynamicNitroChecked); + }, + isHideCompassChecked: function() { + localStorage.setItem("isHideCompassChecked", this.isHideCompassChecked); + }, + isHideStreetsChecked: function() { + localStorage.setItem("isHideStreetsChecked", this.isHideStreetsChecked); + }, + isCineamticModeChecked: function() { + localStorage.setItem("isCineamticModeChecked", this.isCineamticModeChecked); + }, + }, + methods: { + initIsOutMapChecked: function() { + const stored = localStorage.getItem("isOutMapChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsOpenMenuSoundsChecked: function() { + const stored = localStorage.getItem("isOpenMenuSoundsChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsResetSoundsChecked: function() { + const stored = localStorage.getItem("isResetSoundsChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsListSoundsChecked: function() { + const stored = localStorage.getItem("isListSoundsChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsMapNotifChecked: function() { + const stored = localStorage.getItem("isMapNotifChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsLowFuelChecked: function() { + const stored = localStorage.getItem("isLowFuelChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsCinematicNotifChecked: function() { + const stored = localStorage.getItem("isCinematicNotifChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsDynamicHealthChecked: function() { + const stored = localStorage.getItem("isDynamicHealthChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsDynamicArmorChecked: function() { + const stored = localStorage.getItem("isDynamicArmorChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsDynamicHungerChecked: function() { + const stored = localStorage.getItem("isDynamicHungerChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsDynamicThirstChecked: function() { + const stored = localStorage.getItem("isDynamicThirstChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsDynamicStressChecked: function() { + const stored = localStorage.getItem("isDynamicStressChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsDynamicOxygenChecked: function() { + const stored = localStorage.getItem("isDynamicOxygenChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsChangeFPSChecked: function() { + const stored = localStorage.getItem("isChangeFPSChecked"); + if (stored === null) { + return 'Optimized'; + } else { + return stored; + } + }, + initIsToggleMapShapeChecked: function() { + const stored = localStorage.getItem("isToggleMapShapeChecked"); + if (stored === null) { + return 'Circle'; + } else { + return stored; + } + }, + initIsHideMapChecked: function() { + const stored = localStorage.getItem("isHideMapChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsToggleMapBordersChecked: function() { + const stored = localStorage.getItem("isToggleMapBordersChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsDynamicEngineChecked: function() { + const stored = localStorage.getItem("isDynamicEngineChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsDynamicNitroChecked: function() { + const stored = localStorage.getItem("isDynamicNitroChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + initIsHideCompassChecked: function() { + const stored = localStorage.getItem("isHideCompassChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsHideStreetsChecked: function() { + const stored = localStorage.getItem("isHideStreetsChecked"); + if (stored === null) { + return true; + } else { + return stored == 'true'; + } + }, + initIsCineamticModeChecked: function() { + const stored = localStorage.getItem("isCineamticModeChecked"); + if (stored === null) { + return false; + } else { + return stored == 'true'; + } + }, + resetStorage: function(event) { + targetId = event.currentTarget.id; + localStorage.clear(); + resetStorage() + }, + restartHud: function(event) { + targetId = event.currentTarget.id; + restartHud() + }, + showOutMap: function(event) { + targetId = event.currentTarget.id; + showOutMap() + }, + openMenuSounds: function(event) { + targetId = event.currentTarget.id; + openMenuSounds() + }, + resetHudSounds: function(event) { + targetId = event.currentTarget.id; + resetHudSounds() + }, + checklistSounds: function(event) { + targetId = event.currentTarget.id; + checklistSounds() + }, + showMapNotif: function(event) { + targetId = event.currentTarget.id; + showMapNotif() + }, + showFuelAlert: function(event) { + targetId = event.currentTarget.id; + showFuelAlert() + }, + showCinematicNotif: function(event) { + targetId = event.currentTarget.id; + showCinematicNotif() + }, + dynamicHealth: function(event) { + targetId = event.currentTarget.id; + dynamicHealth() + }, + dynamicArmor: function(event) { + targetId = event.currentTarget.id; + dynamicArmor() + }, + dynamicHunger: function(event) { + targetId = event.currentTarget.id; + dynamicHunger() + }, + dynamicThirst: function(event) { + targetId = event.currentTarget.id; + dynamicThirst() + }, + dynamicStress: function(event) { + targetId = event.currentTarget.id; + dynamicStress() + }, + dynamicOxygen: function(event) { + targetId = event.currentTarget.id; + dynamicOxygen() + }, + changeFPS: function(event) { + targetId = event.currentTarget.id; + changeFPS() + }, + ToggleMapShape: function(event) { + targetId = event.currentTarget.id; + ToggleMapShape() + }, + HideMap: function(event) { + targetId = event.currentTarget.id; + HideMap() + }, + ToggleMapBorders: function(event) { + targetId = event.currentTarget.id; + ToggleMapBorders() + }, + dynamicEngine: function(event) { + targetId = event.currentTarget.id; + dynamicEngine() + }, + dynamicNitro: function(event) { + targetId = event.currentTarget.id; + dynamicNitro() + }, + HideCompass: function(event) { + targetId = event.currentTarget.id; + HideCompass() + }, + HideStreets: function(event) { + targetId = event.currentTarget.id; + HideStreets() + }, + cinematicMode: function(event) { + targetId = event.currentTarget.id; + cinematicMode() + }, + }, + mounted() { + this.listener = window.addEventListener("message", (event) => { + if (event.data.event === 'isHideCompassChecked'){ + HideCompass(event.data.toggle) + }else if (event.data.event === 'isHideStreetsChecked'){ + HideStreets(event.data.toggle) + }else if (event.data.event === 'isToggleMapShapeChecked' || event.data.event === 'isChangeFPSChecked') { + eval(`this.${event.data.event} = "${event.data.toggle}"`) + } + }); + }, +}) + +app.use(Quasar, { config: {} }) +app.mount('#menu') + +document.onkeyup = function (data) { + if (data.key == 'Escape') { + closeMenu() + } +}; + +function closeMenu() { + $("#openmenu").fadeOut(550); + $.post('https://qb-hud/closeMenu'); +} +function restartHud() { + closeMenu() + $.post('https://qb-hud/restartHud'); +} +function resetStorage() { + closeMenu() + $.post('https://qb-hud/resetStorage'); +} +function showOutMap() { + $.post('https://qb-hud/showOutMap'); +} +function showBrand() { + $.post('https://lj-brand/showBrand'); +} +function openMenuSounds() { + $.post('https://qb-hud/openMenuSounds'); +} +function resetHudSounds() { + $.post('https://qb-hud/resetHudSounds'); +} +function checklistSounds() { + $.post('https://qb-hud/checklistSounds'); +} +function showMapNotif() { + $.post('https://qb-hud/showMapNotif'); +} +function showFuelAlert() { + $.post('https://qb-hud/showFuelAlert'); +} +function showCinematicNotif() { + $.post('https://qb-hud/showCinematicNotif'); +} +function dynamicHealth() { + $.post('https://qb-hud/dynamicHealth'); +} +function dynamicArmor() { + $.post('https://qb-hud/dynamicArmor'); +} +function dynamicHunger() { + $.post('https://qb-hud/dynamicHunger'); +} +function dynamicThirst() { + $.post('https://qb-hud/dynamicThirst'); +} +function dynamicStress() { + $.post('https://qb-hud/dynamicStress'); +} +function dynamicOxygen() { + $.post('https://qb-hud/dynamicOxygen'); +} +function dynamicEngine() { + $.post('https://qb-hud/dynamicEngine'); +} +function dynamicNitro() { + $.post('https://qb-hud/dynamicNitro'); +} +function ToggleMapShape() { + $.post('https://qb-hud/ToggleMapShape'); +} +function changeFPS() { + $.post('https://qb-hud/changeFPS'); +} +function ToggleMapBorders() { + $.post('https://qb-hud/ToggleMapBorders'); +} +function HideMap() { + $.post('https://qb-hud/HideMap'); +} +function HideCompass() { + $.post('https://lj-compass/HideCompass'); +} +function HideStreets() { + $.post('https://lj-compass/HideStreets'); +} +function cinematicMode() { + $.post('https://qb-hud/cinematicMode'); +} + +$(document).ready(function () { + window.addEventListener("message", function (event) { + switch (event.data.action) { + case "open": + Open(event.data); + break; + } + }); +}); + +Open = function (data) { + $("#openmenu").fadeIn(150); +} +$('.closeMenu').click(() => { + closeMenu() +}); + // MONEY HUD const moneyHud = Vue.createApp({ @@ -102,29 +636,61 @@ const moneyHud = Vue.createApp({ const playerHud = { data() { return { + dynamicHealth: 0, + dynamicHunger: 0, + dynamicThirst: 0, + dynamicStress: 0, + dynamicOxygen: 0, + dynamicEngine: 0, + dynamicNitro: 0, + nos: 0, + static: 100, health: 0, + playerDead: 0, armor: 0, hunger: 0, thirst: 0, stress: 0, - oxygen: 0, - stamina: 0, voice: 0, radio: 0, + harness: 0, + nitroActive: 0, + cruise: 0, + parachute: 0, + oxygen: 0, + hp: 0, + armed: 0, + speed: 0, + engine: 0, + cinematic: 0, + dev: 0, show: false, talking: false, showVoice: true, - showHealth: true, + showHealth: false, showArmor: true, showHunger: true, showThirst: true, + showNos: true, showStress: true, - showOxygen: true, - showStamina: true, + showOxygen: false, + showArmed: true, + showEngine: false, + showCruise: false, + showHarness: false, + showParachute: false, + showDev: false, voiceIcon: "fas fa-microphone", talkingColor: "#FFFFFF", + nosColor: "", + engineColor: "", + armorColor: "", + hungerColor: "", + healthColor: "", + thirstColor: "", }; }, + destroyed() { window.removeEventListener("message", this.listener); }, @@ -132,8 +698,12 @@ const playerHud = { this.listener = window.addEventListener("message", (event) => { if (event.data.action === "hudtick") { this.hudTick(event.data); - } + } + // else if(event.data.update) { + // eval(event.data.action + "(" + event.data.show + ')') + // } }); + Config = {}; }, methods: { hudTick(data) { @@ -143,48 +713,154 @@ const playerHud = { this.hunger = data.hunger; this.thirst = data.thirst; this.stress = data.stress; - this.oxygen = data.oxygen; - this.stamina = data.stamina; this.voice = data.voice; this.talking = data.talking; this.radio = data.radio; - if (data.health >= 100) { - this.showHealth = false; - } else { + this.nos = data.nos; + this.oxygen = data.oxygen; + this.cruise = data.cruise; + this.nitroActive = data.nitroActive; + this.harness = data.harness; + this.speed = data.speed; + this.armed = data.armed; + this.parachute = data.parachute; + this.hp = data.hp*5; + this.engine = data.engine; + this.cinematic = data.cinematic; + this.dev = data.dev; + this.playerDead = data.playerDead; + this.dynamicHealth = data.dynamicHealth; + this.dynamicArmor = data.dynamicArmor; + this.dynamicHunger = data.dynamicHunger; + this.dynamicThirst = data.dynamicThirst; + this.dynamicStress = data.dynamicStress; + this.dynamicOxygen = data.dynamicOxygen; + this.dynamicEngine = data.dynamicEngine; + this.dynamicNitro = data.dynamicNitro; + + if (data.dynamicHealth == true) { + if (data.health >= 100) { + this.showHealth = false; } + else{ + this.showHealth = true; + } + } else if (data.dynamicHealth == false){ this.showHealth = true; + } + if (data.playerDead === false) { + this.healthColor = "#3FA554"; + } else { + this.healthColor = "#ff0000"; + this.health = 100; } + + if (data.dynamicArmor == true) { + if (data.armor == 0) { + this.showArmor = false; + } else { + this.showArmor = true; + } + } else if (data.dynamicArmor == false){ + this.showArmor = true; + } + if (data.armor <= 0) { - this.showArmor = false; + this.armorColor = "#FF0000"; } else { - this.showArmor = true; + this.armorColor = "#326dbf"; } - if (data.hunger >= 100) { - this.showHunger = false; - } else { + + if (data.dynamicHunger == true) { + if (data.hunger >= 100) { + this.showHunger = false; } + else{ + this.showHunger = true; + } + } else if (data.dynamicHunger == false){ this.showHunger = true; + } + if (data.hunger >= 100) { + this.hungerColor = "#dd6e14"; + } else if(data.hunger <= 30){ + this.hungerColor = "#ff0000"; + } else{ + this.hungerColor = "#dd6e14"; } - if (data.thirst >= 100) { - this.showThirst = false; - } else { + + if (data.dynamicThirst == true) { + if (data.thirst >= 100) { + this.showThirst = false; } + else{ + this.showThirst = true; + } + } else if (data.dynamicThirst == false){ this.showThirst = true; + } + if (data.thirst >= 100) { + this.thirstColor = "#1a7cad"; + } else if(data.thirst <= 30){ + this.thirstColor = "#ff0000"; + } else{ + this.thirstColor = "#1a7cad"; } - if (data.stress <= 0) { - this.showStress = false; - } else { + + if (data.dynamicStress == true) { + if (data.stress == 0) { + this.showStress = false; + } else { + this.showStress = true; + } + } else if (data.dynamicStress == false){ this.showStress = true; - } - if (data.oxygen >= 100) { - this.showOxygen = false; - } else { + } + + if (data.dynamicOxygen == true) { + if (data.oxygen >= 100) { + this.showOxygen = false; } + else{ + this.showOxygen = true; + } + } else if (data.dynamicOxygen == false){ this.showOxygen = true; + } + + if (data.dynamicEngine == true) { + if (data.engine >= 95) { + this.showEngine = false; + } else if (data.engine < 0){ + this.showEngine = false;} else {this.showEngine = true;} + } else if (data.dynamicEngine == false){ + if (data.engine < 0) { + this.showEngine = false;} else {this.showEngine = true;} + } + if (data.engine <= 45) { + this.engineColor = "#ff0000"; + } else if (data.engine <= 75 && data.engine >= 46 ) { + this.engineColor = "#dd6e14"; + } else if(data.engine<=100) { + this.engineColor = "#3FA554"; + } + + if (data.dynamicNitro == true) { + if (data.nos === 0 || data.nos === undefined) { + this.showNos = false; + } else if (data.nos < 0){ + this.showNos = false;} else {this.showNos = true;} + } else if (data.dynamicNitro == false) { + if (data.nos < 0){ + this.showNos = false; + } else {this.showNos = true;} } - if (data.stamina == 0) { - this.showStamina = false; + if (data.nitroActive) { + this.nosColor = "#D64763"; } else { - this.showStamina = true; + this.nosColor = "#FFFFFF"; } - if (data.talking) { - this.talkingColor = "#FFFF00"; + + if (data.talking && data.radio) { + this.talkingColor = "#D64763"; + } else if (data.talking) { + this.talkingColor = '#FFFF3E'; } else { this.talkingColor = "#FFFFFF"; } @@ -193,32 +869,68 @@ const playerHud = { } else if (data.radio == 0 || data.radio == undefined) { this.voiceIcon = 'fas fa-microphone'; } + if (data.cruise === true) { + this.cruise = 1; + this.showCruise = true; + } else { + this.cruise = 0; + this.showCruise = false; + } + + if (data.harness === true) { + this.showHarness = true; + } else { + this.showHarness = false; + } + if (data.armed === true) { + this.showArmed = true; + } else { + this.showArmed = false; + } + + if (data.parachute >= 0 ) { + this.showParachute = true; + } else { + this.showParachute = false; + } + + if (data.dev === true ) { + this.showDev = true; + } else { + this.showDev = false; + } + + if (data.isPaused === 1) { + this.show = false; + } }, }, }; -const app = Vue.createApp(playerHud); -app.use(Quasar); -app.mount("#ui-container"); +const app2 = Vue.createApp(playerHud); +app2.use(Quasar); +app2.mount("#ui-container"); // VEHICLE HUD const vehHud = { data() { return { - nos: 0, + speedometer: 66, + fuelgauge: 69, + altitudegauge: 75, fuel: 0, - show: false, speed: 0, - cruise: 0, - street1: "", - street2: "", - showNos: false, seatbelt: 0, - direction: "", - cruiseColor: "", + showSquareB: 0, + show: false, + showAltitude: true, + showSeatbelt: true, + showSquare: false, + showCircle: false, seatbeltColor: "", }; }, + destroyed() { window.removeEventListener("message", this.listener); }, @@ -233,29 +945,45 @@ const vehHud = { vehicleHud(data) { this.show = data.show; this.speed = data.speed; - this.direction = data.direction; - this.street1 = data.street1; - this.street2 = data.street2; - this.fuel = data.fuel; - this.nos = data.nos; + this.altitude = data.altitude; + this.fuel = (data.fuel * 0.71); + this.showSeatbelt = data.showSeatbelt; + this.showAltitude = data.showAltitude; + this.showSquareB = data.showSquareB; + this.showCircleB = data.showCircleB; if (data.seatbelt === true) { this.seatbelt = 1; - this.seatbeltColor = "#28a745"; + this.seatbeltColor = "transparent"; } else { this.seatbelt = 0; - this.seatbeltColor = "#D64763"; + this.seatbeltColor = "#FF5100"; } - if (data.cruise === true) { - this.cruise = 1; - this.cruiseColor = "#28a745"; + if (data.showSeatbelt === true) { + this.showSeatbelt = true; } else { - this.cruise = 0; - this.cruiseColor = "#D64763"; + this.showSeatbelt = false; } - if (data.nos === 0 || data.nos === undefined) { - this.showNos = false; + if (data.showAltitude === true) { + this.showAltitude = true; } else { - this.showNos = true; + this.showAltitude = false; + } + if (data.fuel <= 20) { + this.fuelColor = "#ff0000"; + } else if (data.fuel <= 30) { + this.fuelColor = "#dd6e14"; + } else { + this.fuelColor = "#FFFFFF"; + } + if (data.showSquareB === true) { + this.showSquare = true; + } else { + this.showSquare = false; + } + if (data.showCircleB === true) { + this.showCircle = true; + } else { + this.showCircle = false; } if (data.isPaused === 1) { this.show = false; @@ -263,6 +991,6 @@ const vehHud = { }, }, }; -const app2 = Vue.createApp(vehHud); -app2.use(Quasar); -app2.mount("#veh-container"); +const app3 = Vue.createApp(vehHud); +app3.use(Quasar); +app3.mount("#veh-container"); diff --git a/html/brand-logo.svg b/html/brand-logo.svg new file mode 100644 index 0000000..6935a5e --- /dev/null +++ b/html/brand-logo.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + diff --git a/html/index.html b/html/index.html index 537dfd0..92fff62 100644 --- a/html/index.html +++ b/html/index.html @@ -1,80 +1,278 @@ - + + + - + + + +
+ +
-

💰 {{formatMoney(cash)}}

+

{{(cash)}}

-

🏦 {{formatMoney(bank)}}

+

{{(bank)}}

-

{{formatMoney(amount)}}

-

{{formatMoney(amount)}}

+

{{(amount)}}

+

{{(amount)}}

+
- + + +
+
+
- + + +
+
+
- + + +
+
+
- + + +
+
+
- + + +
+
+
- + + +
+
+
- + + + +
+
+ +
+ + + +
+
+ +
+ + + +
+
+ +
+ + +
-
- + + +
+ + + +
+
+ +
+ + + +
+
+ +
+ + + +
+
+ +
+ + +
+
-
- -
-
- +
+ + + {{(speed)}}
-
- +
+ + +
-
- +
+ + + {{(altitude)}}
-
- + +
+ + +
-
-

{{direction}} | {{street1}} | {{street2}}

-
-
+ +
+
+
+
+
+
diff --git a/html/responsive.css b/html/responsive.css new file mode 100644 index 0000000..5924e6b --- /dev/null +++ b/html/responsive.css @@ -0,0 +1,373 @@ +.responsive { + position: absolute!important; +} + +@media (min-width: 800px) { + .responsive { + margin-left: 32vh!important; + transform: scale(1, 1); + bottom: 6.9vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 7vh!important; + bottom: 6.7vh!important; + } + #altitudegauge { + position: relative; + left: 11vh!important; + } + #seatbelt { + position: relative; + left: 8.5vh!important; + } + speed { + font-size: 2vh!important; + } + speed:after { + font-size: 0.9vh!important; + } + altitude { + font-size: 2vh!important; + } + altitude:after { + font-size: 0.9vh!important; + } + .square { + left: 2.5vh!important; + bottom: 6%!important; + } + .circle { + left: 3.2vh!important; + width: 27.6vh!important; + bottom: 6.9%!important; + } +} + +@media (width: 3840px) and (height: 2160px) { + .responsive { + margin-left: 32.8vh!important; + transform: scale(1.3, 1.3); + bottom: 7.6vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 5.3vh!important; + bottom: 7.1vh!important; + } + #altitudegauge { + position: relative; + left: 8.2vh!important; + } + #seatbelt { + position: relative; + left: 6.5vh!important; + } + speed { + font-size: 1.2vh!important; + } + speed:after { + font-size: 0.6vh!important; + } + altitude { + font-size: 1.2vh!important; + } + altitude:after { + font-size: 0.6vh!important; + } + .square { + left: 2.4vh!important; + bottom: 6.1%!important; + width: 29.3vh!important; + } + .circle { + left: 3.6vh!important; + width: 27.6vh!important; + bottom: 6.9%!important; + } +} + +@media (width: 3440px) and (height: 1440px) { + .responsive { + margin-left: 33vh!important; + transform: scale(1.3, 1.3); + bottom: 7.6vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 6.4vh!important; + bottom: 6.85vh!important; + } + #altitudegauge { + position: relative; + left: 11.2vh!important; + } + #seatbelt { + position: relative; + left: 8.8vh!important; + } + speed { + font-size: 1.4vh!important; + } + speed:after { + font-size: 0.7vh!important; + } + altitude { + font-size: 1.4vh!important; + } + altitude:after { + font-size: 0.7vh!important; + } + .square { + left: 2.3vh!important; + bottom: 6.1%!important; + width: 29.3vh!important; + } + .circle { + left: 3.5vh!important; + width: 27.6vh!important; + bottom: 6.9%!important; + } +} + +@media (width: 2560px) and (height: 1440px) { + .responsive { + margin-left: 33.5vh!important; + transform: scale(1.3, 1.3); + bottom: 7.2vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 6.3vh!important; + bottom: 6.5vh!important; + } + #altitudegauge { + position: relative; + left: 11vh!important; + } + #seatbelt { + position: relative; + left: 8.8vh!important; + } + speed { + font-size: 1.4vh!important; + } + speed:after { + font-size: 0.7vh!important; + } + altitude { + font-size: 1.4vh!important; + } + altitude:after { + font-size: 0.7vh!important; + } + .square { + left: 2.3vh!important; + bottom: 6%!important; + } + .circle { + left: 3.5vh!important; + width: 27.6vh!important; + bottom: 6.7%!important; + } +} + +@media (width: 1920px) and (height: 1440px) { + .responsive { + margin-left: 32vh!important; + transform: scale(1.2, 1.2); + bottom: 7.4vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 6.3vh!important; + bottom: 6.9vh!important; + } + #altitudegauge { + position: relative; + left: 10vh!important; + } + #seatbelt { + position: relative; + left: 8vh!important; + } + speed { + font-size: 1.6vh!important; + } + speed:after { + font-size: 0.7vh!important; + } + altitude { + font-size: 1.6vh!important; + } + altitude:after { + font-size: 0.7vh!important; + } + .square { + left: 2vh!important; + bottom: 6%!important; + } + .circle { + left: 2.7vh!important; + width: 27.6vh!important; + bottom: 7%!important; + } +} + +@media (width: 1920px) and (height: 1200px) { + .responsive { + margin-left: 31.5vh!important; + transform: scale(1, 1); + bottom: 6.4vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 6.6vh!important; + bottom: 6.05vh!important; + } + #altitudegauge { + position: relative; + left: 10vh!important; + } + #seatbelt { + position: relative; + left: 8vh!important; + } + speed { + font-size: 1.8vh!important; + } + speed:after { + font-size: 0.8vh!important; + } + altitude { + font-size: 1.8vh!important; + } + altitude:after { + font-size: 0.8vh!important; + } + .square { + left: 2.2vh!important; + bottom: 6%!important; + } + .circle { + left: 3.2vh!important; + width: 27.6vh!important; + bottom: 7%!important; + } +} + +@media (width: 1920px) and (height: 1080px) { + .responsive { + margin-left: 32vh!important; + transform: scale(1, 1); + bottom: 6.9vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 7.2vh!important; + bottom: 6.6vh!important; + } + #altitudegauge { + position: relative; + left: 11vh!important; + } + #seatbelt { + position: relative; + left: 8.5vh!important; + } + speed { + font-size: 2vh!important; + } + speed:after { + font-size: 1.2vh!important; + } + altitude { + font-size: 2vh!important; + } + altitude:after { + font-size: 0.9vh!important; + } + .square { + left: 2.5vh!important; + bottom: 6%!important; + } + .circle { + left: 3.7vh!important; + width: 27.3vh!important; + bottom: 7%!important; + } +} + +@media (width: 1280px) and (height: 720px) { + .responsive { + margin-left: 30vh!important; + transform: scale(0.65, 0.65); + bottom: 4.7vh!important; + } + #speedometer { + position: relative; + left: 2.5vh!important; + } + #fuelgauge { + position: relative; + left: 8.6vh!important; + bottom: 5.2vh!important; + } + #altitudegauge { + position: relative; + left: 11vh!important; + } + #seatbelt { + position: relative; + left: 8.5vh!important; + } + speed { + font-size: 3vh!important; + } + speed:after { + font-size: 1.4vh!important; + } + altitude { + font-size: 3vh!important; + } + altitude:after { + font-size: 1.4vh!important; + } + .square { + left: 2.5vh!important; + bottom: 6%!important; + } + .circle { + left: 4vh!important; + width: 27.6vh!important; + bottom: 6.9%!important; + } +} diff --git a/html/styles.css b/html/styles.css index 9f5a0b4..5636bbc 100644 --- a/html/styles.css +++ b/html/styles.css @@ -1,9 +1,57 @@ -@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@500&display=swap"); +@import url('https://fonts.googleapis.com/css2?family=Work+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); +@import url('https://fonts.cdnfonts.com/css/pricedown'); +@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap'); + +.text-hud { color: #fff!important; } +.text-checkbox { color: #dc143c!important; } +.bg-hud { background: #f82952!important; } +.text-check { color: rgba(255, 255, 255, 0.8)!important; } +.bg-active-tab { background: #171717!important; } +.q-checkbox__svg { color: #000!important; } +.bg-active-check { color: #f7a863!important; } +.bg-panel { background: #1e1e1e!important; } +.q-toggle__inner { margin-left: -0.5vh!important; } +.q-panel>div { margin-bottom: 18%!important; } +.q-field__control { margin-left: 2.5%!important; } +.q-mb-md { margin-bottom: 0px!important; } +.q-mb-md-d { padding-left: 10px!important; padding-bottom: 10px!important;} +.q-item__section--side { padding-right: 0px!important; } +.q-item { padding: 8px 0px!important; } +.q-tab-panels { border-top-right-radius: 12px!important; border-bottom-right-radius: 12px!important; } +.q-splitter__panel.q-splitter__before { border-top-left-radius: 12px!important; border-bottom-left-radius: 12px!important; } +.q-tabs--vertical.q-tabs--not-scrollable .q-tabs__content { border-top-left-radius: 12px!important; border-bottom-left-radius: 12px!important; } +.q-splitter--vertical>.q-splitter__separator { width: 0px!important; } +.q-item__section--avatar { min-width: 40px!important } +.q-checkbox__inner--indet .q-checkbox__bg, .q-checkbox__inner--truthy .q-checkbox__bg { box-shadow: 0px 0px 3px 3px rgb(220 20 60 / 15%)!important; } +div#q-loading-bar { display: none!important; } +::-webkit-scrollbar { display: none!important; } +hr { opacity: 0.1!important; } + +div#openmenu { + display: none; + position: absolute; + width: 50%; + top: 45%; + left: 50%; + transform: translate(-50%,-50%); +} -* { - font-family: "Poppins", sans-serif; +.brand-logo { + width: 25%; } +.text-health { color: rgb(33, 171, 97) !important; } +.text-stress { color: rgb(255, 0, 0) !important; } +.text-nos { color: rgb(255, 72, 133) !important; } +.text-cruise { color: rgb(255, 72, 133) !important; } +.text-armed { color: rgb(255, 72, 133) !important; } +.text-harness { color: rgb(182, 72, 255) !important; } +.text-oxygen { color: rgb(138, 168, 189) !important; } +.text-parachute { color: rgb(0, 0, 0) !important; } +.text-dev { color: rgb(0, 0, 0) !important; } +.text-gauge { color: rgb(255, 255, 255) !important; } + + #main-container { width: 100%; height: 100%; @@ -15,80 +63,117 @@ right: 2vw; top: 2vh; font-weight: 400; - font-size: 29px; + font-size: 40px; } -#money { +#sign, #bank { + font-family: 'Pricedown Bl', sans-serif; text-align: right; - color: #28a745; + color: #00ac31; + text-shadow: -1px -1px 0 rgba(0,0,0, 0.7), 1px -1px 0 rgba(0,0,0, 0.7), -1px 1px 0 rgba(0,0,0, 0.7), 1px 1px 0 rgba(0,0,0, 0.7); } -#money-minus { +#plus { + font-size: 50px; + font-family: 'Pricedown Bl', sans-serif; text-align: right; - color: red; + color: #00ac31; + text-shadow: -1px -1px 0 rgba(0,0,0, 0.7), 1px -1px 0 rgba(0,0,0, 0.7), -1px 1px 0 rgba(0,0,0, 0.7), 1px 1px 0 rgba(0,0,0, 0.7); } -#cash, -#bank, -#plus { - color: #ededed; +#minus { + font-size: 50px; + font-family: 'Pricedown Bl', sans-serif; + text-align: right; + color: #ac0000; + text-shadow: -1px -1px 0 rgba(0,0,0, 0.7), 1px -1px 0 rgba(0,0,0, 0.7), -1px 1px 0 rgba(0,0,0, 0.7), 1px 1px 0 rgba(0,0,0, 0.7); } -#minus { - color: red; +#money { + font-family: 'Pricedown Bl', sans-serif; + text-align: right; + color: #ffffff; + text-shadow: -1px -1px 0 rgba(0,0,0, 0.7), 1px -1px 0 rgba(0,0,0, 0.7), -1px 1px 0 rgba(0,0,0, 0.7), 1px 1px 0 rgba(0,0,0, 0.7); } /* Player HUD */ #playerhud { - display: flex; - position: absolute; - bottom: 0.50vh; - left: 1.5vh; -} - -/* Vehicle HUD */ - -.ui-car-fuel, -.ui-car-nos, -.ui-car-seatbelt, -.ui-car-cruise, -.ui-car-speed, -.ui-car-street { position: absolute; + display: flex; + left: 3vh; + bottom: 0.2vw; } -.ui-car-speed { - bottom: 4vh; - left: 16vw; -} - -.ui-car-fuel { - left: 18.9vw; - bottom: 1.9vw; -} - -.ui-car-nos { - left: 16.7vw; - bottom: 5.4vw; +.q-ml-xl { + margin-left: -22px!important; /* Change this to space radials */ } -.ui-car-seatbelt { - left: 19.1vw; - bottom: 3.56vw; -} +/* Vehicle HUD */ -.ui-car-cruise { - left: 18.3vw; - bottom: 8.7vh; +speed:after { + content: "MPH"; /* If using KPH change this content from MPH */ + display: block; + padding-top: 3px; + padding-left: 2px; + padding-right: 2px; + padding-bottom: 8px; + font-weight: 900; +} + +altitude:after { + content: "ALT"; + display: block; + padding-top: 10px; + padding-left: 2px; + padding-right: 2px; + font-weight: 900; +} + +speed { + transform: rotate(150deg); + font-size: 2.4vh; + position: fixed; + color: #fff; + text-align: center; + font-weight: 600; + text-shadow: -1px -1px 0 rgba(0,0,0, 0.7), 1px -1px 0 rgba(0,0,0, 0.7), -1px 1px 0 rgba(0,0,0, 0.7), 1px 1px 0 rgba(0,0,0, 0.7); +} + +altitude { + transform: rotate(135deg); + font-size: 2.4vh; + position: fixed; + color: #fff; + text-align: center; + font-weight: 600; + text-shadow: -1px -1px 0 rgba(0,0,0, 0.7), 1px -1px 0 rgba(0,0,0, 0.7), -1px 1px 0 rgba(0,0,0, 0.7), 1px 1px 0 rgba(0,0,0, 0.7); +} + +.border { + bottom: 7.9%; + left: 1.3%; + width: 0%; + text-align: center; +} + +.square { + bottom: 6.30%; + width: 29vh; + height: 18.5vh; + border: 4px solid #bababa; + position: absolute; + display: inline-block; } -.ui-car-street { - font-size: 15px; - text-transform: uppercase; - bottom: 0vh; - left: 16.5vw; - color: #ededed; +.circle { + bottom: 6.9%; + width: 27vh; + height: 22.9vh; + border: 4px solid #bababa; + position: absolute; + display: inline-block; + border-radius: 50%; } /* Animation */ @@ -105,3 +190,13 @@ transform: translateX(20px); opacity: 0; } + +.fade-enter-active, +.fade-leave-active { + transition: opacity 2s ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} diff --git a/locales/en.lua b/locales/en.lua new file mode 100644 index 0000000..1a8d393 --- /dev/null +++ b/locales/en.lua @@ -0,0 +1,21 @@ +local Translations = { + notify = { + ["hud_settings_loaded"] = "HUD Settings Loaded!", + ["hud_restart"] = "HUD Is Restarting!", + ["hud_start"] = "HUD Is Now Started!", + ["hud_command_info"] = "This command resets your current HUD settings!", + ["load_square_map"] = "Square Map Loading!", + ["loaded_square_map"] = "Square Map Has Loaded!", + ["load_circle_map"] = "Circle Map Loading!", + ["loaded_circle_map"] = "Circle Map Has Loaded!", + ["cinematic_on"] = "Cinematic Mode On!", + ["cinematic_off"] = "Cinematic Mode Off!", + ["engine_on"] = "Engine Started!", + ["engine_off"] = "Engine Shut Down!", + ["low_fuel"] = "Fuel Level Low!", + ["access_denied"] = "You Are Not Authorized!", + ["stress_gain"] = "Feeling More Stressed!", + ["stress_removed"] = "Feeling More Relaxed!" + } +} +Lang = Locale:new({phrases = Translations, warnOnMissing = true}) \ No newline at end of file diff --git a/server.lua b/server.lua index 461b5ce..35bc118 100644 --- a/server.lua +++ b/server.lua @@ -14,6 +14,14 @@ QBCore.Commands.Add('bank', 'Check Bank Balance', {}, false, function(source, ar TriggerClientEvent('hud:client:ShowAccounts', source, 'bank', bankamount) end) +QBCore.Commands.Add("dev", "Enable/Disable developer Mode", {}, false, function(source, args) + if QBCore.Functions.HasPermission(source, 'admin') then + TriggerClientEvent("qb-admin:client:ToggleDevmode", source) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t("notify.access_denied"), 'error') + end +end) + RegisterNetEvent('hud:server:GainStress', function(amount) local src = source local Player = QBCore.Functions.GetPlayer(src) @@ -33,7 +41,7 @@ RegisterNetEvent('hud:server:GainStress', function(amount) end Player.Functions.SetMetaData('stress', newStress) TriggerClientEvent('hud:client:UpdateStress', src, newStress) - TriggerClientEvent('QBCore:Notify', src, 'Getting Stressed', 'error', 1500) + TriggerClientEvent('QBCore:Notify', src, Lang:t("notify.stress_gain"), 'error', 1500) end end) @@ -57,6 +65,19 @@ RegisterNetEvent('hud:server:RelieveStress', function(amount) end Player.Functions.SetMetaData('stress', newStress) TriggerClientEvent('hud:client:UpdateStress', src, newStress) - TriggerClientEvent('QBCore:Notify', src, 'You Are Relaxing') + TriggerClientEvent('QBCore:Notify', src, Lang:t("notify.stress_removed")) end end) + +QBCore.Functions.CreateCallback('hud:server:HasHarness', function(source, cb) + local Ply = QBCore.Functions.GetPlayer(source) + local Harness = Ply.Functions.GetItemByName("harness") + if Harness ~= nil then + cb(true) + else + cb(false) + end +end) +QBCore.Functions.CreateCallback('hud:server:getMenu', function(source, cb) + cb(Config.Menu) +end) \ No newline at end of file diff --git a/stream/circlemap.ytd b/stream/circlemap.ytd new file mode 100644 index 0000000000000000000000000000000000000000..00c0622ac9bc11125fb519d4adb0a9d117ad374d GIT binary patch literal 5394 zcmd5=>t9k?+qQ9hX!0$Z#~P^&IydSVl9iPT**QB<9x5#*wY2F(Rw^QFG&@X1*+I+7 zBr_v5HM8;r><$x-nlh$Hrhr9;g0dyVEo?UXb)Ns=eLlVG_gnY+bYJUU_xf;M_Z1wn z#&@E_KkEkvCx;*Y9%!LVI=yQ0+0WCq@aJbQy>-8;$KjVLS;tOi=chX#cbMSkk{SKl zYh!iVE^oJS59ef+@#X9K(U4)#tT zoI@Tz{oXR%rkhgJ&yuD)SbIy7b78~Q@EqOFscKb&s@GbtO;wNkPbL2ePbqW9P7E7V z@(y+-1NBDw*BLi7mP0#TzYCYdRWGSNIxFrJPd*LRtemvy-hpWa4MFuYqn=GFyd9Fy zx_AJbL8G;soF5I-h-nrD~LXexoMN*=sEf)LB6NdL<)dhMgu<}&`ryhwP1tSUfc z*c0ES0u8To^)f#i?@`}LTVTEOd{}e#O6GGKBav&fPnxooVX(530Wn*lpeJ#Tl%eXo zk?@6ET~|uGprdt-0-BVdQ4TN^`us#%N`9mO)?54Gf8E3Dq#{nXbjtmxsf%?B|;tf&h8@_NJstW~&F5wnm} zXv%?omTH-r*NncGJWud(0vNY46IJ6sdE8s;JnFJSt9K^`Mer%y>Hp zl4nbJ-cnXP(nY>)Mo%={#=P*Ur^G4RRh?~Nvb!%2jAopEtlr!kFG$JN!7npi8?if! zmDWcQk?_%Eaekta`IY@P^g%SQ$b2@goY`>)Y~H4Vf{8PX_*c&2diTPNb19qz0Yd9KfO}q8efH0c4kdlaHEQE zd>vFeTY+ETeD;YOXLN8P$7hjn7w5$Dd0C)BT8#17gca^Jd(v0FEQ#Cl$ctvarK! zj(3jpGJQ%-)Z~}7i0fO51f)na>zG@TWZLWqqQOO`Pd_Pc_pyzy$7LJL8Aq0R&OFj_ z=!E}q&4)JGM%;{&k`w;kVKQwmJ8*f_RK1h$!nt1*dyxF#!1%Pk6M-}6k9=dE>7J># zFuI0D>s}M^#!tSvm)$nN*s|b;=QDeG#5eZq(2|6ZGS_+2OV-oAu#OkcRyaR;q`PO7 zMyxN&8D(pg=#L3e>Dr&9tg31*?Y-@|001QB6XoZvr;{OeVCiAn?ClB@ugWewrUQZ% z&AtIrbfPh0DH+^bw!

X5MD96$OR-FY z{cRh;zA8U~Y6JQzwT4u2*xy_J{x0fNwP!sq-ODYxmTlyRWb_D~R|dcWVW&N->YaW%wtmM&;rb zQhT!r*RZybX2l z>PXNu*F-`atf`O3(#6aw$cL@>(g1xsf89UeD$*C_ppHt!$tp^(qxNw83lZEeZ6OzS zhh^eyEv#9eENnnd#Pdy}w}d*l|F>J`*k;o~uQlR&7Bb>Ia40BIxhw0cCY@0_rPhkm zeGx_9C*;jM{FgD!WGpt2mM=}7Q(li3?6-Lk^8OgIy&W~0_z18|*rV6d)9oC7RkI>! zSJ_|4zYG-OQ_t+n2H#`LCU~CkpX|o`^xdBRark*5j4O-V4}O-ve_cR+IIQqXY6)OW z{(@d0K!J=S>Z(dx79eqhN8l6|F;?UgSv+-u(+c8f(@hDvFG`bszZ$CM@)Ek2wYY4V ze>lefY0kEJx)@#$UetOqipPR`M^MLM=Y1j^r_NvJHPH+kIqz7$BhGut3tbxaYc<vFKj%kT_~-S zDVhN0zM3Tuxc$S_4w$0y(K~LXsF|6#V<4bh&Zs^VwjV9ubF+fj(~gNMXtS(Nv?kl= zaO;ucO4U%8mgC{wVt0`GwbqNjr354=9@SUp=?Tw+AA{=vgVy_RdUtuO`fM}8`i zi;VUMYv;s`AuO~nGH)?-KBVInjFi~+S0_e(cr$J!~%wQ?!i0gxR`*R2Iuk`*g4VmDYu3=Gy%rPijETB zyT2INGHQmAiWMU;MXEQep9RmzbA7z$8ExMq!qGnC>N?u1m+wtKBq+(Fo2-?UVye-w~J@u0a6w_jVpx=Epb2NgWeY6En;XuqaJJf6N8<&1ntC6Pij7d@-`N zK)76by;OC%-|PV1`D0xTeY|Ev&j^xyQ~S<>GTizG^TDy2YOG*wZS7~^)xf}!H3r=?!xKoaOT#q_Xx?c7oXCLf{#OhCExc+%Ct|8+Z);2FE5z3p84BW~5t3+Bg z?6j5MWWnfoaC@uP5!0t3Kz@RCoVV(Xctah6=J{1+0yMsHnVeU5{n>uBs>Eso_h7ND zVVg%B|9poAUh0=uwzbJyQclxO<;80>vF$v*?`MG^>=0mg-+^U*eT)$_r9(?$^z>2` z2&}SKT?cDxqG@S`kmEs+vHJ;(|5g_F(6x;$EdOfS)q$#h7uwHPlN>b7AI0i=cZ}YE z)^dp|#U+aBx`kIGuVt;t#4U0)SrE1B*ACv{3@i5aY{|45JD5XVmfU+0;Jw0fmBQ8e zKN*~*ESEg8hdFBpmI6fcN!ho8!i?0wWR&J<#h@}QJ?2-pNlmcRU&dDp`xPIIVPe|Q zr`!`V$L$zJbw=6hYbM2tBF$iD7`BVF9eX>Yg9rQHH;`F|++cO$8`De;4%v9cnn_VD zVl3k7_7_-533K$kHy55@FTG$)CY+nJq$3Qwjm3(7B0o}EX|!^X7JrdQmr?U}5j5om z_9hGO{-|pWbs>BgBR`@SdTmy_dLJ(n+vylddUvS)hSJRQYHO>^{O6J%7@oqN!)&k% z!$>;|=jg%0tQVbjFbU1nn;nF9*}8WCmMY|WOqq~i$7{BZy5e%JpxgL9NO8BE#m>QE z`Be|?w+?Nsv@3Q_-&A1t)q9z^4pvD|5-P~aUDARz>rC8B{plw=pU6AOqouSRhmIWK z5cjkvD?z9O+r7F4b`3ha*>dg)cH;)yZs@>R z{=X;?RNI!~S6i%x;W{9@_*93ZTT#U<1SQZW;4V^^E?M#haFDV>v`E1YE>T?yH@bh6 zvUyQ3{6Y=8UOI0!#d*bsl_YdRzLaTs?Pj%b&JF|oj^$?)k`o1Zn<}uk|1-xyTCIc_ zzfL*y%wAVz`O7LO?laj97D-rLbS_j`{LKP1U561syWb;QHw@D#`jC9%zN=avX%}?+ z0o^=;zdT0WggP@d`-2`$h9Gj5hi}P54Tm9#YLne~ojbD)<;-0Na|9x__Hz0~pU=0D z8?iCG>;E8VchRl29gb9Xp4ovWE8YM61|tS;^vS&wo%k0eH@w2Y#8D@|}kcZBq% zJ^=;Pf_u$zrN1j7EqrddEYo;pIJiN`KEENzpESl^-w=-jzRf01!~I-{r@wt?xf*&8 zm()sdpJ0m)LAuTM;+f8R6x~st3n5cXTz+yfsFahQhEfe-dDIr?eNU3K7O}#ybWdbi zla)rL#&xT2fT0vC^6c#D?%j~!3cbND5fSivn{7Q$gKGtt{6^4O>6rL})|0c=i`UF; z8q*IK!VCSoNomGo_n;EFjBf#k%xSIa_|ld}yX4@Kn^#S!phbt+a3_V|g59|Snfy6@ z-NHA+rf3n4TXU+rOF{e763CYuKB{?a%)Um-6-RSv;2tO-0QvV9PS7KT8$mI^^8MN*|$JjTbOy`Iu_@r2k6 zNDhPzUe<9B73N(CqYOseI#0)^A#9I=)(eX~1mJ=yet}qMW8@Yq2~(P+`W}bLl%Eij;94camDb zyN@mz9-bJ2ABv5@?pe$9W6kdBWwawl3V^0Qbx8v}_^*paot;-HAbs6xsXYK?6ErjX zX57#jjH}d7t24c~p8|U9<3xu$^mS@sL1@ytGPPD+TJ@0mJVKhnX}UOnzgW%KnACx2 zFG2C4lH(65B|C?UvX-{4;6VY6DgJz;;dz~(yKF|DyCqb1d=nopNz4L%5LH5o(uW4M zAUPR~T54f$HmLWso~h<(k@ML>>k`4zx;y1i8|RK6t=t+L4td^Gc0ZPs9BIpu3BNZ#EQ7UeEqHPt8?t#8LT#8Oyl}y8u%4i)8^~L9 zRqtdlRWf(08KThXW{=){(18h{Q3Lf=%0tui<|Ln=Rih%5ekT%=A;|?2Kc^^2?Psz) z&68!G5D=vV<^?7C_qDVEGQrILI@;61b>ibkhEcfaV*hGA01UBFrCFjHa|AdNZeCP- zGUz+MLyz@84W6y@lM9hwQ$7slkbCP;L}Sw-n)xyi4sZXt?y1s zX4T(O^u~*5ir~6g$rUUx&y3|Kk4^fz4Q}t<6Z=kf@_KBCdEtE5DF4S4p-)=l5_fMGb%|KWG-c^50E+i%<1ZCe|VU&B1QEta|KKwnRtg=wdn-Np=; zkuI$*vb{4(?>bD+YSp*`8Ai&-TBJ1x=SU8OAD$;iwua|o+-a09kF z^*7;nCkin^$IPFsV3dnVbF5v=dx^kgSYE^Aw?!QU$w8?SCH@xvFJO7$^=}w662piM s?%7k(Ap<*gi_KmQ3Mjf2|EcZ6+p+cIXP=q8`u|VxUu!4*FJ;i)TL1t6 literal 0 HcmV?d00001 diff --git a/stream/minimap.gfx b/stream/minimap.gfx index fa596c62afacba1251be0159f078b798fa58b5d1..061bc2af5834a5d33c3e5196710a46647c831635 100644 GIT binary patch literal 191613 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

e&VJ(fzqFwNitS8c=LP!ck%x$_#p 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 literal 199737 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 V+!$0Llg8ZjWHM8gOkRZ?{vTKwSu_9u diff --git a/stream/squaremap.ytd b/stream/squaremap.ytd new file mode 100644 index 0000000000000000000000000000000000000000..1536902ac3d61c2955a04473d2a632f5c4eb2df1 GIT binary patch literal 833 zcmWFvb~fi_00AZjRtBaEZ_XL=H8}{hK9uz7QJrc!eZlqz3}PZv@|vbDY~(Ir;IbC( zPdupWv7;f}K!$PA?juVVss7xbW}I)d`SULMbw)2;&wX-#EB#78e7er7r#Sdn)^SYin7~nSHZ8cJ_U_KBXUGSCX7=l@)Jl66 zYWt`9+48^p^;%|Dx~e}uvp;>?|1&xNXWpz&Nc(*r$e8)oe)He-G@$6W`7>|+GrnD) zMxn&-{Qp2hfd>7bKjdwJ1k2m~|Ifd%HvonckPi$eU@(Eg>Gye1NCLfzPa=)B;9q;W M=Oh&xpg0po0L~iDIRF3v literal 0 HcmV?d00001