By
odosenok
Описание системы.
Система полета камерой представляет собой возможность перемещаться в пространстве игры по всем осям (X, Y, Z) путем нажатия кнопок на клавиатуре.
Подключение системы.
1. Система написана в отдельном файле - include. Вам необходимо скачать этот файл и добавить в папку, находящейся в следующей директории:
"..\pawno\include"
2. Затем Вам следует открыть свой игровой мод и в начале, после всех инклудов, дописать следующую строку:
#include <fly>
Работа с системой.
В систему полета камерой включены две функции:
1.
SetPlayerFlyStatus(playerid, status = 2)
/*
playerid - ID игрока, которого Вы хотите "отправить" в режим полета
status - режим полета*
* предусмотрено три режима полета:
CAMERA_MODE_NONE (0) - выключить режим полета,
CAMERA_MODE_FLY (1) - включить режим полета,
CAMERA_MODE_REVERSE (2) - сменить режим на реверсивный
*/
2.
IsPlayerFlying(playerid)
/*
playerid - ID игрока, пребывание в состоянии полета которого Вы хотите проверить
*данная функция возвращает:
CAMERA_MODE_NONE (0), если игрок не находится в состоянии полета,
CAMERA_MODE_FLY (1), если игрок находится в состоянии полета
*/
При помощи данных функций Вы можете управлять пребыванием игрока в режиме полета, а также получать информацию о том, "летает" ли игрок в тот или иной момент.
Особенности системы.
Системой полета предусмотрено, что игрок, выходящий из режима полета, появится именно там, где вышел. Так, если Вы покидаете режим полета, пребывая в озере, то появление игрока будет именно в этом озере.
Пример использования.
CMD:fly(playerid, params[])
{
static const MSG_USE_CMD[] = !"» Usage the command: /fly [mode 0-2]";
if(isnull(params))
return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0;
new mode;
if(sscanf(params, "d", mode))
return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0;
else if(!(0 <= mode <= 2))
return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0;
SetPlayerFlyStatus(playerid, mode);
return 1;
}
CMD:checkfly(playerid, params[])
{
static const MSG_USE_CMD[] = !"» Usage the command: /checkfly [playerid]";
if(isnull(params))
return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0;
new id;
if(sscanf(params, "u", id))
return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0;
else if(id == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, !"The player is not connected") & 0;
static const status_fly[][] =
{
!"The player is not flying",
!"The player is flying"
};
SendClientMessage(playerid, -1, status_fly[IsPlayerFlying(id)]);
return 1
}
Авторское право.
Функции для получения позиции для перемещения камеры, само перемещение вырезаны из разработки Norck.
В свою очередь я, @odosenok, лишь преобразовал данный код, создал более удобный интерфейс.
fly.inc