Доступ к архиву

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

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

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

/supervision (наблюдение со спутника)

Статус
В этой теме нельзя размещать новые ответы.

lonin

Компетентный
Здравствуйте уважаемые форумчане!​
Команда предназначена для наблюдения со спутника.


И так, начнем:


Ко всем new's:
PHP:
new naut[MAX_PLAYERS];
new Float:posJad[MAX_PLAYERS][3];
new Float:posW[MAX_PLAYERS][3];
В OnPlayerCommandText:

PHP:
if (strcmp(cmdtext, "/supervision", true)==0)
{
        if(naut[playerid] != 1 && PlayerInfo[playerid][pMember] == 5) // PlayerInfo[playerid][pMember] при необходимости меняем на свое!
	{
                GetPlayerPos(playerid, posW[playerid][0], posW[playerid][1], posW[playerid][2]); // Записываем координаты х,у,z для возврата в точку на которой находились
                SetPlayerPos(playerid, posJad[playerid][0]+7,posJad[playerid][1]+3,posJad[playerid][2]-20); // Меняем координат игрока по точке на карте
		SetPlayerCameraPos(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]+80); // Меняем координат камеры по точке на карте
                SetPlayerCameraLookAt(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]); // Меняем координат в который смотрит камера по точке на карте
		TogglePlayerControllable(playerid, 0); // замораживаем игрока
		SendClientMessage(playerid, COLOR_RED, "[WARNING] Вы подключились к спутнику через переносной модуль!"); // Думаю не стоит объяснять
		SendClientMessage(playerid, COLOR_RED, "[WARNING] Используйте NUM4 и NUM6 для приближения/отдаления!");// Думаю не стоит объяснять
		SetTimer("Nauticoff", 30000, false); // заводим таймер на 30 секунд для отключения наблюдения
		naut[playerid] = 1; // Даем значения что naut что бы нельзя было еще раз использовать команду
		return 1;
	}
        else return SendClientMessage(playerid, COLOR_RED, "Вам не доступна эта команда!");
}
В OnPlayerClickMap:

PHP:
posJad[playerid][0] = fX;
posJad[playerid][1] = fY;
posJad[playerid][2] = fZ;
Создаем форвард и паблик где то в моде:

PHP:
forward Nauticoff(playerid);
public Nauticoff(playerid)
{
        SetCameraBehindPlayer(playerid); // Возвращаем игроку дар видеть :D
        SetPlayerPos(playerid, posW[playerid][0], posW[playerid][1], posW[playerid][2]); // Возвращаем игрока в былое место
	TogglePlayerControllable(playerid, 1); // Даруем ему силу овладеть собой
	naut[playerid] = 0; // Даруем ему возможность все повторить
	SendClientMessage(playerid, COLOR_RED, "[WARNING] Спутниковое наблюдение отключено!");
}
В паблик OnPlayerKeyStateChange(playerid, newkeys, oldkeys):


