TFU Workshop & Trade 1.0.5.4

WIJZIGING 1.0.5.4
- Verkoop aanmaken en nieuwe werkplaatsaanvragen tonen alleen voertuigen
  met native eigendomsstatus OWNED van de eigen farm. MISSION-contractmachines,
  huurvoertuigen en tijdelijke objecten worden niet als eigendom aangeboden.
- De server dwingt OWNED ook af bij verkoopadvertenties, dealerherstel,
  de drie offerteaanvraagroutes en de oudere reparatieaanvraag. Een verouderde
  of aangepaste client kan deze controle niet via een netwerkbericht omzeilen.
  Afgewezen aanvragen schrijven geen geld af en maken geen opdracht aan.
- De opslagindeling, bestaande opdrachten, betaalde aanvragen, marktgegevens,
  NPC/AI-afhandeling en RMS-code blijven behouden. Geen extra scans per frame.
- Dit verhelpt de te ruime voertuigselectie. Het verwijdert geen achtergebleven
  contractmachines en is geen bewezen oplossing voor de gemiste native despawn.
- Stop de sessie/server en vervang de ZIP op host/server en alle clients.
  Gebruik overal versie 1.0.5.4. Laat de bestaande savebestanden staan.
  Houd de losse FS25_SecondHand.zip uitgeschakeld; die zit al in deze mod.
- Offline gecontroleerd: eigendomscontroles, selecties, bestaande verkoop,
  offertebetalingen en save/herladen. Nog in-game te bevestigen: een geleende
  contractmachine ontbreekt bij verkoop/reparatie en een eigen machine blijft.

EERDERE WIJZIGINGEN

Modbestand: FS25_WorkshopContracts.zip

WIJZIGING 1.0.5.3
- De NPC-terugrit wordt met de geregistreerde numerieke GIANTS-jobtype-index
  aangemaakt. De fout 'WCEmergency.lua:212 ... homeX' en het steeds opnieuw
  afbreken van de mod-update zijn hiermee in de bron hersteld.
- De registratie wordt gecontroleerd. Als geen job kan worden aangemaakt,
  volgt een eenmalige melding en wordt de tijdelijke wagen via de bestaande
  opruiming verwijderd. Een mislukte start wordt niet iedere update herhaald.
- Ook de opkoper maakt zijn rijtaak nu via de native manager aan. Daarmee
  krijgt die taak de type-index die native taakweergave en synchronisatie
  verwachten. Het opkoperbod en de bestaande verkoopafhandeling blijven.
- De gewone native AI-taakregistratie, startfuncties en helperlimiet blijven
  intact. Contract- en verkoopblokkades blijven voertuiggebonden. De NPC
  gebruikt tijdens het rijden wel een normale native AI-plaats.
- Saves, betaalde aanvragen, werkresultaten, de doorlopende terugrit,
  optimalisaties en het enkele opkoperbod van native waarde +2% blijven.
- Vervang 1.0.5.1/1.0.5.2 door deze ZIP op host/server en alle clients,
  met de sessie/server gestopt. Verwijder geen savebestanden. De bestaande
  herstartafhandeling blijft gelden: een opgeslagen afgeronde terugrit wordt
  niet opnieuw uitgevoerd of uitbetaald.
  Offline gecontroleerd met de echte GIANTS-jobmanager; nog in-game testen.

WIJZIGING 1.0.5.2
- De opkoper doet een enkel bod: accepteren of afwijzen. Afwijzen stopt de
  advertentie en laat het voertuig bij de verkoper; er volgt geen tegenbod.
- Het bod is de actuele native voertuigverkoopwaarde (getSellPrice) plus 2%,
  afgerond op hele euro's. Voorbeeld: 10.000 euro wordt 10.200 euro.
  De vraagprijs en historische aankoopprijs bepalen het opkoperbod niet.
