wd
This commit is contained in:
		
							parent
							
								
									307f4c0d90
								
							
						
					
					
						commit
						1c16382e41
					
				
					 10 changed files with 307 additions and 2 deletions
				
			
		
							
								
								
									
										21
									
								
								resources/[tools]/interact-sound/LICENSE
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								resources/[tools]/interact-sound/LICENSE
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
MIT License
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2017 Scott Plunkett
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
SOFTWARE.
 | 
			
		||||
							
								
								
									
										3
									
								
								resources/[tools]/interact-sound/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								resources/[tools]/interact-sound/README.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
# Interact Sound
 | 
			
		||||
 | 
			
		||||
Play sounds using the NUI environment in FiveM's FXServer.
 | 
			
		||||
							
								
								
									
										25
									
								
								resources/[tools]/interact-sound/client/html/index.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								resources/[tools]/interact-sound/client/html/index.html
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
        <!-- Need to include jQuery! -->
 | 
			
		||||
        <script src="nui://game/ui/jquery.js" type="text/javascript"></script>
 | 
			
		||||
        <script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.1/howler.min.js" type="text/javascript"></script>
 | 
			
		||||
        <script>
 | 
			
		||||
            var audioPlayer = null;
 | 
			
		||||
            // Listen for NUI Messages.
 | 
			
		||||
            window.addEventListener('message', function(event) {
 | 
			
		||||
                // Check for playSound transaction
 | 
			
		||||
                if (event.data.transactionType == "playSound") {
 | 
			
		||||
				
 | 
			
		||||
                  if (audioPlayer != null) {
 | 
			
		||||
                    audioPlayer.pause();
 | 
			
		||||
                  }
 | 
			
		||||
 | 
			
		||||
                  audioPlayer = new Howl({src: ["./sounds/" + event.data.transactionFile + ".ogg"]});
 | 
			
		||||
                  audioPlayer.volume(event.data.transactionVolume);
 | 
			
		||||
                  audioPlayer.play();
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        </script>
 | 
			
		||||
    </head>
 | 
			
		||||
</html>
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										92
									
								
								resources/[tools]/interact-sound/client/main.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								resources/[tools]/interact-sound/client/main.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,92 @@
 | 
			
		|||
 | 
			
		||||
------
 | 
			
		||||
-- InteractionSound by Scott
 | 
			
		||||
-- Version: v0.0.1
 | 
			
		||||
-- Path: client/main.lua
 | 
			
		||||
--
 | 
			
		||||
-- Allows sounds to be played on single clients, all clients, or all clients within
 | 
			
		||||
-- a specific range from the entity to which the sound has been created.
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
local standardVolumeOutput = 0.3;
 | 
			
		||||
local hasPlayerLoaded = false
 | 
			
		||||
Citizen.CreateThread(function()
 | 
			
		||||
	Wait(15000)
 | 
			
		||||
	hasPlayerLoaded = true
 | 
			
		||||
end)
 | 
			
		||||
------
 | 
			
		||||
-- RegisterNetEvent LIFE_CL:Sound:PlayOnOne
 | 
			
		||||
--
 | 
			
		||||
-- @param soundFile    - The name of the soundfile within the client/html/sounds/ folder.
 | 
			
		||||
--                     - Can also specify a folder/sound file.
 | 
			
		||||
-- @param soundVolume  - The volume at which the soundFile should be played. Nil or don't
 | 
			
		||||
--                     - provide it for the default of standardVolumeOutput. Should be between
 | 
			
		||||
--                     - 0.1 to 1.0.
 | 
			
		||||
--
 | 
			
		||||
-- Starts playing a sound locally on a single client.
 | 
			
		||||
------
 | 
			
		||||
RegisterNetEvent('InteractSound_CL:PlayOnOne')
 | 
			
		||||
AddEventHandler('InteractSound_CL:PlayOnOne', function(soundFile, soundVolume)
 | 
			
		||||
    if hasPlayerLoaded then
 | 
			
		||||
        SendNUIMessage({
 | 
			
		||||
            transactionType = 'playSound',
 | 
			
		||||
            transactionFile  = soundFile,
 | 
			
		||||
            transactionVolume = soundVolume
 | 
			
		||||
        })
 | 
			
		||||
    end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
------
 | 
			
		||||
-- RegisterNetEvent LIFE_CL:Sound:PlayOnAll
 | 
			
		||||
--
 | 
			
		||||
-- @param soundFile    - The name of the soundfile within the client/html/sounds/ folder.
 | 
			
		||||
--                     - Can also specify a folder/sound file.
 | 
			
		||||
-- @param soundVolume  - The volume at which the soundFile should be played. Nil or don't
 | 
			
		||||
--                     - provide it for the default of standardVolumeOutput. Should be between
 | 
			
		||||
--                     - 0.1 to 1.0.
 | 
			
		||||
--
 | 
			
		||||
-- Starts playing a sound on all clients who are online in the server.
 | 
			
		||||
------
 | 
			
		||||
RegisterNetEvent('InteractSound_CL:PlayOnAll')
 | 
			
		||||
AddEventHandler('InteractSound_CL:PlayOnAll', function(soundFile, soundVolume)
 | 
			
		||||
    if hasPlayerLoaded then
 | 
			
		||||
        SendNUIMessage({
 | 
			
		||||
            transactionType = 'playSound',
 | 
			
		||||
            transactionFile = soundFile,
 | 
			
		||||
            transactionVolume = soundVolume or standardVolumeOutput
 | 
			
		||||
        })
 | 
			
		||||
    end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
------
 | 
			
		||||
-- RegisterNetEvent LIFE_CL:Sound:PlayWithinDistance
 | 
			
		||||
--
 | 
			
		||||
-- @param playOnEntity    - The entity network id (will be converted from net id to entity on client)
 | 
			
		||||
--                        - of the entity for which the max distance is to be drawn from.
 | 
			
		||||
-- @param maxDistance     - The maximum float distance (client uses Vdist) to allow the player to
 | 
			
		||||
--                        - hear the soundFile being played.
 | 
			
		||||
-- @param soundFile       - The name of the soundfile within the client/html/sounds/ folder.
 | 
			
		||||
--                        - Can also specify a folder/sound file.
 | 
			
		||||
-- @param soundVolume     - The volume at which the soundFile should be played. Nil or don't
 | 
			
		||||
--                        - provide it for the default of standardVolumeOutput. Should be between
 | 
			
		||||
--                        - 0.1 to 1.0.
 | 
			
		||||
--
 | 
			
		||||
-- Starts playing a sound on a client if the client is within the specificed maxDistance from the playOnEntity.
 | 
			
		||||
-- @TODO Change sound volume based on the distance the player is away from the playOnEntity.
 | 
			
		||||
------
 | 
			
		||||
RegisterNetEvent('InteractSound_CL:PlayWithinDistance')
 | 
			
		||||
AddEventHandler('InteractSound_CL:PlayWithinDistance', function(otherPlayerCoords, maxDistance, soundFile, soundVolume)
 | 
			
		||||
	if hasPlayerLoaded then
 | 
			
		||||
		local myCoords = GetEntityCoords(PlayerPedId())
 | 
			
		||||
		local distance = #(myCoords - otherPlayerCoords)
 | 
			
		||||
 | 
			
		||||
		if distance < maxDistance then
 | 
			
		||||
			SendNUIMessage({
 | 
			
		||||
				transactionType = 'playSound',
 | 
			
		||||
				transactionFile  = soundFile,
 | 
			
		||||
				transactionVolume = soundVolume or standardVolumeOutput
 | 
			
		||||
			})
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								resources/[tools]/interact-sound/fxmanifest.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								resources/[tools]/interact-sound/fxmanifest.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
-- FXVersion Version
 | 
			
		||||
fx_version 'adamant'
 | 
			
		||||
games {"rdr3","gta5"}
 | 
			
		||||
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'
 | 
			
		||||
 | 
			
		||||
-- Client Scripts
 | 
			
		||||
client_script 'client/main.lua'
 | 
			
		||||
 | 
			
		||||
-- Server Scripts
 | 
			
		||||
server_script 'server/main.lua'
 | 
			
		||||
 | 
			
		||||
-- NUI Default Page
 | 
			
		||||
ui_page "client/html/index.html"
 | 
			
		||||
 | 
			
		||||
-- Files needed for NUI
 | 
			
		||||
-- DON'T FORGET TO ADD THE SOUND FILES TO THIS!
 | 
			
		||||
files {
 | 
			
		||||
    'client/html/index.html',
 | 
			
		||||
    -- Begin Sound Files Here...
 | 
			
		||||
    -- client/html/sounds/ ... .ogg
 | 
			
		||||
    'client/html/sounds/demo.ogg'
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										102
									
								
								resources/[tools]/interact-sound/server/main.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								resources/[tools]/interact-sound/server/main.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,102 @@
 | 
			
		|||
 | 
			
		||||
------
 | 
			
		||||
-- Interaction Sounds by Scott
 | 
			
		||||
-- Version: v0.0.1
 | 
			
		||||
-- Path: server/main.lua
 | 
			
		||||
--
 | 
			
		||||
-- Allows sounds to be played on single clients, all clients, or all clients within
 | 
			
		||||
-- a specific range from the entity to which the sound has been created. Triggers
 | 
			
		||||
-- client events only. Used to trigger sounds on other clients from the client or
 | 
			
		||||
-- server without having to pass directly to another client.
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
------
 | 
			
		||||
-- RegisterServerEvent InteractSound_SV:PlayOnOne
 | 
			
		||||
-- Triggers -> ClientEvent InteractSound_CL:PlayOnOne
 | 
			
		||||
--
 | 
			
		||||
-- @param clientNetId  - The network id of the client that the sound should be played on.
 | 
			
		||||
-- @param soundFile    - The name of the soundfile within the client/html/sounds/ folder.
 | 
			
		||||
--                     - Can also specify a folder/sound file.
 | 
			
		||||
-- @param soundVolume  - The volume at which the soundFile should be played. Nil or don't
 | 
			
		||||
--                     - provide it for the default of standardVolumeOutput. Should be between
 | 
			
		||||
--                     - 0.1 to 1.0.
 | 
			
		||||
--                     - Can also specify a folder/sound file.
 | 
			
		||||
--
 | 
			
		||||
-- Starts playing a sound locally on a single client.
 | 
			
		||||
------
 | 
			
		||||
RegisterNetEvent('InteractSound_SV:PlayOnOne')
 | 
			
		||||
AddEventHandler('InteractSound_SV:PlayOnOne', function(clientNetId, soundFile, soundVolume)
 | 
			
		||||
    TriggerClientEvent('InteractSound_CL:PlayOnOne', clientNetId, soundFile, soundVolume)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
------
 | 
			
		||||
-- RegisterServerEvent InteractSound_SV:PlayOnSource
 | 
			
		||||
-- Triggers -> ClientEvent InteractSound_CL:PlayOnSource
 | 
			
		||||
--
 | 
			
		||||
-- @param soundFile    - The name of the soundfile within the client/html/sounds/ folder.
 | 
			
		||||
--                     - Can also specify a folder/sound file.
 | 
			
		||||
-- @param soundVolume  - The volume at which the soundFile should be played. Nil or don't
 | 
			
		||||
--                     - provide it for the default of standardVolumeOutput. Should be between
 | 
			
		||||
--                     - 0.1 to 1.0.
 | 
			
		||||
--                     - Can also specify a folder/sound file.
 | 
			
		||||
--
 | 
			
		||||
-- Starts playing a sound locally on a single client, which is the source of the event.
 | 
			
		||||
------
 | 
			
		||||
RegisterNetEvent('InteractSound_SV:PlayOnSource')
 | 
			
		||||
AddEventHandler('InteractSound_SV:PlayOnSource', function(soundFile, soundVolume)
 | 
			
		||||
    TriggerClientEvent('InteractSound_CL:PlayOnOne', source, soundFile, soundVolume)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
------
 | 
			
		||||
-- RegisterServerEvent InteractSound_SV:PlayOnAll
 | 
			
		||||
-- Triggers -> ClientEvent InteractSound_CL:PlayOnAll
 | 
			
		||||
--
 | 
			
		||||
-- @param soundFile     - The name of the soundfile within the client/html/sounds/ folder.
 | 
			
		||||
--                      - Can also specify a folder/sound file.
 | 
			
		||||
-- @param soundVolume   - The volume at which the soundFile should be played. Nil or don't
 | 
			
		||||
--                      - provide it for the default of standardVolumeOutput. Should be between
 | 
			
		||||
--                      - 0.1 to 1.0.
 | 
			
		||||
--
 | 
			
		||||
-- Starts playing a sound on all clients who are online in the server.
 | 
			
		||||
------
 | 
			
		||||
RegisterNetEvent('InteractSound_SV:PlayOnAll')
 | 
			
		||||
AddEventHandler('InteractSound_SV:PlayOnAll', function(soundFile, soundVolume)
 | 
			
		||||
    TriggerClientEvent('InteractSound_CL:PlayOnAll', -1, soundFile, soundVolume)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
------
 | 
			
		||||
-- RegisterServerEvent InteractSound_SV:PlayWithinDistance
 | 
			
		||||
-- Triggers -> ClientEvent InteractSound_CL:PlayWithinDistance
 | 
			
		||||
--
 | 
			
		||||
-- @param playOnEntity    - The entity network id (will be converted from net id to entity on client)
 | 
			
		||||
--                        - of the entity for which the max distance is to be drawn from.
 | 
			
		||||
-- @param maxDistance     - The maximum float distance (client uses Vdist) to allow the player to
 | 
			
		||||
--                        - hear the soundFile being played.
 | 
			
		||||
-- @param soundFile       - The name of the soundfile within the client/html/sounds/ folder.
 | 
			
		||||
--                        - Can also specify a folder/sound file.
 | 
			
		||||
-- @param soundVolume     - The volume at which the soundFile should be played. Nil or don't
 | 
			
		||||
--                        - provide it for the default of standardVolumeOutput. Should be between
 | 
			
		||||
--                        - 0.1 to 1.0.
 | 
			
		||||
--
 | 
			
		||||
-- Starts playing a sound on a client if the client is within the specificed maxDistance from the playOnEntity.
 | 
			
		||||
-- @TODO Change sound volume based on the distance the player is away from the playOnEntity.
 | 
			
		||||
------
 | 
			
		||||
RegisterNetEvent('InteractSound_SV:PlayWithinDistance')
 | 
			
		||||
AddEventHandler('InteractSound_SV:PlayWithinDistance', function(maxDistance, soundFile, soundVolume)
 | 
			
		||||
  if GetConvar("onesync_enableInfinity", "false") == "true" then
 | 
			
		||||
    TriggerClientEvent('InteractSound_CL:PlayWithinDistanceOS', -1, GetEntityCoords(GetPlayerPed(source)), maxDistance, soundFile, soundVolume)
 | 
			
		||||
  else
 | 
			
		||||
    TriggerClientEvent('InteractSound_CL:PlayWithinDistance', -1, source, maxDistance, soundFile, soundVolume)
 | 
			
		||||
  end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
RegisterNetEvent('InteractSound_SV:PlayWithinDistance')
 | 
			
		||||
AddEventHandler('InteractSound_SV:PlayWithinDistance', function(maxDistance, soundFile, soundVolume)
 | 
			
		||||
    local src = source
 | 
			
		||||
    local DistanceLimit = 300
 | 
			
		||||
    if maxDistance < DistanceLimit then
 | 
			
		||||
	TriggerClientEvent('InteractSound_CL:PlayWithinDistance', -1, GetEntityCoords(GetPlayerPed(src)), maxDistance, soundFile, soundVolume)
 | 
			
		||||
    else
 | 
			
		||||
        print(('[interact-sound] [^3WARNING^7] %s attempted to trigger InteractSound_SV:PlayWithinDistance over the distance limit ' .. DistanceLimit):format(GetPlayerName(src)))
 | 
			
		||||
    end
 | 
			
		||||
end)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue