LucasArts GUI deutsche Buttons

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
fjordsurfer
Frischling
Frischling
Beiträge: 2
Registriert: 21.02.2010, 20:07

LucasArts GUI deutsche Buttons

Beitrag von fjordsurfer »

Ich habe mir das LucasArt-Style-GUI 9-verbs heruntergeladen, und habe jetzt ein kleiner Problem festgestellt. Und zwar wenn ich statt der englischen Buttons ("Give", "Pick Up" usw.) durch die deutschen ersetzen möchte (die ja mitgeliefert wurden und im sprites-Manager auswählbar sind), dann erscheinen diese für den Hauch einer Nanosekunde im Spiel, aber dann werden wieder die englischen angezeigt! :?:

Wer kann mir helfen?

fjordsurfer
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: LucasArts GUI deutsche Buttons

Beitrag von KhrisMUC »

Die Bilder der Buttons werden durch Strings festgelegt.
Schau mal in die Funktion AdjustLanguage() im global script. Dort wird jeder Aktion ein Button zugewiesen, mit Nummer, den zwei Sprites und dem Shortcut.

Deutsch sollte das ungefähr so aussehen:

Code: Alles auswählen

  SetActionButtons(eGA_GiveTo, "a_button_give    5 802 803 Dd");
  SetActionButtons(eGA_PickUp, "a_button_pick_up 2 800 801 Ee");
  SetActionButtons(eGA_Use,    "a_button_use     1 794 795 Ww");
  SetActionButtons(eGA_Open,   "a_button_open    3 790 791 Aa");
  SetActionButtons(eGA_LookAt, "a_button_look_at 0 788 789 Qq");
  SetActionButtons(eGA_Push,   "a_button_push    7 798 799 Xx");
  SetActionButtons(eGA_Close,  "a_button_close   4 796 797 Ss");
  SetActionButtons(eGA_TalkTo, "a_button_talk_to 8 804 805 Cc");
  SetActionButtons(eGA_Pull,   "a_button_pull    6 792 793 Yy");
Use gopher repellent on funny little man
fjordsurfer
Frischling
Frischling
Beiträge: 2
Registriert: 21.02.2010, 20:07

Re: LucasArts GUI deutsche Buttons

Beitrag von fjordsurfer »

Hei, danke :) Hat geklappt!

Wo er die Variable SetActionButton(...) allerdings hin übernimmt, hab ich noch ned ganz verstanden...aber ich bin ja Anfänger und muss mich da erstmal reinfuchsen ;)
abstauber
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 23
Registriert: 28.11.2009, 08:34

Re: LucasArts GUI deutsche Buttons

Beitrag von abstauber »

Ich hab auch ein wenig gebraucht, um dahinter zu kommen.

Die Funktion SetActionButtons hat zwei Parameter:
action und den String.

Der String ist aber eigentlich nur ne Krücke für noch viel mehr Parameter :) Und das ist auch ziemlich schlau, weil so jeder Übersetzer die Buttons in der Übersetzungsdatei ansteuern kann.

So sieht der String z.B. aus:
"a_button_give 0 125 138 Qq"
Die Funktion SetActionButtons zerpflückt diesen anhand der Leerzeichen und verteilt diese Werte dann in Variablen.


Im repeadedly_execute gibt es nun eine Funktion CheckDefaultAction. Diese ruft unter anderem die Funktion SetAlternativeAction auf. Und SetAlternativeAction setzt nun letztendlich das um, was wir mit SetActionButtons ursprünglich definiert haben.

Die Reihenfolge nochmal:
SetActionButtons -> CheckDefaultAction -> SetAlternativeAction

Das zwar wieder recht verworren, hat aber den Vorteil, dass man mitten im Spiel auch die Buttons verändern kann. Wie z.B. in ZacMcKracken in dieser Dusseligkeitsmachine :)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: LucasArts GUI deutsche Buttons

Beitrag von KhrisMUC »

Zur Erklärung:
Man kann Gegenständen ein alternatives Verb zuweisen, indem man >x an den Namen hängt.
Angenommen, man hätte auf der Straße ein Stück Papier liegen und nennt es "Papier>p" (pick up), so leuchtet "Nimm" auf, wenn man mit der Maus übers Papier geht. Ein Rechtsklick führt dann die Aktion "Nimm Papier" aus.

Man braucht also die von abstauber genannten Funktionen weder kennen noch verändern.
Einzige Ausnahme ist >v; hiermit kann man z.B. einer Schublade oder Tür je nachdem, ob sie offen/geschlossen ist, die Rechtsklick-Aktion Schließe/Öffne zuweisen. Das muss man dann allerdings in der Funktion VariableExtensions eintragen.

Da es verschiedene neuere Varianten des Packs gibt, weiß ich nicht, wie das in dem Pack, das Du verwendest, gehandhabt wird. Früher hatten diese Gegenstände eine GlobalInt zugewiesen (Wert: 0 = geschlossen, 1 = offen). Dann sah das z.B. so aus:

Code: Alles auswählen

  // Tür in Raum 1, Hotspot 4, GlobalInt 3
  if (r==1  && h == 4)  OpenCloseExtension (3);
Use gopher repellent on funny little man
1mal_volltanken
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 61
Registriert: 18.09.2008, 14:54

Re: LucasArts GUI deutsche Buttons

Beitrag von 1mal_volltanken »

Genau.

Wir haben ja in unseren Starterpaks das Deutsche GUI vorgegeben. Wie würde man die Verben denn am schnellsten von Deutsch nach Englisch umwandeln?


BG
der Volltanker
Tage sind eigentlich wie Nächte...nur nicht ganz so spät! ...hörte ich einmal einen sehr klugen, weisen Mann beim Erdnüsse sortieren in einer Kneipe sagen, kurz bevor er vom Hocker rutschte.
abstauber
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 23
Registriert: 28.11.2009, 08:34

Re: LucasArts GUI deutsche Buttons

Beitrag von abstauber »

Wenn deutsch die Standardsprache bleiben soll, ist es relativ einfach:

- das Spiel auf deutsch fertig machen;)
- die englischen Buttons für die GUI in AGS importieren
- eine .trs Datei in AGS erstellen
- diese .trs-Datei, also english.trs zB mit einem Editor deiner Wahl bearbeiten

Da die Buttoninformationen strings sind, tauchen sie auch in english.trs auf.

Code: Alles auswählen

a_button_give    0 157 166 Qq

a_button_use     1 158 167 Ww

a_button_pick_up 2 159 168 Ee
Jetzt brauchst du nur noch die Sprite Slots für die englischen Buttons eintragen und ggf. die Button ID ändern, also:

Code: Alles auswählen

// die jeweils zweite Zeile ist immer der englische Button
a_button_give    0 157 166 Qq
a_button_give    0  125  138 Qq
a_button_use     1 158 167 Ww
a_button_use     2  127  140 Ee
a_button_pick_up 2 159 168 Ee
a_button_pick_up 1  126  139 Ww

Wenn natürlich von vorn herein Englisch die Standardsprache sein soll, müsstest du die Strings natürlich direkt im Code ändern. Ebenso wie die ganzen unhandled events usw.
Antworten