- Teksten voor het bod en afwijzen zijn aangepast in alle acht bestaande talen.
- Oude open biedingen worden eenmalig omgezet naar de nieuwe berekening en
  een enkele keuze. Reeds aanvaarde bedragen van opgeslagen vertrekkende
  opkopers blijven bewaard. Daarna blijft een opgeslagen bod vaststaan.
  De bestaande savevelden en netwerkberichten blijven behouden; alleen de
  markt-schemaversie gaat naar 10 om deze eenmalige omzetting te herkennen.
- De terugritfix, optimalisaties, aanvragen, betalingen en overige verkoop
  blijven behouden. De winst in FPS is niet gemeten.
  Gebruik dezelfde ZIP op host/server en alle clients.

WIJZIGING 1.0.5.1
- De terugrit gebruikt een enkele native AI-opdracht. Het bereiken van de
  gecontroleerde uitrit verwijdert de bestuurder niet meer om een tweede
  AI-opdracht te starten. Dezelfde bestuurder blijft rijden tot de despawn.
- Vervolgpunten liggen op bereikbare native wegen richting de werkplaats,
  of op bereikbaar terrein wanneer geen bruikbare weg in de buurt ligt.
  Het gebouw zelf is niet langer het einddoel. Een vroeg bereikt vervolgpunt
  krijgt een nieuw doel binnen dezelfde opdracht, tot de minuut voorbij is.
- Echte native routefouten worden met reden en doel gelogd. De tijdelijke
  wagen wordt dan veilig verwijderd; er blijft geen lege wagen wachten.
- Bestaande saves, betaalde aanvragen en optimalisaties blijven behouden.
  Installeer dezelfde ZIP op de lokale host/dedicated server en alle clients.
  Niet in-game getest: controleer een terugrit zonder de tractor te verplaatsen.

WIJZIGING 1.0.5.0
- Bewegende ophaal-/locatieopdrachten sturen compacte positie-updates in plaats
  van telkens rapporten, historie, dealervoorraad en GUI opnieuw te verwerken.
  Volledige synchronisatie blijft behouden voor offertes, rollen en status.
- De mobiele startknop controleert eerst servicewagens binnen interactieafstand
  en verwerkt de bezetting eenmalig. De server blijft elke start controleren.
- Bij ontbrekende NPC-beschikbaarheid wordt maximaal eenmaal per seconde per
  mechanicfarm gezocht. De 60-secondenwachttijd, werkduur en terugrit behouden
  hun bestaande timing en veiligheidscontroles.
- Savevelden, gereserveerde betalingen, offertes en prijzen blijven behouden.
  De native voertuig-/AI-animaties blijven op de bestaande updates draaien.
  Installeer deze ZIP op host/server EN alle clients wegens het nieuwe positie-event.

WIJZIGING 1.0.4.9
- De NPC-monteur wordt na 1 echte minuut opgeroepen in plaats van 2 minuten.
  Een oude betaalde wachtende aanvraag houdt haar reservering en maximaal
  1 minuut resterende wachttijd; kortere resterende tijden worden niet verlengd.
- Online leden van de toegewezen mechanicfarm krijgen een native schermmelding
  bij een nieuwe aanvraag en wanneer de klant de offerte accepteert. De melding
  noemt voertuig en opdrachtnummer. Herhaalde snapshots melden dit niet opnieuw.
- Op locatie blijft NPC-hulp beschikbaar als de mechanicfarm offline is.
  Zelf naar de werkplaats brengen start na offerteakkoord automatisch;
  ophalen vraagt nog steeds een mechanic-speler voor vervoer en handmatig starten.
- De meldingen en minuut-uitleg zijn aangepast in alle 8 bestaande talen.
  Savevelden, prijzen, betalingen, voertuigen en netwerkformaat zijn behouden.

