Ех, из-за неверующих в метрики зуб так и не выложит походу открытые детальные метрики
Столько бы контента можно было бы подсчитать, создать новые споры и обсуждения(
@zubzalinaza , если все таки решитесь показать метрики, то возможен ли будет вариант такого детального представления как в коде ниже? Итоговые метрики показывались бы в виде массива KillInfo
KillInfo {
victim: Victim; // жертва
killers: Killer[]; // участник/участники килла
hits_info: HitInfo[]; // массив попаданий (инфа о них)
location: LocationInfo; // название локации
death_time: Integer; // дата смерти жертвы (Unix ms)
death_cause: String; // причина смерти (кроме пули чел может умереть еще и, например, от заражений)
}
//
Victim extends Player {}
Killer extends Player {
last_hit: Boolean; // дал ли участник килла ластхит
hits_indexes: Integer[]; // массив индексов массива hits_info в KillInfo, эти индексы означают в каких конкретно попаданиях участвовал данный игрок
}
//
Player {
armor: Armor; // броня игрока
container: Container; // контейнер
hp_when_fight_start: Float; // процент оставшегося хп, которое было у игрока на начало файта
used_boosters: Booster[]; // заюзанные бусты на момент старта файта
}
Armor {
name: String; // название брони
level: Integer; // уровень заточки (0-15)
durability: Float; // прочность брони (меньше 25% уже начинают снижаться хар-ки брони)
}
Container {
name: String // название контейнера/рюкзака
artefacts: Artefact[]; // артефакты контейнера
}
Artefact {
name: String; // название артефакта
quality: Float; // качество артефакта
rare: ArtefactRareType // редкость артефакта
level: Integer; // уровень заточки (0-15)
additional_properties: String[]; // названия выбитых доп. стат артов (которые на 5-10-15 лвл`ах выпадают)
}
ArtefactRareType = ('Обычный' | 'Необычный' | 'Особый' | 'Редкий' | 'Исключительный' | 'Легендарный' | 'Уникальный') as String;
Booster {
name: String; // название буста (морфин, барвинок и прочие...)
remaining_time: Float; // оставшиеся время (Unix ms)
}
//
HitInfo {
damage: Float; // нанесенный урон
plastine_eaten_damage: Float; // сколько урона сьела пластина
used_weapon: Weapon;
hit_in: BodyPartType; // в какую часть тела попали
hit_time: Integer; // время попадания (Unix ms)
hit_when_knockdown: Boolean; // было ли попадание сделано по нокнотому игроку
bleeding_added: Boolean; // показывает, добавился ли кровотек от попадания
fire_added: Boolean; // показывает, добавился ли поджог от попадания
}
BodyPartType = ('Голова' | 'Тело' | 'Конечность') as String;
Weapon {
name: String; // название оружия/ножа/гранаты...
level: Integer; // уровень заточки (0-15)
attachments: Attachment[]; // модули оружия
pierce: Float; // бронебойность оружия (от оружия + калибра)
stopping_power: Float; // останова оружия (от оружия + калибра)
bleeding_chance: Float; // шанс кровотека от оружия (от оружия + калибра)
fire_chance: Float; // шанс на горение от оружия (от оружия + калибра)
}
Attachment {
name: String; // название оружейного модуля
}
//
LocationInfo {
name: String; // название локации
assignment_level: Integer; // уровень распределения (1-9)
}