Форум Pawn.Wiki - Воплоти мечту в реальность!: [CEF] Система кинотеатра - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ Other ]
[CEF] Система кинотеатра v2
Оценка: ***** 2 Голосов

#1
Пользователь офлайн   NiceXPlayer 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Всем привет. Я решил создать новую тему, т.к старая будет путать и мало кто пролистает вниз. Ее можно смело удалять, т.к код там просто сырой.
Еще раз хочу извинится перед админом форума, что я не так все понял.




Описание

С помощью данной системы можно на объектах проигрывать любые видео, аудиозаписи. На примере я сделал уличный кинотеатр. Ниже привожу отличия от старой версии


- Исправлен самый главный недостаток, видео показывало только одному человеку
- Теперь видео можно проигрывать на расстоянии которое вы укажите
- Добавлено глобальное видео по таймеру, чтобы включалось для всех игроков сервера. Если видео идет минуту, ставьте 60000мл/с, можете с интервалом в минуту, чтобы оно спустя минуту опять начала проигрываться т.е 120000мл/с (По умолчанию функция отключена, упор сделан на /url и /urlall в данной версии)
- Переписан код pawn
- Добавлен маппинг с Azazona по желанию
- Было найдено решение, когда у игрока был черный экран и звук
- Было найдено решение с несовместимостью asi imbrowser, сделайте 2 папки cef. Одну для браузера, другую для кинотеатра (Я не понимаю как компилировать, если автор imbrowser это увидит ПАМАГИ)
- Теперь можно включать видео по ссылке локально (/url)
- Теперь можно включать видео по ссылке для всех (/urlall)
- Добавил свой дефолтный маппинг под парк
- Улучшил сам экран
- Убрал в "//" - идею с сокращением ссылки. Было много проблем, как плохая проверка соединения и ложные ошибки.

Как включать видео по ссылке? Сейчас разберем на примере



Берем например видео с моим последним обзором

1. Копируем HTML - код и вставляем для примера сюда
<iframe width="560" height="315" 
src="https://www.youtube.com/embed/sK01skd4KsE" 
title="YouTube video player" frameborder="0" 
allow="accelerometer; autoplay; clipboard-write; encrypted-
media; gyroscope; picture-in-picture" allowfullscreen>
</iframe>


2. Нам нужна ссылка
https://www.youtube.com/embed/sK01skd4KsE


3. Берем ссылку и вставляем в конце
?autoplay=1


4. Получается

https://www.youtube.com/embed/sK01skd4KsE?autoplay=1


Видео работает в радиусе 100м. Изменять в OnGameModeInit

Установка: Клиентскую часть перекинуть в папку с игрой.
ВНИМАНИЕ!!! Многие кидают папку Clients в корневую папку. Нужно кидать не Clients, а ее содержимое, т.е папку cef и cef.asi


Команды: 
/plugin - проверить работает ли плагин
/sound - выставляет максимальную слышимую дистанцию для браузера в объекте
/test1 - телепортироваться к кинотеатру
/cef - сделать видео на весь экран
/hide - Скрывает браузер, который вы открыли в /cef
/dev - Включает / выключает инструменты разработчика.
/url - Включить видео локально для себя по ссылке
/urlall - Включить для всех по ссылке




А теперь перейдем к коду, который изменился с прошлой версией

В начало мода
#include <cef>
#include <foreach>
#include <fmt>
#include <sscanf2>
#include <streamer>
#include <Pawn.CMD>


Ко всем new
new map;
new CinemaArea,
        CinemaObject;



Ко всем Define

#define CEF_INTERFACE_BROWSER_ID 2
#define CEF_INTERFACE_BROWSER_IDS 1
#define CEF_INTERFACE_BROWSER_BLOCK 1
#define SCMf SendClientMessagef



Если вы хотите использовать мой шаблон маппинга, копируете этот код. Этот шаблон изображен на видео выше.

