PDA

Просмотр полной версии : [Include] DynamicMaps (динамические карты в игре) v0.1



^_^
04.07.2014, 18:42
Данный инклуд позволяет создавать карту GTA San Andreas прямо из игры (состоящая из 4 объектов) и указывать на неё различные точки, менять им цвет, размер, а также менять позицию, или гладко двигать данные точки в соответствие с реальными координатами x и y. С помощью данного инклуда, можно лёгким и быстрым алгоритмом создавать системы вроде "Карты Автобусов Advance RP", причём создавать её можно на любой ротации R-Z. Тем кому всё ещё не ясен функционал, предлагаю посмотреть видео:


https://www.youtube.com/watch?v=ht4K7YmKAyI&feature=youtu.be


I. Функции
DynamicMap:CreateDynamicMap(Float:_center_x, Float:_center_y, Float:_center_z, Float:_rotation_z, _vw = -1, _i = -1)

Создаёт динамичную карту имеющия центр на указанные координаты и указанную R-Z ротацию.
Параметры:

Float:_center_x, Float:_center_y, Float:_center_z - координаты центра
http://i.imgur.com/7Vp9I1j.jpg?1
Float:_rotation_z - R-Z ротация всей карты
_vw - виртуальный мир карты (по дефолту - -1 - все виртуальные миры)
_i - интерьер карты (по дефолту - -1 - все интерьеры)
Возвращает:

DynamicMap:mapid - карта успешно создана.
INVALID_MAP_ID - не удалось создать карту (превышен лимит карт)

Заметка: Придётся использовать все виртуальные миры и все интерьеры для того чтобы иметь возможность создавать точки в разных интерьерах и разных виртуальных мирах для одной и той же карты.



DestroyDynamicMap(DynamicMap:mapid)

Уничтожает карту и все точки прикреплённые к ней.
Параметры:

DynamicMap:mapid - ид карты.

Возвращает:

0 - не удалось удалить карту (карта не создана).
1 - карта и все прикреплённые точки успешно удалены .



Point:CreatePointForDynamicMap(DynamicMap:mapid, point_object, Float:_point_size=0.0, Float:p_realC_x = 0.0, Float:p_realC_y = 0.0, _vw = -1, _i = -1)

Создаёт и прикрепляет к динамичной карты точку, имеющая указанную модель объекта, размер, интерьер и виртуальный мир в соответствии с реальными координатами x и y.
Параметры:

DynamicMap:mapid - ид карты к которой будет прикреплена точка.
point_object - модель объекта (рекомендуется использовать задекларированные модели).
_point_size - расстояние между картой и центром точки (размер) (рекомендуется использовать задекларированные размеры).
Float:p_realC_x = 0.0, Float:p_realC_y = 0.0 - реальные координаты на которых точка будет указывать на карте (по дефолту - центр карты).
_vw = -1, _i = -1 - виртуальный мир и интерьер (по дефолту - интерьер карты и виртуальный мир).
Возвращает:

INVALID_POINT_ID - не удалось создать точку(превышен лимит точек)
Point:pointid - точка успешно создана.




DestroyPoint(Point:_pointid)

Удаляет точку.
Параметры:

Point:_pointid - ид точки.

Возвращает:

0 - не удалось удалить, точка не создана.
1- успешно удалена.



SetPointSize(Point:_pointid, Float:_pt_size)

Меняет расстояние между картой и точкой (размер точки) на указанный. Работает на двигающийся точки.
Parameters:

Point:_pointid - ид точки.
Float:_pt_size - новый размер точки (рекомендуется использовать задекларированные размеры).

Возвращает

0 - не удалось изменить, точка не создана.
1 - размер изменён.
2 - размер изменён во время движения точки.



SetPointObject(Point:_pointid, pointobject)

Меняет модель объекта. Если точка двигалась, она остановится на текущую позицию
Параметры:

Point:_pointid - ид точки.
pointobject - новая модель объекта.

Возвращает:

0 - не удалось изменить, точка не создана.
1 - модель объекта изменена.



AssignPointToPos(Point:_pointid, Float:real_x, Float:real_y)

Назначает положение точки на карте которое указывает на real_x и real_y.
Параметры:

Point:_pointid - ид точки.
Float:real_x, Float:real_y - реальные x и y координаты мира.

Возвращает:

0 - не удалось изменить позицию, точка не создана.
1 - успешно.


MovePointForPos(Point:_pointid, Float:real_mx, Float:real_my, Float:movespeed = 0.1)

Плавно двигает точку (с указанной скоростью передвижения) с текущей позиции, до положения на карте, указывающие на реальные координаты мира.
Параметры:

