Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ От: Поправьте Пожалуйста

Автор: Wariner 14.12.2008, 19:53

Во первых найди разницу:
твой вариант

Код
dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu")
sBot = SetMan.GetString(21)
sLeft = Core.GetPtokaXPath().."scripts/Left/LeftUser.tbl"
tLeft = {}

function Core.OnStartup()
    if loadfile(sLeft) then
        dofile(sLeft)
    end
end    

function Core.UserConnected(tUser)
    Core.SendToUser(tUser, "$UserCommand 1 3 Автоответчик на чат\\Ушёл$<%[mynick]> !left %[line:Введите сообщение об уходе]|")
    Core.SendToUser(tUser, "$UserCommand 1 3 Автоответчик на чат\\Пришёл$<%[mynick]> !leftdel |")
end    
Core.OpConnected = Core.UserConnected
Core.RegConnected = Core.UserConnected
function Main()
tProfile = {
[0]=0, -- Мастер
[1]=0, -- Оператор
[2]=1, -- VIP
[3]=1, -- Зарегистрированный пользователь
[4]=1, -- SuperVIP
[-1]=1, -- Незарегистрированный пользователь
}
end
function Core.ChatArrival(tUser, sData)
    if tProfile[tUser.iProfile] == 1 then
    sData = string.sub(sData,1,-2)
    local _,_,cmd = string.find(sData, "%b<>%s+(%S+)")
    if cmd == "!left" then
        if not tLeft[tUser.sNick] then
            local _,_,msg = string.find(sData, "%b<>%s+%S+%s+(.+)")
            tLeft[tUser.sNick] = msg
            WriteTable(tLeft, "tLeft", sLeft)
            Core.SendToUser(tUser, "<"..sBot.."> Режиме \"ушёл\" удачно установлен.")
        else
            Core.SendToUser(tUser, "<"..sBot.."> Вы уже в режиме \"ушёл\".")
        end    
        return true
    end
    if cmd == "!leftdel" then
        if tLeft[tUser.sNick] then
            tLeft[tUser.sNick] = nil
            WriteTable(tLeft, "tLeft", sLeft)
            Core.SendToUser(tUser, "<"..sBot.."> Режим \"ушёл\" снят.")
        else
            Core.SendToUser(tUser, "<"..sBot.."> У вас не включен режим \"ушёл\"")
        end    
        return true
    end
    cmd = string.gsub(cmd, ":", "")
    if tLeft[cmd] then
        Core.SendToUser(tUser, "<"..sBot.."> ¤ Юзер "..cmd.." в данный момент отсутствует на хабе! ¤ Сообщение ушёл: "..tLeft[cmd])    
    end    
end    


function WriteTable(tTable, tablename, file)
    local handle = io.open(file, "w")
    Serialize(tTable, tablename, handle)
      handle:close()
end

function Serialize(tTable, sTableName, hFile, sTab)
    sTab = sTab or "";
    hFile:write(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
            Serialize(value, sKey, hFile, sTab.."\t");
        else
            local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
            hFile:write(sTab.."\t"..sKey.." = "..sValue);
        end
        hFile:write(",\n");
    end
    hFile:write(sTab.."}");
end
end


правильный вариант
Код
dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu")
sBot = SetMan.GetString(21)
sLeft = Core.GetPtokaXPath().."scripts/Left/LeftUser.tbl"
tLeft = {}

function Core.OnStartup()
    if loadfile(sLeft) then
        dofile(sLeft)
    end
end    

function Core.UserConnected(tUser)
    Core.SendToUser(tUser, "$UserCommand 1 3 Автоответчик на чат\\Ушёл$<%[mynick]> !left %[line:Введите сообщение об уходе]|")
    Core.SendToUser(tUser, "$UserCommand 1 3 Автоответчик на чат\\Пришёл$<%[mynick]> !leftdel |")
end    
Core.OpConnected = Core.UserConnected
Core.RegConnected = Core.UserConnected
function Main()
tProfile = {
[0]=0, -- Мастер
[1]=0, -- Оператор
[2]=1, -- VIP
[3]=1, -- Зарегистрированный пользователь
[4]=1, -- SuperVIP
[-1]=1, -- Незарегистрированный пользователь
}
end
function Core.ChatArrival(tUser, sData)
    if tProfile[tUser.iProfile] == 1 then
    sData = string.sub(sData,1,-2)
    local _,_,cmd = string.find(sData, "%b<>%s+(%S+)")
    if cmd == "!left" then
        if not tLeft[tUser.sNick] then
            local _,_,msg = string.find(sData, "%b<>%s+%S+%s+(.+)")
            tLeft[tUser.sNick] = msg
            WriteTable(tLeft, "tLeft", sLeft)
            Core.SendToUser(tUser, "<"..sBot.."> Режиме \"ушёл\" удачно установлен.")
        else
            Core.SendToUser(tUser, "<"..sBot.."> Вы уже в режиме \"ушёл\".")
        end    
        return true
    end
    if cmd == "!leftdel" then
        if tLeft[tUser.sNick] then
            tLeft[tUser.sNick] = nil
            WriteTable(tLeft, "tLeft", sLeft)
            Core.SendToUser(tUser, "<"..sBot.."> Режим \"ушёл\" снят.")
        else
            Core.SendToUser(tUser, "<"..sBot.."> У вас не включен режим \"ушёл\"")
        end    
        return true
    end
    cmd = string.gsub(cmd, ":", "")
    if tLeft[cmd] then
        Core.SendToUser(tUser, "<"..sBot.."> ¤ Юзер "..cmd.." в данный момент отсутствует на хабе! ¤ Сообщение ушёл: "..tLeft[cmd])    
    end    
end
end     

function WriteTable(tTable, tablename, file)
    local handle = io.open(file, "w")
    Serialize(tTable, tablename, handle)
      handle:close()
end

function Serialize(tTable, sTableName, hFile, sTab)
    sTab = sTab or "";
    hFile:write(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
            Serialize(value, sKey, hFile, sTab.."\t");
        else
            local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
            hFile:write(sTab.."\t"..sKey.." = "..sValue);
        end
        hFile:write(",\n");
    end
    hFile:write(sTab.."}");
end


Во вторых пара уже знать что в функции чатаривал ты даёшь права не на меню а на команды!

PS: извеняюсь что постил код просто так нагляднее