Jump to content

Acciones dobles?


LPM//Bruno

Recommended Posts

Hola vengo a solicitarles ayuda ya que no puedo encontrar el problema a mi script, cuando inicio mi servidor con todos los script en conjunto, uno de los scripts (por el cual estoy haciendo este post) funciona mal, al entrar en una zona (onColShapeHit) tendria que hacer determinadas acciones entre ellas un UNICO outputChatBox, que lo que hace es mandarlo de manera DOBLE y nose por que razón, todas las acciones las hace el doble y entonces mi script se buguea, decidi stopear todos los scripts y iniciar solo el que necesito y de esa forma funciona bien,no se duplica, una desmotracion

 

NjqrxCu.jpg

Link to comment
5 hours ago, MarkFlash said:

Quizás sea los argumentos o la forma que lo scripteaste

 

o al menos que publiques tu código para que te puedan ayudar.

Clientside:

--- by BRUNO
setElementData (getLocalPlayer(), "DmActivado", false)

addEvent ("entra",true)
addEventHandler ("entra",getRootElement(),
function()
 if (getElementData (getLocalPlayer(), "DmActivado") == true) then
 outputDebugString ( "Entro desde Clientside (Dm activo)" )
	else
		addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
		addEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
		addEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
		toggleControl ("fire", false)
		toggleControl ("aim_weapon", false)
		toggleControl ("vehicle_fire", false)
		toggleControl ("vehicle_secondary_fire ", false)
		setPlayerHudComponentVisible ("weapon", false)
		setPlayerHudComponentVisible ("crosshair", false)
		setPlayerHudComponentVisible ("ammo", false)
		toggleControl ("next_weapon", false)
        toggleControl ("previous_weapon", false)
		outputDebugString ( "Entro desde Clientside (Dm inactivo)" )
	end
	end
)


addEvent ("sale",true)
addEventHandler ("sale",getRootElement(),
function()
 if (getElementData (getLocalPlayer(), "DmActivado") == true) then
 outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verdee!")
	else
		removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
		removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
		removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
		toggleControl ("fire", true)
		toggleControl ("aim_weapon", true)
		toggleControl ("vehicle_fire", true)
		toggleControl ("vehicle_secondary_fire ", true)
		setPlayerHudComponentVisible ("weapon", true)
		setPlayerHudComponentVisible ("crosshair", true)
		setPlayerHudComponentVisible ("ammo", true)
		toggleControl ("next_weapon", true)
        toggleControl ("previous_weapon", true)
		outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verde!")
	end
	end
)

    anti_pasivo_abuse = false
     
    function pasivo()
        if anti_pasivo_abuse then 
		triggerServerEvent("MensajeAntiAbuse", getLocalPlayer(), getLocalPlayer())
		return end
        anti_pasivo_abuse = true
        setTimer(function() anti_pasivo_abuse = false end, 
3000, 1)
		if (getElementData (getLocalPlayer(), "DmActivado") == false) then
			setElementData (getLocalPlayer(), "DmActivado", true)
            addEventHandler ("onClientPlayerDamage", getLocalPlayer(), stopDamage)
            addEventHandler ("onClientPlayerStealthKill", getLocalPlayer(), stopDamage)
            addEventHandler ("onClientPedDamage", getLocalPlayer(), stopDamage)
            toggleControl ("fire", false)
            toggleControl ("aim_weapon", false)
            toggleControl ("vehicle_fire", false)
            toggleControl ("vehicle_secondary_fire ", false)
            toggleControl ("next_weapon", false)
            toggleControl ("previous_weapon", false)
            setPlayerHudComponentVisible ("weapon", false)
            setPlayerHudComponentVisible ("crosshair", false)
            setPlayerHudComponentVisible ("ammo", false)
            triggerServerEvent("DmON", getLocalPlayer(), getLocalPlayer())
			outputDebugString ( "Dm activado desde ClientSide" )
        else
			setElementData (getLocalPlayer(), "DmActivado", false)
            removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
            removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
            removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
            setElementAlpha (getLocalPlayer(), 155)
            toggleControl ("fire", true)
            toggleControl ("aim_weapon", true)
            toggleControl ("vehicle_fire", true)
            toggleControl ("vehicle_secondary_fire ", true)
            toggleControl ("next_weapon", true)
            toggleControl ("previous_weapon", true)
            setPlayerHudComponentVisible ("weapon", true)
            setPlayerHudComponentVisible ("crosshair", true)
            setPlayerHudComponentVisible ("ammo", true)
            toggleControl ("next_weapon", true)
            toggleControl ("previous_weapon", true)
            triggerServerEvent("DmOFF", getLocalPlayer(), getLocalPlayer())
			outputDebugString ( "Dm desactivado desde ClientSide" )
        end
    end
addEvent ("pasivo",true)
addEventHandler ("pasivo",getLocalPlayer(),pasivo)

function NoKill()
	if (getElementData (getLocalPlayer(), "DmActivado") == true) then
		addEventHandler ("onClientPlayerDamage", getLocalPlayer(), stopDamage)
		addEventHandler ("onClientPlayerStealthKill", getLocalPlayer(), stopDamage)
		addEventHandler ("onClientPedDamage", getLocalPlayer(), stopDamage)
		setElementAlpha (getLocalPlayer(), 255)
		toggleControl ("fire", false)
		toggleControl ("aim_weapon", false)
		toggleControl ("vehicle_fire", false)
		toggleControl ("vehicle_secondary_fire ", false)
		setPlayerHudComponentVisible ("weapon", false)
		setPlayerHudComponentVisible ("crosshair", false)
		setPlayerHudComponentVisible ("ammo", false)
		toggleControl (hitElement, "next_weapon", false)
        toggleControl (hitElement, "previous_weapon", false)
	end
end
addEventHandler("onClientPlayerWasted", getLocalPlayer(), NoKill)

function stopDamage ()
		cancelEvent()
end

Serverside:

