Size: a a a

2019 November 17

𝖆

𝖆𝖐𝖆𝖒𝖎𝖙 in pro.lua
ну там вообще такой переменной нет.
источник

M

Mikhail in pro.lua
любит народ усложнять. ну да ладно. удач!!!
источник

𝖆

𝖆𝖐𝖆𝖒𝖎𝖙 in pro.lua
или индексов
источник

AM

Alexey Melnichuck in pro.lua
𝖆𝖐𝖆𝖒𝖎𝖙
ну там вообще такой переменной нет.
можно  функцию сделать pget(a,1,2,3)
Можно метатаблицу к nil прикрутить если очень хочется сохранить синтаксис. Но тогда отладка может стать намного сложнее
источник
2019 November 18

S

Snusmumriken in pro.lua
𝖆𝖐𝖆𝖒𝖎𝖙
пробовал так if var and var[1][2][3] ~= nil
Функция спуска по ключам выглядит примерно так
function getValue(t, ...)
 for i = 1, select('#', ...) do
   local v = select(i, ...)
   if type(t) ~= 'table' then
     return nil, (i - 1) .. " key doesn't find a table"
   end
   t = t[v]
 end
 return t
end
источник

S

Snusmumriken in pro.lua
И даже без try-catch.
источник

𝖆

𝖆𝖐𝖆𝖒𝖎𝖙 in pro.lua
Snusmumriken
Функция спуска по ключам выглядит примерно так
function getValue(t, ...)
 for i = 1, select('#', ...) do
   local v = select(i, ...)
   if type(t) ~= 'table' then
     return nil, (i - 1) .. " key doesn't find a table"
   end
   t = t[v]
 end
 return t
end
спасибо, попробую ваш код
источник

S

Snusmumriken in pro.lua
Когда я был маленький, я писал такое рекурсивно :<
источник

AS

Anatoliy S in pro.lua
Ребята а подскажите, можно ли средствами луа, или средствами Zerobrane studio, или средствами и того и того, выполнить отладку скрипта следующим образом: в одном месте у меня в скрипте выскакивает ошибка - там переменная получает значение, но иногда оно по какому то недоразумению в ходе вычислений получается nil, и потом при действиях с этой переменной выскакивает ошибка всвязи с тем что она nil а не какое либо значение, вот возможно ли чтобы в этот момент, если переменная nil, скрипт остановился для отладки, т.е. как если бы он был запущен для отладки в режиме пошагового выполнения, может это как то можно через функции debug? я их еще не изучал
источник

S

Snusmumriken in pro.lua
debug.debug()
источник

S

Snusmumriken in pro.lua
Потом вобьёшь в консоль cont, и скрипт продолжится.
источник

S

Snusmumriken in pro.lua
Получить строку стактрейса — str = debug.traceback(). В любом месте.
источник

AS

Anatoliy S in pro.lua
Snusmumriken
debug.debug()
Спасибо, а так чтобы средствами ZB в режим пошаговой отладки перейти, незнаешь возможно ли такое?
источник

AM

Alexey Melnichuck in pro.lua
В zbs используется mobdebug
В нем есть метод старт который подключяется к серверу  в zbs
просто сделать if и в нем вызвать эту функцию
источник
2019 November 19

AS

Anatoliy S in pro.lua
Alexey Melnichuck
В zbs используется mobdebug
В нем есть метод старт который подключяется к серверу  в zbs
просто сделать if и в нем вызвать эту функцию
А можно чуть подробнее - как это оформить - надо написать условие перехода в режим отладки в скрипте?
if not x then mobdebug end - ? Так чтоли?
источник

S

Snusmumriken in pro.lua
Хе, кстати забавная тема, надо накатать такой дебаггер, который выгружает инфу и все upvalue в браузер через функцию.
источник

AS

Anatoliy S in pro.lua
А подскажите еще, какая то странная вещь случается - вообщем пишется у меня текстовый файл, вообщем как обычно - открывается   -   file1=io.open(file, "w") , если файла нет, если уже есть то открывается в режиме file1 = io.open(file, "r+")
потом в него по ходу работы скрипта выгружается некая однообразная инфа, строки одинаковой длины заканчивающиеся .."\n"
file1:write(somestring.."\n")
Потом при повторном запуске скрипта вся эта инфа из файла читается по строкам:
for w in file1:lines() do,  в таблицу - каждая строчка - новый элемент таблицы

и продолжается в него записыватся в конец, в режиме "r+"
Ну и при повторном перезапуске скрипта все по новой, и тут вдруг я обнаружил что при каждом перезапуске не все строчки из файла есть в таблице, то есть не все строчки прочитываются for w in file1:lines() do,
стал разбираться - оказывается у меня в файле не все символы перевода строки CR LF  которрые соответствуют \n ( 0D 0A в шестнадцатиричн.)  а некоторые символы перевода строки - CR ! который соответствует \13 ( т.е. только OD в шестнадцатиричн.)  и вот эти строки for w in file1:lines() do и нечитает! причем он нечитает строку следующую после строки после которой строит \13 даже если и заканчивается на \n т.е.    \n строка \13   - читает   а \13 строка \n - нечитает
Глюк какой то, ведь ничто кроме скрипта в файл больше ничего не пишет, почему же тогда там то \n  то \13 как символ перевода строки?
источник

S

Snusmumriken in pro.lua
Ты совершенно зря открываешь файл не в бинарном режиме.
источник

S

Snusmumriken in pro.lua
wb, rb, rb+
источник

S

Snusmumriken in pro.lua
Если не пользоваться бинаркой, файлы будут предобрабатываться при записи и чтении, приводя к странным результатам.
источник