GoodArea
Описание
Данная библиотека позволяет удобно работать с динамическими зонами streamer-а в стиле zcmd.
Функции
Добавление/изменение функции, возвращает 1 - при успешном выполнении, 0 - фиаско.
Удаление/открепление функции от динамической зоны.PHP код:
SetAreaFunction(STREAMER_TAG_AREA area, const function[])
Возвращает 1 - если был откреплен, 0 - если динамическая зона не была связана с функцией.
Создание групп дин. зон, все добавленные дин. зоны в группу будут вызывать эту функцию.PHP код:
RemoveAreaFunction(GOOD_AREA_TAG area)
Возвращает id группы, а при неудачном выполнение функции возвращает -1.
Добавление дин. зоны к группе.PHP код:
CreateGroupGoodAreas(const function[])
Аргументы: id группы, дин. зона, а третий это что-то вроде id, чтобы в функции с кучей дин. зон было удобнее работать.
Получает id и index(опционально) GA(Good Area) группы игрока, если игрок находится в динамической зоне связанной с GA группой.PHP код:
AddGroupGoodAreas(ga_groupid, STREAMER_TAG_AREA area, areaindex)
Возвращает: 1 - если игрок находится в динамической зоной связанной с GA, 0 - если нет.
Удаляет группу GA.PHP код:
GetPlayerGroupGoodAreaID(playerid, &areaid, &areaindex = 0)
Возвращает: 1 - успех, 0 - фиаско.
КонстантыPHP код:
DeleteGroupGoodAreas(ga_groupid)
Данная константа позволяет вам изменять максимальное возможное количество доступных наименований функций.
А эта константа позволяет менять tag в зависимости от версии streamer-а, по стандарту она выглядит так:PHP код:
#define MAX_GOOD_AREAS 5000
Типы вызовов функции:PHP код:
#define GOOD_AREA_TAG STREAMER_TAG_AREA:
- GA_RESPONSE_ENTER - Когда игрок вошел в дин. зону
- GA_RESPONSE_LEAVE - Когда игрок вышел из дин. зоны
- GA_RESPONSE_PRESS_KEY - Когда игрок нажал кнопку в дин. зоне
Пример кода
Обычный:
Группы:PHP код:
public OnGameModeInit()
{
new STREAMER_TYPE_AREA area = CreateDynamicSphere(310.4742, 2055.8142, 17.6, 2.0);
SetAreaFunction(area, GoodArea:test);
}
// - Первый вариант
AreaResponse:test(playerid, response, key)
{
switch(response)
{
case GA_RESPONSE_ENTER:
{
SendClientMessage(playerid, -1, "Вы вошли зону");
}
case GA_RESPONSE_LEAVE:
{
SendClientMessage(playerid, -1, "Вы вышли из зоны");
}
case GA_RESPONSE_PRESS_KEY:
{
if(key & KEY_WALK) SendClientMessage(playerid, -1, "Вы нажали на ALT в зоне");
else if(key == KEY_JUMP) SendClientMessage(playerid, -1, "Вы нажали на прыжок в зоне");
else SendClientMessage(playerid, -1, "Вы нажали на кнопку в зоне");
}
}
return 1;
}
// - Второй вариант
goodarea test(playerid, response, key)
{
switch(response)
{
case GA_RESPONSE_ENTER:
{
SendClientMessage(playerid, -1, "Вы вошли зону");
}
case GA_RESPONSE_LEAVE:
{
SendClientMessage(playerid, -1, "Вы вышли из зоны");
}
case GA_RESPONSE_PRESS_KEY:
{
if(key & KEY_WALK) SendClientMessage(playerid, -1, "Вы нажали на ALT в зоне");
else if(key == KEY_JUMP) SendClientMessage(playerid, -1, "Вы нажали на прыжок в зоне");
else SendClientMessage(playerid, -1, "Вы нажали на кнопку в зоне");
}
}
return 1;
}
ПримечаниеPHP код:
public OnGameModeInit()
{
new group1 = CreateGroupGoodAreas(GoodArea:test);
new STREAMER_TAG_AREA:area = CreateDynamicSphere(310.4742, 2055.8142, 17.6, 2.0);
CreateDynamicCP(310.4742, 2055.8142, 17.6, 2.0);
AddGroupGoodAreas(group1, area, 1);
area = CreateDynamicSphere(310.4742, 2050.0, 17.6, 2.0);
CreateDynamicCP(310.4742, 2050.0, 17.6, 2.0);
AddGroupGoodAreas(group1, area, 2);
return 1;
}
// - Первый вариант
GAResponse:test(playerid, response, key, index)
{
new string[144];
switch(response)
{
case GA_RESPONSE_ENTER:
{
format(string, sizeof string, "Вы вошли зону с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
case GA_RESPONSE_LEAVE:
{
format(string, sizeof string, "Вы вышли из зоны с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
case GA_RESPONSE_PRESS_KEY:
{
if(key & KEY_WALK)
{
format(string, sizeof string, "Вы нажали на ALT в зоне с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
else if(key == KEY_JUMP)
{
format(string, sizeof string, "Вы нажали на прыжок в зоне с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
else
{
format(string, sizeof string, "Вы нажали на кнопку в зоне с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
}
}
return 1;
}
// - Второй вариант
goodgarea test(playerid, response, key, index)
{
new string[144];
switch(response)
{
case GA_RESPONSE_ENTER:
{
format(string, sizeof string, "Вы вошли зону с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
case GA_RESPONSE_LEAVE:
{
format(string, sizeof string, "Вы вышли из зоны с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
case GA_RESPONSE_PRESS_KEY:
{
if(key & KEY_WALK)
{
format(string, sizeof string, "Вы нажали на ALT в зоне с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
else if(key == KEY_JUMP)
{
format(string, sizeof string, "Вы нажали на прыжок в зоне с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
else
{
format(string, sizeof string, "Вы нажали на кнопку в зоне с индексом %d", index);
SendClientMessage(playerid, -1, string);
}
}
}
return 1;
}
Подключать только после streamer-а.
Возможно не будет работать на старых версиях плагина.
Если вы используете E_STREAMER_EXTRA_ID, то лучше откажитесь от инклуда.
Это alpha версия, не бейте меня, пожалуйста.
Скачать
Тут можете скачать
Автор: knox