Вопросы по скриптам, Мелкие вопросы |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы по скриптам, Мелкие вопросы |
20.3.2010, 12:38
Сообщение
#41
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Wariner, будь добор пожалуйста, приведи пример кода.
Попробовал вчера это сделать, не получилось ничего. |
|
|
20.3.2010, 12:46
Сообщение
#42
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
какой именно пункт тебе не понятен?
|
|
|
20.3.2010, 12:50
Сообщение
#43
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Цитата ник писавшего и его решение ( типо 1 - посыдать; 0 - не посылать) тут вот что то я сомневаюсь 3) записываешь в таблицу ник = решение (можно и не в таблицу но я вот как то к ним не ровно дышу) 4) при входе проверяешь условие если 1 посылаешь если нет то нет))) с этим можно сказать я вот не разу не работал |
|
|
20.3.2010, 12:55
Сообщение
#44
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
ну таблицу объявляешь в самом начале скрипта
Код tShow = {} запись будет в таком виде: Код tShow["nick"] = 1 --или 0 проверка осуществляется условием Код if tShow["nick"] == 1 then -- посылаем end PS: так же не забывай сохранять файл в таблицу стандартными функциями! PPS: естественно вместо ника и цифры должны быть именно нужные значения! |
|
|
20.3.2010, 12:58
Сообщение
#45
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
а с сохранением в файл как? Ужас, что я совсем уже втупике.
|
|
|
20.3.2010, 13:06
Сообщение
#46
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
мда... вот открыл первый попавшийся свой скрипт:
Пути Код local sPath = Core.GetPtokaXPath().."scripts/TopicManager/" -- Папка скрипта local sSettings = sPath.."Settings.tbl" -- Файл с настройками объявление таблицы Код tSettings = {} загрузка таблицы и сохранение её по тай Код function OnStartup() if loadfile(sSettings) then dofile(sSettings) end TmrMan.AddTimer(iTime*60000, "OnExit") end function OnExit() WriteTable(tSettings, "tSettings", sSettings) 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 |
|
|
20.3.2010, 23:14
Сообщение
#47
|
|
Продвинутый участник Группа: Пользователи Сообщений: 153 Регистрация: 21.9.2008 Из: Челябинск Пользователь №: 574 Спасибо сказали: 54 раза |
Если записывать в таблице ник юзера вместе с решением, то там может быть раза в 2 больше чем нужно, которые запишутся от того что юзеры просто "опробуют" функцию.
Недавно допиливал такое... сделал по подобию истории чата: в таблицу сохраняется только ники которым отсылать ничего не нужно - получается таблица исключений. Ну и просто проверяется наличие ника в этой таблице... |
|
|
20.3.2010, 23:18
Сообщение
#48
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Вот сейчас сижу ковыряю что то ничего всё равно не получается
|
|
|
21.3.2010, 15:13
Сообщение
#49
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Вот рабочий пример функции которая позволяет юзеру выбирать отсылать ли ему сообщение при входе или нет.
Автор Nickolya Example.lua ( 2.8 килобайт ) Кол-во скачиваний: 14 От себя выражаю огромное спасибо Nickolya. |
|
|
22.3.2010, 19:08
Сообщение
#50
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 1 Регистрация: 16.3.2010 Пользователь №: 6 373 Спасибо сказали: 0 раз |
А зачем скрипты располагать в каком то определённом порядке? И в каком порядке они должны быть? И почему при включении некоторых скриптов не работают другие? Например при включении весёлого чата не работает регистратор.
|
|
|
23.3.2010, 9:13
Сообщение
#51
|
|
[n00b] Группа: Пользователи Сообщений: 291 Регистрация: 10.7.2008 Из: Россия,Пенза Пользователь №: 168 Спасибо сказали: 24 раза |
А зачем скрипты располагать в каком то определённом порядке? И в каком порядке они должны быть? Никто не зставляет ставить в определенном порядке. Как получится-так и будет. у меня когда хаб пару раз слетел, все скрипты по имени упорядочились. Красота Но сейчас они более упорядочены по времени добавления. Цитата И почему при включении некоторых скриптов не работают другие? Например при включении весёлого чата не работает регистратор. Поставь веселый чат в саааамый низ. Или же просто пониже самого регистратора. Но лучше 1ый вариант.. И да, можно в веселом чате дописать команды, которые не будет он затрагивать. |
|
|
24.3.2010, 17:55
Сообщение
#52
|
|
Продвинутый участник Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз |
Поиогите пожалуйста в 2-х вопросах:
1) Скрипт CmdsLogger Немного переделал отправку сообщения "*** Послана команда хабу...." В оригинальном скрипте это сообщение отправляеться тому нику, который указан в переменой "sAdminNick" и сам код отправки выглядит так: Код if tUser.sNick~=sAdminNick then Core.SendToNick(sAdminNick, "<"..sBot.."> *** Послана команда хабу: "..sData) end При этом на команды отправляемые с этого ника скрипт не реагирует, т.е. команды вводимые админом не отображаються ему в чат Я же сделал так: Код if tUser.sNick~=sAdminNick then Core.SendToOps("<"..sBot.."> *** Послана команда хабу: "..sData) end И проблема в том, что операторам ну и мне (Главному админу) отправляеться отчёт, о том что я или же мои операторы воспользовались такой то такой то командой. Например: Цитата [17:48:52] <Hub-Bot> *** Вы уже зарегистрированы! [17:48:52] <Hub-Bot> *** Послана команда хабу: <DrakonSP> +regme Предполагаю что дело в строчке: Код if tUser.sNick~=sAdminNick then Но незнаю, чего прописать в место sAdminNick, что бы админам (опам) не приходил отчёт об отправленных ими же команд. 2) Скрипт HubMenu Тут проблема заключаеться в том, что админы (опы) сидят и дропают сами себя =)) Надо вообщем сделать так, что бы эта команда не распространялась на админов (опов) Например: Цитата [17:48:52] <Hub-Bot> *** Данная команда на этого пользователя не может быть распространена!
|
|
|
25.3.2010, 12:08
Сообщение
#53
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
1. Да, дело в этой строке
Код if tUser.sNick~=sAdminNick then замени ее наКод if not Core.GetUserValue(tUser, 11) then 2. По поводу этого скрипта могу лишь сказать что это скрипт создающий меню в соответствии с правами пользователя, а уже ранговая система это совсем другая область. Так что либо писать скрипт чтобы опы не могли применять команды друг на друга, либо же поговорить с этими раздолбаями и сказать что так делать нельзя. |
|
|
14.5.2010, 11:12
Сообщение
#54
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Вот рабочий пример функции которая позволяет юзеру выбирать отсылать ли ему сообщение при входе или нет. Автор Nickolya Example.lua ( 2.8 килобайт ) Кол-во скачиваний: 14 От себя выражаю огромное спасибо Nickolya. Скрипт работает только до первой перезагрузки (скрипта). Вот более правильный код (сравни со своим): Раскрывающийся текст Код sOurFileWay = Core.GetPtokaXPath().."scripts/somefile.txt" -- путь к файлу tTableData = {} function OnStartup() if loadfile(sOurFileWay) then dofile(sOurFileWay) end end function OnExit() SaveToFile(sOurFileWay, tTableData, "tTableData") -- сохраняем при выходе end function UserConnected(user) -- меню: Core.SendToUser(user, "$UserCommand 1 3 Информация\\получать$<%[mynick]> +ИзменитьСтатус on|") Core.SendToUser(user, "$UserCommand 1 3 Информация\\не получать$<%[mynick]> +ИзменитьСтатус off|") if not tTableData[user.sNick] then -- проверяем на отсутствие ника в таблице и если его там нет то отсылаем ему информацию Core.SendToUser(user, "..........") end end OpConnected = UserConnected RegConnected = UserConnected function ChatArrival(user, sData) local sCmd, sOption = sData:match"%b<>%s+[!%+%*](%S+)%s*(%S*).*|$" -- отлавливаем команду и аругмент после нее if sCmd == "ИзменитьСтатус" then -- если наша команда if not sOption then -- если вдруг отсутствует статус в команде Core.SendToUser(user, "*** Вы не ввели статус команды!") elseif sOption == "on" then -- если опция после команды on то if not tTableData[user.sNick] then -- если ника нет в таблице то он получает инфу Core.SendToUser(user, "*** Вы и так получаете информацию при входе!") else tTableData[user.sNick] = nil -- иначе удаляем ник из таблицы SaveToFile(sOurFileWay, tTableData, "tTableData") Core.SendToUser(user, "*** Теперь вы получаете информацию при входе!") end elseif sOption == "off" then -- если опция после команды off то if tTableData[user.sNick] then -- если ник в таблице Core.SendToUser(user, "*** Вы и так ничего не получаете при входе!") else tTableData[user.sNick] = true -- иначе добавляем ник в таблицу SaveToFile(sOurFileWay, tTableData, "tTableData") Core.SendToUser(user, "*** Теперь вы не получаете информацию при входе!") end else -- если опции нет или она какая-то странная Core.SendToUser(user, "*** Неверный статус команды!") end return true end end |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 1:03 |