Sign in to follow this  
Followers 0
SCRIPTMAN

Камера видео-наблюдения

19 posts in this topic

Здарова бандиты! Сегодня научу вас создавать камеру видео-наблюдения, такого у вас я не видел. 

Начнем же!

 

1. Нам нужно узнать координаты камеры, для этого, мы: Заходим в Map Construction, летим в то место, где должна быть камера, делаем камеру в конструкторе так, как нам нужно, чтобы смотрела камера(примерно), теперь нам нужно узнать эти координаты, а как? - Во вкладке "Views

Спойлер

Screenshot_1.png.bcaf763607a3a1e2a9046e810db7710f.png

Все, мы скопировали, координаты есть, конструктор закрываем.

2. Идем в мод, добавляем команду:

CMD:cam(playerid)
{
//проверки
SetPlayerCameraPos(playerid, x, y, z);//Здесь координаты камеры(CTRL+V).
SetPlayerCameraLookAt(playerid, x+4, y+4, z+3);//Как сказано в вики, но вы считайе сами, то есть, 370, а будет 374. А лучше - подгоняйте под себя сами.
TogglePlayerControllable(playerid, 0);//Блокируем камеру игрока.
return true;
}
CMD:camoff(playerid)
{
SetCameraBehindPlayer(playerid);//Восстанавлием камеру игрока.
TogglePlayerControllable(playerid, 1);//Разблокируем камеру игрока.
return true;
}

Авто: SCRIPTMAN

 

Спасибо!

Share this post


Link to post
Share on other sites

Спасибо за такой урок. Плюс твой

Share this post


Link to post
Share on other sites

А как сделать, что бы эту команду можно было ввести в определенном месте? Например в интерьере есть кабинет, и что бы команда работала только в нем, или определенной точке?

Share this post


Link to post
Share on other sites
17 минут назад, HAPKOMAH сказал:

А как сделать, что бы эту команду можно было ввести в определенном месте? Например в интерьере есть кабинет, и что бы команда работала только в нем, или определенной точке?

Вставте проверку в команду при помощи стандартной функции IsPlayerInRangeOfPoint

Пример

if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z)) return SendClientMessage(playerid, COLOR,"Ошибка: В данном месте нет камер видео-наблюдения.";

 

Edited by Aurum
Причина: Добавил пример

Share this post


Link to post
Share on other sites

@Aurum А вот когда я ввожу команду на улице - все прекрасно работает, когда из интерьера - то показывает это:

Спойлер

-IfQAZhWjXo.jpg

 

Share this post


Link to post
Share on other sites
Только что, HAPKOMAH сказал:

@Aurum А вот когда я ввожу команду на улице - все прекрасно работает, когда из интерьера - то показывает это:

  Фото (закрыть спойлер)

-IfQAZhWjXo.jpg

 

Это связано с виртуальным миром.

Share this post


Link to post
Share on other sites
1 минуту назад, HAPKOMAH сказал:

@Aurum А как исправить?

Я сейчас в код вдумыватся не буду, но думаю, что виртуальный мир игрока надо прировнять к вирт. миру камеры. Я может глупый, но только это мне на ум приходит :D

Share this post


Link to post
Share on other sites

@Aurum А если я не знаю, в каком он виртуальном мире находится, когда в интерьере - то ничего? Или нужно знать?

@Aurum И можешь функцию написать?)

Share this post


Link to post
Share on other sites
Только что, HAPKOMAH сказал:

@Aurum А если я не знаю, в каком он виртуальном мире находится, когда в интерьере - то ничего? Или нужно знать?

Я все придумал. Ищете пикап в интерьер и ставите в строке 

 SetPlayerVirtualWorld (playerid, "какая-то цифра");

Вместо "какая-то цифра" 0.

Share this post


Link to post
Share on other sites

@Aurum Там была цифра 1, ну я заменил на 0, но ситуация такая-же.. Команда работает в любой точке карты + фигня с интерьером 

Share this post


Link to post
Share on other sites
Только что, HAPKOMAH сказал:

@Aurum Там была цифра 1, ну я заменил на 0, но ситуация такая-же.. Команда работает в любой точке карты + фигня с интерьером 

Сейчас скину команду. Просто заменишь координаты в ней.

2 минуты назад, HAPKOMAH сказал:

@Aurum Там была цифра 1, ну я заменил на 0, но ситуация такая-же.. Команда работает в любой точке карты + фигня с интерьером 

CMD:cam(playerid)
{
  	if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z))
	SetPlayerCameraPos(playerid, x, y, z);
	SetPlayerCameraLookAt(playerid, x+4, y+4, z+3);
	TogglePlayerControllable(playerid, 0);
	return true;
}
CMD:camoff(playerid)
{
	SetCameraBehindPlayer(playerid);
	TogglePlayerControllable(playerid, 1);
	return true;
}

