Skip to content
NeedForKillTheGamePublic

About

.NET Library read/write NFK map (nmap) and demo (ndm)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

 

History

53 Commits

Folders and files

Repository files navigation

NFK Helper Library

Извлекает информацию из демки и из карты игры Need For Kill

В тестовой программе показан пример вывода статистики игроков:

Можно извлечь и сохранить карту .mapa из демки:

var fileName = "demo.ndm";
var ndm = new nfklib.NDemo.NFKDemo();
var demo = ndm.Read(fileName);

// сохранить файл карты
ndm.Map.Write("mapfromdemo.mapa");

Можно создать свою карту, или изменить существующую:

var nmap = new NFKMap();
var map = nfkmap.NewMap(15, 8);

// следующий код заполнит бриками границу карты
for (int x = 0; x < map.Header.MapSizeX; x++)
	for (int y = 0; y < map.Header.MapSizeY; y++)
		if (x == 0 || x == map.Header.MapSizeX - 1 || y == 0 || y == map.Header.MapSizeY - 1)
			map.Bricks[x][y] = 228;

// респавн в левом нижнем углу
map.Bricks[1][map.Header.MapSizeY - 2] = SimpleObject.Respawn();

// установим в правом нижнем углу портал, с телепортом в левый нижний угол
var obj = SpecialObject.Teleport
(
	(short)(map.Header.MapSizeX - 2), // x
	(short)(map.Header.MapSizeY - 2), // y
	2, // goto x
	(short)(map.Header.MapSizeY - 2) // goto y
);

map.Objects = new TMapObj[] { obj }; // добавить портал в массив объектов

nmap.Write("test.mapa");

Можно получить информацию из отдельной карты:

var fileName = "map.mapa";
var nmap = new NFKMap();
var map = nmap.Read();

// извлечь картинку палитры
map.Palette.SaveAsPng("palette.png"); // using SixLabors.ImageSharp;

Сборка и запуск (.NET 10)

Все проекты используют .NET 10 SDK и работают в Windows, Linux и macOS.

dotnet build nfklib.sln
dotnet run --project examples/demostats -- demo.ndm
dotnet run --project examples/demowebapi

Сборка Docker-образа из корня репозитория:

docker build -f examples/demowebapi/Dockerfile -t nfk-demoparser .
docker compose -f examples/demowebapi/docker-compose.yml up --build

demostats

Показывает общую статистику по игрокам в конце игры

ndm_pal_replace

Заменяет палитру карты в файле демки или всю карту

ndm_rail_replace

Заменяет цвет луча рейлгана в файле демки у всех игроков (или у определенного игрока)

nmap2web

Конвертирует NFK карту в web формат карты для nfk-web

demowebapi

Дополнительная программа-пример, предоставляет REST WebAPI с единственным методом для загрузки демок, который возвращает статистику игроков и массив всех игровых действий в формате JSON.

Использует ASP.NET Core. Swagger UI доступен по корневому адресу приложения. Для запуска в контейнере используйте Docker Compose (команда выше).

Работает по адресу https://nfk.harpywar.com/demoparser/


Разбор формата NFKDEMO

About

.NET Library read/write NFK map (nmap) and demo (ndm)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages