[TUTORIAL] Event-BBS-News erstellen

Hier ist der ideale Ort um über Scripts und Mods für X³: Reunion zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

Post Reply
User avatar
Han Polo
Posts: 2
Joined: Thu, 24. Nov 05, 14:31
x3

[TUTORIAL] Event-BBS-News erstellen

Post by Han Polo » Fri, 9. Dec 05, 16:36

Dies ist der übersetzte erste Teil von Burianeks Tutorial zu Erstellung dynamischer News (das ICH bezieht sich also auf Burianek).

http://forum2.egosoft.com/viewtopic.php ... 38#1301438

Der zweite Teil wird demnächst von mega|Doc geliefert.

------------------- schnipp ----------------------------------------

Ich werde mal eine kurze Erklärung versuchen, wie man mit Hilfe der newsengine zufällige Nachrichten erstellt. Ich werde ca. eine Stunde lang schreiben und dann aufhören. Tut mir leid, dass ich das nicht in einem Stück schaffe. Ich hoffe, ihr werdet trotzdem den roten Faden nicht verlieren bei dem harten Stoff, den ich euch zu präsentieren habe.

Ich werde meine Skripte für zufällige Wirtschaftsereignisse als Beispiel benutzen.

Grundsätzlich macht die newsengine folgendes: sie stellt aus einer Reihe von Textsegmenten, die zusammen passen (gehören), einen Artikel für das "Schwarze Brett" (BBS) zusammen und zeigt ihn an.

Das ist der Teil des Skripts, der den Artikel zur Anzeige im BBS aufruft:
(keine Sorge, ich werde das alles noch ein wenig erklären)

Code: Select all

177   * define variables for news article
178    $news.array =  array alloc: size=2
179    $news.array[0] = $ware
180    $news.array[1] = $sector
181    $occurences = random value from 3 to 6 - 1
182   
183   * add bbs news articles to relevant stations
184    $key =  display news article: page=$text.page.id newsid=$news.id occurences=$occurences maxoffertime=null maxtime=null placeholder:race1=$race race2=null customarray=$news.array
185   
186    if $key
187      change event news availability: $key race=$race sector=null jumps=null 
Ok, dann wollen wir erst mal den Quelltext durchgehen.

Ihr könnt eurem BBS - Artikel Argumente übergeben, die als Teil des Textes angezeigt werden. Ihr übergebt die Variablen als ein Array beliebiger Größe. Sie werden dann im t - File referenziert. Ich benötigte zwei Variablen für meine News Ereignisse; die Ware, um die es geht und den Sektor, in dem das Ereignis auftritt. Also habe ich ein Array - genannt das news.array - mit zwei Elementen definiert und diese Variablen geladen. Beachtet, dass $ware und $sector vorher schon an anderer Stelle im Skript definiert wurden.

Occurences beschreibt, wie oft der Artikel maximal im BBS gelesen werden kann. Um ehrlich zu sein, ich bin mir da nicht ganz sicher.

Also, es gibt zwei Hauptschritte, um einen Artikel zu erstellen und ihn in den Raumstationen zu plazieren. Der erste Befehl, den ihr seht und der mit $key beginnt, kümmert sich um die Erstellung. Was diese Zeile grundsätzlich tut, ist das t - File aufzurufen und den Text zu inspizieren aus dem die Textteile ausgesucht werden. Dann stellt die newsengine den Text anhand eurer definierten Regeln zusammen, und erstellt den Artikel. Wir reden hier nicht von statischen Artikeln - die sind total einfach - ich zeige euch ein voll gepacktes Beispiel, wie man dynamische Artikel erstellt.

Ihr werdet bemerken, dass das erste Argument nach page.id (die nur die richtige Seite im t - File angibt) news.id ist. Ich werde mich weiterhin in diesem Tutorial darauf beziehen als news.id oder Ereignisnummer oder Ereignis. Es bedeutet einfach, dass wenn ihr verschiedene Typen von Artikeln im BBS definiert (Spieler gewinnt im Lotto, Spieler zerstört Raumstation, Spieler gewinnt Ansehen bei einer Rasse oder was immer ihr wollt), dann werden diese durch verschiedene Ereignisnummern repräsentiert, so dass ihr der newsengine sagen könnt, welche ihr aufrufen wollt, indem ihr die entsprechende Nummer angebt. Lasst uns erst das t- File definieren, bevor wir dazu kommen, was die anderen einzelnen Argumente in dieser Codezeile tun, ok?

Die nächste Zeile, die da lautet change event news, ist der Teil der das Spiel anweist den neu erstellten Artikel in das BBS der Raumstationen einzustellen.

