GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Segítségkérés => A témát indította: HUMROLI1 - 2016. November 01. - 18:56:38

Cím: Anti Flood CMD
Írta: HUMROLI1 - 2016. November 01. - 18:56:38
Hogy tudnám azt megoldani hogy van egy commandom és a command le legyen korlátozva azaz 5 mp-be csak egyszer lehessen használni? Előre is köszönöm a válaszokat.
Cím: Anti Flood CMD
Írta: Eduka - 2016. November 01. - 19:51:46
Ez MTA
Cím: Anti Flood CMD
Írta: AlexSwamp - 2016. November 01. - 21:14:40
Több megoldás is létezik, Elindítasz egy timert, elszámoltatod x-ig a scripted és utána történik valami vagy getTickCount segítségével vizsgálsz időt. :)
Cím: Anti Flood CMD
Írta: dugasz1 - 2016. November 01. - 21:18:43
Belekell írni a függvény elejébe, hogy nézze meg mikor futott le legutóbb és a mostani idő között mennyi idő telt el. Ezt a getTickCount-tal kérheted le. (milliszekundumban adja vissza az időt)
pl.:
 

local lastCall = 0
function fuggveny ()
    if ( (getTickCount() - lastCall) <= 5000 ) then --5000, mert milliszekundumban van adja a vissza a getTickCount()
        return --a függvény futása itt megszakad
    end
    --Csinálja a dolgát ...
end
addCommandHandler(\"valami\", getRootElement(), fuggveny)

 
Edit: Hopp, míg írtam AlexSwamp is megírta a megoldást
Cím: Anti Flood CMD
Írta: HUMROLI1 - 2016. November 01. - 23:18:00
Köszönöm szépen :)
Cím: Anti Flood CMD
Írta: ?getr3kt - 2016. November 02. - 11:31:24
local commandSpam = {}
addEventHandler(\"onPlayerCommand\", root,
    function(cmd)
        if not(commandSpam[source]) then
            commandSpam[source] = 1
        elseif (commandSpam[source] >= 5) then
            cancelEvent()
   outputChatBox(\"(( Másodpercenként csak 5 parancsot használhatsz! ))\", source, 255, 255, 255)
            commandSpam[source] = commandSpam[source]+1
        else
            commandSpam[source] = commandSpam[source]+1
        end
    end
)
setTimer(function() commandSpam = {} end, 1000, 0)

 
Ezt is ajánlom neked :)
Cím: Anti Flood CMD
Írta: AlexSwamp - 2016. November 02. - 15:45:00
Idézetet írta: dugasz1 date=1478031523\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63483\" data-ipsquote-contentclass=\"forums_Topic
Belekell írni a függvény elejébe, hogy nézze meg mikor futott le legutóbb és a mostani idő között mennyi idő telt el. Ezt a getTickCount-tal kérheted le. (milliszekundumban adja vissza az időt)
pl.:
 

local lastCall = 0
function fuggveny ()
    if ( (getTickCount() - lastCall) <= 5000 ) then --5000, mert milliszekundumban van adja a vissza a getTickCount()
        return --a függvény futása itt megszakad
    end
    --Csinálja a dolgát ...
end
addCommandHandler(\"valami\", getRootElement(), fuggveny)

 
Edit: Hopp, míg írtam AlexSwamp is megírta a megoldást
 
Attól függetlenül még jó, hogy leírtam előtted. :D Mondjuk én akkor már úgy javaslom neki, hogy készít egy olyan function-t amit utána megtud hívni a parancsoknál, ezzel pedig úgymond készít minden parancsnak egy gyors vázat (pl, szolgálatban kell lennie, adminszint, anti flood, stb). :D Szépen meglehet okoskodni az egészet és még átláthatóbb is lesz az egész. :D
Cím: Anti Flood CMD
Írta: dugasz1 - 2016. November 03. - 14:28:31
Persze. Ennél csak jobb megoldások vannak, de elsőnek a legegyszerűbbet akartam leírni neki :D
Cím: Anti Flood CMD
Írta: AlexSwamp - 2016. November 03. - 15:25:40
Idézetet írta: dugasz1 date=1478179711\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63483\" data-ipsquote-contentclass=\"forums_Topic
Persze. Ennél csak jobb megoldások vannak, de elsőnek a legegyszerűbbet akartam leírni neki :D
 
Teljesen rendben is volt amúgy a megoldás! :D