Вопрос по написанию скрипта, Нужна консультация |
Здравствуйте, гость ( Вход | Регистрация )
Вопрос по написанию скрипта, Нужна консультация |
5.7.2009, 19:53
Сообщение
#1
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
Монтирую скрипт.
Пишет ошибку:[22:46] Синтаксис [string "..."]:11: attempt to index global 'CoreAll' (a nil value) Перевод:[22:46] Синтаксис [натягивают "..."]:11: пытайтесь индексировать глобальную переменную 'CoreAll' (нулевое значение) 11 строка:local f = io.open( Core.GetPtokaXPath():gsub("/", "\\").."scripts\\"..filename, "r" ) Пробовал так:local f = io.open( CoreAll.GetPtokaXPath():gsub("/", "\\").."scripts\\"..filename, "r" ) Пишет:[22:55] Синтаксис ...e_Dif-Hub\InstaHub-0.23\InstaHub\scripts\Ворожея.lua:11: attempt to index global 'CoreAll' (a nil value). Сам скрипт не запускается. Объясните смысл и что сделать тут? Пасяб. |
|
|
5.7.2009, 20:14
Сообщение
#2
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
объясни суть того что ты пытаешься сделать.
|
|
|
5.7.2009, 20:14
Сообщение
#3
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Что за бред пишешь?
В данной строчке нет ошибки Код local f = io.open( Core.GetPtokaXPath():gsub("/", "\\").."scripts\\"..filename, "r" )
|
|
|
5.7.2009, 20:29
Сообщение
#4
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
объясни суть того что ты пытаешься сделать. Я переделал скрипт Гадалка в скрипт Колдунчик (прибавил рандомов, см. в Корзине). Он два дня поработал и теперь пишет ошибку про ядро. Теперь пытаюсь сделать следующую модификацию скрипта(назвал Ворожея), который бы гадал не себе (или не только себе), но и намеченному юзеру или случайному. Начал с решения вышеописанной ошибки. Высмотрел на форуме ситуацию, чем-то похожую на мою и переписал 11 строку так: local f = io.open( Core.GetOnlineUsers():gsub("/", "\\").."scripts\\"..filename, "r" ) и теперь мне пишет уже другую ошибку: [23:15] Синтаксис ...e_Dif-Hub\InstaHub-0.23\InstaHub\scripts\Ворожея.lua:11: attempt to call method 'gsub' (a nil value) перевожу: [23:15] Синтаксис... e_Dif-Hub\InstaHub-0.23\InstaHub\scripts\Ворожея.lua:11: пытайтесь называть(вызывать) метод 'gsub' (нулевое значение) Та же строка, ошибка сдвинулась.... Что такое 'gsub' и как задать не нулевое значение? |
|
|
5.7.2009, 21:10
Сообщение
#5
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ты вообще не понимаешь что делаешь!
Читай описания функций: http://mydc.ru/index.html?showtopic=118&am...post&p=2697 Функция Core.GetOnlineUsers() возвращает таблицу, а не строку. Метод gsub может работать только со строками. |
|
|
5.7.2009, 21:34
Сообщение
#6
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
Ты вообще не понимаешь что делаешь! Читай описания функций: http://mydc.ru/index.html?showtopic=118&am...post&p=2697 Функция Core.GetOnlineUsers() возвращает таблицу, а не строку. Метод gsub может работать только со строками. И впрямь, с свиным рылом а калашный ряд(((.... Видишь ли, моя пуля в голове зашевелилась, после того, как я переделал, черт бы её побрал, Гадалку в Колдунчика. Колдунчик честно поработал два дня и сдох. Выдает в чат только команду !колдуй (одновременно еще парочка скриптов отказала).... Гадалка тоже только команду стала выдавать. Не знаю куда и думать... |
|
|
5.7.2009, 21:42
Сообщение
#7
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
если команда проскакивает значит полюбому есть ошибка!
|
|
|
5.7.2009, 22:09
Сообщение
#8
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
если команда проскакивает значит полюбому есть ошибка! Ха-Ха 3 раза, вот что мне нужно было, так это твой пост тут http://mydc.ru/topic1164.html?p=12198&#entry12198 -прописать абсолютные пути, т.е. папки поименовать надлежаще. Спасибо за тот пост. Кстати я там приколюшку кавайную нарыл- Доброе время суток))) Попер мой колдунчик. Где теперь разместить вопрос: Как заставить Колдунчика гадать на намеченного юзера и писать в чат не единой строкой а как бутылочка: -Колдуй баба.. -Колдуй дед... т.е. выдавать многострочное сообщение? а? ))) Спасибо, что тему эту в козину не отправили, теперь уже можно))) |
|
|
5.7.2009, 22:16
Сообщение
#9
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
Ха-Ха 3 раза, вот что мне нужно было, так это твой пост тут http://mydc.ru/topic1164.html?p=12198&#entry12198 -прописать абсолютные пути, т.е. папки поименовать надлежаще. Спасибо за тот пост. Кстати я там приколюшку кавайную нарыл- Доброе время суток))) Попер мой колдунчик. Где теперь разместить вопрос: Как заставить Колдунчика гадать на намеченного юзера и писать в чат не единой строкой а как бутылочка: -Колдуй баба.. -Колдуй дед... т.е. выдавать многострочное сообщение? а? ))) Спасибо, что тему эту в козину не отправили, теперь уже можно))) еще раз повторюсь - я всего лишь требовал выполнения правил. Ты мог же (на сколько я помню настройки этого форума это разрешают) привести первое сообщение к нормальному виду. Дней 5 точно было. |
|
|
5.7.2009, 22:17
Сообщение
#10
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
так посмотри как в бутылочке это реализовано (с помощью таймера) и сделай)))
|
|
|
6.7.2009, 0:16
Сообщение
#11
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
Разве я не исправил сообщение(пост)? Оно еще в корзине.... Я, повторяю, не мог исправить название темы и её описание.
так посмотри как в бутылочке это реализовано (с помощью таймера) и сделай))) Канеш я и сам в первую очередь об этом подумал. Уже сделал вот такой вид: [03:13:50] <Ворожея> Колдуй баба, колдуй дед.. [03:13:50] трое сбоку - ваших нет! [03:13:50] Туз бубновый, гроб сосновый- [03:13:50] Про планиду дай ответ! [03:13:50] Леший говорит: Uncle_Dif обопьётся пивом 26 Октября 2095 года по причине : Самоубийство лузера Но выдается это одним махом. Из бутылочки пытался вырезать таймер(как я его понял), вставил- лажа, кароч- не то что-то. На форуме гденить был код таймера? |
|
|
6.7.2009, 7:58
Сообщение
#12
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
таймер задаётся так:
Код TmrMan.AddTimer(iTime, sFunction) iTime - время в милисекундах Например: Код TmrMan.AddTimer(1000, sFunction) говорит о том что функция будет выполнятся раз в секунду sFunction - функция которая выполняется по таймеру. Если не указанна, то используется функция OnTimer. Например: Код TmrMan.AddTimer(1000, "Test") говорит о том что функция Test будет выполнятся раз в секунду, естественно в теле скрипта должна быть эта фкнуция |
|
|
6.7.2009, 11:52
Сообщение
#13
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
Спасибо. Теперь буду думать эту мысль.
|
|
|
8.7.2009, 10:30
Сообщение
#14
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
Wariner,изломал всю голову- в ней уже и пуля зашевелилась...((
Если не влом, посмотри что мне исправить, чтоб такое: [13:23:31] <Ворожея> [13:23:31] Колдуй баба, колдуй дед.. [13:23:31] трое сбоку - ваших нет! [13:23:31] Туз бубновый, гроб сосновый-... [13:23:31] Про планиду дай ответ! [13:23:31] Билл Гейтц говорит: Uncle_Dif познакомиттца с любофью28 Июля 2029 года по причине : Альтернатива- Дом2. выдавало бы так: [13:23:31] <Ворожея> [13:23:32] Колдуй баба, колдуй дед.. [13:23:33] трое сбоку - ваших нет! [13:23:34] Туз бубновый, гроб сосновый-... [13:23:35] Про планиду дай ответ! [13:23:36] Билл Гейтц говорит: Uncle_Dif познакомиттца с любофью28 Июля 2029 года по причине : Альтернатива- Дом2. Что тамс таймером у меня? CODE Bot = "Ворожея" SpinCmd = "!ворожи" SecondsInterval = 60 GameOn = 1 Time = 1 -- Загрузка списка из файла function loadlist( filename ) local list = {} local f = io.open( Core.GetPtokaXPath():gsub("/", "\\").."scripts\\"..filename, "r" ) if f then local line = f:read("*line") while line do table.insert(list,line) line = f:read("*line") end f:close() end return list end SpinData = loadlist("deathv/data.dat") SpinMonth = loadlist("deathv/month.dat") SpinYear = loadlist("deathv/year.dat") SpinReason = loadlist("deathv/reason.dat") SpinSpiritsv = loadlist("deathv/spiritsv.dat") SpinKoldunv = loadlist("deathv/koldunv.dat") SpinMake = loadlist("deathv/make.dat") function OnTimer(tmr) TmrMan.AddTimer(1000, sFunction) --SendToAll("<"..Bot.."> Колдунчик осободился, наберите !колдуй что бы узнать свою-твою планиду") GameOn = 1 end function OnStartup() --SendToAll("<"..Bot.."> На хаб пришел Колдунчик, наберите !колдуй.") GameOn = 1 end function ChatArrival(curUser,data) Core.GetUserAllData(curUser) data = string.sub(data,1,string.len(data)-1) s,e,cmd = string.find(data,"%b<>%s+(%S+)") if cmd == SpinCmd then if GameOn == 1 then local OnlineTable = Core.GetOnlineUsers(true) if #OnlineTable < 2 then Core.SendToAll("<"..Bot.."> Пользователей должно быть болше одного.") return true end tmr = TmrMan.AddTimer(SecondsInterval*1000) GameOn = 0 UsersNick = {} for _,oUser in pairs(OnlineTable) do table.insert(UsersNick,oUser.sNick ) end i = #UsersNick if i < 0 then i = 10 end a = math.random(1,i) b = math.random(1,i) while a == b do b = math.random(1,i) end sAnswer = "<"..Bot.."> "..SpinKoldunv[math.random(1,#SpinKoldunv)]..""..SpinSpiritsv[math.random(1,#SpinSpiritsv)].." "..curUser.sNick.." "..SpinMake[math.random(1,#SpinMake)]..""..SpinData[math.random(1,#SpinData)].." "..SpinMonth[math.random(1,#SpinMonth)].." "..SpinYear[math.random(1,#SpinYear)].." года по причине : "..SpinReason[math.random(1,#SpinReason)].."" Core.SendToAll(sAnswer) Time = ((os.date("%H") * 60 ) + os.date("%M")) * 60 + os.date("%S") return true else local i = SecondsInterval - (((os.date("%H") * 60 ) + os.date("%M")) * 60 + os.date("%S") - Time) Core.SendToNick(curUser.sNick,"<"..Bot.."> Ворожея будет свободна через "..i.." секунд.") return true end end end ---------------------- МЕНЮ -------------------------------------------- CMenu = "Меню Uncle_Dif-Hub\\Игры\\Ворожея" -- Начальный путь в меню tProfiles = { [0] = 1, [1] = 1, [2] = 1, [3] = 1, [-1] = 0, } function UserConnected(user) if tProfiles[user.iProfile] == 1 then Core.SendToUser(user,"$UserCommand 1 3 "..CMenu.."\\Ворожить\\Себе\\$<%[mynick]> !ворожи|") end end OpConnected = UserConnected RegConnected = UserConnected |
|
|
8.7.2009, 13:35
Сообщение
#15
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код TmrMan.AddTimer(1000, sFunction) Что за переменная sFunction? |
|
|
8.7.2009, 14:02
Сообщение
#16
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
|
|
|
8.7.2009, 15:19
Сообщение
#17
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ну так нельзя бездумно переписывать!
Эта переменная должна содержать имя функции, которая должна выполняться в таймере. |
|
|
8.7.2009, 15:24
Сообщение
#18
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
|
|
|
8.7.2009, 15:35
Сообщение
#19
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В приведённом коде таймер не запущен!
В твоём коде в таймерной функции создаётся ещё один таймер, кроме того, что таймерная функция будет просто пожирать память, так она ещё будет выводить в чат каждую секунду фразу: "<"..Bot.."> Колдунчик осободился, наберите !колдуй что бы узнать свою-твою планиду". В общем бред, и не понятно чего тебе нужно. |
|
|
8.7.2009, 20:45
Сообщение
#20
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
В общем бред, и не понятно чего тебе нужно.
[/quote] Не знаю как еще объяснить мою затею. Мой бот выдает в чат одномоментно это: [13:23:31] <Ворожея> [13:23:31] Колдуй баба, колдуй дед.. [13:23:31] трое сбоку - ваших нет! [13:23:31] Туз бубновый, гроб сосновый-... [13:23:31] Про планиду дай ответ! [13:23:31] Билл Гейтц говорит: Uncle_Dif познакомиттца с любофью28 Июля 2029 года по причине : Альтернатива- Дом2. Как видно сообщение датировано временем 13.23.31. Я хочу чтоб сообщение выдавалось как в Бутылочке, с интервалом в 1 секунду и выдавало бы так: [13:23:31] <Ворожея> [13:23:32] Колдуй баба, колдуй дед.. [13:23:33] трое сбоку - ваших нет! [13:23:34] Туз бубновый, гроб сосновый-... [13:23:35] Про планиду дай ответ! [13:23:36] Билл Гейтц говорит: Uncle_Dif познакомиттца с любофью28 Июля 2029 года по причине : Альтернатива- Дом2. Вот не знаю как с таймером обращаться: правильный таймер установить и настроить его. |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 2:00 |