Jump to content

Kleine vraag over "vehicle_radio" script


Recommended Posts

Hallo,

Ik ben bijna klaar met mijn eigen server.

Maar ik heb nu dus een script dat er voor zorgt dat binnen een aantal meter van het voertuig muziek hoorbaar is.

Nu heb ik een een kopie van in mijn resource en heb ik dus een kleine aanpassing nodig zodat de muziek zich blijft herhalen.

Normaal zou dit gegaan vervelen steeds de zelfde muziek, maar het gaat zich om een sirene.

Ik heb een kopie van de script hier onder geplakt.

Zou iemand mij hier mee kunnen helpen?

Bestand: sVehRadio3D.lua

g_VehicleList = {}

local radioStreams = 0

local defaultRadio = "URL"

addEventHandler("onResourceStart", resourceRoot,

function()

for i,veh in ipairs(getElementsByType("vehicle")) do

g_VehicleList[veh] = { }

g_VehicleList[veh].radio = false

g_VehicleList[veh].radioStation = defaultRadio

g_VehicleList[veh].volume = 50.0

end

end

)

addEventHandler("onPlayerJoin", root,

function()

for i,veh in ipairs(getElementsByType("vehicle")) do

if g_VehicleList[veh] ~= nil then

if g_VehicleList[veh].radio == true then

triggerClientEvent(source, "onServerToggleRadio", root, true, g_VehicleList[veh].radioStation, veh, g_VehicleList[veh].volume)

end

end

end

end

)

addEventHandler("onVehicleExplode", root,

function()

if g_VehicleList[source] ~= nil then

if g_VehicleList[source].radio == true then

triggerClientEvent("onServerToggleRadio", root, false, nil, source)

g_VehicleList[source].radio = false

destroyElement(g_VehicleList[source].radioMarker)

killTimer(g_VehicleList[source].idleTimer)

if radioStreams ~= 0 then

radioStreams = radioStreams - 1

end

end

end

end

)

addEventHandler("onElementDestroy", root,

function()

if g_VehicleList[source] ~= nil then

if g_VehicleList[source].radio == true then

triggerClientEvent("onServerToggleRadio", root, false, nil, source)

g_VehicleList[source].radio = false

destroyElement(g_VehicleList[source].radioMarker)

killTimer(g_VehicleList[source].idleTimer)

if radioStreams ~= 0 then

radioStreams = radioStreams - 1

end

end

end

end

)

addEvent("onPlayerToggleRadio", true)

addEventHandler("onPlayerToggleRadio", root,

function()

if source and getElementType(source) == "player" then

if ( isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( source ) ), aclGetGroup ( "Admin" ) ) ) then

toggleRadio(source)

else

outputChatBox ( "You can't use this command, Only admin can", p, 255, 0, 0 )

end

end

end

)

function toggleRadio(player)

local veh = getPedOccupiedVehicle(player)

if veh then

local occupants = getVehicleOccupants(veh)

local seats = getVehicleMaxPassengers(veh)

local playerSeat = getPedOccupiedVehicleSeat(player)

if playerSeat ~= 0 and playerSeat ~= 1 then

outputChatBox("You can't switch the radio.", player, 255, 255, 255)

return

end

if g_VehicleList[veh] == nil then

g_VehicleList[veh] = { }

g_VehicleList[veh].radio = false

g_VehicleList[veh].radioStation = defaultRadio

g_VehicleList[veh].volume = 50.0

end

if g_VehicleList[veh].radio == false then

if not get("toggleAntifloodTick") or not get("streamLimit") or not get("radioEnabledIdleTime") then return end

local settingToggleAntifloodTick = get("toggleAntifloodTick")

local settingStreamLimit = get("streamLimit")

local idleTime = get("radioEnabledIdleTime")

if g_VehicleList[veh].lastTick and (getTickCount() - g_VehicleList[veh].lastTick) <= settingToggleAntifloodTick then return end

if radioStreams >= settingStreamLimit then

outputChatBox("The limit of streams has reached (" .. settingStreamLimit .. ")", player, 255, 255, 255)

