altv 0.2.0

Data-oriented AltV module written in Rust
docs.rs failed to build altv-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: altv-16.0.0-dev.1

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.

Setup

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 ]

Example

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!")
            }
            _ => {}
        };
    }
}

#[no_mangle]
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);
    Ok(application)
}

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.