| Welcome, Guest |
You have to register before you can post on our site.
|
| Forum Statistics |
» Members: 6,773
» Latest member: LucasHart
» Forum threads: 2,526
» Forum posts: 12,612
Full Statistics
|
| Online Users |
There are currently 130 online users. » 1 Member(s) | 127 Guest(s) Bing, Google, Bmoknjkui
|
|
|
| Unban |
|
Posted by: _Levii - 2026-07-17, 09:41 PM - Forum: Chat
- No Replies
|
 |
I would like to be unbanned from the official samp dsc server
levii.exe
|
|
|
|
| Discord Unban Request |
|
Posted by: _Levii - 2026-07-17, 09:39 PM - Forum: Support
- No Replies
|
 |
I would like to be unbanned from the official Discord Server .gg/samp !
I don't actually remember honestly for what I was banned, I apologize if I broke any rule.
|
|
|
|
| Maxora |
|
Posted by: itskoleban - 2026-07-16, 09:14 PM - Forum: Plugins
- No Replies
|
 |
Maxora
Highly optimized, zero-allocation MaxMind DB component for open.mp
Maxora is a production-ready component designed specifically for modern open.mp servers. It allows you to natively query MaxMind DB (.mmdb) databases directly from your Pawn scripts to instantly geolocate IPs (Country, City, ASN, ISP) without choking your main server thread.
Features - Extreme Performance: Uses Memory-Mapped I/O (MMDB_MODE_MMAP) for instant O(depth) lookups directly from the OS disk cache.
- Zero Heap Allocations: Hot paths run exclusively on the C++ stack using fixed-size buffers and thread_local memory arrays. Performs 0 dynamic heap allocations per query.
- Memory Safety Guarantee: Strictly enforces bounds checking and utilizes open.mp's native StringView to prevent buffer overflows during AMX string interactions.
- Atomic Hot-Swaps: Reloads the database on the fly. If you provide an invalid file, the plugin gracefully rejects it while preserving the existing database, preventing live-server crashes.
- Dynamic JSON-like Paths: Query any arbitrary depth hierarchy natively (e.g., "country.names.es").
Usage Example
Maxora comes with pre-made stock helpers to simplify common queries and supports up to 8 localized languages out of the box!
Code: #include <open.mp>
#include <maxora>
main() {}
public OnGameModeInit() {
// The path resolves from your server's root directory.
// You can place it anywhere, for example inside scriptfiles:
if (MMDB_Load("scriptfiles/GeoLite2-City.mmdb")) {
print("[MMDB] Database loaded successfully.");
} else {
new err[128];
MMDB_GetLastError(err, sizeof(err));
printf("[MMDB] Failed to load database. Reason: %s", err);
}
return 1;
}
public OnPlayerConnect(playerid) {
new ip[16], country[64];
GetPlayerIp(playerid, ip, sizeof(ip));
// Querying a localized English country name using stock helpers
if (MMDB_GetCountryName(ip, country, sizeof(country), MMDB_LANG_ENGLISH)) {
printf("[MMDB] Player %d connected | IP: %s | Country: %s", playerid, ip, country);
} else {
new err[128];
MMDB_GetLastError(err, sizeof(err));
printf("[MMDB] Player %d connected | IP: %s | Country: Unknown (Reason: %s)", playerid, ip, err);
}
return 1;
}
Download & Installation
Requirements: open.mp server (Windows or Linux x86).
- Download the latest maxora.dll or libmaxora.so from the GitHub Releases Page.
- Place it in your open.mp components directory.
- Download a GeoLite2 Free Database and place it in the server root.
- Add maxora.inc to your pawno/include folder.
Source Code
Maxora is fully open-source and natively built against the modern IComponent open.mp SDK interface.
https://github.com/itskoleban/Maxora
|
|
|
|
| SAMP-TTS |
|
Posted by: connyxv - 2026-07-14, 05:31 PM - Forum: Plugins
- No Replies
|
 |