return

end

local x, y, z = getElementPosition(veh)

g_VehicleList[veh].radio = true

g_VehicleList[veh].lastTick = getTickCount()

g_VehicleList[veh].turnedOnBy = getPlayerName(player)

g_VehicleList[veh].radioMarker = createMarker(x, y, z, "corona", 0.05, 255, 0, 0)

attachElements(g_VehicleList[veh].radioMarker, veh)

g_VehicleList[veh].idleTimer = setTimer(radioIdleTimer, idleTime, 0, veh)

radioStreams = radioStreams + 1

outputServerLog(getPlayerName(player) .. " has turned the radio on in his vehicle (streams: " .. radioStreams .. ")")

for seat = 0, seats do

local occupant = occupants[seat]

if occupant and getElementType(occupant) == "player" then

triggerClientEvent("onServerToggleRadio", root, true, g_VehicleList[veh].radioStation, veh, g_VehicleList[veh].volume)

local r, g, b = getPlayerNametagColor(player)

colorHex = string.format("%02X%02X%02X", r, g, b)

outputChatBox("#" .. colorHex .. "" .. getPlayerName(player) .. " #FFFFFFhas just turned the radio on.", occupant, 0, 0, 0, true)

end

end

else

g_VehicleList[veh].radio = false

destroyElement(g_VehicleList[veh].radioMarker)

killTimer(g_VehicleList[veh].idleTimer)

radioStreams = radioStreams - 1

outputServerLog(getPlayerName(player) .. " has turned the radio off in his vehicle (streams: " .. radioStreams .. ")")

for seat = 0, seats do

local occupant = occupants[seat]

if occupant and getElementType(occupant) == "player" then

triggerClientEvent("onServerToggleRadio", root, false, nil, veh, g_VehicleList[veh].volume)

local r, g, b = getPlayerNametagColor(player)

colorHex = string.format("%02X%02X%02X", r, g, b)

outputChatBox("#" .. colorHex .. "" .. getPlayerName(player) .. " #FFFFFFhas just turned the radio off.", occupant, 0, 0, 0, true)

end

end

end

end

end

function radioIdleTimer(veh)

if not get("radioIdlePlayerDistanceCheck") then return end

local settingDist = get("radioIdlePlayerDistanceCheck")

if veh then

if g_VehicleList[veh] ~= nil then

if g_VehicleList[veh].radio == true then

local playerInRange = false

local vx, vy, vz = getElementPosition(veh)

for i,player in ipairs(getElementsByType("player")) do

local px, py, pz = getElementPosition(player)

local distance = getDistanceBetweenPoints3D(vx, vy, vz, px, py, pz)

if distance ~= false and distance < settingDist then

playerInRange = true

end

end

if playerInRange == false then

triggerClientEvent("onServerToggleRadio", root, false, nil, veh)

g_VehicleList[veh].radio = false

destroyElement(g_VehicleList[veh].radioMarker)

killTimer(g_VehicleList[veh].idleTimer)

if radioStreams ~= 0 then

radioStreams = radioStreams - 1

end

outputServerLog("An " .. getVehicleName(veh) .. "'s radio has been idled (streams: " .. radioStreams .. ")")

end

end

end

end

end

addEvent("onPlayerRadioVolumeChange", true)

addEventHandler("onPlayerRadioVolumeChange", root,

function(currentVol, volumeUp)

local veh = getPedOccupiedVehicle(source)

if veh then

local playerSeat = getPedOccupiedVehicleSeat(source)

if playerSeat == 0 or playerSeat == 1 then

if volumeUp == true then

g_VehicleList[veh].volume = currentVol + 0.20

if g_VehicleList[veh].volume >= 50.00 then

g_VehicleList[veh].volume = 50.00

end

else

g_VehicleList[veh].volume = currentVol - 0.20

if g_VehicleList[veh].volume <= 50.00 then

g_VehicleList[veh].volume = 50.00

end

end

triggerClientEvent("onServerVolumeChangeAccept", root, veh, g_VehicleList[veh].volume)

end

end

end

)

