PtokaX forum

Archive => Archived 5.1 boards => Request for scripts => Topic started by: LeChuck on 16 March, 2008, 17:22:30

Title: Block a user
Post by: LeChuck on 16 March, 2008, 17:22:30
Hello helpers,

i search a script to block temporary user for downloading.
I've found here a lot scripts to block downloading by profiles. But i want only block a user for little time till brake by unblock !

Using in PtokaX 0.3.6.0 with RoboCop 10.0.23.


Anybody an idea ?  :'(

//edit : I've found now "DownloadBlock.lua" but this script blocks a user to download anything.
I want this :  user A don't like user B and make a block, so B can't DL from A but can DL from C D E F ..... . When A unblock B can B DL from A also.

mmmmh, understand my wish ?  ???
Title: Re: Block a user
Post by: LeChuck on 18 March, 2008, 09:15:01
Shit, problem to hard ?  :o

Here for example the "DownloadBlock.lua"
--[[
Download Blocker v1.0a by [AT]conejodelmal Lua 5.1

Blocks users by nick
Commands:
!block <nick> - Blockes nick
!delblock <nick> - Unblok nick
!blocklist - Blocklist
]]--

 
sBot = frmHub:GetHubBotName()
 
arrBlock = {}   

fBlock = "logs/block.dat" 


AllowedProfiles = {
[0] = 1,   -- Master
[1] = 1,   -- OP
[2] = 0,   -- VIP
[3] = 0,   -- Reg
[4] = 1,   -- Moderator
[5] = 1,   -- Net Founder
[6] = 1,   -- Owner

}

function Main() 
LoadFromFile(fBlock) 
end 

function OnExit() 
SaveToFile(fBlock , arrBlock , "arrBlock") 
end 
 
function ChatArrival(user, data) 
if (AllowedProfiles[user.iProfile] == 1) then
data = string.sub(data,1,string.len(data)-1)   
s,e,cmd = string.find(data, "%b<>%s+(%S+)")   
if (cmd == "!block") then   
BlockUser(user, data)   
return 1   
elseif (cmd == "!delblock") then   
RemoveBlock(user, data)   
return 1   
elseif (cmd == "!blocklist") then   
BlockList(user)   
return 1   
end 
end 
end 
 
ToArrival = ChatArrival 
 
function BlockUser(user, data)   
local s,e,nick = string.find(data, "%b<>%s+%S+%s+(%S+)")   
if (nick == nil) then   
user:SendData(sBot, "Syntax Error, !block <nick>. You got to type a nick.")   
return 1
end
if (arrBlock[string.lower(nick)] ~= nil) then   
user:SendData(sBot, "User "..nick.." is already BLOCKED.")
return 1
else     
arrBlock[string.lower(nick)] = user.sName
user:SendData(sBot, "User "..nick.." is now being BLOCKED.") 
SaveToFile(fBlock , arrBlock , "arrBlock") 
return 1
end
end   
 
function RemoveBlock(user, data)   
local s,e,nick = string.find(data, "%b<>%s+%S+%s+(%S+)")   
if (nick == nil) then   
user:SendData(sBot, "Syntax Error, !delblock <nick>. You got to type a nick") 
return 1
end
if (arrBlock[string.lower(nick)] == nil) then   
user:SendData(sBot, "User "..nick.." isn't blocked.")
return 1
else
arrBlock[string.lower(nick)] = nil 
user:SendData(sBot, "User "..nick.." was UNBLOCKED")   
SaveToFile(fBlock , arrBlock , "arrBlock") 
return 1
end   
end   
 
function BlockList(user)   
local sTmp,op,usr = "List of users that are being blocked:\r\n\r\n"   
for usr in pairs(arrBlock) do   
sTmp = sTmp.."\t\tUser: "..usr.."\r\n"
end 
user:SendPM(sBot, sTmp)   
end   
 
function ConnectToMeArrival(user, data)
local data = string.sub(data,1,-2);
local s,e,nick = string.find(data,"%S+%s+(%S+)");
nick = GetItemByName(nick);
if (nick == nil) then
return 1
else
if (arrBlock[string.lower(user.sName)] ~= nil) then
return 1
end
end
end


RevConnectToMeArrival = ConnectToMeArrival


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 pairs(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


It runs correctly, but the blocked user can't DL from anyone. It's not my wish.

Help please ! :'(