nfk / mapviewer
NFK 地图查看器
1.0.10
2013-02-07 22:12 UTC
Requires
- php: >=5.3.3
- ext-bz2: *
- ext-gd: *
This package is not auto-updated.
Last update: 2024-09-28 13:35:55 UTC
README
从 .mapa
文件生成游戏 Need For Kill 的地图图像
脚本示例工作: http://harpywar.com/test/nfkmap/
要求
PHP >= 5.3,并启用扩展 php_gd2
和 php_bz2
通过 Composer 安装
Composer 包管理器简化了在项目中安装外部脚本。它会自动下载所需的文件并将它们添加到 vendor/autoload.php
中,您只需在脚本开头包含它即可。
-
打开将放置 NFK Map Viewer 的文件夹,并创建一个包含以下内容的
composer.json
文件{ "minimum-stability": "dev", "require": { "nfk/mapviewer":"dev-master" } }
-
将 https://getcomposer.org.cn/composer.phar 文件放入该文件夹并执行以下命令
php composer.phar install
-
安装包后,应该出现一个名为
vendor
的文件夹,其中包含 composer 的自动加载器和 MapViewer 的源代码。 -
现在,只需在脚本开头包含加载文件即可,之后就可以使用 MapViewer 了。
include "vendor/autoload.php";
常规安装
如果您不使用 Composer,请在脚本开头添加内置的类自动加载器
include("lib/autoloader.php");
Autoloader::register();
使用示例(更多详情请见 examples 目录)
从现有地图保存全尺寸图像
use NFK\MapViewer\MapViewer;
$nmap = new MapViewer("tourney4.mapa");
$nmap->LoadMap();
$im = $nmap->DrawMap();
imagepng($im, $nmap->GetFileName() . '.png');
可以创建自己的地图或修改现有地图
// хелперы для удобного создания объектов
use NFK\MapViewer\MapObject\SimpleObject
use NFK\MapViewer\MapObject\SpecialObject
$nmap = new MapViewer("test.mapa");
// следующий код заполнит бриками границу карты
for ($x = 0; $x < $nmap->Header->MapSizeX; $x++)
for ($y = 0; $y < $nmap->Header->MapSizeY; $y++)
if ($x == 0 || $x == $nmap->Header->MapSizeX - 1 || $y == 0 || $y == $nmap->Header->MapSizeY - 1)
$nmap->Bricks[$x][$y] = 228;
// респавн в левом нижнем углу
$nmap->Bricks[1][$nmap->Header->MapSizeY - 2] = SimpleObject::Respawn();
// установим в правом нижнем углу портал, с телепортом в левый нижний угол
$obj = SpecialObject::Teleport
(
$nmap->Header->MapSizeX - 2, // x
$nmap->Header->MapSizeY - 2, // y
2, // goto x
$nmap->Header->MapSizeY - 2 // goto y
);
$nmap->Objects[] = $obj; // добавить портал в массив объектов
$nmap->SaveMap();
可以从演示中提取并保存 .mapa
地图
$nmap = new NFKMap("demo.ndm");
$nmap->LoadMap();
// хеш содержимого карты
$filename = md5( $nmap->GetMapBytes() );
$nmap->SaveMap($filename);
内存使用
在非常大的地图上,可能需要大量内存来创建图像。因此,在脚本中最好移除内存限制,或将它设置为最大值。
ini_set('memory_limit', '-1');
ini_set('memory_limit', '256M');
示例大地图的内存使用情况:http://ge.tt/5uyLLIW/v/0
- 加载地图前 0.7 MB
- 加载地图到内存后 5.7 MB
- 加载资源(调色板和对象图片)后 6.7 MB
- 使用
imagecreatetruecolor
创建 7776x3888 px 大小的地图层后 151 MB - 绘制所有对象后 151 MB
- 通过
imagepng
保存图像后 237 MB
使用 memory_get_peak_usage
函数进行测量