Lasst uns jetzt einen Blick auf auf einen kleinen Teil des t - Files werfen.
(Ich habe den größten Teil ähnlicher Eintragstypen entfernt; ihr könnt das gesamte Teil irgendwo im t - File des Spiels bewundern.)

Code: Select all

- <page id="2200" title="good econ event news page" descr="Text für gute Neuigkeiten aus dem Bereich Wirtschaft">
  <t id="101">Argonen</t>
  <t id="102">Boronen</t>
  <t id="103">Split</t>
  <t id="104">Paraniden</t>
  <t id="105">Teladi</t>
  <t id="108">Piraten</t>
  <t id="151">Argonen</t>
  <t id="152">Boronen</t>
  <t id="153">Split</t>
  <t id="154">Paraniden</t>
  <t id="155">Teladi</t>
  <t id="158">Piraten</t>
  <t id="10000">[author]Galaxy Network - GalNet[/author]</t>
  <t id="10100">$AUTHOR$, Editor in Chief, GalNet Economic News</t>
  <t id="10101">$AUTHOR$, Assoc. Editor, GalNet Economic News</t>
  <t id="10200">Prüfen Sie regelmäßig die neuesten Wirtschaftsnachrichten im Sektor $SECTOR$ und den umliegenden Gebieten.</t>
  <t id="10300">Die umliegenden Sektoren berichteten einen deutlichen Verkehrsanstieg durch Schiffe, die zum Sektor $SECTOR$ durchkämpfen, um von den tollen Preisen zu profitieren.</t>
  <t id="10301">Die Ereignisse geben für viele Anlass zu glauben, das dies eine neue Ära des Handels zwischen $SECTOR$ und seinen Nachbarn ankündigt. Die, die etwas anderes annahmen, scheinen jetzt in einer verschwindenden Minderheit zu sein.</t>
  <t id="10302">Frachter kommen in einer ständig zunehmenden Anzahl in diesem Sektor an, laden 
alles, was sie tragen können und entschwinden mit noch unbekanntem Ziel. Die Preise der Nachbarsektoren scheinen wie eine Beleidigung angesichts der derzeitigen Preise in $SECTOR$.</t>
  <t id="10400">Das Glück dieses Sektors scheint kein Ende zu nehmen. Und während viele glauben mögen, dass die Gewinne de r Händler in diesem Sektor wohl kaum legal sein können, ist bisher nichts erwiesen als harte Arbeit und das Verbringen vieler Stazuras im Cockpit und in den Hangars.</t>
  <t id="10401">Wir haben zahllose Händler überall im Sektor gesehen, die geradezu entzückt sind  von den Ereignissen, die da über sie hereinbrechen. Obwohl uns viele zustimmen, dass diese Zeiten auch wieder enden werden, würde niemand darauf wetten, wann dieser Zeitpunkt eintritt.</t>
  <t id="10402">Die Sprungtore sind in ständiger Benutzung während der Sektor hart daran arbeitet, die Händler ab zu fertigen, die einen besseren Schnitt machen wollen mit den Geschäften, die jetzt sogar in immer mehr abseits liegenden Regionen bekannt werden..</t>
  <t id="10500">"Es ist unglaublich! Mir ist nicht bekannt, dass so etwas schon ein mal vorgekommen ist. Sicherlich können sich auch meine Schiffskameraden nicht an solch ein Ereignis in der jüngsten Vergangenheit erinnern," bestätigte $PERSON1$, der gerade die Station aufsuchte, während wir für diesen Bericht recherchierten.</t>
  <t id="10501">"Ich habe nicht gedacht, dass ich so etwas mal erleben werde. Ich erinnere mich, dass meine Eltern von solchen Zeiten sprachen, als ich noch sehr jung war. Es überrascht mich, dass wir jetzt mitten drin stecken," sagte $PERSON1$, ein Stationsmanager, der immer noch schockiert zu seien scheint über die Geschehnisse.</t>
  <t id="10502">"Wir haben so viele Arbeiter gesehen, die viel zu wenig geschlafen haben und dringen ausspannen müssten, dass wir aufgehört haben zu zählen. Der Stress dieser Situation beginnt sich gerade erst zu zeigen aber eins ist sicher: Der Gewinn war noch nie so gut. Wir verkaufen wie die kaputten!" sagte $PERSON1$, ein Stationsmanager, der sichtlich außer sich ist, angesichts solch unglaublicher Geschäfte.</t>
  <t id="200000">[Author][Byline][Report][Melodrama A][Melodrama B][Quote]</t>
  <t id="200001">[Event Comment]</t>
  <t id="200002">[Headline][Intro]</t>
  <t id="210000">$WARE$</t>
  <t id="210001">$SECTOR$</t>
  <t 