Hey guys. I've been working on a plugin that brings real Text-To-Speech to SA-MP using the ElevenLabs API, and I decided to release the first version.
Instead of freezing the server while downloading the audio, the plugin runs entirely on a separate thread and uses a small Python backend to cache the voice lines. This means zero lag for the game mode and you save a lot of API tokens.
Main features:
- 3D Positional Audio: You can attach the voice to a specific location or an NPC. The volume fades naturally as you walk away.
- Background Preload: You can generate the voice lines silently when the server starts. When you need them, they play instantly with no delay.
- Duration callbacks: The plugin calculates exactly how long the audio file is in seconds and sends it to the PAWN callback. It's really useful if you want to sync an NPC talking animation with the voice.
- Dynamic voice tuning: You can change the AI model, stability, and similarity directly from PAWN to simulate different tones.
How to deal with "Audio Stream" messages
As you probably know, the SA-MP client prints "Audio stream: URL" in the chat every time an audio starts. We can't block this from the server. Your players will need to type /audiomsg in game to hide those texts. I suggest putting a reminder in your server rules or tutorial.
Download & Source
You can find the Windows DLL, the Linux .so, the Python server files and a clean example gamemode on GitHub:
GitHub Repository
Example video
I also recorded the plugin in action, you can take a look here:
https://streamable.com/fxb0y2
Important
Also remember that the free version of ElevenLabs got limitations on wich voices you can use, so stick with the voices that you find in the "Default" section, to get the ID of a voice click on the dots beside voice and click "Copy voice ID".
Also it's better using Eleven Flash 2.5 as it's 50% cheaper (it's default in the script) and it's faster if you need to say things without delay.
List of voices you can use in the free plan:
Bella - hpp4J3VqNfWAUOO0d1Us
Roger - CwhRBWXzGAHq8TQ4Fs17
Sarah - EXAVITQu4vr4xnSDxMaL
Laura - FGY2WhTYpPnrIDTdsKH5
Charlie - IKne3meq5aSn9XLyUdCD
George - JBFqnCBsd6RMkjVDRZzb
Callum - N2lVS1w4EtoT3dr4eOWO
River - SAz9YHcvj6GT2YYXdXww
Harry - SOYHLrjzK2X1ezoPC6cr
Liam - TX3LPaxmHKxFdv7VOQHJ
Alice - Xb7hH8MSUJpSbSDYk0k2
Matilda - XrExE9yKIg1WjnnlVkGX
Will - bIHbv24MWmeRgasZH58o
Jessica - cgSgspJ2msm6clMCkdW9
Eric - cjVigY5qzO86Huf0OWal
Chris - iP95p4xoKVk53GoZ742B
Brian - nPczCjzI2devNBz1zQrb
Daniel - onwK4e9ZLuTAKqWW03F9
Lily - pFZP5JQG7iQjIQuC4Bku
Adam - pNInz6obpgDQGcFmaJgB
Bill - pqHfZKP75CvOlQylNhV4
Let me know if you find any bugs or need help.
|
|
|
|
| IndexWeaver |
|
Posted by: itskoleban - 2026-07-14, 12:56 AM - Forum: Plugins
- No Replies
|
 |
IndexWeaver
A high-performance, lightweight in-memory ID-to-index registry plugin designed specifically for open.mp.
- The Problem
How many times have you written a linear `for` loop across `MAX_PLAYERS` or `MAX_VEHICLES` just to find the array slot that matches a specific SQL Database ID or an arbitrary key? Linear loops `O(N)` are slow and unnecessary.
- The Solution
IndexWeaver completely eliminates these linear searches. It maps your primary keys (like SQL IDs) directly to your Pawn array slots, allowing your Pawn code to remain the single source of truth for the actual data, while giving you instantaneous O(1) memory lookups.
- Architecture & Performance
IndexWeaver implements a heavily optimized Hybrid Storage Model: - Fast Registries (Type 0 - 63): Uses a fixed contiguous array. Erasing elements retains capacity (Zero-Allocation Retention), ensuring that frequent re-insertions (like players reconnecting) never trigger expensive OS heap allocations.
- Slow Registries (Type >= 64): Uses `robin_hood` flat maps as a dynamic fallback. It features aggressive cleanup; when a registry drops to zero elements, it is safely destroyed to prevent memory leaks in long-running servers.
Benchmarks (MSVC /O2): 10 Million Insertions in ~0.92s, 10 Million Lookups in ~0.62s!
- Pawn API
Code: native bool:SetMapIndex(registry_type, id, index);
native GetMapIndex(registry_type, id);
native bool:RemoveMapIndex(registry_type, id);
native bool:HasMapIndex(registry_type, id);
native bool:ClearMapRegistry(registry_type);
native ClearAllMapRegistries();
native bool:ReserveMapRegistry(registry_type, capacity);
native bool:SetMapDebugLevel(level);
- Quick Example
Instead of looping through all loaded clans to find the one with `SQL_ID == 850`:
Code: // Store the index when loading from the database
SetMapIndex(REGISTRY_CLANS, 850, array_slot);
// Later, instantly retrieve the slot! No loops!
new slot = GetMapIndex(REGISTRY_CLANS, 850);
if(slot != INVALID_MAP_INDEX) {
printf("Clan Name: %s", ClanData[slot][cName]);
}
- Download & Source Code
The plugin is entirely open-source, beautifully documented, and cross-platform (Windows/Linux).
Contributions and Pull Requests are welcome!
|
|
|
|
| Looking for a Pawn dev - fresh open.mp RP server, zero cost, full creative control |
|
Posted by: RedNeckSnailSpit - 2026-07-11, 10:07 AM - Forum: General Discussions
- No Replies
|
 |
Working on a fresh open.mp RP server - own VPS, dedicated Pterodactyl instance, dedicated MariaDB with real storage headroom, private GitHub repo ready to go. No inherited codebase, no forced framework - you'd be building the gamemode your way, not untangling someone else's half-finished mess.
Not a paid gig, and I'm upfront about that - but it's zero cost to you either, no pressure to monetize, and the infrastructure isn't going anywhere overnight. Full write-up on what's actually running and what I'm asking for here: https://samp.rednecksnailspit.co.za/
Looking for someone who wants to build something they'd actually want to play, not just close out a contract. If that's you, details and contact info are on the page above.
|
|
|
|
|