Sidebar

damagetype для пуль в игре CS:S

igi_sev

I have returned
20.04.09
819
39
  • Золотая медаль 232
damagetype для пуль в игре CS:S

Появился достаточно сложный вопрос:

Какой "damagetype" имеют пули в игре Counter-Strike: Source?


damagetype - это обычное число (0, 1, 4, 64 и т.д.), символизирующее тип повреждений который получают объекты в игре.

Например:
Оффтоп

А какой damagetype для пуль (BULLETS)?

Как известно, некоторым объектам (в том числе и игрокам) можно установить filter_damage_type (Фильтр Повреждений) при помощи функции "SetDamageFilter" или как-нибудь ещё. Этот фильтр разрешает или запрещает объектам получать повреждения от определённого damagetype.


Прошу поделиться знаниями в этой области...

Скорей всего ответ можно будет найти в исходниках Counter-Strike:Source, но у меня нет этих исходников. Может у кого-нибудь найдётся?


ВОТ РЕШЕНИЕ ЗАДАЧИ
 
Останнє редагування:
  • Like
Reactions: Krynecky

DeTLeR

New member
17.12.06
2 777
2 igi_sev:
Исходников CSS нет в природе. Только у валв. Помоему дамаг смотртся в папке cfg/skill.cfg
 

igi_sev

I have returned
20.04.09
819
39
  • Золотая медаль 232
DeTLeR сказав(ла):
Исходников CSS нет в природе. Только у валв. Помоему дамаг смотртся в папке cfg/skill.cfg
По идее исходники должны быть. Как тогда пишутся моды под CS:S?
Это не то разве?
http://store.steampowered.com/sub/219/

Вот чего точно нет в природе, дак это файла cfg/skill.cfg
Есть файл cfg/skill1.cfg и в нём у меня только это:
Оффтоп
 

igi_sev

I have returned
20.04.09
819
39
  • Золотая медаль 232
3y6acTuK сказав(ла):
Я так и знал что кто-нибудь самый умный это напишет =( (без обид)
Ты хоть проверял прежде чем говорить?

Я ж наверное не просто так тему создал и смог бы найти в списке
0 : "GENERIC"
1 : "CRUSH"
2 : "BULLET"
4 : "SLASH"
8 : "BURN"
16 : "FREEZE"
32 : "FALL"
64 : "BLAST"
128 : "CLUB"
256 : "SHOCK"
512 : "SONIC"
1024 : "ENERGYBEAM"
16384: "DROWN"
32768 : "PARALYSE"
65536 : "NERVEGAS"
131072 : "POISON"
262144 : "RADIATION"
524288 : "DROWNRECOVER"
1048576 : "CHEMICAL"
2097152 : "SLOWBURN"
4194304 : "SLOWFREEZE"

слово BULLET (2)... ппц... слов нет...

Все перечисленные выше типы не являются типами повреждений для пуль.
Я так же проверил все номера типов кратных 2 в степени до 80 и выше...
Либо у пуль нет damagetype, либо он выбран НЕ кратным двойке.

Оффтоп
 

igi_sev

I have returned
20.04.09
819
39
  • Золотая медаль 232
qpAHToMAS сказав(ла):
Зачем вам +1 тупой пост?
Я же написал в предыдущем сообщении, что перечисленные в нём типы не являются типами повреждений для пуль.
пля

Хватит угадывать... давайте уже думать (если не лень)
 

3y6acTuK

New member
17.03.07
1 055
1
0
  • Золотая медаль 231
igi_sev сказав(ла):
Все перечисленные выше типы не являются типами повреждений для пуль.
Я так же проверил все номера типов кратных 2 в степени до 80 и выше...
Либо у пуль нет damagetype, либо он выбран НЕ кратным двойке.[/OFF]
С этого и нужно было начинать. Для начала я бы предложил вам изучить движок HL2, ибо CS:S сделана на нём.

Оффтоп
 
Останнє редагування:

igi_sev

I have returned
20.04.09
819
39
  • Золотая медаль 232
Решение найдено, тема закрыта

Я думаю вы будете в шоке от того, каким способом я решил поставленую задачу :D

И так приступим...

Понадобились программы:
1. Art Money (любой версии) ... Сайт разработчика
2. Дебагер OllyDbg ... Сайт разработчика


Этапы:
1. Были созданы:
- Бочка prop_physics;
- объект-фильтр filter_damage_type (Name: damage_filter1);
2. Настройки бочки и фильтра - по умолчанию;
3. При помощи консольной команды:
ent_fire damage_filter1 addoutput "damagetype <новое_значение>"
я несколько раз изменял свойство "damagetype" у фильтра damage_filter1. При этом изменения отлавливал при помощи программы Art Money. таким образом была найдена область памяти, в которой храниться переменная "damagetype" для фильтра damage_filter1;
4. При помощи программы OllyDbg был установлен Breakpoint на ту область памяти, где храниться переменная "damagetype" для фильтра damage_filter1. Breakpoint был поставлен по запросу на чтение (Read) этой области памяти, поэтому в любой момент времени, когда программа обращалась к переменной "damagetype", игра CS:S останавливалась и управление передавалось отладчику OllyDbg. На этом этапе в игре начались страшные лаги, потому что шёл Software-контроль за состоянием процессора;
5. Находясь в игре, оставалось нанести бочке какой-нибудь урон и проследить за состоянием регистров процессора.

Изначально стояла задача выяснить "damagetype" для пуль. Но так как был придуман такой уникальный и безошибочный способ, то я выснил не только "damagetype" для пуль, но и ещё для некоторых других типов повреждений.

Результаты тестов:
- Пули от любого оружия (damagetype=4098) - НЕ кратно 2, как и ожидалось :)
- Повреждения от попадания гранатой HE, Smoke или Flesh (damagetype=128) - в фильтре filter_damage_type это CLUB;
- Урон лазерным лучом объекта env_laser (damagetype=67108864) - кратно 2.


Ну как? :D

Тема закрыта, спасибо 3y6acTuK'у, что попытался помочь.
 
Останнє редагування:

Game Server

Доноры Красавчики

Користувачі онлайн