PtokaX forum

Archive => Archived 5.0 boards => Request for scripts => Topic started by: Requiem on 09 March, 2005, 11:47:35

Title: Scripts To Be Converted
Post by: Requiem on 09 March, 2005, 11:47:35
Please help me. Thanks a lot from now.

EDIT: Removed stupid joke.

A Script to PM unregged users.
-- Made by Optimus
-- 08/12/03

sBot = "BotName"

unRegUsers = {}
unRegUserFile = "unRegUsers.txt"

function Main()
frmHub:RegBot(sBot)
doloadTable(unRegUserFile)
if frmHub:GetUsersCount() == 0 then unRegUsers = {}
dosaveTable(user,data)
end
end

function NewUserConnected(user)
if user.iProfile == -1 then
doLog_unRegUsers(user, data)
end
end
function UserDisconnected(user)
if unRegUsers[user.sName] then
unRegUsers[user.sName] = nil
dosaveTable(user,data)
end
end

function DataArrival(user, data)
if (strsub(data, 1, 1) == "<" ) then
data=strsub(data,1,strlen(data)-1)
_,_,cmd=strfind(data, "%b<>%s+(%S+)")

if user.bOperator then
if (cmd == "!unregpm") then
s,e,cmd,message = strfind(data,"%b<>%s+(%S+)%s+(.+)")

if message then
tosend = ""
if (strlen ( message)*2/3+2) < 76 then
border = strrep ("-", strlen (message)*2/3+2)
else
border = strrep ("-", 75)
end
tosend = "\r\n\r\n"..border.."\r\n"..message.."\r\n"..border.."\r\n"

if unRegUsers then
for name,_ in unRegUsers do
SendPmToNick(name,sBot, tosend)
end
end
else
user:SendData(sBot, "*** Please Enter a Message!")
end
end
end
end
end

function doLog_unRegUsers(user, data)
if unRegUsers[user.sName] == nil then
unRegUsers[user.sName] = 1
dosaveTable(user,data)
end
end

function doloadTable(unRegUserFile)
assert(readfrom(unRegUserFile))
dostring(read("*all"))
readfrom()
end

function dosaveTable(user,data)
writeto(unRegUserFile)
write("unRegUsers = {")
for a,b in unRegUsers do
if b then
write(format("[%q]=",a)..b..",")
end
end
write("}" )
writeto()
end


--RegHound 1.0
--Requested by Sin
--Script by Mutor The Ugly 7/10/14
--
--Prompts unregistered users to register on repaeating interval
--Hounds in Main Chat, as well as PM
--
--

--User Settings-------------------------------------------------------------------------------------
--
--Name for bot[You can use your main bot, if so no need to register this bot. See 'function main'.
sBot = "BotName
--Interval [in minutes] to PM unregistered users
Mins =  "60"
--Message to send to unregistered Users
UnRegMsg = "message goes here
--
--End User Settings----------------------------------------------------------------------------------


UnRegTab = {}
UnReg = "UnReg.dat"


function Main()
SetTimer(Mins*60000)
StartTimer()
--frmHub:RegBot(sBot) --If using main bot, remark this line, add -- ie.. --frmHub:RegBot(sBot)
LoadFromFile(UnReg)
end

function OnExit()
SaveToFile(UnReg , UnRegTab , "UnRegTab")
end

function NewUserConnected(user, data)
if (user.iProfile == -1 and UnRegTab[user.sName] == nil) then
UnRegTab[user.sName] = 1
end
end

function UserDisconnected(user, data)
if (user.iProfile == -1 and UnRegTab[user.sName] ~= nil) then
UnRegTab[user.sName] = nil
end
end

function OnTimer()
local usr,aux
for usr, aux in UnRegTab do
if (GetItemByName(usr) ~= nil) then
sNick = GetItemByName(usr)
sNick:SendPM(sBot, UnRegMsg)
sNick:SendData(sBot, UnRegMsg)
end
end
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


-- Spam King (spam blocker) (for PtokaX 0.3.2.6TD3)
-- by: gg3k
-- file: SpamKing.lua
-- This script stops spammers using automessaging software.
-- It blocks all traffic that is passed through DataArrival until the user has sent the validation code.
-- This effectively prevents searchbots from getting any results from the hub too.

BotName = "BotName" -- Name of the bot.

TestReggedUsers = 1 -- Set to 1 if you want to require validation from registered users.

TestOperators = 0 -- Set to 1 if you want to require validation from operators.

NoChatUsers = { }

--// This function is fired at the serving start

function Main()

end

--// This function is fired when a new data arrives

function DataArrival(curUser, sData)

sData = strsub(sData, 1, strlen(sData)-1)

if curUser.iProfile == -1 or TestReggedUsers == 1 then

if NoChatUsers[curUser.sName] ~= nil then

if NoChatUsers[curUser.sName] == 1 then

NoChatUsers[curUser.sName] = random(1000, 9999)

SendToNick(curUser.sName, "<"..BotName.."> To open mainchat please enter numbers here:"..NoChatUsers[curUser.sName] )

return 1

else

_,_,keystring = strfind(sData, "%b<>%s+(%S+)")

if tostring(keystring) == tostring(NoChatUsers[curUser.sName]) then

NoChatUsers[curUser.sName] = nil

SendToNick(curUser.sName, "<"..BotName.."> Main Chat opened.")

else

SendToNick(curUser.sName, "<"..BotName.."> To open mainchat please enter numbers here: "..NoChatUsers[curUser.sName] )

end

return 1

end

end

end

end

--// This function is fired when a new user finishes the login

function NewUserConnected(curUser)

NoChatUsers[curUser.sName] = 1

end

--// This function is fired when an operator enters the hub

function OpConnected(curUser)

if TestOperators == 1 then

NoChatUsers[curUser.sName] = 1

end

end

--// This function is fired when an user disconnects

function UserDisconnected(curUser)

NoChatUsers[curUser.sName] = nil

end

--// This function is fired when an operator disconnects

function OpDisconnected(curUser)

NoChatUsers[curUser.sName] = nil

end


Title:
Post by: Requiem on 09 March, 2005, 11:50:39
Continuing:

-- UserWelcome by RabidWombat
-- Rewritten for "YYYY. MM. DD. HH:MM:SS" time format in log by bastya_elvtars
-- added option if you use AshCan or higher by bastya_elvtars, this is for profiles, otherwise it lists ops only, and masters never.
-- added support for ptokax 0.330 (error.log is in the ptokax/logs directory @ 0.330) by bastya_elvtars
-- Tested with AshCan, 15.18 & 15.25

-- Globals --

AshCanPlus=1 -- for ptokax under 0.325 AshCan, set to 0.
HubAddress = "trucker1.dyndns.org"
BotName = "(@)Truckers Garage(@)" -- use a bot thats in the userlist
SendPM = 1
--SendPM = nil -- uncomment this and comment the above for mainchat welcome.
   -- Note that if you don't specify a bot that is in ur userlist, (aka registered)
   -- the connecting users will get the text in main as well.


-- Events --

function NewUserConnected(user)
i,j,share = strfind(user.sMyInfoString, "$(%d+)%$")

if share==nil then
user:Disconnect()
else
usershare = format("%0.2f", tonumber(share)/(1024*1024*1024))

local tmp
tmp = "Hello "..user.sName.." and welcome to "..frmHub:GetHubName().."\r\n\r\n"
tmp = tmp.."\tYour IP: "..user.sIP.."\r\n"
tmp = tmp.."\tYour Nick: "..user.sName.."\r\n"
tmp = tmp.."\tYour share: "..usershare.."\r\n\r\n"
tmp = tmp.."\tHub IP:"..HubAddress.."\r\n"
tmp = tmp.."\tHub Name: "..frmHub:GetHubName().."\r\n"
tmp = tmp.."\tHub Desc: "..frmHub:GetHubDescr().."\r\n\r\n"
tmp = tmp.."\tUsers Online: "..frmHub:GetUsersCount().."\r\n"
--tmp = tmp.."\tOperators Online: "..CountOPs().."\r\n"
local _, day, hr, mn = GetUpTime()
tmp = tmp.."\tUptime: "..day.." days, "..hr.." hours, "..mn.." minutes.\r\n"

if(SendPM) then
user:SendPM(BotName,tmp)
else
user:SendData(BotName,tmp)
end
end
end

-- Functions --

function CountOPs()
local tmp,count=opscount(),0
if tmp then
for id = 0, getn(tmp) do
if GetItemByName(tmp[id]) then
count = count + 1;
end
end
end
return count
end

function opscount()
if AshCanPlus~=1 then
local tmp = GetUsersByProfile(GetProfileName(1))
return tmp
else
local tmp, tmp2 = GetUsersByProfile(GetProfileName(1)),GetUsersByProfile(GetProfileName(0))
for m=1,getn(tmp2) do
tinsert(tmp,tmp2[m])
end return tmp
end
collectgarbage(); flush()
end

-- Gets the hubs uptime
-- return: hrs, mns
-- Author: RabidWombat
-- Updater: bastya_elvtars
function GetUpTime()
local loggrabbing=function()
if readfrom("../logs/error.log") then
readfrom()
return openfile("../logs/error.log", "r"), nil
elseif readfrom ("../error.log") then
readfrom()
return openfile("../error.log", "r"), nil
end -- compatibility with all ptokax
end
local fileparse=function()
local hFile,sFinal=%loggrabbing()
if (hFile) then
local line = read(hFile)
while line do
if(strsub(line, -15) == "Serving started") then
-- s, e, sFinal = strfind(line, "([^-]+).+")
sFinal = strsub(line, 1, strlen(line) - 17) -- changed this line because there are '-' in the time, duh
end
line = read(hFile)
end
closefile(hFile)
return sFinal
else
return date("%Y. %m. %d. %X")
end
end

local StartTime = JulianDate(SplitTimeString(fileparse()));
-- Changed here too to new format
local EndTime = JulianDate(SplitTimeString(date("%Y. %m. %d. %X")));
local diff =  EndTime - StartTime;
local hours, mins= floor(diff) * 24 + floor(frac(diff) * 24), floor(frac(frac(diff)*24)*60)
local hubuptime=hours*60+mins -- converting to minutes, that's to make days too
-- now parsing the minute data
local days = floor(hubuptime/1440)
local hrs = floor((hubuptime-(days*1440))/60)
local min = floor((hubuptime-(days*1440)-(hrs*60)))
return hubuptime, days, hrs, mins
-- return 0,0,0,0 -- this should NEVER happen
end

-- Split a specific Time string into its components
-- New Format: D. M. Y. HR:MN:SC" - 24hr time
-- return: Y,M,D,HR,MN,SC  HR is in 24hr format
function SplitTimeString(TimeString) --
--local s,e,Y,M,D,HR,MN,SC = strfind(TimeString, "([^.]+). ([^.]+). ([^.]+). ([^:]*):([^:]*):(%S*)");
-- 14/09/2004 16.23.25
local grab=function(TimeString)
if strfind(TimeString,"/")then
local _,_,D,M,Y,HR,MN,SC=strfind(TimeString,"([^/]+).([^/]+).(%S+) ([^:]+).([^:]+).([^:]+)")
return D,M,Y,HR,MN,SC
elseif strfind (TimeString,"%d%-%d") then
local _,_,D,M,Y,HR,MN,SC = strfind(TimeString, "([^-]+).([^-]+).(%S+) ([^:]+).([^:]+).(%S+)")
return D,M,Y,HR,MN,SC
elseif strfind (TimeString,"%d%d.%d%d.%d%d%d%d%s+") then
local _,_,Y,M,D,HR,MN,SC = strfind(TimeString, "([^.]+).([^.]+).(%S+). ([^:]+).([^:]+).(%S+)")
return D,M,Y,HR,MN,SC
else
local _,_,Y,M,D,HR,MN,SC = strfind(TimeString, "([^.]+). ([^.]+). ([^.]+). ([^:]+).([^:]+).(%S+)")
return D,M,Y,HR,MN,SC
end
end

local D,M,Y,HR,MN,SC=grab(TimeString)
D = tonumber(D)
M = tonumber(M)
Y = tonumber(Y)
HR = tonumber(HR)
--assert(HR < 24)
MN = tonumber(MN)
--assert(MN < 60)
SC = tonumber(SC)
--assert(SC < 60)

assert(HR < 24);
assert(MN < 60);
assert(SC < 60);
return D,M,Y,HR,MN,SC
end

function JulianDate(DAY, MONTH, YEAR, HOUR, MINUTE, SECOND) -- HOUR is 24hr format
local jy, ja, jm;
assert(YEAR ~= 0);
assert(YEAR ~= 1582 or MONTH ~= 10 or DAY < 4 or DAY > 15);
--The dates 5 through 14 October, 1582, do not exist in the Gregorian system!");
if(YEAR < 0 ) then
YEAR = YEAR + 1;
end
if( MONTH > 2) then
jy = YEAR;
jm = MONTH + 1;
else
jy = YEAR - 1;
jm = MONTH + 13;
end
local intgr = floor( floor(365.25*jy) + floor(30.6001*jm) + DAY + 1720995 );
--check for switch to Gregorian calendar
local gregcal = 15 + 31*( 10 + 12*1582 );
if(DAY + 31*(MONTH + 12*YEAR) >= gregcal ) then
ja = floor(0.01*jy);
intgr = intgr + 2 - ja + floor(0.25*ja);
end
--correct for half-day offset
local dayfrac = HOUR / 24 - 0.5;
if( dayfrac < 0.0 ) then
dayfrac = dayfrac + 1.0;
intgr = intgr - 1;
end
--now set the fraction of a day
local frac = dayfrac + (MINUTE + SECOND/60.0)/60.0/24.0;
--round to nearest second
local jd0 = (intgr + frac)*100000;
local  jd  = floor(jd0);
if( jd0 - jd > 0.5 ) then jd = jd + 1 end
return jd/100000;
end

function frac(num)
return num - floor(num);
end
--------------------------------------------------------------------------------


Please dont tell me to use RoboCop's user welcome for the last script. I am using this script edited but when I tried to edit RC's it didn't work.

--Whisper 1.01
--by Mutor
--Request by Snoris
--
--Sends a "For your eyes only message" to another user in main.
--Added option for right click command
--
--User Settings-------------------------------------------------------------------------------------
Comm = "!fisilda" -- Script Command
Bot = "bot" -- Rename to your main Px bot
Confirmation = "1" -- Show whisper confirmation [show to sender only] "1"=yes "0"=no
SendComm = "0" -- Send user command [right click] "1"=yes "0"=no
--End User Settings----------------------------------------------------------------------------------
--
--$UserCommand 1 X  Where -> 1=Hub Menu 2=User Menu 3=Hub/User Menu
--

function NewUserConnected(user)
if SendComm == "1" then
user:SendData("$UserCommand 1 2 Whisper To User $<%[mynick]> "..Comm.." %[nick] %[line:Whisper-Message]||")
user:SendData(" *** Notice :: Right click 'Whisper' command enabled ***")
end
end

OpConnected = NewUserConnected

function DataArrival(user, data)
s,e,cmd,who,msg = strfind(data, "%b<>%s+(%S+)%s+(%S+)%s+(.+)")
if (cmd == Comm) and user.bOperator then -- Use this for Ops use only
local nick = GetItemByName(who)
if not nick then
SendToNick(user.sName," "..who.." is not online...")
return 1
end
nick:SendData(Bot,""..user.sName.." whispers to you : " ..msg)
if Confirmation == "1" then
SendToNick(user.sName," msg whispered")
end
return 1
end

end
Title:
Post by: Requiem on 14 March, 2005, 11:28:16
So anybody wont help me hah ?
Title:
Post by: jiten on 14 March, 2005, 11:35:29
Try this:

-- Made by Optimus
-- 08/12/03
-- converted to LUA 5 by jiten

sBot = "BotName"

unRegUsers = {}
unRegUserFile = "unRegUsers.txt"

function Main()
frmHub:RegBot(sBot)
doloadTable(unRegUserFile)
if frmHub:GetUsersCount() == 0 then unRegUsers = {}
dosaveTable(user,data)
end
end

function NewUserConnected(user)
if user.iProfile == -1 then
doLog_unRegUsers(user, data)
end
end
function UserDisconnected(user)
if unRegUsers[user.sName] then
unRegUsers[user.sName] = nil
dosaveTable(user,data)
end
end

function ChatArrival(user, data)
if (string.sub(data, 1, 1) == "<" ) then
data=string.sub(data,1,string.len(data)-1)
_,_,cmd=string.find(data, "%b<>%s+(%S+)")

if user.bOperator then
if (cmd == "!unregpm") then
s,e,cmd,message = string.find(data,"%b<>%s+(%S+)%s+(.+)")

if message then
tosend = ""
if (string.len ( message)*2/3+2) < 76 then
border = string.rep ("-", string.len (message)*2/3+2)
else
border = string.rep ("-", 75)
end
tosend = "\r\n\r\n"..border.."\r\n"..message.."\r\n"..border.."\r\n"

if unRegUsers then
for name,_ in unRegUsers do
SendPmToNick(name,sBot, tosend)
end
end
else
user:SendData(sBot, "*** Please Enter a Message!")
end
end
end
end
end

function doLog_unRegUsers(user, data)
if unRegUsers[user.sName] == nil then
unRegUsers[user.sName] = 1
dosaveTable(user,data)
end
end


function doloadTable(unRegUserFile)
local handle = io.open(unRegUserFile,"r")
if (handle ~= nil) then
                dofile(unRegUserFile)
handle:flush()
handle:close()
        end
end

function dosaveTable(user,data)
local f = io.open(unRegUserFile, "w+")
assert(unRegUserFile)
f:write("unRegUsers = {")
         for a,b in unRegUsers do
                  if b == 1 then
         f:write(string.format("[%q]=",a)..b..",")
         end
        end
        f:write("}")
        f:flush()
        f:close()
end
Title:
Post by: jiten on 14 March, 2005, 11:45:16
-- Optimized Lua 5 version by jiten
-- RegHound 1.0 by Mutor The Ugly 7/10/14
--
-- Prompts unregistered users to register on repaeating interval; Hounds in Main Chat, as well as PM
-- User Settings -------------------------------------------------------------------------------------
sBot = frmHub:GetHubBotName() -- Name for bot[You can use your main bot, if so no need to register this bot. See 'function main'.
Mins =  "1" -- Interval [in minutes] to PM unregistered users
UnRegMsg = "message goes here" -- Message to send to unregistered Users
-- End User Settings ---------------------------------------------------------------------------------

Main = function()
SetTimer(Mins*60000) StartTimer()
-- frmHub:RegBot(sBot) -- If using main bot, remark this line, add -- ie.. --frmHub:RegBot(sBot)
end

OnTimer = function()
local i,v
for i,v in frmHub:GetOnlineNonOperators() do
if v.iProfile == -1 then
v:SendPM(sBot, UnRegMsg)
v:SendData(sBot, UnRegMsg)
end
end
end
Title:
Post by: jiten on 14 March, 2005, 11:49:27
-- Spam King (spam blocker) (for PtokaX 0.3.2.6TD3)
-- by: gg3k
-- converted to LUA 5 by jiten
-- file: SpamKing.lua
-- This script stops spammers using automessaging software.
-- It blocks all traffic that is passed through DataArrival until the user has sent the validation code.
-- This effectively prevents searchbots from getting any results from the hub too.

BotName = "BotName" -- Name of the bot.

TestReggedUsers = 1 -- Set to 1 if you want to require validation from registered users.

TestOperators = 0 -- Set to 1 if you want to require validation from operators.

NoChatUsers = { }

--// This function is fired at the serving start

function Main()

end

--// This function is fired when a new data arrives

function ChatArrival(curUser, sData)

sData = string.sub(sData, 1, string.len(sData)-1)

if curUser.iProfile == -1 or TestReggedUsers == 1 then

if NoChatUsers[curUser.sName] ~= nil then

if NoChatUsers[curUser.sName] == 1 then

NoChatUsers[curUser.sName] = math.random(1000, 9999)

SendToNick(curUser.sName, "<"..BotName.."> To open mainchat please enter numbers here:"..NoChatUsers[curUser.sName] )

return 1

else

_,_,keystring = string.find(sData, "%b<>%s+(%S+)")

if tostring(keystring) == tostring(NoChatUsers[curUser.sName]) then

NoChatUsers[curUser.sName] = nil

SendToNick(curUser.sName, "<"..BotName.."> Main Chat opened.")

else

SendToNick(curUser.sName, "<"..BotName.."> To open mainchat please enter numbers here: "..NoChatUsers[curUser.sName] )

end

return 1

end

end

end

end

--// This function is fired when a new user finishes the login

function NewUserConnected(curUser)

NoChatUsers[curUser.sName] = 1

end

--// This function is fired when an operator enters the hub

function OpConnected(curUser)

if TestOperators == 1 then

NoChatUsers[curUser.sName] = 1

end

end

--// This function is fired when an user disconnects

function UserDisconnected(curUser)

NoChatUsers[curUser.sName] = nil

end

--// This function is fired when an operator disconnects

function OpDisconnected(curUser)

NoChatUsers[curUser.sName] = nil

end


Title:
Post by: jiten on 14 March, 2005, 13:32:27
--Whisper 1.01
--by Mutor
--Request by Snoris
--converted to LUA 5 by jiten
--
--Sends a "For your eyes only message" to another user in main.
--Added option for right click command
--
--User Settings-------------------------------------------------------------------------------------
Comm = "!fisilda" -- Script Command
Bot = "bot" -- Rename to your main Px bot
Confirmation = "1" -- Show whisper confirmation [show to sender only] "1"=yes "0"=no
SendComm = "0" -- Send user command [right click] "1"=yes "0"=no
--End User Settings----------------------------------------------------------------------------------
--
--$UserCommand 1 X  Where -> 1=Hub Menu 2=User Menu 3=Hub/User Menu
--

function NewUserConnected(user)
if SendComm == "1" then
user:SendData("$UserCommand 1 2 Whisper To User $<%[mynick]> "..Comm.." %[nick] %[line:Whisper-Message]||")
user:SendData(" *** Notice :: Right click 'Whisper' command enabled ***")
end
end

OpConnected = NewUserConnected

function ChatArrival(user, data)
s,e,cmd,who,msg = string.find(data, "%b<>%s+(%S+)%s+(%S+)%s+(.+)")
if (cmd == Comm) and user.bOperator then -- Use this for Ops use only
local nick = GetItemByName(who)
if not nick then
SendToNick(user.sName," "..who.." is not online...")
return 1
end
nick:SendData(Bot,""..user.sName.." whispers to you : " ..msg)
if Confirmation == "1" then
SendToNick(user.sName," msg whispered")
end
return 1
end

end
Title:
Post by: Requiem on 28 March, 2005, 23:30:06
thanks jiten, and sorry for late response, all your effort is really great but command and message is seen on mainchat ( like " [00:23:32] <[?Gece???Bekcisi?]> !unregpm trying this... " ) when using this scirpt... can smo help? -- Made by Optimus
-- 08/12/03
-- converted to LUA 5 by jiten

sBot = "BotName"

unRegUsers = {}
unRegUserFile = "unRegUsers.txt"

function Main()
frmHub:RegBot(sBot)
doloadTable(unRegUserFile)
if frmHub:GetUsersCount() == 0 then unRegUsers = {}
dosaveTable(user,data)
end
end

function NewUserConnected(user)
if user.iProfile == -1 then
doLog_unRegUsers(user, data)
end
end
function UserDisconnected(user)
if unRegUsers[user.sName] then
unRegUsers[user.sName] = nil
dosaveTable(user,data)
end
end

function ChatArrival(user, data)
if (string.sub(data, 1, 1) == "<" ) then
data=string.sub(data,1,string.len(data)-1)
_,_,cmd=string.find(data, "%b<>%s+(%S+)")

if user.bOperator then
if (cmd == "!unregpm") then
s,e,cmd,message = string.find(data,"%b<>%s+(%S+)%s+(.+)")

if message then
tosend = ""
if (string.len ( message)*2/3+2) < 76 then
border = string.rep ("-", string.len (message)*2/3+2)
else
border = string.rep ("-", 75)
end
tosend = "\r\n\r\n"..border.."\r\n"..message.."\r\n"..border.."\r\n"

if unRegUsers then
for name,_ in unRegUsers do
SendPmToNick(name,sBot, tosend)
end
end
else
user:SendData(sBot, "*** Please Enter a Message!")
end
end
end
end
end

function doLog_unRegUsers(user, data)
if unRegUsers[user.sName] == nil then
unRegUsers[user.sName] = 1
dosaveTable(user,data)
end
end


function doloadTable(unRegUserFile)
local handle = io.open(unRegUserFile,"r")
if (handle ~= nil) then
                dofile(unRegUserFile)
handle:flush()
handle:close()
        end
end

function dosaveTable(user,data)
local f = io.open(unRegUserFile, "w+")
assert(unRegUserFile)
f:write("unRegUsers = {")
         for a,b in unRegUsers do
                  if b == 1 then
         f:write(string.format("[%q]=",a)..b..",")
         end
        end
        f:write("}")
        f:flush()
        f:close()
end
Title:
Post by: jiten on 29 March, 2005, 10:29:43
Try this one:

-- Made by Optimus
-- 08/12/03
-- converted to LUA 5 by jiten

sBot = "BotName"

unRegUsers = {}
unRegUserFile = "unRegUsers.txt"

function Main()
frmHub:RegBot(sBot)
doloadTable(unRegUserFile)
if frmHub:GetUsersCount() == 0 then unRegUsers = {}
dosaveTable(user,data)
end
end

function NewUserConnected(user)
if user.iProfile == -1 then
doLog_unRegUsers(user, data)
end
end
function UserDisconnected(user)
if unRegUsers[user.sName] then
unRegUsers[user.sName] = nil
dosaveTable(user,data)
end
end

function ChatArrival(user, data)
data=string.sub(data,1,string.len(data)-1)
_,_,cmd=string.find(data, "%b<>%s+(%S+)")
if user.bOperator then
if (cmd == "!unregpm") then
s,e,cmd,message = string.find(data,"%b<>%s+(%S+)%s+(.+)")
if message then
tosend = ""
if (string.len ( message)*2/3+2) < 76 then
border = string.rep ("-", string.len (message)*2/3+2)
else
border = string.rep ("-", 75)
end
tosend = "\r\n\r\n"..border.."\r\n"..message.."\r\n"..border.."\r\n"
if unRegUsers then
for name,_ in unRegUsers do
SendPmToNick(name,sBot, tosend)
end
end
else
user:SendData(sBot, "*** Please Enter a Message!")
end
return 1
end
end
end

function doLog_unRegUsers(user, data)
if unRegUsers[user.sName] == nil then
unRegUsers[user.sName] = 1
dosaveTable(user,data)
end
end


function doloadTable(unRegUserFile)
local handle = io.open(unRegUserFile,"r")
if (handle ~= nil) then
                dofile(unRegUserFile)
handle:flush()
handle:close()
        end
end

function dosaveTable(user,data)
local f = io.open(unRegUserFile, "w+")
assert(unRegUserFile)
f:write("unRegUsers = {")
         for a,b in unRegUsers do
                  if b == 1 then
         f:write(string.format("[%q]=",a)..b..",")
         end
        end
        f:write("}")
        f:flush()
        f:close()
end


Best regards,

jiten
Title:
Post by: Requiem on 29 March, 2005, 15:33:06
Thank you very much.. Everything works perfect now..
Title: pm to unregd
Post by: (NL)waarom on 29 March, 2005, 15:56:38
-send unreg pm on timer
--Script by Optimus
--lua5
--massage on time in Main Chat, as well as PM
--
--

--User Settings-------------------------------------------------------------------------------------
--
--Name for bot[You can use your main bot, if so no need to register this bot. See 'function main'.
sBot = "?Unreg?"
--Interval [in minutes] to PM unregistered users
sec=1000
min=60*sec
hour=60*min
--Message to send to unregistered Users
UnRegMsg = "You can't download if your not Registered type !regme ..... on the dots your password(make up your own password) (then close the hub and logon again )  or else you keep getting this annoying message till you registered!"
--
--End User Settings----------------------------------------------------------------------------------


UnRegTab = {}
UnReg = "UnReg.dat"


function Main()
   SetTimer(30*min -- Set timer here
   StartTimer()
   frmHub:RegBot(sBot)   --If using main bot, remark this line, add -- ie.. --frmHub:RegBot(sBot)
   LoadFromFile(UnReg)
end

function OnExit()
   SaveToFile(UnReg , UnRegTab , "UnRegTab")
end

function NewUserConnected(user, data)
   if (user.iProfile == -1 and UnRegTab[user.sName] == nil) then
      UnRegTab[user.sName] = 1
   end
end

function UserDisconnected(user, data)
   if (user.iProfile == -1 and UnRegTab[user.sName] ~= nil) then
      UnRegTab[user.sName] = nil
   end
end

function OnTimer()
   local usr,aux
      for usr, aux in UnRegTab do
         if (GetItemByName(usr) ~= nil) then
            sNick = GetItemByName(usr)
            sNick:SendPM(sBot, UnRegMsg)
            sNick:SendData(sBot, UnRegMsg)
         end
      end
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 string.format("[%q]",key) or string.format("[%d]",key);

      if(type(value) == "table") then
         sTmp = sTmp..Serialize(value, sKey, sTab.."\t");
      else
         local sValue = (type(value) == "string") and string.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)
local handle = io.open(file,"r")
if (handle ~= nil) then
loadstring(handle:read("*all"))
handle:flush()
handle:close()
end
end
-------------------------------------------------
this one is whit a timer in it will send pm as well in the main ;)
Title:
Post by: Herodes on 29 March, 2005, 19:00:45
took 36secs ... not tested..
-- PMUnRegs by Herodes
function ChatArrival( user, data )
data = string.sub(data, 1, -2)
local s,e,cmd,args = string.find( data, "%b<>%s+(%S+)%s*(.*)")
if cmd == "!pmunreg" then
if args then
for i, us in frmHub:GetOnlineUsers() do
if us.iProfile == -1 then
us:SendPM( "PMUnRegs", user.sName.." says: "..args)
end
end
else
user:SendData( "PMUnRegs", "Syntax Error Use: !pmunreg ")
end
return 1
end
end
Title:
Post by: jiten on 29 March, 2005, 19:15:04
yw Requiem.

Here you go (NL)waarom (another one ;) )

--Script by Optimus
--Converted to LUA 5 by jiten
--massage on time in Main Chat, as well as PM
--
--

--User Settings-------------------------------------------------------------------------------------
--
--Name for bot[You can use your main bot, if so no need to register this bot. See 'function main'.
sBot = "?Unreg?"
--Interval [in minutes] to PM unregistered users
sec=1000
min=60*sec
hour=60*min
--Message to send to unregistered Users
UnRegMsg = "You can't download if your not Registered type !regme ..... on the dots your password(make up your own password) (then close the hub and logon again ) or else you keep getting this annoying message till you registered!"
--
--End User Settings----------------------------------------------------------------------------------

UnRegTab = {}
UnReg = "UnReg.dat"


function Main()
SetTimer(30*min) -- Set timer here
StartTimer()
frmHub:RegBot(sBot) --If using main bot, remark this line, add -- ie.. --frmHub:RegBot(sBot)
LoadFromFile(UnReg)
end

function OnExit()
SaveToFile(UnReg , UnRegTab , "UnRegTab")
end

function NewUserConnected(user, data)
if (user.iProfile == -1 and UnRegTab[user.sName] == nil) then
UnRegTab[user.sName] = 1
end
end

function UserDisconnected(user, data)
if (user.iProfile == -1 and UnRegTab[user.sName] ~= nil) then
UnRegTab[user.sName] = nil
end
end

function OnTimer()
local usr,aux
for usr, aux in UnRegTab do
if (GetItemByName(usr) ~= nil) then
sNick = GetItemByName(usr)
sNick:SendPM(sBot, UnRegMsg)
sNick:SendData(sBot, UnRegMsg)
end
end
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 string.format("[%q]",key) or string.format("[%d]",key);

                if(type(value) == "table") then
                        sTmp = sTmp..Serialize(value, sKey, sTab.."\t");
                else
                        local sValue = (type(value) == "string") and string.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)
local handle = io.open(file,"w+")
        handle:write(Serialize(table, tablename))
handle:flush()
        handle:close()
end

function LoadFromFile(file)
local handle = io.open(file,"r")
if (handle ~= nil) then
                dofile(file)
handle:flush()
handle:close()
        end
end
Title:
Post by: Herodes on 30 March, 2005, 02:17:09
jiten: why do all that ? there is things in the new API that make it easier..
this was one of the points why the API was changed in the first place
Title:
Post by: jiten on 30 March, 2005, 09:31:17
Gonna try using it in the next scripts.
I'm still getting used to the new API.
Anyway, thanks for the hint  :]

