Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Общие вопросы и ответы
denis2000Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Код
function abort(fmt, ...)
                     local reason = string.format(fmt, ...)
                     error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Код
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Код
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста.
Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими


[cut noguest=Первый юбилей нашей темы]

Здравствуйте господа модостроители, и все так или иначе причастные к этому.
Нашей теме исполнился 1 год.
От души поздравляю Всех Вас дорогие друзья, творческих успехов.
Хочу так же выразить отдельную благодарность denis2000 и ХОВАН.

tracker 23.06.11



[/cut]
 
DragonДата: Сб, 04.04.2020, 17:29 | Сообщение # 2926
Бывалый
Пользователи
Сообщений: 141
Награды: 0
Репутация: [ 21 ]

denis2000,
https://yadi.sk/d/JTNkjfFwuRqfhw скриншоты по ссылке.
Это переход чёткости и блура при просмотре в даль на объекты то ближние то дальние. Так вот этот блур он то зависает то живет своей жизнью.. Целишься в сталкера а тут раз и на тебе всё мыльное , даже без учёта того что прицел может цепляться за ближние объекты типа деревьев. Хочу убрать этот блур по возможности.
 
GlomarДата: Вс, 05.04.2020, 21:52 | Сообщение # 2927
Хозяин Зоны
Пользователи
Сообщений: 23464
Награды: 62
Репутация: [ 4001 ]

Цитата Dragon ()
Как это вернуть , что за файл отвечает за эффект ?

Если в СГМ 2.2 всё работало чётко.
То можно поступить так.
Скачать мод СГМ 2.2.
Извлечь необходимые файлы и заменить в Сборке Албора(предварительно сохранив файлы Сборки Енота).
Гарантировать 100% результат не могу, но попробовать можно.


 
denis2000Дата: Пн, 06.04.2020, 00:50 | Сообщение # 2928
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Dragon, По скриншотам возникает целый ряд вопросов:
1. Что это за версия мода от Енота? (на моей версии даже интерфейс другой!)
2. Проблема проявляется при надетом шлеме? (Включен динамических ХУД?)
3. Проблема проявляется при включенном ПНВ? (Включение/отключение ПНВ влияет на блур?)
4. Почему из вас требуется вытягивать необходимую информацию? Это вам нужно или нам? (в шапке темы написано: Помните чем подробнее вопрос, тем точнее ответ.)


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
DragonДата: Пн, 06.04.2020, 15:31 | Сообщение # 2929
Бывалый
Пользователи
Сообщений: 141
Награды: 0
Репутация: [ 21 ]

denis2000, Мод Енота взят с этого же сайта , ничего не менял(из других модов или сторонних сборок). Интерфейс заменён с этого же мода(лежал в папках в самом моде для замены миникарты). Худ отключён в настройках мода. Проявляется всегда независимо от включённого\выклеченного ПНВ. Шлем тут тоже не влияет никак , это такой эффект , стабильный. В чистом сгм 2.2 либо его нет , либо практически незаметен. Думал заменить файлы , но надо знать какие именно.
 
denis2000Дата: Пн, 06.04.2020, 15:57 | Сообщение # 2930
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Dragon, Понятно. Значит поскольку такого эффекта у меня в моде Енота не наблюдается, то вероятнее всего, что этот эффект привнесен теми изменениями, что вы ставили помимо основного мода и сборки от Енота.

Попробуйте удалить/переименовать файлы user.ltx и tmp.ltx. Это сбросит настройки игры на дефолтные, зайдите в игру настройте рендер/разрешение и тд. После этого проверьте остался ли эффект.

Если после этого эффект остался проверьте поиском по папке со скриптами наличие строк типа: r2_dof_


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Rembo-2Дата: Пт, 10.04.2020, 11:52 | Сообщение # 2931
Гражданский
Пользователи
Сообщений: 10
Награды: 0
Репутация: [ 0 ]

