Howdy! Wonder if someone would be able to translate this script into LUA 5 :)
cheers//Dj_OcTaGoN
--## REQUESTED REGISTER BOT 1.0
--## Requested by Dj_OcTaGoN
--## Made by nErBoS
--## Some BUGs corrected
--## Added a [REG] nick checker
--## OPs warning of new request
--## Save the denieds and accpets
--## Added the command +delete
--## Commands:
--## +reqreg -- Makes a request to register your nick
--##
--## ONLY FOR OPs:
--## +seereq -- Show all the requests to register
--## +accept -- Accepts the request of regiter to an user
--## +denied -- Denies the request of register to an user
--##
--## ONLY FOR MASTERS
--## +delete -- Deletes the entry of a request
sBot = "RR-Bot"
arrRR = {}
fRR = "reqreg.dat"
--## Configuration ##--
uLaterPtokax = 0 -- Choose 0 if you are using a Ptokax Version 0.3.3.0 or higher
-- Choose 1 if you are using a Ptokax Version lower then 0.3.3.0
--## END ##--
function Main()
frmHub:RegBot(sBot)
LoadFromFile(fRR)
end
function OnExit()
SaveToFile(fRR,arrRR,"arrRR")
end
function NewUserConnected(user)
if (arrRR[user.sName] ~= nil) then
if (type(arrRR[user.sName]["DENIED"]) == "table") then
user:SendData(sBot, "Your request for register has been denied.")
arrRR[user.sName]["DENIED"]["WARN"] = nil
arrRR[user.sName]["DENIED"] = arrRR[user.sName]["DENIED"]["OP"]
if (uLaterPtokax == 1) then
OnExit()
end
elseif (type(arrRR[user.sName]["ACCEPT"]) == "table") then
user:SendData(sBot, "Your request for register has been accepted.")
arrRR[user.sName]["ACCEPT"]["WARN"] = nil
arrRR[user.sName]["ACCEPT"] = arrRR[user.sName]["ACCEPT"]["OP"]
if (uLaterPtokax == 1) then
OnExit()
end
end
end
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)
local s,e,cmd = strfind(data, "%b<>%s+(%S+)")
if (cmd == "+reqreg") then
local s,e,sPass = strfind(data, "%b<>%s+%S+%s+(%S+)")
if (sPass == nil) then
user:SendPM(sBot, "Syntax Error, +reqreg , you must write a pass.")
elseif (strfind(sPass, "[%c|\n\r]")) then
user:SendPM(sBot, "Invalid Password. Try Again.")
elseif (strfind(user.sName, "[%c|\n\r]")) then
user:SendPM(sBot, "Your nick is invalid. Please choose a new one.")
elseif (user.iProfile ~= -1) then
user:SendPM(sBot, "You are already register in our HUB.")
elseif (strsub(user.sName,1,5) ~= "[REG]") then
user:SendPM(sBot, "To make the request you need to have the prefix [REG] on your nick.")
elseif (arrRR[user.sName] ~= nil) then
user:SendPM(sBot, "You have already made a request.")
else
arrRR[user.sName] = {["PASS"] = sPass, ["TIME"] = GetTime()}
user:SendPM(sBot, "Your request for register has been saved. Don't forget your password: "..sPass)
SendPmToOps(sBot, "The user "..user.sName.." has requested to be register.")
if (uLaterPtokax == 1) then
OnExit()
end
end
return 1
elseif (user.bOperator and cmd == "+seereq") then
local sTmp,sTmp2,sTmp3,sNick,arrTable = "Request of register in the HUB:\r\n\r\n","Users accepted:\r\n\r\n","Users denied:\r\n\r\n"
for sNick, arrTable in arrRR do
if (arrTable["DENIED"] ~= nil) then
if (arrTable["DENIED"]["OP"] == nil) then
sTmp3 = sTmp3.."USER: "..sNick.." DENIED BY: "..arrTable["DENIED"].."\r\n"
else
sTmp3 = sTmp3.."USER: "..sNick.." DENIED BY: "..arrTable["DENIED"]["OP"].."\r\n"
end
elseif (arrTable["ACCEPT"] ~= nil) then
if (arrTable["ACCEPT"]["OP"] == nil) then
sTmp2 = sTmp2.."USER: "..sNick.." ACCEPTED BY: "..arrTable["ACCEPT"].."\r\n"
else
sTmp2 = sTmp2.."USER: "..sNick.." ACCEPTED BY: "..arrTable["ACCEPT"]["OP"].."\r\n"
end
else
sTmp = sTmp.."USER: "..sNick.." TIME OF REQUEST: "..arrTable["TIME"].."\r\n"
end
end
user:SendPM(sBot, sTmp.."\r\n"..sTmp2.."\r\n"..sTmp3)
return 1
elseif (user.bOperator and cmd == "+accept") then
local s,e,sNick = strfind(data, "%b<>%s+%S+%s+(%S+)")
if (sNick == nil) then
user:SendPM(sBot, "Syntax Error, +accept , you must write a nick.")
elseif (arrRR[sNick] == nil) then
user:SendPM(sBot, "The nick "..sNick.." isn't in our table of request (WARNING: the nick is case sensative).")
elseif (GetItemByName(sNick) == nil) then
AddRegUser(sNick,arrRR[sNick]["PASS"],3)
arrRR[sNick] = {["ACCEPT"] = {["WARN"] = 1, ["OP"] = user.sName}}
user:SendPM(sBot, "The user "..sNick.." was been registered.")
if (uLaterPtokax == 1) then
OnExit()
end
else
sNick = GetItemByName(sNick)
AddRegUser(sNick.sName,arrRR[sNick.sName]["PASS"],3)
arrRR[sNick.sName] = {["ACCEPT"] = {["WARN"] = 1, ["OP"] = user.sName}}
user:SendPM(sBot, "The user "..sNick.sName.." was been registered.")
sNick:SendPM(sBot, "Your request for register was been accept. Please reconnect with your password.")
if (uLaterPtokax == 1) then
OnExit()
end
end
return 1
elseif (user.bOperator and cmd == "+denied") then
local s,e,sNick = strfind(data, "%b<>%s+%S+%s+(%S+)")
if (sNick == nil) then
user:SendPM(sBot, "Syntax Error, +denied , you must write a nick.")
elseif (arrRR[sNick] == nil) then
user:SendPM(sBot, "The nick "..sNick.." isn't in our table of request (WARNING: the nick is case sensative).")
elseif (GetItemByName(sNick) == nil) then
arrRR[sNick] = {["DENIED"] = {["WARN"] = 1, ["OP"] = user.sName}}
user:SendPM(sBot, "The user "..sNick.." was been denied the register.")
if (uLaterPtokax == 1) then
OnExit()
end
else
sNick = GetItemByName(sNick)
arrRR[sNick.sName] = {["DENIED"] = {["WARN"] = 1, ["OP"] = user.sName}}
user:SendPM(sBot, "The user "..sNick.sName.." was been denied the register.")
sNick:SendPM(sBot, "Your request for register was been denied.")
if (uLaterPtokax == 1) then
OnExit()
end
end
return 1
elseif (user.iProfile == 0 and cmd == "+delete") then
local s,e,sNick = strfind(data, "%b<>%s+%S+%s+(%S+)")
if (sNick == nil) then
user:SendPM(sBot, "Syntax Error, +delete , you must write a nick.")
elseif (arrRR[sNick] == nil) then
user:SendPM(sBot, "The nick "..sNick.." isn't in our table of request (WARNING: the nick is case sensative).")
else
arrRR[sNick] = nil
user:SendPM(sBot, "The entry of the request of the nick "..sNick.." has been deleted.")
end
return 1
end
end
end
function GetTime()
return date("%d").."/"..date("%m").."/20"..date("%y").." "..date("%H")..":"..date("%M")..":"..date("%S")
end
function Serialize(tTable, sTableName, sTab)
assert(tTable, "tTable equals nil");
assert(sTableName, "sTableName equals nil");
assert(type(tTable) == "table", "tTable must be a table!");
assert(type(sTableName) == "string", "sTableName must be a string!");
sTab = sTab or "";
sTmp = ""
sTmp = sTmp..sTab..sTableName.." = {\n"
for key, value in tTable do
local sKey = (type(key) == "string") and format("[%q]",key) or format("[%d]",key);
if(type(value) == "table") then
sTmp = sTmp..Serialize(value, sKey, sTab.."\t");
else
local sValue = (type(value) == "string") and format("%q",value) or tostring(value);
sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue
end
sTmp = sTmp..",\n"
end
sTmp = sTmp..sTab.."}"
return sTmp
end
function SaveToFile(file , table , tablename)
writeto(file)
write(Serialize(table, tablename))
writeto()
end
function LoadFromFile(file)
if (readfrom(file) ~= nil) then
readfrom(file)
dostring(read("*all"))
readfrom()
end
end
use NL's gui converter,
and post script editor's errors here!
GOOD luck!