От: Поправьте Пожалуйста, От темы с ID: 897 |
Здравствуйте, гость ( Вход | Регистрация )
От: Поправьте Пожалуйста, От темы с ID: 897 |
14.12.2008, 19:53
Сообщение
#1
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Во первых найди разницу:
твой вариант Код 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: извеняюсь что постил код просто так нагляднее |
|
|
Похожие темы
|
Сейчас: 23.11.2024, 15:52 |