function cmdChangeRadioURL(source, commandName, url)

if not url then

outputChatBox("Usage: /setradio newurl", source, 255, 255, 255)

return

end

local veh = getPedOccupiedVehicle(source)

if veh then

local occupants = getVehicleOccupants(veh)

local seats = getVehicleMaxPassengers(veh)

if g_VehicleList[veh] == nil then

local x, y, z = getElementPosition(veh)

g_VehicleList[veh] = { }

g_VehicleList[veh].radio = true

g_VehicleList[veh].lastTick = getTickCount()

g_VehicleList[veh].radioStation = defaultRadio

g_VehicleList[veh].volume = 50.0

g_VehicleList[veh].radioMarker = createMarker(x, y, z, "corona", 0.1, 255, 0, 0)

attachElements(g_VehicleList[veh].radioMarker, veh)

g_VehicleList[veh].idleTimer = setTimer(radioIdleTimer, idleTime, 0, veh)

end

local playerSeat = getPedOccupiedVehicleSeat(source)

if playerSeat ~= 0 and playerSeat ~= 1 then

outputChatBox("You can't switch the radio station URL.", source, 255, 255, 255)

return

end

for seat = 0, seats do

local occupant = occupants[seat]

if occupant and getElementType(occupant) == "player" then

g_VehicleList[veh].radioStation = url

g_VehicleList[veh].changedBy = getPlayerName(source)

if g_VehicleList[veh].radio == true then

triggerClientEvent("onServerRadioURLChange", root, g_VehicleList[veh].radioStation, veh, g_VehicleList[veh].volume)

end

local r, g, b = getPlayerNametagColor(source)

colorHex = string.format("%02X%02X%02X", r, g, b)

outputChatBox("#" .. colorHex .. "" .. getPlayerName(source) .. " #FFFFFFhas changed the radio station.", occupant, 0, 0, 0, true)

outputConsole(getPlayerName(source) .. " has changed the radio station on his vehicle to: " .. url, occupant)

end

end

outputServerLog(getPlayerName(source) .. " has changed the radio station on his vehicle to: " .. url)

end

end

function cmdDumpVehRadioInfo(source, commandName)

for i,veh in ipairs(getElementsByType("vehicle")) do

if g_VehicleList[veh] ~= nil then

if g_VehicleList[veh].radio == true then

local strOut

if g_VehicleList[veh].changedBy ~= nil then

strOut = "Vehicle: " .. getVehicleName(veh) .. ", URL = " .. g_VehicleList[veh].radioStation .. ", Turned on by: " .. g_VehicleList[veh].turnedOnBy .. ", URL changed by: " .. g_VehicleList[veh].changedBy

else

strOut = "Vehicle: " .. getVehicleName(veh) .. ", URL = " .. g_VehicleList[veh].radioStation .. ", Turned on by: " .. g_VehicleList[veh].turnedOnBy

end

if getElementType(source) == "console" then

outputServerLog(strOut)

elseif getElementType(source) == "player" then

outputChatBox(strOut, source, 255, 255, 255)

end

end

end

end

end

addCommandHandler("setradio", cmdChangeRadioURL)

addCommandHandler("dumpradio", cmdDumpVehRadioInfo)

Bestand: cVehRadio3D.lua

radioSound = { }

addEventHandler("onClientResourceStart", resourceRoot,

function()

bindKey("n", "down", clientToggleRadio)

bindKey("mouse_wheel_up", "down", volumeUp)

bindKey("mouse_wheel_down", "down", volumeDown)

end

)

addEventHandler("onClientVehicleEnter", root,

function(thePlayer, seat)

if thePlayer == getLocalPlayer() then

local msg = ""

if radioSound[source] == nil then

outputChatBox(msg, 255, 255, 255)

else

if radioSound[source].soundElement == nil then

outputChatBox(msg, 255, 255, 255)

end

end

end

end

)