id="1000000">[Author][title][Headline][/title][justify][Intro][br/][br/][Melodra
ma A][Quote][br/][br/][Report][/justify][br/][br/][Byline]</t>
  <t id="1000001">[Author][title][Headline][/title][justify][Intro][Melodrama 
A][br/][br/][Quote][Melodrama 
B][br/][br/][Report][/justify][br/][br/][Byline]</t>
  <t id="1000002">[Author][title][Headline][/title][justify][Intro][Melodrama 
B][Quote][br/][br/][Report][/justify][br/][br/][Byline]</t>
  <t id="2010000">Beispiel für Ereignis-spezifischen Text 1</t>
  <t id="3010000">Sonnenaktivitäten entzünden Energieboom in $SECTOR$</t>
  <t id="3020000">Entdeckung in $SECTOR$</t>
  <t id="3010100">Ein plötzlicher Anstieg der Sonnenaktivität ermöglicht es den Sonnenkraftwerken, ihre Produktionsrate deutlich zu steigern. Die Stationsmanager des gesamten Sektors berichten von einer Rekordausbeute mit Preisen auf dem Tiefststand. Dies hat wiederum Auswirkungen auf andere Stationen im Sektor, der einen Produktionsschub verzeichnen kann.</t>
  <t id="3020100">Wissenschaftler entdeckten kürzlich einen Standort, der möglicherweise die erste neue, wertvolle Quelle in einigen Jazuras werden könnte. Seit die Neuigkeiten das erste mal veröffentlicht wurden, wird $SECTOR$ mit unzähligen Aufragen nach weiteren Informationen überflutet. Obwohl noch unbekannt, wird vermutet, dass die Weiterverarbeitung der Ressourcen eine Fülle an Energiezellen einbringen wird. Im Zuge dessen hat sich ein Produktionsanstieg in allen Fabriken entfacht angesichts des Überflusses an Energie, die nun in $SECTOR$ zur Verfügung steht.</t> 
  </page> 
Ok, das ist nur ein kleiner Teil davon, aber ich denke es zeigt alles, was ihr wissen solltet.

Also, dann lasst uns das mal Zeile für Zeile durchgehen und darüber reden, was jede einzelne Zeile tut und ich werde ebenso Bezug auf die Argumente im Skriptcode nehmen (wenn erforderlich). Das erste, woran wir uns erinnern sollten, ist, das wir einen einzelnen Artikel aus einer Menge von Möglichkeiten in einem gegebenen Template zusammenstellen. Also müsst ihr erst mal dieses Template mit all seinen Varianten definieren und dann der newsengine mitteilen, wie diese Teile zusammen zufügen sind. Dann erledigt sie die ganze Arbeit. Ich weiß, das ergibt jetzt noch keinen Sinn. Aber lest weiter.

Es gibt eine bestimmte Anzahl Variablen, die in jedem Artikel immer zur Verfügung stehen und die nicht als Argumente in dem o.g. Array übergeben werden müssen. Dies sind im Einzelnen:
  • $THISSTATION$ - die Raumstation, an der der Spieler angedockt ist
    $THISPEOPLE$ - die Rasse (Volk) der Raumstation, an der der Spieler angedockt ist
    $THISRACEGOVERNMENT$ - die Rasse (Regierung) der Raumstation, an der der Spieler angedockt ist
    $THISPERSON$ - zufälliger Name einer Person, die zu der Rasse der Raumstation gehört, an der der Spieler angedockt ist
    $AUTHOR$ - ein weiterer zufälliger Name wie oben
    $PEOPLE1$ - die Rasse (Volk), die im Code in Slot 1 definiert ist
    $PERSON1$ - zufälliger Name einer Person, die zu der Rasse gehört, die im Code in Slot 1 definiert ist
    $GOVERNMENT1$ - die Rasse (Regierung), die im Code in Slot 1 definiert ist
    $PEOPLE2$ - das selbe wie oben für Slot 2 (Ich benutze den Slot 2 im Wirtschaftscode nicht)
    $PERSON2$ - das selbe wie oben für Slot 2 (Ich benutze den Slot 2 im Wirtschaftscode nicht)
    $GOVERNMENT2$ - das selbe wie oben für Slot 2 (Ich benutze den Slot 2 im Wirtschaftscode nicht)
Seht euch noch mal die Zeile im Skriptcode nach dem Platzhalter an.

Code: Select all

183   * add bbs news articles to relevant stations
184    $key =  display news article: page=$text.page.id newsid=$news.id occurences=$occurences maxoffertime=null maxtime=null placeholder:race1=$race race2=null customarray=$news.array 
Es wird ein Argument für Rasse1(race1) und Rasse2(race2) sowie das benutzerdefinierte Array (customarray) benötigt. race1 und race2 bestimmen die o.g. Variablen, die dann im Artikel benutzt werden können. Im customarray könnt ihr andere Variablen definieren, die oben nicht enthalten sind. Das sollte es gewesen sein mit mit dem Zuweisen von Variablen an den Artikel. Wenn ich mit der Erklärung des t - Files fortfahre, werdet ihr sehen, wie auf diese Variablen im Text zugegriffen wird.