Point:_pointid - ид точки.
Float:real_mx, Float:real_my - реальные x и y координаты мира.
Float:movespeed = 0.1 - скорость передвижения (по дефолту 0.1).

Возвращает:

0 - не удалось переместить, точка не создана.
1 - успешно.




GetDynamicMapCoords(Float:x,Float:y, DynamicMap:mapid, &Float:on_map_x,&Float:on_map_y,&Float:on_map_z, Float:_point_size)

Функция записывает координаты точки с указанной динамичной карты в зависимости от размера точки и от координат реальной карты в переменные on_map_x, on_map_y, on_map_z.
Float:on_map_x, Float:on_map_y, Float:on_map_z.
Параметры:

Float:x,Float:y - координаты мира x и y.
DynamicMap:mapid - ид карты.
&Float:on_map_x,&Float:on_map_y,&Float:on_map_z - переменные в которых будут записаны координаты точки.
_point_size - размер токи.

Возвращает

Функция не возвращает никакое значение.


v0.2:

GetDynamicMapPointRealCoords(DynamicMap:_mapid, Float:on_map_x, Float:on_map_y, Float:on_map_z, &Float:real_x, &Float:real_y)

Функция записывает в актуальные параметры real_x, real_y реальные координаты которыми обозначены на динамичной карте _mapid координаты on_map_x, on_map_y, on_map_z.
Параметры:

DynamicMap:_mapid - ид карты
Float:on_map_x, Float:on_map_y, Float:on_map_z - переменные в которых записаны координаты на карте.
&Float:on_map_x,&Float:on_map_y,&Float:on_map_z - переменные в которых будут записаны реальные координаты.

Возвращает

Функция не возвращает никакое значение.



II. Задекларированные константы
Модели для точек:

POINT_WHITE
POINT_GREEN
POINT_RED
POINT_ORANGE
POINT_YELLOW
Размеры точки:

TINY_POINT
SMALL_POINT
MEDIUM_POINT
BIG_POINT
HUGE_POINT


III. Заметки

Для использования данного инклюда нужен streamer.
DynamicMaps должен быть подключён после a_samp и streamer.
Рекомендуется самостоятельно задекларировать значение констант MAX_MAPS и MAX_POINTS


//Пример:
#define MAX_MAPS 1
#define MAX_POINTS 20



IV.Установка:
1) Скопировать код с Pastebin в чистый .txt файл. Pastebin - CLICK (http://pastebin.com/6LYdR7fh)
2) Сохранить .txt файл с названием DynamicMaps в папку сервера/pawno/include
3) В начале мода (после #include <a_samp> и #include <a_streamer>) добавить #include <DynamicMaps>.

Автор: ^_^.

Nurick
04.07.2014, 19:11
А как то можно будет вывести карту с моделями точек POINT_WHITE = 19177? в дальнейшом чтобы использовать без инклуида?

^_^
04.07.2014, 19:24
А как то можно будет вывести карту с моделями точек POINT_WHITE = 19177? в дальнейшом чтобы использовать без инклуида?
А зачем это собственно нужно? Можете спокойно использовать только функцию создания карты, создания точки и передвижения точки. Учитывая что остальные функции имеют флаг "stock", при компилировании они будут пропущены и не попадут в .amx файл. О личной потери памяти можете тоже не беспокоится, использование дефайнов перед #include - поможет этого избежать.

Nurick
04.07.2014, 19:32
А зачем это собственно нужно? Можете спокойно использовать только функцию создания карты, создания точки и передвижения точки. Учитывая что остальные функции имеют флаг "stock", при компилировании они будут пропущены и не попадут в .amx файл. О личной потери памяти можете тоже не беспокоится, использование дефайнов перед #include - поможет этого избежать.
Просто я не люблю держать вещи которые я в дальнейшем не буду использовать, просто мне бы поставить карту сделать местоположение точек и всё.

Спасибо за include, кстати сегодня видел данный include на sa-mp.com(http://forum.sa-mp.com/showthread.php?t=523856) так как с английским плоховато поленился переводить через переводчик.

^_^
04.07.2014, 19:37
Просто я не люблю держать вещи которые я в дальнейшем не буду использовать, просто мне бы поставить карту сделать местоположение точек и всё.

Спасибо за include, кстати сегодня видел данный include на sa-mp.com(http://forum.sa-mp.com/showthread.php?t=523856) так как с английским плоховато поленился переводить через переводчик.
Я его везде выкладывал, ибо использую MIT лицензию. В Копирайтах так и написано "Copyright (c) 2014 Nicholas_West ^_^(SmileySmile)".

^_^
17.08.2015, 16:17
UPD: v0.2

* Добавлена функция GetDynamicMapPointRealCoords.