local Event = require 'utils.event' local Global = require 'utils.global' local Public = {} local this = { prevent_spam = {}, -- the default table where all player indexes will be stored default_tick = 15 -- this defines the default tick to check weather or not a user is spamming a button. } Global.register( this, function(t) this = t end ) function Public.reset_spam_table() local players = game.connected_players this.prevent_spam = {} for i = 1, #players do local player = players[i] this.prevent_spam[player.index] = game.tick end end function Public.set_new_value(player) if this.prevent_spam[player.index] then this.prevent_spam[player.index] = game.tick return this.prevent_spam[player.index] end return false end function Public.is_spamming(player, value_to_compare) if not this.prevent_spam[player.index] then return end local tick = game.tick local value = value_to_compare or this.default_tick if this.prevent_spam[player.index] then if (tick - this.prevent_spam[player.index]) > value then Public.set_new_value(player) return false -- is not spamming else return true -- is spamming end end return false end function Public.get(key) if key then return this[key] else return this end end function Public.set(key, value) if key and (value or value == false) then this[key] = value return this[key] elseif key then return this[key] else return this end end Event.add( defines.events.on_player_joined_game, function(event) local player = game.get_player(event.player_index) if not this.prevent_spam[player.index] then this.prevent_spam[player.index] = game.tick end end ) Event.on_init( function() Public.reset_spam_table() end ) return Public