how do i get this script to write the text in main and not in pm
-- texter v4.5 by plop
-- thx 2 chilla for the faster routine for opening the files
-- shows text files from a folder named text.
-- doesn't mather what prefix it used.
-- if the file excist it shows (unless it's locked for the users level).
-- 4.4 tiny bug fix on not releasing the file after loading.
-- 4.5 fixed bug needing a script restart 2 activate changed level settings
Bot = "angel"
FDFolder = "text"
msg = "\r\n\r\n"
msg = msg.." file viewing commands.\r\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n"
msg = msg.." +lock \t\t- locks the file to the given level numbers\r\n"
msg = msg.." +free \t\t\t\t- free's the file again so every level can see them\r\n"
msg = msg.." +where \t\t\t- changes the location the text file shows. where can be main/pm/allmain/allpm.\r\n"
msg = msg.." +show \t\t\t\t- shows which levels can see the file\r\n\r\n"
msg = msg.." file entry commands.\r\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n"
msg = msg.." +addentry \t\t- shows the file to the given level numbers on entry\r\n"
msg = msg.." +delentry \t\t\t- stops the given file from being shown on entry\r\n"
msg = msg.." +whereentry \t\t- changes the location the text file is shown on entry. where can be main/pm.\r\n"
msg = msg.." +showentry \t\t\t- shows which levels get to see the file on entry\r\n\r\n"
msg = msg.." file timer commands.\r\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n"
msg = msg.." +addtimer \t- adds the given filename to the timer. where can be allmain/allpm.\r\n"
msg = msg.." +deltimer \t\t\t- removes the given file from the timer\r\n"
msg = msg.." +showtimer \t\t\t- shows which on which interval the file is shown by the timer\r\n\r\n"
msg = msg.." basic help commands.\r\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n"
msg = msg.." +showall\t\t\t\t\t- shows all the files which have settings\r\n"
msg = msg.." +list\t\t\t\t\t- shows all avail files\r\n"
msg = msg.." +fun\t\t\t\t\t- this help menu\r\n|"
function Main()
frmHub:RegBot(Bot)
if readfrom(FDFolder.."/textlevels.lua") then
dofile(FDFolder.."/textlevels.lua")
readfrom()
else
text = {}
text._error={
["file"]="file doesn't excist|",
["nonum"]="pls tell me which level numbers!.|",
["nofile"]="which file?.|",
["noargs"]="pls tell me where!. main/pm/allmain/allpm.|",
["noargs2"]="pls tell me where!. allmain/allpm.|",
["notimer"]="pls tell me which interval (in minutes).|"
}
text._default="allmain"
text._levels = {}
text._where = {}
text._entry = {}
text._entrywhere = {}
text._timer = {}
text._interval = {}
text._intervalb = {}
text._entrywheres = {
["main"] = "main",
["pm"] = "pm"
}
text._wheres = {
["main"] = "main",
["allmain"] = "allmain",
["pm"] = "pm",
["allpm"] = "allpm"
}
text._timerwheres = {
["main"]="main",
["pm"]="pm"
}
save()
end
text._interval = nil
text._interval = {}
for a,b in text._intervalb do
text._interval[a]=b
end
SetTimer(60*1000)
StartTimer()
text._timercounter = 0
-- text._interval = text._intervalb
end
Commands = {
["lock"] = function(user, data)
s,e,file,args = strfind(data, "%$%b<>%s*%S+%s*(%S*)%s*(.*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif args == "" then
user:SendPM(Bot, text._error["nonum"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._levels[file] then
text._levels[file]=nil
end
text._levels[file]={}
gsub(strlower(args), "(%S+)", function(number) text._levels[(file)][tonumber(number)]=tonumber(number) end)
user:SendPM(Bot, "the file: "..file..".txt can now only be viewed by the levels "..args.."|")
save()
else
user:SendPM(Bot, text._error["file"])
end
end,
["free"] = function(user, data)
s,e,file = strfind(data, "%$%b<>%s*%S+%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._levels[file] then
text._levels[file]=nil
user:SendPM(Bot, "the file: "..file..".txt is now unlocked!")
save()
else
user:SendPM(Bot, "the file "..file..".txt wasn't locked!|")
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["show"] = function(user, data)
s,e,file = strfind(data, "%$%b<>%s*%S+%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._levels[file] then
local tmp = "the file: "..file..".txt can be viewed by the levels:"
for a,b in text._levels[file] do
tmp = tmp.." "..a
end
tmp = tmp.." in "..(text._where[file] or text._default)
user:SendPM(Bot, tmp.."|")
else
user:SendPM(Bot, "the file "..file..".txt isn't locked!|")
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["where"] = function(user, data)
s,e,file,args = strfind(data, "%$%b<>%s*%S+%s*(%S*)%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif args == "" then
user:SendPM(Bot, text._error["noargs"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._wheres[args] then
text._where[file]=args
user:SendPM(Bot, "the file "..file.." will now show in "..args.."|")
save()
else
user:SendPM(Bot, "wrong syntax!|")
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["addentry"] = function(user, data)
s,e,file,args = strfind(data, "%$%b<>%s*%S+%s*(%S*)%s*([%d%s]*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif args == "" then
user:SendPM(Bot, text._error["nonum"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._entry[file] then
text._entry[file] = nil
end
text._entry[file]={}
gsub(strlower(args), "(%S+)", function(number) text._entry[(file)][tonumber(number)]=tonumber(number) end)
user:SendPM(Bot, "the file: "..file..".txt whill now be shown to the levels "..args.." when they enter the hub|")
save()
else
user:SendPM(Bot, text._error["file"])
end
end,
["delentry"] = function(user, data)
s,e,file = strfind(data, "%$%b<>%s*%S+%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._entry[file] then
text._entry[file]=nil
if text._entrywhere[file] then
text._entrywhere[file]=nil
end
user:SendPM(Bot, "the file: "..file..".txt won't be shown on entry anymore!")
save()
else
user:SendPM(Bot, "the file "..file..".txt wasn't shown on entry!|")
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["whereentry"] = function(user, data)
s,e,file,args = strfind(data, "%$%b<>%s*%S+%s*(%S*)%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif args == "" then
user:SendPM(Bot, text._error["noargs"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._entrywheres[args] then
text._entrywhere[file]=args
user:SendPM(Bot, "the file "..file.." will now show in "..args.." on entry|")
save()
else
user:SendPM(Bot, text._error["noargs2"])
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["showentry"] = function(user,data)
s,e,file = strfind(data, "%$%b<>%s*%S+%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._levels[file] then
local tmp = "the file: "..file..".txt is shown to the levels:"
for a,b in text._entry[file] do
tmp = tmp.." "..a
end
tmp = tmp.." in "..(text._entrywhere[file] or text._default)
user:SendPM(Bot, tmp.."|")
else
user:SendPM(Bot, "the file "..file..".txt isn't shown!|")
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["addtimer"] = function(user, data)
s,e,file,args,args2 = strfind(data, "%$%b<>%s*%S+%s*(%S*)%s*(%d*)%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif args == "" then
user:SendPM(Bot, text._error["notimer"] )
elseif args2 == "" then
user:SendPM(Bot, text._error["noargs2"] )
elseif text._timerwheres[args2] == nil then
user:SendPM(Bot, "use "..text._error["noargs2"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
-- cleaning old settings
text._intervalb[file] = nil
text._interval[file] = nil
text._timer[file] = nil
-- adding the new settings
args = tonumber(args)
text._interval[file] = args + text._timercounter
text._intervalb[file] = args
text._timer[file] = args2
user:SendPM(Bot, "the file: "..file..".txt whill now be shown every: "..args.." minutes in "..args2.."|")
save()
else
user:SendPM(Bot, text._error["file"])
end
end,
["deltimer"] = function(user, data)
s,e,file = strfind(data, "%$%b<>%s*%S+%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._interval[file] then
text._intervalb[file] = nil
text._interval[file] = nil
text._timer[file] = nil
user:SendPM(Bot, "the file: "..file..".txt is removed from the timer!")
save()
else
user:SendPM(Bot, "the file "..file..".txt wasn't in the timer!|")
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["showtimer"] = function(user,data)
s,e,file = strfind(data, "%$%b<>%s*%S+%s*(%S*)")
if file == "" then
user:SendPM(Bot, text._error["nofile"] )
elseif readfrom(FDFolder.."/"..file..".txt") then
if text._timer[file] then
local tmp = "the file: "..file..".txt is shown every:"..text._interval[file].." minutes in "..text._timer[file].."|"
user:SendPM(Bot, tmp.."|")
else
user:SendPM(Bot, "the file "..file..".txt isn't in the timer!|")
end
else
user:SendPM(Bot, text._error["file"])
end
end,
["showall"] = function(user,data)
tmp = ""
local e=0
for a,b in text._levels do
if e==0 then
tmp = " on command\r\n file\t\tlevels\t\twhere\r\n------------------------------------------------------------------------------------\r\n"
e=1
end
tmp = tmp.." "..a.."\t\t"
for c,d in text._levels[a] do
tmp = tmp.." "..c
end
tmp = tmp.."\t\t"..(text._where[a] or text._default).."\r\n"
end
if e == 1 then tmp = tmp.."------------------------------------------------------------------------------------\r\n\r\n" end
e=0
for a,b in text._entry do
if e==0 then
tmp = tmp.." on entry\r\n file\t\tlevels\t\twhere\r\n------------------------------------------------------------------------------------\r\n"
e=1
end
tmp = tmp.." "..a.."\t\t"
for c,d in text._entry[a] do
tmp = tmp.." "..c
end
tmp = tmp.."\t\t"..(text._entrywhere[a] or text._default).."\r\n"
end
if e == 1 then tmp = tmp.."------------------------------------------------------------------------------------\r\n\r\n" end
e=0
for a,b in text._timer do
if e==0 then
tmp = tmp.." on timer\r\n file\t\ttime (minutes)\twhere\r\n------------------------------------------------------------------------------------\r\n"
e=1
end
tmp = tmp.." "..a.."\t\t".." "..text._interval[a].."\t\t"..(text._timer[a] or text._default).."\r\n"
end
if e == 0 then
user:SendPM(Bot, "\r\n\r\n"..tmp.."|")
else
user:SendPM(Bot, "\r\n\r\n"..tmp.."------------------------------------------------------------------------------------\r\n\r\n|")
end
end,
["help"] = function(user, data)
user:SendPM(Bot, msg.."|")
end,
["list"] = function(user, data)
execute("dir "..FDFolder.." > "..FDFolder.."/dirlist.lst")
readfrom(FDFolder.."/dirlist.lst")
local tmp = "\r\n\r\n all available files:\r\n------------------------------------------------------\r\n"
while 1 do
local kicks = read()
if kicks == nil then
break
end
local s,e,name = strfind(kicks, "%s(%S+)%.txt$")
if name then
tmp = tmp.." "..name.."\r\n"
end
end
readfrom()
remove(FDFolder.."/dirlist.lst")
user:SendPM(Bot, tmp.."|")
end
}
function DataArrival(user, data)
if( strsub(data, 1, 1) == "<" ) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+%S(%w+)")
if readfrom(FDFolder.."/"..cmd..".txt") then
if text._levels[cmd] then
if text._levels[cmd][user.iProfile] then
showtext(user, cmd, text._levels[cmd][user.iProfile])
end
return 1
else
showtext(user, cmd, text._default)
return 1
end
end
elseif(strsub(data, 1, 4) == "$To:") then
s,e,whoTo = strfind(data,"$To:%s+(%S+)")
if whoTo == Bot then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"$To:%s+%S+%s+From:%s+%S+%s+$%b<>%s+%S(%w+)")
if Commands[cmd] and user.iProfile == 0 then
return call(Commands[cmd], {user,data})
elseif readfrom(FDFolder.."/"..cmd..".txt") then
if text._levels[cmd] then
if text._levels[cmd][user.iProfile] then
showtext(user, cmd, text._where[cmd])
end
readfrom()
return 1
else
showtext(user, cmd, text._default)
readfrom()
return 1
end
end
end
end
end
function save()
writeto(FDFolder.."/textlevels.lua")
write("\n--config file for texter 4.3, better not edit this by hand if you don't know what your doing\n\ntext={\n")
local t = 0
for a,b in text do
if type(text[a]) ~= "number" then
if t==0 then
write(" "..a.."=")
t=1
else
write(",\n "..a.."=")
end
if type(b) == "string" then
write("\""..b.."\"")
else
t2 = 0
t3 = 0
write("{")
for c,d in text[a] do
if type(d) ~= "table" then
if tonumber(d) then
tmp = d
else
tmp = "\""..d.."\""
end
if t2 == 0 then
write("\n [\""..c.."\"]="..tmp)
t2 = 1
else
write(",\n [\""..c.."\"]="..tmp)
end
else
if t3==0 then
t3 = 1
else
write(",")
end
t4 = 0
for e,f in text[a][c] do
if t4 == 0 then
write("\n [\""..c.."\"]={")
write("\n ["..e.."]="..f)
t4 = 1
else
write(",\n ["..e.."]="..f)
end
end
write("\n }")
end
end
write("\n }")
end
end
end
write("\n}\n\n--plopyrights reserved")
writeto()
end
function showtext(user, file, where)
local handle = openfile(FDFolder.."/"..file..".txt", "r")
local contents = gsub(read(handle, "*a"),strchar(10), "\r\n")
closefile (handle)
if where == "main" then
user:SendData(Bot, "\r\n"..contents.."\r\n|")
elseif where == "allmain" then
SendToAll(Bot, "\r\n"..contents.."\r\n|")
elseif where == "allpm" then
SendPmToAll(Bot, "\r\n"..contents.."\r\n|")
else
user:SendPM(Bot, "\r\n"..contents.."\r\n|")
end
end
function NewUserConnected(user)
for a,b in text._entry do
if text._entry[a][user.iProfile] then
showtext(user, a, (text._entrywhere[a] or text._default))
end
end
end
function OpConnected(user)
for a,b in text._entry do
if text._entry[a][user.iProfile] then
showtext(user, a, (text._entrywhere[a] or text._default))
end
end
end
function OnTimer()
text._timercounter = text._timercounter +1
for a,b in text._timer do
if text._interval[a] == text._timercounter then
text._interval[a] = text._interval[a] +text._timercounter
showtext(Bot, a, text._timer[a])
end
end
end
type !help in pm 2 the script and read it a bit.
nothing has 2 be changed on the script, you just gotta give the right command 2 change it.
plop
eventhow i change it nothing hapens it?s still in a pm ond not in main
QuoteOriginally posted by gathering
eventhow i change it nothing hapens it?s still in a pm ond not in main
restart the script, it's a bit buggy on changes on the settings.
plop
THX now it works
did you solve that bug in it plop? You said you worked out the bug on the texter thread but not sure if you fixed it.
QuoteOriginally posted by imby
did you solve that bug in it plop? You said you worked out the bug on the texter thread but not sure if you fixed it.
some1 is running a test version with a posible fix, just beside that were testing a improved timer.
but this all is on halt because of deflood 5 and some other projects i'm doing.
plop