Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Include GoodArea

mr.Malcolm

Изучающий
Пользователь
Регистрация
28 Янв 2017
Сообщения
109
Лучшие ответы
1
Репутация
38

GoodArea

Описание
Данная библиотека позволяет удобно работать с динамическими зонами в стиле 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, чтобы в функции с кучей дин. зон было удобнее работать.
PHP:
AddGroupGoodAreas(ga_groupid, STREAMER_TAG_AREA area, areaindex)
Получает id и index(опционально) GA(Good Area) группы игрока, если игрок находится в динамической зоне связанной с GA группой.
Возвращает: 1 - если игрок находится в динамической зоной связанной с GA, 0 - если нет.
PHP:
GetPlayerGroupGoodAreaID(playerid, &areaid, &areaindex = 0)
Удаляет группу GA.
Возвращает: 1 - успех, 0 - фиаско.
PHP:
DeleteGroupGoodAreas(ga_groupid)
Константы
Данная константа позволяет вам изменять максимальное возможное количество доступных наименований функций.
PHP:
#define MAX_GOOD_AREAS 5000
А эта константа позволяет менять tag в зависимости от версии streamer-а, по стандарту она выглядит так:
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 версия, не бейте меня, пожалуйста.

Скачать


Автор:

 
Последнее редактирование:
Сверху Снизу