От: Экзекутор (ekzekutor), От темы с ID: 1403 |
Здравствуйте, гость ( Вход | Регистрация )
От: Экзекутор (ekzekutor), От темы с ID: 1403 |
16.5.2010, 22:55
Сообщение
#241
|
|
Начинающий Группа: Пользователи Сообщений: 25 Регистрация: 1.10.2009 Из: Самара Пользователь №: 4 611 Спасибо сказали: 0 раз |
Мощный бот. Спасибо автору.
Пожалуй не хватает разве что плагина анкет юзеров. Phazeus, не затруднит добавить? |
|
|
18.5.2010, 2:38
Сообщение
#242
|
|
Продвинутый участник Группа: Пользователи Сообщений: 179 Регистрация: 24.2.2009 Из: Самара Пользователь №: 2 340 Спасибо сказали: 103 раза |
|
|
|
18.5.2010, 10:13
Сообщение
#243
|
|
МеСтНый ФлУдЕР xD Группа: Пользователи Сообщений: 59 Регистрация: 2.3.2010 Из: Г.Муравленко ЯНАО Пользователь №: 6 241 Спасибо сказали: 0 раз |
А что это такое? Как Вы это представляете и для чего? Просто база, где можно найти интересующих людей по нику/имени или другим данным и всё такое? именно ты понял его верно, я бы показал скрипт но пол часа искал не нашол(анкеты),,, просто было бы хорошо если бы добавить такой плагин что бы Юзеры создавали свои анкеты, Обьястню как ето выглядит,, Например мне приходит сообщение : не желаете Создать анкету? ну и пошло поехало, в анкете запалняеш имя,аську мыло, пару почт, телефон,интересы,День рождение(и что бы при ДЕНЮХЕ Хобяб поздравления вылетали,,в многих скриптах етого нету),,, если хочеш увидить пример работы скрипта то если найду скину!!! ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- все таки нашол!!! Раскрывающийся текст -- - Теперь можно оставлять комментарии к анкетам -- - При входе пользователь получает уведомление о новой анкете -- - Можно выбрать, куда будут приходить сообщения от бота: в чат или приват -- -- [1.1]: -- Данный скрипт позволит вашим пользователям создавать и управлять своими анкетами на основании вашего шаблона. -- -- Пункты анкеты: -- - имя_в_реале -- - дата_рождения -- - знак_зодиака -- - пол -- - тело -- - icq -- - где_живешь -- - учеба_работа -- - о_себе -- - семья -- - о_других -- - интересы -- - музыка -- - фильмы -- - привычки -- -- -- Также есть администраторская команда для редактирования чужих анкет. -- Управление доступом к командам. -- -- F.A.Q. -- -- В. Как добавить или удалить пункт анкеты? -- -- О. Во-первых, вам нужно внести новый пункт анкеты или отредактировать старый в таблице -- tUserProfiles[sUser], которая вынесена в конфигуратор. -- Во-вторых, необходимо отредактировать вывод анкет в чат. Данный пункт находится в -- функции showProfile(sUser,type) - там увидете. -- В-третьих, не забудьте поменять команды меню, которые также вынесены в конфигуратор - MenuProfile(user) -- -- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\ --|• Настройки •||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ tVar = { sPrefix = "!", -- Префикс команд ------------------------------------------ sBot = "Profiles", -- Имя бота sBotD = "Анкеты пользователей", -- Описание бота sBotE = "profiles@px.net", -- Email бота sIsOP = 1, -- Бот ОП? <1=да,0=нет> ------------------------------------------ sFolder = "AHKETbI", -- Папка скрипта sFile = "uprofiles.dat", -- Название БД ------------------------------------------ sRCEnable = "on", -- Посылать менюшку? <on=да, off=нет> sRCName = "Анкеты", -- Название менюшки ------------------------------------------ sEdited = "on", -- Прятать анкеты, которые еще не редактировались? <on=да, off=нет> sSpam = "on", -- Если у юзера еще нет анкеты, то предлагать ему создать ее при входе? ;) sMsg = "pm", -- Куда отсылать сообщения? <main=чат,pm=личка> ------------------------------------------ sMsgtoUsers = "Теперь можно создать свою анкету! Напиши !анкета создать", }; -- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\ --|• Команды •||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ tCmd = { -- Команды пользователей sHelp = "анхелп", -- Показать помощь sProfile = "анкета", -- Редактировать свою анкету sViewPro = "анкеты", -- Посмотреть список анкет юзеров sComment = "анкоммент", -- Сделать комментарий к анкете -- Команды админа sDelPro = "delpro", -- Удалить анкету юзера или какое-то значение в анкете }; -- Пункты анкеты -- ** Советую вам сразу определиться с графами анкеты! ** -- ** Если в будущем Вы захотите изменить что-то здесь, то ** -- ** Вам придется удалить всю старую базу! ** tFields = { ["имя_в_реале"] = "", ["дата_рождения"] = "", ["знак_зодиака"] = "", ["пол"] = "", ["тело"] = "", ["icq"] = "", ["где_живешь"] = "", ["учеба_работа"] = "", ["о_себе"] = "", ["семья"] = "", ["о_других"] = "", ["интересы"] = "", ["музыка"] = "", ["фильмы"] = "", ["привычки"] = "", }; -- Уровень доступа к командам: -- -- Доступ = 1 -- Запрет = 0 -- -- Профили 4,5 и 6 созданы для поддержки скриптами Robocop и Leviathan -- -- Админ доступ pAdmin = { [-1] = 0, -- Un-Reg [0] = 1, -- Master [1] = 0, -- OP [2] = 0, -- ViP [3] = 0, -- Reg --[4] = 1, -- Moderator --[5] = 1, -- Netfounder --[6] = 1, -- Owner }; -- Пользовательский доступ pUser = { [-1] = 1, -- Un-Reg [0] = 1, -- Master [1] = 1, -- OP [2] = 1, -- ViP [3] = 1, -- Reg --[4] = 1, -- Moderator --[5] = 1, -- Netfounder --[6] = 1, -- Owner }; -- Меню для редактирования пунктов своей анкеты. Специально вынес отдельно (NRJ) function MenuProfile(user) Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Посмотреть$<%[mynick]> !"..tCmd.sProfile.."|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Настоящее имя$<%[mynick]> !"..tCmd.sProfile.." добавить имя_в_реале %[line:Твое настоящее имя?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Дата рождения$<%[mynick]> !"..tCmd.sProfile.." добавить дата_рождения %[line:Дата рождения?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Знак Зодиака$<%[mynick]> !"..tCmd.sProfile.." добавить знак_зодиака %[line:Знак Зодиака?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Пол$<%[mynick]> !"..tCmd.sProfile.." добавить пол %[line:ж) или м)?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Телосложение$<%[mynick]> !"..tCmd.sProfile.." добавить тело %[line:Рост, вес, общее впечатление?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\ICQ$<%[mynick]> !"..tCmd.sProfile.." добавить icq %[line:Твоя аська?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Где живешь$<%[mynick]> !"..tCmd.sProfile.." добавить где_живешь %[line:Где ты живешь?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Учеба и работа$<%[mynick]> !"..tCmd.sProfile.." добавить учеба_работа %[line:Где учишься и/или работаешь?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\О себе$<%[mynick]> !"..tCmd.sProfile.." добавить о_себе %[line:Немного о себе..]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\О семье$<%[mynick]> !"..tCmd.sProfile.." добавить семья %[line:Парень, девушка, муж, жена, дети?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Цели знакомства$<%[mynick]> !"..tCmd.sProfile.." добавить о_других %[line:С кем бы хотелось познакомиться?..]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Интересы$<%[mynick]> !"..tCmd.sProfile.." добавить интересы %[line:Твои интересы?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Музыка$<%[mynick]> !"..tCmd.sProfile.." добавить музыка %[line:Любимая музыка?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Фильмы$<%[mynick]> !"..tCmd.sProfile.." добавить фильмы %[line:Любимые фильмы?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Вредные привычки$<%[mynick]> !"..tCmd.sProfile.." добавить привычки %[line:Курение, водка, КС?]|") end -- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\ --|• Основной код •|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | -- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/ if (_VERSION == "Lua 5.1") then TableMaxSize = table.maxn; StringMatch = string.gmatch; CollectTrash = function() collectgarbage("collect"); end elseif (_VERSION == "Lua 5.0.3") or (_VERSION == "Lua 5.0.2") then TableMaxSize = table.getn; StringMatch = string.gfind; CollectTrash = function() collectgarbage(collect); end else Core.SendToAll("<"..tVar.sBot.."> *** Этот скрипт работает только при поддержке Lua 5.1 или Lua 5.0.X У вас же: ".._VERSION); end function OnStartup() Core.RegBot(tVar.sBot,"","",true); ProTask.LoadProfile(); end function ChatArrival(user,data) Core.GetUserAllData(user) local data = string.sub(data,1,-2) local _,_,sTrig,sCmd = string.find(data,"%b<>%s*(%S)(%S+)") if sTrig == tVar.sPrefix then if tScriptCmds[sCmd] then return tScriptCmds[sCmd](user,data); end end end function ToArrival(user,data) Core.GetUserAllData(user) if string.sub(data,6,5+(string.len(tVar.sBot))) == tVar.sBot then data = string.sub(data,(18+string.len(tVar.sBot)+2*string.len(user.sNick)),(string.len(data)-1)); local _,_,sTrig,sCmd = string.find(data,"(%S)(%S+)"); if sTrig and sTrig == tVar.sPrefix and sCmd and tScriptCmds[sCmd] then return tScriptCmds[sCmd](user,"<"..user.sNick.."> "..data); end end end function UserConnected(user) Core.GetUserAllData(user) ProTask.RC(user,"con"); if string.lower(tVar.sSpam) == "on" then if not tUserProfiles[user.sNick] then Core.SendToNick(user.sNick,"<"..tVar.sBot.."> *** "..tVar.sMsgtoUsers) else if TableMaxSize(tUserProfiles[user.sNick]["comments"]) > tUserProfiles[user.sNick]["new"] then Core.SendToNick(user.sNick,"<"..tVar.sBot.."> *** У твоей анкеты появились новые комментарии!") tUserProfiles[user.sNick]["new"] = TableMaxSize(tUserProfiles[user.sNick]["comments"]); ProTask.SaveProfile(); end end end end function OnExit() ProTask.SaveProfile(); end tScriptCmds = { [tCmd.sHelp] = function(user,data) local s = "" if pUser[user.iProfile] == 1 then s = s..tab.."\n\n"..tab.."::: ::: ::: Команды управления анкетой ::: ::: :::\n" ..tab.."\n\tПомощь по командам:\t\t- "..tVar.sPrefix..tCmd.sHelp ..tab.."\n\tМоя анкета:\t\t- "..tVar.sPrefix..tCmd.sProfile ..tab.."\n\tВсе анкеты:\t\t- "..tVar.sPrefix..tCmd.sViewPro ..tab.."\n\tОставить комментарий:\t\t- "..tVar.sPrefix..tCmd.sComment end if pAdmin[user.iProfile] == 1 then s = s.."\n\n"..tab.."::: ::: ::: Администраторские команды ::: ::: :::" ..tab.."\n\n\tУдалить анкету/значение в анкете\t- "..tVar.sPrefix..tCmd.sDelPro.."\n" end ProTask.ToUser(user,s); return true; end, [tCmd.sProfile] = function(user,data) if pUser[user.iProfile] ~= 1 then return true; end local sUser = user.sNick; local _,_,Cmd1 = string.find(data,"%b<>%s+%S+%s+(%S+)"); if Cmd1 then local _,_,Cmd2 = string.find(data,"%b<>%s+%S+%s+%S+%s+(%S+)"); if string.lower(Cmd1) == "создать" and not tUserProfiles[sUser] then ProTask.NewProfile(sUser); ProTask.RC(user,"update"); ProTask.ToUser(user,"*** Создана новая анкета! Чтобы отредактировать ее, воспользуйтесь меню или напиши в чате: "..tVar.sPrefix..tCmd.sProfile); elseif string.lower(Cmd1) == "добавить" and tUserProfiles[sUser] then if Cmd2 then if tUserProfiles[sUser][string.lower(Cmd2)] then local _,_,Cmd3 = string.find(data,"%b<>%s+%S+%s+%S+%s+%S+%s+(.*)"); if Cmd3 == "*" then ProTask.EditProfile(sUser,string.lower(Cmd2),"No declaration"); ProTask.ToUser(user,"*** Твоя анкета изменена: "..Cmd2.." - No declaration"); elseif Cmd3 then ProTask.EditProfile(sUser,string.lower(Cmd2),Cmd3); ProTask.ToUser(user,"*** Твоя анкета изменена: "..Cmd2.." - "..Cmd3); else ProTask.ToUser(user,"*** Ошибка! Ты забыл указать значение: "..tVar.sPrefix..tCmd.sProfile.." добавить "..Cmd2.." <текст>"); end else ProTask.ToUser(user,ProTask.ShowProfile(sUser,"profilecmds").."\r\n"..tab.."*** Ошибка! Чтобы отредактировать пункт анкеты воспользуйтесь командой "..tVar.sPrefix..tCmd.sProfile.." добавить <пункт> <текст>, * = пустое значение."); end else ProTask.ToUser(user,ProTask.ShowProfile(sUser,"user")..tab.."Выбери пункт анкеты, который хочешь\r\n"..tab.."отредактировать и укажи его значение:\r\n"..tab.." "..tVar.sPrefix..tCmd.sProfile.." добавить <пункт> <текст>\r\n"..tab.."* = пустое значение."); end elseif string.lower(Cmd1) == "удалить" then if Cmd2 then if string.lower(Cmd2) == "полностью" then ProTask.DelProfile(sUser); ProTask.ToUser(user,"*** Твоя анкета была удалена!"); else ProTask.ToUser(user,"*** ВНИМАНИЕ!! Это команда полностью удалит твою анкету! Для подтверждения введи: "..tVar.sPrefix..tCmd.sProfile.." удалить полностью"); end else ProTask.ToUser(user,"*** ВНИМАНИЕ!! Это команда полностью удалит твою анкету! Для подтверждения введи: "..tVar.sPrefix..tCmd.sProfile.." удалить полностью"); end else ProTask.ToUser(user,"*** Ошибка! Для редактирования или удаления свой анкеты введи: "..tVar.sPrefix..tCmd.sProfile.." <добавить/удалить>"); end else if not tUserProfiles[sUser] then ProTask.ToUser(user,"*** У тебя еще нет анкеты! Чтобы создать анкету напиши: "..tVar.sPrefix..tCmd.sProfile.." создать"); return true; else ProTask.ToUser(user,ProTask.ShowProfile(sUser,"user").."\r\n"..tab.."Для редактирования или удаления\r\n"..tab.."свой анкеты введи: "..tVar.sPrefix..tCmd.sProfile.." <добавить/удалить>"); end end return true; end, [tCmd.sViewPro] = function(user,data) if pUser[user.iProfile] ~= 1 then return true; end local _,_,sUser = string.find(data,"%b<>%s+%S+%s+(%S+)"); if tUserProfiles[sUser] then ProTask.ToUser(user,ProTask.ShowProfile(sUser,"user")); else ProTask.ToUser(user,ProTask.ShowProfile(user,"allusers").."\r\n"..tab.."*** "..tVar.sPrefix..tCmd.sViewPro.." <ник> для просмотра анкеты. ***"); end return true; end, [tCmd.sComment] = function(user,data) if pUser[user.iProfile] ~= 1 then return true; end local _,_,sUser,sComment = string.find(data,"%b<>%s+%S+%s+(%S+)%s+(.*)"); if sUser and tUserProfiles[sUser] and sComment then table.insert(tUserProfiles[sUser]["comments"], {["user"] = user.sNick,["msg"] = sComment}); ProTask.ToUser(user,"*** Твой комментарий добавлен!"); ProTask.SaveProfile(); else ProTask.ToUser(user,ProTask.ShowProfile(user,"allusers").."\r\n"..tab.."*** Ошибка! Чтобы добавить комментарий к анкете введите: "..tVar.sPrefix..tCmd.sComment.." <ник> <коммент> ***"); end return true; end, [tCmd.sDelPro] = function(user,data) if pAdmin[user.iProfile] ~= 1 then return true; end local _,_,Cmd1 = string.find(data,"%b<>%s+%S+%s+(%S+)"); if Cmd1 and Core.GetUser(Cmd1,true) then local _,_,Cmd2 = string.find(data,"%b<>%s+%S+%s+%S+%s+(%S+)"); if Cmd2 then if string.lower(Cmd2) == "удалить" then ProTask.DelProfile(Cmd1); ProTask.ToUser(user,"*** Анкета юзера "..Cmd1.." была удалена."); elseif tUserProfiles[Cmd1][string.lower(Cmd2)] then ProTask.EditProfile(Cmd1,string.lower(Cmd2),"No declaration"); ProTask.ToUser(user,"*** Пункт анкеты "..Cmd2.." юзера "..Cmd1.." был очищен."); else ProTask.ToUser(user,"*** Ошибка! Ты забыл указать, что мы будем делать - удалять или редактировать анкету: "..tVar.sPrefix..tCmd.sDelPro.." "..Cmd1.." <пункт/удалить>"); end else ProTask.ToUser(user,ProTask.ShowProfile(Cmd1,"user").."\r\n"..tab.."*** Укажите пункт для удаления или воспользуйтесь\r\n"..tab.."командой 'удалить', чтобы стереть всю анкету:\r\n"..tab..tVar.sPrefix..tCmd.sDelPro.." <ник> <пункт/удалить>"); end else ProTask.ToUser(user,"*** Чтобы удалить анкету юзера или пукнт чьей-либо анкеты воспользуйтесь командой: "..tVar.sPrefix..tCmd.sDelPro.." <ник>"); end return true; end, } ProTask = { ["RC"] = function(user,type) if type == "con" then if user.bUserCommand then if pUser[user.iProfile] == 1 and string.lower(tVar.sRCEnable) == "on" then Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Помощь$<%[mynick]> !"..tCmd.sHelp.."|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Оставить коммент$<%[mynick]> !"..tCmd.sComment.." %[line:Ник?] %[line:Коммент?]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Просмотр\\Все анкеты$<%[mynick]> !"..tCmd.sViewPro.."|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Просмотр\\Анкета этого юзера$<%[mynick]> !"..tCmd.sViewPro.." %[nick]|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Просмотр\\Анкета юзера..$<%[mynick]> !"..tCmd.sViewPro.." %[line:Введите ник]|") if tUserProfiles[user.sNick] then Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Посмотреть$<%[mynick]> !"..tCmd.sProfile.."|") MenuProfile(user) Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Удалить\\Свою анкету$<%[mynick]> !"..tCmd.sProfile.." удалить|") else Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Создать анкету$<%[mynick]> !"..tCmd.sProfile.." создать|") end end if pAdmin[user.iProfile] == 1 and string.lower(tVar.sRCEnable) == "on" then Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Админ\\Удалить анкету юзера$<%[mynick]> !"..tCmd.sDelPro.." %[line:Ник юзера?] удалить|") Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Админ\\Удалить пункт анкеты юзера$<%[mynick]> !"..tCmd.sDelPro.." %[line:Ник юзера?] %[line:Пункт анкеты?]|") end end elseif type == "update" then MenuProfile(user) Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Удалить\\Свою анкету$<%[mynick]> !"..tCmd.sProfile.." удалить|") end end, ["ToUser"] = function(user,s) if tVar.sMsg == "pm" then Core.SendPmToNick(user.sNick,tVar.sBot,s); else ProTask.ToUser(user,s); end end, ["NewProfile"] = function(sUser) tUserProfiles[sUser] = tFields tUserProfiles[sUser]["edited"] = "0"; tUserProfiles[sUser]["comments"] = {}; tUserProfiles[sUser]["new"] = 0; ProTask.SaveProfile(); end, ["SaveProfile"] = function() local f = assert(io.open(tVar.sFolder.."/"..tVar.sFile,"w+"),"Cannot locate folder: scripts\\"..tVar.sFolder); ProTask.Serialize(tUserProfiles,"tUserProfiles",f); f:close(); end, ["Serialize"] = function(tTable,sTableName,hFile,sTab) sTab = sTab or ""; hFile:write(sTab..sTableName.." = {\n"); for key,value in pairs(tTable) do if (type(value) ~= "function") then local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); if(type(value) == "table") then ProTask.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 end hFile:write(sTab.."}"); end, ["LoadProfile"] = function() if loadfile(tVar.sFolder.."/"..tVar.sFile) then dofile(tVar.sFolder.."/"..tVar.sFile); else local f = assert(io.open(tVar.sFolder.."/"..tVar.sFile,"w+"),"Cannot locate folder: scripts\\"..tVar.sFolder); f:write("ProfileData = {\r\n}"); f:close(); io.flush(); tUserProfiles = {}; end end, ["EditProfile"] = function(sUser,sItem,sValue) if tUserProfiles[sUser] then tUserProfiles[sUser][sItem] = sValue; if tUserProfiles[sUser]["edited"] == "0" then tUserProfiles[sUser]["edited"] = "1"; end ProTask.SaveProfile(); else ProTask.NewProfile(sUser); ProTask.SaveProfile(); ProTask.EditProfile(sUser,sItem,sValue) end end, ["DelProfile"] = function(sUser) tUserProfiles[sUser] = nil; ProTask.SaveProfile(); end, ["ShowProfile"] = function(sUser,type) local sMsg = "\r\n\r\n"..tab; if type == "user" then sMsg = sMsg.."-= Анкета "..sUser.." =-\r\n\r\n"; elseif type == "profilecmds" then sMsg = sMsg.."-= Анкета "..sUser.." - Показ команд =-\r\n\r\n"; elseif type == "all" or type == "allusers" then sMsg = sMsg.."-= Анкеты всех юзеров =-\r\n\r\n"; end local Lines = function(s,n,u) local tab = string.rep("\t",n); local msg = "\n"..tab..u..": " if string.find(s,"^(.-)\n") then s = s.."\n" local p = "\n" for line in StringMatch(t,".-\n") do if string.len(string.gsub(line,"%s+","")) ~= 0 then p = p..tab.." - "..line; end end return msg..p; else return msg..s; end end if type == "user" then if tUserProfiles[sUser] then sMsg = sMsg..tab..string.rep("«»",19).."\r\n" sMsg = sMsg..tab.."имя_в_реале\t - "..tUserProfiles[sUser]["имя_в_реале"].."\r\n"; sMsg = sMsg..tab.."дата_рождения\t - "..tUserProfiles[sUser]["дата_рождения"].."\r\n"; sMsg = sMsg..tab.."пол\t\t - "..tUserProfiles[sUser]["пол"].."\r\n"; sMsg = sMsg..tab.."тело\t\t - "..tUserProfiles[sUser]["тело"].."\r\n"; sMsg = sMsg..tab.."icq\t\t - "..tUserProfiles[sUser]["icq"].."\r\n"; sMsg = sMsg..tab.."где_живешь\t - "..tUserProfiles[sUser]["где_живешь"].."\r\n"; sMsg = sMsg..tab.."учеба_работа\t - "..tUserProfiles[sUser]["учеба_работа"].."\r\n"; sMsg = sMsg..tab.."о_себе\t\t - "..tUserProfiles[sUser]["о_себе"].."\r\n"; sMsg = sMsg..tab.."семья\t\t - "..tUserProfiles[sUser]["семья"].."\r\n"; sMsg = sMsg..tab.."о_других\t - "..tUserProfiles[sUser]["о_других"].."\r\n"; sMsg = sMsg..tab.."интересы\t - "..tUserProfiles[sUser]["интересы"].."\r\n"; sMsg = sMsg..tab.."музыка\t - "..tUserProfiles[sUser]["музыка"].."\r\n"; sMsg = sMsg..tab.."фильмы\t - "..tUserProfiles[sUser]["фильмы"].."\r\n"; sMsg = sMsg..tab.."привычки\t - "..tUserProfiles[sUser]["привычки"].."\r\n"; sMsg = sMsg..tab..string.rep("«»",19).."\n\n\t Комментарии:\n" for i = 1, TableMaxSize(tUserProfiles[sUser]["comments"]) do sMsg = sMsg..Lines(tUserProfiles[sUser]["comments"][i]["msg"],2,tUserProfiles[sUser]["comments"][i]["user"]); end end elseif type == "profilecmds" then if tUserProfiles[sUser] then sMsg = sMsg..tab..string.rep("«»",19).."\n" for sItem in pairs(tUserProfiles[sUser]) do if sItem ~= "edited" then sMsg = sMsg.."\t "..tVar.sPrefix..tCmd.sProfile.." add "..sItem.." \t- "..tUserProfiles[sUser][sItem].."\n"; end end sMsg = sMsg.."\t "..tVar.sPrefix..tCmd.sProfile.." добавить коммент\n" ..tab..string.rep("«»",19).."\n\n" end elseif type == "allusers" then if tUserProfiles ~= nil then sMsg = sMsg..tab..string.rep("«»",19).."\n\n" for User in pairs(tUserProfiles) do if string.lower(tVar.sEdited) == "on" then for sItem in pairs(tUserProfiles[User]) do if sItem == "edited" and tUserProfiles[User][sItem] ~= "0" then sMsg = sMsg.."\t •"..User.."\n"; end end else sMsg = sMsg.."\t •"..User.."\n"; end end sMsg = sMsg.."\n"..tab..string.rep("«»",19).."\n\n" end end return sMsg; end, }; tab = " "..string.rep(" ",string.len(tVar.sBot)); OpConnected = UserConnected RegConnected = UserConnected Автор Скрипта хер знает кто!! скрипт как я помню на ап1 был взятый от сюда и ДСЗона Переминовала автора(типо они создали скрипт) Посматри пример может надумаеш что!!! Сообщение отредактировал Saymon - 18.5.2010, 15:42
Причина редактирования: Не надо разукрашивать сообщения!
|
|
|
18.5.2010, 15:57
Сообщение
#244
|
|
Начинающий Группа: Пользователи Сообщений: 25 Регистрация: 1.10.2009 Из: Самара Пользователь №: 4 611 Спасибо сказали: 0 раз |
Все верно, небольшая база с личными данными юзеров заполняемая ими по желанию. Скрипт выше работает довольно криво. Отличная реализация скрипта от Jaska вот здесь
|
|
|
18.5.2010, 19:49
Сообщение
#245
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ну а что мешает поставить анкеты отдельным скриптом?
Если немного задуматься о принципах работы хаба и скриптов, то бот всё в одном по своей сути уступает в производительности такой же функциональности, сложенной из нескольких скриптов. |
|
|
18.5.2010, 20:48
Сообщение
#246
|
|
Начинающий Группа: Пользователи Сообщений: 25 Регистрация: 1.10.2009 Из: Самара Пользователь №: 4 611 Спасибо сказали: 0 раз |
Это всего лишь предложение по увеличению функциональности бота. Скрипт от Jaska стоит, плохо лишь то, что он с "закрытым исходным кодом"(.
|
|
|
19.5.2010, 2:57
Сообщение
#247
|
|
Продвинутый участник Группа: Пользователи Сообщений: 179 Регистрация: 24.2.2009 Из: Самара Пользователь №: 2 340 Спасибо сказали: 103 раза |
Благодарю за идеи, гляну наанкеты... Может руки дойдут А день рождения есть в плагине Коляды Дар с поздравлялкой и просмотром именинников
Ну а что мешает поставить анкеты отдельным скриптом? Если немного задуматься о принципах работы хаба и скриптов, то бот всё в одном по своей сути уступает в производительности такой же функциональности, сложенной из нескольких скриптов. Неа, в данной плагинной реализации не уступает, а как раз немного быстрее из-за передачи плагинам всем уже отсортированных и подготовленных данных (ники, данные, айпи и т.д.), тоесть каждому плагину нет необходимости парсировать события каждый раз. Но это мелочи |
|
|
19.5.2010, 7:13
Сообщение
#248
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
А ты думаешь со списком скриптов что-то каждый раз парсируется?
В птохе пробег по скриптам намного быстрее, чем у тебя. Скрипты в птохе находятся в двусвязных списках и там даже никакие переменные не инициализируются в цикле, а просто идёт переход по указателю. А теперь посмотри как работает цикл в lua. Ведь в lua циклы медленнее из-за помещения результатов на каждом шаге в стек и из-за различных внутренних инициалазаций. |
|
|
20.5.2010, 7:09
Сообщение
#249
|
|
Продвинутый участник Группа: Пользователи Сообщений: 179 Регистрация: 24.2.2009 Из: Самара Пользователь №: 2 340 Спасибо сказали: 103 раза |
Да я не про пробег. Я про то, что в каждом отдельноом скрипте они все парсируют данные для рабюоты отдельно. Каждый скрипт. А тут это делается лишь один раз и передаётся в готовом виде плагинам, которым уже не надо что-либо парсировать Да и плагины используют одни и теже процедуры и функции, не надо в каждом скрипте дублировать...
|
|
|
22.5.2010, 1:15
Сообщение
#250
|
|
Продвинутый участник Группа: Пользователи Сообщений: 179 Регистрация: 24.2.2009 Из: Самара Пользователь №: 2 340 Спасибо сказали: 103 раза |
Кстати, а какие бы вы хотели пункты видеть в анкетах? Как вы себе представляете, что там должно быть и как... Какие предложения/соображения есть? Только своими словами
|
|
|
23.5.2010, 18:22
Сообщение
#251
|
|
Начинающий Группа: Пользователи Сообщений: 25 Регистрация: 1.10.2009 Из: Самара Пользователь №: 4 611 Спасибо сказали: 0 раз |
1. Пункты (по минимуму)
-Имя -Фамилия -Пол -Адрес -Возраст -Учеба/работа -Привычки -Интересы 2. Возможность оставлять/просматривать комментарии к анкетам другим юзеров. 3. Напоминание юзерам при заходе на хаб заполнить анкету, или же отказаться от ее заполнения. 4. Вывод списка всех юзеров, создавших анкеты. 5. Рейтинг по заполненности анкеты (не обязательно). 6. Рейтинг по профилю (респекты, тоже не обязательно). Думаю этого более чем достаточно) Вот пример сообщения от бота: Цитата <<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>;><<>><<>>
*** Мой Аккуант *** <<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>> Имя -> Александр Фамилия -> Наумов Пол -> м Адрес -> 6-ка Возраст -> 22 Учеба/работа -> ФАИТ Привычки -> бла бла бла Интересы -> бла бла бла <<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>> Рейтинг анкеты: 62.5% (Нормально) Респектов автору: 3 (Лох) <<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>> Юзер Serva4ok написал: Превед хозяин |
|
|
23.5.2010, 21:03
Сообщение
#252
|
|
МеСтНый ФлУдЕР xD Группа: Пользователи Сообщений: 59 Регистрация: 2.3.2010 Из: Г.Муравленко ЯНАО Пользователь №: 6 241 Спасибо сказали: 0 раз |
1. Пункты (по минимуму) -Имя -Фамилия -Пол -Адрес -Возраст -Учеба/работа -Привычки -Интересы 2. Возможность оставлять/просматривать комментарии к анкетам другим юзеров. 3. Напоминание юзерам при заходе на хаб заполнить анкету, или же отказаться от ее заполнения. 4. Вывод списка всех юзеров, создавших анкеты. 5. Рейтинг по заполненности анкеты (не обязательно). 6. Рейтинг по профилю (респекты, тоже не обязательно). Думаю этого более чем достаточно) Вот пример сообщения от бота: --------------------------------------------------------------------------------------- припишу к етому если можно добавить город что+ что бы показывало когда последний раз редоктировалась ета анкета,, ++ если можно зделать добавить следущее: хотелось бы что бы следущеи пунткты можно было зделать что бы просматревать их могли только по нику приведу пример,, я сижу на хабе вот в друг создал свою анкету,, и решил вбить в свою анкету мыло асю сотовый и т.д,, но хотелось бы видеть такое что бы в етом же пункте(меню) была такая шляпа что какие то именно разделы(мыло ася и т.д) были видны опреденлёным юзерам,,,, -------------------- домашний телефон сотовый телефон мыло ася жабер мсн +что бы почты ети и сото |
|
|
24.5.2010, 21:04
Сообщение
#253
|
|
Продвинутый участник Группа: Пользователи Сообщений: 179 Регистрация: 24.2.2009 Из: Самара Пользователь №: 2 340 Спасибо сказали: 103 раза |
Я тут подумал, нерационально делать систему "друзей" или "привелигированных" пользователей для просмотра вашей анкеты. Тоесть записывать туда информацию, которую разрешать для просмотра лишь отдельным никам. Это не имеет особого смысла (можно и без анкет кому надо сообщить что надо, раз вы общаетесь). Слишком "раздует" базу такая система, я не люблю занимать лишние ресурсы ВОт, думаю, что это не нужно
|
|
|
29.5.2010, 13:01
Сообщение
#254
|
|
Продвинутый участник Группа: Пользователи Сообщений: 179 Регистрация: 24.2.2009 Из: Самара Пользователь №: 2 340 Спасибо сказали: 103 раза |
А зачем нужны комментарии к анкетам и "респекты"? Какой смысл в комментариях к анкете? Если надо связаться с автором, то есть оффлайн-почта, к примеру... Или же тот же плагин доски объяслений (который можно как микроблог использовать). Может не нужно это?
|
|
|
31.5.2010, 11:02
Сообщение
#255
|
|
Участник Группа: Пользователи Сообщений: 39 Регистрация: 8.3.2009 Из: Ярославля Пользователь №: 2 517 Спасибо сказали: 3 раза |
Доброго времени суток Phazeus! Хотел узнать, как можно сделать так, чтобы незарегистрированные пользователи не могли писать в чат команды /me. И еще вот какая штука, если перед текстом с плюсом поставить пробел, то сообщение попадает в чат, если человек незарегистрирован.
Например: +бла-бла-бла Результатом будет попадание сообщение в общий чат. В настройках ["CmdPrefix"] = "[!%+]" . Как быть? PS: Думаю что анкеты для хаба не нужны. Это программа, основной задачей которой является файлообмен. А превращать из дц социалку бред. Для этого есть Commfort, etc. Как показывает практика примерно 95% юзеров не пользуется и половиной всех возможностей бота, его функций. Это мое личное мнение |
|
|
2.6.2010, 7:13
Сообщение
#256
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Сделай под русхаб.
Большая функциональность - это всегда плюс, если только эта функциональность не приводит к тормозам |
|
|
2.6.2010, 9:13
Сообщение
#257
|
|
Продвинутый участник Группа: Пользователи Сообщений: 179 Регистрация: 24.2.2009 Из: Самара Пользователь №: 2 340 Спасибо сказали: 103 раза |
Поможешь со своим АПИ?
|
|
|
2.6.2010, 10:16
Сообщение
#258
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Конечно поможем! Если что - мы часто на хабе, да и на форуме стараемся оперативно отвечать.
|
|
|
4.6.2010, 22:43
Сообщение
#259
|
|
Начинающий Группа: Пользователи Сообщений: 25 Регистрация: 1.10.2009 Из: Самара Пользователь №: 4 611 Спасибо сказали: 0 раз |
PS: Думаю что анкеты для хаба не нужны. Это программа, основной задачей которой является файлообмен. А превращать из дц социалку бред. Для этого есть Commfort, etc. Как показывает практика примерно 95% юзеров не пользуется и половиной всех возможностей бота, его функций. Это мое личное мнение В нашей локалке все чаты были вытеснены ДС и для многих хаб стал местом общения. По поводу незнания/неумения/нехотения юзерами всех фич согласен. Мизерное колечество пользователей пользуется чем либо еще кроме файлообмена и главного чата. Анкеты однозначно нужны, да и маслом кашу не испортишь. Комментарии и тем более респекты совсем не обязательны, это всего лишь мои предложения. |
|
|
9.6.2010, 15:07
Сообщение
#260
|
|
Активный участник Группа: Пользователи Сообщений: 53 Регистрация: 8.6.2010 Пользователь №: 7 012 Спасибо сказали: 1 раз |
Может я плохо чет читал, но в мануале я так и не понял, как удалять или отключать ненужные мне функции Экзекутора к примеру Печкина, Доску объявлений и т.д. И как вообще скрыть пункты меню для простых юзеров, оставив там только Действия и Регистрация.
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Экзекутор (ekzekutor) API2|Универсальный многоязычный бот для PtokaX,VerliHub,RusHub,Eximius |
168 | Phazeus | 229 740 | 27.4.2014, 10:08 Посл. сообщение: Prizrak333 | |
Экзекутор, Верлик и ВДС | 8 | Aлзим | 13 415 | 12.3.2013, 15:40 Посл. сообщение: Артём | |
Бот Экзекутор бот птохи |
1 | Slav | 6 695 | 11.9.2009, 12:43 Посл. сообщение: Maximum |
|
Сейчас: 23.12.2024, 21:22 |