The Grand Theft Auto V Roleplay server for RAGE:MP.
Massive props to the developers who have spent countless hours making this project what it is right now!
- Daniels (@DanielsGTA)
- Yannick (@yannickboy15)
- Jer (@JeremyEspresso)
- Chaos (@braunsonm)
- Daniel (@dlett)
Also a thank you to the people who contributed to the game data
- Vubstersmurf
- Dexter
- Wright
- Used for the OwlGaming Community's V RP server
- Built using C# server side and client side with a MySQL Database backend.
The script uses generated RAGE events (network & UI) via JSON manifest files. These files are located in \EventDescriptors\Network\ and \EventDescriptors\UI\
Any time you add or modify an event, you must run the GenerateEvents.bat file.
All content in OwlV is cooked into archive files which are validated during cooker time, and loaded by the server. This cook/validation step helps avoid runtime issues and makes deployment easier.
Anytime you add, remove or modify (the file name, not contents), you must update the associated JSON descriptor in \Descriptors\
Files are defined by providing their filename, and type (e.g. ClientScript, ServerScript, etc) - please refer to existing descriptors for reference.
By default, the cooker uses symbolic links to allow for fast / near-instant iteration times. In 'Debug Full Cook' and 'Release' targets, a full cook, including code analysis, archive and unarchive are performed.
OwlV requires Windows Developer Mode to be enabled. This can be enabled by going to Start -> Developer Mode -> and checking the first checkbox.
- Debug x64 - Recommended for development, also enables 'fast iteration mode' for faster dev times
- Debug Full Cook x64 - Simulates a release style cook, but uses debug binaries. Only recommended for diagnosing cook issues
- Release x64 - Recommended for your server build
For running in debugger, you should start the Boot project as your startup project.
You can search the code base for "TODO_GITHUB" for variables which you will want to update.
Please also refer to the environment variables below, which are required.
The database connections must be configured before running the server. Set the following environment variables:
GAME_DATABASE_IP
GAME_DATABASE_NAME
GAME_DATABASE_USERNAME
GAME_DATABASE_PASSWORD
GAME_DATABASE_PORT
AUTH_DATABASE_IP
AUTH_DATABASE_NAME
AUTH_DATABASE_USERNAME
AUTH_DATABASE_PASSWORD
AUTH_DATABASE_PORT
The game server runs a web server for remote UCP calls.
The user is always ucp
. Calling URL is http://IP:9001/RequestString
By default this will only bind to 127.0.0.1. Set the environment variable below to bind to an external IP (required for LIVE server):
HTTP_SERVER_BIND_IP
HTTP_SERVER_PASS
HTTP_SERVER_WHITELIST
The IP that will be making calls
The following environment variables can be used to tweak settings:
GAME_DATABASE_IP
GAME_DATABASE_NAME
GAME_DATABASE_USERNAME
GAME_DATABASE_PASSWORD
GAME_DATABASE_PORT
AUTH_DATABASE_IP
AUTH_DATABASE_NAME
AUTH_DATABASE_USERNAME
AUTH_DATABASE_PASSWORD
AUTH_DATABASE_PORT
Variable | Default | Description |
---|---|---|
HTTP_SERVER_BIND_IP |
127.0.0.1 |
The IP for the HTTP server to bind to |
HTTP_SERVER_PASS |
0E0CECB2B6808B3BECDF28936DE54AE6481 |
The authentication key for the HTTP API |
SENTRY_DSN |
Disabled |
Sentry DSN |
DISCORD_BOT_TOKEN |
Disabled |
Discord Bot Token |
DISCORD_CLIENT_ID |
Disabled |
Discord Application Client ID |
ELASTICSEARCH_HOSTS |
http://localhost:9200 |
The hosts for the ElasticSearch server, delimited by spaces |
ELASTICSEARCH_USERNAME |
`` | The authentication username for the ElasticSearch server |
ELASTICSEARCH_PASSWORD |
`` | The authentication password for the ElasticSearch server |
You can obtain a verified working version of Rage server from the Releases page on GitHub. Please choose the highest revision and extract it into Owl -> V -> Output -> .
Alternatively, you can deploy any version of RAGE you wish by simply copying the server binaries from your rage server folder and copying in the C# Bridge which is found on the forums (www.rage.mp).
After copying in your binaries, you will have to compile the source code which runs the cooker, which will copy all server output into the folder above.
None yet!
For more detailed docs see the github project or the official docs.
Note: You may need to add the Sentry Nuget package to the resource you're working in.
Examples
// Record any uncaught exceptions in a block of code
// This especially ensures that any events are sent before leaving this bloick
using (Sentry.SentrySdk.Init()) {
// Code
}
Sentry.SentrySdk.AddBreadcrumb("Started owl_core", "Resource start");
// Code
// Use a warning level
Sentry.SentrySdk.AddBreadcrumb("Some failure", "Resource start failed", level: Sentry.Protocol.BreadcrumbLevel.Warning);
// Code
// Immediately record an event with the message and any previous breadcrumbs
Sentry.SentrySdk.CaptureMessage("Uh oh", Sentry.Protocol.SentryLevel.Warning);
// Code
// A log event that adds some information about the user before sending it
// Usually would be done in a try{}catch{}
Sentry.SentryEvent logEvent = new Sentry.SentryEvent(new Exception("Error with questions"));
logEvent.User.Username = "testing";
logEvent.User.Id = "123";
Sentry.SentrySdk.CaptureEvent(logEvent);
// Code
// Use a tag for anything in your scope
// Allows for easy searching and categorizing
Sentry.SentrySdk.CongiureScope(scope => {
scope.SetTag("mycustomtag", "lul");
// Change the default 'error' level to 'fatal', 'error', 'warning', 'info', or 'debug'
scope.Level = Sentry.SentryLevel.Warning;
// Any extra key-value pairs that aren't tags
scope.SetExtra("character_name", "Chaos Maxime");
})
// Might be useful to also pop your scope so that you aren't adding onto another event
// https://docs.sentry.io/enriching-error-data/scopes/?platform=csharp
- Create an
app
on discord's developer portal for the application. - Create your bot with the following permissions
- Change Nickname
- Manage Nicknames
- Manage Roles
- Send Messages
- Read Message History
- Add Reactions
- Read Messages
- Embed Links
- Mention Everyone
- These permissions will result in a URL like so, to add it to your server: https://discordapp.com/oauth2/authorize?client_id=&scope=bot&permissions=469977152
- Set the
DISCORD_BOT_TOKEN
environment variable - To allow linking to discord users, set the
DISCORD_CLIENT_ID
variable.