addEventHandler ("onResourceStart",getResourceRootElement(getThisResource()),
function()
  local allGreenzones = getElementsByType ("radararea")
  for i,v in ipairs (allGreenzones) do
    local r,g,b,a = getRadarAreaColor (v)
    if (r == 0) and (g == 255) and (b == 0) and (a == 127) then
      local x,y = getElementPosition (v)
      local sx,sy = getRadarAreaSize (v)
      local col = createColCuboid (x,y, -50, sx,sy, 7500)
      setElementID (col, "greenzoneColshape")
	  setElementDimension(col,0)
	  setElementInterior(col,0)
    end
  end
end)

zonaverde = false

addEventHandler ("onPlayerWasted", getRootElement(), 
function(hitElement)
zonaverde = true
end
)

addEventHandler ("onColShapeHit", getRootElement(), 
function(hitElement, matchingDimension)
  if (isElement(hitElement)) and (getElementType (hitElement) == "player") and (getElementID (source) == "greenzoneColshape") then
  if getElementData(hitElement,"DmActivado") == true then
  zonaverde = true  
  triggerClientEvent (hitElement, "entra", hitElement)
  setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
  outputDebugString ( "Entro desde Serverside (Dm activo)" )
  else
			outputDebugString ( "Entro desde Serverside (Dm inactivo)" )
			triggerClientEvent (hitElement, "entra", hitElement)
			zonaverde = true
			outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
			setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
	        toggleControl (hitElement,"fire", false)
            toggleControl (hitElement,"aim_weapon", false)
            toggleControl (hitElement,"vehicle_fire", false)
            toggleControl (hitElement,"vehicle_secondary_fire ", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
            setPlayerHudComponentVisible (hitElement,"weapon", false)
            setPlayerHudComponentVisible (hitElement,"crosshair", false)
            setPlayerHudComponentVisible (hitElement,"ammo", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
			setPedWeaponSlot(hitElement,0)
			end
			end
  end
  )

addEventHandler ("onColShapeLeave", getRootElement(), 
function(leaveElement, matchingDimension)
   if (isElement(leaveElement)) and (getElementType (leaveElement) == "player") and (getElementID (source) == "greenzoneColshape") then
   if (getElementData (leaveElement, "DmActivado") == true) then
  zonaverde = false
  setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
  triggerClientEvent (leaveElement, "sale", leaveElement)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verdee.", leaveElement, 255, 255, 255, true)
  outputDebugString ( "Salio desde Serverside (Dm activo)" )
  else
	outputDebugString ( "Salio desde Serverside (Dm inactivo)" )
	setElementAlpha ( leaveElement, 255 )
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verde.", leaveElement, 255, 255, 255, true)
	zonaverde = false
	setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
	toggleControl (leaveElement,"fire", true)
    toggleControl (leaveElement,"aim_weapon", true)
    toggleControl (leaveElement,"vehicle_fire", true)
    toggleControl (leaveElement,"vehicle_secondary_fire ", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
    setPlayerHudComponentVisible (leaveElement,"weapon", true)
    setPlayerHudComponentVisible (leaveElement,"crosshair", true)
    setPlayerHudComponentVisible (leaveElement,"ammo", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
	setPedWeaponSlot(leaveElement,0)
	triggerClientEvent (leaveElement, "sale", leaveElement)
  end
  end
end)

function comando(source)
if getElementData(source,"EstaDentroDeUnaZonaVerde") == false then
triggerClientEvent ("pasivo",source)
else
outputChatBox("[LPM] Para desactivar/activar el Modo DM tenes que estar afuera de una zona verde.",source,255,0,0)
end
end
addCommandHandler ("dm",comando)


--------------- coemienza script dm
function on()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Desactivaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Se retiro del deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmON", true)
addEventHandler("DmON",getRootElement(),on)

function off()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",false)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Activaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Esta ahora jugando al deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmOFF", true)
addEventHandler("DmOFF",getRootElement(),off)


function off2()
	local name = getPlayerName(source)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Tu deathmatch ha sido activado automaticamente (Zona Verde).", source, 255, 255, 255, true)
end
addEvent("DmOFF2", true)
addEventHandler("DmOFF2",getRootElement(),off2)


function MensajeAntiAbuse()
	outputChatBox("[LPM] Tenes que esperar antes de usar nuevamente el comando /dm.", source, 255, 255, 0, true)
end
addEvent("MensajeAntiAbuse", true)
addEventHandler("MensajeAntiAbuse",getRootElement(),MensajeAntiAbuse)

 

Link to comment

Vale el problema es qué estas usando, getRootElement() en los evento onColShapeHit y onColShapeLeave, eso puede causionar que si han hecho scripts con createColCuboid o createColRectangle, etc. puede ser que al salir de una de esas col saldrá el mensaje es mejor que le pongas la variable en el evento.

server side

addEventHandler ("onResourceStart",getResourceRootElement(getThisResource()),
function()
  local allGreenzones = getElementsByType ("radararea")
  for i,v in ipairs (allGreenzones) do
    local r,g,b,a = getRadarAreaColor (v)
    if (r == 0) and (g == 255) and (b == 0) and (a == 127) then
      local x,y = getElementPosition (v)
      local sx,sy = getRadarAreaSize (v)
      col = createColCuboid (x,y, -50, sx,sy, 7500)
      setElementID (col, "greenzoneColshape")
	  setElementDimension(col,0)
	  setElementInterior(col,0)
    end
  end
end)
zonaverde = false
addEventHandler ("onPlayerWasted", getRootElement(), 
function(hitElement)
zonaverde = true
end
)
addEventHandler ("onColShapeHit", col, 
function(hitElement, matchingDimension)
  if (isElement(hitElement)) and (getElementType (hitElement) == "player") and (getElementID (source) == "greenzoneColshape") then
  if getElementData(hitElement,"DmActivado") == true then
  zonaverde = true  
  triggerClientEvent (hitElement, "entra", hitElement)
  setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
  outputDebugString ( "Entro desde Serverside (Dm activo)" )
  else
			outputDebugString ( "Entro desde Serverside (Dm inactivo)" )
			triggerClientEvent (hitElement, "entra", hitElement)
			zonaverde = true
			outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
			setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
	        toggleControl (hitElement,"fire", false)
            toggleControl (hitElement,"aim_weapon", false)
            toggleControl (hitElement,"vehicle_fire", false)
            toggleControl (hitElement,"vehicle_secondary_fire ", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
            setPlayerHudComponentVisible (hitElement,"weapon", false)
            setPlayerHudComponentVisible (hitElement,"crosshair", false)
            setPlayerHudComponentVisible (hitElement,"ammo", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
			setPedWeaponSlot(hitElement,0)
			end
			end
  end
  )
addEventHandler ("onColShapeLeave", col, 
function(leaveElement, matchingDimension)
   if (isElement(leaveElement)) and (getElementType (leaveElement) == "player") and (getElementID (source) == "greenzoneColshape") then
   if (getElementData (leaveElement, "DmActivado") == true) then
  zonaverde = false
  setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
  triggerClientEvent (leaveElement, "sale", leaveElement)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verdee.", leaveElement, 255, 255, 255, true)
  outputDebugString ( "Salio desde Serverside (Dm activo)" )
  else
	outputDebugString ( "Salio desde Serverside (Dm inactivo)" )
	setElementAlpha ( leaveElement, 255 )
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verde.", leaveElement, 255, 255, 255, true)
	zonaverde = false
	setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
	toggleControl (leaveElement,"fire", true)
    toggleControl (leaveElement,"aim_weapon", true)
    toggleControl (leaveElement,"vehicle_fire", true)
    toggleControl (leaveElement,"vehicle_secondary_fire ", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
    setPlayerHudComponentVisible (leaveElement,"weapon", true)
    setPlayerHudComponentVisible (leaveElement,"crosshair", true)
    setPlayerHudComponentVisible (leaveElement,"ammo", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
	setPedWeaponSlot(leaveElement,0)
	triggerClientEvent (leaveElement, "sale", leaveElement)
  end
  end
end)
function comando(source)
if getElementData(source,"EstaDentroDeUnaZonaVerde") == false then
triggerClientEvent ("pasivo",source)
else
outputChatBox("[LPM] Para desactivar/activar el Modo DM tenes que estar afuera de una zona verde.",source,255,0,0)
end
end
addCommandHandler ("dm",comando)
--------------- coemienza script dm
function on()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Desactivaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Se retiro del deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmON", true)
addEventHandler("DmON",getRootElement(),on)
function off()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",false)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Activaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Esta ahora jugando al deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmOFF", true)
addEventHandler("DmOFF",getRootElement(),off)
function off2()
	local name = getPlayerName(source)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Tu deathmatch ha sido activado automaticamente (Zona Verde).", source, 255, 255, 255, true)
end
addEvent("DmOFF2", true)
addEventHandler("DmOFF2",getRootElement(),off2)
function MensajeAntiAbuse()
	outputChatBox("[LPM] Tenes que esperar antes de usar nuevamente el comando /dm.", source, 255, 255, 0, true)
end
addEvent("MensajeAntiAbuse", true)
addEventHandler("MensajeAntiAbuse",getRootElement(),MensajeAntiAbuse)

 

Edited by MarkFlash
Link to comment
3 hours ago, MarkFlash said:

Vale el problema es qué estas usando, getRootElement() en los evento onColShapeHit y onColShapeLeave, eso puede causionar que si han hecho scripts con createColCuboid o createColRectangle, etc. puede ser que al salir de una de esas col saldrá el mensaje es mejor que le pongas la variable en el evento.

server side


addEventHandler ("onResourceStart",getResourceRootElement(getThisResource()),function()  local allGreenzones = getElementsByType ("radararea")  for i,v in ipairs (allGreenzones) do    local r,g,b,a = getRadarAreaColor (v)    if (r == 0) and (g == 255) and (b == 0) and (a == 127) then      local x,y = getElementPosition (v)      local sx,sy = getRadarAreaSize (v)      col = createColCuboid (x,y, -50, sx,sy, 7500)      setElementID (col, "greenzoneColshape")	  setElementDimension(col,0)	  setElementInterior(col,0)    end  endend)zonaverde = falseaddEventHandler ("onPlayerWasted", getRootElement(), function(hitElement)zonaverde = trueend)addEventHandler ("onColShapeHit", col, function(hitElement, matchingDimension)  if (isElement(hitElement)) and (getElementType (hitElement) == "player") and (getElementID (source) == "greenzoneColshape") then  if getElementData(hitElement,"DmActivado") == true then  zonaverde = true    triggerClientEvent (hitElement, "entra", hitElement)  setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)  outputDebugString ( "Entro desde Serverside (Dm activo)" )  else			outputDebugString ( "Entro desde Serverside (Dm inactivo)" )			triggerClientEvent (hitElement, "entra", hitElement)			zonaverde = true			outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)			setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)	        toggleControl (hitElement,"fire", false)            toggleControl (hitElement,"aim_weapon", false)            toggleControl (hitElement,"vehicle_fire", false)            toggleControl (hitElement,"vehicle_secondary_fire ", false)            toggleControl (hitElement,"next_weapon", false)            toggleControl (hitElement,"previous_weapon", false)            setPlayerHudComponentVisible (hitElement,"weapon", false)            setPlayerHudComponentVisible (hitElement,"crosshair", false)            setPlayerHudComponentVisible (hitElement,"ammo", false)            toggleControl (hitElement,"next_weapon", false)            toggleControl (hitElement,"previous_weapon", false)			setPedWeaponSlot(hitElement,0)			end			end  end  )addEventHandler ("onColShapeLeave", col, function(leaveElement, matchingDimension)   if (isElement(leaveElement)) and (getElementType (leaveElement) == "player") and (getElementID (source) == "greenzoneColshape") then   if (getElementData (leaveElement, "DmActivado") == true) then  zonaverde = false  setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)  triggerClientEvent (leaveElement, "sale", leaveElement)  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verdee.", leaveElement, 255, 255, 255, true)  outputDebugString ( "Salio desde Serverside (Dm activo)" )  else	outputDebugString ( "Salio desde Serverside (Dm inactivo)" )	setElementAlpha ( leaveElement, 255 )	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verde.", leaveElement, 255, 255, 255, true)	zonaverde = false	setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)	toggleControl (leaveElement,"fire", true)    toggleControl (leaveElement,"aim_weapon", true)    toggleControl (leaveElement,"vehicle_fire", true)    toggleControl (leaveElement,"vehicle_secondary_fire ", true)    toggleControl (leaveElement,"next_weapon", true)    toggleControl (leaveElement,"previous_weapon", true)    setPlayerHudComponentVisible (leaveElement,"weapon", true)    setPlayerHudComponentVisible (leaveElement,"crosshair", true)    setPlayerHudComponentVisible (leaveElement,"ammo", true)    toggleControl (leaveElement,"next_weapon", true)    toggleControl (leaveElement,"previous_weapon", true)	setPedWeaponSlot(leaveElement,0)	triggerClientEvent (leaveElement, "sale", leaveElement)  end  endend)function comando(source)if getElementData(source,"EstaDentroDeUnaZonaVerde") == false thentriggerClientEvent ("pasivo",source)elseoutputChatBox("[LPM] Para desactivar/activar el Modo DM tenes que estar afuera de una zona verde.",source,255,0,0)endendaddCommandHandler ("dm",comando)--------------- coemienza script dmfunction on()	local name = getPlayerName(source)	setElementData(source,"DmActivado",true)	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Desactivaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Se retiro del deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)endaddEvent("DmON", true)addEventHandler("DmON",getRootElement(),on)function off()	local name = getPlayerName(source)	setElementData(source,"DmActivado",false)	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Activaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Esta ahora jugando al deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)endaddEvent("DmOFF", true)addEventHandler("DmOFF",getRootElement(),off)function off2()	local name = getPlayerName(source)	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Tu deathmatch ha sido activado automaticamente (Zona Verde).", source, 255, 255, 255, true)endaddEvent("DmOFF2", true)addEventHandler("DmOFF2",getRootElement(),off2)function MensajeAntiAbuse()	outputChatBox("[LPM] Tenes que esperar antes de usar nuevamente el comando /dm.", source, 255, 255, 0, true)endaddEvent("MensajeAntiAbuse", true)addEventHandler("MensajeAntiAbuse",getRootElement(),MensajeAntiAbuse)

 

