#develop #plugin #server #load #self #amx #samp-plugin

samp

用于开发 SA:MP 插件的工具

3 个版本

0.1.2 2019年3月20日
0.1.1 2019年3月16日
0.1.0 2019年3月16日

#6 in #develop

MIT 许可证

68KB
1K SLoC

Docs Crates

samp-rs

samp-rs 是一个用于用 Rust 编写 samp 服务器插件的工具。

文档

它在这里!需要找到修复 docs.rs 的方法...

项目结构

  • samp 是下面描述的 crate 之间的粘合剂(你需要这个)。
  • samp-codegen 生成原始的 extern "C" 函数并执行所有繁琐的工作。
  • samp-sdk 包含与 amx 一起工作的所有类型。

使用

  • 安装 rust 编译器(由于 samp 服务器架构,仅支持 i686 操作系统版本)。
  • 在您的 Cargo.toml 中添加以下内容
[lib]
crate-type = ["cdylib"] # or dylib

[dependencies]
samp = "0.1.0"
  • 编写您的第一个插件

从旧版本迁移

示例

  • plugin-example 文件夹中的简单 memcache 插件。
  • 您的 lib.rs 文件
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<bool> {
        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
    }
)

依赖项

~3–5MB
~92K SLoC