dv_car_insurance — KFZ-Versicherung
========================================
Wer ein Fahrzeug besitzt, schließt eine Versicherung ab und zahlt dafür regelmäßig
einen Beitrag. Wer nicht zahlt, verliert nach einer Karenzzeit die Zulassung: das
Fahrzeug wird stillgelegt und muss am Abschlepphof freigekauft werden. Die Polizei
fragt jedes Kennzeichen ab, ein Makler schließt Verträge für seine Kundschaft ab.
Ein laufender Kostenfaktor, der nicht nach zwei Wochen vergessen wird.
▸ Läuft überall, ohne Bastelei
ESX, QBCore, QBox und standalone. Erkannt zur Laufzeit; im Script steht kein
Framework beim Namen. Es braucht nur dv_core und oxmysql — kein ox_lib, kein
ox_target.
Ordner rein, ensure dv_car_insurance, Koordinaten setzen, fertig. Kein SQL
einspielen. Beide Tabellen legt das Script beim ersten Start selbst an.
▸ Passt zu dv_garage — und zu jeder anderen Garage
Ein stillgelegtes Fahrzeug verschwindet aus jeder Liste jeder Garage: aus der
Garage, aus dem Weltparken, aus dem Abschlepphof. Läuft dv_garage, wird ihm die
Parkzeile zusätzlich abgemeldet — sonst stellt das Weltparken ein Fahrzeug, das
gerade draußen stand, beim nächsten Durchgang wieder hin.
• Für dv_garage ist NICHTS einzutragen. Es passt von selbst
• Eigene Garage? Eine Zeile: exports['dv_car_insurance']:IsBlocked(plate)
• Dazu IsInsured und GetStatus — beantwortet aus dem Speicher, ohne Wartezeit
• Und eine Fahrsperre im Client, die ganz ohne fremde Ressource greift
Wo das Fahrzeug vor der Sperre stand, wird gemerkt und beim Freikauf
zurückgesetzt — was in der Garage stand, kommt in die Garage zurück.
▸ Drei Stufen, frei einstellbar
Haftpflicht, Teilkasko, Vollkasko sind Vorgabe, keine Vorschrift. Name, Preis,
Farbe, Zeichen, Beschreibung und Leistungen stehen in der config.lua; Stufen
dürfen wegfallen und dazukommen.
▸ Beiträge, die wirklich laufen
Abgebucht wird beim Einloggen und im laufenden Betrieb, über dv_core — dein
Geldsystem gilt automatisch mit, auch ein eigenes.
• Reicht das Geld nicht, wird gemahnt statt sofort gesperrt
• Erst nach der Karenzzeit wird stillgelegt — das trifft auch Offline-Halter
• Der Zahltag bleibt stehen und wandert nicht mit jedem Login nach hinten
• Prämien wandern auf Wunsch in die Fraktionskasse des Maklers
Bewusst KEINE Abbuchung bei abgemeldeten Spielern: das ginge nur mit einem
Roh-Zugriff auf das Kontenschema des Frameworks und wäre auf jedem zweiten Server
falsch. Wer nicht zahlt, verliert den Vertrag trotzdem.
▸ Vier Oberflächen in einer Karte
• Kunde — Vertrag abschließen in drei Schritten, eigene Verträge, kündigen
• Makler — Kennzeichen suchen, für den Halter abschließen, kündigen
• Polizei — versichert / überfällig / stillgelegt / nie versichert, auf einen
Blick, mit Halter, Fahrzeug, Laufzeit und den letzten Vorgängen
• Abschlepphof — offener Beitrag plus Strafgebühr, dann läuft der Vertrag weiter
Makler und Kunde teilen sich denselben NPC: wer den Job hat, bekommt das andere
Fenster. Kein Hinweis, der einem einen Befehl vorbuchstabiert.
▸ Oberfläche
• Modernes dunkles Design, 6 Farbpaletten per Config umschaltbar
• Kein jQuery, keine Google Fonts, keine Fremdrequests — 14 Inline-SVG statt
Bilddateien
• Feste Breite, wachsende Höhe, skaliert sich auf kleine Bildschirme
• Deutsch und Englisch dabei, jeder Text in einer Sprachdatei — im Markup steht
kein einziges Wort
▸ Sicher gebaut
• Kein offenes Netzevent. Jede Anfrage läuft über einen Router mit Prüfung
• Job und Dienstgrad prüft der Server, bei jeder einzelnen Anfrage
• Über die Leitung geht nur das Kennzeichen — wem es gehört, schlägt der Server
selbst nach. Der Identifier des Halters verlässt den Server nie
• Der Client schickt nie Preis oder Laufzeit. Das entscheidet der Server
• Bremse gegen das Durchprobieren von Kennzeichen
▸ Für Admins
• Sechs Testbefehle: Auskunft, fällig stellen, überfällig stellen, sperren,
freigeben, Beitragslauf sofort — hinter einem Schalter und einer Gruppenprüfung
• Discord-Protokoll für Abschluss, Abbuchung, Stilllegung, Freikauf und Kündigung
• Optionales Item, das die Kundenoberfläche öffnet
• Verlauf je Fahrzeug in einer eigenen Tabelle
• An deine Fahrzeugtabelle wird nichts angehängt. Sie wird gelesen, mehr nicht
▸ Umstieg vom Vorgänger
Nichts zu tun. Bestehende Versicherungen werden beim ersten Start übernommen; die
alten Spalten bleiben unangetastet stehen. Kein DROP, kein Datenverlust.
▸ Offen anpassbar
config.lua, beide Sprachdateien und das SQL bleiben escrow-frei — Stufen, Preise,
Fristen, Farben, Orte und jeder Text sind deins.
Ausführlich kommentierte Config, README mit Fehlersuche, Support über unseren
Discord.