• Voornaam:   
  • Familienaam:   

Genealogisch en Historisch Overzicht

De Stamboom van de familie Boersma

Add Person Age Row

Tijdens de upgrade naar een volgend release moet vooraf een uninstall doorgevoerd worden van alle mods. Zo staat dat in de installatie instructies. De uninstall doe je met de Mod Manager. Na de upgrade krijg je, al weer met de Mod Manager, de status te zien van de mods. De Mod Manager geeft dan aan of de mods wel of niet geïnstalleerd kunnen worden.

Zo ook tijdens de upgrade naar versie 14.0 van TNG. Na de upgrade krijgt de mod Add Person Age Row, versie 10.0.0.0, van de Mod Manager de indicatie : “Kan niet installeren”. Dat is jammer. De leeftijd bij overlijden is straks niet meer te zien in de events. Het blijft jammer.

Zou er iets aan te doen zijn? Eerst maar eens op zoek naar een nieuwere versie. TNG-Wiki geraadpleegd en dan wordt het al snel duidelijk dat er geen versie voor 14.0 is. Bij 12.0 houdt kennelijk de ondersteuning op, hoewel die versie ook op TNG 13 nog goed werkte. Maar bij TNG 14 is het afgelopen en dan is er blijkbaar ook geen ondersteuning meer.

In de Mod Manager is voor elke mod een regel gereserveerd met op het eind een ‘plus’-teken. Als je daar op klikt krijg je bij de Add Person Age Row het volgende plaatje te zien:

En dat levert ons interessante informatie. Blijkbaar is het de bedoeling dat de Mod Manager in twee bestanden een wijziging aanbrengt. Dat zijn dan globallib.php en getperson.phhp, die beide deel uitmaken van TNG. Beide bestanden staan ook in de upgrade naar versie 14.0. Die worden dus tijdens de upgrade overschreven. Is dat soms een deel van het probleem?

De volgende vragen ontstaan bijna automatisch. Want hoe weet de Mod Manager welke bestanden gewijzigd moeten worden, hoe zien die wijzigingen eruit en waar in het bestand moeten die aangebracht worden? Ongetwijfeld is het antwoord op die vragen te vinden in de mod. Dat zijn bestandjes die in de map mods van TNG staan en die de extensie .cfg hebben. Op die map houdt de Mod Manager toezicht en dat gebeurt continu. Elke verandering in die map is voor de Mod Manager een reden om actie te ondernemen. Eén van die acties kan de inhoudelijke controle zijn van bestanden met de extensie .cfg en dat kan weer resulteren in de de melding: “Kan niet installeren”. Dat is dan nu duidelijk.

Dan wordt het tijd om maar eens naar de inhoud van het bestand add_person_age_row_v10.0.0.0.cfg te kijken. Die openen we met een text editor en we krijgen dit te zien:

This is a TNG mod directive file
%name:Add Person Age Row%
%version:V10.0.0.0%
%description:This mod adds the age of an individual to the event column.%

%target:globallib.php%

    Location 1

%location:%
    $years .= " $displaybirth - $displaydeath";
%end:%

%insert:after%
    global $age;
%end:%

%target:getperson.php%

%location:%
    setEvent( array( "text"=>$text['died'], "fact"=>$stdex['DEAT'], "date"=>$row['deathdate'], "place"=>$row['deathplace'], "event"=>"DEAT", "entity"=>$personID, "type"=>"I" ), $row['deathdatetr'] );
%end:%
%insert:after%
    setEvent( array( "text"=>$text['age'], "fact"=>$age), $nodate);
%end:%

Twee regels in het bestand vallen ons gelijk op. Het zijn de regels met een target, namenlijk:
%target:globallib.php%
%target:getperson.php%

In die regels staan de namen van de bestanden die de Mod Manager noemde omdat die gewijzigd moest worden.

Vervolgens vallen ons de regels op, die beginnen met:
%location:%
We laten onze fantasie maar eens werken en we vermoeden dat we een zoekopdracht zien, die door de Mod Manager uitgevoerd moet worden. Die moet in het target-bestand een regel vinden en bij een positief resultaat na de gevonden regel een nieuwe regel invoegen.

Eens kijken of die veronderstelling wel klopt. We openen het bestand globallib.php in de text editor en we gaan op zoek naar de tekst $years .= " $displaybirth - $displaydeath"; en dat levert een positief resultaat op. Het is namenlijk de volledige inhoud van regel 874. Wanneer de Mod Manager deze zoekopdracht uitvoert kan die vervolgens na regel 874 een nieuwe regel invoegen en daarin de tekst global $age; plaatsen. Deze opdracht uit het bestand globallib.php kan de Mod Manager succesvol uitvoeren.

Vervolgens onderzoeken we op dezelfde wijze de volgende opdracht, het is die waarin de Mod Manager het bestand getperson.php moet aanpassen. De text editor moet een zoekopdracht uitvoeren met deze string:

setEvent( array( "text"=>$text['died'], "fact"=>$stdex['DEAT'], "date"=>$row['deathdate'], "place"=>$row['deathplace'], "event"=>"DEAT", "entity"=>$personID, "type"=>"I" ), $row['deathdatetr'] );

Helaas levert deze zoekopdracht een negatief resultaat op, de regel wordt niet gevonden. Vermoedelijk is die door de upgrade naar TNG 14 vervallen of gewijzigd. Dat gaan we onderzoeken door niet meer het volledige zoekargument te gebruiken maar een deel daarvan. Daarmee vinden we regel 240 met deze inhoud:

setEvent( array( "text"=>$text['death'], "fact"=>$stdex['DEAT'], "date"=>$row['deathdate'], "place"=>$row['deathplace'], "event"=>"DEAT", "entity"=>$personID, "type"=>"I" ), $row['deathdatetr'] );

Dat lijkt sprekend op de regel uit de mod. Er zijn minieme wijzigingen in aangebracht. We besluiten dat dit de regel is waarnaar de Mod Manager moet zoeken en we concluderen dat de Mod Manager terecht besloot om aan te geven dat de mod niet geïnstalleerd kan worden.

We zullen de mod inhoudelijk wijzigen en aan het oordeel van de Mod Manager onderwerpen. Na onze wijzigingen ziet de inhoud van de mod er zo uit:

This is a TNG mod directive file
%name:Add Person Age Row%
%version:version:V14.0.0.2
%description:This mod adds the age of an individual to the event column.%

%target:globallib.php%

    Location 1

%location:%
    $years .= " $displaybirth - $displaydeath";
%end:%

%insert:after%
    global $age;
%end:%

%target:getperson.php%

%location:%
    setEvent( array( "text"=>$text['death'], "fact"=>$stdex['DEAT'], "date"=>$row['deathdate'], "place"=>$row['deathplace'], "event"=>"DEAT", "entity"=>$personID, "type"=>"I" ), $row['deathdatetr'] );
%end:%
%insert:after%
    setEvent( array( "text"=>$text['age'], "fact"=>$age), $nodate);
%end:%

De aldus gewijzigde mod slaan we op in de map mods van TNG met de naam add_person_age_row_v14.0.0.2.cfg. Nieuwsgierig openen we de Mod Manager en we krijgen dit te zien:

We installeren de mod en we nemen de proef op de som met het volgende resultaat:

De regel met de leeftijd bij overlijden is terug in versie 14.0 van TNG. We sluiten deze oefening succesvol af.