PtokaX forum

Archive => Archived 5.0 boards => Request for scripts => Topic started by: James on 13 July, 2005, 21:38:12

Title: Guestbook +++
Post by: James on 13 July, 2005, 21:38:12
hey people

 ive got the guestbook script from Bastya.

First Option: Guestbook: OK
Second Option: Delete...OK
Third Option i have changed into Hub-Rating. With School-Classification of 1 to 6 (so it is in Germany). 1 = excellent... 6 = very poor.
is it possible to change the script to add all numbers to give a final number of all ratings???
Thanks in Advance-)))

-- guestbook by bastya_elvtars (the rock n' roll doctor) ---> bastyaelvtars@gmail.com
--------------------------------
-- v2.0prebeta >>>>>>>> use with caution, bugs can occur
--------------------------------
--------------- THIS IS LUA5 VERSION NOW
-- thx Hawk and nErBoS for helping me out in my first lua5 script
-------------------------------------------------------------------------------------------------------------------------------------

-- no flush function, delete a dat file instead (gonna add if needed ^^)
-- multiple entries can be deleted by adding multiple nubers separated by spaces (meaning !delguestbook 1 43 555 756612346239)
-- but u can separate them with any non-number char if u like it better
-- commands can be added in PM or in main, bot responds according 2 them

--=========== IMPORTANT ================

-- DO make a folder called dats in the scripts folder!!! Otherwise it won't work!




---------------------- CONFIG PART


Bot="SchN@Ppi"


-- i made only 3 of this add/show/delete shit.
-- if you need more, notify me
-- The help text can only be changed by experts,altho you might translate it - see a lua documentation
-- levels are always the following, determining who CAN use the command:
        -- 5:only superops
        -- 4 ops & above
        -- 3 vips & above
        -- 2 registered users & above
        -- 1 anyone
        -- 0 disabled
---=========== #1


-- What it is called?


gbname="G?STEBUCH" -- the name of this function (call it what you want)


-- name of the textfile that contains entries - if it does not exist, the script will create one.
gbfile="dats/guestbook.dat"


-- this shows the guestbook or wtf
levgbcmd1=1
gbcmd1="!showguestbook"
-- adds new entry to guestbook or wtf
levgbcmd2=1
gbcmd2="!addguestbook" -- deletes an entry by ID
levgbcmd3=5
gbcmd3="!delguestbook"



--========== #2


-- What it is called?


nname="HUB BEURTEILEN" -- the name of this function (call it what you want)


-- name of the textfile that contains entries - if it does not exist, the script will create one.
nfile="dats/news.dat"


-- this shows the news bulletin or wtf
levncmd1=1
ncmd1="!shownews"


-- adds new entry to news bulletin or wtf
levncmd2=1
ncmd2="!addnews"

-- deletes an entry by ID
levncmd3=5
ncmd3="!delnews"


-------------------- END OF CONFIG


function parseenv(user,env,bot)
if env=="PM" then
return "$To: "..user.sName.." From: "..bot.." $<"..bot.."> "
elseif env=="MAIN" then
return "<"..bot.."> "
end
end


function ChatArrival(user,data)
local returndata=0
data=string.sub(data,1,string.len(data)-1)
local _,_,cmd = string.find(data,"%b<>%s+(%S+)")
if cmd then
return parsecmds(user,data,string.lower(cmd),"MAIN")
end
end


function ToArrival(user,data)
local returndata=0
data=string.sub(data,1,string.len(data)-1)
-- is this meant for our bot?
local _,_,whoTo = string.find(data,"$To:%s+(%S+)")
if (whoTo == Bot) then
local _,_,cmd = string.find(data,"$To:%s+%S+%s+From:%s+%S+%s+$%b<>%s+(%S+)")
returndata=parsecmds(user,data,string.lower(cmd),"PM")
end return returndata
end

function parsecmds(user,data,cmd,env)
local returndata=0
if cmd==gbcmd1 then
showshit(user,entries,gbname,gbfile,levgbcmd1,env) returndata=1 -- (user,container,wtf,file)
elseif cmd==gbcmd2 then
addshit(user,data,entries,gbfile,levgbcmd2,env) returndata=1 -- (user,data,container,file)
elseif cmd==gbcmd3 then
delshit(user,data,entries,gbfile,gbname,levgbcmd3,env) returndata=1 -- delshit(user,data,container,file,wtf)
-- news stuff
elseif cmd==ncmd1 then
showshit(user,entries,nname,nfile,levncmd1,env) returndata=1 -- (user,container,wtf,file)
elseif cmd==ncmd2 then
addshit(user,data,entries,nfile,levncmd2,env) returndata=1 -- (user,data,container,file)
elseif cmd==ncmd3 then
delshit(user,data,entries,nfile,nname,levncmd3,env) returndata=1 -- delshit(user,data,container,file,wtf)
-- requests stuff
elseif cmd==rcmd1 then
showshit(user,entries,rname,rfile,levrcmd1,env) returndata=1 -- (user,container,wtf,file)
elseif cmd==rcmd2 then
addshit(user,data,entries,rfile,levrcmd2,env) returndata=1 -- (user,data,container,file)
elseif cmd==rcmd3 then
delshit(user,data,entries,rfile,rname,levrcmd3,env) returndata=1 -- delshit(user,data,container,file,wtf)
end return returndata
end


function addshit(user,data,container,file,cmdlevel,env)
if cmdlevel~=0 then
if CheckUserLevel(user) >= cmdlevel then
local container=loadshit(file)
number=number+1
local _,_,entry=string.find(data,"%b<>%s+%S+%s+(.*)")
if entry then
container[number]=os.date("%c").."|"..user.sName.."|"..entry
saveshit(container,file)
user:SendData(parseenv(user,env,Bot).."Your entry has been successfully added.")
else
user:SendData(parseenv(user,env,Bot).."Please add an entry, too.")
end
container={}
else
user:SendData(parseenv(user,env,Bot).."You do not have sufficient rights to run that command! |")
end
else
user:SendData(parseenv(user,env,Bot).."That command is disabled.")
end
end


function loadshit(file)
local shit={}
number=0
local f,e = io.open(file,"r")
if f then
while 1 do
local line = f:read("*l")
if line ==  nil then
break
else
number = number +1
shit[number]=line
end
end
f:close(f)
end
return shit
end


function saveshit(container,file)
local handle = io.open(file,"w+")
for i=1,number do
if container[i] then
handle:write(container[i].."\n")
end
end
handle:flush()
        handle:close()
end

 function showshit(user,container,wtf,file,cmdlevel,env)
if cmdlevel~=0 then
if CheckUserLevel(user) >= cmdlevel then
local container=loadshit(file)
local msg="\r\nHier sind alle Eintr?ge in "..wtf..":\r\n\r\n"
if number>0 then
for i=1,number do
s,e,who,when,entry=string.find(container[i], "(.+)|(.+)|(.+)")
msg=msg..i..".\t"..who.." - "..when.." ---> "..entry.."\r\n"
end
else
msg=msg.."Keine Eintr?ge in "..wtf.."."
end
user:SendPM(Bot,msg)
else
user:SendData(parseenv(user,env,Bot).."You do not have sufficient rights to run that command! |")
end
else
user:SendData(parseenv(user,env,Bot).."That command is disabled.")
end
end


function delshit(user,data,container,file,wtf,cmdlevel,env)
if cmdlevel~=0 then
if CheckUserLevel(user) >= cmdlevel then
local container=loadshit(file)
local _,_,args=string.find(data,"%b<>%s+%S+%s+(.+)")
if args then
string.gsub(args,"(%d+)",function (what)
what = tonumber(what)
if what then
if container[what] then
user:SendData(parseenv(user,env,Bot).."Entry #"..what.." is deleted from the "..wtf..".|")
container[what]=nil
saveshit(container,file)
else
user:SendData(parseenv(user,env,Bot).."Entry #"..what.." wasn't found in the "..wtf..".|")
end
else
user:SendData(parseenv(user,env,Bot).. "I need the ID number to delete an entry.|")
end
end)
else
user:SendData(parseenv(user,env,Bot).. "I need at least one ID number to work! ;).|")
end
else
user:SendData(parseenv(user,env,Bot).."You do not have sufficient rights to run that command! |")
end
else
user:SendData(parseenv(user,env,Bot).."That command is disabled.")
end
container=nil
end


function CheckUserLevel(user)
if user.iProfile==0 then
return 5
elseif user.iProfile==1 then
return 4
elseif user.iProfile==3 then
return 2
elseif user.iProfile==2 then
return 3
else
return 1
end
end


function Main()
frmHub:RegBot(Bot)
end