20th century

cameditor - CamMovement Editor

В теме 4 сообщения

cameditor - CamMovement Editor

Просмотр файла

Внутриигровой редактор передвижения камеры.

  • Общее описание:

Данный фильтрскрипт поможет Вам сгенерировать координаты для функции InterpolateCameraPos и InterpolateCameraLookAt прямо в игре. 
Фильтрскрипт использует так называемый 'flymode' (автор: h02) для свободного и быстрого перемещения по карте игры.

 

  • Особенности  скрипта: 
  1. Возможность свободного перемещения по игровой карте при помощи внутриигрового флай-мода (credits: h02).
  2. Установка начального/конечного положения камеры простым нажатием клавиши мыши.
  3. Возможность редактировать скорость, начальное/конечное положение камеры после создания сценария.
  4. Лёгкость в использовании благодаря вспомогательным сообщениям в чате.

 

Исходный код созданного сценария полёта камеры сохраняется в файл (название файла задаётся пользователем) в директории вашего сервера, в папке scriptfiles:

[NewCameraMovement_Registration]
Movement = InterpolateCameraPos(playerid, 575.325988, -1244.656127, 25.845386, 735.324829, -1128.916870, 73.661872, 7777);
Rotation = InterpolateCameraLookAt(playerid, 571.176696, -1247.412109, 26.278436, 733.528747, -1124.687866, 71.689620, 7777);
  • Установка фильтрскрипта:
  1. Скачайте файл cameditor,fs (синяя кнопка справа).
  2. Поместите файл cameditor.fs в папку с вашим сервером (директория: filterscripts).
  3. По желанию отредактируйте файл и скомпилируйте его.
  4. Добавьте название скрипта cameditor в конфигурационный файл вашего сервера.
  5. Запустите Ваш игровой сервер и следуйте инструкции, показанной в чате.


Исходный код: pastebin

Авторы: Drebin (filterscript), h02 (flymode).


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня никаких инструкций в чате не высветилось

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, Джерри Джордан сказал:

У меня никаких инструкций в чате не высветилось