Кто-нибудь может подсказать, где я напортачил?
Играю в СГМ 22. В подземельях агропрома я заменил живность на нпс с поверхности, кроме simulation_bloodsucker_nightmare.
Стабильно вылет:
[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : ..\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ...e.r. - Зов Припяти\gamedata\scripts\sim_board.script:304: attempt to index local 'spawn_smart' (a nil value)
Ссылка на XRay:https://yadi.sk/d/FC-F6wmhY252Fw


Сообщение отредактировал Rembo-2 - Пт, 10.04.2020, 12:06
 
denis2000Дата: Пт, 10.04.2020, 12:28 | Сообщение # 2932
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Rembo-2, Скорее всего ошибка в имени смарта на котором спавниться сквад.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Ср, 15.04.2020, 03:01 | Сообщение # 2933
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Здравствуйте! Подскажите, можно ли бинд анимаций/бинд анимации или функции из xr_effects моста в Рыжем лесу использовать для перевода вертолёта из анимации idle на анимацию die и наоборот? Вообще, будет ли работать данный функционал на вертолёты?

p.s. Вот его функционал(вроде весь. Скачал локацию, в описании говорилось что есть мост и он в рабочем состоянии)

[cut=bind_red_forest_bridge.script]
--'******************************************************
--'* Биндер объекта моста .
--'******************************************************

function bind(obj)
obj:bind_object(bridge_binder(obj))
db.storage[obj:id()] = { }
end

class "bridge_binder" (object_binder)
function bridge_binder:__init(obj) super(obj)
self.bridge = obj
local se_koleso = alife():story_object(516)
self.se_koleso_id = se_koleso and se_koleso.id
-- printf("koleso = [%s]", tostring(self.se_koleso_id))
end
function bridge_binder:net_spawn(server_object)
if not object_binder.net_spawn(self, server_object) then
return false
end
db.add_bridge(self.bridge, self)
printf("callback!!!!bridge!!!!")
self.object:set_callback(callback.script_animation, self.animation_end_callback, self)
self.bridge:get_physics_object():stop_anim()
if self.koleso ~= nil then
self.koleso:get_physics_object():stop_anim()
end
db.add_bridge(self.bridge, self)
self.idle_snd = sound_object("device\\bridge\\bridge_move")
self.down_snd = sound_object("device\\bridge\\bridge_down")
self.start_snd = sound_object("device\\bridge\\bridge_start")
self.stop_snd = sound_object("device\\bridge\\bridge_stop")
self.idle = 50000
return true
end

function bridge_binder:net_destroy()
self.idle_snd:stop()
self.down_snd:stop()
self.start_snd:stop()
self.stop_snd:stop()
object_binder.net_destroy(self)
end

function bridge_binder:anim_forward()
self.idle_snd:stop()
self.bridge:get_physics_object():stop_anim()
if self.koleso ~= nil then
self.koleso:get_physics_object():run_anim_forward()
end
self.idle_end = self.idle + game.time()
self.start_snd:play_at_pos( self.object, self.object:position(), 0, sound_object.s3d)
self.idle_snd:play_at_pos( self.object, self.object:position(), 5, sound_object.s3d + sound_object.looped)
self.bridge_idle = true
self.bridge_anim_fwd = true
end

function bridge_binder:anim_backward()
self.idle_snd:stop()
self.bridge:get_physics_object():stop_anim()
if self.koleso ~= nil then
self.koleso:get_physics_object():run_anim_back()
end
self.idle_end = self.idle + game.time()
self.start_snd:play_at_pos( self.object, self.object:position(), 0, sound_object.s3d)
self.idle_snd:play_at_pos( self.object, self.object:position(), 5, sound_object.s3d + sound_object.looped)
self.bridge_idle = true
self.bridge_anim_fwd = false
end

function bridge_binder:anim_stop()
self.bridge:get_physics_object():stop_anim()
if self.koleso ~= nil then
self.koleso:get_physics_object():stop_anim()
end
self.bridge_idle = false
self.stop_snd:play_at_pos( self.object, self.object:position(), 0, sound_object.s3d)
end

function bridge_binder:update(delta)
object_binder.update(self, delta)
if self.se_koleso_id ~= nil and (self.koleso == nil) and (db.storage[self.se_koleso_id] ~= nil) and (db.storage[self.se_koleso_id].object ~= nil) then
self.koleso = db.storage[self.se_koleso_id].object
printf("koleso est'")
self.koleso:get_physics_object():stop_anim()
end
if self.anim_time then
self.bridge:get_physics_object():anim_time_set(self.anim_time)
self.anim_time = nil
end
if self.bridge_idle == true then
if self.idle_end <= game.time() then
if self.bridge_anim_fwd == true then
self.bridge:get_physics_object():run_anim_forward()
else
self.bridge:get_physics_object():run_anim_back()
end
end
else
self.object:get_physics_object():stop_anim()
if self.idle_snd ~= nil then
self.idle_snd:stop()
end
end
end

function bridge_binder:animation_end_callback( is_end )
printf("animation_callback!!!!!!bridge!!!!")
if is_end then
db.actor:give_info_portion("red_bridge_down_done")
self.down_snd:play_at_pos( self.object, self.object:position(), 0, sound_object.s3d)
self.bridge_idle = false
if self.koleso ~= nil then
self.koleso:get_physics_object():stop_anim()
end
else
db.actor:give_info_portion("red_bridge_actor_out")
self.down_snd:play_at_pos( self.object, self.object:position(), 0, sound_object.s3d)
self.bridge_idle = false
if self.koleso ~= nil then
self.koleso:get_physics_object():stop_anim()
end
end
end
-- Standart function for save
function bridge_binder:net_save_relevant()
return true
end
-- Saving crow
function bridge_binder:save(packet)
set_save_marker(packet, "save", false, "bridge_binder")
object_binder.save(self, packet)
xr_logic.save_obj(self.object, packet)

packet:w_bool(self.bridge_idle==true)
packet:w_bool(self.bridge_anim_fwd==true)
if self.idle_end then
packet:w_u32(self.idle_end)
else
packet:w_u32(0)
end
if self.object and self.object:get_physics_object() and self.object:get_physics_object():anim_time_get() then
packet:w_float(self.object:get_physics_object():anim_time_get())
else
packet:w_float(0)
end
set_save_marker(packet, "save", true, "bridge_binder")
end
-- Loading crow
function bridge_binder:load(packet)
set_save_marker(packet, "load", false, "bridge_binder")
object_binder.load(self, packet)
xr_logic.load_obj(self.object, packet)
self.bridge_idle = packet:r_bool()
self.bridge_anim_fwd = packet:r_bool()
self.idle_end = packet:r_u32()
self.anim_time = packet:r_float()
set_save_marker(packet, "load", true, "bridge_binder")
end[/cut]
[cut=xr_effects.script]
-- Функции для управления мостом.

function bridge_down()
db.bridge_by_name["red_bridge"]:anim_forward()
end
function bridge_up()
db.bridge_by_name["red_bridge"]:anim_backward()
end
function bridge_stop()
db.bridge_by_name["red_bridge"]:anim_stop()
end

function anim_obj_down(actor, npc, p)
if p[1] ~= nil then
db.anim_obj_by_name[p[1]]:anim_forward()
end
end
function anim_obj_up(actor, npc, p)
if p[1] ~= nil then
db.anim_obj_by_name[p[1]]:anim_backward()
end
end[/cut]
[cut=Сама секция отсека моста, использующая анимации]
; cse_abstract properties
section_name = red_forest_bridge
name = red_bridge
position = -144.884460449219, 10.0784387588501, -270.569519042969
direction = 0, 0, 0
id = 65535
version = 124
script_version = 8
spawn_id = 5686

; cse_alife_object properties
game_vertex_id = 961
level_vertex_id = 27072
object_flags = 0xffffff3a
custom_data = <<END
[collide]
ignore_static
[animated_object]
END

; cse_visual properties
visual_name = dynamics\scene_objects\red_forest\red_forest_bridge_01_dynamic

; cse_ph_skeleton properties
skeleton_name = bridge_down
skeleton_flags = 1

; cse_alife_object_physic properties
physic_type = 0x3
mass = 10[/cut]

Добавлено (15.04.2020, 03:56)
---------------------------------------------
И ещё вопрос. С чем связана проблема с забором возле моста в Лиманск в Рыжем лесу? И можно ли её как-то исправить?
[cut=Забор сил тьмы][/cut]


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Ср, 15.04.2020, 03:56
 
denis2000Дата: Ср, 15.04.2020, 09:16 | Сообщение # 2934
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
Вообще, будет ли работать данный функционал на вертолёты?

Нет. Вертолет и мост объекты разного движкового класса с разными биндерами.
Поясните что вам конкретно требуется и возможно найдутся способы реализации вашего плана.

Цитата asd123 ()
С чем связана проблема с забором возле моста в Лиманск в Рыжем лесу?

Какая проблема? Прозрачность решетки? Вероятно некорректно настроен материал в части шейдера.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Ср, 15.04.2020, 13:11 | Сообщение # 2935
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

denis2000, понял) Жаль, очень жаль...
Чего я хочу? Хочу реализовать анимацию die из моделей вертолётов. Сцена такая: летит вертолёт, по нему попадают из гаусски(например), и он вместо плавного спуска начинает опускаться вращаясь.

Цитата denis2000 ()
Какая проблема? Прозрачность решетки?

Да, она. Когда отходишь от забора, то он темнеет. Спасибо за наводку, поищу модельку забора и поменяю настройку

Добавлено (17.04.2020, 08:49)
---------------------------------------------
Здравствуйте. Вопрос по логике вертушек. В общем, добавил я для теста вертолёт с 11-ю точками path_move и path_look, только почему-то он не обрабатывает 10 точек из path_look. В 11 точке(которая обновляет патруль и выводит на первую) он уже разворачивается на первую точку обзора, и снова продолжает летать, смотря только в неё. В чем проблема? Я недоглядел, или кривые настройки логики/скрипта heli_move?

Логика такая:
Код
[logic]
active = heli_move@lime_fly

[heli_move@lime_fly]
path_move = red_lime_heli_move
path_look = red_lime_heli_look
max_velocity = 60
engine_sound = true
invulnerable = true
min_mgun_attack_dist = 1
max_mgun_attack_dist = 150
min_rocket_attack_dist = 50
max_rocket_attack_dist = 180
use_rocket = true
use_mgun = true
enemy = all
upd_vis = 3


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Пт, 17.04.2020, 08:58
 
denis2000Дата: Пт, 17.04.2020, 09:12 | Сообщение # 2936
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123, Возможные проблемы:
1. Проблема в настройках путей или точек пути (неверно настроены переходы между точками или флаги точек).
2. Проблема в расположении точек: из-за специфики движения вертолета по маршруту он не может достигать некоторых точек (например если точки слишком близко расположены достичь их помешают иннерционно-скростные характеристики объекта).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Пт, 17.04.2020, 10:14 | Сообщение # 2937
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
1. Проблема в настройках путей или точек пути (неверно настроены переходы между точками или флаги точек).