В OnPlayerConnect
RemoveBuildingForPlayer(playerid, 4057, 1479.5547, -1693.1406, 19.5781, 0.25);
RemoveBuildingForPlayer(playerid, 4210, 1479.5625, -1631.4531, 12.0781, 0.25);
RemoveBuildingForPlayer(playerid, 713, 1457.9375, -1620.6953, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 713, 1496.8672, -1707.8203, 13.4063, 0.25);
RemoveBuildingForPlayer(playerid, 1226, 1467.9844, -1727.6719, 16.4219, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1468.9844, -1713.5078, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1231, 1479.6953, -1716.7031, 15.6250, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1488.7656, -1713.7031, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1289, 1504.7500, -1711.8828, 13.5938, 0.25);
RemoveBuildingForPlayer(playerid, 1258, 1445.0078, -1704.7656, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 1258, 1445.0078, -1692.2344, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 712, 1445.8125, -1650.0234, 22.2578, 0.25);
RemoveBuildingForPlayer(playerid, 673, 1457.7266, -1710.0625, 12.3984, 0.25);
RemoveBuildingForPlayer(playerid, 620, 1461.6563, -1707.6875, 11.8359, 0.25);
RemoveBuildingForPlayer(playerid, 700, 1463.0625, -1701.5703, 13.7266, 0.25);
RemoveBuildingForPlayer(playerid, 1231, 1479.6953, -1702.5313, 15.6250, 0.25);
RemoveBuildingForPlayer(playerid, 673, 1457.5547, -1697.2891, 12.3984, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1468.9844, -1694.0469, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1231, 1479.3828, -1692.3906, 15.6328, 0.25);
RemoveBuildingForPlayer(playerid, 4186, 1479.5547, -1693.1406, 19.5781, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1468.9844, -1704.6406, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 620, 1461.1250, -1687.5625, 11.8359, 0.25);
RemoveBuildingForPlayer(playerid, 700, 1463.0625, -1690.6484, 13.7266, 0.25);
RemoveBuildingForPlayer(playerid, 641, 1458.6172, -1684.1328, 11.1016, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1457.2734, -1666.2969, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1468.9844, -1682.7188, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 712, 1471.4063, -1666.1797, 22.2578, 0.25);
RemoveBuildingForPlayer(playerid, 1231, 1479.3828, -1682.3125, 15.6328, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1458.2578, -1659.2578, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 712, 1449.8516, -1655.9375, 22.2578, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1457.3516, -1650.5703, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1454.4219, -1642.4922, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 1231, 1466.4688, -1637.9609, 15.6328, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1449.5938, -1635.0469, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 3985, 1479.5625, -1631.4531, 12.0781, 0.25);
RemoveBuildingForPlayer(playerid, 4206, 1479.5547, -1639.6094, 13.6484, 0.25);
RemoveBuildingForPlayer(playerid, 1232, 1465.8359, -1608.3750, 15.3750, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1488.7656, -1704.5938, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 700, 1494.2109, -1694.4375, 13.7266, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1488.7656, -1693.7344, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 620, 1496.9766, -1686.8516, 11.8359, 0.25);
RemoveBuildingForPlayer(playerid, 641, 1494.1406, -1689.2344, 11.1016, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1488.7656, -1682.6719, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 712, 1480.6094, -1666.1797, 22.2578, 0.25);
RemoveBuildingForPlayer(playerid, 712, 1488.2266, -1666.1797, 22.2578, 0.25);
RemoveBuildingForPlayer(playerid, 1232, 1494.3594, -1608.3750, 15.3750, 0.25);
RemoveBuildingForPlayer(playerid, 1288, 1504.7500, -1705.4063, 13.5938, 0.25);
RemoveBuildingForPlayer(playerid, 1287, 1504.7500, -1704.4688, 13.5938, 0.25);
RemoveBuildingForPlayer(playerid, 1286, 1504.7500, -1695.0547, 13.5938, 0.25);
RemoveBuildingForPlayer(playerid, 1285, 1504.7500, -1694.0391, 13.5938, 0.25);
RemoveBuildingForPlayer(playerid, 673, 1498.9609, -1684.6094, 12.3984, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1504.1641, -1662.0156, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1504.7188, -1670.9219, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 620, 1503.1875, -1621.1250, 11.8359, 0.25);
RemoveBuildingForPlayer(playerid, 673, 1501.2813, -1624.5781, 12.3984, 0.25);
RemoveBuildingForPlayer(playerid, 673, 1498.3594, -1616.9688, 12.3984, 0.25);
RemoveBuildingForPlayer(playerid, 712, 1508.4453, -1668.7422, 22.2578, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1505.6953, -1654.8359, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1508.5156, -1647.8594, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 625, 1513.2734, -1642.4922, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 1258, 1510.8906, -1607.3125, 13.6953, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1479.6094, -1653.2500, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1467.8516, -1646.5938, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1472.8984, -1651.5078, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1465.9375, -1639.8203, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1467.7109, -1632.8906, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1472.6641, -1627.8828, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1479.4688, -1626.0234, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1486.4063, -1651.3906, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1491.3672, -1646.3828, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1493.1328, -1639.4531, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1486.1797, -1627.7656, 13.4531, 0.25);
RemoveBuildingForPlayer(playerid, 1280, 1491.2188, -1632.6797, 13.4531, 0.25);


