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

> Readmem <тип Данных>
фонарик
сообщение 23.11.2011, 2:37
Сообщение #1


****

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



Подскажите пожалуйста, умные дяди и тёти, какой тип данных нужно указать команде readmem, если мне хочется видеть в пилоте человеческое 4х байтовое число с точкой?

Вот например, при помощи artmoney я нахожу в памяти число -187.0

UOpilotу пишем:

readmem #X 0х12C30770 <тип данных>
msg #X
stop_script

Какой бы я тип данных не ставил, UOpilot не показывает нужное мне число. При типе DWORD, Пилот покажет 3274113024, при типе byte или W:word покажет 0 (IMG:style_emoticons/default/sad.gif) Как мне отобразить сидящее 4х байтовое число с точкой?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
фонарик
сообщение 27.9.2012, 4:06
Сообщение #2


****

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



Код
--v.2.24.1--

добавил в команды 'readmem' и 'writemem' операции с числами с плавающей запятой
B:byte = 1b; W:word = 2b; D:dWord = 4b; C:char = 1b; S:String = 1-255b;
DO:double = 8b; F:float = 4b; R:real = 6b;
в связи с тем, что пилот оперирует только с целыми числами, числа с плавающей запятой можно хранить только в строковых переменных.
В связи с таким замечательным нововведением, решил опробывать как оно работает:

Код
readmem $x 0x035D027C F:float
msg $x


В самой игре это значение 27.3 а пилот показывает 27.3163489588374

можно как-то это значение в переменной укоротить до игрового без особых дополнительных напрягов на скрипт? (IMG:style_emoticons/default/huh.gif) Посоветуйте что-нибудь пожалуйста. И как вообще производить какие-либо математические операции с этим числом?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
EL-GReeN
сообщение 27.9.2012, 16:06
Сообщение #3


*****

Journeyman
Сообщений: 474
Регистрация: 18.7.2011
Группа: Пользователи
Наличность: 0
Из: Россия
Пользователь №: 13.815
Возраст: 32



Цитата(фонарик @ 27.9.2012, 5:06) *

Код
--v.2.24.1--

добавил в команды 'readmem' и 'writemem' операции с числами с плавающей запятой
B:byte = 1b; W:word = 2b; D:dWord = 4b; C:char = 1b; S:String = 1-255b;
DO:double = 8b; F:float = 4b; R:real = 6b;
в связи с тем, что пилот оперирует только с целыми числами, числа с плавающей запятой можно хранить только в строковых переменных.
В связи с таким замечательным нововведением, решил опробывать как оно работает:

Код
readmem $x 0x035D027C F:float
msg $x


В самой игре это значение 27.3 а пилот показывает 27.3163489588374

можно как-то это значение в переменной укоротить до игрового без особых дополнительных напрягов на скрипт? (IMG:style_emoticons/default/huh.gif) Посоветуйте что-нибудь пожалуйста. И как вообще производить какие-либо математические операции с этим числом?


Код

set linedelay 1
set $x 27.3163489588374
get word $var1 1 $x //получение целого
get word $var2 2 $x //получение дробного
set $var2 Copy($var2 1 1) //уменьшение строки до 1го символа
set #var1 $var1
set #var2 $var2
msg insert(. #var1 100)#var2
//условие на меньше:
set #a1 27
set #a2 5
if #var1 <= #a1 and #var2 < #a2
msg #var1 . #var2 меньше чем #a1 . #a2
end_if
//условие на больше:
set #a1 27
set #a2 2
if #var1 >= #a1 and #var2 > #a2
msg #var1 . #var2 больше чем #a1 . #a2
end_if
//условие на равно:
set #a1 27
set #a2 3
if #var1 = #a1 and #var2 = #a2
msg #var1 . #var2 равно #a1 . #a2
end_if
//сложение:
set #a1 47
set #a2 9
set #tmp1 #var1 + #a1 + ( ( #var2 + #a2 ) / 10 )
set #tmp2 ( #var2 + #a2 ) - ( ( #var2 + #a2 ) / 10 ) * 10
msg #var1 . #var2 + #a1 . #a2 = #tmp1 . #tmp2
//вычитание:
set #a1 21
set #a2 9
set #tmp1 #var1 - #a1 - ( ( #var2 + #a2 ) / 10 )
if #var2 < #a2
set #tmp #var2 - #a2
set #tmp Copy(#tmp 2 100)
set #tmp2 10 - #tmp
else
set #tmp2 #var2 - #a2
if #var2 > #a2
set #tmp1 #tmp1 + 1
end_if
end_if
msg #var1 . #var2 - #a1 . #a2 = #tmp1 . #tmp2
end_script


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
фонарик   Readmem <тип Данных>   23.11.2011, 2:37
фонарик   Никто не знает как решить данную проблему или это ...   30.11.2011, 13:10
DarkMaster   С точкой тип данных не поддерживается. Насколько я...   30.11.2011, 13:52
Zeleax   И искомое число точно было -187.0, а не -167.0 ?   30.11.2011, 17:27
фонарик   И искомое число точно было -187.0, а не -167.0 ?Се...   6.12.2011, 22:58
DarkMaster   каким образом можно перевести? дай формулу. какая ...   30.11.2011, 18:04
Zeleax   каким образом можно перевести? дай формулу. какая...   30.11.2011, 18:15
DarkMaster   мдя... проще кнайта отпинать, чтобы считывалось но...   30.11.2011, 21:10
Zeleax   Дело в том, что даже не получается обработать таки...   30.11.2011, 23:26
Zeleax   Получилось :) Создал новую тему На нескольких ...   1.12.2011, 1:13
фонарик   У меня стоит система вин7 64бит, на этой системе э...   3.10.2012, 18:44
DarkMaster   проверь задержку между строк. Так же проверь отклю...   3.10.2012, 19:23


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

 

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