Hi,
das Abrufen von Textdialogen und dazu gehörenden Audio-Dateien sind wie folgt aufgebaut:
Die Textdialoge stehen in
data\UPCDataGE\UPCLocalization\dialogs.tsr
und nicht in
data\LngGameData\Texts\German\data\UPCDataGE\UPCLo calization\dialogs.tsr
Die dialogs.tsr sind in beiden Verzeichnissen identisch, aber nur die Datei im oberen Verz. wird genutzt. Der geänderte Text ist im Spiel sofort ersichtlich.
Die Dateien
data\cfg\dialogs.cfg und
data\cfg\Sounds.cdg kann man in die Tonne hauen.
In der
dialogs.cfg kann man zwar annähernd erkennen welcher Text und Audio-datei zusammen gehört. Aber bewirken tut es nichts wenn man etwas ändert. Ihr könnt die Datei auch umbenennen, es passiert nichts, die Datei wird anscheinend überhaupt nicht benutzt.
Die
sounds.cfg ist totaler Müll. Mal steht da ein / oder ein \ und die Verzeichnisse sind meistens falsch. Diese Datei wird ebenfalls nicht benutzt.
Die Steuerung der Ausgabetexte und der Audio-Dateien finden in den jeweiligen aix Script-Dateien statt.
Beispiel-Watchoffizier in Kampagne Total germany
data\Campaigns\CampaignProjects\Total_Germany\Scri pts\AI\Dialogs\DT_Watch_Total_Germany.aix
Hieraus ein Auszug aus dem Skript
Code:
strategy DialogLine_RootDialog_WATCH_Total_Germany_787_Init(Dialog)
{
precond
{
Dialog:IsDialogLineClicked( "DialogLine_RootDialog_WATCH_Total_Germany_787" ) == 0 and Dialog:IsDialogLineLocked( "787" ) == 0 and Dialog:IsCurrentDateHigherThen( "1.11.1939" ) == 1
}
action
{
Dialog:AddDialogLine( "Text_Dialog_788" );
Dialog:SetDialogLineClickId( "DialogLine_RootDialog_WATCH_Total_Germany_787" );
Dialog:SetRunScript( "Dialog_3_WATCH_Total_Germany" );
}
}
strategy DialogLine_RootDialog_WATCH_Total_Germany_787_Click(Dialog)
{
precond
{
Dialog:IsDialogLineClicked( "DialogLine_RootDialog_WATCH_Total_Germany_787" ) == 1
}
action
{
Dialog:PlaySound( "WatchOfficer_slash_", "PD_QRF_WATCH_D03_A", 0 );
Dialog:LockDialogLine( "785" );
Dialog:PlayAnimation( "PD_QRF_WATCH_D03_A" );
Dialog:AddMorale( 1.0 );
}
}
....
strategy Dialog_3_WATCH_Total_Germany(Dialog)
{
strategies
{
DialogTitle_Dialog_3_WATCH_Total_Germany_788,
DialogLine_Dialog_3_WATCH_Total_Germany_789
}
}
strategy DialogTitle_Dialog_3_WATCH_Total_Germany_788(Dialog)
{
strategies
{
DialogTitle_Dialog_3_WATCH_Total_Germany_788_Init
}
}
strategy DialogTitle_Dialog_3_WATCH_Total_Germany_788_Init(Dialog)
{
action
{
Dialog:SetDialogTitle( "Text_Dialog_789" );
}
}
strategy DialogLine_Dialog_3_WATCH_Total_Germany_789(Dialog)
{
strategies
{
DialogLine_Dialog_3_WATCH_Total_Germany_789_Click,
DialogLine_Dialog_3_WATCH_Total_Germany_789_Init
}
}
strategy DialogLine_Dialog_3_WATCH_Total_Germany_789_Init(Dialog)
{
action
{
Dialog:AddDialogLine( "Text_Dialog_790" );
Dialog:SetDialogLineClickId( "DialogLine_Dialog_3_WATCH_Total_Germany_789" );
Dialog:SetRunScript( "Dialog_4_WATCH_Total_Germany" );
}
}
strategy DialogLine_Dialog_3_WATCH_Total_Germany_789_Click(Dialog)
{
precond
{
Dialog:IsDialogLineClicked( "DialogLine_Dialog_3_WATCH_Total_Germany_789" ) == 1
}
action
{
Dialog:PlaySound( "WatchOfficer_slash_", "PD_QRF_WATCH_D03_B", 0 );
Dialog:PlayAnimation( "PD_CR_SO_D03_B" );
}
}
Im Init wird die Dialogbox aufgebaut. Wobei die Init eine weitere Funktion
Dialog_3_WATCH_Total_Germany aufruft. Die wiederum ruft ebenfalls einige Funktionen auf.
Der Textdialog "
Text_Dialog_788" ist die Textausgabe in der Dialogbox des Kaleuns und lautet: (aus dialogs.tsr)
Text_Dialog_788=Ich weiß, Sie spielen anderen gerne Streiche, aber lassen Sie den 1. Wachoffizier in Ruhe, der mag das nicht.
Wird der DialogText 788 in der Dialogbox angeklickt erhält man als Antwort:
Text_Dialog_789 aus Dialog_3_WATCH_Total_Germany
Text_Dialog_789=Der Kerl ist so steif, an den könnte man ein Ruder klemmen und ihn dann als Torpedo verwenden. (Pause) Gut, ich lasse ihn in Ruhe, aber jemand muss ihm dringend diesen Stock aus dem ...
und dazu die Audiodatei
data\Sound\Speech\WatchOfficer\Normal\PD_QRF_WATCH _D03_A.ogg
ja und so gehts natürlich weiter....
Alle Textdialoge und die dazu gehörenden Audiodateien können beliebig angepasst/verändert werden.
Alle Kommunikationsdialoge mit jedem Besatzungsmitglied sind modbar! Man kann in dem Skript sogar die Moral beeinflussen.
Gruß Ruby