
Flame Evidence
Opis
PL
Zaczęło się od tego, że na moim serwerze policja po strzelaninie nie miała absolutnie nic do roboty. Przyjeżdżali, patrzyli na trupa, wypisywali mandat i tyle. Żadnego śledztwa, żadnej roboty detektywistycznej. Chciałem to zmienić.
Flame Evidence to system dowodów, który faktycznie zmusza obie strony do myślenia.
Co się dzieje na miejscu zdarzenia
Strzelasz, na ziemi lądują łuski. Każda pamięta, z czego padł strzał, jaki był kaliber i o której dokładnie to się stało. Nie o której ktoś ją podniósł, tylko kiedy padł strzał. To ważne, bo dzięki temu raport faktycznie coś znaczy.
Od razu uprzedzam pytanie o wydajność, bo sam się nad tym najdłużej głowiłem. Nie każdy pocisk zostawia propa. Gdyby zostawiał, przy dłuższej wymianie ognia miałbyś na ziemi dwieście obiektów i resmon w kosmosie. Zrobiłem to tak, że pierwszy strzał w serii zostawia łuskę zawsze, bo to on niesie wartość dowodową, a przy dłuższym ostrzale szansa spada. Ze strzelaniny na 120 pocisków zostaje jakieś 19 łusek zamiast 120. Krzywą spadku ustawiasz sam w configu, razem z limitem na to, ile łusek może w ogóle istnieć naraz.
Krew działa podobnie. Ktoś obrywa, zostaje plama, a w niej imię, nazwisko, płeć i praca razem z rangą. Widać więc "LSPD - Officer", a nie samo "police". Płeć czytam z modelu postaci, więc się zgadza.
Odciski palców zostawiasz w aucie, jeśli wsiadasz bez rękawiczek. Zobaczy je tylko policjant i tylko z latarką w trybie UV. To jedyny sposób.
Przestępca nie jest bezradny
To mi było ważne. Woda utleniona usuwa krew, alkohol izopropylowy zaciera odciski w aucie. Zużywa się przy tym jedna sztuka. Deszcz na zewnątrz i tak zmyje ślady sam, ale w interiorze już nie. Więc jeśli masz czas, możesz posprzątać po sobie. Jeśli policja jest szybsza, masz problem.
Laboratorium
Zebrane próbki niesiesz pod mikroskop. Tam odpalasz minigrę i segregujesz próbki do właściwych kategorii, z zegarem nad głową. Wygrasz, dostaniesz wynik szybciej. Przegrasz, poczekasz dłużej. Wrzuciłem tam celowe zmyłki, gdzie nazwa albo ikona sugeruje coś innego niż prawidłowa kategoria, żeby nie dało się tego klikać z pamięci mięśniowej.
Nie chcesz minigry? Wyłączasz ją jedną linijką i zostaje zwykły timer.
Raporty i ekran
Gotowy raport ląduje w archiwum. Możesz go wziąć jako dokument do ekwipunku, zniszczyć albo wrzucić na ekran wiszący w komisariacie.
I tu jest rzecz, z której jestem najbardziej zadowolony. Ten ekran renderuje raport w świecie gry, więc czyta go każdy, kto stoi obok. Nie tylko ten, kto kliknął. Możesz zwołać ekipę pod ekran i wspólnie przejść przez dowody. Strony przewijasz kółkiem myszy. Kto dojdzie później, od razu widzi to, co aktualnie leci.
Rzeczy techniczne
Działa na ESX i QBCore. Wykrywa sam, ale możesz wymusić w configu. Tak samo z ox_target i qb-target.
Skrypt jest po polsku i po angielsku. Jedna linia w configu przełącza dosłownie wszystko: powiadomienia, interakcje, raporty, archiwum, minigrę, nazwy broni, nawet logi w konsoli. Raporty trzymam w bazie w formie neutralnej językowo, więc jak zmienisz język, to stare raporty też się przetłumaczą. Nie zostaną zamrożone w poprzednim.
Config jest rozpisany i opisany. Czasy, przedmioty, współrzędne, mechaniki, wszystko do ustawienia.
Wymagania: oxmysql, ox_inventory, ox_target lub qb-target, ESX lub QBCore.
W paczce: kod, plik SQL, definicje przedmiotów w obu językach, komplet ikon do wszystkich ośmiu itemów, README po polsku i angielsku.
EN
This started because police on my server had literally nothing to do after a shooting. They'd roll up, look at the body, write a ticket, done. No investigation, no detective work at all. I wanted to fix that.
Flame Evidence is an evidence system that actually makes both sides think.
What happens at the scene
You fire a gun, casings hit the ground. Each one remembers the weapon, the caliber and the exact moment the shot was fired. Not when someone picked it up, but when the trigger was pulled. That matters, because it's what makes the report mean something.
Let me get ahead of the performance question, since it's the part I spent the longest on. Not every bullet drops a prop. If it did, a decent firefight would leave two hundred objects on the ground and your resmon would go through the roof. So the first shot of a burst always leaves a casing, because that's the one with forensic value, and the chance drops off after that. A 120 round firefight leaves you around 19 casings instead of 120. You control the falloff curve in the config, plus a hard cap on how many can exist at once.
Blood works the same way. Someone takes damage, a stain stays behind, and it carries the name, gender and occupation with rank included. So you see "LSPD - Officer", not just "police". Gender is read from the actual ped model, so it's never wrong.
Fingerprints get left in a car if you get in without gloves. Only police can find them, and only with the flashlight switched to UV. That's the only way.
Criminals aren't helpless
This one mattered to me. Hydrogen peroxide cleans up blood, isopropyl alcohol wipes prints from a vehicle. One unit gets used up. Rain will wash outdoor traces away on its own anyway, but interiors stay protected. So if you have time, you can clean up after yourself. If the cops are faster, you're in trouble.
The lab
You take your samples to the microscope. That fires up a minigame where you sort them into the right categories with a clock ticking. Win, and the results come back faster. Lose, and you wait. I threw in deliberate decoys where the label or icon points at the wrong category, so you can't just click through it from muscle memory.
Don't want the minigame? One line in the config and it's a plain timer instead.
Reports and the screen
The finished report goes to the archive. You can take it as a physical document, destroy it, or throw it up on the screen hanging in the station.
This is the part I'm happiest with. That screen renders the report in the world, so anyone standing nearby can read it. Not just whoever clicked. You can gather the squad around it and walk through the evidence together. Scroll pages with the mouse wheel. Someone who shows up late sees whatever is on screen right now.
The technical side
Runs on ESX and QBCore. It detects which one on its own, but you can force it in the config. Same deal with ox_target and qb-target.
The script ships in English and Polish. One config line switches literally everything: notifications, interactions, reports, the archive, the minigame, weapon names, even the console logs. Reports are stored language neutral in the database, so if you switch languages, your old reports get translated too. They don't stay frozen in whatever language they were made in.
The config is laid out and commented. Timers, items, coordinates, mechanics, all yours to set.
Requirements: oxmysql, ox_inventory, ox_target or qb-target, ESX or QBCore.
In the package: source, SQL file, item definitions in both languages, a full icon set for all eight items, README in both languages.
Flame Script's
