myDC.ru

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

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

> Решение Стандартных Ошибок Скриптов

Теги
Нет тегов для показа
dimetrius
сообщение 22.7.2008, 19:11
Сообщение #1


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

Группа: Модераторы
Сообщений: 281
Регистрация: 24.6.2008
Из: Луганск
Пользователь №: 70
Спасибо сказали: 47 раз




Предлагаю в этой теме описывать все ошибки, которые попадаются наиболее часто при написании \ использовании скриптов!


Сегодня я узнал что...
если в вашем скрипте есть строки типа:
Код
Bot = SetMan.GetString(21),
или
Menu = SetMan.GetString(0),

то ваш скрипт может выдавать ошибку типа
Код
[19:07] Синтаксис C:\PtokaX\scripts\Lag_Check.lua:29: attempt to index global 'SetMan' (a nil value)


Исправление ошибки довольно простое!
Чтоб 100% всегда не выдавало ошибок вы можете вместо
Bot = SetMan.GetString(21),
написать
Bot = "PtokaX"

в таком случае имя вашего бота будет совпадать с именем системного бота и он будет отображаться, или нет, смотря как включена опция в настройках хаба! т.е. отображать, или не отображать этого бота на хабе в списке юзеров!

НО... Из-за чего же возникает данная ошибка!?

А всё просто, просто запускайте скрипт, когда хаб запущен, а не когда он отключен big_smile.gif
Удачи вам в использовании и написании скриптов и жду дальнейшего развития темы! still_dreaming.gif
Go to the top of the page
+Quote Post
mariner
сообщение 22.7.2008, 19:20
Сообщение #2


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

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




хехе, а еще был юзер, которые имя бота просто стер и ничего не написал! big_smile1.gif
Причина редактирования: без оскарблений пожалуйста (dimetrius)
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 15.8.2008, 20:42
Сообщение #3


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




решил перевести 2 хаб на 0411 большую часть скриптов перевел но с некоторыми проблема(

и так 1 вроде скрипт простой но с ошибкой -> mpps_newapi.lua:34: unexpected symbol near ','Прикрепленный файл  mpps_newapi.lua ( 1.32 килобайт ) Кол-во скачиваний: 10


2 все ок но почему то не находит директорию О.о Прикрепленный файл  анти_реклама_newapi.lua ( 2.49 килобайт ) Кол-во скачиваний: 4


3 работает но с ошибкой -> Призрак_newapi.lua:22: bad argument #1 to 'pairs' (table expected, got no value)Прикрепленный файл  Призрак_newapi.lua ( 2.33 килобайт ) Кол-во скачиваний: 10


помогите)

P.S. может создать тему с такими ошибками и способы их решения??
Go to the top of the page
+Quote Post
Setuper
сообщение 15.8.2008, 20:50
Сообщение #4


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

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




2*FoxMalder* описанные ошибки ни о чем не говорят - нужно смотреть код
выложи хотябы фрагменты коды с этими ошибками, тем более номера строк известны))
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 15.8.2008, 21:00
Сообщение #5


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




