#1 19-05-2017 20:44

Chel555
Registered: 25-07-2015
Posts: 38

Деление HEX числа на разряды

Здравствуйте возникла у меня новая проблема с HEX числами, дело в том, что мне надо HEX число, взятое из определенного адреса памяти, поделить на разряды и эти разряды добавить в одномерный массив по каждому индексу.
Например надо HEX число 0xAD842C07 поделить на разряды и расположить их по индексу по массивам
A[0]=A
A[1]=D
A[2]=8
A[3]=4
A[4]=2
A[5]=C
A[6]=0
A[7]=7

Можно ли как то это сделать в клео скрипте оптимальным способом? Если возможно, то напишите пожалуйста пример кода, как это можно сделать. Заранее спасибо!

Offline

#2 20-05-2017 08:42

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Деление HEX числа на разряды

Записываешь в ячейку массива число.
Сдвигаешь на (7 - i) * 4 бит вправо (i - номер элемента в массиве, начиная с 0) (Rsh).
Убираешь всё, кроме нижних 4 бит (And).


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#3 20-05-2017 10:49

Mr.GeniusZ
Registered: 09-11-2014
Posts: 29

Re: Деление HEX числа на разряды

for 8@ = 0 to 7

    9@ = 7
    0062: 9@ -= 8@  // (int)
    9@ *= 4
    
    0B15: 0@(8@,8i) = 0xAD842C07 SHR 9@
    0B10: 0@(8@,8i) = 0@(8@,8i) AND 0xF
    
end

Last edited by Mr.GeniusZ (20-05-2017 10:59)

Offline

#4 21-05-2017 09:28

Chel555
Registered: 25-07-2015
Posts: 38

Re: Деление HEX числа на разряды

Спасибо вам, вы мне очень помогли, я вас добавлю в благодарности в ридми, что вы мне помогли, вот мой новый скрипт https://youtu.be/Lo_DVsk8wv0

Offline

#5 21-05-2017 09:47

Seemann
Registered: 07-08-2006
Posts: 2,120

Offline

#6 21-05-2017 11:16

Chel555
Registered: 25-07-2015
Posts: 38

Re: Деление HEX числа на разряды

А и еще возникла проблема, надеюсь вы мне поможете, как мне взять название HandlingID , т.е. сам идентификатор (число) есть, но мне надо саму строку, которая идет первым параметром в handling.cfg. Не знаете какая есть SCM функция или метод?

И второй вопрос, можно ли как то определить ID handling (само число, не строка) от введенной ID модели машины, не спавня ее (то есть не записывая хендл текущей машины)?

Offline

#7 22-05-2017 06:02

Chel555
Registered: 25-07-2015
Posts: 38

Re: Деление HEX числа на разряды

Ладно и на том спасибо что дали HEX число разделить на разряды закрыть. Тема закрыта.

Offline

#8 22-05-2017 23:44

Seemann
Registered: 07-08-2006
Posts: 2,120

Re: Деление HEX числа на разряды

как мне взять название HandlingID

возможно это поможет https://sannybuilder.com/forums/viewtop … 7478#p7478

mov eax, <ID модели>
mov eax, [0xA9B0C8 + eax*4]
add eax, 0x32

eax => указатель на имя модели

Offline

#9 23-05-2017 09:32

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Деление HEX числа на разряды

Так лучше не делать - может возникнуть проблема с Limit Adjuster, где выделяется новый массив указателей на model info.
Есть функция, которая возвращает model info по ид модели.

0x403DA0  ; CBaseModelInfo *__cdecl CModelInfo::GetModelInfo(int modelId)

Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

Board footer

Powered by FluxBB