Help changing script
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

Help changing script

Started by Mystery-Heaven, 21 March, 2004, 17:29:48

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Mystery-Heaven

I found this script from AXWells:

Can anyone add a txt file, where invitet users can add and read something like http adresses, ftp adresses or else.
And there must be !read and !add and !remove cmds.
Please help me, i cant write lua

-----------------------------------------------------
-- Chat Bot v3.5 Coded by   [aXs] Wellx   01/09-03
-- Formerly known as the Developer-Chat for TIC50
-- Based on the idea VIPChat from Piglja 
-- Thx goes to Piglja & aMutex for Ideas and Help
-----------------------------------------------------

ChatBot = "?-?-??Hinterhof??-?-?"    -- Chat Bot Name
CanUseCommands = { 0 }    -- Can Use Chat Bot Commands Lvl ( 0 = Master ~~ 1 = Operators ~~ 2 = VIPs ~~ 3 = Reg ~~ etc.)

ChatArray={}
ChatFile = "Chatters.tbl"

function Main()
frmHub:RegBot(ChatBot)
ChatArray = LoadFromFile(ChatFile)
end

--========================================================    DataArrival:    =========================================================--

function DataArrival(user, data)
    if (strsub(data, 1, 1) == "<" ) then 
    data=strsub(data,1,strlen(data)-1)
    _,_,cmd=strfind(data, "%b<>%s+(%S+)")
    local Commands = (DeveloperCommands(user, data, cmd))
    return Commands
    elseif strsub(data, 1, 5) == "$To: " then 
        local s, e, to = strfind(data, "$To: (%S+)")
        if to ~= ChatBot then
            return 0
        else
            if to == ChatBot then
            local data=strsub(data,1,strlen(data)-1)  
            local s,e,from,msg = strfind(data,"From:%s+(%S+)%s+$%b<>%s+(.+)")  
                if ChatArray[user.sName] ~= nil then
                ChatArray[user.sName] = nil
                    for i,v in ChatArray do
                    Developer=GetItemByName(i)
                        if (Developer~=nil) then
                        Developer:SendData("$To: "..i.." From: "..ChatBot.." $<"..user.sName.."> "..msg.."|")
                        end
                    end
                ChatArray[user.sName] = user.sName 
                else
                user:SendPM(ChatBot,"You do not have permission to write in here (Join or Talk to a Operator if you need permission)")
                end 
            local _,_,cmd = strfind(data,"$%b<>%s+(%S+)")
            local Commands = (DeveloperCommands(user, data, cmd))
            end
        end
    end
end

--=====================================================      Chat Commands:      ======================================================--

function DeveloperCommands(user, data, cmd)
    if tfind(CanUseCommands, user.iProfile) then
        if (cmd == "!chathelp") then
        DevHelp(user)
        return 1
        elseif (cmd == "!chat") then
        local s,e,cmd,ChatName = strfind( data, "%b<>%s+(%S+)%s+(.*)" )
            if (ChatName == nil) then
            ChatName = user.sName
            end
            if ChatArray[ChatName] == nil then
            ChatArray[ChatName] = ChatName
                for index, value in ChatArray do 
                SendPmToNick(index, ChatBot, "  "..ChatName.." Has joined the "..ChatBot) 
                end 
            else
                for index, value in ChatArray do 
                SendPmToNick(index, ChatBot, "  "..ChatName.." Has left the "..ChatBot) 
                end 
            ChatArray[ChatName] = nil
            end
            SaveToFile(ChatName,ChatFile,ChatArray)
            return 1
        elseif (cmd == "!showchatters") then
            function DevList()
            local DevList = ""
                for index, value in ChatArray do
                local line = index
                    if GetItemByName(index) then
                        if (strlen(index) <= 10) then
                        DevList = DevList.." ? "..line.."ttt~ On-line ~rn"
                        else
                        DevList = DevList.." ? "..line.."tt~ On-line ~rn"
                        end
                    else
                        if (strlen(index) <= 10) then
                        DevList = DevList.." ? "..line.."ttt? Off-Line ?rn"
                        else
                        DevList = DevList.." ? "..line.."tt? Off-Line ?rn"
                        end
                    end
                end
                return DevList
            end
            user:SendPM(ChatBot, "rnrn(? ?.??.->      "..ChatBot.." Chatters      <-.??.???) rnrn"..DevList())
            return 1
        end
    else user:SendData("You don't have permission to use the commands to the "..ChatBot.." ask a Operator for permission !!") return 0 end
end

function DevHelp (user)
    local disp = "rnrn"
    disp = disp.."~~ Scripted DeveloperChat Commands: ~~rnrn"
    disp = disp.."   !chat         -    Add or part a user to the list of people that can chat in the "..ChatBot.."rn"
    disp = disp.."   !showchatters        -    See witch users that can chat in the "..ChatBot.."rn"
    disp = disp.."rn"
    user:SendPM(ChatBot, disp)
end

--========================================================    Functions:    ===========================================================--

function SaveToFile(arg,file,table)
    local aString = pickle(table)
    writeto(file)
    write(aString)
    writeto()
end

function LoadFromFile(file)
    readfrom(file)
    local aString = read("*all")
    return  unpickle(aString) 
end

function tfind(table, key) 
return foreachi(table, function(id, tmp) return (tmp == %key) and id end) 
end 

----------------------------------------------
-- Pickle.lua
-- An table serialization utility for lua
-- Steve Dekorte, [URL]http://www.dekorte.com,[/URL] Apr 2000
-- Freeware
----------------------------------------------
function pickle(t)
return Pickle:clone():pickle_(t)
end

Pickle = {
clone = function (t) local nt={}; for i, v in t do nt[i]=v end return nt end 
}

function Pickle:pickle_(root)
    if type(root) ~= "table" then 
    error("can only pickle tables, not ".. type(root).."s")
    end
    self._tableToRef = {}
    self._refToTable = {}
    local savecount = 0
    self:ref_(root)
    local s = ""
    while getn(self._refToTable) > savecount do
    savecount = savecount + 1
    local t = self._refToTable[savecount]
    s = s.."{n"
        for i, v in t do
        s = format("%s[%s]=%s,n", s, self:value_(i), self:value_(v))
        end
    s = s.."},n"
    end
return format("{%s}", s)
end

function Pickle:value_(v)
local vtype = type(v)
    if vtype == "string" then return format("%q", v)
    elseif vtype == "number" then return v
    elseif vtype == "table" then return "{"..self:ref_(v).."}"
    else --error("pickle a "..type(v).." is not supported")
    end  
end

function Pickle:ref_(t)
local ref = self._tableToRef[t]
    if not ref then 
        if t == self then error("can't pickle the pickle class") end
    tinsert(self._refToTable, t)
    ref = getn(self._refToTable)
    self._tableToRef[t] = ref
    end
return ref
end

----------------------------------------------
-- unpickle
----------------------------------------------

function unpickle(s)
    if type(s) ~= "string" then
    error("can't unpickle a "..type(s)..", only strings")
    end
    local tables = dostring("return "..s)
    for tnum = 1, getn(tables) do
    local t = tables[tnum]
    local tcopy = {}; for i, v in t do tcopy[i] = v end
        for i, v in tcopy do
        local ni, nv
            if type(i) == "table" then ni = tables[i[1]] else ni = i end
            if type(v) == "table" then nv = tables[v[1]] else nv = v end
        t[ni] = nv
        end
    end
return tables[1]
end

SMF spam blocked by CleanTalk