An open API service indexing awesome lists of open source software.

https://github.com/pycckue-bnepeg/samp-rs

SA:MP SDK written in Rust
https://github.com/pycckue-bnepeg/samp-rs

amx bindings plugin plugins rust samp samp-plugin samp-sdk sdk

Last synced: about 1 year ago
JSON representation

SA:MP SDK written in Rust

Awesome Lists containing this project

README

          

[![Docs](https://docs.rs/samp/badge.svg)](https://docs.rs/samp)
[![Crates](https://img.shields.io/crates/v/samp.svg)](https://crates.io/crates/samp)
# samp-rs
samp-rs is a tool to develop plugins for [samp](http://sa-mp.com) servers written in rust.

# documentation
it's [here](https://zottce.github.io/samp-rs/samp/index.html)! need to find a way to fix docs.rs ...

# project structure
* `samp` is a glue between crates described below (that's what you need).
* `samp-codegen` generates raw `extern "C"` functions and does whole nasty job.
* `samp-sdk` contains all types to work with amx.

# usage
* [install](https://rustup.rs) rust compiler (supports only `i686` os versions because of samp server arch).
* add in your `Cargo.toml` this:
```toml
[lib]
crate-type = ["cdylib"] # or dylib

[dependencies]
samp = "0.1.2"
```
* write your first plugin

# migration from old versions
* check out [the guide](migration.md)

# examples
* simple memcache plugin in `plugin-example` folder.
* your `lib.rs` file
```rust
use samp::prelude::*; // export most useful types
use samp::{native, initialize_plugin}; // codegen macros

struct Plugin;

impl SampPlugin for Plugin {
// this function executed when samp server loads your plugin
fn on_load(&mut self) {
println!("Plugin is loaded.");
}
}

impl Plugin {
#[native(name = "TestNative")]
fn my_native(&mut self, _amx: &Amx, text: AmxString) -> AmxResult {
let text = text.to_string(); // convert amx string into rust string
println!("rust plugin: {}", text);

Ok(true)
}
}

initialize_plugin!(
natives: [Plugin::my_native],
{
let plugin = Plugin; // create a plugin object
return plugin; // return the plugin into runtime
}
)
```