En ese caso el evento solo se adheriría a la última col creada, hay que usar resourceRoot.

Link to comment
4 hours ago, Tomas said:

En ese caso el evento solo se adheriría a la última col creada, hay que usar resourceRoot.

Entonces quedaría así? , Perdon por preguntar tanto, solo quiero estar seguro! gracias desde ya jeje

 

addEventHandler ("onResourceStart",getResourceRootElement(getThisResource()),
function()
  local allGreenzones = getElementsByType ("radararea")
  for i,v in ipairs (allGreenzones) do
    local r,g,b,a = getRadarAreaColor (v)
    if (r == 0) and (g == 255) and (b == 0) and (a == 127) then
      local x,y = getElementPosition (v)
      local sx,sy = getRadarAreaSize (v)
      col = createColCuboid (x,y, -50, sx,sy, 7500)
      setElementID (col, "greenzoneColshape")
	  setElementDimension(col,0)
	  setElementInterior(col,0)
    end
  end
end)
zonaverde = false
addEventHandler ("onPlayerWasted", getRootElement(), 
function(hitElement)
zonaverde = true
end
)
addEventHandler ("onColShapeHit", resourceRoot(), 
function(hitElement, matchingDimension)
  if (isElement(hitElement)) and (getElementType (hitElement) == "player") and (getElementID (source) == "greenzoneColshape") then
  if getElementData(hitElement,"DmActivado") == true then
  zonaverde = true  
  triggerClientEvent (hitElement, "entra", hitElement)
  setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
  outputDebugString ( "Entro desde Serverside (Dm activo)" )
  else
			outputDebugString ( "Entro desde Serverside (Dm inactivo)" )
			triggerClientEvent (hitElement, "entra", hitElement)
			zonaverde = true
			outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
			setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
	        toggleControl (hitElement,"fire", false)
            toggleControl (hitElement,"aim_weapon", false)
            toggleControl (hitElement,"vehicle_fire", false)
            toggleControl (hitElement,"vehicle_secondary_fire ", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
            setPlayerHudComponentVisible (hitElement,"weapon", false)
            setPlayerHudComponentVisible (hitElement,"crosshair", false)
            setPlayerHudComponentVisible (hitElement,"ammo", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
			setPedWeaponSlot(hitElement,0)
			end
			end
  end
  )
addEventHandler ("onColShapeLeave", resourceRoot(), 
function(leaveElement, matchingDimension)
   if (isElement(leaveElement)) and (getElementType (leaveElement) == "player") and (getElementID (source) == "greenzoneColshape") then
   if (getElementData (leaveElement, "DmActivado") == true) then
  zonaverde = false
  setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
  triggerClientEvent (leaveElement, "sale", leaveElement)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verdee.", leaveElement, 255, 255, 255, true)
  outputDebugString ( "Salio desde Serverside (Dm activo)" )
  else
	outputDebugString ( "Salio desde Serverside (Dm inactivo)" )
	setElementAlpha ( leaveElement, 255 )
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verde.", leaveElement, 255, 255, 255, true)
	zonaverde = false
	setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
	toggleControl (leaveElement,"fire", true)
    toggleControl (leaveElement,"aim_weapon", true)
    toggleControl (leaveElement,"vehicle_fire", true)
    toggleControl (leaveElement,"vehicle_secondary_fire ", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
    setPlayerHudComponentVisible (leaveElement,"weapon", true)
    setPlayerHudComponentVisible (leaveElement,"crosshair", true)
    setPlayerHudComponentVisible (leaveElement,"ammo", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
	setPedWeaponSlot(leaveElement,0)
	triggerClientEvent (leaveElement, "sale", leaveElement)
  end
  end
end)
function comando(source)
if getElementData(source,"EstaDentroDeUnaZonaVerde") == false then
triggerClientEvent ("pasivo",source)
else
outputChatBox("[LPM] Para desactivar/activar el Modo DM tenes que estar afuera de una zona verde.",source,255,0,0)
end
end
addCommandHandler ("dm",comando)
--------------- coemienza script dm
function on()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Desactivaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Se retiro del deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmON", true)
addEventHandler("DmON",getRootElement(),on)
function off()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",false)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Activaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Esta ahora jugando al deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmOFF", true)
addEventHandler("DmOFF",getRootElement(),off)
function off2()
	local name = getPlayerName(source)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Tu deathmatch ha sido activado automaticamente (Zona Verde).", source, 255, 255, 255, true)
end
addEvent("DmOFF2", true)
addEventHandler("DmOFF2",getRootElement(),off2)
function MensajeAntiAbuse()
	outputChatBox("[LPM] Tenes que esperar antes de usar nuevamente el comando /dm.", source, 255, 255, 0, true)
end
addEvent("MensajeAntiAbuse", true)
addEventHandler("MensajeAntiAbuse",getRootElement(),MensajeAntiAbuse)

 

Link to comment

Tengo otro problema, ya cambie eso que me dijeron en el código y funciona, muchas gracias, pero cuando salgo de una Zona Verde me vuelve a activar las armas y se puede matar y te vuelves invencible. (La funcion del script es un activador/desactivador de Deathmatch, al estar activo, todas tus armas son desactivadas y no te pueden matar, al entrar en zonas verdes en el script supuestamente no deberia haber ningun efecto cuando lo tienes activo, ya que lo hago con setElementData y getElementData tanto en servidor como cliente, pero cuando esta inactivo, al entrar en las zonas verdes, se tiene que desactivar las armas y ser invencible para evitar el Pvp) pero por alguna razon no funciona cuando el Dm esta activo y sales de la zona verde, se reactivan las armas y te vuelves inmortal.

Link to comment

Eso es por seguro estás usando toggleControl en ambos scripts
Un ejemplo:

Al entrar a la greenzone 

toggleControl (hitElement,"aim_weapon", false)

Al salir de la greezone
 

toggleControl (hitElement,"aim_weapon", true)

Y con el script de deathmath si estás usando toggleControl sería lo mismo que greenzone
Al activar el dm
 

toggleControl (hitElement,"aim_weapon", false)

Al desactivar el dm
 

toggleControl (hitElement,"aim_weapon", true)

Entonces, si tienes dm activado y estás dentro de la greenzone, el jugador al salir de la greenzone con el dm ya activado pasaría esto
 

toggleControl (hitElement,"aim_weapon", true)

El jugador podrá apuntar con su arma, pero no le podrán hacer daño por que tiene el "dm" aún activado y ese sería el bug, no le podrán hacer daño por que seguro estás cancelando el evento onClientPlayerDamage para que el jugador local no reciba daño
En un post anterior tuyo tienes el mismo problema parecido a este, por eso pensé que estás usando toggleControl en ambos scripts: https://forum.multitheftauto.com/topic/67918-ayuda-script-dm/ 

 

Link to comment
2 hours ago, #Dv^ said:

Eso es por seguro estás usando toggleControl en ambos scripts
Un ejemplo:

Al entrar a la greenzone 


toggleControl (hitElement,"aim_weapon", false)

Al salir de la greezone
 


toggleControl (hitElement,"aim_weapon", true)

Y con el script de deathmath si estás usando toggleControl sería lo mismo que greenzone
Al activar el dm
 


toggleControl (hitElement,"aim_weapon", false)

Al desactivar el dm
 


toggleControl (hitElement,"aim_weapon", true)

Entonces, si tienes dm activado y estás dentro de la greenzone, el jugador al salir de la greenzone con el dm ya activado pasaría esto
 


toggleControl (hitElement,"aim_weapon", true)

El jugador podrá apuntar con su arma, pero no le podrán hacer daño por que tiene el "dm" aún activado y ese sería el bug, no le podrán hacer daño por que seguro estás cancelando el evento onClientPlayerDamage para que el jugador local no reciba daño
En un post anterior tuyo tienes el mismo problema parecido a este, por eso pensé que estás usando toggleControl en ambos scripts: https://forum.multitheftauto.com/topic/67918-ayuda-script-dm/ 

 

No tengo ningun otro script que realice la activacion de Greenzones ( ni siquiera el script Greenzones ) ; es más, probé eliminando todos los toggleControl de este script y al salir sigue fallando, ¿será otro script que está en conflicto y no se cuál es? ¿cómo podría detectarlo? Es que tengo muchos!

Link to comment
On 8/12/2016 at 4:00 AM, brunitokap said:

Clientside:


--- by BRUNO
setElementData (getLocalPlayer(), "DmActivado", false)

addEvent ("entra",true)
addEventHandler ("entra",getRootElement(),
function()
 if (getElementData (getLocalPlayer(), "DmActivado") == true) then
 outputDebugString ( "Entro desde Clientside (Dm activo)" )
	else
		addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
		addEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
		addEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
		toggleControl ("fire", false)
		toggleControl ("aim_weapon", false)
		toggleControl ("vehicle_fire", false)
		toggleControl ("vehicle_secondary_fire ", false)
		setPlayerHudComponentVisible ("weapon", false)
		setPlayerHudComponentVisible ("crosshair", false)
		setPlayerHudComponentVisible ("ammo", false)
		toggleControl ("next_weapon", false)
        toggleControl ("previous_weapon", false)
		outputDebugString ( "Entro desde Clientside (Dm inactivo)" )
	end
	end
)


addEvent ("sale",true)
addEventHandler ("sale",getRootElement(),
function()
 if (getElementData (getLocalPlayer(), "DmActivado") == true) then
 outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verdee!")
	else
		removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
		removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
		removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
		toggleControl ("fire", true)
		toggleControl ("aim_weapon", true)
		toggleControl ("vehicle_fire", true)
		toggleControl ("vehicle_secondary_fire ", true)
		setPlayerHudComponentVisible ("weapon", true)
		setPlayerHudComponentVisible ("crosshair", true)
		setPlayerHudComponentVisible ("ammo", true)
		toggleControl ("next_weapon", true)
        toggleControl ("previous_weapon", true)
		outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verde!")
	end
	end
)

    anti_pasivo_abuse = false
     
    function pasivo()
        if anti_pasivo_abuse then 
		triggerServerEvent("MensajeAntiAbuse", getLocalPlayer(), getLocalPlayer())
		return end
        anti_pasivo_abuse = true
        setTimer(function() anti_pasivo_abuse = false end, 
3000, 1)
		if (getElementData (getLocalPlayer(), "DmActivado") == false) then
			setElementData (getLocalPlayer(), "DmActivado", true)
            addEventHandler ("onClientPlayerDamage", getLocalPlayer(), stopDamage)
            addEventHandler ("onClientPlayerStealthKill", getLocalPlayer(), stopDamage)
            addEventHandler ("onClientPedDamage", getLocalPlayer(), stopDamage)
            toggleControl ("fire", false)
            toggleControl ("aim_weapon", false)
            toggleControl ("vehicle_fire", false)
            toggleControl ("vehicle_secondary_fire ", false)
            toggleControl ("next_weapon", false)
            toggleControl ("previous_weapon", false)
            setPlayerHudComponentVisible ("weapon", false)
            setPlayerHudComponentVisible ("crosshair", false)
            setPlayerHudComponentVisible ("ammo", false)
            triggerServerEvent("DmON", getLocalPlayer(), getLocalPlayer())
			outputDebugString ( "Dm activado desde ClientSide" )
        else
			setElementData (getLocalPlayer(), "DmActivado", false)
            removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
            removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
            removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
            setElementAlpha (getLocalPlayer(), 155)
            toggleControl ("fire", true)
            toggleControl ("aim_weapon", true)
            toggleControl ("vehicle_fire", true)
            toggleControl ("vehicle_secondary_fire ", true)
            toggleControl ("next_weapon", true)
            toggleControl ("previous_weapon", true)
            setPlayerHudComponentVisible ("weapon", true)
            setPlayerHudComponentVisible ("crosshair", true)
            setPlayerHudComponentVisible ("ammo", true)
            toggleControl ("next_weapon", true)
            toggleControl ("previous_weapon", true)
            triggerServerEvent("DmOFF", getLocalPlayer(), getLocalPlayer())
			outputDebugString ( "Dm desactivado desde ClientSide" )
        end
    end
addEvent ("pasivo",true)
addEventHandler ("pasivo",getLocalPlayer(),pasivo)

function NoKill()
	if (getElementData (getLocalPlayer(), "DmActivado") == true) then
		addEventHandler ("onClientPlayerDamage", getLocalPlayer(), stopDamage)
		addEventHandler ("onClientPlayerStealthKill", getLocalPlayer(), stopDamage)
		addEventHandler ("onClientPedDamage", getLocalPlayer(), stopDamage)
		setElementAlpha (getLocalPlayer(), 255)
		toggleControl ("fire", false)
		toggleControl ("aim_weapon", false)
		toggleControl ("vehicle_fire", false)
		toggleControl ("vehicle_secondary_fire ", false)
		setPlayerHudComponentVisible ("weapon", false)
		setPlayerHudComponentVisible ("crosshair", false)
		setPlayerHudComponentVisible ("ammo", false)
		toggleControl (hitElement, "next_weapon", false)
        toggleControl (hitElement, "previous_weapon", false)
	end
end
addEventHandler("onClientPlayerWasted", getLocalPlayer(), NoKill)

function stopDamage ()
		cancelEvent()
end

Serverside:


addEventHandler ("onResourceStart",getResourceRootElement(getThisResource()),
function()
  local allGreenzones = getElementsByType ("radararea")
  for i,v in ipairs (allGreenzones) do
    local r,g,b,a = getRadarAreaColor (v)
    if (r == 0) and (g == 255) and (b == 0) and (a == 127) then
      local x,y = getElementPosition (v)
      local sx,sy = getRadarAreaSize (v)
      local col = createColCuboid (x,y, -50, sx,sy, 7500)
      setElementID (col, "greenzoneColshape")
	  setElementDimension(col,0)
	  setElementInterior(col,0)
    end
  end
end)

zonaverde = false

addEventHandler ("onPlayerWasted", getRootElement(), 
function(hitElement)
zonaverde = true
end
)

addEventHandler ("onColShapeHit", getRootElement(), 
function(hitElement, matchingDimension)
  if (isElement(hitElement)) and (getElementType (hitElement) == "player") and (getElementID (source) == "greenzoneColshape") then
  if getElementData(hitElement,"DmActivado") == true then
  zonaverde = true  
  triggerClientEvent (hitElement, "entra", hitElement)
  setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
  outputDebugString ( "Entro desde Serverside (Dm activo)" )
  else
			outputDebugString ( "Entro desde Serverside (Dm inactivo)" )
			triggerClientEvent (hitElement, "entra", hitElement)
			zonaverde = true
			outputChatBox("#ffffff[#00f5ffLPM#ffffff] Entrando a una zona verde.", hitElement, 255, 255, 255, true)
			setElementData(hitElement,"EstaDentroDeUnaZonaVerde",true)
	        toggleControl (hitElement,"fire", false)
            toggleControl (hitElement,"aim_weapon", false)
            toggleControl (hitElement,"vehicle_fire", false)
            toggleControl (hitElement,"vehicle_secondary_fire ", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
            setPlayerHudComponentVisible (hitElement,"weapon", false)
            setPlayerHudComponentVisible (hitElement,"crosshair", false)
            setPlayerHudComponentVisible (hitElement,"ammo", false)
            toggleControl (hitElement,"next_weapon", false)
            toggleControl (hitElement,"previous_weapon", false)
			setPedWeaponSlot(hitElement,0)
			end
			end
  end
  )

addEventHandler ("onColShapeLeave", getRootElement(), 
function(leaveElement, matchingDimension)
   if (isElement(leaveElement)) and (getElementType (leaveElement) == "player") and (getElementID (source) == "greenzoneColshape") then
   if (getElementData (leaveElement, "DmActivado") == true) then
  zonaverde = false
  setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
  triggerClientEvent (leaveElement, "sale", leaveElement)
  outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verdee.", leaveElement, 255, 255, 255, true)
  outputDebugString ( "Salio desde Serverside (Dm activo)" )
  else
	outputDebugString ( "Salio desde Serverside (Dm inactivo)" )
	setElementAlpha ( leaveElement, 255 )
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Saliendo de una zona verde.", leaveElement, 255, 255, 255, true)
	zonaverde = false
	setElementData(leaveElement,"EstaDentroDeUnaZonaVerde",false)
	toggleControl (leaveElement,"fire", true)
    toggleControl (leaveElement,"aim_weapon", true)
    toggleControl (leaveElement,"vehicle_fire", true)
    toggleControl (leaveElement,"vehicle_secondary_fire ", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
    setPlayerHudComponentVisible (leaveElement,"weapon", true)
    setPlayerHudComponentVisible (leaveElement,"crosshair", true)
    setPlayerHudComponentVisible (leaveElement,"ammo", true)
    toggleControl (leaveElement,"next_weapon", true)
    toggleControl (leaveElement,"previous_weapon", true)
	setPedWeaponSlot(leaveElement,0)
	triggerClientEvent (leaveElement, "sale", leaveElement)
  end
  end
end)

function comando(source)
if getElementData(source,"EstaDentroDeUnaZonaVerde") == false then
triggerClientEvent ("pasivo",source)
else
outputChatBox("[LPM] Para desactivar/activar el Modo DM tenes que estar afuera de una zona verde.",source,255,0,0)
end
end
addCommandHandler ("dm",comando)


--------------- coemienza script dm
function on()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Desactivaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Se retiro del deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmON", true)
addEventHandler("DmON",getRootElement(),on)

function off()
	local name = getPlayerName(source)
	setElementData(source,"DmActivado",false)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Activaste el Modo DeathMatch MTA-LPM.", source, 255, 255, 255, true)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] #00ff00"..name.."#FFFFFF Esta ahora jugando al deathmatch MTA-LPM (#00ff00/dm#ffffff)", getRootElement(), 255, 255, 255, true)
end
addEvent("DmOFF", true)
addEventHandler("DmOFF",getRootElement(),off)


function off2()
	local name = getPlayerName(source)
	outputChatBox("#ffffff[#00f5ffLPM#ffffff] Tu deathmatch ha sido activado automaticamente (Zona Verde).", source, 255, 255, 255, true)
end
addEvent("DmOFF2", true)
addEventHandler("DmOFF2",getRootElement(),off2)


function MensajeAntiAbuse()
	outputChatBox("[LPM] Tenes que esperar antes de usar nuevamente el comando /dm.", source, 255, 255, 0, true)
end
addEvent("MensajeAntiAbuse", true)
addEventHandler("MensajeAntiAbuse",getRootElement(),MensajeAntiAbuse)

 

 

Link to comment

Toma, hice tú código más corto posible por que tenías cosas muy innecesarias demás, y parecía muy raro, espero te sea de ayuda
Si hay algún bug, avísame, lo arreglaré lo antes posible

Servidor

addEventHandler ("onResourceStart",getResourceRootElement(getThisResource()),
function()
	local greenzones = getElementsByType ("radararea")
	for i,v in ipairs (greenzones) do
		local r,g,b,a = getRadarAreaColor (v)
		if (r == 0) and (g == 255) and (b == 0) and (a == 127) then
			local x,y = getElementPosition (v)
			local sx,sy = getRadarAreaSize (v)
			local col = createColCuboid (x,y, -50, sx,sy, 7500)
			setElementID (col, "radarColShape")
			setElementDimension(col,0)
			setElementInterior(col,0)
		end
	end
end)

addEventHandler ("onColShapeHit", getRootElement(), 
	function(player, matchingDimension)
		if getElementType (player) == "player" and getElementID (source) == "radarColShape" then 
			setElementData(player,"greenzone",true)
			outputChatBox("Entraste a una zona segura.", player, 0, 255, 0, true)
		end
	end
)


addEventHandler ("onColShapeLeave", getRootElement(), 
	function(player, matchingDimension)
		if getElementType (player) == "player" and getElementID (source) == "radarColShape" then
			setElementData(player,"greenzone",false)
			outputChatBox("Saliste de la zona segura.", player, 255, 0, 0, true)
		end
	end
)

command = { }
timer = 300000

function setDm(playerSource)
	if (command[playerSource]) then
			return outputChatBox ( "Espera 5 minutos para volver a usar el comando DM", source, 225, 0, 0 ,true)
	end
	if getElementData(playerSource, "greenzone") == false then
		if getElementData(playerSource,"DM") == true then
			triggerClientEvent (playerSource,"dmOff",playerSource)
			setElementData(playerSource, "DM", false)
			outputChatBox("Modo DM desactivado, ahora podrás hacer daño y serás vulnerable.", playerSource, 255, 0, 0, true)
		else
			setElementData(playerSource, "DM", true)
			triggerClientEvent (playerSource,"dmOn",playerSource)
			outputChatBox("Modo DM activado, no podrás hacer daño y los demás a ti tampoco.", playerSource, 0, 255, 0, true)
		end
	else
		outputChatBox("No puedes activar o desactivar el DM dentro de una zona segura.",playerSource, 255, 0, 0, true)
	end
	command[playerSource] = true
	setTimer( function()
		command[playerSource] = false
	end, timer, 1)
end
addCommandHandler ("dm",setDm)

Cliente
 

function cancelDamageDm (attacker)
	if getElementData(attacker, "DM") == true or getElementData(source, "DM") == true then
		cancelEvent()
	end
end
addEventHandler ("onClientPlayerDamage", root, cancelDamageDm)
addEventHandler ("onClientPlayerStealthKill", root, cancelDamageDm)

function cancelDamageGreenzone (attacker)
	if getElementData(attacker, "greenzone") == true or getElementData(source, "greenzone") == true then
		cancelEvent()
	end
end
addEventHandler ("onClientPlayerDamage", root, cancelDamageGreenzone)
addEventHandler ("onClientPlayerStealthKill", root, cancelDamageGreenzone)

hud ={
	"radar",
	"weapon",
	"crosshair"
	}

	
addEvent("dmOn", true)
addEventHandler("dmOn",root,
	function() 
		for k, v in ipairs(hud) do
			showPlayerHudComponent(v,false) 
		end
	end
)

addEvent("dmOff", true)
addEventHandler("dmOff",root,
	function() 
		for k, v in ipairs(hud) do
			showPlayerHudComponent(v,true) 
		end
	end
)

 

Edited by #Dv^
Link to comment
38 minutes ago, #Dv^ said:

Toma, hice tú código más corto posible por que tenías cosas muy innecesarias demás, y parecía muy raro, espero te sea de ayuda
Si hay algún bug, avísame, lo arreglaré lo antes posible

Servidor


addEventHandler ("onResourceStart",getResourceRootElement(getThisResource()),function()	local greenzones = getElementsByType ("radararea")	for i,v in ipairs (greenzones) do		local r,g,b,a = getRadarAreaColor (v)		if (r == 0) and (g == 255) and (b == 0) and (a == 127) then			local x,y = getElementPosition (v)			local sx,sy = getRadarAreaSize (v)			local col = createColCuboid (x,y, -50, sx,sy, 7500)			setElementID (col, "radarColShape")			setElementDimension(col,0)			setElementInterior(col,0)		end	endend)addEventHandler ("onColShapeHit", getRootElement(), 	function(player, matchingDimension)		if getElementType (player) == "player" and getElementID (source) == "radarColShape" then 			setElementData(player,"greenzone",true)			outputChatBox("Entraste a una zona segura.", player, 0, 255, 0, true)		end	end)addEventHandler ("onColShapeLeave", getRootElement(), 	function(player, matchingDimension)		if getElementType (player) == "player" and getElementID (source) == "radarColShape" then			setElementData(player,"greenzone",false)			outputChatBox("Saliste de la zona segura.", player, 255, 0, 0, true)		end	end)command = { }timer = 300000function setDm(playerSource)	if (command[playerSource]) then			return outputChatBox ( "Espera 5 minutos para volver a usar el comando DM", source, 225, 0, 0 ,true)	end	if getElementData(playerSource, "greenzone") == false then		if getElementData(playerSource,"DM") == true then			triggerClientEvent (playerSource,"dmOff",playerSource)			setElementData(playerSource, "DM", false)			outputChatBox("Modo DM desactivado, ahora podrás hacer daño y serás vulnerable.", playerSource, 255, 0, 0, true)		else			setElementData(playerSource, "DM", true)			triggerClientEvent (playerSource,"dmOn",playerSource)			outputChatBox("Modo DM activado, no podrás hacer daño y los demás a ti tampoco.", playerSource, 0, 255, 0, true)		end	else		outputChatBox("No puedes activar o desactivar el DM dentro de una zona segura.",playerSource, 255, 0, 0, true)	end	command[playerSource] = true	setTimer( function()		command[playerSource] = false	end, timer, 1)endaddCommandHandler ("dm",setDm)

Cliente
 


function cancelDamageDm (attacker)	if getElementData(attacker, "DM") == true or getElementData(source, "DM") == true then		cancelEvent()	endendaddEventHandler ("onClientPlayerDamage", root, cancelDamageDm)addEventHandler ("onClientPlayerStealthKill", root, cancelDamageDm)function cancelDamageGreenzone (attacker)	if getElementData(attacker, "greenzone") == true or getElementData(source, "greenzone") == true then		cancelEvent()	endendaddEventHandler ("onClientPlayerDamage", root, cancelDamageGreenzone)addEventHandler ("onClientPlayerStealthKill", root, cancelDamageGreenzone)hud ={	"radar",	"weapon",	"crosshair"	}	addEvent("dmOn", true)addEventHandler("dmOn",root,	function() 		for k, v in ipairs(hud) do			showPlayerHudComponent(v,false) 		end	end)addEvent("dmOff", true)addEventHandler("dmOff",root,	function() 		for k, v in ipairs(hud) do			showPlayerHudComponent(v,true) 		end	end)

 

Gracias por el trabajo que te has tomado, ha quedado genial! ES mucho mas simple ahora.. aunque el problema persiste.. comienzo a creer que es otro script el que provoca los problemas, y no logro detectar cual es.

Link to comment

¿Y qué problema tienes ahora?
Saqué los toggleControl, podrás disparar pero si tiene el "dm" activado, no podrá hacer daño y tampoco a los demás, lo mismo desde la greenzone, sí está dentro de la greenzone no podrá hacer daño y tampoco a los que están afuera

Link to comment
25 minutes ago, brunitokap said:

Gracias por el trabajo que te has tomado, ha quedado genial! ES mucho mas simple ahora.. aunque el problema persiste.. comienzo a creer que es otro script el que provoca los problemas, y no logro detectar cual es.

Me retracto, lo testie bien y funciono a la perfeccion, (lo del daño, lo del hud sigue mostrandolo, nose porque, pero no importa) Muchas gracias!Genio

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...