Хмм... Вроде переходы нормальные(логика то не бьётся, после 11-ой точки он снова начинает смотреть в первую, хотя в предыдущие 10 не смотрит), единственное что меня смущает - это flags = 0x1. Можно поподробнее,
на что вообще влияет этот параметр и нужно ли здесь ставить разные значения? А то на руках логика ТЧшных вертолётов, и там например на Янтаре, у точек путей разные flags. Вот waypoint одного из вертолётов с Янтаря ТЧ
Код
[heli_look_1]
points = p0,p1,p2,p3,p4
p0:name = wp00|e|w=1
p0:flags = 0x1
p0:position = 60.161979675293,0.035919189453125,-51.474308013916
p0:game_vertex_id = 1443
p0:level_vertex_id = 70896
p0:links = p1(1)

p1:name = wp01
p1:flags = 0x2
p1:position = 68.5319290161133,0.0297470092773438,-29.8421039581299
p1:game_vertex_id = 1508
p1:level_vertex_id = 75687
p1:links = p2(1)

p2:name = wp02
p2:flags = 0x4
p2:position = 61.4718818664551,-0.845855712890625,-10.8075866699219
p2:game_vertex_id = 1508
p2:level_vertex_id = 71781
p2:links = p3(1)

p3:name = wp03
p3:flags = 0x8
p3:position = 58.6818428039551,-0.845855712890625,22.6934432983398
p3:game_vertex_id = 1509
p3:level_vertex_id = 70154
p3:links = p4(1)

p4:name = wp04
p4:flags = 0x10
p4:position = 91.0716552734375,0.0314712524414063,12.4605712890625
p4:game_vertex_id = 1513
p4:level_vertex_id = 87195


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Пт, 17.04.2020, 10:15
 
denis2000Дата: Пт, 17.04.2020, 10:46 | Сообщение # 2938
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123, Флаг - это очень важный параметр в настройках пути/точек. Флаг связывает точку пути move и точку пути look (или набор точек) куда будет "смотреть" НПС/МОБ/Вертолет.
Иными словами если вы указали в точке пути move флаг №1, то в качестве точки пути look куда будет "смотреть" вертолет будет выбрана одна из точек пути с таким же флагом.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Пт, 17.04.2020, 11:06 | Сообщение # 2939
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

denis2000, так... А числа после 0x1 можно выставлять любые? Я на стороннем ресурсе нашёл вот что:
Код
Флажок всегда начинается со значения 0x1
Флажки в move и look должны совпадать. Т.е флажок в точке, где задали параметр |e, должен совпадать с флажком в точке look, иначе получим вылет.
Флажок ВСЕГДА начинается со значения 0x1. Известные значения мне: (0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,...), однако всречал примеры, где заданы значения 0x400, 0x800 и т.д Откуда значение берется и четкие его рамки, кроме четности (почему тогда не используется 0x6 ?) мне не известны.

Код
Сегодня(делал логику и пути вертолетов) столкнулся с таким явлением: При установке флажка flags = 0x6 по прибытии вертолета в точку с этим флагом - ловил стабильный вылет "бад_аргумент3"... При замене этого флага на flags = 0x8 вылет прекратился. Вот поэтому наверное и не используются флаги с таким значением. Хотя почему именно "06" - мне неизвестно.


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Пт, 17.04.2020, 11:07
 
denis2000Дата: Пт, 17.04.2020, 11:30 | Сообщение # 2940
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123, Набор флагов представлен как 32 разрядное двоичное число, то есть всего существует 32 флага.
Если флаг установлен то соотвествующий бит этого числа равен 1, если нет то 0.
Вот пример такого числа:
00000000000000000000000000001000
В нем установлен флаг №3 (счет с нуля). Но записывать такое число крайне не удобно, поэтому в ACDC было принято решение кодировать его в HEX формате (шестнадцатеричный формат):
BIN: 00000000000000000000000000001000 == HEX: 0x8


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Поиск: