#Dv^ Posted June 12, 2016 Posted June 12, 2016 Hola! Como puedo hacer que este sistema de MP (Mensaje privado) que se mandan entre un player y otro player puedan verlos solo los staff, es decir que el staff (Admin, Mod,Smod) pueda ver algo así "(Mp) Nick > Zack : Oye, cómo estás?" Pero que solo el staff lo vea, los demás que se manden mp´s normalmente Este es el script del Mp function privateMessage(thePlayer,commandName,sendToName,...) local pmWords = { ... } local pmMessage = table.concat( pmWords, " " ) if sendToName then if (getPlayerFromParticalName (sendToName)) then toPlayer = (getPlayerFromParticalName (sendToName)) if not (toPlayer == thePlayer) then if not (pmMessage == "") then outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: "..getPlayerName(thePlayer).." #2971D5 > #FFFFFF " .. getPlayerName(toPlayer) .. "#FFFFFF: " .. pmMessage, thePlayer, 255, 255, 255, true) outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: "..getPlayerName(thePlayer).." #2971D5 > #FFFFFF " .. getPlayerName(toPlayer) .. "#FFFFFF: " .. pmMessage, toPlayer, 255, 255, 255, true) else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: Sintaxis inválida! Usa:#FFFFFF /pm [nombre del jugador] [mensaje]", thePlayer, 255, 255, 255, true) return false end else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: No te puedes mandar MP a ti mismo#FFFFFF!", thePlayer, 255, 255, 255, true) return false end else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: Jugador no encontrado! #FFFF00(#FFFFFF"..sendToName.."#FFFF00)", thePlayer, 255, 255, 255, true) return false end else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: Sintaxis inválida! Usa:#FFFFFF /mp [nombre del jugador] [mensaje]", thePlayer, 255, 255, 255, true) return false end end addCommandHandler("mp", privateMessage) function getPlayerFromParticalName(thePlayerName) local thePlayer = getPlayerFromName(thePlayerName) if thePlayer then return thePlayer end for _,thePlayer in ipairs(getElementsByType("player")) do if string.find(string.gsub(getPlayerName(thePlayer):lower(),"#%x%x%x%x%x%x", ""), thePlayerName:lower(), 1, true) then return thePlayer end end return false end Se los agradezco!
Tomas Posted June 12, 2016 Posted June 12, 2016 pm_ACL = {"Admin", "SuperModerator", "Moderator"}; function privateMessage(thePlayer,commandName,sendToName,...) local pmWords = { ... } local pmMessage = table.concat( pmWords, " " ) if sendToName then if (getPlayerFromParticalName (sendToName)) then toPlayer = (getPlayerFromParticalName (sendToName)) if not (toPlayer == thePlayer) then if not (pmMessage == "") then outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: "..getPlayerName(thePlayer).." #2971D5 > #FFFFFF " .. getPlayerName(toPlayer) .. "#FFFFFF: " .. pmMessage, thePlayer, 255, 255, 255, true) outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: "..getPlayerName(thePlayer).." #2971D5 > #FFFFFF " .. getPlayerName(toPlayer) .. "#FFFFFF: " .. pmMessage, toPlayer, 255, 255, 255, true) for _, players in ipairs(getElementsByType("player")) do if ( not isGuestAccount(getPlayerAccount(players)) and players ~= toPlayer and players ~= thePlayer ) then for _, aclName in ipairs(pm_ACL) do if ( isObjectInACLGroup("user."..(getAccountName(getPlayerAccount(players))), aclGetGroup(aclName))) then break outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: "..getPlayerName(thePlayer).." #2971D5 > #FFFFFF " .. getPlayerName(toPlayer) .. "#FFFFFF: " .. pmMessage, players, 255, 255, 255, true) end end end end else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: Sintaxis inválida! Usa:#FFFFFF /pm [nombre del jugador] [mensaje]", thePlayer, 255, 255, 255, true) return false end else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: No te puedes mandar MP a ti mismo#FFFFFF!", thePlayer, 255, 255, 255, true) return false end else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: Jugador no encontrado! #FFFF00(#FFFFFF"..sendToName.."#FFFF00)", thePlayer, 255, 255, 255, true) return false end else outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: Sintaxis inválida! Usa:#FFFFFF /mp [nombre del jugador] [mensaje]", thePlayer, 255, 255, 255, true) return false end end addCommandHandler("mp", privateMessage) function getPlayerFromParticalName(thePlayerName) local thePlayer = getPlayerFromName(thePlayerName) if thePlayer then return thePlayer end for _,thePlayer in ipairs(getElementsByType("player")) do if string.find(string.gsub(getPlayerName(thePlayer):lower(),"#%x%x%x%x%x%x", ""), thePlayerName:lower(), 1, true) then return thePlayer end end return false end
#Dv^ Posted June 12, 2016 Author Posted June 12, 2016 Gracias! Pero me sale este problema [00:01:16] ERROR: Loading script failed: mp\pmsystem_server.lua:20: 'end' expe cted (to close 'if' at line 19) near 'outputChatBox'
Enargy, Posted June 12, 2016 Posted June 12, 2016 if ( isObjectInACLGroup("user."..(getAccountName(getPlayerAccount(players))), aclGetGroup(aclName))) then outputChatBox("#2971D5[#4E5861MP#2971D5]#FFFFFF: "..getPlayerName(thePlayer).." #2971D5 > #FFFFFF " .. getPlayerName(toPlayer) .. "#FFFFFF: " .. pmMessage, players, 255, 255, 255, true) break end
#Dv^ Posted June 12, 2016 Author Posted June 12, 2016 (edited) Gracias Gaberiel! El mismo problema tengo con el Local Chat Traté de agregarlo solo para el staff, para quienes hablar por local el staff pueda verlo tambien, por que por local chat solo lo ven los que estan cerca del player que hablar por local, pero me da error y no entiendo por que chat_range=100 addEventHandler("onPlayerJoin",getRootElement(), function () bindKey(source,"u","down","chatbox","Local") end) addEventHandler("onResourceStart",getResourceRootElement(getThisResource()), function () for index, player in pairs(getElementsByType("player")) do bindKey(player,"u","down","chatbox","Local") end end) 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 tag = getElementData(player, "ID") or 0 local r,g,b = getTeamColor(getPlayerTeam(player)) for _,v in ipairs(getElementsByType("player")) do if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then outputChatBox("#00FF00[Local]#cccccc[".. tag .."]#FFFFFF "..nick..": #FFFFFF"..msg,v,r,g,b,true) for _, players in ipairs(getElementsByType("player")) do if ( not isGuestAccount(getPlayerAccount(players)) and players ~= toPlayer and players ~= thePlayer ) then for _, aclName in ipairs(pm_ACL) do if ( isObjectInACLGroup("user."..(getAccountName(getPlayerAccount(players))), aclGetGroup(aclName))) then outputChatBox("Local Staff "..getPlayerName(thePlayer).."#FFFFFF: " .. msg, v, 255, 255, 255, true) break end end end end addCommandHandler("Local",onChat) Edited June 13, 2016 by Guest
Tomas Posted June 12, 2016 Posted June 12, 2016 chat_range=100 addEventHandler("onPlayerJoin",getRootElement(), function () bindKey(source,"u","down","chatbox","Local") end) addEventHandler("onResourceStart",getResourceRootElement(getThisResource()), function () for index, player in pairs(getElementsByType("player")) do bindKey(player,"u","down","chatbox","Local") end end) 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 tag = getElementData(player, "ID") or 0 for _,v in ipairs(getElementsByType("player")) do if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) or isPlayerAdmin(v) then outputChatBox("#00FF00[Local]#cccccc[".. tag .."]#FFFFFF "..nick..": #FFFFFF"..msg,v,255,0,0,true) end end end addCommandHandler("Local",onChat) isAdmin_ACL = {"Admin", "SuperModerator", "Moderator"}; function isPlayerAdmin (player) if (player and isElement(player) and not isGuestAccount(getPlayerAccount(player)) ) then for _, aclName in ipairs(isAdmin_ACL) do if ( isObjectInACLGroup("user."..(getAccountName(getPlayerAccount(player))), aclGetGroup(aclName)) ) then return true; end end return false; end end
Recommended Posts