0.2.0 Jun 13, 2020
0.1.0 Jun 1, 2020

#6 in #alt-v


17K SLoC

Contains (static library, 5MB) libaltv-capi-server-static.a, (static library, 4MB) altv-capi-server-static.lib

alt:V Rust Module

Rust Current Crates.io Version MIT/Apache

What is alt:V?

alt:V is a free third-party multiplayer modification for Grand Theft Auto: V. It allows you to play with your friends on dedicated servers with custom gamemodes with an ultimate experience.

The module allows you to write your own gamemode in Rust.


Before you start writing your own gamemode, setup an alt:V server following this tutorial:

To make the alt:V server compatible with rust, paste the rust-module into the modules/ folder and add this line to your server.cfg file:

modules: [ rust-module ]

If you want to use multiple modules e.g. the csharp-module or js-module, seperate them with a ,:

modules: [ rust-module, csharp-module, js-module ]


Create a rust lib project and add this line to your Cargo.toml file under [dependencies]:

altv = "0.2.0" 

Alternatively, pull it from GitHub to obtain the latest version from develop:

altv = { git = "https://github.com/DimaaIO/altv-rs" } 

Then replace src/lib.rs with the following:

use altv::app::{ApplicationBuilder, CoreApplication};
use altv::game_data::{GameData, GameDataBuilder, StateData};
use altv::sdk::events::*;
use altv::state::State;
use std::error::Error;

pub struct GameState;

impl State for GameState {
    fn on_start(&mut self, data: StateData<GameData>) {
        altv::sdk::log::info("Hello from rust!");

    fn on_stop(&mut self, data: StateData<GameData>) {
        altv::sdk::log::info("Time to sleep, bye!");

    fn handle_event(&mut self, data: StateData<GameData>, event: CEvent) {
        match &event {
            CEvent::PlayerConnect(event) => {
                altv::sdk::log::info("Listen closely! A new player connected to the server!")
            _ => {}

pub fn main(core: usize) -> Result<CoreApplication, Box<dyn Error>> {
    let game_data_builder = GameDataBuilder::new();
    let application = ApplicationBuilder::new(core, Box::new(GameState)).build(game_data_builder);

We have several simple example projects included. You can see the full list in the examples/ folder.

To compile any of the examples run:

$ cargo build

Now create a new folder for the resource: resource/example and create a new file resource.cfg with the following text:

type: rust,
main: libexample.so

To enable the resource, add a reference in the server.cfg file:

resources: [ example ]

Then copy the compiled lib from target/[debug/release]/libexample.so to the example resource folder.


~161K SLoC