WIJZIGING 1.0.4.8
De servicewagen verschijnt op minimaal 8,5 meter zijafstand waar de werkafstand
van 10 meter dit toelaat. De mod controleert de parkeerplek EN een uitrijstrook
van 15 meter, inclusief voertuiglengte en extra zijruimte. De wagen staat met
zijn neus van de tractor af. Het eerste native AI-doel ligt recht vooruit in
de gecontroleerde strook; pas daarna wordt naar de werkplaats gereden.
Is er geen geschikte plek of vrije uitrit, dan wacht de bestaande aanvraag en
probeert de mod opnieuw. De melding noemt nu ook de benodigde uitrijstrook.
Bestaande aanvragen, reserveringen, loopfase en betalingen blijven behouden.
Deze controle kiest vrije ruimte bij het spawnen; plaats daarna geen nieuwe
voertuigen of voorwerpen in die uitrijstrook.

WIJZIGING 1.0.4.7
Na afronding loopt de monteur naar de bestuurdersdeur van de tijdelijke
servicewagen. Daarna neemt de native bestuurder in dezelfde mechanic-outfit
plaats. De native AI krijgt eerst een nabij vertrekpunt richting de werkplaats
en daarna de werkplaats als doel. De minuut tot despawnen gaat pas in zodra
werkelijke snelheid is gemeten. Routeplanning verbruikt die minuut niet.
Als de native AI twee minuten helemaal niet kan vertrekken, wordt dit gelogd
en wordt alleen de tijdelijke servicewagen opgeruimd. Er wordt niet geteleporteerd.
De loopfase is gesynchroniseerd voor host en clients, ook voor omstanders.
Betaalde contracten, prijzen, uitvoering en bestaande saves blijven behouden.
Een herstart tijdens instappen/terugrijden herhaalt geen afgerond werk of betaling.

WIJZIGING 1.0.4.6
- Ophaling vereist een afgekoppeld voertuig: alle werktuigen, aanhangers en
  frontgewichten moeten los. De aanvraag en het offerteakkoord worden anders
  met een duidelijke melding geweigerd, zonder geld af te schrijven. Na later
  opnieuw aankoppelen blijft transporttoegang geblokkeerd tot alles weer los is.
- Werken op locatie met een menselijke mechanic staat aangekoppelde onderdelen
  toe, net als NPC-noodhulp. De bestaande afstands- en bezetcontroles blijven.
- Tijdelijke NPC-servicewagens krijgen de mechanicfarm als eigenaar. Eigenaar
  'iedereen' wordt door de native AI geweigerd en veroorzaakte admincontrole.
  De wagen blijft tijdelijk, beschermd en uitgesloten van vehicles.xml.
- Bij een mislukte NPC-spawn zonder begonnen werkzaamheden kan een admin onder
  ADMIN > Opdrachten beheren de aanvraag selecteren en NPC OPNIEUW STUREN kiezen.
  De bestaande reservering en werktijd blijven behouden; geen tweede betaling.
  VRIJGEVEN EN TERUGBETALEN annuleert de opdracht en betaalt de reservering terug.
- Verzoek verwijderen verbergt jouw gesloten verzoek ook in Opdrachten beheren.
  De historie en betalingsgegevens blijven in de save bewaard.
- Nieuwe meldingen en knoppen zijn aanwezig in alle 8 bestaande talen.

WIJZIGING 1.0.4.5
NPC-noodhulp wordt niet meer tegengehouden doordat het klantvoertuig een
frontgewicht of werktuig aangekoppeld heeft. De bestaande controle op vrije
spawnruimte blijft ook rekening houden met de aanwezige voertuigen/werktuigen.
Bezette voertuigen en andere lopende behandelingen blijven beschermd.
De bestaande saves, reserveringen en wacht-/werktijden blijven behouden.
Een al betaalde aanvraag wordt na herladen hervat zonder opnieuw te betalen.
Laat de aanvraag staan en verwijder geen savebestanden.
De offerteweergave van 1.0.4.4 is inbegrepen.

