sNacks Posted September 26, 2020 Share Posted September 26, 2020 Hola , estoy creando la función de que el say tome el nombre de cuenta de un jugador , para evitar que se vea el nick puesto por consola.. (nose si me explique bien, el nombre que se lee en el chat sea el nombre de la cuenta) tal como a su vez le agregue la función de que cada 40metros de distancia ya no puedan leerlo los demas... los players que se encuentren dentro de ese rango puedan leer el mensaje tranquilamente. addEventHandler ( "onPlayerChat", root, function ( msg, msgType ) local accountName = getAccountName ( getPlayerAccount ( source ) ) local r, g, b = getPlayerNametagColor ( source ) local radius = createColSphere(x, y, z, 40) -- aquí asigne los 40 metros local nearPlayers = getElementsWithinColShape(radius, "player") destroyElement(radius) if ( msgType == 0 ) then outputChatBox( accountName ..": #FFFFFF".. msg, root, r, g, b, true ) elseif ( msgType == 1 ) then outputChatBox( "* ".. accountName .." ".. msg, root, 255, 0, 255, true ) elseif ( msgType == 2 and getPlayerTeam ( source ) ) then for index, player in ipairs ( getPlayersInTeam ( getPlayerTeam ( source ) ) ) do outputChatBox( "(TEAM) ".. accountName ..": #FFFFFF".. msg, player, r, g, b, true ) end end cancelEvent ( ) end ) que es lo que estoy haciendo mal ? Link to comment
#Dv^ Posted September 28, 2020 Share Posted September 28, 2020 (edited) No es necesario que crees un colshape para obtener a los jugadores dentro del él. Puedes usar getDistanceBetweenPoints3D para calcular la distancia y poner una condicional con ello. En el evento onPlayerChat, si miras su primer ejemplo puedes observar como está estructurado así, con lo mismo que buscas..., a excepción de que quieres poner la cuenta de la persona de quien manda el mensaje. Te recomendaría poner una condicional o "or" respecto a getAccountName, debido a que te puede retorna false si el jugador tiene una cuenta invitado. Lo mismo con getPlayerTeam, podría darte error si el jugador no está en un equipo y por lo tanto el "pairs" no podrá hacer bucle con la tabla que no existe. Edited September 28, 2020 by #Dv^ Link to comment
error403 ツ Posted September 28, 2020 Share Posted September 28, 2020 (edited) if msgType == 0 then -- Se obtiene la posicion del jugador local X, Y, Z = getElementPosition(source) for i, Jugador in ipairs(getElementsByType("player")) do -- Se chequea si el jugador está a una distancia de 15 if getDistanceBetweenPoints3D(X, Y, Z, getElementPosition(Jugador)) <= 15 then -- Se muestra el mensaje outputChatBox("#FF0000[#FF7D00Say#FF0000] #FFFFFF"..getAccountName(getPlayerAccount(source)) or getPlayerName(source)..":#FFFFFF"..msg, Jugador, 211, 211, 211, true) end end end Espero que esto te sirva de guia. Edited September 28, 2020 by _.:illus!on:._ Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now