PtokaX forum

Archive => Archived 4.0 boards => Help with Lua 4 scripts => Topic started by: Janhouse on 07 May, 2004, 20:09:49

Title: Nead help with !showreg
Post by: Janhouse on 07 May, 2004, 20:09:49
Hi! A got this script in forum but it is not so good.

It shows all registred users but it don't show are they online. In robocop script shows it. So could you help me?

Here is the script:
-- !showreg
-- !showlevel - level may be name or number

BotName = "!!![OP]BotZ"

NAMES = {
   ["reg"] = "\r\n :::::::::::::::::::::::::::::::::::::             Profils REG          :::::::::::::::::::::::::::::::::::::",
   ["vip"] = "\r\n :::::::::::::::::::::::::::::::::::::             Profils VIP          :::::::::::::::::::::::::::::::::::::",
   ["operator"] = "\r\n :::::::::::::::::::::::::::::::::::::             Profils OP             :::::::::::::::::::::::::::::::::::::",
   ["moderator"] = "\r\n :::::::::::::::::::::::::::::::::::::        Profils Moderators      :::::::::::::::::::::::::::::::::::::",
   ["master"] = "\r\n :::::::::::::::::::::::::::::::::::::          Profils Masters         :::::::::::::::::::::::::::::::::::::"
   }

function DataArrival(curUser, data)
if strsub(data, 1, 1) ~= "<" then return end
   data = strsub(data, 1, (strlen(data)-1))
local s, e, cmd, args = strfind(data, "^%b<>%s%!(%a+)%s*(.*)")
if not s then return end
cmd = strlower(cmd)
if (cmd=="showreg") then
      Msg = "\r\n"
ShowRegistered()
      curUser:SendPM(BotName, Msg)
return 1
   elseif cmd == "showlevel" then
      Msg = "\r\n"
      ViewRegs(args)
      curUser:SendPM(BotName, Msg)
      return 1
end
end

function ShowRegistered()

ViewRegs("MASTER")
ViewRegs("OPERATOR")
ViewRegs("VIP")
ViewRegs("REG")
Msg = Msg.."\r\n\tSaraksta beigas"
end

function ViewRegs(Level)
   table = nil
   if tonumber(Level) then
      Level = GetProfileName(Level)
      table = GetUsersByProfile(Level)
   else
      table = GetUsersByProfile(Level)
   end
   if type(table) == "table" then
      local temp = {}
      for index, names in table do
         tinsert(temp, names)
      end
      sort(temp)
      if getn(temp) == 0 then
         Msg = Msg.."\r\n ".."Lietotaji ar profilu "..Level.." nav atrasti. \r\n"
      else
         Msg = Msg..NAMES[strlower(Level)]
         Msg = Msg.."\r\n :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
         for i=1,getn(temp) do
            local _,_,ProfileName = strfind(temp[i],"(%S+)")
            Msg = Msg.."\r\n "..i..".  "..ProfileName..""
         end
         Msg = Msg.."\r\n :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
         Msg = Msg.."\r\n "
      end
   else
      Msg = Msg.."\r\n ".."Lietotaji ar profilu  "..Level.." nav atrasti. \r\n"
   end
end
Title: !showreg
Post by: Xico on 08 May, 2004, 05:02:24
Try this:

-- !showreg
-- !showlevel - level may be name or number

BotName = "!!![OP]BotZ"

NAMES = {
   ["reg"] = "\r\n :::::::::::::::::::::::::::::::::::::             Profils REG          :::::::::::::::::::::::::::::::::::::",
   ["vip"] = "\r\n :::::::::::::::::::::::::::::::::::::             Profils VIP          :::::::::::::::::::::::::::::::::::::",
   ["operator"] = "\r\n :::::::::::::::::::::::::::::::::::::             Profils OP             :::::::::::::::::::::::::::::::::::::",
   ["moderator"] = "\r\n :::::::::::::::::::::::::::::::::::::        Profils Moderators      :::::::::::::::::::::::::::::::::::::",
   ["master"] = "\r\n :::::::::::::::::::::::::::::::::::::          Profils Masters         :::::::::::::::::::::::::::::::::::::"
   }
