Ivan
Yuriy
Да в том то и дело что нет...
Yuriy
Я тоже думал что где то накосяцил но тест в общем то даже не знает о ее существовании
Yuriy
Он просто запускает функцию модуля
Yuriy
и сравнивает выходное значение с ожидаемым
Ivan
функция удаляет?
Yuriy
local direction = {
to = "to",
from = "from"
}
local function callState()
local pDir = direction.from
...
end
Негде удалять
Эта таблица больше потом не используется
Ivan
а как ошибка выглядит?
Yuriy
attempt to index upvalue 'direction' (a nil value)
Yuriy
ну логично конечно предположить что где то оно удаляется...
Yuriy
но я пока вот так явно не вижу этого
Yuriy
чсейчас попробуж сделать глубокое копирование
Ivan
может быть, для дебага прикрепить к direction мета таблицу которая показывает что делается?
Yuriy
да. Попробую
Yuriy
Спасибо
Yuriy
нашел проблему...
У меня есть 2 руки. но растут они из жопы
Ибо толкьо так я могу объяснить
что в одном месте я все таки сделал
вместо
local pDir = direction.from
direction = directon.from
Igor
Если же этот лимит будет достигнут, то интерпретатор упадёт с ошибкой "Out of memory"
Yuriy
Да. Это я понимаю. Но все равно спасибо за пояснение)
Yuriy
Кстати 5.1 только 32 бита?
Yuriy
А то я упираюсь там в размер integer при взятии миллисекунд как числа
Ivan
mva
mva
> Lua могёт отхватить максимум около 2 гигабайт ОЗУ
Tom
Tom
Tom
Народ, а в чем вы отлаживаете lua-код?
Я сейчас в основном на vscode пишу, но тут дебаг lua что-то вообще никак не хочет работать адекватно. На консольном вводе значений тупо зависает. Останавливает выполнение в неожиданных местах. Короче нахер.
Tom
mva
Tom
Tom
Вот кстати да, збс сегодня уже попробовал. Оно вроде работает, хотя немного странное какое-то
mva
/me мечтает чтобы люди перестали использовать x32 и x64, потому что "x" к битности не имеет отношения, зато вносит путаницу. Особенно для тех, кто знает про существование не только x86_32 и x86_64, но и x86_x32, который и есть настоящий "x32", и у него прямо "/usr/libx32" в мультилиб-системе
Snusmumriken
Ничего страшного, тут имеется ввиду, очевидно, [что угодно]_32 и [что угодно]_64. Хоть x86_32 хоть ARM_64.
mva
а вот, кстати, не уверен, что на арм64 завезли фикс для памяти
mva
и ещё менее уверен что для мипса или ppc 64битного завезли
mva
там их мейнтейнят, емнип, только когда денег завозят
Snusmumriken
А на тему х — это можно использовать как знак умножения, мол столько-то битов на указатель/минимальную единицу : )
2х2 = 4, всё такое.
Andrey
всем привет. а luac можно в exe перекомпилить ?
Snusmumriken
Можно.
Andrey
а как это правильно делается ?
Snusmumriken
Сшивается скрипт и луа-интерпретатор.
Andrey
ну т.е. интерпритатор будет тоже зашит
mva
только не "exe", а "испольняемый файл", потому что не вендой единой
mva
Andrey
я бы хотел что бы потом обратно его было возможно преобразовать только на уровне дизассемблера без восстановления исходного кода
Igor
Igor
Если сильно приспичит - принтами)
Snusmumriken
ну т.е. интерпритатор будет тоже зашит
Буквально, пишешь маленькую сишную программку:
#include "lua.h"
#include "lauxlib.h"
void main() {
lua_State * L = newL_newstate();
luaL_openlibs(L);
// вшиваем код сюда
char * code = "blabla lua/luac code";
luaL_dostring(L, code);
lua_close(L);
}
Igor
mobdebug довольно мощная штучка
Igor
Но у неё luasocket в зависимостях
Igor
Если для тебя это не проблема, то юзай на здоровье
Andrey
Все, идею понял, спасибо
Igor
luasocket - модуль для взаимодействия с сетью
Igor
Может как tcp так и udp сокеты открывать
Igor
Как на прослушивание, так и на коннект
Igor
В общем обычная библиотека сокетов
mva
Andrey
:) это понятно, просто максимально затруднить обраьтный процесс. да про обсфускацию тоже в курсе. спасибо
mva
не помню, луиз или роберто писал
mva
но писал же для вас, лентяев
mva
а вы тут сишные программки для вшивания интерпретатора пишете
Snusmumriken
Да пофигу, писать-то всего ничего : )
Igor
Не вижу вообще никакого смысла в попытке спрятать скрипты
Igor
Да и вообще любой код прятать это тоже дело не очень то и благое
Igor
Я приверженец open source
mva
mva tmp echo 'print("hello")' > moo.lua
mva tmp glue luajit-2.1.9999.x86_64 moo.lua myapp.elf
mva tmp ./myapp.elf
hello
mva tmp file myapp.elf
myapp.elf: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped
Snusmumriken
Не вижу вообще никакого смысла в попытке спрятать скрипты
Да не, технически смысл есть. Допустим, ты пишешь игрушку, и если игрок будет знать содержимое скриптов — он сможет, например, заддосить сервер игрушки как бы валидными запросами (которые не будут отсеиваться, потому что твой каштомный протокол — вот он, на виду), или сможет читерить по мелочи. Да, понятное дело что "надо писать так, как будто твой код попал в стан врага", но это всё равно стоило бы скрыть от всех желающих. Хакиры всё равно доберутся, но их не так уж много. Просто уменьшаем количество читеров и дудосеров.
mva
чаще код игрушек прячут потому что "кококо, страшно, мой код украдут, будут КАНКУРИРАВАДЬ и Я НИЗАРАБОТАЮ"
Igor
Все игры которые я видел скрипты свои не прятали особо
mva
а писать нормально - это СЛОЖНА
Igor
Разве что Move or Die, который на ловке сделан
Igor
Там разработчики filesystem ловки правили, как я понял
Igor
И создали какой-то свой формат скриптов имеющий шифрование поверх себя