169 похожих чатов

Здраствуйте, появился еще вопрос по Sol. У меня есть условный структ: struct

Test
{
int First = 0;
}
Я получаю ссылку на First:
auto& PointerToFirst = *(int*)((std::uint32_t)(Test));
И передаю его в луа, как я понимаю луа получает значение по ссылке, и сохраняет в инт:
lua["TestReference"] = PointerToFirst;

Поэтому, когда я пытаюсь прочитать значение по TestReference спустя время, то там остается старое, и при попытке записать что-то тоже самое ( TestReference = 606 )

Поэтомв вопрос:
Возможно ли как-то передать именно ссылку в луа?

12 ответов

15 просмотров

Ссылку передать ты можешь только в виде юзердаты, других вариантов нет

SapDragon- Автор вопроса
Igor
Ссылку передать ты можешь только в виде юзердаты, ...

Я просто видел получение референса в одном апи для моддинга Условно у игры есть класс class C_Player { int iHealth = 0; } В апи есть метод: player.Health = 0; value = player.Health

SapDragon- Автор вопроса
SapDragon
Я просто видел получение референса в одном апи для...

то есть он в любом случае не мог передавать как юзер дату, еще возможно ставит свои кастомные сеттеры и геттеры как прокси над луа?

SapDragon
Я просто видел получение референса в одном апи для...

Не знаю, может SOL и имеет какие-то приколы для этого, но чистый луа именно что не умеет получать числа из сишных ссылок. И я очень сильно сомневаюсь, что SOL умеет.

SapDragon- Автор вопроса
SapDragon
то есть он в любом случае не мог передавать как юз...

А что говорит type() на этот объект? Может там кодеры суровые и дублируют все изменения классов где-нибудь в луёвом стейте?

SapDragon- Автор вопроса
Денис Outsider
А что говорит type() на этот объект? Может там код...

if type(obj) == "userdata" and getmetatable(obj) == myclassmt then print("Это мой мальчик") end

Snusmumriken
if type(obj) == "userdata" and getmetatable(obj) =...

Ну так да. Просто если тип был бы "table", значит кодеры создали глобальную переменную и в сеттерах/геттерах и остальных функциональных частях кода просто переписывают значения в этой самой глобальной таблице.

Snusmumriken
if type(obj) == "userdata" and getmetatable(obj) =...

А если userdata, значит кодеры поступили проще - реализовали юзердату класса и метатаблицу к нему.

В месте получения ссылки на First можно поподробнее? Что за лютый код написан?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта