Я считаю главная проблема работы с сетями в AMXX, это трудности с динамическим хранением данные любого размера. Вернее со скоростью доступа к ним и т.д. Потом преобразование из строкового в числовое, тоже достаточно накладная операция. Вот если бы к примеру в FakeMeta импортировать из стандартной сишной библиотеки, и потом експортировать для использования, простейшие функции ip2long и наоборот, было бы просто замечательно. Работу с масками в принципе не тяжело и на PAWN реализовать.
Я в своей разработке сейчас не парюсь. Так как используется mysql, я использую встроенные в него аналогичные функции. В amx для того чтобы пореже дергать базу, делаю кеширование. На 64 адреса последних игроков, потом самые старые заменяються вновь законектившимися.
База сетей уже большая, можете глянуть здесь http://headshot.kiev.ua/forum/csnets.php . Но работает все на ура, на скорость не жалуюсь.
Там есть как сети, так и конкретные адреса.
Запрос приблизительно такой:
Code
SELECT allow, inet_aton(mask) as netmask
FROM nets
WHERE (inet_aton(net) & inet_aton(mask) = inet_aton('%s') & inet_aton(mask))
ORDER BY netmask DESC
на выходе может оказаться несколько сетей с разной маской. Беру только самую первую ибо они отсортированы по ней и самая длинная указывает на самый подходящий диапазон. Интересует только поле allow, именно оно говорит какая это сеть, запрещенная, забаненная, разрешенная, и дальше уже работаю с игроком.