addEventHandler("onClientSoundStream", root,

function(success, length, streamName)

if streamName then

local veh = getPedOccupiedVehicle(getLocalPlayer())

if veh then

if radioSound[veh] == nil then return end

if radioSound[veh].soundElement == source then

outputChatBox("#FFFFFFRadio stream: #22AA22 " .. streamName, 0, 0, 0, true)

end

end

end

end

)

addEventHandler("onClientSoundChangedMeta", root,

function(streamTitle)

if streamTitle then

local veh = getPedOccupiedVehicle(getLocalPlayer())

if veh then

if radioSound[veh] == nil then return end

if radioSound[veh].soundElement == source then

outputChatBox("#FFFFFFRadio meta: #AA2222 " .. streamTitle, 0, 0, 0, true)

end

end

end

end

)

addEvent("onServerToggleRadio", true)

addEventHandler("onServerToggleRadio", getLocalPlayer(),

function(toggle, url, veh, volume)

if not isElement(veh) then

if radioSound[veh] ~= nil then

stopSound(radioSound[veh].soundElement)

radioSound[veh].soundElement = nil

end

return

end

if toggle == true then

local x, y, z = getElementPosition(veh)

if radioSound[veh] ~= nil then

stopSound(radioSound[veh].soundElement)

local sound = playSound3D(url, x, y, z)

if volume ~= nil then

setSoundVolume(sound, volume)

end

setSoundMinDistance(sound, 0.1)

setSoundMaxDistance(sound, 100.0)

attachElements(sound, veh)

radioSound[veh] = { }

radioSound[veh].soundElement = sound

else

local sound = playSound3D(url, x, y, z)

if volume ~= nil then

setSoundVolume(sound, volume)

end

setSoundMinDistance(sound, 0.1)

setSoundMaxDistance(sound, 100.0)

attachElements(sound, veh)

radioSound[veh] = { }

radioSound[veh].soundElement = sound

end

else

if radioSound[veh] ~= nil then

stopSound(radioSound[veh].soundElement)

radioSound[veh].soundElement = nil

end

end

end

)

addEvent("onServerRadioURLChange", true)

addEventHandler("onServerRadioURLChange", getLocalPlayer(),

function(newurl, veh, volume)

if radioSound[veh] ~= nil then

stopSound(radioSound[veh].soundElement)

local x, y, z = getElementPosition(veh)

local sound = playSound3D(newurl, x, y, z)

if volume ~= nil then

setSoundVolume(sound, volume)

end

setSoundMinDistance(radioSound, 0.1)

setSoundMaxDistance(radioSound, 100.0)

attachElements(sound, veh)

radioSound[veh] = { }

radioSound[veh].soundElement = sound

end

end

)

addEvent("onServerVolumeChangeAccept", true)

addEventHandler("onServerVolumeChangeAccept", getLocalPlayer(),

function(veh, newVolume)

if veh then

if radioSound[veh] ~= nil then

setSoundVolume(radioSound[veh].soundElement, newVolume)

end

end

end

)

function clientToggleRadio()

triggerServerEvent("onPlayerToggleRadio", getLocalPlayer())

end

function volumeUp()

local veh = getPedOccupiedVehicle(getLocalPlayer())

if veh then

if radioSound[veh] ~= nil then

local volume = getSoundVolume(radioSound[veh].soundElement)

if volume ~= false then

triggerServerEvent("onPlayerRadioVolumeChange", getLocalPlayer(), volume, true)

end

end

end

end

function volumeDown()

local veh = getPedOccupiedVehicle(getLocalPlayer())

if veh then

if radioSound[veh] ~= nil then

local volume = getSoundVolume(radioSound[veh].soundElement)

if volume ~= false then

triggerServerEvent("onPlayerRadioVolumeChange", getLocalPlayer(), volume, false)

end

end

end

end

Groetjes wesley

Link to comment
  • Moderators

lees de syntax ff door,

element playSound3D ( string soundPath, float x, float y, float z, [ bool looped = false ] ) 

local sound = playSound3D(newurl, x, y, z) -- 1 x 
local sound = playSound3D(newurl, x, y, z,true)-- herhalend tot het geluid word verwijderd. 
  

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...