Important
This documentation, much like the resource, is currently in an alpha state and is not final. The data types, events, and triggers described in this documentation may change in future versions as the project evolves.
Native Shop is a RedM resource that provides a fully native implementation of the shop UI for Red Dead Redemption 2 multiplayer servers. This resource allows developers to create custom shopping systems using the game's original shop interface, complete with all the visual elements players expect from the authentic Red Dead experience.
Unlike traditional web-based or custom UI implementations, Native Shop leverages the game's built-in interface systems to provide seamless integration with the player's existing UI experience.
You can click below to watch a short demonstration of Native Shop.
If you're missing functionality or have ideas for new features that would improve Native Shop, please don't hesitate to open an issue. Feature requests from the community are always welcome, and feedback about use cases and requirements helps shape the direction of this project!
This resource is provided free of charge and represents countless hours of development work. Like most RedM resources, it builds upon the game's existing functionality rather than being created from scratch - the underlying native functionality belongs to Rockstar Games.
While the RedM community is fantastic and there's certainly a space for paid resources, there's unfortunately a trend of knowledge being gatekept behind paywalls, making important development knowledge harder to access for the community.
For Server Owners: You're absolutely welcome to use Native Shop on your servers without any restrictions beyond the license terms.
For Resource Developers: If you want to use this as a base for your own projects or distribute modified versions, please pay close attention to the license requirements. As stated in the GNU GPL v3 license, any distributed modifications must be shared under the same open source license. This ensures that improvements benefit the entire community rather than being locked behind paywalls.
The goal is to foster collaboration and shared knowledge, not to enable profiteering from freely contributed work. This is simply a request for license compliance - since the code is open source and properly licensed, you are free to do with it what the license permits. Ultimately, everyone should strive to make the whole of RedM a better place for all players and developers.
Native Shop is licensed under the GNU GPL v3.
The Native Shop system is built around three main data types that define how elements are structured and displayed in the shop interface. Understanding these types is essential for implementing a custom shopping system.
Important
Sorry, no cigar for now.
Triggers are client-side events that allow you to control the shop's behavior and manage the UI programmatically. These events provide the core functionality for opening/closing the shop, synchronizing data, and performing various operations.
Important
Sorry, no cigar for now.
Events are fired automatically by the Native Shop system when specific actions occur. You can listen to these events to implement custom logic, such as saving changes, logging player actions, or triggering server-side operations when players interact with the shop.
AddEventHandler("native_shop:opening", function(data)
print("Menu Opening Event:", json.encode(data))
end)
AddEventHandler("native_shop:closing", function(data)
print("Menu Closing Event:", json.encode(data))
end)
AddEventHandler("native_shop:menu_selected", function(data)
print("Menu Selected Event:", json.encode(data))
end)
AddEventHandler("native_shop:item_selected", function(data)
print("Item Selected Event:", json.encode(data))
end)
AddEventHandler("native_shop:item_action", function(data)
print("Item Action Event:", json.encode(data))
end)
AddEventHandler("native_shop:adjustable_changed", function(data)
print("Adjustable Changed Event:", json.encode(data))
end)
AddEventHandler("native_shop:item_focused", function(data)
print("Item Focused Event:", json.encode(data))
end)
AddEventHandler("native_shop:item_unfocused", function(data)
print("Item Unfocused Event", json.encode(data))
end)
AddEventHandler("native_shop:menu_navigated", function(data)
print("Menu Navigated Event:", json.encode(data))
end)
AddEventHandler("native_shop:page_navigated", function(data)
print("Page Navigated Event:", json.encode(data))
end)
AddEventHandler("native_shop:page_refreshed", function(data)
print("Page Refreshed Event:", json.encode(data))
end)This project builds upon the hard work and research of many talented individuals in the RedM community. Their contributions made this native shop implementation possible:
- aaron1a12's Research
- alloc8or's Native DB
- femga's RDR3 Discoveries
- gottfriedleibniz's Data View implementation
- MagnarRDC's Support
- VORPCORE's Research
Thank you for considering contributing to Native Shop! Please note that this project is released with a Contributor Covenant Code of Conduct. By participating in any way in this project, you agree to abide by its terms.
Before contributing, please take a moment to read the Contribution Guide to understand the development process and how to contribute.
