Jump to content

[HELP] LocalChat !


Recommended Posts

local chat_range=25
  
function isPlayerInRangeOfPoint(player,x,y,z,range) 
   local px,py,pz=getElementPosition(player) 
   return ((x-px)^2+(y-py)^2+(z-pz)^2)^0.5<=range 
end 
  
function onChat(player,_,...) 
  local px,py,pz=getElementPosition(player) 
  local msg = table.concat({...}, " ") 
  local nick=getPlayerName(player) 
local r,g,b = getTeamColor(getPlayerTeam(player)) 
  for _,v in ipairs(getElementsByType("player")) do 
    if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then 
      outputChatBox("#838B83[ #FFFF00вcɢ ʟᴏᴄᴀʟ #838B83] "..nick..": #FFFF00"..msg,v,r,g,b,true) 
    end 
  end 
end 
addCommandHandler(onChat)

 [PT-BR] Salve Comunidade do MTA, Então estou tendo um probleminha no meu chat local que é o seguinte: Queria que essa mensagem do outputChatBox fosse mandada no say, com uma distancia para servir como chat local, Não manjo muito de programação e venho aqui pedir uma ajuda de vcs! Recalculando: Chat local no no "t"(say) com uma distancia que ja esta no codigo para servir de chat local TMJ!

Link to comment
addEventHandler("onPlayerChat", getRootElement(), function(message)
	cancelEvent()
        
    local x, y, z = getElementPosition(source)
    local radius = createColSphere(x, y, z, 15)
    local nearPlayers = getElementsWithinColShape(radius, "player")
    destroyElement(radius)
        
    for _, player in ipairs(nearPlayers) do
        if getElementDimension(player) == getElementDimension(source) then
            outputChatBox("#838B83[ #FFFF00вcɢ ʟᴏᴄᴀʟ #838B83]"..getPlayerName(source).."#FFFF00 : "..message, player, 255, 255, 255, true)
        end
    end
end)

 

Arrumei o codigo está certo ?

Edited by joaolamar
Link to comment
  • Moderators
7 hours ago, joaolamar said:

addEventHandler("onPlayerChat", getRootElement(), function(message)
	cancelEvent()
        
    local x, y, z = getElementPosition(source)
    local radius = createColSphere(x, y, z, 15)
    local nearPlayers = getElementsWithinColShape(radius, "player")
    destroyElement(radius)
        
    for _, player in ipairs(nearPlayers) do
        if getElementDimension(player) == getElementDimension(source) then
            outputChatBox("#838B83[ #FFFF00вcɢ ʟᴏᴄᴀʟ #838B83]"..getPlayerName(source).."#FFFF00 : "..message, player, 255, 255, 255, true)
        end
    end
end)

 

Arrumei o codigo está certo ?

Falta verificar se a mensagem é do comando say, e em vez de criar um elemento de colisão, sugiro utilizar a função getDistanceBetweenPoints3D.

Talvez seja este mesmo resource que você está procurando:

https://community.multitheftauto.com/index.php?p=resources&s=details&id=2801

Se não for, imagino que seja isto:

local chatRadius = 20

addEventHandler( "onPlayerChat", root, function (message, messageType)
	if messageType == 0 then
		local x,y,z = getElementPosition(source)
		
		cancelEvent()

		for i,player in ipairs(getElementsByType("player")) do
			local npx, npy, npz = getElementPosition(player)
			if getDistanceBetweenPoints3D(x,y,z, npx,npy,npz) <= chatRadius then
				outputChatBox("#838B83[ #FFFF00вcɢ ʟᴏᴄᴀʟ #838B83]"..getPlayerName(source).."#FFFF00 : #ffffff"..message, player, 255, 255, 255, true)
			end
		end
	end
end )

 

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