a little advice..
I use my own function to wait between actions.
lua code:ban = nil
function antiban(t1, t2)
if t1 < 200 or t2 < 200 then -- if player put e.g. (50, 100) function change to higher
if not ban then
print('Warring, low time difference, to prevent ban change on (300, 600)') -- send warring
ban = true
end
sleep(math.random(270, 650) * math.random(1.01, 1.19)) -- time was changed on ...
end
if t1 >= 200 and t2 >= 200 then -- if time is higher than 200ms then make a 3 groups of time
t1 = (t1 + math.random(-1, 280))* math.random(1.01, 1.10) -- low
t2 = (t2 + math.random(-5, 460))* math.random(0.95, 1.15) -- high
t3 = (t2 + t1 + math.random(10, 130))/2 -- middle
if t3 >= 250 then
t4 = t3
end
if t3 < 250 then
t4 = math.random(300, 700) + 100*math.random(0.3, 0.9) -- if middle time is to low, player put (200, 300), will change to higher
end
time = {t4, t1, t2} -- collection of all times
sleep(time[math.random(1, #time)]) -- choose random time with uper timer group {} and sleep(time)
end
end
How to use?
Copy and paste to notepad> save as antiban.lua or download from link
lua code:Module.New('talk', function()
dofile('antiban.lua')
Self.Say('hi')
antiban(700, 2000)
Self.Say('ban me now?')
antiban(1200, 3000)
end)

I tested and it's better than normal inbuild wait() in XenoLib.lua
lua code:function wait(a, b)
if not b then sleep(a) else sleep(math.random(a, b)) end
end
Also...
Never use like that:
lua code:Self.SayToNpc({'hi', 'trade'})
-- it will repeat with 200ms if its Module or So.. fast if normal (while true do).