Делаем новые миссии. CLEO - скрипты, cutscene, статьи, программы. Игровые новости.
 
25.9.07 23:09 |

Работа с битами переменной

Раздел: Основы скриптинга | Автор: yelmi | Рейтинг: 10.00 (1) | Хитов 4273
Любому человеку, изучавшему основы программирования известно, что число в машинном коде представлено в виде нулей и единиц, то есть в двоичной системе счисления.

Минимальной единицей информации в компьютере является бит. Бит может быть либо «выключен», при этом его значение равно нулю, либо «включен», тогда его значение равно единице.
Процессор в РС и по сей день используют 32-битную архитектуру (intel и AMD выпускают процессоры с 64-битной архитектурой, но на данный момент операционные системы толком ее не поддерживают). Биты пронумерованы от 0 до 31 справа на лево:
31 30 29 28 27 ………..5 4 3 2 1 0.

К примеру десятичное число 65 будет представлено так:
0000 0000 0000 0000 0000 0000 0100 0001.

Ну что ж вернемся к нашим опкодам.

Наверное многие задавались вопросом, что же это за такие мудреные команды?

Код:
0004: $391 = 0 // integer values

. . . .

08BA: set $391 bit 0 - ?

. . . .

08C0: clear $391 bit 0 - ?

. . . .

08B4: test $391 bit 0 - ?

Прировняв переменную $391 к нулю мы, тем самым, установили все 32 бита в ноль.
Следующим опкодом 08BA: set $391 bit 0 мы устанавливаем нулевой бит равным единице, то есть 0000 0000...0000 0001.

Для примера напишем такой поток:

Код:
:TEST1
0004: $391 = 0 // integer values

:TEST1_1
08BA: set $391 bit 0

:TEST1_2
045A: text_draw_1number 20.0 430.0 ' NUMBER ' $391 // ~1~
wait 3000
end_thread

В результате в нижнем левом углу экрана появится цифра 1.

Для чего это нужно? Предположим что переменная $391 у нас будет отвечать за одежду игрока. К примеру нулевой бит имеет отношение к головному убору или прическе, второй – рубашка, третий – штаны и так далее. Либо каждый бит будет отвечать за различные варианты одежды. Тогда:

Код:
08BA: set $391 bit 0 
08BA: set $391 bit 1
08BA: set $391 bit 2

будет означать что вся эта одежда будет применена к модели игрока.
Перед созданием игрока делаем проверку

Код:
if
08B4: test $391 bit 0
jf @xxx

тем самым мы проверяем равен ли нулевой бит единице.
Опкод 08C0: clear $391 bit 0 – очишаем нулевой бит переменной, то есть приравниваем его к нулю.


  12»

  1 2 3 4 5 6 7 8 9 10  

Родственные ссылки
» Другие статьи раздела Основы скриптинга
» Эта статья от пользователя yelmi

5 cамых читаемых статей из раздела Основы скриптинга:
» Работа со звуками в GTA San Andreas
» Директивы
» Контроль клавиатуры
» External Script – что это такое и как с ним работать?
» Панель, или список товаров. Часть II.

5 последних статей раздела Основы скриптинга:
» Директивы
» Дополнительные команды
» Ключевые слова
» Классы
» Циклы

¤ Перевести статью в страницу для печати
¤ Послать эту cтатью другу

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама
Занятия йогой
Рассказ об основательнице. Учителя прошлого и современные.
yoga-klub.ru

Вверх     Вернуться на главную. Вход в Систему. Статьи. Скачать. Миссии. ФОРУМ Обратная связь.   
   
   
   
   
- Генерация страницы: 0.14 секунд -