#altv #macro #wasmtime

macro altv_internal_resource_main_macro

A macro for declaring main function of alt:V Rust resource. Not intended for direct use.

68 releases (3 stable)

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-rc.1 Jul 23, 2023
0.3.1 Apr 17, 2023

#8 in #altv

Download history 93/week @ 2023-10-22 99/week @ 2023-10-29 15/week @ 2023-11-05 13/week @ 2023-11-12 149/week @ 2023-11-19 256/week @ 2023-11-26 82/week @ 2023-12-03 83/week @ 2023-12-10 6/week @ 2023-12-17 192/week @ 2023-12-24 7/week @ 2023-12-31 5/week @ 2024-01-07 5/week @ 2024-01-14 4/week @ 2024-01-21 316/week @ 2024-01-28 4/week @ 2024-02-04

329 downloads per month
Used in altv

MIT license

10KB
78 lines


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

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

If you are on Windows you also need to have installed Visual Studio with MSVC compiler (usually installed with Rust using Rustup)

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

~1.5MB
~33K SLoC