136 files

  1. [C#] Example/Wrapper for fetching world objects.

    Just an example/wrapper on how to properly use "GetClosestObjectOfType" and fetch data from an object.
    I've been using this in my server for a while now to make it easier to get XYZ and rotation of objects in bulk, instead of having to go through them in codewalker which can be a pain.
    Installation
    Move client_packages to your client_packages folder Move Serverside C#/GetWorldObjects.cs to your gamemode or script. Move objectLocations.json to your server root directory.  
    Usage
    The JSON file included in the zip contains the pacific bank vault door as an example object. Use the /getworldobjects or /gwo command to run through all the items in the JSON file and fetch the X, Y, Z and XYZ Rotation of the object.
    As of right now it'll simply log the object to your server console and continue to the next object in the list, you can extend this functionality by editing the "REMOTE_EVENT_OnWorldObjectFetched" method in GetWorldObjects.cs server-side script.
    JSON file object info
    public class ObjectLocation { // The model name to look for, you can fetch this from CodeWalker or RAGEMP objectdb for example. public string Model { get; set; } // The model that should replace the model at this location, optional. I personally used this to store in the database and then on server start it'd delete the world object and replace it with the object model specified here. public string ReplacementModel { get; set; } = ""; // A position within X distance of the object you want to get the data of, distance can be specified by the Radius. public Vector3 Position { get; set; } // An optional type you can pass to the method so you can use it later on for data storage purposes(eg keep objects of certain types separated by an ID) public int Type { get; set; } = 0; // The radius to find the object, doesn't have to be too precise altho I generally recommend putting the player's teleport coordinates as close to the object as possible and decreasing range to 5 or 10. public int Radius { get; set; } } [ { "Model": "v_ilev_bk_vaultdoor", "ReplacementModel": "v_ilev_bk_vaultdoor", "Type": 0, "Radius": 25, "Position": { "X": 254.2859, "Y": 225.3845, "Z": 101.8757 } }, { "Model": "another_object_model_name", "ReplacementModel": "another_object_model_name_to_replace", "Type": 0, "Radius": 10, "Position": { "X": 1234.567, "Y": 123.456, "Z": 12.345 } }, ... ] All you have to do is add more items to the JSON file and it'll run thru all of them.

    14 downloads

       (0 reviews)

    0 comments

    Updated

  2. Login / Register html template

    https://www.dropbox.com/s/3ump4anqb45mm9x/1uJJ7nb7a9.mp4?dl=0
     
    This is just a template for your login / register system.

    2 downloads

       (0 reviews)

    0 comments

    Submitted

  3. [3D] Client-side Sound API.

    Description:
    This resources provides the ability to create/control sound in 3D via custom API. Also demonstrates the ability to use custom urls (Radio streams, local mp3 files). 3D sound should be synced automatically without the need of extra work. If you're looking for Frontend sounds then it should be easy to implement. If many demanded 2D sounds for this resource, i'll add it later.
    API:
    // Client-side // FUNCTIONS mp.game.audio.playSound3D(url, pos, volume, range, dimension) /* * url: string (Required) [Links and local package:// protocol are supported] * pos: vector3 (Required) * volume: int (Optional, Default: 1) [Range: 0 to 1] * range: int (Optional, Default: 60) [Max Range: 60] * dimension: (Optional, Default: 0) * Returns Object. * Object Properties: - id (sound's ID) - url (sound's url) - pos (sound's position) - volume (sound's volume) - range (sound's max range) - dimension (sound's dimension) - listeners (players array that are listening to the sound) - paused (If sound is paused) */ mp.game.audio.setSoundVolume(id, volume); /* * id (Sound's ID) * volume (sound's volume) Range (0.1 - 1) */ mp.game.audio.setSoundPosition(id, pos); /* * Useful for portable sound * id (Sound's ID) * pos (sound's new position) */ mp.game.audio.setSoundRange(id, range); /* * id (Sound's ID) * range (Max Range 60) (Increase it by editing the maxRange...) */ // EVENTS: /* * EventName: audioFinish * params: soundID (Sound's ID that is finished Playing) */ /* * EventName: audioError * params: soundID (Sound's ID that had error), errorObject {code: 'error code', error: 'error description'} */ // Example let sound = mp.game.audio.playSound3D('http://rfcmedia.streamguys1.com/MusicPulse.mp3', pos, 60, 1, 0); sound.destroy(); // Destroys the sound sound.pause(); // Pauses the sound sound.resume(); // Resumes the sound If you have any issues or suggestions, you know the usual routine.
    Credits:
    - Thanks to George for his 3D voice method.
    - Thanks to soundManager 2 for bringing music to life in CEF
    I wish you'll enjoy some epic music.

    75 downloads

       (2 reviews)

    0 comments

    Submitted

  4. RAGE MP Clothes Addon For MP Charater

    With this dlcpack, you're able to add up to hundreds of clothing WITHOUT replacing anything from the original vanilla game. 
    In this pack, you'll be able to add the following as addon content for both MP_Female and MP_Male:
    Heads/Faces (Up to 111!) Beards/Masks (Up to 159!) Hairstyles (Up to 185!) Pants (Up to 128!) Feets/Shoes (Up to 127!) Secondary Tops (Up to 106!) Decals/Emblems (Up to 93!) Primary Tops (Up to 127!) How does it work?:
    From learning the hex codes in the .ymt files and spending hours figuring out where everything was, I made changes and added things into the .ymt files to make this possible. However, the dlcpack overwrites the initial MP clothing dlcpack (the original clothing from the game, albeit it doesn't REPLACE any clothing) so the limits are added BEFORE any new dlc clothing. DLC clothing comes after the limits as they were pushed further to make way for the newer limits adjusted.
    In the future I will possibly adjust it even more if it's necessary.
     
    How do I get addon content to work?
    Simple.
    Go into streamedpeds_mp.rpf From there, it should be easy sailing. MP_Female stuff goes in mp_f_freemode_01 and MP_Male stuff goes into mp_m_freemode_01.  Don't forget to affix (basically dragging a file into the "ArchiveFix" program) "streamedpeds_mp" or "streamedpeds_mp" if you added anything into those archive .rpfs. Replace them inside the .rpf archive after affixing. As for naming them, ONLY name them based off what I have shown here:
    Head DrawableIDs: (46 - 157) Models: head_xxx_r Textures: head_diff_000_a_whi (or _chi, _bla, _lat, _pak, _ara at the end) Berd/Mask DrawableIDs: (8 - 167) Models: berd_xxx_u Textures: berd_diff_xxx_a_uni Hair DrawableIDs: (38 - 223) Models: hair_xxx_u Textures: hair_diff_xxx_a_uni Pants DrawableIDs: (16 - 144) Models: lowr_xxx_r Textures: lowr_diff_xxx_a_whi Feet/Shoes DrawableIDs: (16 - 143) Models: feet_xxx_u Textures: feet_diff_xxx_a_whi Accessory/Tops DrawableIDs: (16 - 122) Models: accs_xxx_u Textures: accs_diff_xxx_a_uni Decal/Emblem DrawableIDs: (0 - 93) Models: decl_xxx_u Textures: decl_diff_xxx_a_uni Tops2 DrawableIDs: (16 - 143) Models: jbib_xxx_u Textures: jbib_diff_xxx_a_uni Start from the number from one of the components of which you're adding from the number the limit suggest. (For an example, if you're adding some shoes mod for the first time, then rename the files to "feet_016_u" and feet_diff_016_a_whi) 

    90 downloads

       (2 reviews)

    0 comments

    Updated

  5. Synced parachute

    🎈 Motivation
    Currenly I develop battle royal gamemode and it was anoying to see how are players falling without any animation. Imagine how is hard to see where your opponents without any parachute object.

    🛠️ Installation:
    Just extract parachute.zip into your server root.
    (it will replace your client_resources/index.js)

    📸 Falling animation and Parachute object fix:

     

    💡 Featues:
    Parachute object is destroying when player is near the ground after 3 seconds Synced falling animation without parachute Synced parachute attaching Working only near streamed players More features from you 😉  

    85 downloads

       (4 reviews)

    0 comments

    Updated

  6. No reticle for all weapons.

    Every weapon has no reticle when aiming. (Working with snipers too.)
     
    Installation:
    1) Unpack the zip.
    2) If you haven't already, create a "dlcpacks" folder inside your "client_packages" folder.
    3) Drop the "nosight" folder inside "dlcpacks"

    54 downloads

       (0 reviews)

    0 comments

    Updated

  7. [Perfect for RP Servers]

    What is this amazing script?
    You are also able to control the steering (unable to set straight afterwards due to setSteeringAngle not being implemented yet) so you can move the vehicle to the side of the road.
    If you are an RP server then this is perfect for you!
    With some wizard maths, the text and position is at the correct end of each car and is based on distance (This has taken over 6 hours to get right). 
     
    Configuration
    I have already built in configuration to set whether you can allow it on locked vehicles, low health vehicles, whether the engine is off and certain vehicle classes.
    These can all be configured in the config section of the file:
    this.config = {            AllowVehicleClass: [0, 1, 2, 3, 4, 5, 6, 9, 18], // These are the normal vehicles in the game classes - to disable it, set it to false            MaxVehicleCubedSize: 25, // This is the vehicle length * width - as an idea an ambulance is 21            LockHandbrakeProtection: false, // If set - you can't push a locked vehicle (Theft prevention or ditching cars)            EngineProtection: false, // If set - you can only push if the enginer is turned off            VehicleHealthProtection: false, // Must be less than 1000 or false which de-activates checking vehicle health            PushEventName: false, // Set this to send an event to your server with the relevant Vehicle and Player attached (ie 'pushing_car')            LabelsDisplayed: true, // Show labels near the pushing positions when close enough            DebugPositions: false, // View pushing positions as markers so they are more visible            AllowVehicleSteering: true, // Allows the player to turn the wheels of the vehicle using A and D keys }  
    In Action
    To see how it looks working just checkout:
    https://streamable.com/ab2v5
     
    Questions
    Lastly if you have any questions feel free to give me a shout on discord (wdoyle2) or respond in the comment section.
    This is currently not on github but more than happy to post it for any future pull requests. 

     

    150 downloads

       (6 reviews)

    0 comments

    Updated

  8. Compass

    Just simple compass what you can use.
    You need to add compass.js path, to index.js on client_packages.

    49 downloads

       (0 reviews)

    1 comment

    Submitted

  9. Map Editor 2 [BETA][Fixed Markers]

    MAP EDITOR 2 [BETA v2.0.0] (Free and doesn't have keyboard only controls)
    Known Bugs: A million of them, don't tell me about it.
    (Server)
    Drop the MapEditor2.dll file in your resource resources
    (Client)
    Drop the MapEditor2.cs and Objects.cs files in your cs_packages folder

    Info:
    Server Commands:
    /loadmap name --Globally loads the map instead of client-sided only
    /unloadmap name
    Client Controls:
    Press M to start/stop the editor
    WSAD to move
    Q & E move you down and up
    Hold right-click to move, while moving you can scroll down/up to increase speed
    Hold left control to move slow
    Hold shift to move fast
    Press Delete to delete the highlighted object
    You can drag objects by holding left-click on them
    You can duplicate objects by right-clicking and then clicking "Clone Object"
    "Exit Here" Button - Drops you at the location your camera is
    "Exit Back" Button - Drops you back at the original location you started the editor
    "Place Objects On Ground" Button - When you drag, the object will be placed on the ground properly
    "Save Map" Button - Hover over the name box to input a name, click save to save the map
    "Load Map" Button - Hover over the name box to input a name, click load to load the map (Client-sided load)
    "Clear Map" Button - Wipes the current loaded map
     
    Upcoming features;
    -Vehicle list (Support exists)
    -Checkpoints
    -Undo & Redo
    -Group select
    -Adding objects to favorites (System in place but isn't finished)

    723 downloads

       (17 reviews)

    3 comments

    Updated

  10. Character Creator

    Custom character creator resource, use /creator to access it.
    Installing
    Put the files you downloaded in their respective places Download & install NativeUI if you haven't yet, this script needs it Add require('charcreator') to client_packages/index.js All done Notes
    There might be bugs here and there especially on clientside The code is pretty messy right now, will be improved in the future  
     

    3786 downloads

       (10 reviews)

    6 comments

    Updated

  11. RageMP new hairstyles!

    - Up to 20 NEW hairstyles for males!
    - Up to 19 NEW hairstyles for females!
    - Root's character creator adaption supported!
     
    Installation:
    1) Unpack the rar.
    2) If you haven't already, create a "dlcpacks" folder inside your "client_packages" folder.
    3) Drop the "gtahairs" folder inside "dlcpacks"

    114 downloads

       (3 reviews)

    0 comments

    Updated

  12. MoneyAPI

    This resource probably won't get future updates, check out Currency API instead.
    Easy to use money system for your server. It handles saving&loading and provides you a custom data key to get/set a player's money.
    Installing
    Put the files you downloaded in their respective places Add require('moneyapi') to client_packages/index.js Open packages/moneyapi/constants.js and put your MySQL info (maybe edit the settings too while you're at it...) Congrats, you're all done Settings (packages/moneyapi/constants.js):
    startingMoney use this setting to change how much money players start with. Default: 0 autoSaveInterval use this setting to change how frequent auto saving happens (in minutes), you can set it to 0 if you want to disable auto saving. Default: 5 Example
    You can access a player's money from customMoney property using either .data.customMoney or .getVariable("customMoney").
    mp.events.addCommand("smoney", (player, _, money) => { // set the player's money to the specified amount money = parseInt(money); if (!isNaN(money)) { player.data.customMoney = money; } else { player.outputChatBox("Invalid amount specified."); } }); mp.events.addCommand("cmoney", (player, _, amount) => { // change the player's money by the specified amount amount = parseInt(amount); if (!isNaN(amount)) { player.data.customMoney += amount; } else { player.outputChatBox("Invalid amount specified."); } }); mp.events.addCommand("buyhp", (player) => { // refill a player's health for $100 if (player.data.customMoney >= 100) { player.health = 100; player.data.customMoney -= 100; player.outputChatBox("Refilled health for $100."); } else { player.outputChatBox("You don't have $100."); } }); Notes
    First of all, thanks to @Donboo for their MySQL example which you can find here. This script won't save while the server is shutting down but will save player money when they disconnect or when autosave happens. This script uses an int(11) field to store a player's money. If you think $2147483647 isn't enough, you might want to change it. For some reason, MoneyAPI HUD elements will be off position in 1914x1080 windowed resolution. This script won't update the money display on the ESC/pause menu. (This note is obsolete if you're using the GameHUD version)

    1574 downloads

       (9 reviews)

    2 comments

    Updated

  13. Vice City Minimap

    Video: https://streamable.com/2cg3g
    This is a cef minimap for vice city in js.
    Helth and armour progress bars don't work you can make it work easily

    87 downloads

       (5 reviews)

    0 comments

    Updated

  14. Better Instructional Buttons

    NB: This include does not entirely work like the original.
    NB: The class is now called instructionalButtons instead of hudManager.
    NB: This include also includes a more advanced version of the BasicScaleform class by kemperr, just called ScaleForm now.
     
    v2.0.0
    - Added instructionalButton.hasControl(control).
    - Added instructionalButton.getButtonCount().
    - Removed the padding of 10.
    - Added RGB support (instead of just RGBA... alpha defaults to 180 for RGB).
    - Revamped the structure used to store buttons (it was dumb before, wasting variables and not making use of Javascript features).
    v1.0.2
    - You can now alter any instructional button without it being redrawn/shown to you (Basically you can edit them, without them popping up on your screen, forcefully).
    - Added instructionalButton.changeButtonControl(title, new_control).
    v1.0.1
    - Fixed the an issue where when using multiple instructional buttons multi script wide, if one button count was more than others, the buttons would show up across different instructional buttons.
    - Removed support for hex colours with a #. Now to use a colour, just use 'FF00FF'. Using # here is a waste of time.
    v1.0.0
    - Fixed instructional buttons rendering last button created on the client only.
    - Instructional buttons background now default to black, if no colour was used.
    - A padding of 10 is now set on horizontal instructional buttons.
    - Support for custom button names.
    - Added instructionalButton.changeButtonTitle(control, new_title).
    - Added instructionalButton.isActive().
    - Example:
    const instructions = require('/better_instructions'); const horizontalInstructionList = new instructions(-1); horizontalInstructionList.addButton('Create Roadblock', 'M'); horizontalInstructionList.addButton('Right', 175); horizontalInstructionList.addButton('Left', 174); if(!horizontalInstructionList.isActive()) { horizontalInstructionList.toggleHud(true); } setTimeout( () => { if(horizontalInstructionList.isActive()) { horizontalInstructionList.toggleHud(false); } }, 10000); /* Vertical Instructions */ const verticalInstructionList = new instructions(1, 'ff000'); modShopInstructions.addButton('Toggle RAGE Menu', 'F2'); if(!verticalInstructionList.isActive()) { verticalInstructionList.toggleHud(true); } setTimeout( () => { if(verticalInstructionList.isActive()) { verticalInstructionList.toggleHud(false); } }, 10000);  
    Original Include
    - Credits go to Captien for the original release.

    87 downloads

       (1 review)

    2 comments

    Updated

  15. Simple Admin System (JSON)

    (Converted from GT-MP 31 MAY - Originally created 7 APR)
    I decided to convert my old resource to provide examples for others as well as learn the new API of RageMP.
     
    A simple approach to an admin system that makes use of JSON instead of a common SQL Database.
    Keep in mind this is nothing but a simple admin system to inspire someone else or continue to work on. There's plenty of commands missing if you intend to fit it to your own gamemode. I will mention that the ban system could use more work. At the moment it's easy to bypass seeing it's only based on the socialClubName of a player. Anyway, it's just an attempt at messing around a bit with JSON. If you're going to create a larger system I'd advice doing it differently. To alter your admin level, first register ingame and open up your JSON file. In the file you'll see your admin level that can range from 1-5. 1 being Junior & 5 being defined as Mangement.
    Command Description /login [password] Used to login to your admin account and gain access to the commands. /register [adminName] [password] Used to register an admin account. Currently there's no restrictions to prevent everyone from doing so. /ahelp Will display all commands avaliable to admins. /mute [target] Mutes the player and makes him unable to use the chat. /unmute [target] Unmutes the player and allows him to use the chat again. /spawnwep [wepName] [ammo] Creates a weapon and gives it to yourself with 9999 ammo unless specified otherwise. /spawncar [vehicleName] [color1] [color2] Create a vehicle and places you in the driversseat. Uses default color 1 unless specified otherwise. /setkevlar [target] [amount] Gives the target the desired amount of armor. /sethealth [target] [amount] Gives the target the desired amount of health, unless the target is dead. /goto [target] Teleports you to the target's position. /gethere [target] Teleports the target to your position. /kick [target] [reason] Simply kicks the player from server and display a message for everyone to see. /ban [target] [reason] Kicks the player and creates a ban file with the specified reason.

    1882 downloads

       (0 reviews)

    1 comment

    Submitted

  16. Shortcuts (Animations) on Numpad 1.0.0 Javascirpt

    About this File
    I used this res to create my res: Shortcuts (Animations) on Numpad 1.0.0 Before first Startup: you import db.sql in your Database and change "Yourname" in the record or leave it. I used RPC in this example, install it. My node_modules are in the archive located. Do this on Login/Startup Serverside
    gm.mysql.handle.query("SELECT * FROM shortcuts WHERE name = ?", [player.name], function (err10,res10) { if (err10) console.log("Error in loadShortcuts: "+err10); if (res10.length > 0) { res10.forEach(function (shortcutData) { player.data.numpad1A = shortcutData.num1animA; player.data.numpad1B = shortcutData.num1animB; player.data.numpad1C = shortcutData.num1animC; player.data.numpad1D = shortcutData.num1animD; player.data.numpad1Name = shortcutData.num1name; player.data.numpad2A = shortcutData.num2animA; player.data.numpad2B = shortcutData.num2animB; player.data.numpad2C = shortcutData.num2animC; player.data.numpad2D = shortcutData.num2animD; player.data.numpad2Name = shortcutData.num2name; player.data.numpad3A = shortcutData.num3animA; player.data.numpad3B = shortcutData.num3animB; player.data.numpad3C = shortcutData.num3animC; player.data.numpad3D = shortcutData.num3animD; player.data.numpad3Name = shortcutData.num3name; player.data.numpad4A = shortcutData.num4animA; player.data.numpad4B = shortcutData.num4animB; player.data.numpad4C = shortcutData.num4animC; player.data.numpad4D = shortcutData.num4animD; player.data.numpad4Name = shortcutData.num4name; player.data.numpad5A = shortcutData.num5animA; player.data.numpad5B = shortcutData.num5animB; player.data.numpad5C = shortcutData.num5animC; player.data.numpad5D = shortcutData.num5animD; player.data.numpad5Name = shortcutData.num5name; player.data.numpad6A = shortcutData.num6animA; player.data.numpad6B = shortcutData.num6animB; player.data.numpad6C = shortcutData.num6animC; player.data.numpad6D = shortcutData.num6animD; player.data.numpad6Name = shortcutData.num6name; player.data.numpad7A = shortcutData.num7animA; player.data.numpad7B = shortcutData.num7animB; player.data.numpad7C = shortcutData.num7animC; player.data.numpad7D = shortcutData.num7animD; player.data.numpad7Name = shortcutData.num7name; player.data.numpad8A = shortcutData.num8animA; player.data.numpad8B = shortcutData.num8animB; player.data.numpad8C = shortcutData.num8animC; player.data.numpad8D = shortcutData.num8animD; player.data.numpad8Name = shortcutData.num8name; player.data.numpad9A = shortcutData.num9animA; player.data.numpad9B = shortcutData.num9animB; player.data.numpad9C = shortcutData.num9animC; player.data.numpad9D = shortcutData.num9animD; player.data.numpad9Name = shortcutData.num9name; }); }else{ gm.mysql.handle.query("INSERT INTO shortcuts SET name = ?", [player.name], function (insertError) { if (insertError) console.log(`[Shortcuts Init Error] ${err.message}`); if(!insertError){ gm.mysql.handle.query("SELECT * FROM shortcuts WHERE name = ?", [player.name], function (err10,res10) { if (err10) console.log("Error in loadShortcuts: "+err10); if (res10.length > 0) { res10.forEach(function (shortcutData) { player.data.numpad1A = shortcutData.num1animA; player.data.numpad1B = shortcutData.num1animB; player.data.numpad1C = shortcutData.num1animC; player.data.numpad1D = shortcutData.num1animD; player.data.numpad1Name = shortcutData.num1name; player.data.numpad2A = shortcutData.num2animA; player.data.numpad2B = shortcutData.num2animB; player.data.numpad2C = shortcutData.num2animC; player.data.numpad2D = shortcutData.num2animD; player.data.numpad2Name = shortcutData.num2name; player.data.numpad3A = shortcutData.num3animA; player.data.numpad3B = shortcutData.num3animB; player.data.numpad3C = shortcutData.num3animC; player.data.numpad3D = shortcutData.num3animD; player.data.numpad3Name = shortcutData.num3name; player.data.numpad4A = shortcutData.num4animA; player.data.numpad4B = shortcutData.num4animB; player.data.numpad4C = shortcutData.num4animC; player.data.numpad4D = shortcutData.num4animD; player.data.numpad4Name = shortcutData.num4name; player.data.numpad5A = shortcutData.num5animA; player.data.numpad5B = shortcutData.num5animB; player.data.numpad5C = shortcutData.num5animC; player.data.numpad5D = shortcutData.num5animD; player.data.numpad5Name = shortcutData.num5name; player.data.numpad6A = shortcutData.num6animA; player.data.numpad6B = shortcutData.num6animB; player.data.numpad6C = shortcutData.num6animC; player.data.numpad6D = shortcutData.num6animD; player.data.numpad6Name = shortcutData.num6name; player.data.numpad7A = shortcutData.num7animA; player.data.numpad7B = shortcutData.num7animB; player.data.numpad7C = shortcutData.num7animC; player.data.numpad7D = shortcutData.num7animD; player.data.numpad7Name = shortcutData.num7name; player.data.numpad8A = shortcutData.num8animA; player.data.numpad8B = shortcutData.num8animB; player.data.numpad8C = shortcutData.num8animC; player.data.numpad8D = shortcutData.num8animD; player.data.numpad8Name = shortcutData.num8name; player.data.numpad9A = shortcutData.num9animA; player.data.numpad9B = shortcutData.num9animB; player.data.numpad9C = shortcutData.num9animC; player.data.numpad9D = shortcutData.num9animD; player.data.numpad9Name = shortcutData.num9name; }); } }) } }) } }); if you need more contact me

    74 downloads

       (0 reviews)

    1 comment

    Updated

  17. CarShop Simple System

    HI all, here is a simple CarShop system, pretty optimized in client side, but not this much server-side.
     
    This CarShop adapt himself to what you give it, from the config file, let me explain:
    You define some parameters in the config file, for your carShop (Vehicles classses, marker position...), and the client side system with do the stuff.
    Here is a example of a carShop:
    "Boat": { // Shop Name "Position": { // vehicle position for the showcase, camera is auto defined from this "x": -729, "y": -1361, "z": 0.05, "rz": 136 }, "Marker": { // Marker for the player when entering shop "x": -815.93, "y": -1346.3, "z": 5.15 }, "Park": { // When you buy your vehicle, here is where you put vehicle location, it is random ! :D ANd a waypoint is created in client side to show where it is "0":{"x":-725.33,"y":-1325.299,"z":0.11,"rz":228.29}, "1":{"x":-727.42,"y":-1329.044,"z":0.11,"rz":230.54}, "2":{"x":-729.79,"y":-1333.469,"z":0.11,"rz":230.29}, "3":{"x":-731.4,"y":-1332.34,"z":0.11,"rz":228.29}, "4":{"x":-734.63,"y":-1334.34,"z":0.11,"rz":228.29}, "5":{"x":-738.73,"y":-1342.34,"z":0.11,"rz":228.29} }, "Blip": 427, // Blip for the map "Class": [ 14 ], // vehicle classes, see below for list "Name": "Boat Shop" // Displayed Name } So, aswell, when connect this will create a Marker / Blip on the marker position of the config file.
    And that's all for creating a car shop !
    Now, you can define prices easily aswell:
    In the vehicle_Shop.json file, you have the list of every vehicle which are available for selling. You have the hash, displayName, name, manufacturer & the price, define dby 15000 by default, but you can define a new price for every vehicle by yourself.
    That's all you have to do, now do /carShop [YouCarShopName], and see the magic happening.
     
    Here is the vehicles class name:
    Sedans SUVs Coupe Muscle Sport Classic Sport Super Moto Off-Road Industrial Utility Vans Cycles Boats Helicopters Planes Service Emergency Military Commercial Trains I think i gave you all the stuff to make it works, i hope you like it!
    By default you have 3 carshops, boat / low budget car/ helicopters.

    1354 downloads

       (1 review)

    9 comments

    Updated

  18. Vehicle Spawner | Diamond Casino & Resort Update

    I updated the "vehicleHashes.js" to the update "Diamond Casino & Resort".
     
    Orginal version and creator of the script:
     

    83 downloads

       (0 reviews)

    0 comments

    Submitted

  19. [JS] Vehicleseat Menu

    This is a Vehicleseat Menu in JavaScript for Rage:MP
     
    Install:
     
    Unzip vehicleseatJS.zip in your root server folder.
     
    Use:
     
    Press "F" or "G" when a Vehicle nearby you.
     
    Contact:
     
    You can Contact me on Discord for Questions.
     
    {Brace}#0571
     
    Have fun!

    461 downloads

       (0 reviews)

    2 comments

    Updated

  20. Shortcuts (Animations) on Numpad

    Load this Variables on Login:
    gm.mysql.handle.query("SELECT * FROM shortcuts WHERE charId = ?", [player.data.charId], function (err10,res10) { if (err10) console.log("Error in loadShortcuts: "+err10); if (res10.length > 0) { res10.forEach(function (shortcutData) { player.data.numpad1A = shortcutData.num1animA; player.data.numpad1B = shortcutData.num1animB; player.data.numpad1C = shortcutData.num1animC; player.data.numpad1D = shortcutData.num1animD; player.data.numpad1Name = shortcutData.num1name; player.data.numpad2A = shortcutData.num2animA; player.data.numpad2B = shortcutData.num2animB; player.data.numpad2C = shortcutData.num2animC; player.data.numpad2D = shortcutData.num2animD; player.data.numpad2Name = shortcutData.num2name; player.data.numpad3A = shortcutData.num3animA; player.data.numpad3B = shortcutData.num3animB; player.data.numpad3C = shortcutData.num3animC; player.data.numpad3D = shortcutData.num3animD; player.data.numpad3Name = shortcutData.num3name; player.data.numpad4A = shortcutData.num4animA; player.data.numpad4B = shortcutData.num4animB; player.data.numpad4C = shortcutData.num4animC; player.data.numpad4D = shortcutData.num4animD; player.data.numpad4Name = shortcutData.num4name; player.data.numpad5A = shortcutData.num5animA; player.data.numpad5B = shortcutData.num5animB; player.data.numpad5C = shortcutData.num5animC; player.data.numpad5D = shortcutData.num5animD; player.data.numpad5Name = shortcutData.num5name; player.data.numpad6A = shortcutData.num6animA; player.data.numpad6B = shortcutData.num6animB; player.data.numpad6C = shortcutData.num6animC; player.data.numpad6D = shortcutData.num6animD; player.data.numpad6Name = shortcutData.num6name; player.data.numpad7A = shortcutData.num7animA; player.data.numpad7B = shortcutData.num7animB; player.data.numpad7C = shortcutData.num7animC; player.data.numpad7D = shortcutData.num7animD; player.data.numpad7Name = shortcutData.num7name; player.data.numpad8A = shortcutData.num8animA; player.data.numpad8B = shortcutData.num8animB; player.data.numpad8C = shortcutData.num8animC; player.data.numpad8D = shortcutData.num8animD; player.data.numpad8Name = shortcutData.num8name; player.data.numpad9A = shortcutData.num9animA; player.data.numpad9B = shortcutData.num9animB; player.data.numpad9C = shortcutData.num9animC; player.data.numpad9D = shortcutData.num9animD; player.data.numpad9Name = shortcutData.num9name; }); } });  
    Contact:
    You can Contact me on Discord for Questions.  https://discord.gg/epD7fsv
     
    I can make Scripts for you write me on Discord please German my english is so Bad : SnillocTV

    263 downloads

       (3 reviews)

    2 comments

    Updated

  21. Clothing Shops

    This script lets you create your own clothing shop(s) with JSON files.
     
    Installing
    Put the files you downloaded in their respective places Download & install NativeUI if you haven't yet, this script needs it (Only if you're going to have paid items) Download & install Currency API then define a currency named cash. Add require('clothing-shops') to client_packages/index.js Set up some clothing shops (read below) All done  
    Setting Up Shops
    Shop data is loaded from packages/clothing-shops/shops, any JSON file there will be treated as a clothing shop. Shop file structure:
    { // OPTIONAL, this object will be the menu banner sprite on clientside. Search for "shopui_title_" on https://wiki.rage.mp/index.php?title=Textures "bannerSprite": { "library": "shopui_title_highendfashion", "texture": "shopui_title_highendfashion" }, // REQUIRED, this array contains the shop coordinates "shops": [ { "x": 123.4, "y": 456.7, "z": 8.9 }, { "x": 10.0, "y": 20.0, "z": 30.0 } ], // REQUIRED, this object contains item data for freemode male model "male": { // REQUIRED, this object contains all clothing item data "clothes": { // REQUIRED, this array contains item data for a component slot (https://wiki.rage.mp/index.php?title=Clothes - we're using 11 - tops here) "11": [ // REQUIRED, item object(s) for component slot 11 { "name": "Blue Burger Shot Hockey Shirt", "drawable": 282, "texture": 0 }, // This item will need the player to have some money (handled with Currency API) { "name": "Blue Cluckin' Bell Hockey Shirt", "drawable": 282, "texture": 4, "price": 500 } ] }, // REQUIRED, this property contains all prop item data (we're not gonna add any props to freemode male here, so it's just an empty object) "props": {} }, // REQUIRED, this object contains item data for freemode female model "female": { // This time we're not adding any clothes "clothes": {}, // But we're adding props "props": { // Same as above, prop slot as key (we're using 7 - bracelets) "7": [ // Prop items are defined just like clothing items { "name": "Gold Snake Cuff", "drawable": 0, "texture": 0, "price": 200 }, { "name": "Light Wrist Chain (R)", "drawable": 7, "texture": 0 }, { "name": "Spiked Gauntlet (R)", "drawable": 13, "texture": 0, "price": 85 } ] } } } If this wasn't any clear, there is a file named ExampleShopFile.json inside packages/clothing-shops/. (it's the file used in the preview video, put it to shops folder if you want to load it)
    I'd also recommend you to check out my "Clothing Names" resource for valid names.
    Source code is available on GitHub in case you don't want to download: https://github.com/root-cause/ragemp-clothing-shops

    539 downloads

       (6 reviews)

    4 comments

    Updated

  22. Better Notifications

    Now with 200% more color.
    Clientside Functions:
    mp.game.ui.notifications.show(message, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) mp.game.ui.notifications.showWithPicture(title, sender, message, notifPic, icon = 0, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) Serverside Functions:
    player.notify(message, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) player.notifyWithPicture(title, sender, message, notifPic, icon = 0, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) As Events:
    BN_Show(message, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) BN_ShowWithPicture(title, sender, message, notifPic, icon = 0, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) Example:
    // Clientside mp.game.ui.notifications.show("Normal message with custom text and background color.", false, 15, 20); mp.game.ui.notifications.showWithPicture("New Message", "Facebook", "You got some more of that data?", "CHAR_FACEBOOK", 1, false, 0, 139); // Serverside player.notify("This message is red which means you're doing something wrong.", false, 6); player.notifyWithPicture("Title", "Ammu-Nation", "Ammunation has all the equipment you need to protect your family from the evils of a liberal society! Fixed, mounted, and shoulder-held submachine guns. Mortars! Surface-to-air and all manner of heat-seeking missiles!", "CHAR_AMMUNATION"); Icons:
    You can specify an icon ID for picture notifications, here's a list of them:
    0, 4, 5, 6 = No Icon 1 = Speech Bubble 2 = Message 3 = Friend Request 7 = Arrow 8 = RP 9 = Money Notes:
    textColor and bgColor parameters want a HUD color ID which you can find here. (it is a bit outdated now though) You can find notification pictures here. If you can't see picture notifications, you must enable Phone Alerts from Settings > Notifications > Phone Alerts. This script changes player.notify on serverside.

    881 downloads

       (6 reviews)

    3 comments

    Updated

  23. Animation Viewer

    Hi everyone,
    I've decided to share my Animator resource which basically lets you play all animations avaliable in this list:
    https://wiki.gtanet.work/index.php?title=Animations
    I have converted it from GTA Network to RAGEMP recently. It's a very simple but useful script. Searching through the animations list is like looking for needle in the haystack, considering about 2/5 of all anims cannot be applied to ped and 1/2 of those you wouldn't really find use for. It's a great solution if you don't want to install any mods to view anims. Just include the file and preview! Save included.
    There are 12,365 animations to play. Some of anims do not work on player as they are intended to be used on props, vehicles, weapons etc.
    You can also experience a few seconds delay on some animations, but none of them causes crashes.
    After launching the Animator a drawText will appear in bottom-right corner of the screen, showing you which animation you are viewing including ID, animation group and name.
     
    How to install:
    UnZip the file and move the animation-viewer folder to bridge -> resources folder. Include animation-viewer resource in settings.xml. Move animator.js from animation-viewer folder to clientside_packages folder and include it in index.js.  
    How to use:
    Type /animator to launch or close the animator. Type /animator help for in-game help. Type /animator skip [number] to skip to animation id. Type /animator save [savename] to save the animation. ( saves in server root folder in Saved_Animations.txt. ) Type /animator stop to stop currently playing animation. Use LEFT and RIGHT arrow keys to cycle through animations. Use UP and DOWN arrow keys to cycle through 100 animations at once.  
    Notes:
    All animations are looped. Clientside file is minified. This resource is made for server developers. It sends huge amounts of data to clientside when launching so use it only to preview/save animations. You can see the code here: https://gitlab.com/Hazes/animator-viewer  
    Changelog:
    [v1.0]
    Code has been sorted and is a bit more optimized. Fixed assembly reference error for those who didn't have System.IO.dll included in their main resource. Parsing the number in /animator skip now works correctly.  
    Presentation:
     

    730 downloads

       (3 reviews)

    3 comments

    Updated

  24. Rage Horse

    Preview video https://streamable.com/b1b0i
    Github repo https://github.com/ItsMos/ragemp-horse
     
    Horse mod for rage multiplayer Notes This replaces the 'deer' model because it is fast-moving. Horses should be synced, this doesnt work well with `online` skins, you can fix that tho, feel free to contribute. You think that you're actually riding the horse? no, think again, the horse is riding you (your ped) Usage // server code let pkg = require('ragemp-horse') let allHorses = pgk.horses, Horse = pkg.Horse // To create a horse let myPony = new Horse(position, dimension) // delete a horse myPony.delete() Press Interact button (default `E`) to mount/dismount a horse Credits Horse model converted by Quechus13

    60 downloads

       (2 reviews)

    1 comment

    Updated

  25. Weapon Spawner

    Requirements
    You need to download & install these resources first:
    NativeUI Weapon Component Sync Weapon Tint Sync  
    Installing
    Put the files you downloaded in their respective places Add require('weaponspawner') to client_packages/index.js All done  
    Using
    You can use the /weapons command to access the weapon spawner menu.
     
    Issues
    Some components might not have a visible name because Rockstar didn't give them one. Equipped component displaying might not be accurate at first but will be fixed after you apply/remove a component.  
    Source code is available on GitHub in case you don't want to download: https://github.com/root-cause/ragemp-weapon-spawner

    216 downloads

       (3 reviews)

    0 comments

    Submitted