Jump to content

Radio, ERRO - HELP


dsmatias

Recommended Posts

radioSound = { }



addEventHandler("onClientResourceStart", resourceRoot,

	function()

		bindKey("r", "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 = "Aperte 'R' para ligar a Radio. Bom Jogo #EquipeDSVirtual"

			if radioSound[source] == nil then

				outputChatBox(msg, 124, 252, 0)

			else

				if radioSound[source].soundElement == nil then

					outputChatBox(msg, 124, 252, 0)

				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("#696969Rádio: #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("#696969Música: #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, 6.0)

				setSoundMaxDistance(sound, 25.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, 6.0)

				setSoundMaxDistance(sound, 25.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, 6.)

			setSoundMaxDistance(radioSound, 25.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
g_VehicleList = {}



local radioStreams = 0

local defaultRadio = "http://172.82.128.10:19342/Principal"

local defaultRadio = "http://172.82.128.10:19342/Principal"



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 = 1.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

			toggleRadio(source)

		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 = 1.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) .. " #696969Rádio: [#00ff00ON#696969]", 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) .. " #696969Rádio: [#ff0000OFF#696969]", 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.05

					if g_VehicleList[veh].volume >= 1.00 then

						g_VehicleList[veh].volume = 1.00

					end

				else

					g_VehicleList[veh].volume = currentVol - 0.05

					if g_VehicleList[veh].volume <= 0.00 then

						g_VehicleList[veh].volume = 0.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 = 1.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)
<meta>

	<info author="EquipeDS" description="Vehicle radio 3D resource" type="script" version="1.2.0" />

	

	<script src="sVehRadio3D.lua" />

	<script src="cVehRadio3D.lua" type="client" />

	

	<settings>

		<setting name="*streamLimit" value="[4]" />

		<setting name="*toggleAntifloodTick" value="[2000]" />

		<setting name="*radioEnabledIdleTime" value="[60000]" />

		<setting name="*radioIdlePlayerDistanceCheck" value="[100.00]" />

	</settings>

</meta>

Can anyone check if you have a problem with my radio?

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...