Skip to content

v1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Jul 20:28

Maxora v1.0.0 🚀

We are incredibly excited to announce the first official release of Maxora!

Maxora is a highly optimized, production-ready open.mp component for querying MaxMind DB (.mmdb) databases directly from Pawn scripts. It brings instant IP geolocation lookups (such as Country, City, ASN, and ISP) to high-concurrency servers without introducing latency or garbage collection overhead.

🔥 Key Features

  • Zero Heap Allocations: Executes all hot paths (reading from AMX, preparing paths, and querying the database) entirely on the C++ stack using fixed-size buffers and thread_local memory arrays. It performs 0 dynamic heap allocations per query.
  • Extreme Performance: Leverages Memory-Mapped I/O (MMDB_MODE_MMAP) for instant O(depth) lookups directly from disk cache.
  • Atomic Hot-Swaps: Safely reload the .mmdb database on the fly. If a corrupted file is provided, Maxora gracefully rejects it while keeping the existing database alive, preventing live server crashes.
  • Native StringView Integration: Implements strict bounds checking and utilizes open.mp's native StringView for 100% memory-safe AMX string operations.
  • Localized Stock Helpers: Includes built-in Pawn macros (MMDB_LANG_SPANISH, MMDB_LANG_ENGLISH, etc.) to easily extract names in multiple languages.

📦 Installation

  1. Download maxora.dll (Windows) or libmaxora.so (Linux) from the assets below.
  2. Place the component in your open.mp components folder.
  3. Add maxora to the components section of your config.json.
  4. Include maxora.inc in your Pawn script.
  5. Download a GeoLite2 Free Database (e.g. GeoLite2-City.mmdb) and place it in your server root.

💻 Quick Example

#include <open.mp>
#include <maxora>

main()
{
    if (MMDB_Load("GeoLite2-City.mmdb"))
    {
        new country[64];
        new const ip[] = "8.8.8.8";

        // Extract localized country name instantly!
        if (MMDB_GetCountryName(ip, country, sizeof(country), MMDB_LANG_SPANISH))
        {
            printf("Country (Spanish): %s", country);
        }
    }
}

Full Changelog: https://github.com/itskoleban/Maxora/commits/v1.0.0