Cheers
Title:
Post by: Herodes on 30 March, 2005, 16:07:38
The trick is when you want to get something from PtokaX look in the Scripting-Interface.txt cause it might just be giving it to you already ;)
Title:
Post by: jiten on 30 March, 2005, 18:24:54
Ok, I'll start looking for on it  :D
Title:
Post by: Optimus on 30 March, 2005, 19:11:05
-- Message Unregged Users
-- Made by Optimus
-- 03/30/05

sBot = "BotName"

Main = function()
frmHub:RegBot(sBot)
end

ChatArrival = function(user, data)
data=string.sub(data,1,string.len(data)-1)
s,e,cmd=string.find(data, "%b<>%s+(%S+)")
if (cmd == "!messunreg") then
if user.bOperator then
local s,e,cmd,message = string.find(data,"%b<>%s+(%S+)%s+(.*)")
if message then
local border = ""
if (string.len ( message)*2/3+2) < 76 then
border = string.rep ("-", string.len (message)*2/3+2)
else
border = string.rep ("-", 75)
end message = "\r\n\r\n"..border.."\r\n"..message.."\r\n"..border.."\r\n"
for id,who in frmHub:GetOnlineUsers() do
if who.iProfile == -1 then
who:SendPM(sBot, message)
end
end
else
user:SendData(sBot, "*** Usage: !messunreg ")
end
end
return 1
end
end


Check this 1 out much better

- Optimus