PtokaX forum

Archive => Archived 4.0 boards => Request for Lua 4 scripts => Topic started by: frankyk on 16 April, 2004, 00:55:45

Title: ViewClasses, ViewClassUser
Post by: frankyk on 16 April, 2004, 00:55:45
Hi,

I was wondering if someone could write a script that would allow a user to type the following commands:

+viewclasses : Views users that registered for

+viewschedule : Views selected users class schedule

+addclass : Adds a class to users schedule which will also add that class to the overall class list.

So basically, a person would type like +addclass Psych 60 11:00am and it would add the class to a textfile that everyone can read.  When someone types +viewclasses Psych60 it will show Psych 60 users at all times possible.

Thank you for your time!
Title:
Post by: frankyk on 18 April, 2004, 20:03:13
somebody? :(
Title:
Post by: nErBoS on 18 April, 2004, 20:13:36
Hi,

Not understanding your request, the script you want it?s to add class of users ??? What is the objective ??

Best regards, nErBoS
Title:
Post by: frankyk on 19 April, 2004, 03:17:09
people that use the hub go to school and i just want people to be able to see who has the same classes with each other.

Like you know, who is taking history class, how many people are taking it, at what time, etc.

Basically, it's a database to keep track of who is which class so if people want to meet up, they can do that.
Title:
Post by: nErBoS on 21 April, 2004, 13:19:57
Hi,

Sorry for the delay on the script but i am having a lot of work. Question, when you want to see the class there are user on it, is that you that write them ??? If yes you will want a file to each classes, right ???

Best regards, nErBoS
Title:
Post by: frankyk on 21 April, 2004, 21:22:19
Hi,

No worries, thanks for doing this :D.

As for your question, I want a user to be able to enter a command and this command will write to a public file available for everyone to view.  So, if that means writing to the file that is also being viewed, yes.

Basically something like this:

+addclass Psychology1 9:00AM

writetofile myclass.dat
writetofile Psychology.dat (add username to Psychology.dat)
writetofile Allclass.dat (add total users per class)

+viewclass Psychology1 9:00AM

openfile Psychology.dat

Which looks like this:
--------------------------------
Psychology1 @ 9:00 AM

nickname1
nickname2
nickname3

+viewallclasses

openfile Allclass.dat

While looks like this:
---------------------------
Psychology1 @ 9:00 AM (5 students)
Economics1 @ 10:00 AM (1 student)
Accounting1 @ 9:00 AM (20 students)

+viewschedule nickname

openfile myclass.dat

Which looks like this:
----------------------------
Nickname1 is enrolled in the following classes:

Psychology1 @ 9:00 AM
Economics1 @ 10:00 AM
Calculus1 @ 5:00 PM

It's a little complicated and a little confusing, but that's basically the style I want I guess.  Thank you =).
Title:
Post by: nErBoS on 22 April, 2004, 14:46:53
Hi,

Thanks for the fine explanion, will start to work on it at soon as i can.

Best regards, nErBoS
Title:
Post by: nErBoS on 24 April, 2004, 20:51:56
Hi,

Try out this one...

--Requested by frankyk
--Made by nErBoS

sBot = "Principal"

allclass = "Allclass.dat" --This file will be created, contains all names and schedule of classes

function OnExit()
end

function Main()
frmHub:RegBot(sBot)
end

