Anonymous
Этих данных мне хватает что бы понять,распостранил конкретный человек скрипт или нет
Anonymous
То что это все не надежно и по детски я в курсе,но во первых я учусь постепенно,во вторых не тот продукт что бы так заморачиваться
Anonymous
Вопрос в другом Не могу понять почему не видна локальная переменная
Anonymous
local names = {} local lib2 = gg.makeRequest(adr..'names_1035001').content load(lib2)()
Anonymous
В lib2 записи вида names.one = {} ..
Anonymous
По идее же таблица в которую нужно делать записи объявлена до загрузки и вызова lib2 И выполняется в одном файле где она объявлена почему не видна не могут въехать хоть убей
Snusmumriken
Забей, сделай нормальную либу, абстрагированным набором функций. *lib.lua* local M = {} M.foo = 100 M.bar = function(x, y) return x + y *gg_script* local lib2 = gg.makeRequest(adr..'names_1035001').content local lib = load(lib2)()
Snusmumriken
Локальная переменная которую ты объявляешь — локальна для этого файла, сторонние подгруженные функции её не увидят.
Snusmumriken
То же самое что: local function lib_that_you_load() names.foo = "bar" end local function script_that_you_call() local names = {} lib_that_you_load() end lib_that_you_load не увидит names из script_that_you_call.
Anonymous
Понял теперь. Короче пошел читать про либы 😩
Snusmumriken
Нет ничего проще.
Snusmumriken
local mymodule = {} function mymodule.foo(x, y) return x + y end return mymodule Просто таблица, и ретурн в конце файла. Реквайром (или load'ом) ты получаешь эту таблицу. Всё.
Anonymous
Я просто думал что load(lib)() просто как бы вставит кусок нужного кода, и по правилам видимости
Snusmumriken
Нет.
Snusmumriken
Я уже писал что оно просто создаст функцию (без контекста, кроме глобального или указанного ранее) и вызовет её тут.
Snusmumriken
Ещё в функции load можно указать конкретную таблицу окружения, то что будет вместо _G. То есть, всё что подгружаемая фигня будет объявлять глобально, будет записываться в указанную тобой таблицу. Ну и сама подгружаемая фигня сможет использовать только указанные в той таблице функции, то есть никаких math/io/gg/load/require по умолчанию там нет. Если ты добавишь — будет.
Anonymous
Короче понятно пока что лишний геморой приобрел .
Snusmumriken
Поэтому делай просто таблицу с функциями и не геморойся.
Anonymous
Да так и хотел
Anonymous
Спасибо большое за подсказки
Anonymous
Парни,опять туплю... Подскажите плиз,имею таблицу к примеру local a = { ['a'] = 1, ['b'] = 2, ['c'] = 3, } Получаю вторую таблицу ,например local b = { ['d'] = 4, ['e'] = 5, ['f'] = 6, }
Anonymous
Как теперь мне добавить содержимое b в a
mva
можно руками в for-цикле
mva
можно table.insert
mva
но table.insert больше для индексированных таблиц, нежели для словарей
Anonymous
Если бы там было по индексам a[1] и т.д. то понятно
Anonymous
А надо именно с ключами как записано
Anonymous
Вот и туплю
mva
говорю же
Anonymous
for k in pairs(b) do a[k] = b[k] end
Anonymous
Не получается почему то
mva
значит ты что-то делаешь не так
mva
а
mva
ты неправильно используешь цикл
Anonymous
Я уже по всякому испробовал...)
mva
for k,v in pairs(b) do a[k] = v end
mva
(правда, так будет с заменой в случае если в a уже существует такой ключ)
Anonymous
Точно
Anonymous
Спасибо большое
Snusmumriken
for k,v in pairs(b) do a[k] = v end
Без замены — for k,v in pairs(b) do a[k] = a[k] or v end
Anonymous
Чет всеравно не то немного.... В оригинале,имеется таблица с таблицами в ней,наприимер: local strs = {} strs.btns = { ['continue'] = 'Продолжить ➡', ['exit'] = 'Выйти ❌', } strs.sys = { ['canceled'] = '⛔Отменено пользователем', }, и т.д. Получаю с сервера остальное: local tmp1 = gg.makeRequest(adr..sCode..'/strs_'..tostring(targetGameVer)..lng) if tmp1.message == 'OK' then local tmp = load(tmp1.content)() содердимое получаемое в tmp идет в виде: local strs = {} strs.btns = { ['choice'] = 'Выбрать⬅️', ['rep'] = 'Повторить🔄', ['enter'] = 'Ввести 🔙', ['now'] = 'Сейчас ✅', ['inProc'] = 'В процессе ✖', ['yes'] = 'Да ✅', ['no'] = 'Нет ❌', }, strs.sys = { [1] = '\n💡Проверка списка найденых', [2] = 'на подлинность...⏳\n', [3] = '⏳Ожидание... \nНажмите иконку GG для продолжения...⏳', [4] = {'объект','объекта','объектов'}, [5] = '\n📝Отметить все пункты в меню "', }, strs.ps = { [1] = 'указателя ', [2] = 'главного указателя', [3] = 'видимости объектов', } и т.д. .... return strs получается tmp это новая таблица strs как правильнее добавить новое к имеющейся? по существующим ключам перезаписать,а по не существующим записать
mva
Чет всеравно не то немного.... В оригинале,имеется таблица с таблицами в ней,наприимер: local strs = {} strs.btns = { ['continue'] = 'Продолжить ➡', ['exit'] = 'Выйти ❌', } strs.sys = { ['canceled'] = '⛔Отменено пользователем', }, и т.д. Получаю с сервера остальное: local tmp1 = gg.makeRequest(adr..sCode..'/strs_'..tostring(targetGameVer)..lng) if tmp1.message == 'OK' then local tmp = load(tmp1.content)() содердимое получаемое в tmp идет в виде: local strs = {} strs.btns = { ['choice'] = 'Выбрать⬅️', ['rep'] = 'Повторить🔄', ['enter'] = 'Ввести 🔙', ['now'] = 'Сейчас ✅', ['inProc'] = 'В процессе ✖', ['yes'] = 'Да ✅', ['no'] = 'Нет ❌', }, strs.sys = { [1] = '\n💡Проверка списка найденых', [2] = 'на подлинность...⏳\n', [3] = '⏳Ожидание... \nНажмите иконку GG для продолжения...⏳', [4] = {'объект','объекта','объектов'}, [5] = '\n📝Отметить все пункты в меню "', }, strs.ps = { [1] = 'указателя ', [2] = 'главного указателя', [3] = 'видимости объектов', } и т.д. .... return strs получается tmp это новая таблица strs как правильнее добавить новое к имеющейся? по существующим ключам перезаписать,а по не существующим записать
local strs = {} strs.btns = { ['continue'] = 'Продолжить ➡️', ['exit'] = 'Выйти ❌', } strs.sys = { ['canceled'] = '⛔️Отменено пользователем', } local tmp1 for line in io.lines('/tmp/2.lua') do tmp1=(tmp1 or '')..line..'\n' end local tmp = load(tmp1)() function ins(t,k,v) if type(v)=="table" then t[k]=t[k] or {} for kk,vv in pairs(v) do ins(t[k],kk,vv) end else t[k]=v end return t end for k,v in pairs(tmp) do strs=ins(strs,k,v) end
mva
Чет всеравно не то немного.... В оригинале,имеется таблица с таблицами в ней,наприимер: local strs = {} strs.btns = { ['continue'] = 'Продолжить ➡', ['exit'] = 'Выйти ❌', } strs.sys = { ['canceled'] = '⛔Отменено пользователем', }, и т.д. Получаю с сервера остальное: local tmp1 = gg.makeRequest(adr..sCode..'/strs_'..tostring(targetGameVer)..lng) if tmp1.message == 'OK' then local tmp = load(tmp1.content)() содердимое получаемое в tmp идет в виде: local strs = {} strs.btns = { ['choice'] = 'Выбрать⬅️', ['rep'] = 'Повторить🔄', ['enter'] = 'Ввести 🔙', ['now'] = 'Сейчас ✅', ['inProc'] = 'В процессе ✖', ['yes'] = 'Да ✅', ['no'] = 'Нет ❌', }, strs.sys = { [1] = '\n💡Проверка списка найденых', [2] = 'на подлинность...⏳\n', [3] = '⏳Ожидание... \nНажмите иконку GG для продолжения...⏳', [4] = {'объект','объекта','объектов'}, [5] = '\n📝Отметить все пункты в меню "', }, strs.ps = { [1] = 'указателя ', [2] = 'главного указателя', [3] = 'видимости объектов', } и т.д. .... return strs получается tmp это новая таблица strs как правильнее добавить новое к имеющейся? по существующим ключам перезаписать,а по не существующим записать
Anonymous
for line in io.lines('/tmp/2.lua') do tmp1=(tmp1 or '')..line..'\n' end
Anonymous
Не совсем понял эту строку. Это перезапись исполняемого файла.
Anonymous
?
mva
аналог твоего gg.makerequest().content
Anonymous
А
Anonymous
Не,не то немного у вас
Anonymous
local tmp1 = gg.makeRequest(adr..sCode..'/strs_'..tostring(targetGameVer)..'_'..lng) if tmp1.message == 'OK' then local tmp = load(tmp1.content)() for k,v in pairs(tmp) do strs=ins(strs,k,v) end end
Anonymous
tmp это таблица ,такая же как strs
mva
и?
Anonymous
Anonymous
Вот,это то что получается из tmp
Anonymous
local tmp = load(tmp1.content)() os.exit(print(tmp))
Anonymous
и?
И всеравно не дописывает
mva
И всеравно не дописывает
посмотри на мой скриншот
mva
там явно видно что дописывает
mva
если у тебя нет, то ты что-то делаешь не так
Anonymous
function ins(t,k,v) if type(v)=="table" then t[k]=t[k] or {} for kk,vv in pairs(v) do ins(t[k],kk,vv) end else t[k]=v end return t end function upd() local strs = {} local names = {} local sys = {} local requests = {} local scrFuncs = {} local function mCode() end local c = gg.makeRequest(adr..sCode..'/currVer') if c.message == 'OK' then targetGameVer,scriptVer = load(c.content)() end local tmp1 = gg.makeRequest(adr..sCode..'/strs_'..tostring(targetGameVer)..'_'..lng) if tmp1.message == 'OK' then local tmp = load(tmp1.content)() for k,v in pairs(tmp) do strs=ins(strs,k,v) end end end
Anonymous
Вот так все выглядит
Anonymous
Выше где получаю две переменные там все как надо работает
Anonymous
local c = gg.makeRequest(adr..sCode..'/currVer') if c.message == 'OK' then targetGameVer,scriptVer = load(c.content)() end Это
Anonymous
Ниже тоже получаю таблицу в переменную А вот как их совместить... по вашему принципу не получается почему то
Anonymous
С проблемой выше разобрался,говорят спать почаще надо чтоб глаза не сношались... появилась другая
Anonymous
Таким же методом нужно добавить функции, в функциях используются строки добавленные ранее
Anonymous
local strs = {} local tmp1 = gg.makeRequest(adr..sCode..'/strs_'..tostring(targetGameVer)..'_'..lng) if tmp1.message == 'OK' then local tmp = load(tmp1.content)() for k,v in pairs(tmp) do strs=ins(strs,k,v) end end local tmp2 = gg.makeRequest(adr..sCode..'/sys_'..tostring(targetGameVer)) if tmp2.message == 'OK' then local tmp = load(tmp2.content)() for k,v in pairs(tmp) do sys=ins(sys,k,v) end end
Anonymous
В tmp2.content
Anonymous
Например
Anonymous
function sys.sleep(t) local msg = strs.sys[3] if t then msg = '💡'..t..'...⏳' end gg.toast(msg,false) gg.setVisible(false) while true do if gg.isVisible(true) then gg.setVisible(false) break end end end
Anonymous
Выход только делать глобальной переменную strs что бы этот кусок кода ее увидел?
Anonymous
Или можно как то аргументом с load(tmp2.content)() передать ?
mva
Выход только делать глобальной переменную strs что бы этот кусок кода ее увидел?
либо делать глобальной, либо передавать её в функции при вызове
Anonymous
Как это должно выглядеть?
Anonymous
В самом вызываемом файле я так понимаю надо записать типо function blabla(strs) local sys = {} ...... return sys end