function Main()
frmHub:RegBot(BotName)
end

function DataArrival(curUser, data)

if strsub(data, 1, 1) ~= "<" then
return
end
   data = strsub(data, 1, (strlen(data)-1))
local s, e, cmd, args = strfind(data, "^%b<>%s%!(%a+)%s*(.*)")
if not s then
return
end
cmd = strlower(cmd)
if (cmd=="showreg") then
      Msg = "\r\n"
ShowRegistered()
      curUser:SendPM(BotName, Msg)
return 1
   elseif cmd == "showlevel" then
      Msg = "\r\n"
      ViewRegs(args)
      curUser:SendPM(BotName, Msg)
      return 1
end
end

function ShowRegistered()

ViewRegs("MASTER")
ViewRegs("OPERATOR")
ViewRegs("VIP")
ViewRegs("REG")
Msg = Msg.."\r\n\tSaraksta beigas"
end

function ViewRegs(Level)
   table = nil
   if tonumber(Level) then
      Level = GetProfileName(Level)
      table = GetUsersByProfile(Level)
   else
      table = GetUsersByProfile(Level)
   end
   if type(table) == "table" then
      local temp = {}
      for index, names in table do
         tinsert(temp, names)
      end
      sort(temp)
      if getn(temp) == 0 then
         Msg = Msg.."\r\n ".."Lietotaji ar profilu "..Level.." nav atrasti. \r\n"
      else
         Msg = Msg..NAMES[strlower(Level)]
         Msg = Msg.."\r\n :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
         for i=1,getn(temp) do
            local _,_,ProfileName = strfind(temp[i],"(%S+)")
           
            -- / Added by Xico
            local sOnLine ="Off line"
            if GetItemByName(ProfileName) then
            sOnLine ="On line"
            end
            -- / end
           
            Msg = Msg.."\r\n "..i..".  "..ProfileName.."\t\t"..sOnLine..""
         end
         Msg = Msg.."\r\n :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
         Msg = Msg.."\r\n "
      end
   else
      Msg = Msg.."\r\n ".."Lietotaji ar profilu  "..Level.." nav atrasti. \r\n"
   end
end
Title:
Post by: Corayzon on 08 May, 2004, 06:48:08
this might seem like a handfull but its relyable and sercure...hope it helps ;)

-- None Editable Settings
prefixs = {}

-- Editable Settings
sBot = "Reglist-Bot"

prefixs["+"] = 1
prefixs["!"] = 1

cmdreglist = "reglist" -- the command that the reglist will show on
cmdreglistlevel = 3 -- the profile level that is needed to do the command
cmdreglistusage = "profilename" -- the usage string sent back to user when args are not inputted

reglistmsg = "#new#new#tabR e g i s t e r e d   U s e r   L i s t#new#new" -- The title of the reglist message
reglistformat = "#tab#tab#user#new" -- The format at which the reglist adds the usernames
reglisterr = "***You are unable to view registered users for a profile that doesn't exist!" -- The error returned to the user when the reglist isnt found

-- Scripts Start
function DataArrival(user, data)

data = strsub(data, 1, strlen(data) -1)
local _,_,cmd=strfind(data, "%b<>%s+(%S+)")

if cmd ~= nil and prefixs[strsub(cmd,1,1)] == 1 then
cmd = strlower(cmd)
cmd = strsub(cmd, 2, strlen(cmd))

if cmd == cmdreglist then
if doRegisterCommand(user, data, cmd) then return 1 end
end
end
end

function doRegisterCommand(user, data, cmd)
if cmd == cmdreglist then
if cmdreglistlevel > user.iProfile then
showRegList(user, data)
end
return 1
end
end

function showRegList (user,data)
local _,_, pName = strfind(data, "%b<>%s+%S+%s+(.*)" )
if pName ~= nil  then
local tUsers = GetUsersByProfile(pName)
local iCount = zgetn(tUsers)
if iCount == 0 then user:SendData(sBot, translateString(reglisterr, {["#user"] = user.sName, ["#profile"] = pName})) return end
local sOut = translateString(reglistmsg, {["#user"] = user.sName, ["#profile"] = pName})
for iIndex = 0, iCount - 1 do
sOut = sOut .. translateString(reglistformat, {["#user"] = tUsers[iIndex], ["#profile"] = pName})
end
user:SendPM(sBot, sOut)
else
sendUsage(user, cmdreglist, "profilename")
end
end

function translateString(sString, tTranslations)

local _ = ""
sString, _ = gsub(sString, "#hd" ,frmHub:GetHubDescr())
sString, _ = gsub(sString, "#uc", frmHub:GetUsersCount())
sString, _ = gsub(sString, "#hb", frmHub:GetHubBotName())
sString, _ = gsub(sString, "#mu", frmHub:GetMaxUsers())
sString, _ = gsub(sString, "#ms", convertShareSize(frmHub:GetMinShare(), 2))
sString, _ = gsub(sString, "#op", frmHub:GetOpChatName())
sString, _ = gsub(sString, "#ra", frmHub:GetRedirectAddress() or "none")
sString, _ = gsub(sString, "#hs", convertShareSize(frmHub:GetCurrentShareAmount()))
sString, _ = gsub(sString, "#h", frmHub:GetHubName())
sString, _ = gsub(sString, "#new", "\r\n")
sString, _ = gsub(sString, "#tab", "\t")

if tTranslations ~= nil then
for sConvertFrom, sConvertTo in tTranslations do
sString, _ = gsub(sString, sConvertFrom, sConvertTo)
end
end
return sString
end

function convertShareSize(iSize, iSkip)

local tList = {[1] = "B", [2] = "kB", [3] = "MB", [4] = "GB", [5] = "TB"}
local iCount = 1
if iSkip ~= nil then iCount = iSkip + 1 end

while iSize > 1024 do
if iSize >= 1024 then
iSize = iSize / 1024
iCount = iCount + 1
end
end

local sChar = ""
local iLen = strlen(iSize)
local iStart = iLen

if strfind(iSize, ".") then
  while sChar ~= "." do
sChar = strsub(iSize, iStart, iStart)
iStart = iStart - 1
if sChar ~= "." then iLen = iLen - 1 end
if sChar == "" or sChar == nil then
iLen = strlen(iSize) - 2
break
end
end
end

iSize = strsub(iSize,1,iLen + 2)
return iSize .. " " .. tList[iCount]
end

function zgetn(tTable)
return (tTable and (getn(tTable) + (tTable[0] and 1 or 0))) or 0;
end
Title:
Post by: Janhouse on 08 May, 2004, 13:37:43
Thanx Xico but it isn't working. And I don't know why.
Title: !showreg
Post by: Xico on 09 May, 2004, 03:31:36
Hi Janhouse

I'm sorry, I did test it. Was working.
Can you tell us a litle more about the error, debug messages, anything ...
Title:
Post by: Janhouse on 09 May, 2004, 08:44:10
It shows

QuoteSyntax error: expected;
  last token read: `&' at line 68 in string "-- !showreg
..."

Can you fix it?  ?(
Title:
Post by: Madman on 09 May, 2004, 15:05:14
The problem is here

Msg = Msg..& quot;\r\n

And you made it.... becuse when i copyed the script you posted, i got the same error you did so, its not xico faults... something probarly got wrong when you posted the script.....

All we have to do i to figer out what the "& quot;" should bee insteaad..

sorry for my bad english...i am swedish =) and not so good at spelling
Title:
Post by: Optimus on 09 May, 2004, 15:47:51
mm, strange a posted a Update but got the same results. Even posted it in other formats the [code] thingy but also same results. Still places  .. & quot .. in the lines
Title:
Post by: Janhouse on 09 May, 2004, 16:08:46
Please! Can somebody fix it?  ?(
Title:
Post by: nErBoS on 09 May, 2004, 18:47:47
Hi,

Fixed..

------------------BEGINING OF CODE-------------------
-- !showreg
-- !showlevel - level may be name or number

BotName = "!!![OP]BotZ"

NAMES = {
   ["reg"] = "\r\n   :::::::::::::::::::::::::::::::::::::             Profils REG          :::::::::::::::::::::::::::::::::::::",
   ["vip"] = "\r\n   :::::::::::::::::::::::::::::::::::::             Profils VIP          :::::::::::::::::::::::::::::::::::::",
   ["operator"] = "\r\n   :::::::::::::::::::::::::::::::::::::             Profils OP             :::::::::::::::::::::::::::::::::::::",
   ["moderator"] = "\r\n   :::::::::::::::::::::::::::::::::::::        Profils Moderators      :::::::::::::::::::::::::::::::::::::",
   ["master"] = "\r\n   :::::::::::::::::::::::::::::::::::::          Profils Masters         :::::::::::::::::::::::::::::::::::::"
   }
function Main()
   frmHub:RegBot(BotName)
end

function DataArrival(curUser, data)

   if strsub(data, 1, 1) ~= "<" then
      return
   end
   data = strsub(data, 1, (strlen(data)-1))
   local s, e, cmd, args = strfind(data, "^%b<>%s%!(%a+)%s*(.*)")
   if not s then
      return
   end
   cmd = strlower(cmd)
   if (cmd=="showreg") then
        Msg = "\r\n"
      ShowRegistered()
        curUser:SendPM(BotName, Msg)
      return 1
   elseif cmd == "showlevel" then
        Msg = "\r\n"
        ViewRegs(args)
        curUser:SendPM(BotName, Msg)
        return 1
   end
end

function ShowRegistered()

   ViewRegs("MASTER")
   ViewRegs("OPERATOR")
   ViewRegs("VIP")
   ViewRegs("REG")
   Msg = Msg.."\r\n\tSaraksta beigas"
end

function ViewRegs(Level)
   table = nil
   if tonumber(Level) then
      Level = GetProfileName(Level)
      table = GetUsersByProfile(Level)
   else
      table = GetUsersByProfile(Level)
   end
   if type(table) == "table" then
      local temp = {}
      for index, names in table do
         tinsert(temp, names)
      end
      sort(temp)
      if getn(temp) == 0 then
         Msg = Msg.."\r\n ".."Lietotaji ar profilu "..Level.." nav atrasti. \r\n"
      else
         Msg = Msg..NAMES[strlower(Level)]
         Msg = Msg.."\r\n\t:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
         for i=1,getn(temp) do
            local _,_,ProfileName = strfind(temp,"(%S+)")
           
            -- / Added by Xico
            local sOnLine ="Off line"
            if GetItemByName(ProfileName) then
               sOnLine ="On line"
            end
            -- / end
           
            Msg = Msg.."\r\n "..i..".  "..ProfileName.."\t\t"..sOnLine..""
         end
    Msg=Msg.."\r\n\t:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
         Msg = Msg.."\r\n "
      end
   else
      Msg = Msg.."\r\n ".."Lietotaji ar profilu  "..Level.." nav atrasti. \r\n"
   end
end
------------------END OF CODE-------------------

Best regards, nErBoS
Title:
Post by: Madman on 09 May, 2004, 19:33:48
no... still same error

Syntax error: expected;
  last token read: `&' at line 68 in file `D:\Program\Hub\PtokaX-0.330\scripts\Showreg.lua'
Title:
Post by: nErBoS on 09 May, 2004, 22:05:12
Hi,

This is the forum making this error, where you have this
"& quot;" put this "

There is two places with that.

Best regards, nErBoS
Title:
Post by: Madman on 10 May, 2004, 00:21:06
Yup, that fixed the problem...
I should have known, that it was supose to be " and not & quot;

Well it , works fine now...

 :rolleyes: