Szerző Téma: Anti Flood CMD  (Megtekintve 1183 alkalommal)

Anti Flood CMD
« Dátum: 2016. November 01. - 18:56:38 »
0
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.

Nem elérhető Eduka

  • 214
    • Profil megtekintése
Anti Flood CMD
« Válasz #1 Dátum: 2016. November 01. - 19:51:46 »
0
Ez MTA

Anti Flood CMD
« Válasz #2 Dátum: 2016. November 01. - 21:14:40 »
0
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. :)

Anti Flood CMD
« Válasz #3 Dátum: 2016. November 01. - 21:18:43 »
+1
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

Anti Flood CMD
« Válasz #4 Dátum: 2016. November 01. - 23:18:00 »
0
Köszönöm szépen :)

Anti Flood CMD
« Válasz #5 Dátum: 2016. November 02. - 11:31:24 »
0
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 :)

Anti Flood CMD
« Válasz #6 Dátum: 2016. November 02. - 15:45:00 »
0
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

Anti Flood CMD
« Válasz #7 Dátum: 2016. November 03. - 14:28:31 »
+1
Persze. Ennél csak jobb megoldások vannak, de elsőnek a legegyszerűbbet akartam leírni neki :D

Anti Flood CMD
« Válasz #8 Dátum: 2016. November 03. - 15:25:40 »
0
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

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal