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
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
Anonymous
Спасибо большое
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
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
если у тебя нет, то ты что-то делаешь не так
Anonymous
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)() передать ?
Anonymous
mva
Anonymous
Как это должно выглядеть?
Anonymous
В самом вызываемом файле я так понимаю надо записать типо
function blabla(strs)
local sys = {}
......
return sys
end