Also, Zeile für Zeile. Die ersten paar Zeilen des t - Files sollten dies enthalten

Code: Select all

<t id="101">Argonen</t>
  <t id="102">Boronen</t>
  <t id="103">Split</t>
  <t id="104">Paraniden</t>
  <t id="105">Teladi</t>
  <t id="108">Piraten</t>
  <t id="151">Argonen</t>
  <t id="152">Boronen</t>
  <t id="153">Split</t>
  <t id="154">Paraniden</t>
  <t id="155">Teladi</t>
  <t id="158">Piraten</t>
Hier wird der Text für die Variablen $PEOPLE1$ und $GOVERMENT1$ definiert. Sie sind deshalb unterschiedlich, weil die Worte in anderen Sprachen nicht zwangläufig die gleichen sind. Also fügt diese Zeilen einfach am Anfang eurer Textseite ein. Ihr werdet bemerken, dass im Skripteditor die Nummer 1 den Argonen entspricht usw. Die gleichen Regeln gelten auch hier, weshalb sie in der gegebenen Reihenfolge aufgezählt sind. Wenn ihr z.B. folgendes schreiben würdet:

<t id="101">argonische Einwohner</t>

dann wird folgendes passieren. Wenn der Skriptcode das Argument race1 ausliest und die Nummer 1 auf das t - File anwendet, wird er nach dem Eintrag 101 suchen (wegen der 1 für Argonen) und den obigen Text in die Variable $PEOPLE1$ einsetzen.

Also, 101-105,108 bestimmen, was für $PEOPLE1$ eingesetzt wird entsprechend der 6 Rassen (Das wird sicher für weitere Rassen genau so sein, seht euch Zahlen an).
151-155,158 bestimmen, was für $GOUVERMENT1$ eingesetzt wird.

Alles klar, soweit?

Springen wir weiter zu den folgenden Zeilen:

Code: Select all

<t id="200000">[Author][Byline][Report][Melodrama A][Melodrama B][Quote]</t>
  <t id="200001">[Event Comment]</t>
  <t id="200002">[Headline][Intro]</t> 
Diese Zeilen definieren alle Segmente, die zum Zusammenstellen des Artikels benutzt werden können. Wie ihr seht, habe ich 6 Segmente in der ersten Zeile definiert, eins in der zweiten und zwei in der letzten Zeile. Die könnt ihr oben sehen. Ihr könnt bis zu 100 Segmente pro Zeile definieren (Schön, wenn man so viele hätte :P).

Und das bedeuten die Zeilen im einzelnen:
  • 200000 - Diese Text-ID wird benutzt, um den allgemeinen Text eures Artikels zu definieren. Das bedeutet, dass diese Segmente für jeden Artikel zur Verfügung stehen.

    200001 - Diese Text-ID wird benutzt, um den ereignisspezifischen Text eures Artikels zu definieren (welcher Text zu welchem Ereignis gehört, wir weiter unten bestimmt).

    200001 - Diese Text-ID wird benutzt, um alle ereignisspezifisch verknüpften Segmente zu definieren. Ich weiß, dass das noch nicht viel Sinn ergibt, aber habt Geduld. Hier werden alle Segmente bestimmt, die zu bestimmten Ereignissen gehören und zusammen passen müssen. Seht euch mein Beispiel für [Headline] und [Intro] an. Das bedeutet, dass jedes Ereignis eine eindeutige Headline besitzt, die angezeigt werden muß und der verknüpfte Intro-Teil zu der Headline passen muß.
Jetzt, da ich der newsengine mitgeteilt habe, welche Arten von Segmenten ich verwenden will, werde ich die Auswahl bestücken. Jedes Segment muß mindestens eine zugehörigen Eintrag besitzen. Lasst uns zu der Stelle im t -File zurückgehen, an der wir stehen geblieben sind:

Das erste, was hier definiert wird, sind allgemeine Segmente (das sind die mit der t id 200000)


<t id="10000">[author]Galaxy Network - GalNet[/author]</t>


Hier habe ich meinen einzigen Eintrag für den Segmenttyp [Author] definiert.

Die t ids für die Definition allgemeiner Segmenttypen sind immer 5-stellig und beginnen mit der Zahl 1.

10000 - Diese zwei Zahlen bestimmen den Segmenttyp. 00 ist das erste Segment und stimmt daher mit dem ersten Eintrag in der Zeile der Segmentdefinition '[Author]' überein (Keine Sorge. Das ergibt mehr Sinn, wenn wir uns noch weitere Beispiele ansehen).

10000 - Diese beiden Zahlen ergeben die eindeutige ID. 00 ist der erste Eintrag für den Segmenttyp [Author].

Also bedeutet 10000 der erste Eintrag des ersten Segmenttyps.
10304 bedeutet der fünfte Eintrag des vierten Segmenttyps (Nicht vergessen, bei 0 anfangen zu zählen :)) usw.

Nun zu den nächsten beiden Zeilen:

Code: Select all

  <t id="10100">$AUTHOR$, Editor in Chief, GalNet Economic News</t>
  <t id="10101">$AUTHOR$, Assoc. Editor, GalNet Economic News</t>
Also, wenn wir die obigen Regeln anwenden, sehen wir, dass 10100 für den ersten Eintrag des zweiten Segmenttyps steht. 10101 beschreibt den zweiten Eintrag des zweiten Segmenttyps. In der ersten Zeile, die wir uns angesehen haben ist der zweite Segmenttyp als [Byline] definiert. Also sind dies meine beiden Einträge für den Segmenttyp [Byline].

Weiter geht´s:

Code: Select all

<t id="10200">Check back regularly for all the latest business news concerning $SECTOR$ and surrounding areas.</t>
Das ist mein erster und einziger Eintrag den Segmenttyp [Report]. Könnt ihr erkennen, warum?

Code: Select all

  <t id="10300">Surrounding sectors have reported a frenzied increase in traffic as ships struggle to reach $SECTOR$ to take advantage of the great prices.</t>
  <t id="10301">These events have given cause for many to believe that this may herald a new era for trade relations between $SECTOR$ and its neighbours. Those who believed otherwise appear to be in a now silent minority.</t>
  <t id="10302">Freighters are arriving at steadily increasing rates in the sector, loading up with as much stock as they can hold, with destinations as of yet unknown. Prices in neighbouring sectors remain steady despite the incredible offers currently available in $SECTOR$.</t>
Das sind meine drei Einträge für [Melodram A].

Ihr solltet jetzt die Einträge für [Melodram B] und
darunter erkennen können.

Ok, also jetzt kennt die newsengine alle allgemeinen Segmenttypen, die es gibt und auch alle Möglichkeiten, aus denen ausgewählt werden kann, wenn ein bestimmtes Segment benutzt werden soll.

Ich werde im nächsten post weitermachen.

----------------- schnapp ----------------------------------------

Viel Spass :goner: Han Polo.

skywalker2
Posts: 267
Joined: Fri, 14. May 04, 15:59
x4

Post by skywalker2 » Wed, 28. Dec 05, 04:28

So mal sehen wie weit ich komme:

---------------------------------------------------------------------------------

OK, die nexten Zeilen im t file sind:

Code: Select all

  <t id="200000">[Author][Byline][Report][Melodrama A][Melodrama B][Quote]</t> 
  <t id="200001">[Event Comment]</t> 
  <t id="200002">[Headline][Intro]</t>
Wir haben darüber schon weiter oben gesprochen, beachtet das wir bis jetzt nur die globalen Teile definiert haben, wir haben die 'Eventspezifischen' und 'Eventlink spezifischen' noch nicht definiert.

Machen wir weiter:

Code: Select all

  <t id="210000">$WARE$</t> 
  <t id="210001">$SECTOR$</t> 
Dieser Bereich definiert die Variablen die dem Newssystem durch das Customarray übergeben werden. Errinert Euch, ich habe ein Array mit zwei Elementen definiert, wobei das erste Element $ware und das zweite $sector sind. Dieser Bereich definiert diese nun, damit das Newssystem darauf zugreifen kann. Es können so viele Einträge defniert werden wie man will, beginnen wir mit

2100000 - erstes Element
2100001 - zweites Element
2100002 - drittes Element

und so weiter. Es müssen so viele Elemente definiert werden, um das ganze Array zu beschreiben welches übergeben wird.

Sobald man Sie in dieser Art definiert hat, kann man Sie im Text benutzen. Man kann in den bereits definiert generellen Texten Stellen finden in denen ich $WARE$ und $SECTOR$ bereits verwende. Wo immer das Newssystem diese Platzhalter sieht, wird Sie sie durch entsprechende Elemente im Array ersetzen.

Weiter im Text, der nächste Teil ist besonders wichtig. Hier werden die Templates deffiniert, die beim erstellen der BBS-Nachrichten verwendet werden.

Code: Select all

  <t id="1000000">[Author][title][Headline][/title][justify][Intro][br/][br/][Melodrama A][Quote][br/][br/][Report][/justify][br/][br/][Byline]</t> 
  <t id="1000001">[Author][title][Headline][/title][justify][Intro][Melodrama A][br/][br/][Quote][Melodrama B][br/][br/][Report][/justify][br/][br/][Byline]</t> 
  <t id="1000002">[Author][title][Headline][/title][justify][Intro][Melodrama B][Quote][br/][br/][Report][/justify][br/][br/][Byline]</t>
OK lasst mich nochmal daran erinnern:
Jede Template t ID besteht aus 7 Ziffern die mit 1 beginnen.

1000000 - die ersten beiden Ziffern definieren die Events für die das Template verwendet wird. Wird 00 verwendet, ist es ein Template welches für jede Der Nachrichten verwendet werden kann. (Ich habe meine einfach gehalten und keine Spiziefischen Templates definiert)
1000000 - Diese Ziffern tun nichts (Denke ich), lass Sie auf 00
1000000 - Die letzten beiden Ziffern sind die eindeutigen ID's, wie Sie für die generellen Textelemente verwendet werden.

Wie Man sieht habe ich 3 Templates für all meine Event's definiert. Wie das Newssystem die Texte aus den Templates erstellt, beschreibe ich wenn wir den Rest der Segmente definiert haben.

Weiter im t file:

Code: Select all

  <t id="2010000">example of event 1 specific text</t> 
Ok, Eventspeziefische Textid's haben 7 Ziffern die mit 2 beginnen
2010000 - Die ersten beiden Ziffern beschreiben den Event für den der Text benutzt wird. Hier wird niemals 00 stehen, da es keine globalen Einträge für eventspeziefische Texte gibt. (Das macht keinen Sinn)
2010000 - Diese Ziffern beschreiben das erste Segment welche oben in der Zeile <t id="200001">[Event Comment]</t> beschrieben werden. Hat man da 2 Segmente deffniert, benötigt man hier für jedes Segment jeweils einen Eintrag.
2010000 - Die letzten beiden Ziffern sind eindeutige ID's wie schon andererseits beschrieben.

Ok es ist leichter als es klingt. Für die generellen ID's haben wir fünf Ziffern. Sie beschreiben beides die Segmentnummer und die eindeutige ID. Für Eventspezifische, benötigen wir zusätzlich einige Ziffern um den Event zu beschreiben richtig? Alles andere ist gleich. Die Eventziffern sind die ersten beiden, die Segmentnummern die nächsten´und die eindeutige ID die letzten beiden.

t id: 2020402 bedeutet zum Beispiel:
Die dritte eindeutige ID für das fünfte Segment des zweiten Eventtyps.
Erinnert Euch, die eindeutige ID's und Segmente beginnen mit 00, Eventtypen beginnen immer mit 01. (und dann aufsteigend, 02, 03, 04, etc.) Man kann nicht mit Eventtypen 00 beginnen, da 00 generic ist. (Im Template natürlich)

Lies das sobald es Sinn macht

