#altv #module #alt-v #server-side #client-side #api #direct

altv_internal_mvalue

An internal crate for alt:V module. Not intended for direct use.

60 releases (4 stable)

new 16.0.0 Apr 24, 2024
16.0.0-dev.1 Dec 29, 2023
15.1.0 Oct 22, 2023
15.0.0-rc.4 Aug 24, 2023
15.0.0-dev.30 May 31, 2023

#3 in #alt-v

25 downloads per month
Used in 2 crates (via altv_internal_core_resour…)

MIT license

160KB
2.5K SLoC


Server-side alt:V API for Rust

crates.io

altv::events::on_player_connect(|event| {
    let name = event.player.name()?;
    altv::log!("player with name: {name} connected!");
    Ok(())
});

New server-side Rust module for alt:V platform

Big thanks to the creator of the first Rust module, as their work helped me understand how to start my own module

Client-side part

Work is being done in this branch.
Will never be published or released because alt:V does not allow you to use custom client-side modules (.dll) in production

Docs

API documentation can be found here

How to use

Before all this, you need to install LLVM

[!WARNING] Currently on Windows latest version of LLVM doesn't work with Rust module, you need to install 16.0.6, for example with winget you can do it using this command winget install LLVM.LLVM --version 16.0.6

[!IMPORTANT] On Windows set LIBCLANG_PATH as an environment variable pointing to the bin directory of your LLVM install. For example, if you installed LLVM to D:\programs\LLVM, then you'd set the value to be D:\programs\LLVM\bin. You also need to have installed Visual Studio with MSVC compiler (usually installed with Rust using Rustup)

[!INFO] If you have similar error: src/alt_bridge.h:5:10: fatal error: 'memory' file not found when installing or building altv_internal_sdk, try this

Video format of this tutorial if you are more into video tutorials

  1. Create new cargo package with cargo new altv-resource --lib

  2. Configure cargo to compile your crate as cdylib in your Cargo.toml

[lib]
crate-type = ['cdylib']
  1. After that you can install altv crate with: cargo add altv

  2. Next step will be to add main function to your resource (src/lib.rs)

use altv::prelude::*; // Entity, WorldObject traits

#[altv::main] // This is required
fn main() -> impl altv::IntoVoidResult {
    altv::log!("~gl~hello world");
}
  1. Now you can build your resource with cargo build

  2. In target/debug/ you should see the .dll or .so you just compiled (if you don't see it, make sure you set lib.crate-type to ["cdylib"], see step 2)

  3. Create new alt:V resource, in resources directory of your server

  4. Copy compiled .dll or .so to resource directory

  5. Create resource.toml with this content:

type = 'rs'
main = 'example.dll' # your compiled .dll or .so
  1. Don't forget to add resource to server.toml

  2. Now you can download rust-module .dll or .so from latest release or with cargo-altvup

  3. Copy it to modules directory of your server (if you do not use cargo-altvup)

  4. Add rust-module to server.toml like that:

modules = ['rust-module']
  1. Now if you have done everything correctly, you should see green "hello world" message in server console

Dependencies

~3–14MB
~168K SLoC