WIJZIGING 1.0.4.4
In de rechter actiekolom staan bij een ontvangen offerte alleen het totaalbedrag
en de totale uitvoeringstijd extra groot boven de offerteknoppen. Bij spoed is
dit de gehalveerde uitvoeringstijd, niet het gefactureerde aantal arbeidsuren.
De bestaande middenkolom, rapporten, knoppen, bedragen, timers en saves blijven
ongewijzigd. In de oude mechanic-offerte-editor blijven de bestaande velden staan.

INSTALLEREN
1. Sluit de lokale sessie of stop de dedicated server en maak een gewone
   back-up van de save. Vervang alleen FS25_WorkshopContracts.zip.
2. Gebruik exact dezelfde ZIP op server en alle clients. FS25_SecondHand.zip
   blijft uitgeschakeld: die werking zit al in dit pakket.
3. Laat workshopContracts.xml, secondHandSettings.xml, secondHandState.xml,
   voertuigen en werkplaats-placeables staan. Oude contracten worden ingelezen;
   nieuwe velden worden in het bestaande workshopContracts.xml opgeslagen.
   Er worden geen extra savebestanden aangemaakt. Verwijder nu niets.

DRIE AANVRAAGOPTIES
Open HERSTELAANVRAAG / AANVRAAG MAKEN vanuit de dealership-pagina.
Kies het eigen voertuig, het mechanicbedrijf, het aanvraagtype en het werk.
OFFERTE BEREKENEN maakt een definitieve offerte aan. Bekijk deze bij
MIJN AANVRAGEN en aanvaard ze. Pas dan wordt de volledige prijs gereserveerd.
De server bepaalt de prijs; de klant kan geen bedragen of uren insturen.

1. ZELF NAAR DE WERKPLAATS
   Het voertuig moet voor de aanvraag in een geplaatste werkplek van het
   geselecteerde bedrijf staan. Anders volgt eerst de instructie erheen te gaan.
   Bij aanvaarden start het werk als voertuig en werkplek beschikbaar zijn.
2. LATEN OPHALEN
   De aanvraag/offerte kan op afstand. Ophalen kost 500 euro extra.
   Na aanvaarden mag de eigenaar offline. Alleen de toegewezen mechanicfarm
   krijgt vervoersrechten voor dit voertuig en de voertuigmarker op haar kaart.
   De mechanic haalt het voertuig op, brengt het in zijn werkplek en start
   daar handmatig. Aanvaarden start dus niet automatisch een reparatie op afstand.
3. DRINGENDE HULP OP LOCATIE
   Voorrijden 500 euro plus 50% toeslag over technische kosten en gewone arbeid,
   naar boven afgerond. Het volledige normale aantal arbeidsuren wordt berekend;
   de uitvoering duurt de helft van de normale in-game werktijd.
   Als een mechanic van het toegewezen bedrijf online is: gebruik een geschikt
   servicevoertuig van diezelfde farm. Parkeer het binnen 10 meter van het
   klantvoertuig, stap uit en ga binnen 5 meter naast het servicevoertuig staan.
   Gebruik de getoonde native interactietoets voor MOBIEL WERK STARTEN, of de
   startknop bij het contract. De server controleert rol, afstand en voertuig.
   Het servicevoertuig blijft stilstaand aanwezig tot het werk klaar is.
   Vertrekken pauzeert de resterende werktijd; terugkeren hervat het werk.

PRIJS EN BETALING
Het bestaande tarief blijft ceil(450 x economische kostenfactor) per in-game uur.
De offerte toont technische kosten, gewone uren/arbeid, vervoer/voorrijden,
spoedtoeslag, opbrengst voor de mechanic, totaal en uitvoeringstijd.
Technische kosten worden verbruikt; arbeid, uitgevoerd vervoer en toeslagen
worden aan de mechanicfarm betaald. RMS voert dezelfde betaalde behandeling uit
zonder een tweede native afschrijving. Inspectie en periodiek onderhoud als
zelfbediening blijven beschikbaar volgens de bestaande instellingen.
Oude betaalde contracten behouden hun oorspronkelijke prijs, expressduur,
vervoersreservering en RMS-voortgang.