Пять пунктов там для кого написаны?
Выполни еще раз, если не получится — содержимое server-log скинь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исправил, всё работает. А как сделать функцию что бы игрока телепортировало туда от куда закончилась так скажем съемка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Chopick
      От Chopick
      Всем здравствуйте! Делаю систему домов/бизнесов по туториалу knox know с плагином GoodArea. Есть проблема, если заходишь в интерьер бизнеса, то когда выходишь спавнит почему-то на пикап дома.

      Вот енумы:
       
      #define MAX_HOUSES 1000 #define MAX_BIZS 1000 enum house {         hID,         STREAMER_TAG_PICKUP:hPICKUP,         STREAMER_TAG_AREA:hAREA,         hOWNER[MAX_PLAYER_NAME],         STREAMER_TAG_3D_TEXT_LABEL:hTEXT[256],         STREAMER_TAG_MAP_ICON:hICON,         hPRICE,         hCLASS,         hINTERIOR,         Float:hX,         Float:hY,         Float:hZ,         Float:hA,         hCONDITION // Закрыт/Открыт } new House[MAX_HOUSES][house]; new Houses; new HouseGroup; enum biz {         bID,         STREAMER_TAG_PICKUP:bPICKUP,         STREAMER_TAG_AREA:bAREA,         bOWNER[MAX_PLAYER_NAME],         STREAMER_TAG_3D_TEXT_LABEL:bTEXT[256],         STREAMER_TAG_MAP_ICON:bICON,         bNAME[25],         bPRICE,         bTYPE,         bINTERIOR,         Float:bX,         Float:bY,         Float:bZ,         Float:bA } new Biz[MAX_BIZS][biz]; new Bizs; new BizGroup; enum interior_info {         intID,         intNAME[41],         intINTERIOR,         Float:intX,         Float:intY,         Float:intZ,         Float:intA,         STREAMER_TAG_AREA:intAREA } new Interior[MAX_INTERIORS][interior_info]; new Interiors; new InteriorGroup; Вот что у меня в OnGameModeInit:
      HouseGroup = CreateGroupGoodAreas(GoodArea:HouseEnter); InteriorGroup = CreateGroupGoodAreas(GoodArea:InteriorExit); BizGroup = CreateGroupGoodAreas(GoodArea:BizArea);  
      Вот стоки:
      GAResponse:HouseEnter(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 if(key & KEY_WALK)                 {                 if(House[index][hCONDITION] > 0 && House[index][hOWNER] == player_info[playerid][NAME] || House[index][hCONDITION] == 0)                 {                                         GoToInterior(playerid, House[index][hINTERIOR]);                                         SetPlayerVirtualWorld(playerid, index);                                 }                                 else if(House[index][hCONDITION] > 0 && House[index][hOWNER] != player_info[playerid][NAME]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Этот дом закрыт на ключ!");                         }                 }                 case GA_RESPONSE_ENTER:                 {                     if(House[index][hOWNER] == 0)                     {                         CreateNoOwnerHouseTD(playerid);                         for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)                         {                             PlayerTextDrawShow(playerid, NoOwnerTextDraw_PTD[playerid][i]);                                 }                                 new price[8];                                 format(price, sizeof(price), "%d$", House[index][hPRICE]);                                 PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][2], price);                                 new id[9];                                 format(id, sizeof(id), "%d", House[index][hID]);                                 PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][0], id);                                 switch(House[index][hCLASS])                                 {                                     case 1: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "A");                                     case 2: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "B");                                     case 3: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "C");                                 }                                 for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)                         {                             TextDrawShowForPlayer(playerid, NoOwnerTextDraw_TD[i]);                                 }                         }                 }                 case GA_RESPONSE_LEAVE:                 {                 for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)                 {                     PlayerTextDrawHide(playerid, NoOwnerTextDraw_PTD[playerid][i]);                         }                         for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)                 {                     TextDrawHideForPlayer(playerid, NoOwnerTextDraw_TD[i]);                         }                 }         }         return 1; } GAResponse:BizArea(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 if(key & KEY_WALK)                 {                     GoToInteriorBiz(playerid, Biz[index][bINTERIOR]);                                 SetPlayerVirtualWorld(playerid, index);                 }                 }         }         return 1; } GAResponse:InteriorExit(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 new world = GetPlayerVirtualWorld(playerid);                 if(key & KEY_WALK)                 {                     if(world < MAX_HOUSES)                     {                         SetPlayerInterior(playerid, 0);                             SetPlayerVirtualWorld(playerid, 0);                             SetPlayerPos(playerid, House[world][hX], House[world][hY], House[world][hZ]);                             SetPlayerFacingAngle(playerid, House[world][hA]);                                 }                                 else if(world < MAX_HOUSES + MAX_BIZS)                     {                         world -= MAX_HOUSES;                                         printf("%d index world", world);                         SetPlayerInterior(playerid, 0);                             SetPlayerVirtualWorld(playerid, 0);                             SetPlayerPos(playerid, Biz[world][bX], Biz[world][bY], Biz[world][bZ]);                             SetPlayerFacingAngle(playerid, Biz[world][bA]);                                 }                         }                         if(key & KEY_CTRL_BACK)                         {                             if(player_info[playerid][HOUSE] != House[world][hID]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Вы не владелец данного дома!");                             new dialog[256];                                 format(dialog, sizeof(dialog),                                         "{ffd900}[1]{ffffff}Информация о доме\n\                                         {ffd900}[2]{ffffff}%s дом",                                 (House[world][hCONDITION] == 1) ? ("{00ff00}Открыть") : ("{ff0000}Закрыть"));                             SPD(playerid, DLG_HMENU, DIALOG_STYLE_LIST, "{ffd900}Меню дома", dialog, "Выбрать", "Закрыть");                             return 1;                         }                 }         }         return 1; } stock GoToInterior(playerid, interior) {     for(new i = 0; i < Interiors; i++)         {             if(Interior[i][intID] != interior) continue;             SetPlayerInterior(playerid, Interior[i][intINTERIOR]);             SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);             SetPlayerFacingAngle(playerid, Interior[i][intA]);             SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);             new str[128];             format(str, sizeof(str),                         "Нажмите \"ALT\" для выхода\n\                         Нажмите \"H\", чтобы открыть меню дома");             Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.0, 0, 1);             return 1;         }         return 0; } stock GoToInteriorBiz(playerid, interior) {     for(new i = 0; i < Interiors; i++)         {             if(Interior[i][intID] != interior) continue;             SetPlayerInterior(playerid, Interior[i][intINTERIOR]);             SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);             SetPlayerFacingAngle(playerid, Interior[i][intA]);             SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);             new str[128];             format(str, sizeof(str),                         "Нажмите \"ALT\" для выхода");             Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.0, 0, 1);             return 1;         }         return 0; }  
       
      Что мне делать, подскажите пожалуйста?
    • Jdjdjd
      От Jdjdjd
      Как сделать открытие закрытие ворот в Радмир рп на копии,и куд а нужно вставлять код?
       
    • Мемен Томорли
      От Мемен Томорли
      Как создать команду /warns чтобы игрок смог просматривать активные варны у персонажа ??
      Типо как на Малиновка ЛП
    • Ernesto_Red
      От Ernesto_Red

      Привет всем друзья! ЛЕГЕНДАРНЫЙ бонусный проект возвращается спустя долгое время на площадку "San Andreas MultiPlayer".
       
      Немного о Fresh RolePlay:
      - Бонусный проект который был открыт еще в далеком 2015 году, на версии SA:MP 0.3e, и имел большой успех и популярность у игроков, среди бонусных проектов, благодаря своей атмосфере, своему моду, который на то время был очень разнообразен по функционалу, в отличие от других. В 2019 году проект был закрыт и бывший владелец проекта увел упор на другие свои проекты, которые тоже долго не продержались и в последствии были закрыты.
       
      О нас:
      Мы являемся командой, которая желает вновь возродить тот самый "Фрэш", который радовал своих игроков атмосферой, игрой, весельем. Мы уже подготавливаем мод, сайт к запуску, и Вы совсем скоро сможете начать свою новую историю на нашем сервере!
       
      Присоединяйтесь к нам, и Вы сможете стать настоящим ФРЕШИКОМ! 
       
      Наша официальная группа VK: *Перейти по ссылке*
      Наша свободная группа VK: *Перейти по ссылке*
      Сайт: https://unknown (soon)

       
    • danya_white
      От danya_white

       
      Всех приветствую, уважаемые пользователи форума Pawno-Rus!
      Давно не выходил на связь, решил попробовать свои силы в чем-то новом и создать свой кроссплатформенный SAMP проект.
      Проект позиционирует себя как Lite RP проект (без бонуса) и будет доступен на ПК и Android устройствах.
      Уже активно идёт разработка над игровым модом, лаунчером а также сайтом и форумом.
       
      Наша группа: Вконтакте
      Наш сайт: classic-gta.ru