LPM//Bruno Posted July 21, 2014 Share Posted July 21, 2014 Holaa amigos de la forum de MTA SA En esta ocasión ando con problemas con los timers con 2 scripts de mi server D: El primero es mi panel VIP, el cual he creado desde 0 con ayuda de lLinux, el panel VIP tiene la opción de darte chaleco con un botón, y te lo pone al 100%, el problema es que los jugadores clickean muchas veces y si les estan disparando facilmente clickean muchas veces en el botón y de ese modo siempre les da el chaleco y jamás pueden matarlos de ese modo están abusando y no puedo darme cuenta, es por eso que quiero ponerle timers es decir, que cuando clickeen 1 vez no puedan volver a ponerse el chaleco durante 1 minuto , de ese modo no podrán abusar. Lo mismo quiero hacer pero esta vez no es por GUI sino por comando /dm , cada vez que ponen /dm a ellos se le desactivan las armas y el HUD, no pueden disparar ni tampoco pueden matarlos, tiene ventaja si tu quieres ir libremente por el mpaa sin que te maten, pero... a veces lo que hacen es ACTIVARSE /dm lo cual bloquea las armas y no deja que te maten, entonces no pueden matarlos pero luego se lo desactivan , matan a su oponente , y se lo vuelven a activar en el instante para que no se lo puedan matar , todo eso lo usan BINDEADO, es por eso que quiero ponerle timers que pongan /dm y despues de 2 minutos no puedan volver a poner el comando nuevamente. Aqui les dejo el codigo que triggerea del GUI del client hacia el server del panel VIP: function ChalecoVIP ( ) setPedArmor (source,100) outputChatBox("[LPM-VIP] Chaleco setiado al 100%.",source,0,255,0,false) end addEvent( "ChalecoVIP", true ) addEventHandler( "ChalecoVIP", getRootElement(),ChalecoVIP ) Y aqui les dejo el código del comando /dm : No estan completos solo puse las partes más importantes ya que el código es muy largo. Client function pasivo() if (modop == false) then modop = true 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) toggleControl ("next_weapon", false) toggleControl ("previous_weapon", false) showPlayerHudComponent ("weapon", false) showPlayerHudComponent ("crosshair", false) showPlayerHudComponent ("ammo", false) triggerServerEvent("DmON", getLocalPlayer(), getLocalPlayer()) else modop = false removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage ) removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage ) removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage ) setElementAlpha (getLocalPlayer(), 255) toggleControl ("fire", true) toggleControl ("aim_weapon", true) toggleControl ("vehicle_fire", true) toggleControl ("vehicle_secondary_fire ", true) toggleControl ("next_weapon", true) toggleControl ("previous_weapon", true) showPlayerHudComponent ("weapon", true) showPlayerHudComponent ("crosshair", true) showPlayerHudComponent ("ammo", true) toggleControl ("next_weapon", true) toggleControl ("previous_weapon", true) triggerServerEvent("DmOFF", getLocalPlayer(), getLocalPlayer()) end end addEvent ("pasivo",true) addEventHandler ("pasivo",getLocalPlayer(),pasivo) Server function comando(hitElement) if(isElement(hitElement)) and (getElementType (hitElement) == "player") then triggerClientEvent ("pasivo",hitElement) end end addCommandHandler ("dm",comando) Espero que puedan ayudarme, esto me ahorraría muchisimos problemas! Gracias Link to comment
Tomas Posted July 25, 2014 Share Posted July 25, 2014 Agrega al client-side en la función que ejecuta el evento al clickear (cambia el nombre del botón ya que yo lo desconozco) guiSetEnabled(nombredelboton, false) setTimer(guiSetEnabled, 15000, 1, nombredelboton, true) Para lo del pasivo agregale que cuando se lo active un elementData ej: setElementData(player,"PasivoTime","oshezi") setTimer(removeElementData,60000,1,player,"PasivoTime") Luego agrégale un IF al else donde lo desactiva. pasivotime = getElementData(player,"PasivoTime") if not pasivotime then Suerte! Link to comment
RottenFlesh Posted July 25, 2014 Share Posted July 25, 2014 Por que hiciste el comando del lado de server? lo pudiste hacer directo en el lado del cliente. anti_pasivo_abuse = false -- antiabuso desactivado function pasivo() if anti_pasivo_abuse then return end -- si el antiabuso esta activado, hasta aca llega la funcion por el [b]return[/b] anti_pasivo_abuse = true -- activamos el antiabuso setTimer(function() anti_pasivo_abuse = false end, 120000, 1) -- timer de 2 min, para desactivar el antiabuso -- el resto de codigo no lo he probado Al final te tiene que quedar algo así: anti_pasivo_abuse = false function pasivo() if anti_pasivo_abuse then return end anti_pasivo_abuse = true setTimmer(function() anti_pasivo_abuse = false end, 120000, 1) if (modop == false) then modop = true 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) toggleControl ("next_weapon", false) toggleControl ("previous_weapon", false) showPlayerHudComponent ("weapon", false) showPlayerHudComponent ("crosshair", false) showPlayerHudComponent ("ammo", false) triggerServerEvent("DmON", getLocalPlayer(), getLocalPlayer()) else modop = false removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage ) removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage ) removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage ) setElementAlpha (getLocalPlayer(), 255) toggleControl ("fire", true) toggleControl ("aim_weapon", true) toggleControl ("vehicle_fire", true) toggleControl ("vehicle_secondary_fire ", true) toggleControl ("next_weapon", true) toggleControl ("previous_weapon", true) showPlayerHudComponent ("weapon", true) showPlayerHudComponent ("crosshair", true) showPlayerHudComponent ("ammo", true) toggleControl ("next_weapon", true) toggleControl ("previous_weapon", true) triggerServerEvent("DmOFF", getLocalPlayer(), getLocalPlayer()) end end Para el del boton ya te dijeron, solo tienes que deshabilitar el boton y poner un timer para ativarlo denuevo. Link to comment
LPM//Bruno Posted July 26, 2014 Author Share Posted July 26, 2014 Gracias a ambos por responder! Me ahorran muchos problemas jajaja Link to comment
Recommended Posts