NPC-NOODHULP BIJ OFFLINE MECHANIC
- Alleen bij dringende hulp, wanneer niemand van de toegewezen mechanicfarm
  online is. De klant krijgt na aanvaarden: de monteur is onderweg.
- Na 1 echte minuut verschijnt een tijdelijk servicevoertuig naast het
  klantvoertuig en verschijnt de werkende monteur. De voertuigen hoeven zelf
  geen ingebouwde werkplaats te hebben. De geaccepteerde behandeling wordt
  door Workshop & Trade uitgevoerd; de klant hoeft niet online te blijven.
- Er moet een geladen geschikt servicemodel zijn en een geplaatste werkplaats
  van het mechanicbedrijf voor de terugrit. Er wordt geen spelersvoertuig geleend.
- Bij een bezette of te steile spawnplek wacht de hulp en probeert opnieuw;
  bij een bezet klantvoertuig wacht het starten eveneens. Een frontgewicht of
  werktuig mag aangekoppeld blijven; er moet vrije ruimte naast het voertuig zijn.
- Komt de mechanic online voordat de NPC is verschenen, dan blijft de opdracht
  voor handmatig starten door die mechanic. Verschijnt de NPC al, dan maakt
  deze zijn werk af; er wordt geen tweede behandeling gestart.
- Na het werk start de native AI een terugrit richting de eigen werkplaats.
  Na 1 echte minuut wordt alleen het tijdelijke servicevoertuig verwijderd.
  Navigatie/obstakels op de kaart bepalen of de native terugrit kan rijden.
- Tijdelijke voertuigen zijn niet te betreden, kopen, verkopen of resetten en
  worden niet in vehicles.xml opgeslagen. De betaalde opdracht en resterende
  wacht-/werktijd worden wel bewaard; herladen veroorzaakt geen nieuwe betaling.
  Een terugrit hoeft na een herstart niet opnieuw te verschijnen.

GESCHIKTE GELADEN SERVICEMODELLEN
- FS25_RepairPickup/pickup2017.xml
- FS25_series200_service/series200.xml: ontwerp Service, optie 2
- FS25_FlatbedServiceTruck/flatbedServiceTruck.xml: niet de sneeuwschuif
- FS25_C15/L15.xml
Alleen de toegewezen mechanicfarm ziet/koopt deze modellen in de winkel.
Bestaande voertuigen blijven behouden. De exacte geladen modellen en ZIP-namen
staan bij de aanvraag en de bestaande mechanic-informatie in de showroom.
De automatische reparatie van RepairPickup kan geen actief contract of
mechanicplicht omzeilen en daarvoor alvast geld afschrijven.

GERICHT IN-GAME BEVESTIGEN
1. Werkplaatsroute buiten/binnen werkplek; daarna prijs accepteren en afrekening.
2. Ophalen met klant offline; marker, vervoersrechten en handmatig starten in bay.
3. Mobiele hulp met online mechanic: interactieprompt, wegrijden/pauze en terugkeer.
4. Met mechanic offline: bericht, 2 echte minuten wachten, monteur/servicevoertuig,
   reparatie, AI-terugrit en verdwijnen na 1 echte minuut. Houd de spawnplek vrij.
5. Opslaan/herladen tijdens wachten en tijdens werken; behoud uren en betaling.
Herhaal de relevante route met twee clients op de dedicated server. Offline
controles bewijzen de Lua-, data- en betalingswerking; de visuele NPC-spawn,
native AI-navigatie en multiplayer-enginewerking zijn nog niet live getest.

Geïnstalleerde mods, RMS-bestanden en bestaande saves zijn niet aangepast.
