samp_sdk/omp/generated/player_pickups.rs
1//! `IPlayerPickupData` — generated by `cargo xtask gen-omp` from `Server/Components/Pickups/pickups.hpp`.
2//! Implemented by `PlayerPickupData` in the server's `Pickups`.
3//!
4//! Do not edit: change `xtask/omp-wrappers.toml` or the generator and
5//! regenerate. Slots are clang's layout of the header for each ABI, checked
6//! against the official binaries by `cargo xtask check-abi --generated`.
7
8#![allow(unused_imports)]
9
10use crate::omp::containers::{FlatSet, HybridString, Pair, Span};
11use crate::omp::types::{
12 Colour, GTAQuat, Hours, Microseconds, Milliseconds, Minutes, Seconds, StringView, TimePoint,
13 UID, Vector2, Vector3, Vector4, WorldTimePoint,
14};
15use crate::omp::vtable::{call_vtable_small_struct, opaque, slots, virtual_fns};
16use crate::omp::*;
17
18opaque! {
19 /// Opaque handle for `IPlayerPickupData*`.
20 pub IPlayerPickupData;
21}
22
23/// `PickupData_UID` in `Server/Components/Pickups/pickups.hpp`.
24pub const PLAYER_PICKUPS_UID: UID = 0x98376f4428d7b70b;
25
26/// The player's `IPlayerPickupData`, or null when the component providing it is not loaded.
27///
28/// Found by walking the player's extension map for `PLAYER_PICKUPS_UID` — the
29/// virtual `getExtension` does not consult that map. `IExtension`
30/// is `IPlayerPickupData`'s first base, so the extension pointer is the interface pointer.
31///
32/// # Safety
33/// `player` must be a live `IPlayer`.
34#[must_use]
35pub unsafe fn player_pickups(player: *mut IPlayer) -> *mut IPlayerPickupData {
36 unsafe { extension(player.cast::<u8>(), PLAYER_PICKUPS_UID) }.cast::<IPlayerPickupData>()
37}
38
39slots! {
40 /// `int IPlayerPickupData::toLegacyID(int)`
41 SLOT_TO_LEGACY_ID: usize = 3, 3;
42 /// `int IPlayerPickupData::fromLegacyID(int)`
43 SLOT_FROM_LEGACY_ID: usize = 4, 4;
44 /// `void IPlayerPickupData::releaseLegacyID(int)`
45 SLOT_RELEASE_LEGACY_ID: usize = 5, 5;
46 /// `int IPlayerPickupData::reserveLegacyID()`
47 SLOT_RESERVE_LEGACY_ID: usize = 6, 6;
48 /// `void IPlayerPickupData::setLegacyID(int, int)`
49 SLOT_SET_LEGACY_ID: usize = 7, 7;
50 /// `int IPlayerPickupData::toClientID(int)`
51 SLOT_TO_CLIENT_ID: usize = 8, 8;
52 /// `int IPlayerPickupData::fromClientID(int)`
53 SLOT_FROM_CLIENT_ID: usize = 9, 9;
54 /// `void IPlayerPickupData::releaseClientID(int)`
55 SLOT_RELEASE_CLIENT_ID: usize = 10, 10;
56 /// `int IPlayerPickupData::reserveClientID()`
57 SLOT_RESERVE_CLIENT_ID: usize = 11, 11;
58 /// `void IPlayerPickupData::setClientID(int, int)`
59 SLOT_SET_CLIENT_ID: usize = 12, 12;
60}
61
62virtual_fns! {
63 /// `int IPlayerPickupData::toLegacyID(int)`.
64 ///
65 /// # Safety
66 /// `data` must be a live `IPlayerPickupData`.
67 #[must_use]
68 pub fn player_pickups_to_legacy_id(
69 data: IPlayerPickupData,
70 real: i32,
71 ) -> i32 = [0, SLOT_TO_LEGACY_ID] or 0;
72
73 /// `int IPlayerPickupData::fromLegacyID(int)`.
74 ///
75 /// # Safety
76 /// `data` must be a live `IPlayerPickupData`.
77 #[must_use]
78 pub fn player_pickups_from_legacy_id(
79 data: IPlayerPickupData,
80 legacy: i32,
81 ) -> i32 = [0, SLOT_FROM_LEGACY_ID] or 0;
82
83 /// `void IPlayerPickupData::releaseLegacyID(int)`.
84 ///
85 /// # Safety
86 /// `data` must be a live `IPlayerPickupData`.
87 pub fn player_pickups_release_legacy_id(
88 data: IPlayerPickupData,
89 legacy: i32,
90 ) = [0, SLOT_RELEASE_LEGACY_ID];
91
92 /// `int IPlayerPickupData::reserveLegacyID()`.
93 ///
94 /// # Safety
95 /// `data` must be a live `IPlayerPickupData`.
96 #[must_use]
97 pub fn player_pickups_reserve_legacy_id(
98 data: IPlayerPickupData,
99 ) -> i32 = [0, SLOT_RESERVE_LEGACY_ID] or 0;
100
101 /// `void IPlayerPickupData::setLegacyID(int, int)`.
102 ///
103 /// # Safety
104 /// `data` must be a live `IPlayerPickupData`.
105 pub fn player_pickups_set_legacy_id(
106 data: IPlayerPickupData,
107 legacy: i32,
108 real: i32,
109 ) = [0, SLOT_SET_LEGACY_ID];
110
111 /// `int IPlayerPickupData::toClientID(int)`.
112 ///
113 /// # Safety
114 /// `data` must be a live `IPlayerPickupData`.
115 #[must_use]
116 pub fn player_pickups_to_client_id(
117 data: IPlayerPickupData,
118 real: i32,
119 ) -> i32 = [0, SLOT_TO_CLIENT_ID] or 0;
120
121 /// `int IPlayerPickupData::fromClientID(int)`.
122 ///
123 /// # Safety
124 /// `data` must be a live `IPlayerPickupData`.
125 #[must_use]
126 pub fn player_pickups_from_client_id(
127 data: IPlayerPickupData,
128 legacy: i32,
129 ) -> i32 = [0, SLOT_FROM_CLIENT_ID] or 0;
130
131 /// `void IPlayerPickupData::releaseClientID(int)`.
132 ///
133 /// # Safety
134 /// `data` must be a live `IPlayerPickupData`.
135 pub fn player_pickups_release_client_id(
136 data: IPlayerPickupData,
137 legacy: i32,
138 ) = [0, SLOT_RELEASE_CLIENT_ID];
139
140 /// `int IPlayerPickupData::reserveClientID()`.
141 ///
142 /// # Safety
143 /// `data` must be a live `IPlayerPickupData`.
144 #[must_use]
145 pub fn player_pickups_reserve_client_id(
146 data: IPlayerPickupData,
147 ) -> i32 = [0, SLOT_RESERVE_CLIENT_ID] or 0;
148
149 /// `void IPlayerPickupData::setClientID(int, int)`.
150 ///
151 /// # Safety
152 /// `data` must be a live `IPlayerPickupData`.
153 pub fn player_pickups_set_client_id(
154 data: IPlayerPickupData,
155 legacy: i32,
156 real: i32,
157 ) = [0, SLOT_SET_CLIENT_ID];
158}