Привет! Если вы читаете это - вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы получить доступ ко всем разделам нашего форума. Удачи!
Собственно выкладываю на обозрение плагин, созданный самим Kalcor'ом, а точнее его любительскую модификацию от пользователя Mauzen. Итак, для начала расскажу, что из себя представляет плагин.
Плагин считывает информацию о карте (San Andreas) и позволяет использовать её в pawn скриптах. Плагин содержит геометрическую карту высот и позволяет вычислить позицию в 2D пространстве. По сути он представляет оценку пространства, т.е. с его помощью можно вычислить положение земли и других объектов в плоскости Z, что бы игрок не находился внутри них при изменении позиции (Т.к. измерение происходит в 2D пространстве, точнее по координате Z, то при телепортировании игрока, например внутрь здания, он изменит эту координату таким образом, что игрок будет находиться над зданием, т.е. он влияет только на Z координату, не изменяя X и Y).
Итак, достаточно описания, функции плагина:
Version 1.0
native MapAndreas_Init(mode) // Используется для инициализации данных файлов в памяти, необходимо хотя-бы один раз прописать эту функцию, для использования других функций плагина
native MapAndreas_FindZ_For2DCoord(Float:X, Float:Y, &Float:Z); // возвращает наивысшую координату Z в определённых координатах (X и Y)
Version 1.1
native MapAndreas_FindAverageZ(Float: x, Float:y, &Float:z); // возвращает наиболее близкую Z координату в координатах X и Y
native MapAndreas_Unload(); // возвращает всю память, затраченную на неинициализированные данные
Так-же есть 3 режима запуска: MAP_ANDREAS_MODE_FULL: дефолтный режим, использует 70mb RAM, а так-же файл SAfull.hmap в директории scriptfiles
MAP_ANDREAS_MODE_MINIMAL: минимальный режим, использует всего 9mb RAM, но является менее точным. Использует файл SAmin.hmap в директории scriptfiles
MAP_ANDREAS_MODE_NOBUFFER: полный режим, считывает данные из файла без буферизации и не использует доп. RAM, поэтому работает медленно. Использует файл SAfull.hmap в директории scriptfiles
Файлы:
plugins/MapAndreas.dll - файл плагина для Windows.
plugins/MapAndreas.so - файл плагина для Linux.
scriptfiles/SAfull.hmap - данные карты.
scriptfiles/SAfull.jpg - данные карты в графическом виде.
pawno/include/mapandreas.inc - библиотека.
filterscripts/mapandreas_test.amx - скомпилированный тест-фильтерскрипт.
filterscripts/mapandreas_test.pwn - сорцы тест-фильтрскрипта.
[17:28:09] Starting test "FindZ, MODE_FULL" with 10000000 iterations...
[17:28:10] Test "FindZ, MODE_FULL" finished: 568ms (17605634.0/sec)
[17:28:10] Starting test "FindAverageZ, MODE_FULL" with 10000000 iterations...
[17:28:12] Test "FindAverageZ, MODE_FULL" finished: 1584ms (6313131.5/sec)
[17:28:13] Starting test "FindZ, MODE_MINIMAL" with 10000000 iterations...
[17:28:14] Test "FindZ, MODE_MINIMAL" finished: 605ms (16528926.0/sec)
[17:28:14] Starting test "FindAverageZ, MODE_MINIMAL" with 10000000 iterations...
[17:28:16] Test "FindAverageZ, MODE_MINIMAL" finished: 1696ms (5896226.5/sec)
[17:28:16] Starting test "FindZ, MODE_NOBUFFER" with 100000 iterations...
[17:28:16] Test "FindZ, MODE_NOBUFFER" finished: 377ms (265251.9/sec)
[17:28:16] Starting test "FindAverageZ, MODE_NOBUFFER" with 100000 iterations...
[17:28:17] Test "FindAverageZ, MODE_NOBUFFER" finished: 1123ms (89047.1/sec)
У маузена проект хороший планировался.. жаль, что не доделал. Там были сильно задействованы боты на CNPC и MapAndreas, первый плагин удалили с форума(интересно он знает, что его можно купить всего за 16.5$ xD), а второй куй не стал обновлять, видимо поэтому он начал делать свой RNPC(по функционалу отстает еще в ~10 раз) и оптимизировал/обновил MapAndreas (:
У маузена проект хороший планировался.. жаль, что не доделал. Там были сильно задействованы боты на CNPC и MapAndreas, первый плагин удалили с форума(интересно он знает, что его можно купить всего за 16.5$ xD), а второй куй не стал обновлять, видимо поэтому он начал делать свой RNPC(по функционалу отстает еще в ~10 раз) и оптимизировал/обновил MapAndreas (:
Тем более он был бы не локализированным сто процентов, так что всё норм =)