Кстати координаты тут заменил?

SetPlayerCameraPos(playerid, тут);

 

Share this post


Link to post
Share on other sites

Вот как я сделал, все тут верно?

CMD:cam(playerid)
{
  	if(pInfo[playerid][pMember] != TEAM_DPS) return 1;
	if(IsPlayerInRangeOfPoint(playerid, 15.0, 892.5962,2089.7737,2721.8101))
	SetPlayerCameraPos(playerid, 2539.2700, -2449.3779, 26.7351);
	SetPlayerCameraLookAt(playerid, 2540.1702, -2448.9460, 26.4351);
	TogglePlayerControllable(playerid, 0);
	return true;
}
CMD:camoff(playerid)
{
	SetCameraBehindPlayer(playerid);
	TogglePlayerControllable(playerid, 1);
	return true;
}

 

@Aurum Теперь вообще показывает другой конец карты..В общем вернул вирт.мир + команду, нужно думать другой вариант 

Share this post


Link to post
Share on other sites
15 минут назад, HAPKOMAH сказал:

Вот как я сделал, все тут верно?


CMD:cam(playerid)
{
  	if(pInfo[playerid][pMember] != TEAM_DPS) return 1;
	if(IsPlayerInRangeOfPoint(playerid, 15.0, 892.5962,2089.7737,2721.8101))
	SetPlayerCameraPos(playerid, 2539.2700, -2449.3779, 26.7351);
	SetPlayerCameraLookAt(playerid, 2540.1702, -2448.9460, 26.4351);
	TogglePlayerControllable(playerid, 0);
	return true;
}
CMD:camoff(playerid)
{
	SetCameraBehindPlayer(playerid);
	TogglePlayerControllable(playerid, 1);
	return true;
}

 

@Aurum Теперь вообще показывает другой конец карты..В общем вернул вирт.мир + команду, нужно думать другой вариант 

Странно. Не должно быть такого. 

Share this post


Link to post
Share on other sites

@Aurum А как можно сделать, что бы когда включался режим камеры ( при вводе /cam ) - появлялись определенные Текстдравы? Нарисовал экран камеры - вставить надо

Share this post


Link to post
Share on other sites

@HAPKOMAH при воде команды вызываешь, показываешь текст дравы , насчёт прогрузки объектов, ставь вирт мир 0 и тп игрока туда (что-бы прогрузить объекты)

Share this post


Link to post
Share on other sites

@MuhammadPawn Можешь функции написать? И вот насчет вирт.мира - его надо написать в команду Включения камеры?

Вот она - SetPlayerVirtualWorld (playerid, "тут виртуальный мир");

Share this post


Link to post
Share on other sites

@HAPKOMAH вирт мир не нужен, нужен ид интерьера 0 при включение камеры, и тп игрока SetPlayerPos где камера что-бы она прогрузилась

 

Share this post


Link to post
Share on other sites

АВТОМАТИЧЕСКИ СФОРМИРОВАННОЕ СООБЩЕНИЕ:

Данная тема была перемещена модерацией или администрацией портала PAWNO-RUS.RU! 

Перемещена из: "Скриптинг PAWN > Готовые решения"

Перемещена в: "Скриптинг PAWN > Уроки"

 

С уважением, ваш Бот! 

Если вы НЕ согласны с переносом данной темы в раздел "Скриптинг PAWN > Уроки", пожалуйтесь на это сообщение в жалобе указав причины вашего недовольства. Спасибо. 

 

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • rediska
      By rediska
      Мне нужно сделать диалоговое меню для команды /ahelp
      Вот код:
       


    • Nicholson Scaletta
      By Nicholson Scaletta
      Всем привет!
      Что не так сделал? 
      case DIALOG_GOV_TIME1: { if(!response) return 1; new string[150]; switch(listitem) { case 0: { format(string, sizeof(string), "Текст %s %s %s", GetPlayerNameEx(playerid), GetPlayerTeam(playerid), GetPlayerJobAndRankName(playerid)); ShowPlayerDialog(playerid, DIALOG_TEST_GOV, 2, "{FFCC00}Текст", string, "Вперед", "Назад"); } } { case 1: { format(string, sizeof(string), "Текст: %s %s %s", GetPlayerNameEx(playerid), GetPlayerTeam(playerid), GetPlayerJobAndRankName(playerid)); ShowPlayerDialog(playerid, DIALOG_TEST_GOV, 2, "{FFCC00}Текст", string, "Вперед", "Назад"); } } }