Scripts
207 files
-
Better G Seats
Hello yes very nice. I have a nice resource for you.
You press G. It finds the nearest vehicle, and the nearest seat in such vehicle, and makes you get in it. Supports vehicles without doors, the bus with like 12 seats or whatever it has. Should support all newly added vehicles too, DLC vehicles etc.
For vehicles with grab holds, G will make you enter the vehicle (like granger), SHIFT + G will force you to grab onto the sides, even if no one is inside the vehicle.
Locking:
To stop people getting in as passenger, like a locked vehicle use this code somewhere in your server:
vehicle.setVariable('locked', true) To install:
- Place the folder from inside client_packages into your client_packages folder.
- Add
require('./BetterGSeats/seats.js'); to your client index.js
- Very nice)
600 downloads
-
Custom Hud Colour and Title
By Danky
Only tested on 1.1
When the player is ready it invokes the natives and sets the pause menu title text. To change the colour or text please read the comments in hud.js It replaces the weapon wheel colour and pause menu accent colour
Example
These examples used { r: 255, g: 0, b: 0 }
Github repo: https://github.com/Dankyss/RageMP-Custom-Hud-Colour-and-Title
589 downloads
- javascript
- JS
- (and 4 more)
(2 reviews)0 comments
Updated
-
[JS,CEF] Emergency Alert System
By Gernouille
(EN) This script allow you to play emergency alert sound (2 sounds: tornado siren, alert siren), coming soon: amber alert with sound&pop-up
(FR) Ce script vous permet de déclencher des sirènes d'alertes (sirène tornade, sirène d'alerte), à venir: alerte enlèvement avec son&popup
----- HOW TO INSTALL -----
1) Unpack RAGEMP Alert v0.1
2) Drop the content of "client_packages" folder inside your client folder
3) Drop the content of "packages" folder inside your server folder
4) Add in your server index.js :
require('./Alert/sAlert');
5) Add in your client index.js :
require('./Alert/cAlert');
6) Do not forget to change link of mp.browsers.new in Alert/cAlert.js if needed
----- HOW TO USE -----
/alert tornado {repeat time}
--> {repeat time} FROM 1 TO 9 TIMES
Duration: EACH time: 9sec (min: 9sec, max: 81sec)
/alert siren {repeat time}
--> {repeat time} FROM 1 TO 9
Duration: START: 5sec / ACTIVE: 12sec (repeat from 1 to 9) / END: 13sec (min: 30sec, max: 126sec)
/alert siren stop
--> stop the siren immediatly if activated (duration: 13sec)
----- DEMO -----
Tornado Siren:
Alert siren:
Amber alert (coming soon):
589 downloads
-
Police Department Interfaces (Garage, Locker)
By Zekiloni
From me to the community
Maybe will be useful for someone, it's written in Vue 💓
587 downloads
(4 reviews)0 comments
Submitted
-
Client-side TowTruck States Event
By Tampa
OnPlayerTowTruckStateChange returns: attach - when any vehicle has been attached to tow truck detach - when attached vehicle has been detached from tow truck deadOrDestroy - when attached vehicle has been destroyed exit - when player exit tow truck while have got attached some vehicle
I think that's simple and useful for everyone.
586 downloads
(1 review)0 comments
Updated
-
Interact Menu (non-CEF)
By heartgg
Overview
This is a highly customizable and responsive interact menu script that does not require any CEF magic. All of the components of this menu come from mp.game.graphics. There is an example.js included in the repository files that set up a menu manager along with two menus that you can switch between.
Installation
Place the interact folder inside your client_packages folder.
Paste the below code into your client_packages/index.js file.
require('./interact/example'); Controls
These can be easily customized through RAGE, but if you are trying the example, hold the B key while using your mouse to navigate and press left mouse button to confirm selection.
API Usage
Getting required classes
const Menu = require('./interact/menu'); const MenuManager = require('./interact/manager'); Setting up a menu
/** * @param {Number} [maxItems] Max amount of items that will show when the menu is open. * @param {Number} [itemScale] Size of each selectable item in the menu. * @param {Number} [wheelScale] Size of texture in the center of the menu. * @param {Number} [radius] Size of each selectable item in the menu. * @param {RGBA} [color] Default color for all items (unless altered for each individual item added) * @param {RGBA} [hoverColor] Default hover color for all items (unless altered for each individual item added) * @param {Array} [wheelTexture] [textureDict, textureName] of the menu's center. * @param {Array} [backgroundTexture] [textureDict, textureName] of the optional background for items. */ const sampleMenu = new Menu(maxItems, itemScale, wheelScale, radius, color, hoverColor, wheelTexture, backgroundTexture); Adding items to the menu
/** * @param {String} name Item identifier. * @param {String} textureDict Item icon texture dictionary. * @param {String} textureName Item icon texture name. * @param {Boolean} [background] Whether the item should have the optional background (recommended for icons without backgrounds). * @param {Boolean} [closeMenu] Whether the menu should be closed on item select. * @param {RGBA} [color] Color for the item in the menu (default takes color from the menu). * @param {RGBA} [hoverColor] Hover color for the item in the menu (default takes hover color from the menu). * @param {Function} callback Callback to execute on item select. */ sampleMenu.add(name, textureDict, textureName, background, closeMenu, color, hoverColor, () => { mp.game.graphics.notify('Button 1'); }); Setting up the menu manager
/** * @param {Menu} mainMenu The menu that opens when manager is displayed. */ const menuManager = new MenuManager(mainMenu); Using the menu manager
/** * @param {Menu} menu The menu to switch to (use this in callback if you want complex menus). */ menuManager.switch(menu); /** * @param {Boolean} toggle Toggle menu visibility. */ menuManager.display(toggle); // Running this executes the callback associated with the selected item. menuManager.select(); // This must be placed in the clientside render event menuManager.render()
Github Link
579 downloads
- custom
- custommenu
- (and 8 more)
(3 reviews)0 comments
Updated
-
MapEditor
By PrototypeX
Working version of the MapEditor by PrototypeX!
Developed for the project SMOTRArage
Old resource:
576 downloads
(4 reviews)0 comments
Updated
-
Mugshot Board
By rootcause
This resource adds a way to make the local player hold a mugshot board with custom text on it, the custom text and animation won't be synced to others.
You can also use this resource to understand how rendertarget system works which lets you display scaleform on certain game objects.
Installing:
Put policetext into your server's client_packages directory, then add require('policetext/index.js'); to index.js.
Available functions/events:
mp.players.local.mugshotboard.show -> mp.events.call("ShowMugshotBoard") -> Params: title, topText, midText, bottomText, rank = -1 mp.players.local.mugshotboard.hide -> mp.events.call("HideMugshotBoard") -> Params: - And you can access if the local player has a mugshot board or not by using the hasMugshotBoard global variable. Clientside example (pressing F10 will give your character a mugshot board, pressing it again will remove it):
mp.keys.bind(0x79, false, () => { if (!hasMugshotBoard) { mp.players.local.mugshotboard.show(mp.players.local.name, "Top Text", "Mid Text", "Bottom Text", 15); } else { mp.players.local.mugshotboard.hide(); } });
554 downloads
-
Pause Menu Player Scaleform (NO BACKGROUND!)
By xNameless69
RAW RESOURCES ONLY - NO SCRIPT HERE.
Today I have for you a beast resource that will fix your problems with Ped Displaying using Native Menu Ped. This resource contains Custom Scaleform changes to some menu components, and pause menu definition, that allows the Ped to be rendered WITHOUT a background box around it, or even on screen (fuck you Rockstar for making this Scaleform so shit).
You use this in the same way you use any other raw resource by placing the contents into client_packages/game_resources
If you already modify the Pause Menu xml file in some way, please see the changes in my own pausemenu.xml files and attempt to add them to your own, it shouldn't cause any problems!
The script can be found in many different places already, so no need to show it here - this is not possible to render on top of CEF, so just use CSS to make some hole in your UI that this can show through.
The menu version is custom here so that if Rockstar adds anything else or messes with dependencies, it doesn't immediately break. This means it's not really "documented" in natives (duh)
The version used should be as follows:
mp.game.ui.activateFrontendMenu(mp.game.joaat('FE_MENU_VERSION_RAGEBEAST'), false, -1);552 downloads
-
Simple Teams
By rootcause
Prevents players of the same team shooting eachother.
Installing
Put teams into your server's client_packages directory, then add require('teams'); to client_packages/index.js.
Using
It's pretty simple, just set currentTeam shared variable of a player like this:
// both strings and numbers should work playerEntity.data.currentTeam = whatever; playerEntity.setVariable("currentTeam", whatever); And set currentTeam to null if you want to reset someone's team.
Note
This resource doesn't prevent all kinds of friendly fire, for example projectile weapons like RPG can hurt teammates, you can still run teammates over with a vehicle etc. You can check if both killer and victim is on the same team and punish the killer, though.
549 downloads
(4 reviews)0 comments
Updated
-
Instructional buttons
By Captien
Hello,
I thought it would be a opportunity to introduce some basic scaleform scripts that would help out some users with their development aka. use less CEF for simple stuff.
This resource introduces the ability to give button instructions that supports controls (Meaning it'll detect your input whether its a gamepad or keyboard...).
API
You can always have a look at the Controls to get their ID. Using the resource is very simple to use and it supports different uses of customization: You can adjust style between Horizontal (1) and Vertical (-1) You can adjust background color with RGBA (Note you'll need to add it in array form) or HEX. Bulk support for buttons. new hud(style, color) /* * style: -1 for horizontal view, 1 for vertical view * color: HEX or RGBA [255, 255, 255, 255] */ hudClassInstance.addButton(title, controlID); /* * title: any text * controlID: you can find a list of controlID on wiki */ hudClassInstance.addButtons({ anyName: controlID1, anyName2: controlID2 }); /* * Bulk support for adding buttons */ hudClassInstance.removeButton(titleOrControlID); /* * titleOrControlID: remove button by its title or controlID */ hudClassInstance.removeButton(titleOrControlID); /* * removes all buttons */ hudClassInstance.toggleHud(state); /* * state: Boolean toggling visibility */ hudClassInstance.changeStyle(style); /* * style: -1 for horizontal and 1 for vertical */ hudClassInstance.setBackgroundColor(color); /* * color: HEX string or RGBA Array */ hudClassInstance.changeButtonTitle(index, newTitle); /* * index: controlID or currentButton title. (if custom button you can type its name t_buttonName) * newTitle: string */ hudClassInstance.changeButtonControl(index, newControl); /* * index: controlID or currentButton title. (if custom button you can type its name t_buttonName) * newControl: controlID or custom control (t_buttonName) */ If you have any issues, you know as usual contact me on Forums or discord. Any suggestions please add it in your review. If you liked the resource show me your support to produce some useful resources in the future.
549 downloads
-
Screen FX viewer.
By ynhhoJ
This is a simple script was made to help you to find a Screen FX effect!
Requirements: NativeUI.
Use F2, to see menu.
548 downloads
(1 review)0 comments
Updated
-
Console commands
By m4a_X
Simple command handler for the Rage:MP console...
... Just add more commands, for example to save the player
INFO: Stopping bridge resources seems to be broken by Rage.
Original resource by Vektor42O
535 downloads
(0 reviews)0 comments
Updated
-
Cash Registers
By rootcause
Requirements
RAGE Multiplayer 1.1 and above Currency API (define a currency named "cash" after installing)
Installing
Put the files you downloaded in their respective places Add require('cashregisters') to client_packages/index.js All done
Config
The config.json file can be found inside packages/cashregisters/json/.
minShotReward, maxShotReward: Minimum and maximum amount of cash a cash register will drop when shot, default values are 20 (min) and 60 (max).
minEmptyReward, maxEmptyReward: Minimum and maximum amount of cash a player will get from emptying a cash register by pressing interaction key in front of it, default values are 70 (min) and 120 (max).
cashLife: Milliseconds a cash drop from a cash register will stay for, default value is 30000. (30 seconds)
cashRegisterCooldown: Milliseconds that need to pass before a cash register is available for robbery again, default value is 300000. (5 minutes)
createBlips: Whether cash registers will have a blip/icon on the map, default value is true.
Notes
Emptied cash registers won't open like in the video, it was removed due to the issues it caused. You'll see a red "Robbed" label instead. Shooting at the cash registers without aiming in first person mode can be inaccurate at times. Since this resource hides the game's cash registers, if you play on a server that uses this resource then connect to a server that doesn't use this resource without restarting GTAV, cash registers will most likely be invisible. Credits to GTA Wiki for the preview image. Available on GitHub: https://github.com/root-cause/ragemp-cash-registers533 downloads
-
Vehicle Spawner | Diamond Casino & Resort Update
I updated the "vehicleHashes.js" to the update "Diamond Casino & Resort".
Orginal version and creator of the script:
510 downloads
-
GTAO Suicide
By rootcause
This script adds the suicide feature of GTA Online.
You can commit suicide by using /suicide command. Your character will shoot itself if you're holding a pistol and take pills otherwise.
Installing
Put the files you downloaded in their respective places Add require('suicide') to client_packages/index.js All done506 downloads
(3 reviews)0 comments
Submitted
-
Custom pause menu header
By hartority
This resource allows you to customize the header of the pause menu.
502 downloads
-
CEF wepSpawner
By Anzo
Installing:
Place the files you downloaded in their locations.
Add "require('.wepSpawner');" to client_packages/index.js.
Controls:
F4 to toggle menu.
Everything else is done in cef interface.
Features:
Spawn any weapon from https://wiki.rage.mp/index.php?title=Weapons (2019-05-05).
Get all weapons instantly by clicking "All Weapons".
Get all weapons from a category by entering the category and clicking "All *Category name*".
Get any weapon you choose.
Ability to remove all weapons and start over.
501 downloads
(1 review)0 comments
Submitted
-
Vice City Minimap
By adri1
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
497 downloads
(6 reviews)0 comments
Updated
-
[JS] ParticleFX Server-side API
By Tampa
Features
Sync Streamer Events Easy to use
API
+ Added mp.particleFx.addLoopedAtCoord (Synced!) + Added mp.particleFx.addLoopedOnEntity (Synced!) + Added mp.particleFx.destroy (Synced!) + Added player.startParticleFxLoopedAtCoord (Not synced!) + Added player.startParticleFxLoopedOnEntity (Not synced!) + Added player.stopParticleFx (Not synced!)
Examples
mp.events.add({ 'onPlayerParticleFxStreamIn' : (player, particleId) => { console.log(`[onPlayerParticleFxStreamIn] => ${player.name} - ${particleId}`); }, 'onPlayerParticleFxStreamOut' : (player, particleId) => { console.log(`[onPlayerParticleFxStreamOut] => ${player.name} - ${particleId}`); }, 'onParticleFxEntityDisconnect' : (player, particleId) => { console.log(`[onParticleFxEntityDisconnect] => ${player.name} - ${particleId}`); } }); mp.events.addCommand({ 'fx_carwash2_stop' : (player) => player.stopParticleFx('car.wash2'), 'fx_carwash2' : (player) => { const id = 'car.wash2', fxName = 'scr_carwash', effectName = 'ent_amb_car_wash_jet', position = { x: player.position.x, y: player.position.y, z: player.position.z + 3.0 }, rotation = { x: 0, y: 0, z: 0 }, scale = 15.0, xAxis = true, yAxis = true, zAxis = true ; player.startParticleFxLoopedAtCoord(id, fxName, effectName, position, rotation, scale, xAxis, yAxis, zAxis); } }) mp.events.addCommand({ 'fx_carwash_stop' : () => mp.particleFx.destroy('car.wash'), 'fx_carwash' : (player) => { const id = 'car.wash', fxName = 'scr_carwash', effectName = 'ent_amb_car_wash_jet', position = { x: player.position.x, y: player.position.y, z: player.position.z + 3.0 }, rotation = { x: 0, y: 0, z: 0 }, scale = 15.0, xAxis = true, yAxis = true, zAxis = true ; mp.particleFx.addLoopedAtCoord(id, fxName, effectName, position, rotation, scale, xAxis, yAxis, zAxis); } }); mp.events.addCommand({ 'fx_moneyrain' : (player) => { const id = 'moneyrain', fxName = 'scr_xs_celebration', effectName = 'scr_xs_money_rain_celeb', offset = { x: 0.0, y: 0.0, z: 1.25 }, rotation = { x: 0, y: 0, z: 0 }, scale = 1.25, xAxis = true, yAxis = true, zAxis = true ; const fx = mp.particleFx.addLoopedOnEntity(id, player, fxName, effectName, offset, rotation, scale, xAxis, yAxis, zAxis); setTimeout(() => fx.destroy(), 9000); } }); mp.events.addCommand({ 'fx_barber' : (player) => { const id = 'barber', fxName = 'scr_barbershop', effectName = 'scr_barbers_haircut', offset = { x: 0.0, y: 0.0, z: 0.75 }, rotation = { x: 0, y: 0, z: 0 }, scale = 1.0, xAxis = true, yAxis = true, zAxis = true ; const fx = mp.particleFx.addLoopedOnEntity(id, player, fxName, effectName, offset, rotation, scale, xAxis, yAxis, zAxis); setTimeout(() => { fx.destroy(); player.setClothes(2, Math.floor(Math.random() * 74), 0, 2); }, 900); } });
Introduction
470 downloads
-
Binoculars
The scenario used here is not synced
Use the command to trigger the script :
/binocular Scroll up and down to zoom in / out.
Installation: Just put the folders where they should be, don't forget to import client side scripts in your index.js
If you have any question feel free to ask us
By AdAstra Dev Team (FR :D)
457 downloads
(2 reviews)0 comments
Updated
-
CircuitBreaker - JS Minigame
By xNameless69
Hello again, Ragers.
This minigame is the same as the one in the base game heists. It's purely scaleform, and no CEF.
(Thanks to Develuxe for C# version)
Simply put this into client_packages, and add this to your index.js:
require('./CircuitBreaker'); It has three events:
CircuitBreakerWIN - This event is called on the client when the client player has successfully won the minigame
CircuitBreakerLOSE - This event is called on the client when the client player quits, or fails to complete the minigame
CircuitBreakerStart - This event is callable on the client (from server with player.call), and is used as follows:
// Lives (any number), this number is the total amount of lives for all levels // Difficulty (0-4), where 0 is easiest and 4 is hardest // Level Count (1-6), how many levels have to be completed player.call('CircuitBreakerStart', /* lives */ 3, /* difficulty */ 1, /* level count */ 2);451 downloads
(4 reviews)0 comments
Updated
-
Firing Modes
By rootcause
This script was originally made by EnforcerZhukov for singleplayer. (you can find it here) All credit goes to him.
I added extra stuff such as remembering firing mode (until you disconnect) per weapon, safety mode, HUD item and sound effects.
Installing & Using
Put guncontrol into your server's client_packages directory, then add require('guncontrol'); to index.js. Press F6 key to switch between firing modes.
Firing Modes
Auto: Default GTA shooting. Burst: Shoot 3 bullets every time you fire. (not supported on all weapons) Single: Shoot 1 bullet every time you fire. (not supported on all weapons) Safe: Disables shooting.
448 downloads
(1 review)0 comments
Updated
-
Disabling stealth kills through GTA files
By H5tred
So i have been getting a lot of DMs on discord regarding how to disable the stealth kills.
Basically this file contains the edited conditions that are checked by GTA in order for the player to perform a stealth kill and are changed so they are never met, making it impossible for any player to perform them.
How to use , just paste the content of the zip in your server files in client_packages\game_resources !
If you have other questions/suggestion regarding what can be edited from the files from the games, feel free to contact me on discord Cricket#1276 !
445 downloads
(3 reviews)0 comments
Submitted
-
0.3.7+ Client-Side Packet encryption
By DevGrab
This package contains a full implementation of client-side packet encryption for RAGE 0.3.7 which obviously doesn't have build-in encryption for packages.
To use the script, you'll need to have Typescript installed, instead of this, you can convert the scripts easy to vanilla javascript.
How does it work?
After you transpile your Typescript files to working client-side Javascript, you'll have to run the "Encryptiontool" which is automatically encrypts all .js files stored at your server-files -> client_packages with AES256 and it's given encryption-key inside of your "compile.bat". Make sure that you check out the folder-structure and edit the encryption tool to your needs. Don't encrypt browser-files or browser-javascript. The encryption does only work with the given module-list and files that are used standalone by RAGE. Since the files get executed by "eval" after they are decrypted, you cannot use global variables unless you don't encrypt the scripts which store them. (you could use a file for all global needed variables and load them besides of the encrypted ones). You can create a folder inside of your client_packages which is called "ignored" which will get ignored by the encryptor and can be loaded inside of your index.js file at client-side start.
So at the end, the servers send the decryption key to the client and decrypts all stored files with the browser and parses them to the client and evaluates the code.
Idea behind?
The idea behind was to make it hard as possible to block leakers/leechers copy client-side scripts used by my old project. And it works!
Security issues?
Make sure that you send your encryption key from server to client with encrytion enabled, so people cannot sniff your key to decrypt your files. Even tho, it should be possible to dump the script-files from memory, but this progress will still not make sense, since noone puts such effort into it.
How does the client-files look after encryption?
/** Filename: blips.js Path: ../../server-files/client_packages/game\gameplay Encrypted: Sat Oct 24 2020 23:34:17 GMT+0200 (GMT+02:00) **/ exports.Info = { size: 3372, code: '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' };
Enjoy!
430 downloads
