Crates.io | altv_internal_resource_main_macro |
lib.rs | altv_internal_resource_main_macro |
version | 16.2.2 |
source | src |
created_at | 2023-04-17 23:21:22.066179 |
updated_at | 2024-09-18 18:21:55.872953 |
description | A macro for declaring main function of alt:V Rust resource. Not intended for direct use. |
homepage | |
repository | https://github.com/xxshady/altv-rust |
max_upload_size | |
id | 841950 |
size | 11,015 |
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
At first it was native implementation using wasmtime without JavaScript. It worked, but because alt:V does not allow you to use custom client-side modules (.dll) in production without approval, integration into the client core, constant maintenance and more than 0 people using this module, I switched to a more realistic approach, JavaScript WASM
API documentation can be found here
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 17.0.1, for example with winget you can do it using this command
winget install LLVM.LLVM --version 17.0.1
(add--force
if it fails)
[!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)
[!NOTE] 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
Create new cargo package with cargo new altv-resource --lib
Configure cargo to compile your crate as cdylib
in your Cargo.toml
[lib]
crate-type = ['cdylib']
After that you can install altv
crate with: cargo add altv
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");
}
Now you can build your resource with cargo build
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)
Create new alt:V resource, in resources
directory of your server
Copy compiled .dll
or .so
to resource directory
Create resource.toml
with this content:
type = 'rs'
main = 'example.dll' # your compiled .dll or .so
Don't forget to add resource to server.toml
Now you can download rust-module .dll
or .so
from latest release or with cargo-altvup
Copy it to modules
directory of your server (if you do not use cargo-altvup
)
Add rust-module
to server.toml
like that:
modules = ['rust-module']