1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//! Low-level layer of the `rust-samp` toolkit.
//!
//! This crate concentrates two independent sets of bindings:
//!
//! - **AMX**: pointers, cell types, function table and error codes of the
//! Pawn VM used by SA-MP (modules [`raw`], [`amx`], [`cell`], [`args`],
//! [`error`], [`exports`], [`consts`]).
//! - **Open Multiplayer**: vtables, binary layout of `IComponent` and typed wrappers
//! of the native server interfaces (module [`omp`], active while the
//! `samp-only` feature is not enabled).
//!
//! The interface of this crate works on raw pointers and is `unsafe`-friendly.
//! To write plugins, use the `samp` crate (workspace root) — it re-exports
//! this SDK and adds the plugin life cycle and native registration via
//! proc macros (`#[native]`, `initialize_plugin!`, `#[derive(SampPlugin)]`).
// The open.mp component ABI on Windows uses the `thiscall` calling convention,
// which only exists on 32-bit x86 — the target SA-MP/open.mp servers actually
// run on. Compiling it for 64-bit MSVC fails (E0570: unsupported ABI), so the
// module is skipped there. This lets host-side tooling (e.g. a DAP adapter that
// only needs `samp::debug`) build for `x86_64-pc-windows-msvc`.