Инфо из file.inc:
//Returns a handle to a directory
native open_dir(dir[], firstfile[], length);
native next_file(dirh, buffer[], length);
native close_dir(dirh);
Синтаксис:
open_dir ( dir[], buffer[], length )
- dir[] - Открываемая директория
- buffer[] - Массив для записи имен фалов
- length - Максимальная длина имени
Синтаксис:
next_file ( dirh, buffer[], length )
- dirh - Дескриптор директории
- buffer[] - Массив с именами файлов
- length - максимальная длина.
Синтаксис:
close_dir ( dirh )
- dirh - Дескриптор директории - закрывает дескриптор.
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[file.inc] open_dir,next_file,close_dir"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
new dir, mapName[32]
dir = open_dir("maps", mapName, sizeof(mapName)-1)
if (dir)
{
new lenMapName
while (next_file(dir, mapName, sizeof(mapName)-1))
{
lenMapName = strlen(mapName)
if (lenMapName > 4 && equali(mapName[lenMapName - 4], ".bsp", 4))
{
mapName[lenMapName-4] = '^0'
if (is_map_valid(mapName))
{
server_print("%s",mapName)
}
}
}
close_dir(dir)
}
}
Описание:
Очень простой и наглядный пример, который выведет в консоль все карты в папке с картами сервера.

Что бы понять как работает данный код, вы обязаны знать принцип работы цикла while.
В двух словах же все просто:
Сначала получаем дескриптор директории и файлы из нее с помощью функции open_dir.
Затем в цикле функция next_file читает следующий фал из дескриптора (вернее из массива соответствующего дескриптору)
И если он есть то несколько нехитрых проверок, что бы отсеять не файлы карт и вывод в консоль сервера названий карт.
И в завершении обязательно закрытие дескриптора функцией close_dir.
Вот такой вот не сложный способ прочесть все имена файлов в какой либо директории сервера.