
Untitled
By: a guest on
Jul 29th, 2012 | syntax:
PAWN | size: 2.29 KB | hits: 17 | expires: Never
#include <a_samp>
#include <foreach>
#include <YSI\y_hooks>
#include <audio>
enum g_stream
{
gStreamEnabled,
gStreamURL[128],
Float:gStreamRange
}
new gObjectStream[MAX_OBJECTS][g_stream];
new gActiveStreamObjectID[MAX_PLAYERS];
forward StreamCheckTimer( );
stock StopObjectStream( objectid )
{
gObjectStream[objectid][gStreamURL] = 0;
gObjectStream[objectid][gStreamEnabled] = 0;
gObjectStream[objectid][gStreamRange] = 0;
}
stock AttachStreamToObject( objectid, Float:range, url[])
{
if( !IsValidObject( objectid ) )
return 0;
format( gObjectStream[objectid][gStreamURL], 12, url[]);
gObjectStream[objectid][gStreamEnabled] = 1;
gObjectStream[objectid][gStreamRange] = range;
return 1;
}
stock IsStreamAttachedToObject( objectid ) {
return ( gObjectStream[objectid][gStreamEnabled] == 1 ) ? 1 : 0;
}
hook OnGameModeInit()
{
SetTimer( "StreamCheckTimer", 1000, true );
}
public StreamCheckTimer( )
{
new Float:objpos[3];
foreach(Player, x)
{
for( new y = 0; y != MAX_OBJECTS; ++y )
{
if( 1 != gObjectStream[y][gStreamEnabled] )
continue;
else
{
GetObjectPos( y, objpos[0], objpos[1], objpos[2] );
if( IsPlayerInRangeOfPoint( x, gObjectStream[y][gStreamRange], objpos[0], objpos[1], objpos[2] ) )
{
if( gActiveStreamObjectID[x] != y )
{
gActiveStreamObjectID[x] = y;
Audio_Play( x, gObjectStream[y][gStreamURL] );
}
if( gActiveStreamObjectID[x] == y && gObjectStream[y][gStreamEnabled] == 0 )
{
gActiveStreamObjectID[x] = 0;
Audio_Stop( x, gObjectStream[y][gStreamURL] );
}
}
else
{
if( gActiveStreamObjectID[x] == y ) // if is listening to a stream
{
gActiveStreamObjectID[x] = 0;
Audio_Stop( x, gObjectStream[y][gStreamURL] );
}
}
}
}
}
return 1;
}