Snusmumriken
Ничего не понял. Нормальный образец кода можно?
Заха́р
Это файловый менеджер выводит в колонку часть имени файла. Выводит посредством плагина на луа. Вот тут на 38 строке добавляется эта конструкция https://github.com/j2969719/doublecmd-plugins/blob/617a920d052ae51faf581014389b965c7fea0ac6/plugins/wdx/scripts/filenamematchwdx.lua#L38
Snusmumriken
Кажется, это ровно то что тебе нужно, нет?
Заха́р
А что на 47-50 строках? "(part) -" и "- (part)"?
Аааааа, да!!! Извини, я тупой (((
Заха́р
Спасибо ещё раз!
Anonymous
Народ подскажите плиз, нужно в скрипте под GameGuardian из значения (id предмета) получать его указатель На arm системах работало идеально так: function idToPointer(id) local tmp = gg.getValues({{address = id,value=nil,flags=gg.TYPE_DWORD}}) return tmp[1].value end Где id - DWORD значение
Anonymous
На arm64 системе он криво преобразовывает id в адресс и идет сбой
Anonymous
Snusmumriken
(наверное, проблема в gameguardian на ARM-системах) (или тебе стоит сделать то же, что было в прошлый заход, когда была схожая фигня?)
Anonymous
Не, там наоборот было, значение из адреса получать
Snusmumriken
И что ты там таки сделал? : )
Anonymous
function convertAddressToValue(pageInMemory,addressToConvert) local a = gg.setValues({{address=pageInMemory,value=addressToConvert,flags=gg.TYPE_DWORD}}) local b = gg.getValues({{address=pageInMemory,value=nil,flags=gg.TYPE_DWORD}}) return b[1].value end
Anonymous
Выделяю адрес в памяти , присваиваю ему значение равное адресу, получаю значения, возвращаю получившееся значение
Anonymous
Тут нормально стало работать и на arm, и на arm64 и на разных ведрах
Snusmumriken
А теперь попробуй выделить адрес в памяти, и записать туда указатель предмета по ID какой-нибудь функцией "получить адрес по ID". Работаем с указателями через выделение в памяти кусочка.
Anonymous
Щас попробую)
Anonymous
Не
Anonymous
На arm - ок
Anonymous
На arm64 хрен
Anonymous
Anonymous
function convertValueToPointer(pageInMemory,valueToConvert) local a = gg.setValues({{address=pageInMemory,value=idToPointer(valueToConvert),flags=gg.TYPE_DWORD}}) local b = gg.getValues({{address=pageInMemory,value=nil,flags=gg.TYPE_DWORD}}) return b[1].value end
Anonymous
Получается 0
Snusmumriken
Жуть какая
Igor
function convertValueToPointer(pageInMemory,valueToConvert) local a = gg.setValues({{address=pageInMemory,value=idToPointer(valueToConvert),flags=gg.TYPE_DWORD}}) local b = gg.getValues({{address=pageInMemory,value=nil,flags=gg.TYPE_DWORD}}) return b[1].value end
Я, конечно, не силён в API этого твоего GameGuardian'а, но что если на самом деле он правильно 0 возвращает?
Anonymous
Неправильно
Igor
Ты меня не понял
Anonymous
Они никогда не равно нулю
Igor
Я так понимаю, ты получаешь значение из поинтера. Поинтер, в свою очередь получается из статичной области памяти
Anonymous
Ни указатели ни id
Igor
У тебя просчитываются разные "пути" для разных архитектур до значения в указателе?
Anonymous
Нет
Igor
Полагаю, у тебя где-то захардкодены база и её смещения
Igor
И найдены они только для arm32
Igor
А для arm64 ты их не искал, а они находятся совершенно по другим адресам
Snusmumriken
*могут находиться
Anonymous
Я делаю три шага: Ищу постоянное значение, далее смещаю и получаю ID, дальше надо из id получить указатель для дальнейшего поиска (точнее сверки каждого результата на соответствие указателю) полного списка id определенной категории товаров которые имеют свои указатели
Anonymous
Я использую пока arm приложение на arm64 системе
Igor
Вот теперь я окончательно запутался. Где и при каких обстоятельствах у тебя возникает проблема?
Anonymous
Щас
Anonymous
5 - 10 минут,проскриню все
Anonymous
Я просто мало понимаю в этом ,поэтому объяснить как полагается-для меня проблема(
Igor
*могут находиться
Ну когда речь идёт о разных архитектурах, насколько мне известно, не просто "могут". Компилеры же по разному компонуют код для разных архитектур.
Snusmumriken
А если память динамическая, то оно может каждый раз находиться где угодно, и можно рандомом попасть на один и тот же участок ))
Igor
Вообще да, но вероятность такая, что её вероятностью-то назвать сложно
Anonymous
Так
Anonymous
Anonymous
Anonymous
Ищу постоянное значение, из которого после смещения получается id
Anonymous
Anonymous
Это id после смещения найденного результата
Anonymous
В интерфейсе есть кнопка перейти к указателю
Anonymous
Anonymous
Anonymous
Сам указатель собственно говоря
Anonymous
Это на arm
Anonymous
И скрипт отрабатывает как надо
Anonymous
Anonymous
Anonymous
На arm64 системе я использую arm приложение,т.е. структуры данных те же самые
Anonymous
Но, ошибка именно в функции преобразования ЗНАЧЕНИЯ в АДРЕС
Anonymous
Из за этого я не получаю нужный указатель, хотя остальные условия выподлняются как надо
Anonymous
Может под х64 он формат как то подругому форматирует, я уж хз...
Anonymous
Anonymous
Сам скрипт...
Igor
Не пойму, это сам GG чтоль требует хранить адреса в HEX строке?
Igor
Тут в самом начале какое-то непонятное мне преобразование адреса выделенной страницы в hex строку
Anonymous
Я не знаю честно говоря
Anonymous
Это из документации гг
Igor
"0x%08x"
Anonymous
Вот javascript:void(0)
Anonymous
Ай
Igor
0x8x - это плохо
Igor
8 шестнадцатеричных цифр - это 32 бита адрес
Anonymous
https://gameguardian.net/help/classgg.html#a15e72eaba99c1eadac1ccdeb8e2b5009
Igor
0x00000000
Igor
А 64битное число кодируется 8 БАЙТАМИ
Igor
То есть 0x0000000000000000
Anonymous
Суть в том что игра 32 бита , а гг работает под 64битной