LPM//Bruno Posted December 6, 2016 Share Posted December 6, 2016 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 Link to comment
aka Blue Posted December 6, 2016 Share Posted December 6, 2016 Añade un pequeño timer antes del mensaje, supongo que debería corregir tu problema: setTimer( function() outputChatBox( "BLABLABLA" ) end, 150, 1 ) Link to comment
Simple0x47 Posted December 6, 2016 Share Posted December 6, 2016 Por que el evento se triggea dos veces debido a falta de statements. Link to comment
LPM//Bruno Posted December 7, 2016 Author Share Posted December 7, 2016 13 hours ago, Simple01 said: Por que el evento se triggea dos veces debido a falta de statements. No sé que son statements, hay algun link en la wiki? Link to comment
Rose Posted December 7, 2016 Share Posted December 7, 2016 Creo que se refiere a que uses algo como: if not inside then inside = true end para que solo se ejecute una vez Link to comment
LPM//Bruno Posted December 7, 2016 Author Share Posted December 7, 2016 Ayuda por favor, no entiendo mucho sobre scripting y este es un error grave Link to comment
aka Blue Posted December 7, 2016 Share Posted December 7, 2016 On 6/12/2016 at 3:10 PM, aka Blue said: Añade un pequeño timer antes del mensaje, supongo que debería corregir tu problema: setTimer( function() outputChatBox( "BLABLABLA" ) end, 150, 1 ) Link to comment
LPM//Bruno Posted December 7, 2016 Author Share Posted December 7, 2016 3 hours ago, aka Blue said: El problema es que no pasa solo con el mensaje, sino con los eventos, es como que el script se ejecuta 2 veces en su totalidad, pero si pongo en stop todos los script excepto el , funciona bien. Link to comment
Sticmy Posted December 8, 2016 Share Posted December 8, 2016 (edited) Quizás sea los argumentos o la forma que lo scripteaste o al menos que publiques tu código para que te puedan ayudar. Edited December 8, 2016 by MarkFlash Link to comment
LPM//Bruno Posted December 8, 2016 Author Share Posted December 8, 2016 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
Sticmy Posted December 8, 2016 Share Posted December 8, 2016 (edited) 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 December 8, 2016 by MarkFlash Link to comment
Tomas Posted December 9, 2016 Share Posted December 9, 2016 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
Sticmy Posted December 9, 2016 Share Posted December 9, 2016 3 hours ago, Tomas said: En ese caso el evento solo se adheriría a la última col creada, hay que usar resourceRoot. Me olvide lo siento Link to comment
LPM//Bruno Posted December 9, 2016 Author Share Posted December 9, 2016 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
aka Blue Posted December 9, 2016 Share Posted December 9, 2016 Yo de ti reescribiría todo el código de 0, ordenándolo y todo porque hay cosas super raras. Deberías aprender a ordenar los códigos y colocar nombres "normales". Link to comment
Tomas Posted December 9, 2016 Share Posted December 9, 2016 Sin los () addEventHandler ("onColShapeHit", resourceRoot, Link to comment
LPM//Bruno Posted December 9, 2016 Author Share Posted December 9, 2016 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
#Dv^ Posted December 10, 2016 Share Posted December 10, 2016 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
LPM//Bruno Posted December 10, 2016 Author Share Posted December 10, 2016 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
#Dv^ Posted December 10, 2016 Share Posted December 10, 2016 Postea el código del deathmath o añadime a Skype y te ayudaré: Raik#(kasdasa) Link to comment
LPM//Bruno Posted December 10, 2016 Author Share Posted December 10, 2016 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
#Dv^ Posted December 10, 2016 Share Posted December 10, 2016 (edited) 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 December 10, 2016 by #Dv^ Link to comment
LPM//Bruno Posted December 10, 2016 Author Share Posted December 10, 2016 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
#Dv^ Posted December 10, 2016 Share Posted December 10, 2016 ¿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
LPM//Bruno Posted December 10, 2016 Author Share Posted December 10, 2016 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
Recommended Posts