Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> --lua readmem (address, "F"), Пилот читает float, lua отказывается
фонарик
сообщение 1.10.2023, 21:18
Сообщение #1


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Здравствуйте, не могу понять почему так. Мне нужно прочитать значение с точкой из памяти. На простом пилоте значение читается правильно:
Код
readmem $param1 "0x036F7548" F  // 121,650543212891
readmem $param2 "0x036F7548" D  // 1123241236

Но то же самое на луа - не робит (IMG:style_emoticons/default/sad.gif)
Код
param1 = readmem ("0x036F7548", "F") -- -1
param2 = readmem ("0x036F7548", "D") -- 1123241236


В чём может быть проблема, подскажите пожалуйста.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 3.10.2023, 18:09
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



попробуй загнать общим стрингом. возможно так же имеет значение регистр.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 4.10.2023, 1:58
Сообщение #3


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



lua два последних типа данных F:float = 4b; R:real = 6b выдает всегда -1, тогда как обычным пилотом все считывается правильно. Остальные типы считываются правильно и пилотом, и луа. Единственно какое решение я нашёл как решить проблему - нашел в интернетах функцию-конвертер dec to float, т.е считываем дестичное значение типа D и конвертим его в тип F float. Почему оно сразу не считывается правильно на луа, а выдаёт -1 так и осталось загадкой (IMG:style_emoticons/default/biggrin.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 4.10.2023, 3:39
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26745
Пользователь №: 16.971
Возраст: 29



Код
param1 = readmem ("0x036F7548, F") 

Вернёт string.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 4.10.2023, 18:29
Сообщение #5


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Какие же вы умные ребята здесь на форуме, не перестаю вами восхищаться (IMG:style_emoticons/default/biggrin.gif) Часов пять своих мытарств, потом совет-намёк от товарища DarkMaster так и не поддался разгадке своими силами, что же всё-таки такое этот "общий стринг" (IMG:style_emoticons/default/unsure.gif) Товарищ cirus и вовсе лишил своё сообщение какой-либо тайны или намёков (IMG:style_emoticons/default/smile.gif) Вот такие вот мы, простые граждане, порой мало нам сказать как правильно (IMG:style_emoticons/default/biggrin.gif) Спасибо вам большое (IMG:style_emoticons/default/thanks.gif) Действительно, "общим стрингом" всё работает (IMG:style_emoticons/default/laugh.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 15.2.2024, 14:42
Сообщение #6


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Цитата(cirus @ 4.10.2023, 3:39) *
Код
param1 = readmem ("0x036F7548, F") 

Вернёт string.
А если адрес 0x036F7548 в переменной, то каким образом его подставить нужно? (IMG:style_emoticons/default/unsure.gif) Подскажите пожалуйста, никак не получается (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.2.2024, 18:12
Сообщение #7


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



local address = 0x12345678
param1 = readmem ('"' .. address .. ', F"')
вроде как-то так. Главное с кавычками не запутаться.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.2.2024, 20:14
Сообщение #8


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Код
do
    local readmem_orig = readmem
    _G.readmem = function(...)
        return readmem_orig('"' .. table.concat({...}, ", ") .. '"')
    end
end

Можешь закинуть это в шапку и не выносить больше мозг. Оно просто будет работать (я надеюсь (IMG:style_emoticons/default/smile.gif) если, что - поправлю).

Сообщение отредактировал DarkMaster - 15.2.2024, 20:15


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 16.2.2024, 6:47
Сообщение #9


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Код
do
    local readmem_orig = readmem
    _G.readmem = function(...)
        return tonumber(readmem_orig(table.concat({...}, ", ")))
    end
end

вот так чуть корректнее и вернет number, а не string.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 18.2.2024, 11:50
Сообщение #10


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Цитата(DarkMaster @ 15.2.2024, 18:12) *

local address = 0x12345678
param1 = readmem ('"' .. address .. ', F"')
вроде как-то так. Главное с кавычками не запутаться.
Как вы только это делаете (IMG:style_emoticons/default/unsure.gif) Просто какая-то магия (IMG:style_emoticons/default/sorcerer.gif) Большое спасибо вам, DarkMaster.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.2.2024, 12:14
Сообщение #11


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Рад помочь. Я бы все-таки рекомендовал использовать код из https://forum.uokit.com/index.php?s=&sh...st&p=445741
Далее можно пользоваться обычным readmem и не заниматься никакой ерундой с кавычками. Данный код нужно выполнить только один раз в начале скрипта.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.4.2024, 15:32
Designed by Nickostyle