смотри выше)
у меня почемуто с 1 раза не загрузились файлы :(
с 4 и 5 разобрался остались 3 big_smile.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 15.8.2008, 21:09
Сообщение #6


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

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




Цитата(dimetrius @ 22.7.2008, 20:11) *
Предлагаю в этой теме описывать все ошибки, которые попадаются наиболее часто при написании \ использовании скриптов!


Сегодня я узнал что...
если в вашем скрипте есть строки типа:
Код
Bot = SetMan.GetString(21),
или
Menu = SetMan.GetString(0),

то ваш скрипт может выдавать ошибку типа
Код
[19:07] Синтаксис C:\PtokaX\scripts\Lag_Check.lua:29: attempt to index global 'SetMan' (a nil value)


Исправление ошибки довольно простое!
Чтоб 100% всегда не выдавало ошибок вы можете вместо
Bot = SetMan.GetString(21),
написать
Bot = "PtokaX"

в таком случае имя вашего бота будет совпадать с именем системного бота и он будет отображаться, или нет, смотря как включена опция в настройках хаба! т.е. отображать, или не отображать этого бота на хабе в списке юзеров!

НО... Из-за чего же возникает данная ошибка!?

А всё просто, просто запускайте скрипт, когда хаб запущен, а не когда он отключен big_smile.gif
Удачи вам в использовании и написании скриптов и жду дальнейшего развития темы! still_dreaming.gif


Чушь собачья!

Для кого спрашивается дана функция OnStartup() ???
Думаете она просто так существует? Так вот открою вам секрет, она не просто так существует! Эта функция срабатывает при запуске скрипта (вне зависимости от состояния хаба) и данная функция объявляет и инициализирует глобальные таблицы и метатаблицы.

Поэтому во избежании данной ошибки следует писать так:
Код
function OnStartup()
    Bot = SetMan.GetString(21)
    Menu = SetMan.GetString(0)
end



Цитата(*FoxMalder* @ 15.8.2008, 22:00) *
смотри выше)
у меня почемуто с 1 раза не загрузились файлы :(
с 4 и 5 разобрался остались 3 big_smile.gif

1. функция getcmdprefixarray() ничего не возвращает, а должна возвращать таблицу
2. я не проверял работу скрипта (даже не запускал), но полагаю, что в функции getcmdprefixarray() надо вернуть p (return p)
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 15.8.2008, 21:17
Сообщение #7


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




и вот еще 1 RegBot_newapi.lua:39: bad argument #1 to 'GetReg' (string expected, got nil)

function UserConnected(user)
Core.GetUserAllData(user)
ошиба тут -> if not(RegMan.GetReg(user.sNick)) and not (RegMan.GetReg(user.sName)) then
local msg = "\r\n\r\n"..
"\t-·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·-\r\n"..
"\t"..string.rep("-", 112).."\r\n"
Core.SendPmToNick(user.sNick,bot,msg)
end
UserMenu(user)
end

Цитата(Setuper @ 15.8.2008, 22:09) *
1. функция getcmdprefixarray() ничего не возвращает, а должна возвращать таблицу
2. я не проверял работу скрипта (даже не запускал), но полагаю, что в функции getcmdprefixarray() надо вернуть p (return p)


так как эт все исправить? eyes_droped.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 15.8.2008, 21:30
Сообщение #8


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

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




Цитата(*FoxMalder* @ 15.8.2008, 22:17) *
и вот еще 1 RegBot_newapi.lua:39: bad argument #1 to 'GetReg' (string expected, got nil)

function UserConnected(user)
Core.GetUserAllData(user)
ошиба тут -> if not(RegMan.GetReg(user.sNick)) and not (RegMan.GetReg(user.sName)) then
local msg = "\r\n\r\n"..
"\t-·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·- -·=»‡«=·-\r\n"..
"\t"..string.rep("-", 112).."\r\n"
Core.SendPmToNick(user.sNick,bot,msg)
end
UserMenu(user)
end



так как эт все исправить? eyes_droped.gif


Код
if not(RegMan.GetReg(user.sName)) and not (RegMan.GetReg(user.sName)) then
- увидел разницу? Будь внимательнее

по поводу предыдущего:
Код
OnStartup = function()
    function getcmdprefixarray()
        local p = {}
        for i=1,#SetMan.GetString(29) do
            table.insert(p,SetMan.GetString(29):sub(i,i))
            return p
        end
    end
    for a,b in pairs(getcmdprefixarray()) do tPrefixes[b] = 1 end
end

хотя повторяю еще раз, что работу скрипта я не проверял
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 15.8.2008, 21:54
Сообщение #9


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




Цитата(Setuper @ 15.8.2008, 22:30) *
Код
if not(RegMan.GetReg(user.sName)) and not (RegMan.GetReg(user.sName)) then
- увидел разницу? Будь внимательнее

по поводу предыдущего:
Код
OnStartup = function()
    function getcmdprefixarray()
        local p = {}
        for i=1,#SetMan.GetString(29) do
            table.insert(p,SetMan.GetString(29):sub(i,i))
            return p
        end
    end
    for a,b in pairs(getcmdprefixarray()) do tPrefixes[b] = 1 end
end

хотя повторяю еще раз, что работу скрипта я не проверял


1 разницу увидел изменил теперь другая проблема :( лучше весь скрипт выложу

2 вроде работает big_smile.gif


newapi.lua:70: bad argument #2 to 'AddReg' (string expected, got number)Прикрепленный файл  opmeBot_newapi.lua ( 7.27 килобайт ) Кол-во скачиваний: 4
Go to the top of the page
+Quote Post
Setuper
сообщение 15.8.2008, 22:11
Сообщение #10


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

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




Код
RegMan.AddReg(user.sNick, tostring(pass), 1)
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 15.8.2008, 22:55
Сообщение #11


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




отлично big_smile.gif

Record_newapi.lua:176: attempt to concatenate field 'sNick' (a nil value)

Код
function UserConnected(user)
    Core.GetUserAllData(user)
    if tSettings.tIgnore[user.sNick] ~= 1 then
        local iUserCount, tTable = Core.GetUsersCount(), Record.tDB
        tTable.iUsers = tTable.iUsers or 0; tTable.tUsers = tTable.tUsers or "*нет данных*"
        if (iUserCount > tTable.iUsers) then
            tTable.iUsers = iUserCount; tTable.tUsers = os.date()
            if (Record.tSetup.pm == 1) then
                Core.SendPmToNick(user.sNick, "Спасибо. Вы только что увеличили рекорд Юзеров на ХАБе!");
            end;
            if (Record.tSetup.main == 1) then
                Core.SendToAll("<"..tSettings.Bot.sNick.."> "..user.sNick.." только что поднял рекодную планку Юзеров на ХАБе до: "..
ошибка тут ->        tTable.iUsers.." юзеров на "..os.date().." :)");
                SaveToFile(Record,"Record",tSettings.fRecord)    
            end;
        end
        tDelay[user] = {}
        tDelay[user]["iTime"] = tSettings.iDelay*60
    end
end
Go to the top of the page
+Quote Post
Setuper
сообщение 15.8.2008, 23:48
Сообщение #12


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

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




учись понимать ошибки! переводи ошибки или бери англо-русский словарь (или воспользуйся переводчиком)!
"attempt to concatenate field 'sNick' (a nil value)" = "попытка конкатенации поля 'sNick' (это поле имеет значение nil)"

разберу эту ошибку подробно:

конкатенация - синоним склеивание (соединение строк),
поле - это элемент таблицы,

получаем предложение: "попытка соединить элемент таблицы 'sNick' со строкой (этот элемент таблицы равен nil)"
а как известно nil - это пустота. Нельзя строку соединять с пустотой!

Возможно ошибка тут:

Есть таблица: tSettings. В этой таблице существует другая подтаблица:tSettings.Bot и уже в этой подтаблице есть поле 'sNick'.
И по утверждению интерпретатора это поле равно nil, то есть tSettings.Bot.sNick = nil.

Вывод из всего сказанного: ищи в скрипте объявление и инициализацию поля: tSettings.Bot.sNick
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 16.8.2008, 0:08
Сообщение #13


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




непонял shocked.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 16.8.2008, 0:10
Сообщение #14


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

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




что именно не понятно? вроде ясно изложил what.gif
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 16.8.2008, 0:14
Сообщение #15


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




все...
можешь по полочкам разложить и разъяснить что именно надо изменить что бы избавиться от ошибки
Go to the top of the page
+Quote Post
Setuper
сообщение 16.8.2008, 0:18
Сообщение #16


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

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




значение tSettings.Bot.sNick не существует
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 16.8.2008, 0:50
Сообщение #17


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




аааа дошло)))))))) сделал и скрипт заработал big_smile1.gif surrender.gif

