» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » флаги (Когда переводим все мапы в текстовые файлы...)

Переход по темам
<< Пред. След. >>
Единственная страница этой темы

 
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Когда переводим все мапы в текстовые файлы, флаги всех объектов на мапе пишутся в одном длинном числе. Как мне получить значения каждого флага по отдельности из текстового файла?

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 22:33 - 13 Авг., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Перевести его в шестнадцатеричный формат, например, с помощью виндового калькулятора. Затем влезть в доку по протофайлам и смотреть там что и где находится.

Отправлено: 8:55 - 14 Авг., 2006
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Ок, тогда селдующий вопрос. Как в Сишке перевести число в 16-ричный формат?

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 22:23 - 14 Авг., 2006
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Если на ночь глядя ничего не путаю - то так:

int pAddress =16777216;

//чего-то там.....

// ... ...   (void*)pAddress;

printf("%x",pAddress);


-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 23:56 - 14 Авг., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

int PID = 16777216;
printf("%x", PID);

:D

Отправлено: 10:46 - 15 Авг., 2006
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

А адрес-то от PID зачем брать?
И помоему лучше будет так

Код:
 
int PID = 16777216;
printf("0x%08X", PID)



Отправлено: 11:17 - 15 Авг., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Я же говорю: :D. Привычка, блин, в шестнадцатеричном формате именно адреса выводить :D.

Отправлено: 19:46 - 15 Авг., 2006
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Lol

Народ, я ж всего лишь на вопрос отвечал. Вот и привёл кусок из своего кода PID'ы там ни причём, просто способ перевода

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 22:23 - 15 Авг., 2006
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Ок, это вывод на экран... А как придать переменной значение этого числа в 16-ричном формате.
Опережая ответ, ещё один вопрос. Как получить какое то определённое место в числе 16-ричного формата. Например есть 0х002d542. как мне узнать что находится на 4-ой позиции (d) ?

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 21:38 - 17 Авг., 2006
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Я ж строки с комментариями не от понта приводил... Ок, ещё раз. Смотри:

int pAddress =16777216;

//чего-то там.....

ReadProcessMemory(hNewProcess, (void*)pAddress, &movei, 4, NULL);
printf("%x",pAddress);


Таким образом в ф-ию чтения памяти передаётся целое число как 16-ое. Ну а если ещё проще, то так мо;но:


int pAddress =16777216; //что надо перевести
void* temp; //что получить


temp = (void*) pAddress;

//а дальше что угодно, типа
printf("%x",temp);
printf("%d",temp);

//первое будет
//0x1000000
//второе
//16777216

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 22:56 - 17 Авг., 2006 | ИСПРАВЛЕНО: Ray - 21:59 - 17 Авг., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Ray, не заморачивай человека так сильно .

binyan, так и записывай: 0x и дальше число. Например,
int PID = 0x01000001;
На второй вопрос:
int flag4 = (PID & 0x0000F000) >> 12;
0x0000F000 - это "маска", где нужные тебе биты "забиты" единицами, а ненужные - нулями. >> - операция побитового сдвига.

PS Ты, часом, не анализатор PID делаешь? Есть же...

PPS И ввообще, люди, пользуйтесь преимуществами С++, а...
cout >> hex >> PID;
:D

Отправлено: 17:12 - 18 Авг., 2006
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Цитата:
int flag4 = (PID & 0x0000F000) >> 12;


А почему 12?

Цитата:
Ты, часом, не анализатор PID делаешь?


Нет. Я пытаюсь мапы в sql записать

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 21:34 - 20 Авг., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Цитата:
А почему 12?

Биты посчитай .

Отправлено: 21:51 - 20 Авг., 2006
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Ладно...сдаюсь...камрады, помогайте. Кто нибудь когда нибудь разбирался с форматом мапов переведенных в тхт? Кто нибудь может мне обяснить что значат все эти циферки перед началом блоков [OBJECT] ? Как оно там вообще построенно то все?

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 21:04 - 22 Авг., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Открываешь доку по прошникам и видишь там всё те же параметры. Если предмет -- контейнер с вещами внутри, то к нему "пристёгивается" ещё и список этих вещей (объектов). Есть там, правда, ещё и параметры, специфичные именно для объектов на мап-файлах. По именам о них кое-что ясно, но только кое-что.

ЗЫ При сохранении в тхт маппер теряет информацию о некоторых флагах misc-объектов. Каких -- не помню, Anchorite об этом говорил.

Отправлено: 10:00 - 23 Авг., 2006
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Вроде по Exit Grid-ам и Ladderam.

Отправлено: 20:20 - 23 Авг., 2006
 

Переход по темам
<< Пред. След. >>
Единственная страница этой темы


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com