myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему

> Вопрос по написанию скрипта, Нужна консультация

Теги
Нет тегов для показа
Uncle_Dif
сообщение 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). Сам скрипт не запускается.
Объясните смысл и что сделать тут?
Пасяб.
Go to the top of the page
+Quote Post
Wariner
сообщение 5.7.2009, 20:14
Сообщение #2


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




объясни суть того что ты пытаешься сделать.
Go to the top of the page
+Quote Post
Setuper
сообщение 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" )
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 5.7.2009, 20:29
Сообщение #4


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Цитата(Wariner @ 5.7.2009, 21:14) *
объясни суть того что ты пытаешься сделать.


Я переделал скрипт Гадалка в скрипт Колдунчик (прибавил рандомов, см. в Корзине).
Он два дня поработал и теперь пишет ошибку про ядро.
Теперь пытаюсь сделать следующую модификацию скрипта(назвал Ворожея), который бы гадал не себе (или не только себе), но и намеченному юзеру или случайному. Начал с решения вышеописанной ошибки. Высмотрел на форуме ситуацию, чем-то похожую на мою и переписал 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' и как задать не нулевое значение?
Go to the top of the page
+Quote Post
Setuper
сообщение 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 может работать только со строками.
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 5.7.2009, 21:34
Сообщение #6


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Цитата(Setuper @ 5.7.2009, 21:10) *
Ты вообще не понимаешь что делаешь!
Читай описания функций: http://mydc.ru/index.html?showtopic=118&am...post&p=2697

Функция Core.GetOnlineUsers() возвращает таблицу, а не строку. Метод gsub может работать только со строками.


И впрямь, с свиным рылом а калашный ряд(((....
Видишь ли, моя пуля в голове зашевелилась, после того, как я переделал, черт бы её побрал, Гадалку в Колдунчика. Колдунчик честно поработал два дня и сдох. Выдает в чат только команду !колдуй (одновременно еще парочка скриптов отказала)....
Гадалка тоже только команду стала выдавать. Не знаю куда и думать...
Go to the top of the page
+Quote Post
Wariner
сообщение 5.7.2009, 21:42
Сообщение #7


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




если команда проскакивает значит полюбому есть ошибка!
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 5.7.2009, 22:09
Сообщение #8


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Цитата(Wariner @ 5.7.2009, 21:42) *
если команда проскакивает значит полюбому есть ошибка!


Ха-Ха 3 раза, вот что мне нужно было, так это твой пост тут http://mydc.ru/topic1164.html?p=12198&#entry12198 -прописать абсолютные пути, т.е. папки поименовать надлежаще. Спасибо за тот пост. Кстати я там приколюшку кавайную нарыл- Доброе время суток)))
Попер мой колдунчик. Где теперь разместить вопрос: Как заставить Колдунчика гадать на намеченного юзера и писать в чат не единой строкой а как бутылочка:
-Колдуй баба..
-Колдуй дед...
т.е. выдавать многострочное сообщение? а? )))
Спасибо, что тему эту в козину не отправили, теперь уже можно)))
Go to the top of the page
+Quote Post
mariner
сообщение 5.7.2009, 22:16
Сообщение #9


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата(Uncle_Dif @ 5.7.2009, 23:09) *
Ха-Ха 3 раза, вот что мне нужно было, так это твой пост тут http://mydc.ru/topic1164.html?p=12198&#entry12198 -прописать абсолютные пути, т.е. папки поименовать надлежаще. Спасибо за тот пост. Кстати я там приколюшку кавайную нарыл- Доброе время суток)))
Попер мой колдунчик. Где теперь разместить вопрос: Как заставить Колдунчика гадать на намеченного юзера и писать в чат не единой строкой а как бутылочка:
-Колдуй баба..
-Колдуй дед...
т.е. выдавать многострочное сообщение? а? )))
Спасибо, что тему эту в козину не отправили, теперь уже можно)))


еще раз повторюсь - я всего лишь требовал выполнения правил. Ты мог же (на сколько я помню настройки этого форума это разрешают) привести первое сообщение к нормальному виду. Дней 5 точно было.
Go to the top of the page
+Quote Post
Wariner
сообщение 5.7.2009, 22:17
Сообщение #10


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




так посмотри как в бутылочке это реализовано (с помощью таймера) и сделай)))
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 6.7.2009, 0:16
Сообщение #11


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Разве я не исправил сообщение(пост)? Оно еще в корзине.... Я, повторяю, не мог исправить название темы и её описание.

Цитата(Wariner @ 5.7.2009, 22:17) *
так посмотри как в бутылочке это реализовано (с помощью таймера) и сделай)))