Если вы будете использовать маппинг Arizona RP

RemoveBuildingForPlayer(playerid, 4057, 1479.554688, -1693.140625, 19.578100, 0.250000);
RemoveBuildingForPlayer(playerid, 1231, 1479.695313, -1702.531250, 15.625000, 0.250000);
RemoveBuildingForPlayer(playerid, 1280, 1468.984375, -1694.046875, 13.453100, 0.250000);
RemoveBuildingForPlayer(playerid, 1231, 1479.382813, -1692.390625, 15.632800, 0.250000);
RemoveBuildingForPlayer(playerid, 4186, 1479.554688, -1693.140625, 19.578100, 0.250000);
RemoveBuildingForPlayer(playerid, 1280, 1468.984375, -1682.718750, 13.453100, 0.250000);
RemoveBuildingForPlayer(playerid, 1231, 1479.382813, -1682.312500, 15.632800, 0.250000);
RemoveBuildingForPlayer(playerid, 700, 1494.210938, -1694.437500, 13.726600, 0.250000);
RemoveBuildingForPlayer(playerid, 1280, 1488.765625, -1693.734375, 13.453100, 0.250000);
RemoveBuildingForPlayer(playerid, 641, 1494.140625, -1689.234375, 11.101600, 0.250000);
RemoveBuildingForPlayer(playerid, 1280, 1488.765625, -1682.671875, 13.453100, 0.250000);



В OnGameModeInit

Сначала добавляем сам радиус экрана

CinemaArea = CreateDynamicCircle(1479.914917, -1689.026733, 100.0, -1, -1, -1);// 100.0 радиус показа видео


Если вы используете мой шаблон

map = CreateDynamicObject(7914, 1479.91492, -1689.02673, 19.55790,   0.00000, 0.00001, 0.00000); //Главный экран. Создадим его при включении команды /cef_block
SetDynamicObjectMaterial(map, 0, 10765, "airportgnd_sfse", "black64", 0);
map = CreateDynamicObject(7914, 1479.9149, -1689.0267, 19.5579, 0.000000, 0.000015, 179.999939); // 1
SetDynamicObjectMaterial(map, 0, 10765, "airportgnd_sfse", "white", 0);
//
CreateDynamicObject(19536, 1489.51294, -1696.17188, 12.31340,   0.00000, 0.00000, 0.00000);
CreateDynamicObject(639, 1491.31323, -1689.18604, 15.86182,   80.00000, 0.00000, 90.00000);
CreateDynamicObject(639, 1489.02966, -1689.18604, 20.32509,   50.00000, 0.00000, 90.00000);
CreateDynamicObject(19620, 1487.4745, -1688.5966, 16.6741,   90.0000, 180.0000, 0.0000);
map = CreateDynamicObject(3438, 1487.90051, -1689.04370, 12.88545,   -89.99999, 45.00000, 134.99998);
SetDynamicObjectMaterial(map, 0, 18646, "matcolours", "grey-80-percent", 0);
map = CreateDynamicObject(3438, 1487.62793, -1689.04370, 14.95601,   -75.00001, 179.99997, -89.99999);
SetDynamicObjectMaterial(map, 0, 18646, "matcolours", "grey-80-percent", 0);
map = CreateDynamicObject(3438, 1486.82874, -1689.04370, 16.88545,   -60.00000, 179.99998, -89.99998);
SetDynamicObjectMaterial(map, 0, 18646, "matcolours", "grey-80-percent", 0);
CreateDynamicObject(3438, 1485.55737, -1689.04370, 18.54231,   -45.00001, 179.99997, -89.99998);
SetDynamicObjectMaterial(map, 0, 18646, "matcolours", "grey-80-percent", 0);
CreateDynamicObject(639, 1484.78870, -1689.18604, 23.50384,   25.00000, 0.00000, 90.00000);
CreateDynamicObject(3438, 1483.90051, -1689.04370, 19.81367,   -30.00001, 179.99998, -89.99997);
CreateDynamicObject(3438, 1481.97107, -1689.04370, 20.61287,   -15.00000, 179.99998, -89.99996);
map = CreateDynamicObject(7666, 1479.9149, -1689.0267, 19.5579,   0.0000, 0.0000, 179.9999);
SetDynamicObjectMaterialText(map, 0, "Test Block", 140, "Arial", 70, 1, 0xFFFFFFFFFFFFFFFF, 0, 1);
CreateDynamicObject(3438, 1479.90051, -1689.04370, 20.88545,   0.00000, 180.00000, -89.99998);
CreateDynamicObject(639, 1479.76477, -1689.18604, 24.63618,   0.00000, 0.00000, 90.00000);
CreateDynamicObject(3438, 1477.82996, -1689.04370, 20.61287,   14.99999, 179.99998, -89.99998);
CreateDynamicObject(3438, 1475.90051, -1689.04370, 19.81367,   29.99999, 179.99998, -89.99998);
CreateDynamicObject(639, 1474.68225, -1689.18604, 23.44336,   -25.00000, 0.00000, 90.00000);
CreateDynamicObject(3438, 1474.26343, -1689.04089, 18.54231,   44.99999, 179.99997, -89.99997);
CreateDynamicObject(8650, 1479.41406, -1688.65771, 12.27527,   0.00001, 0.00000, 89.99995);
CreateDynamicObject(8650, 1479.41882, -1689.40723, 12.27427,   -0.00001, 0.00000, -89.99995);
CreateDynamicObject(3438, 1472.97229, -1689.04370, 16.88545,   59.99999, 179.99998, -89.99998);
CreateDynamicObject(3438, 1472.17310, -1689.04370, 14.95601,   74.99999, 179.99997, -89.99996);
CreateDynamicObject(3438, 1471.90051, -1689.04370, 12.88545,   89.99999, 135.00000, -44.99999);
CreateDynamicObject(639, 1470.79773, -1689.18604, 20.40482,   -50.00000, 0.00000, 90.00000);
CreateDynamicObject(639, 1468.52258, -1689.29919, 15.92513,   -75.00000, 0.00000, 90.00000);
CreateDynamicObject(19536, 1496.98779, -1634.33252, 12.30396,   0.00000, 0.00000, 0.00000);
CreateDynamicObject(19536, 1462.59827, -1620.28699, 12.27943,   0.00000, 0.00000, 0.00000);
CreateDynamicObject(6965, 1480.29944, -1640.43494, 15.92120,   0.00000, 0.00000, 0.00000);


Если вы используете маппинг Arizona RP