PHP:
if(newkeys == 8192) //ZOOM
{
	if(naut[playerid] == 1)
	{
		new Float:posJ[MAX_PLAYERS][3];
		GetPlayerCameraPos(playerid,posJ[playerid][0],posJ[playerid][1],posJ[playerid][2]);// Берем координаты камеры в переменную posJ
		if(posJad[playerid][2] < posJ[playerid][2])
		{
			SetPlayerCameraPos(playerid, posJ[playerid][0], posJ[playerid][1], posJ[playerid][2]-10); // приближаем картинку на 10м.
			SetPlayerCameraLookAt(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]); // Смотрим в прежнюю точку
			return true;
		}
	}
}
if(newkeys == 16384) //Zoom
{
	if(naut[playerid] == 1)
	{
		new Float:posJ1[MAX_PLAYERS][3];
		GetPlayerCameraPos(playerid,posJ1[playerid][0],posJ1[playerid][1],posJ1[playerid][2]);// Берем координаты камеры в переменную posJ1
		if(posJad[playerid][2] < posJ1[playerid][2])
		{
			SetPlayerCameraPos(playerid, posJ[playerid][0], posJ[playerid][1], posJ[playerid][2]+10);// отдаляем картинку на 10м.
			SetPlayerCameraLookAt(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]); // Смотрим в прежнюю точку
			return true;
		}
	}
}
Доработка от VLADeetslavoi
При вводе /supervision запускается таймер на 30 секунд, после чего команда автоматом оффается. Если же нужно, что бы "спутниковое зрение" отключалось через команду, то вместо
PHP:
if (strcmp(cmdtext, "/supervision", true)==0)
{
        if(naut[playerid] != 1 && PlayerInfo[playerid][pAdmin] >= 5) // PlayerInfo[playerid][pMember] при необходимости меняем на свое!
    {
                GetPlayerPos(playerid, posW[playerid][0], posW[playerid][1], posW[playerid][2]); // Записываем координаты х,у,z для возврата в точку на которой находились
                SetPlayerPos(playerid, posJad[playerid][0]+7,posJad[playerid][1]+3,posJad[playerid][2]-20); // Меняем координат игрока по точке на карте
        SetPlayerCameraPos(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]+80); // Меняем координат камеры по точке на карте
                SetPlayerCameraLookAt(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]); // Меняем координат в который смотрит камера по точке на карте
        TogglePlayerControllable(playerid, 0); // замораживаем игрока
        SendClientMessage(playerid, COLOR_RED, "[WARNING] Вы подключились к спутнику через переносной модуль!"); // Думаю не стоит объяснять
        SendClientMessage(playerid, COLOR_RED, "[WARNING] Используйте NUM4 и NUM6 для приближения/отдаления!");// Думаю не стоит объяснять
        SetTimer("Nauticoff", 30000, false); // заводим таймер на 30 секунд для отключения наблюдения
        naut[playerid] = 1; // Даем значения что naut что бы нельзя было еще раз использовать команду
        return 1;
    }
        else return SendClientMessage(playerid, COLOR_RED, "Вам не доступна эта команда!");
}
Пишем
PHP:
if (strcmp(cmdtext, "/svon", true)==0)
	{
		if(naut[playerid] != 1 && PlayerInfo[playerid][pAdmin] >= 5) // PlayerInfo[playerid][pMember] при необходимости меняем на свое!
		{
			GetPlayerPos(playerid, posW[playerid][0], posW[playerid][1], posW[playerid][2]); // Записываем координаты х,у,z для возврата в точку на которой находились
			SetPlayerPos(playerid, posJad[playerid][0]+7,posJad[playerid][1]+3,posJad[playerid][2]-20); // Меняем координат игрока по точке на карте
			SetPlayerCameraPos(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]+80); // Меняем координат камеры по точке на карте
			SetPlayerCameraLookAt(playerid,posJad[playerid][0],posJad[playerid][1],posJad[playerid][2]); // Меняем координат в который смотрит камера по точке на карте
			TogglePlayerControllable(playerid, 0); // замораживаем игрока
			SendClientMessage(playerid, COLOR_RED, "[WARNING] Вы подключились к спутнику через переносной модуль!"); // Думаю не стоит объяснять
			SendClientMessage(playerid, COLOR_RED, "[WARNING] Используйте NUM4 и NUM6 для приближения/отдаления!");// Думаю не стоит объяснять
			naut[playerid] = 1; // Даем значения что naut что бы нельзя было еще раз использовать команду
			return 1;
		}
		else return SendClientMessage(playerid, COLOR_RED, "Нельзя!!");
	}
, а так же добавляем в OnPlayerCommandText
PHP:
if(strcmp(cmdtext, "/svoff", true) ==0)
	{
    if(naut[playerid] != 0 && PlayerInfo[playerid][pAdmin] >= 5)
	{
    Nauticoff(playerid);
	return 1;
	}
		else return SendClientMessage(playerid, COLOR_RED, "Нельзя!");
	}
Вот и все, всем спасибо, кому понадобиться - буду рад.

ScreenShot's:



 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу