Ive been getting a large request from my users for a bot that will show the users in the hub with Free Slots. Looked thru the forum and havent found it yet .
Greatfull if some one can give me a link or paste a working script in a Messege.
Thanks
-- SlotsBot for PtokaX DC Hub 0.3.2.6 Test Drive 4
-- On command +slots, sends a search and checks the results for free slots & total number of slots
-- Sends the results in PM from Hub bot
-- Adaptation by OpiumVolage (01 July 2003) based on
-- retrobot? v0.99?
-- slots module
-- by tezlo
-- 2003
-- Twiddled a bit to have results sent in PM - by bolamix 1 July 2003
-- unused sTarget left for future syntax parsing.
botName = "your_hub_bot"
-- library
function getid(table, name)
return foreachi(table, function(id, item) if item.sName == %name then return id end end)
end
function putitem(table, item)
if not item then return end
local id = getid(table, item.sName)
if id then table[id] = item
else tinsert(table, item) id = table.n
end return id
end
-- events
function OnTimer()
local i = 1 while tabSlots[i] do
local table = tabSlots[i]
if clock() >= table.iClock + tmrSlots then
if table.tItems.n == 0 then SendPmToNick(table.sName, botName, "No users with free slots found|") end
SendPmToNick(table.sName, botName, "Done|")
tremove(tabSlots, i)
if tabSlots.n == 0 then frmHub:EnableSearchData(0) end
else i = i + 1 end
end
end
function slotsOnHub(user, args)
local s, e, free, all = strfind(args, " (%d+)/(%d+)"..strchar(5))
foreachi(tabSlots, function(id, item)
if not getid(item.tItems, %user.sName) then
putitem(item.tItems, { sName = %user.sName, sValue = %free.."/"..%all })
-- if item.sTarget and (%user.sName == item.sTarget) then
-- SendToNick(item.sName, " user "..%user.sName.." "..%free.."/"..%all.."|")
-- item.iClock = item.iClock - tmrSlots
-- elseif not item.sTarget and
if (tonumber(%free) >= item.iNR) then
SendPmToNick(item.sName, botName, " user "..%user.sName.." "..%free.."/"..%all.."|")
end
end end)
end
function doSlots(user, nr, nick)
user:SendPM(botName, "Checking..|")
frmHub:EnableSearchData(1)
SendToAll("$Search Hub:"..Command.." T?F?0?1?.|")
putitem(tabSlots, { sName = user.sName, iClock = clock(), iNR = nr, tItems = {n=0} })
-- putitem(tabSlots, { sName = user.sName, sTarget = nick, iClock = clock(), iNR = nr, tItems = {n=0} })
end
-- init
tmrSlots = 5 -- Number of seconds waiting for replys
tabSlots = {n=0}
Command = "+slots"
function DataArrival(user, data)
if strfind(data, "%b<>%s+("..Command..").*|") then
s, e, nr = strfind(data, "%b<>%s+"..Command.."%s+([0-9]+)")
if s then nr = tonumber(nr) else nr = 1 end
doSlots(user, nr) return 1
end
if strfind(data, "^%$SR") then slotsOnHub(user, data) end
end
function Main()
SetTimer(tmrSlots*1000)
StartTimer()
end
Thanks for ur reply . lazyj189
Have a problem though. Added the script and after checking Syn och restarting script I get the folowing >>
Syntax Error: attempt to call field `EnableSearchData' (a nil value)
I gave the bot the name FreeSlotSearch and even tried using the Main Hub Bot Name which controlls my commands but still same. Iam running GS1.62 and using PtokaX-0.327.PaueredBai ..
I have no other problems with my scripts and have been running them for over 6months about .
Thanks in advance
PtokaX-0.327.PaueredBai ????
that doesnt sound like an official ptokax release. What is it exactly? this script will work in 3.2.6 TD4, you might want to download the latest "official" ptokax hub.
update to testdrive..
man this script also need a rewrite
ya, it needs a little work, but hey, it was right there for the posting
>> (http://board.univ-angers.fr/thread.php?threadid=512&boardid=13&sid=779f4268c00d1692163b85f32c695e87&page=1#3)