Beachte das ich nur einen Eventspezifischen Text definiert habe, um zu zeigen wie das funktioniert. Er wird aber nirgendwo verwendet. (Du kannst dies nachvollziehen da es es kein [Event Comment] Segment in einem der Templates gibt.

Weiter im t file:

Code: Select all

  <t id="3010000">Solar Flares Spark Energy Boom in $SECTOR$</t> 
  <t id="3020000">Discovery in $SECTOR$</t> 
  <t id="3010100">A sudden rise in solar activity has enabled Solar Power Plants to substantially accelerate their production rate. Station managers across the sector have reported in record yields with prices dropping to an all-time low. This has in turn created a chain-reaction with other stations throughout the sector recording a surge in production.</t> 
  <t id="3020100">Scientists have recently discovered another location for what may possibly be the first new resource to be of value in several Jazuras. Since the news was first published, $SECTOR$ has been flooded with requests for further information. While still unknown, it is believed the refinement of the resource yields massive amounts of energy cells, which has consequently sparked a rise in the production for all factories given the sudden abundance of energy now available for consumption in $SECTOR$.</t>
Diese Texte definieren die Einträage für die 'Eventlink specific' Typen. Erinnert Euch es sind die zuvor definierten:

Code: Select all

  <t id="200002">[Headline][Intro]</t>
Sie sind wie die Eventspezifischen, weiter oben bereits definierten, nur beginnen Sie nicht mit 2 sondern mit 3.

Ich hoffe es ist, basierend auf dem bereits Erklärten, klar was hier passiert
Wir haben vier Einträge hier, der Reihe nach:
3010000 - Der erste Eintrag für die [Kopfzeile] Verwendet im Eventtyp 1
3020000 - Der erste Eintrag für die [Kopfzeile] Verwendet im Eventtyp 2
3010100 - Der erste Eintrag für das [Intro] Verwendet im Eventtyp 1
3020100 - Der erste Eintrag für das [Intro] Verwendet im Eventtyp 2

Seht Ihr warum?
Die zweiten zwei Ziffern deffinieren den Event, die nächsten beiden das Segment, 00 ist die erste [Kopfzeile], 01 ist die zweite [Intro]. Ich habe nur einen Eintrag auszuwählen für jeden Typ.
lasst mich nun einen linked deffinieren im Gegesatz zum einfachen Eventspezifischen.
Linked bedeutet dass ich mehrere möglichen Einträge für jeden Event, linked sind immer paare mit einer eindeutigen ID.

Oder lasst es mich so erklären. Sagen wir ich habe 4 [Kopfzeilen] und vier [Intro] Segmente für Event 1 wie hier:
Meine [Kopfzeilen] Segmente:

3010000
3010001
3010002
3010003

Und meine [Intro] Segmente:

3010100
3010101
3010102
3010103

OK?

Linked bedeutet wenn der Code zufällig die zweite [Kopfzeile]:3010001 verwendet, verwendet er das 'linked' zweite [Intro] Segment:3010101 Da Sie die gleiche eindeutige ID besitzen.

Ist also 3010003 ausgewählt als [Kopfzeile], muss der Code also 3010103 für das [Intro] Segment verwenden wenn das Template ein [Intro] Segment verwendet.

Macht das Sinn?

Habe ich die [Kopfzeilen] und [Intros] Blöcke als Eventspezifisch (im gegensatz zu Eventlinked) definiert, habe ich die volgenden [Kopfzeilen] und [Intro] Segmente:
Meine [Kopfzeilen] Segmente:

2010000
2010001
2010002
2010003


und meine [Intro] Segmente:

2010100
2010101
2010102
2010103


In diesem Fall sind Sie linked, wird im Code also 2010002 als [Kopfzeile] ausgewählt. Muß er nicht 2010102 als [Intro] auswählen, er kann irgendeinen der Vier verwenden, und er wird zufällig Eines dieser Auswählen.

Ich hoffe das ist klar.

Um ehrlich zu sein, habe ich in diesem beispiel T-file nur einen eindeutigen eintrag für Kopfzeile und Intro. Ich kann diese als Eventspezifisch oder Eventlinked definieren. Ich brauche Sie nicht verlinken solange da nichts zufällig für einen Event ausgewählt werden muß. Naja ich hoffe ich konnte Es erklären.

So nun haben wir Alles definiert was wir benötigen. Lasst uns nun ansehen wie die Artikel aus den oben definierten Templates zusammengesetzt werden.

Zusammenbau der Artikel:

Das Erste das das Newssystem macht ist die $news.id oder Eventnummer vom Code zu lesen. Danach sucht es nach möglichen Templates. Habe ich keine Eventspezifische Template sucht es zufällig eine der Generellen aus. Nun wird der Artikel aus dem Template erstellt. Wählt es also beim Aufruf das Zweite 1000001. (Siehe die Templatedefinition oben)

Von links nach rechts beginnt es nun den Artikel zusammen zu bauen.

Als erstes wird er das [Author] Segment einfügen. Also sucht er nach einem von mir definiertn [Author] Segment, sieht nur eines (10000) und wählt es aus. Er fügt den Text in das Authorsegment des BBS-Bildschirms (oben links), da ich dort die [author] [/author] tags gesetzt habe, ein. (Verwechselt nicht die [author][/author] tags die im Text stehen mit dem[Author] Segment (Welches die ganze Zeile ist. Ich hätte Es wohl anders nennen sollen, es verwirrt ein wenig).

Egal, OK, Es fügt also das [Author] Segment ein, Es macht also weiter. Und sagt Ok, ich brauche eine [Kopfzeile] (welche ich in den [title][/title] tags eingefügt habe um es am Beginn des Artikels zu zentrieren. [Kopfzeile] Es findet die Eventlinked Sektion und sagt, OK ich suche nach Event 1, also verwende ich einen aus der definierten Liste.
Ich habe nur eine [Kopfzeile] für Event 1 definiert, 3010000. Also wählt sie diese aus und fügt Sie ein.

Als nächstes geht es zum nächsten zu ersetzenden Segment. [justify] ist ein Textformatierung, kein Segmenttyp. Ihr seht das [/justify] tag nach dem das bosy
-------------------------------
Was zur hölle ist ein bosy??? :x es scheint schon zu spät zu sein.
-------------------------------
des Artikels weiter unten definiert ist. Das nächste Segment das Es findet ist [Intro]. Es findet [Intro] in der linked Sektion also sagt es, OK, für die linked Sektion habe ich bereits die eindeutige ID 00 ausgewählt als ich die [Kopfzeile] verwendet habe, also muss ich diese ID für alle weiteren linked Segmente verwenden, also muss ich 3010100 finden (den ersten eindeutigen, im linked Bereich deffinierten, Eintrag für den zweiten Segmenttyp). Also sucht es diesen, wählt ihn aus und fügt Ihn ein. Es ist keine zufällige Wahl, da es im linked Bereich eingetragen ist. Es sucht nach genau diesem speziellen Eintrag mit dieser TextID. (Oben beschrieben)

Es geht weiter und sagt, OK ich benötige nun ein [Melodrama A] Segment. Die ist in der generellen Sektion, Sie ist nicht Eventspezifisch. Es wählt eines der Segmente zwischen 10300 - 10302 zufällig aus und fügt es ein. (Erinnert Euch, [Melodrama A] ist der vierte Segmenttyp, also müssen die zweiten zwei Ziffern 03 sein)

Als nächstes sucht es nach
, also wählt es einen Text zwischen 10500 und 10502 zufällig aus (
ist der sechste Segmenttyp)
Als nächstes sucht es nach [Melodrama B], also wählt es eines zwischen 10400 und 10402 zufällig aus.

Formattirungstags vorne weggelassen endet es mit [Report] und einem [Byline], also wählt Es 10200 für das [Report] und 10100 oder 10101 für das [Byline] Segment und fügt Sie ein. Hoffentlich ist zu diesem Zeitpunkt klar warum.

Nun ist der die Zusammenstellung des Artikels anhand des Templates abgeschlossen.

Ihr bekommt etwas wie:

Code: Select all

Solar Flares Spark Energy Boom in $SECTOR$ 

A sudden rise in solar activity has enabled Solar Power Plants to substantially accelerate their production rate. Station managers across the sector have reported in record yields with prices dropping to an all-time low. This has in turn created a chain-reaction with other stations throughout the sector recording a surge in production. These events have given cause for many to believe that this may herald a new era for trade relations between $SECTOR$ and its neighbours. Those who believed otherwise appear to be in a now silent minority. 

"It's been incredible! I've never known anything like this to have happened before. Certainly my shipmates don't recall such an event in near history either!" claimed $PERSON1$ who had just arrived at the station while we were investigating this story. Jumpgates remain in constant use as the sector works hard to process the traders working to cut a higher margin of profit on trades that are now becoming known across even more outlying regions. 

Check back regularly for all the latest business news concerning $SECTOR$ and surrounding areas. 

$AUTHOR$, Editor in Chief, GalNet Economic News
Seht Ihr jedes Segment?
, [Melodrama A] etc.?
Ihr seht wo die Zeilenumbruchtags [br/] abhängig vom Template eingesetzt werden?


Ihr könnt es ausprobieren indem Ihr die unterschiedlichen Segmente im Template tauscht, in unterschiedlicher Reihenfolge, unterschiedliche Orte auswählt und unterschiedliche Formatierungen verwendet., (und das Faktum dass bei jeder Anzeige verschiedene Texte zufällig ausgewählt werden um den Artikel zu generieren) Ihr könnt mit ein paar Texteinträgen und Templates eine umenge an unterschiedlichen Artikeln automatisch generieren lassen.

Ok, ich schreibe nun seit 2 1/2 Stunden. Das ist alles was ich zu diesem Zeitpunkt sagen kann.

Wenn das keiner benutzt, lauf ich Amok, Ich lass es Euch wissen.

Cheers.

----------------------------------------------------
Na ich hoffe ich habs richtig übersetzt, und wie heißt es so schön, wer Rechtschreibfehler findet, darf Sie behalten :D

Viel Spaß
Last edited by skywalker2 on Wed, 28. Dec 05, 11:27, edited 1 time in total.

ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki » Tue, 10. Jan 06, 20:03

Herzlichen Dank fuer eure Bemühungen :)

Gruß ticaki

User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike » Sun, 24. Sep 06, 08:26

Chronologischer Sortiereintrag

Antiker1
Posts: 28
Joined: Mon, 8. Jan 07, 16:04
x3tc

Post by Antiker1 » Tue, 9. Jan 07, 15:04

hi
ich bin leider in solchen sachen kein pro
es were sehr net wenn mir jemand helfen könnte, mein problemm:

ich möchte das an stationen immer die bbs mission erhältlich ist mit der xenon invarsion

schn einmal danke im voraus

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Tue, 9. Jan 07, 15:54

nicht möglich -> Hardcoded

ich könnte dir aber as anbieten, womit die BBS-Einträge nach Typ markiert sind ;) (unter dem Auto steht dann z.B.
Typ: Mission
oder
Typ: Angebot
und andere ;)
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

Post Reply

Return to “X³: Reunion - Scripts und Modding”