рано радовался :( теперь шару не показывает и ошибки нету никакой
[01:28:44] <Hub-Security>
----------------------------------------------------------------------------------------------------
Рекорды Результат Дата - Время
----------------------------------------------------------------------------------------------------
Шара 0 *нет данных*
Юзеров 140 08/16/08 01:27:08
СуперШар *нет данных* (0) *нет данных*
----------------------------------------------------------------------------------------------------
[01:28:44] !rb.show
Прикрепленные файлы
Прикрепленный файл  Record_newapi.lua ( 9.62 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
+Quote Post
Setuper
сообщение 16.8.2008, 7:15
Сообщение #18


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

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




Код
function OnTimer(tmr)
    for nick,v in pairs(tDelay) do
        tDelay[nick]["iTime"] = tDelay[nick]["iTime"] - 1
        if tDelay[nick]["iTime"] <= 0 then
            if GetItemByName(nick.sNick) then
                Core.GetUserAllData(nick)
                ................................
Go to the top of the page
+Quote Post
*FoxMalder*
сообщение 16.8.2008, 9:57
Сообщение #19


мяу =^.^=
******

Группа: Пользователи
Сообщений: 414
Регистрация: 20.5.2008
Пользователь №: 6
Спасибо сказали: 14 раз




ничего не изменилось

точнее шара в рекодах стала видна а вот новые рекорды шары он не отмечает
Go to the top of the page
+Quote Post
Setuper
сообщение 16.8.2008, 10:12
Сообщение #20


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

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




во-первых, надо изменить строку:
Код
fRecord = "scripts/RecordBot/tRecord.txt",    -- RecordBot Database

во-вторых, в папке scripts создать папку RecordBot, так как код скрипта не предусматривает ее автоматическое создание.
Go to the top of the page
+Quote Post

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

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts ВАЖНО: Topic has attachmentsВопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
1 049 Wariner 988 938 3.2.2019, 12:51 Посл. сообщение: MIKHAIL
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 45 297 21.3.2017, 17:31 Посл. сообщение: Alexey
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 4 329 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 4 795 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 7 307 29.7.2014, 16:11 Посл. сообщение: Артём
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 25 937 28.1.2014, 13:11 Посл. сообщение: Alexey
No New Posts Единая платформа для скриптов
Обсуждения вопроса создания единой платформы скриптов
5 Enyby 9 032 18.1.2012, 20:15 Посл. сообщение: Setuper
No new Topic has attachmentsПеределка скриптов
Прошу помощи
47 Fe(one)X 41 281 26.12.2011, 15:04 Посл. сообщение: Ksan
No new Topic has attachmentsВопросы Разработчикам Скриптов с SQL
вопросы по скриптам (мелкие вопросы)
101 Wariner 62 148 6.12.2011, 0:34 Посл. сообщение: Enyby
No new ВАЖНО: Topic has attachmentsМетод Быстрого Перевода Скриптов Под API_1
Самостоятельный быстрый перевод из API_2 ---> в API_1
30 Setuper 51 136 14.8.2011, 21:16 Посл. сообщение: Олешка
No New Posts От: Переделка скриптов
От темы с ID: 4941
6 Ksan 9 663 12.8.2011, 11:33 Посл. сообщение: Ksan
No new ВАЖНО: Запросы Скриптов
Ваши идеи по разработке скриптов под HeXHuB
36 Setuper 49 234 16.5.2011, 9:40 Посл. сообщение: ANDRBEST
No New Posts Документация DBHub - Написание скриптов на Perl
0 Артём 7 662 20.10.2010, 18:08 Посл. сообщение: Артём
No New Posts Topic has attachmentsЗаготовки скриптов для PtokaX
Делимся болванками скриптов
4 alex82 11 731 11.10.2010, 2:49 Посл. сообщение: alex82
No New Posts ВАЖНО: Запросы Скриптов
6 njnj 13 599 3.7.2010, 8:45 Посл. сообщение: Accelerator

 



RSS Сейчас: 23.11.2024, 14:40