Доброго дня, форумчане.
Перечитывая форумы самп-кома, я наткнулся на интересный инклуд от Jochemd, который позволяет создать систему проигрывания потокового аудио, приближенную к оригинальной системе GTA:San Andreas одной функцией:
Плагин предлагает следующие возможности:PHP код:
stock AddRadioStation("Имя потока", "Ссылка на поток");
- Смена потока клавишами Y и N (переназначить можно непосредственно в Include);
- Визуальное отображение текущей станции и скрытие названия по таймеру;
- Настройка стиля отображения названия (автором предложено три варианта:
- http://i.imgur.com/zqqCi.png
- http://i.imgur.com/hIsYh.png
- http://i.imgur.com/vSjoj.png);- Сохранение текущего потока за каждым авто, проигрывание и смена потока для всех пассажиров.
Оригинальный ченджлог автора:
К сожалению, некоторые моменты работы данного инклуда меня не устроили:R6
- Added GetRadioStationsString() which returns all names of the stations (NAME1\nNAME2\nNAME3). This allows you to create command like /setstation (see example) and /allstations.
- Bugfix in SetRadioStation.
R5
- Fixed a bug: People were able to switch radio stations on foot.
- Changed the hooks OnGameModeInit and OnFilterScriptInit to stocks to save script space.
- Added GetVehicleRadioStation(vehicleid) and SetVehicleRadioStation(vehicleid, stationid) (useful if you want to make a 'favourites' script, for example).
- Rewrote almost whole code in another style.
- Added several textdraw styles. You can now choose one you prefer using a define! Credits to Jakku for creating some styles
- The radio stations are now synced per vehicle. When a passenger changes the radio station, the driver sees it and the same goes for when the driver changes it.
R4
- Fixed bug: When you spawn, server crashes. Update strongly recommended!
R3
- Fixed bug: Array sizes do not match (error 47).
- Fixed bug: Music doesn't stop when you exit the vehicle.
- Fixed bug: "symbol" has been truncated to "size". I have just shrinked the hooks.
R2:
- Now you can use this in an filterscript as well!
- Fixed a bug where the last one wouldn't be called because the cell assignment starts from 0. Thanks to CyNiC!
- Огромное количество создаваемых TextDraw для отрисовки. По какой-то причине автор создавал TextDraw для каждого авто, а не для игрока, и игроку рисовал TD, прикрепленный за авто;
- Ошибка в хуках OnGameModeInit и OnFilterScriptInit. При сборке фильтрскрипта по непонятной причине после старта FS вызывался и хук OnGameModeInit.
- Нескромное количество выделяемой памяти (в общем-то, связано с TextDraw).
Соответственно, в связи с этим было решено форкнуть данную систему для собственного удобства.
Что было изменено по сравнению с оригиналом:
- Перевод вывода с TextDraw на GameText. Был потерян вывод различных стилей названия, однако существенно упрощен вывод и за ненадобностью упразднено выделение памяти под TextDraw для авто;
- Написан простенький костыль для исправления бага хуков OnFilterScriptInit и OnGameModeInit;
- и еще несколько мелких косметических правок.
Работа форка выглядит примерно вот так:
Для работы инклуда использовалась библиотека YSI/y_hooks. Она необходима и для сборки GM/FS.
Ссылки:
- оригинальная библиотека Jochemd: исходный код, тема на форумах sa-mp.com.
- форк библиотеки: исходный код.
Jochemd в следующей версии обещал слияние библиотек, когда это произойдет - первый пост будет обновлен.
Исходные коды распространяются AS-IS.
Вопросы и предложения принимаются в этой теме.