new map1;
map1 = CreateDynamicObject(639, 1491.313232, -1689.186035, 15.861824, 80.000000, 0.000000, 90.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 65535, "none", "none", 0xFFFFFFFF);
map1 = CreateDynamicObject(639, 1489.029663, -1689.186035, 20.325087, 50.000000, 0.000000, 90.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 65535, "none", "none", 0xFFFFFFFF);
map1 = CreateDynamicObject(19620, 1488.067749, -1689.350098, 15.794082, 90.000000, 0.000000, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterialText(map1, 0, "...", 100, "Arial", 199, 0, 0xFF59FF00, 0, 1);
map1 = CreateDynamicObject(3438, 1487.900513, -1689.043701, 12.885448, -89.999992, 45.000004, 134.999985, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(3438, 1487.627930, -1689.043701, 14.956005, -75.000008, 179.999969, -89.999992, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(3438, 1486.828735, -1689.043701, 16.885448, -60.000000, 179.999985, -89.999977, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(3438, 1485.557373, -1689.043701, 18.542309, -45.000008, 179.999969, -89.999985, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(639, 1484.788696, -1689.186035, 23.503841, 25.000000, 0.000000, 90.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 65535, "none", "none", 0xFFFFFFFF);
map1 = CreateDynamicObject(3438, 1483.900513, -1689.043701, 19.813671, -30.000010, 179.999985, -89.999969, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(19536, 1483.987549, -1686.541870, 12.323388, 0.000000, 0.000000, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 4004, "civic07_lan", "badmarb1_LAn", 0);
map1 = CreateDynamicObject(19536, 1483.987549, -1686.541870, 12.313400, 0.000000, 0.000000, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 500.0); // 1
SetDynamicObjectMaterial(map1, 0, 4004, "civic07_lan", "badmarb1_LAn", 0);
map1 = CreateDynamicObject(3438, 1481.971069, -1689.043701, 20.612865, -15.000005, 179.999985, -89.999962, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(7666, 1480.052246, -1689.470703, 15.766437, 60.495564, 270.000000, 179.999908, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterialText(map1, 0, "ARIZONA NEWS", 140, "Arial", 70, 1, 0xFFFFFFFF, 0, 1);
map1 = CreateDynamicObject(7914, 1480.185181, -1688.996704, 18.697903, 0.000000, 0.000007, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 10765, "airportgnd_sfse", "black64", 0);
map1 = CreateDynamicObject(7914, 1480.185181, -1688.996704, 18.697903, 0.000000, 0.000015, 179.999939, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-93-percent", 0);
map1 = CreateDynamicObject(7914, 1480.185181, -1688.996704, 19.797903, 0.000000, 0.000007, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 10765, "airportgnd_sfse", "black64", 0);
map1 = CreateDynamicObject(7914, 1480.185181, -1688.996704, 19.797903, 0.000000, 0.000015, 179.999939, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-93-percent", 0);
map1 = CreateDynamicObject(7914, 1479.914917, -1689.026733, 19.557898, 0.000000, 0.000007, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 200.0); // 1
SetDynamicObjectMaterial(map1, 0, 11009, "dkcargoshp", "frate64_blue", 0xFFFFFFFF);
map1 = CreateDynamicObject(3438, 1479.900513, -1689.043701, 20.885448, -0.000005, 180.000000, -89.999985, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(7914, 1479.684692, -1688.996704, 18.697903, 0.000000, 0.000007, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 10765, "airportgnd_sfse", "black64", 0);
map1 = CreateDynamicObject(7914, 1479.684692, -1688.996704, 18.697903, 0.000000, 0.000015, 179.999939, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-93-percent", 0);
map1 = CreateDynamicObject(639, 1479.764771, -1689.186035, 24.636181, 0.000000, 0.000000, 90.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 65535, "none", "none", 0xFFFFFFFF);
map1 = CreateDynamicObject(7914, 1479.684692, -1688.996704, 19.797903, 0.000000, 0.000007, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 10765, "airportgnd_sfse", "black64", 0);
map1 = CreateDynamicObject(7914, 1479.684692, -1688.996704, 19.797903, 0.000000, 0.000015, 179.999939, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-93-percent", 0);
CreateDynamicObject(1280, 1485.759521, -1677.473633, 12.713825, -0.000007, 0.000007, -0.000022, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 0
CreateDynamicObject(1280, 1485.759521, -1677.473633, 12.713825, -0.000007, 0.000007, -0.000022, -1, -1, -1, STREAMER_OBJECT_SD, 90.0); // 0
map1 = CreateDynamicObject(3438, 1477.829956, -1689.043701, 20.612865, 14.999992, 179.999985, -89.999977, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(4186, 1479.554688, -1683.018921, 18.328100, 0.000000, 0.000045, -0.000159, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 2
SetDynamicObjectMaterial(map1, 0, 4829, "airport_las", "Grass_128HV", 0);
SetDynamicObjectMaterial(map1, 3, 3979, "civic01_lan", "sl_concretewall1", 0);
map1 = CreateDynamicObject(4186, 1479.554688, -1683.018921, 18.338064, 0.000000, 0.000045, -0.000159, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 2
SetDynamicObjectMaterial(map1, 0, 4829, "airport_las", "Grass_128HV", 0);
SetDynamicObjectMaterial(map1, 3, 3979, "civic01_lan", "sl_concretewall1", 0);
map1 = CreateDynamicObject(3438, 1475.900513, -1689.043701, 19.813671, 29.999990, 179.999985, -89.999977, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
CreateDynamicObject(1231, 1479.811646, -1679.218994, 14.965218, 0.000000, 0.000000, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 0
CreateDynamicObject(1231, 1479.811646, -1679.218994, 14.965218, 0.000000, 0.000000, 0.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 0
map1 = CreateDynamicObject(639, 1474.682251, -1689.186035, 23.443359, -25.000000, 0.000000, 90.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 65535, "none", "none", 0xFFFFFFFF);
map1 = CreateDynamicObject(3438, 1474.243652, -1689.043701, 18.542309, 44.999992, 179.999969, -89.999969, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(8650, 1473.253296, -1689.018555, 12.275273, 0.000014, 0.000000, 89.999954, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 2
SetDynamicObjectMaterial(map1, 0, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
SetDynamicObjectMaterial(map1, 1, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
map1 = CreateDynamicObject(8650, 1473.253296, -1689.018555, 12.274271, -0.000014, 0.000000, -89.999954, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 2
SetDynamicObjectMaterial(map1, 0, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
SetDynamicObjectMaterial(map1, 1, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
map1 = CreateDynamicObject(8650, 1473.253296, -1689.018555, 12.275273, 0.000014, 0.000000, 89.999954, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 2
SetDynamicObjectMaterial(map1, 0, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
SetDynamicObjectMaterial(map1, 1, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
map1 = CreateDynamicObject(8650, 1473.253296, -1689.018555, 12.274271, -0.000014, 0.000000, -89.999954, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 2
SetDynamicObjectMaterial(map1, 0, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
SetDynamicObjectMaterial(map1, 1, 13691, "bevcunto2_lahills", "aamanbev96x", 0);
map1 = CreateDynamicObject(3438, 1472.972290, -1689.043701, 16.885448, 59.999989, 179.999985, -89.999977, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(3438, 1472.173096, -1689.043701, 14.956005, 74.999992, 179.999969, -89.999962, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(3438, 1471.900513, -1689.043701, 12.885448, 89.999992, 135.000000, -44.999992, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 18646, "matcolours", "grey-80-percent", 0);
map1 = CreateDynamicObject(639, 1470.797729, -1689.186035, 20.404821, -50.000000, 0.000000, 90.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 65535, "none", "none", 0xFFFFFFFF);
map1 = CreateDynamicObject(639, 1468.454224, -1689.186035, 15.925125, -75.000000, 0.000000, 90.000000, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 1
SetDynamicObjectMaterial(map1, 0, 65535, "none", "none", 0xFFFFFFFF);
CreateDynamicObject(1280, 1473.968140, -1677.473633, 12.713825, 0.000000, 0.000007, 179.999969, -1, -1, -1, STREAMER_OBJECT_SD, 90.0); // 0
CreateDynamicObject(1280, 1473.968140, -1677.473633, 12.713825, 0.000000, 0.000007, 179.999969, -1, -1, -1, STREAMER_OBJECT_SD, 300.0); // 0


Если у вас нет данного паблика, создайте. На моем примере я его создал в конце мода

public OnPlayerEnterDynamicArea(playerid, areaid)//Включить, если вы хотите, чтобы при определенном расстоянии проигрывалось видео.
{
	if(areaid == CinemaArea)
	{
	    cef_create_ext_browser(playerid, 1, "", "https://www.youtube.com/embed/36YnV9STBqc?autoplay=1", 10);
		CinemaObject = CreatePlayerObject(playerid, 7914, 1479.91492, -1689.02673, 19.55790, 0.00000, 0.00001, 0.00000);
		SetPlayerObjectMaterial(playerid, CinemaObject, 0, 10765, "airportgnd_sfse", "black64", 0);
		cef_append_to_object(playerid, 1, CinemaObject);
		cef_set_audio_settings(playerid, 1, 30.0, 20.0);
		return 1;
	}
	return 1;
}

public OnPlayerLeaveDynamicArea(playerid, areaid)// при выходе с этой зоны 100м, видео пропадет
{
	if (areaid == CinemaArea)
	{
		cef_remove_from_object(playerid, 1, CinemaObject);
		return true;
	}
	return true;
}





В конец мода

forward OnCefBrowserCreated(player_id, browser_id, status_code);
public OnCefBrowserCreated(player_id, browser_id, status_code)
{
	SCMf(player_id, -1, "public OnCefBrowserCreated(player_id(%i), browser_id(%i), status_code(%i))", player_id, browser_id, status_code);
    if (status_code != 200)
	{
		SendClientMessage(player_id, -1, "У вас проблемы с интернетом возможные, могут быть сбои.");
		return;
	}
	else
	{
	    SendClientMessage(player_id, -1, "Иницилизация браузера в игру прошла успешно!");
	}
	return;
}

forward OnCefInitialize(player_id, success);
public OnCefInitialize(player_id, success)
{
	SCMf(player_id, -1, "public OnCefInitialize(player_id(%i), success(%i))", player_id, success);
	return;
}

stock initialize_interface(playerid)
{
        cef_create_browser(playerid, CEF_INTERFACE_BROWSER_ID, "Твоя ссылка", false, false);
        return 1;
}






Ко всем командам

CMD:test1(playerid) return SetPlayerPos(playerid, 1480.587280, -1691.567261, 13.355384);
CMD:hide(playerid) return cef_destroy_browser(playerid, CEF_INTERFACE_BROWSER_ID);
CMD:cef(playerid) return initialize_interface(playerid);
CMD:dev(playerid) return cef_toggle_dev_tools(playerid, CEF_INTERFACE_BROWSER_ID, true);
CMD:sound(playerid) return cef_set_audio_settings(playerid, CEF_INTERFACE_BROWSER_IDS, CEF_DEFAULT_MAX_DIST, CEF_DEFAULT_REF_DIST);
CMD:plugin(playerid) return SCMf(playerid, -1, "Плагин - %s", cef_player_has_plugin(playerid) ? ("загружен") : ("отгружен"));

CMD:url(playerid) // команда локального воспроизведения т.е видите видео только вы
{
ShowPlayerDialog(playerid,10124,DIALOG_STYLE_INPUT,"Ваше видео","{00FF40}Ведите URL прямой трансляции","Ок","Отмена");
}

CMD:urlall(playerid) // команда глобального воспроизведения т.е видят видео все
{
ShowPlayerDialog(playerid,10125,DIALOG_STYLE_INPUT,"Прямая трансляция","{00FF40}Ведите URL прямой трансляции","Ок","Отмена");
}




Ко всем диалогам

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 10124)
        {

                if(!strlen(inputtext)){
                    SendClientMessage(playerid,0xFF99FFFF,"Вы не вписали URL!");
                    return 1;
                }else{
                    cef_create_ext_browser(playerid, 1, "", inputtext, 10);//Видео будет показываться только у вас
					CinemaObject = CreatePlayerObject(playerid, 7914, 1479.91492, -1689.02673, 19.55790, 0.00000, 0.00001, 0.00000);
					SetPlayerObjectMaterial(playerid, CinemaObject, 0, 10765, "airportgnd_sfse", "black64", 0);
					cef_append_to_object(playerid, 1, CinemaObject);
					cef_set_audio_settings(playerid, 1, 30.0, 20.0);
        }
    }
    if(dialogid == 10125)
        {
        foreach(new i : Player)
		{
                if(!strlen(inputtext)){
                    SendClientMessage(playerid,0xFF99FFFF,"Вы не вписали URL!");
                    return 1;
                }else{
                    cef_create_ext_browser(i, 1, "", inputtext, 10);//Видео будет показываться у всех одновременно
					CinemaObject = CreatePlayerObject(i, 7914, 1479.91492, -1689.02673, 19.55790, 0.00000, 0.00001, 0.00000);
					SetPlayerObjectMaterial(i, CinemaObject, 0, 10765, "airportgnd_sfse", "black64", 0);
					cef_append_to_object(i, 1, CinemaObject);
					cef_set_audio_settings(i, 1, 30.0, 20.0);
		}
        }
    }
    return 0; // 
}




Если захотите сделать, чтобы видео менялось после окончания

В OnGameModeInit ко всем таймерам


SetTimerEx("video", 60000, true, "i", playerid);


В конец мода

forward video (playerid);
public video (playerid)
{
    initialize_cef_block(playerid);
	return 1;
}




Если у вас не работает экран, откройте порт 7779 UDP, сейчас мне известен баг, он с плагином уже. Нельзя включать одно и тоже видео. Не знаю в чем проблема, видео не прерывается.
При заходе пропишите /plugin, если напишет загружено, значит топчик, если отгружен попробуйте установить библиотеку microsoft c++, поставить cleo 4, мне вообще помог переход на 11-ю винду.
Надеюсь я ничего сейчас не забыл. Тему буду дополнять и расширять. Я многое сюда не прикрепил, т.к находится в заготовке. Просьба не жаловаться на мой код. Я знаю что он уродский.

Автор плагина: https://github.com/ZOTTCE/samp-cef
Автор доработки: Я

Ссылка на готовый вариант: https://disk.yandex..../maVcmCC996xS8Q (Состав, плагины, клиент, инклуды)

Если у вас хостинг под CentOS 7 используйте данную версию плагина cef.so
https://drive.google..._fh9z2UtqL/view

В файле мода будет сырой код, например плохо работающая команда /ekran, это просто набросок. Так же там части диалога не выровнены. Это просто заготовка. Как доделаю, дополню тему. Основные команды в теме

Сообщение отредактировал Romzes: 15 августа 2021 - 03:48

6

#2
Пользователь офлайн   Romzes 

  • ( ^_^ )
  • Вставить ник
  • Раскрыть информацию
Тему почистил от лишнего оффтопа.

Система довольно интересная, было бы прикольно увидеть полноценную систему где будет меню управления экраном, а также поддержка видео (ссылок) из youtube.
0

#3
Пользователь офлайн   NiceXPlayer 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRomzes (15 августа 2021 - 02:24) писал:

Тему почистил от лишнего оффтопа.

Система довольно интересная, было бы прикольно увидеть полноценную систему где будет меню управления экраном, а также поддержка видео (ссылок) из youtube.


Свою доработку выложил в отдельную тему. Тут я не могу редактировать заглавную тему. Да и код теперь отличается в разы. Если посчитаете нужным, то эту тему можете удалить.
0

#4
Пользователь офлайн   Romzes 

  • ( ^_^ )
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNiceXPlayer (15 августа 2021 - 03:22) писал:

Свою доработку выложил в отдельную тему. Тут я не могу редактировать заглавную тему. Да и код теперь отличается в разы. Если посчитаете нужным, то эту тему можете удалить.


Темы объединил.
0

#5
Пользователь офлайн   NiceXPlayer 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Продолжаю развивать тему с CEF, и скоро выложу полноценный урок. Скорей всего создам отдельную тему, чтобы было отдельно от кинотеатра, улучшать буду по отдельности. Взял за основу маппинг с системы билдбордов, чтобы по новой не расставлять.

Если коротко, то теперь кроме написанного билдборда, можно еще и прикреплять видео.
/demovideo [id] [link] - показывает предварительное видео, если человек одобряет, администратор сохраняет ссылку и уже после рестарта сервера, обычно 03:00 по МСК, видео будет там постоянно. Просто я не понимаю как реализовать сохранение ссылки :)
/text [id] [text] - добавляет текст

Хотел сделать все в один диалог, но я еще много-го не знаю, если кто-то сможет сократить код или сделать более оптимизированней, предлагайте. Осталось только радиус расставить.




Изображение

Сообщение отредактировал NiceXPlayer: 16 августа 2021 - 03:09

0

#6
Пользователь офлайн   J_L 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Добрый день, использую вашу систему вставляю свою ссылку как вы и говорили видео не запускает, захожу с локалки на ваш сервер всё запускает можете помочь пожалуйста.
Изображение

Сообщение отредактировал J_L: 18 августа 2021 - 22:46

0

#7
Пользователь офлайн   NiceXPlayer 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияJ_L (18 августа 2021 - 22:33) писал:

...


Не запускает, то есть стоит на паузе?
0

#8
Пользователь офлайн   Gressie 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Здравствуйте. Проверьте пожалуйста, открыт ли у вас порт 7779 для воспроизведения видео при помощи CEF.
0

#9
Пользователь офлайн   J_L 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNiceXPlayer (19 августа 2021 - 04:48) писал:

Не запускает, то есть стоит на паузе?

Да
0

#10
Пользователь офлайн   J_L 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияMaks5 (19 августа 2021 - 08:56) писал:

Здравствуйте. Проверьте пожалуйста, открыт ли у вас порт 7779 для воспроизведения видео при помощи CEF.

Подскажите как проверить.
0

Поделиться темой:


  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

2 человек читают эту тему
0 пользователей, 2 гостей, 0 скрытых пользователей


Яндекс.Метрика