[Include] YouTube Streamer - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Include] YouTube Streamer
Herro[CM] Дата: Среда, 09.09.2015, 22:35 | Сообщение # 1
Бывалый
Сообщений: 425
Статус: Offline
Информация: Благодаря данному include, вы можете просто включить видео YouTube на своем ​​SA: MP сервере. Простота установки и 1 видео воспроизводиться с 1 строки кода. Видео можно воспроизвести как для одного человека, так и для всего сервера.

Код
native PlayYoutubeVideoForPlayer(playerid,url[])
native StopYoutubeVideoForPlayer(playerid)

native ContainsYoutubeURL(string[])
native IsYouTubeVideoPlaying()

native GetLengthOfVideo()
native GetVideoTitle()
native GetVideoLink()

public OnYoutubeVideoFinished(playerid)


Для работы, вписываем название include в начале мода ( #include <[М.] _Youtube>)

Колбэк:

Код

PlayYoutubeVideoForPlayer (playerid,url[])  
  StopYoutubeVideoForPlayer (playerid)


Пример: Воспроизводим видео при конекте, заканчиваем после того как игрока заспавнится.
Код
#include <[MV]_Youtube>

public OnPlayerConnect(playerid)
{
     PlayYoutubeVideoForPlayer(playerid, "https://www.youtube.com/watch?v=tsa5tUZ3puE")
  return 1;
}

public OnPlayerSpawn(playerid)
{
     StopYoutubeVideoForPlayer(playerid);
  return 1;
}


Пример: Воспроизведение видео по команде с чтением URL

Код
#include <[MV]_Youtube>
#include <sscanf2>
#include <zcmd>

CMD:play(playerid,params[])
{
     new link[128];
     if(sscanf(params,"s[128]",link)) return SendClientMessage(playerid,RED,"Usage: /play [youtube-url]");
     if(strlen(link) >= 128) return SendClientMessage(playerid,RED,"Link too long !");
     PlayYoutubeVideoForPlayer(playerid,link);
  return 1;
}


Сам include
Код
#include <a_http>
   
new bool:g_playing = false, g_title[256], g_duration = 0, g_link[64];
   
forward OnYoutubeVideoFinished(playerid);
forward SongFinished(playerid);
   
stock PlayYoutubeVideoForPlayer(playerid,url[])
{
         if(strfind(url,"&") != -1) strmid(url,url,0,strfind(url,"&"),128);
         format(g_link,sizeof(g_link),"%s",url);
         format(url,128,"youtubeinmp3.com/fetch/?api=advanced&video=%s",g_link);
         HTTP(playerid, HTTP_GET, url, "", "OnYoutubeResponse");
}
   
stock StopYoutubeVideoForPlayer(playerid)       return StopAudioStreamForPlayer(playerid);
stock ContainsYoutubeURL(string[])                      return (strfind(string,"youtube") != 1 && strfind(string,"watch?v=") != 1);
   
stock IsYouTubeVideoPlaying()   return g_playing;
stock GetLengthOfVideo()                return g_duration;
stock GetVideoTitle()                   return g_title;
stock GetVideoLink()                    return g_link;
   
forward OnYoutubeResponse(playerid, response_code, data[]);
public OnYoutubeResponse(playerid, response_code, data[])
{
         if(response_code == 200)
         {
                 new content[3][256],stream[256],string[256];
                 new hours,minutes,seconds,tmp_seconds[8];
   
                 explode(content,data,"<br />");
                 strmid(tmp_seconds,content[1],8,strlen(content[1]));
                 strmid(stream,content[2],6,strlen(content[2]));
   
                 g_duration = strval(tmp_seconds);
                 g_title = content[0];
   
                 formatSeconds(g_duration,hours,minutes,seconds);
                 
                 format(string,sizeof(string),"{0049FF}[Now playing] {00c9ff}%s (Duration: %02d:%02d:%02d)",GetVideoTitle(),hours,minutes,seconds);
                 SendClientMessage(playerid,-1,string);
   
                 PlayAudioStreamForPlayer(playerid,stream);
                 g_playing = true;
                 
                 SetTimerEx("SongFinished",(g_duration+5)*1000,false,"i",playerid);
         }
         else
         {
                 new error[128];
                 format(error,sizeof(error),"{0049FF}[ERROR] {00c9ff}An error has occured: %s (%d)",GetError(response_code),response_code);
                 SendClientMessage(playerid,0xFF0000FF,error);
         }
}
   
public SongFinished(playerid)
{
     g_playing = false;
         CallLocalFunction("OnYoutubeVideoFinished","i",playerid);
}
   
stock GetError(val)
{
         new error[32];
         switch(val)
         {
                 case 1: error = "Bad host";
                 case 2: error = "No socket";
                 case 3: error = "Can't connect";
                 case 4: error = "Can't write";
                 case 5: error = "Content too big";
                 case 6: error = "Malformed response";
                 case 300..308: error = "Redirection";
                 case 400..499: error = "Client error";
                 case 500..599: error = "Server error";
         }
         return error;
}
   
stock formatSeconds(seconds, &hours_left, &minutes_left, &seconds_left)
{
     hours_left = seconds/60/60;
     minutes_left = (seconds - hours_left*60*60)/60;
     seconds_left = (seconds - hours_left*60*60 - minutes_left*60);
}
   
stock explode(aExplode[][], const sSource[], const sDelimiter[] = " ", iVertices = sizeof aExplode, iLength = sizeof aExplode[])
{
         new
                 iNode,
                 iPointer,
                 iPrevious = -1,
                 iDelimiter = strlen(sDelimiter);
   
         while(iNode < iVertices)
         {
                 iPointer = strfind(sSource, sDelimiter, false, iPointer);
   
                 if(iPointer == -1)
                 {
                         strmid(aExplode[iNode], sSource, iPrevious, strlen(sSource), iLength);
                         break;
                 }
                 else
                 {
                         strmid(aExplode[iNode], sSource, iPrevious, iPointer, iLength);
                 }
   
                 iPrevious = (iPointer += iDelimiter);
                 ++iNode;
         }
   
         return iPrevious;
}


Автор: Майкл @ Бельгия


Когда нет знания, есть мнение.
Simon4ik228 Дата: Пятница, 18.09.2015, 23:01 | Сообщение # 2
Боец
Сообщений: 237
Статус: Offline
Чуть мозг не сломал, видео пожалуйста!
Herro[CM] Дата: Суббота, 19.09.2015, 00:23 | Сообщение # 3
Бывалый
Сообщений: 425
Статус: Offline
Цитата Simon4ik228 ()
Чуть мозг не сломал, видео пожалуйста!

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


Когда нет знания, есть мнение.
TheQue Дата: Среда, 30.09.2015, 16:30 | Сообщение # 4
Боец
Сообщений: 135
Статус: Offline
Цитата Herro[CM] ()
Видео заснять не могу, но с установкой могу помочь, если нужно обращайся.

Скоро сделаю видео как работает этот инклуд!


Пошло всё в *****, до свидания CM...
[CM]iNiko Дата: Суббота, 21.11.2015, 11:53 | Сообщение # 5
Бывалый
Сообщений: 397
Статус: Offline
Отличный include. Хотелось бы увидеть видео о его работе.

Всё случается в этой жизни.
[CM]ZloyKroJIuK Дата: Среда, 20.01.2016, 17:45 | Сообщение # 6
Любитель
Сообщений: 39
Статус: Offline
Не понял что куда, сделай скриншоты хотя бы, пожалуйста.
AlexMaxi[CM] Дата: Воскресенье, 31.01.2016, 01:40 | Сообщение # 7
Новичок
Сообщений: 21
Статус: Offline
Скорее всего не рабочий, прошу пруфы, что он работает.
Или подробнее расскажи.
[CM]ClimoWHY Дата: Четверг, 24.03.2016, 20:28 | Сообщение # 8
Боец
Сообщений: 58
Статус: Offline
Годнота спасибо большое автору темы

[CM]Reyden Дата: Воскресенье, 29.05.2016, 15:12 | Сообщение # 9
TOP ТАЧЕР СМ
Сообщений: 223
Статус: Offline
Сделай пожалуйста видео biggrin

http://cheat-master.ru/forum/111-639306-1 - ПРОДАЖА ВИРТОВ
Аккаунт разрешен администратором [CM]AGRESSOR
СКУПАЮ АККАУНТЫ STEAM
http://cheat-master.ru/forum/140-629804-1

Темы:
Как попасть в пд за 2 дня на хороший ранг - http://cheat-master.ru/forum/73-581561-1#3721079
http://cheat-master.ru/forum/117-583234-1 - Как исправить ошибку Unknown
http://cheat-master.ru/forum/117-597068-1 - Как установить мод на хостинг.
http://cheat-master.ru/forum/73-593293-1 - Обход бан-чата на Samp-Rp
ВК:
chogovadze Дата: Понедельник, 13.06.2016, 16:39 | Сообщение # 10
Боец
Сообщений: 69
Статус: Offline

Как исправить?


Сообщение отредактировал chogovadze - Понедельник, 13.06.2016, 16:40
Danny_Marcelo Дата: Воскресенье, 26.06.2016, 02:09 | Сообщение # 11
Боец
Сообщений: 282
Статус: Offline
Хм.. Я думал только в MTA можно видео по ссылке вставлять. а тут теперь и самп вырос)
Плисс Дата: Вторник, 19.07.2016, 21:18 | Сообщение # 12
Боец
Сообщений: 70
Статус: Offline
Кросс,полезная темка!
H-U-N-T-E-R Дата: Понедельник, 03.07.2017, 21:58 | Сообщение # 13
Новичок
Сообщений: 3
Статус: Offline
убиваем на(МАТ) ваш сервер а вместе с ним и CPU железа.
[СМ]Пират Дата: Среда, 07.03.2018, 09:41 | Сообщение # 14
Боец
Сообщений: 98
Статус: Offline
было бы видео хорошо было бы

Аккаунт разрешен администратором By Рафаель
kobaidze95 Дата: Воскресенье, 11.03.2018, 13:47 | Сообщение # 15
Боец
Сообщений: 69
Статус: Offline
этот инклуд уже несколько лет существует и были проекты в самп которые использовали его



спс за репу
  • Страница 1 из 1
  • 1
Поиск: