2026-07-16, 09:14 PM
(This post was last modified: 2026-07-17, 07:25 PM by itskoleban.)
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
Usage Example
Maxora comes with pre-made stock helpers to simplify common queries and supports up to 8 localized languages out of the box!
Download & Installation
Requirements: open.mp server (Windows or Linux x86).
Source Code
Maxora is fully open-source and natively built against the modern IComponent open.mp SDK interface.
https://github.com/itskoleban/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

