PDA

Просмотр полной версии : [Include] polygons



Seregamil
26.06.2014, 13:41
Представляю систему, которая позволит рисовать полигоны в SA-MP.

Презентация возможностей построения полигонов:



http://i.imgur.com/OWz2m3g.png

Количество гангзон использованных для полигонов не превысило 100 штук.


Функции:



CreatePolygon( Float: area[ ], Float: polygon_size = 5.0, all_points = sizeof area ) - Создает полигон из массива и возвращает ID полигона
DestroyPolygon( polygonid ) - Удаляет полигон по его ID
PolygonFlashForAll( polygonid, color = 0xFF0000AA ) - Включает мигание полигона по его ID определенным цветом
PolygonFlashForPlayer( playerid, polygonid, color = 0xFF0000AA ) - Включает мигание полигона по его ID определенному игроку определенным цветом
PolygonStopFlashForAll( polygonid ) - Выключает мигание полигона для всех игроков
PolygonStopFlashForPlayer( playerid, polygonid ) - Выключает мигание полигона для определенного игрока
PolygonShowForAll( polygonid, color = 0xFFFFFFAA ) - Показывает полигон всем игрокам определенным цветом
PolygonShowForPlayer( playerid, polygonid, color = 0xFFFFFFAA ) - Показывает полигон определенному игроку определенным цветом
PolygonHideForAll( playerid, polygonid ) - Скрывает полигон для всех игроков
PolygonHideForPlayer( playerid, polygonid ) - Скрывает полигон для определенного игрока
CountGangZones() - Выдает количество ВСЕХ гангзон на ВСЕМ сервере


По стандарту, максимальное количество полигонов равно 20.

Система работает как со стримером, так и без него.

Если у вас подключен стример, то вам так же доступны новые каллбэки:


OnPlayerEnterPolygon( playerid, polygonid ) - Срабатывает при входе игрока на полигон
OnPlayerLeavePolygon( playerid, polygonid ) - Срабатывает при выходе игрока из полигона


Прямые линии рисует одной гангзоной.

Если при создании полигона, количество созданных гангзон превышает максимальное количество гангзон, т.е. 1024, то полигон самостоятельно удалит себя.

Ссылка на репозиторий с инклудом и тестовым скриптом: https://github.com/Seregamil/SA-MP-Polygons

Автор системы: Seregamil

DeimoS
26.06.2014, 14:04
Если при создании полигона, количество созданных гангзон превышает максимальное количество гангзон, т.е. 1024, то полигон самостоятельно удалит себя.

Оповещение в консоль при этом предусмотрено?

Seregamil
26.06.2014, 14:12
Оповещение в консоль при этом предусмотрено?

Нет, но если полигон не создастся, то я думаю сразу станет понятно, что что-то пошло не так.

DeimoS
26.06.2014, 14:30
Нет, но если полигон не создастся, то я думаю сразу станет понятно, что что-то пошло не так.

И на форуме полетят вопросы "ШО, ПОЧЕМУ, ЗАЧЕМ, КТО!?". Лучше добавь. От одного printf не убудет

Seregamil
26.06.2014, 14:36
Готово

.Community
27.06.2014, 02:21
Хех...Да с DeimoS`ом согласен.Сразу понесет всех :D
А так...Красавчик :)

Seregamil
29.06.2014, 08:53
Хех...Да с DeimoS`ом согласен.Сразу понесет всех :D
А так...Красавчик :)

Добавил я вывод сообщения давно.

Seregamil
06.11.2014, 11:41
Исправлен код перехвата OnPlayer(Enter/Leave)DynamicArea
Исправлен баг с недорисовкой последней точки полигона

Seregamil
06.11.2014, 17:11
P.S.: Применил скрипт на реальном сервере для bang мода, на данную территорию ушло 248/1024 гангзон.

http://breedpmnr.ru/i/59684A5

Camelot
08.08.2015, 00:22
обнови скрины

Seregamil
18.10.2015, 14:42
обнови скрины

Добавил один скрин. Будет возможность - добавлю еще

$continue$
10.01.2017, 10:08
Пригодилось отрисовать линии и сразу же вспомнил, что уже есть наезженная лыжня, но тут нет полезной надстройки над иклудом. Почему нигде нет параметра "жирности" линии? Очень лень вчитываться в код инклуда из-а этой "фичи"

Seregamil
10.01.2017, 17:13
Пригодилось отрисовать линии и сразу же вспомнил, что уже есть наезженная лыжня, но тут нет полезной надстройки над иклудом. Почему нигде нет параметра "жирности" линии? Очень лень вчитываться в код инклуда из-а этой "фичи"

Добавил необязательный параметр в функцию создания полигона.


CreatePolygon( Float: area[ ], Float: polygon_size = 5.0, all_points = sizeof area )

Правда есть один баг при создании полигонов большого размера, там гангзоны имеют расстояние между собой небольшое. Сегодня нет времени исправить.