function DataArrival(user, data)
if (strsub(data,1,1) == "<" or strsub(data,1,5+strlen(sBot)) == "$To: "..sBot) then
data = strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data, "%b<>%s+(%S+)")
if (cmd == "+helpclass") then
local sTmp = ""
sTmp = sTmp.."#### Class Commands ####\r\n\r\n"
sTmp = sTmp.."+addclass \tCreate's a Class and add's your nick, if the class exist will add only the nick\r\n"
sTmp = sTmp.."+viewclasses\t\t\t\tShows All Classes and there schedule\r\n"
sTmp = sTmp.."+viewclass \t\t\tShow the class and the users that were on it\r\n"
sTmp = sTmp.."+viewschedule \t\t\tShow the class that the nick is in\r\n"
user:SendPM(sBot, sTmp)
return 1
elseif (cmd == "+addclass") then
local s,e,class,schd = strfind(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (class == nil or schd == nil) then
user:SendPM(sBot, "Syntax Error, +addclass , you must write a class name and schedule.")
else
AddClass(user, class, schd)
user:SendPM(sBot, "Done.")
end
return 1
elseif (cmd == "+viewclasses") then
OpenAllClass(user)
return 1
elseif (cmd == "+viewclass") then
local s,e,class = strfind(data, "%b<>%s+%S+%s+(%S+)")
if (class == nil) then
user:SendPM(sBot, "Syntax Error, +viewclass , you must write a class name.")
else
ViewClass(user, class)
end
return 1
elseif (cmd == "+viewschedule") then
local s,e,usr = strfind(data, "%b<>%s+%S+%s+(%S+)")
if (usr == nil) then
user:SendPM(sBot, "Syntax Error, +viewschedule , you must write a nick.")
else
ViewUser(user, usr)
end
return 1
end
end
end

function AddClass(user, class, schedule)
local sLine = ""
local time = 0
local myclass = strlower(user.sName)..".dat"
local cl = strlower(class)
cl = cl..".dat"

-------------Add To User.dat-------------
if (readfrom(myclass) == nil) then
writeto(myclass)
write(class.." @ "..schedule)
writeto()
else
readfrom(myclass)
while 1 do
local line = read()
if (line == nil) then
sLine = sLine..class.." @ "..schedule
break
else
sLine = sLine..line.."\r\n"
end
end
readfrom()
writeto(myclass)
write(sLine)
writeto()
sLine = ""
end

-------------Add To Class.dat-------------
if (readfrom(cl) == nil) then
sLine = sLine.."sche= "..schedule.."\r\n"
sLine = sLine..user.sName
writeto(cl)
write(sLine)
writeto()
sLine = ""
else
readfrom(myclass)
while 1 do
local line = read()
if (line == nil) then
if (time == 0) then
sLine = sLine..user.sName
end
break
else
local s,e,nickname = strfind(line, "(%S+)")
if (strlower(user.sName) == strlower(nickname)) then
time = 1
end
sLine = sLine..line.."\r\n"
end
end
readfrom()
writeto(myclass)
write(sLine)
writeto()
sLine = ""
time = 0
end

-------------Add To AllClass.dat-------------
if (readfrom(allclass) == nil) then
writeto(allclass)
write(class.." "..schedule.." 1")
writeto()
else
readfrom(allclass)
while 1 do
local line = read()
if (line == nil) then
if (time == 0) then
sLine = sLine..class.." "..schedule.." 1"
end
break
else
local s,e,clss,schd,number = strfind(line, "(%S+)%s+(%S+)%s+(%S+)")
if (strlower(clss) == strlower(class)) then
number = tonumber(number) + 1
sLine = sLine..clss.." "..schd.." "..number.."\r\n"
time = 1
else
sLine = sLine..line.."\r\n"
end
end
end
readfrom()
writeto(allclass)
write(sLine)
writeto()
sLine = ""
time = 0
end
end

function OpenAllClass(user)
local sLine = ""
if (readfrom(allclass) == nil) then
sLine = "There is no Class in the file AllClass.dat."
else
sLine = sLine.."### All Class ###\r\n\r\n"
readfrom(allclass)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e,clss,schd,number = strfind(line, "(%S+)%s+(%S+)%s+(%S+)")
if (clss ~= nil and schd ~= nil and number ~= nil) then
sLine = sLine..clss.." @ "..schd.." ("..number.." Students)\r\n"
end
end
end
readfrom()
end
user:SendPM(sBot, sLine)
end

function ViewClass(user, class)
local sLine = ""
local cl = strlower(class)
cl = cl..".dat"
if (readfrom(cl) == nil) then
sLine = "That Class does not exist."
else
readfrom(cl)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e,usr = strfind(line, "(%S+)")
if (usr ~= nil) then
if (usr == "sche=") then
local s,e,schd = strfind(line, "%S+%s+(%S+)")
sLine = sLine.."### "..class.." @ "..schd.." ###\r\n\r\n"
else
sLine = sLine..usr.."\r\n"
end
end
end
end
readfrom()
end
user:SendPM(sBot, sLine)
end

function ViewUser(user, usr)
local sLine = ""
local myclass = strlower(usr)..".dat"
if (readfrom(myclass) == nil) then
sLine = "That User does not exist."
else
sLine = sLine.."### User Schedule ###\r\n\r\n"
readfrom(myclass)
while 1 do
local line = read()
if (line == nil) then
break
else
sLine = sLine..line.."\r\n"
end
end
readfrom()
end
user:SendPM(sBot, sLine)
end

Best regards, nErBoS
Title:
Post by: frankyk on 25 April, 2004, 04:43:33
Thanks Nerbos!  Can you also make a +delclass
Title:
Post by: nErBoS on 25 April, 2004, 23:13:28
Hi,

Ok, when i get a free time i will see that.

Best regards, nErBoS
Title:
Post by: frankyk on 04 May, 2004, 22:49:05
bump
Title:
Post by: nErBoS on 05 May, 2004, 00:58:04
Hi,

Sorry frankyk for the delay this week is the academic week in Portugal, there for i will be out of home and when i am at home i will be drunk :p

In the weekend i will do that request.

Best regards, nErBoS
Title:
Post by: nErBoS on 15 May, 2004, 17:21:57
Hi,

Sorry for the delay, here is the script fixed and added the +delclass...

--Requested by frankyk
--Made by nErBoS

sBot = "Principal"

allclass = "Allclass.dat" --This file will be created, contains all names and schedule of classes

function OnExit()
end

function Main()
frmHub:RegBot(sBot)
end

function DataArrival(user, data)
if (strsub(data,1,1) == "<" or strsub(data,1,5+strlen(sBot)) == "$To: "..sBot) then
data = strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data, "%b<>%s+(%S+)")
if (cmd == "+helpclass") then
local sTmp = ""
sTmp = sTmp.."#### Class Commands ####\r\n\r\n"
sTmp = sTmp.."+addclass \tCreate's a Class and add's your nick, if the class exist will add only the nick\r\n"
sTmp = sTmp.."+viewclasses\t\t\t\tShows All Classes and there schedule\r\n"
sTmp = sTmp.."+viewclass \t\tShow the class and the users that were on it\r\n"
sTmp = sTmp.."+viewschedule \t\t\tShow the class that the nick is in\r\n"
sTmp = sTmp.."\r\n\tOnly for Ops\r\n"
sTmp = sTmp.."+delclass \t\tDeletes the class\r\n"
user:SendPM(sBot, sTmp)
return 1
elseif (cmd == "+addclass") then
local s,e,class,schd,wday = strfind(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)%s+(%S+)")
if (class == nil or schd == nil or wday == nil) then
user:SendPM(sBot, "Syntax Error, +addclass , you must write a class name, schedule and week days (m, tu, w, thu, f or sat).")
else
AddClass(user, class, schd, wday)
user:SendPM(sBot, "Done.")
end
return 1
elseif (cmd == "+viewclasses") then
OpenAllClass(user)
return 1
elseif (cmd == "+viewclass") then
local s,e,class,wday = strfind(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (class == nil or wday == nil) then
user:SendPM(sBot, "Syntax Error, +viewclass , you must write a class name and week days (m, tu, w, thu, f or sat).")
else
ViewClass(user, class, wday)
end
return 1
elseif (cmd == "+delclass" and user.bOperator) then
local s,e,class,wday = strfind(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (class == nil or wday == nil) then
user:SendPM(sBot, "Syntax Error, +delclass , you must write a class name and week days (m, tu, w, thu, f or sat).")
else
DeleteClass(user, class, wday)
end
return 1
elseif (cmd == "+viewschedule") then
local s,e,usr = strfind(data, "%b<>%s+%S+%s+(%S+)")
if (usr == nil) then
user:SendPM(sBot, "Syntax Error, +viewschedule , you must write a nick.")
else
ViewUser(user, usr)
end
return 1
end
end
end

function AddClass(user, class, schedule, wday)
local sLine = ""
local time = 0
local myclass = strlower(user.sName)..".dat"
local cl = strlower(class)..strlower(wday)
cl = cl..".dat"

-------------Add To Class.dat-------------
if (readfrom(cl) == nil) then
sLine = sLine.."sche= "..schedule.." "..wday.."\r\n"
writeto(cl)
write(sLine)
writeto()
sLine = ""
else
readfrom(cl)
while 1 do
local line = read()
if (line == nil) then
if (time == 0) then
sLine = sLine..user.sName
readfrom()
writeto(cl)
write(sLine)
writeto()
sLine = ""
time = 0

-------------Add To User.dat-------------
if (readfrom(myclass) == nil) then
writeto(myclass)
write(class.." "..wday.." @ "..schedule)
writeto()
else
readfrom(myclass)
while 1 do
local line = read()
if (line == nil) then
sLine = sLine..class.." "..wday.." @ "..schedule
break
else
sLine = sLine..line.."\r\n"
end
end
readfrom()
writeto(myclass)
write(sLine)
writeto()
sLine = ""
end
end
break
else
local s,e,nickname = strfind(line, "(%S+)")
if (strlower(user.sName) == strlower(nickname) and nickname ~= "sche=") then
time = 1
end
sLine = sLine..line.."\r\n"
end
end
end

-------------Add To AllClass.dat-------------
if (readfrom(allclass) == nil) then
writeto(allclass)
write(class.." "..wday.." "..schedule.." 0")
writeto()
else
readfrom(allclass)
while 1 do
local line = read()
if (line == nil) then
if (time == 0) then
sLine = sLine..class.." "..wday.." "..schedule.." 0"
end
break
else
local s,e,clss,weekd,schd,number = strfind(line, "(%S+)%s+(%S+)%s+(%S+)%s+(%S+)")
if (strlower(clss) == strlower(class) and strlower(weekd) == strlower(wday)) then
number = tonumber(number) + 1
sLine = sLine..clss.." "..weekd.." "..schd.." "..number.."\r\n"
time = 1
else
sLine = sLine..line.."\r\n"
end
end
end
readfrom()
writeto(allclass)
write(sLine)
writeto()
sLine = ""
time = 0
end
end

function OpenAllClass(user)
local sLine = ""
if (readfrom(allclass) == nil) then
sLine = "There is no Class in the file AllClass.dat."
else
sLine = sLine.."### All Class ###\r\n\r\n"
readfrom(allclass)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e,clss,weekd,schd,number = strfind(line, "(%S+)%s+(%S+)%s+(%S+)%s+(%S+)")
if (clss ~= nil and schd ~= nil and number ~= nil) then
sLine = sLine..clss.." @ "..schd.." "..weekd.." ("..number.." Students)\r\n"
end
end
end
readfrom()
end
user:SendPM(sBot, sLine)
end

function ViewClass(user, class, wday)
local sLine = ""
local cl = strlower(class)..strlower(wday)
cl = cl..".dat"
if (readfrom(cl) == nil) then
sLine = "That Class does not exist."
else
readfrom(cl)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e,usr = strfind(line, "(%S+)")
if (usr ~= nil) then
if (usr == "sche=") then
local s,e,schd,weekd = strfind(line, "%S+%s+(%S+)%s+(%S+)")
sLine = sLine.."### "..class.." @ "..schd.." "..weekd.." ###\r\n\r\n"
else
sLine = sLine..usr.."\r\n"
end
end
end
end
readfrom()
end
user:SendPM(sBot, sLine)
end

function ViewUser(user, usr)
local sLine = ""
local myclass = strlower(usr)..".dat"
if (readfrom(myclass) == nil) then
sLine = "That User does not exist."
else
sLine = sLine.."### User Schedule ###\r\n\r\n"
readfrom(myclass)
while 1 do
local line = read()
if (line == nil) then
break
else
sLine = sLine..line.."\r\n"
end
end
readfrom()
end
user:SendPM(sBot, sLine)
end

function DeleteClass(user, class, wday)
local sLine = ""
local cl = strlower(class)..strlower(wday)
cl = cl..".dat"
if (readfrom(cl) == nil) then
sLine = "That Class does not exist."
else
readfrom()
remove(cl)
if (readfrom(allclass) == nil) then
sLine = "There is no Class in the file AllClass.dat."
else
readfrom(allclass)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e,clss,weekd = strfind(line, "(%S+)%s+(%S+)")
if (strlower(clss) ~= strlower(class) and strlower(weekd) ~= strlower(wday)) then
sLine = sLine..line.."\r\n"
end
end
end
end
readfrom()
writeto(allclass)
write(sLine)
writeto()
sLine = "That Class has been removed."
end
user:SendPM(sBot, sLine)
end

Best regards, nErBoS