Try This:
gMe = getLocalPlayer();
gRoot = getRootElement();
gResRoot = getResourceRootElement( getThisResource () );
btn = {};
ipodCoor = { moving={}, pos={} };
addEvent( "clientReceiveMusicTable", true );
local sound = {}
addEventHandler( "onClientResourceStart", gResRoot,
function ()
outputChatBox( "Press 'i' to open your iPod", 0, 255, 0 );
ipod = guiCreateStaticImage( 1.0, 0.2279, 0.1916, 0.4036, "ipod.png", true ); --0.7744
ipodCoor.moving[ipod] = false;
ipodCoor.pos[ipod] = "out";
songDisplay = guiCreateGridList( 0.0671, 0.0245, 0.8504, 0.4663, true, ipod );
btn[1] = guiCreateButton( 0.64, 0.67, 0.15, 0.05, "Abspielen", true, ipod );
btn[2] = guiCreateButton( 0.185, 0.67, 0.15, 0.05, "Stop", true, ipod );
btn[3] = guiCreateButton( 0.42, 0.825, 0.15, 0.05, "vD", true, ipod );
btn[4] = guiCreateButton( 0.42, 0.525, 0.15, 0.05, "vU", true, ipod );
for i=1,4 do
guiSetAlpha( btn[i], 1.0 );
guiSetFont( btn[i], "default-small" );
end;
songList = guiGridListAddColumn( songDisplay, "My Songs", 0.85 );
triggerServerEvent( "serverLoadMusicTable", gMe );
addEventHandler( "onClientGUIClick", gRoot,
function ()
local theVehicle = getPedOccupiedVehicle ( gMe )
if source == btn[1] then
local selSong = guiGridListGetItemData( songDisplay, guiGridListGetSelectedItem( songDisplay ) );
if selSong then
if not sound then
triggerServerEvent ( "createSound", root, selSong, theVehicle)
else
stopSound(sound[source]);
triggerServerEvent ( "createSound", root, selSong, theVehicle)
end;
end;
elseif source == btn[2] then
if sound then
stopSound(sound[source]);
sound = nil;
end;
elseif source == btn[4] then
if music then
setSoundVolume( music, getSoundVolume( music ) + 0.25 );
if getSoundVolume( music ) > 1 then
setSoundVolume( music, 1 );
end;
end;
elseif source == btn[3] then
if music then
setSoundVolume( music, getSoundVolume( music ) - 0.25 );
if getSoundVolume( music ) < 0 then
setSoundVolume( music, 0 );
end;
end;
end;
end
)
bindKey( "i", "down",
function ()
if ipodCoor.moving[ipod] == false then
if ipodCoor.pos[ipod] == "out" then
showCursor( true, false );
ipodCoor.moving[ipod] = true;
addEventHandler( "onClientRender", gRoot, openIPod );
toggleControl( "fire", false );
else
showCursor( false, false );
ipodCoor.moving[ipod] = true;
addEventHandler( "onClientRender", gRoot, closeIPod );
toggleControl( "fire", true );
end;
end;
end
)
end
)
function openIPod()
local x, y = guiGetPosition( ipod, true );
guiSetPosition( ipod, x - 0.01, y, true );
if x < 0.775 then
ipodCoor.moving[ipod] = false;
ipodCoor.pos[ipod] = "in";
removeEventHandler( "onClientRender", gRoot, openIPod );
end;
end;
function closeIPod()
local x, y = guiGetPosition( ipod, true );
guiSetPosition( ipod, x + 0.01, y, true );
if x > 1.0 then
guiSetPosition( ipod, 1.0, y, true );
ipodCoor.moving[ipod] = false;
ipodCoor.pos[ipod] = "out";
removeEventHandler( "onClientRender", gRoot, closeIPod );
end;
end;
addEventHandler( "clientReceiveMusicTable", gRoot,
function ( mTable )
if mTable == nil then
triggerServerEvent( "serverLoadMusicTable", gMe );
else
for _, v in ipairs ( mTable ) do
local row = guiGridListAddRow( songDisplay );
local streamtable = split(v, ';')
guiGridListSetItemText( songDisplay, row, 1, streamtable[2], false, false );
guiGridListSetItemData ( songDisplay, row, 1, streamtable[1]);
outputChatBox(streamtable[2].." has ben added to your ipod", getLocalPlayer());
end;
guiGridListAutoSizeColumn( songDisplay, 1 );
guiBringToFront( songDisplay );
end;
end
)
addEvent ( "createSoundClient", true )
addEventHandler ( "createSoundClient", root,
function ( id, theVehicle )
local x, y, z = getElementPosition(theVehicle)
sound[source] = playSound3D(id, x, y, z )
attachElements ( sound[source], theVehicle )
end
)