Канеш я и сам в первую очередь об этом подумал. Уже сделал вот такой вид:
[03:13:50] <Ворожея> Колдуй баба, колдуй дед..
[03:13:50] трое сбоку - ваших нет!
[03:13:50] Туз бубновый, гроб сосновый-
[03:13:50] Про планиду дай ответ!
[03:13:50] Леший говорит: Uncle_Dif обопьётся пивом 26 Октября 2095 года по причине : Самоубийство лузера
Но выдается это одним махом.
Из бутылочки пытался вырезать таймер(как я его понял), вставил- лажа, кароч- не то что-то.
На форуме гденить был код таймера?
Go to the top of the page
+Quote Post
Wariner
сообщение 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 будет выполнятся раз в секунду, естественно в теле скрипта должна быть эта фкнуция
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 6.7.2009, 11:52
Сообщение #13


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Спасибо. Теперь буду думать эту мысль.
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 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
Go to the top of the page
+Quote Post
Setuper
сообщение 8.7.2009, 13:35
Сообщение #15


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Код
TmrMan.AddTimer(1000, sFunction)


Что за переменная sFunction?
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 8.7.2009, 14:02
Сообщение #16


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Цитата(Setuper @ 8.7.2009, 14:35) *
Код
TmrMan.AddTimer(1000, sFunction)


Что за переменная sFunction?


Взято из поста Wariner`a, см.выше.
Go to the top of the page
+Quote Post
Setuper
сообщение 8.7.2009, 15:19
Сообщение #17


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ну так нельзя бездумно переписывать!

Эта переменная должна содержать имя функции, которая должна выполняться в таймере.
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 8.7.2009, 15:24
Сообщение #18


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Цитата(Setuper @ 8.7.2009, 16:19) *
Ну так нельзя бездумно переписывать!

Эта переменная должна содержать имя функции, которая должна выполняться в таймере.


Как-то не понял последнего. Как или что написать-то? Там Выше кодом выложен скрипт, проблема с таймером, может напишешь где и как исправить...а?
Go to the top of the page
+Quote Post
Setuper
сообщение 8.7.2009, 15:35
Сообщение #19


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




В приведённом коде таймер не запущен!

В твоём коде в таймерной функции создаётся ещё один таймер, кроме того, что таймерная функция будет просто пожирать память, так она ещё будет выводить в чат каждую секунду фразу: "<"..Bot.."> Колдунчик осободился, наберите !колдуй что бы узнать свою-твою планиду".

В общем бред, и не понятно чего тебе нужно.
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 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.

Вот не знаю как с таймером обращаться: правильный таймер установить и настроить его.
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Запрос скрипта: От подвисания пользователей
0 Sezam 4 111 22.1.2018, 7:10 Посл. сообщение: Sezam
No New Posts Вопрос по функции
0 000000 3 982 7.1.2018, 12:55 Посл. сообщение: 000000
No New Posts Важный вопрос
6 000000 7 971 2.9.2016, 10:33 Посл. сообщение: Артём
No New Posts Важный вопрос!
0 000000 4 774 16.8.2016, 1:28 Посл. сообщение: 000000
No New Posts Topic has attachmentsНужна помощь в доработке скрипта greylink
Отложить запуск скрипта на определенное время
0 kirill_td 4 705 17.10.2014, 20:13 Посл. сообщение: kirill_td
No new Topic has attachmentsTriviaMods - мод скрипта для командной игры
API2
16 снег 21 089 10.9.2014, 19:23 Посл. сообщение: alphex3xx
No New Posts Метод взятия имени/пути скрипта
Метод взятия имени/пути этого скрипта в самом скрипте и других
2 Karumo 6 603 6.4.2014, 22:24 Посл. сообщение: Alexey
No New Posts От: вопрос по NMDC.
От темы с ID: 4932
0 MIKHAIL 5 185 25.1.2013, 19:48 Посл. сообщение: MIKHAIL
No New Posts Конвертирование скрипта до AP2
Скрипт афоризмы
4 GULAM33 8 113 21.1.2013, 16:30 Посл. сообщение: Артём
No New Posts Вопрос по регулярным выражениям (не относится к lua)
1 Accelerator 7 177 22.12.2012, 18:37 Посл. сообщение: Setuper
No new Topic has attachmentsПомощь по настройке скрипта
скрипт скидывания тестовых файлов
17 dag-m 16 639 16.10.2012, 15:41 Посл. сообщение: Alex Dancer
No New Posts вопрос по NMDC.
.
6 Lamo 12 676 29.5.2012, 19:35 Посл. сообщение: Lamo
No New Posts вопрос
5 kirovograd77 9 825 29.5.2012, 0:08 Посл. сообщение: kirovograd77
No New Posts Вопрос по Написанию Слрипта
1 mmk 5 526 20.5.2012, 13:37 Посл. сообщение: Saymon21
No New Posts От: помогите с разработкой скрипта
От темы с ID: 4717
0 barbaris 4 724 19.5.2012, 19:54 Посл. сообщение: barbaris

 



RSS Сейчас: 29.3.2024, 3:54