Jump to content

[HELP] Voice Chat problem


DreaM40BG

Recommended Posts

Hello dear MTA:SA players,

Everything is OK with the voice chat except unmuting when reconnect (I tried with OnPlayerLogin but I couldn't do it successfully) and how to add mute duration? Also, how to make something like if players are talking only players near them to hear and for aclcheck for example "ChatControl" can talk to all the players on all the map?

sPlayerMuting.Lua

if isVoiceEnabled() then
	function setPlayerVoiceMuted ( player, muted )
		if not checkValidPlayer ( player ) then return false end
		muted = not not muted or nil
		globalMuted[player] = muted
		return setPlayerVoiceBroadcastTo ( player, (not muted) and root or nil )
	end

	function isPlayerVoiceMuted ( player )
		if not checkValidPlayer ( player ) then return false end
		return not not globalMuted[player]
	end

	--Returns a list of players of which have muted the specified player
	function getPlayerVoiceMutedByList ( player )
		if not checkValidPlayer ( player ) then return false end
		return tableToArray(mutedBy[player] or {})
	end

	function updateMuted ( player )
		setPlayerVoiceIgnoreFrom ( player, getPlayerVoiceMutedByList ( player ) )
	end


	function addPlayerMutedBy ()
		mutedBy[client] = mutedBy[client] or {}
		mutedBy[client][source] = true
		updateMuted ( client )
	end
	addEventHandler ( "voice_mutePlayerForPlayer", root, addPlayerMutedBy )

	function removePlayerMutedBy ()
		if mutedBy[client] then
			mutedBy[client][source] = nil
			--Refresh the player
			updateMuted ( client )
		end
	end
	addEventHandler ( "voice_unmutePlayerForPlayer", root, removePlayerMutedBy )

	function addPlayerMutedByTable (players) --Single packet for multiple muted players
		for i,player in ipairs(players) do
			source = player
			addPlayerMutedBy()
		end
	end
	addEventHandler ( "voice_muteTableForPlayer", root, addPlayerMutedByTable )

	addEventHandler ( "onPlayerQuit", root,
		function()
			mutedBy[source] = nil
			globalMuted[source] = nil
		end
	)
else
	setPlayerVoiceMuted = outputVoiceNotLoaded
	isPlayerVoiceMuted = outputVoiceNotLoaded
	getPlayerVoiceMutedByList = outputVoiceNotLoaded
end

-- Functions for backward compatibility only
-- DO NOT USE THESE AS THEY WILL BE REMOVED IN A LITTLE WHILE --
function isPlayerMuted ( player )			return isPlayerVoiceMuted ( player ) end
function setPlayerMuted ( player, muted )	return setPlayerVoiceMuted ( player, muted ) end
function getPlayerMutedByList ( player )	return getPlayerVoiceMutedByList ( player ) end
-- DO NOT USE THESE AS THEY WILL BE REMOVED IN A LITTLE WHILE --

addCommandHandler("vmute", function(player, cmd, targetname)
    local accName = getAccountName ( getPlayerAccount ( player ) )
     if isObjectInACLGroup ("user."..accName, aclGetGroup ( "ChatControl" ) ) then
	local target = getPlayerFromPartialName(targetname)
	if not target then return outputChatBox("[DIXIKLO-Servers] * Player not found! ("..targetname..")", player) end
	
	setPlayerVoiceMuted(target, true)
	outputChatBox("[DIXIKLO-Servers] An administrator has muted "..targetname.."", player)
	end
end)

addCommandHandler("vunmute", function(player, cmd, targetname)
    local accName = getAccountName ( getPlayerAccount ( player ) )
     if isObjectInACLGroup ("user."..accName, aclGetGroup ( "ChatControl" ) ) then
	local target = getPlayerFromPartialName(targetname)
	if not target then return outputChatBox("[DIXIKLO-Servers]  Player not found! "..targetname.."", player) end
	
	setPlayerVoiceMuted(target, false)
	outputChatBox("[DIXIKLO-Servers] An administrator has unmuted "..targetname.."", player)
	end
end)

-- https://wiki.multitheftauto.com/wiki/GetPlayerFromPartialName
function getPlayerFromPartialName(name)
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil
    if name then
        for _, player in ipairs(getElementsByType("player")) do
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower()
            if name_:find(name, 1, true) then
                return player
            end
        end
    end
end

All the scripts: https://drive.google.com/file/d/1MgkDtkhr5dKaMZqx3iTTZeA1fLSPehA9/view?usp=sharing

 

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