Hab mal eine Frage, arbeite mit dem Maniac Mansion Mania GUI von LucasFan:
Möchte kurrzeitig einen Befehl ersetzen (z.B. "nimm" durch "kaufe" oder "gehe zu" durch "schleiche").
Wie kann ich einstellen, dass für eine kurze Phase des Spiels der im GUI angezeigte Text verädnert wird?
Der Button stellt nicht das Problem dar, der ist ausgebledet, ähnlich wie in MI1 in den hinteren Räumlichkeiten der Villa...
Den angezeigten Text bei einer Aktion verändern
- SeltsamMitHut
- Profi-Abenteurer
- Beiträge: 798
- Registriert: 22.06.2004, 21:54
- Wohnort: Arkham
Den angezeigten Text bei einer Aktion verändern
I was frozen today!
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Wenn das ganze blockend ist, diese Funktion ganz ans Ende des Global Scripts:
Diese Zeile irgendwo in den Global Header:
Und so sieht der Einsatz aus:
Code: Alles auswählen
function FakeLine(string befehl, string hot, string param, string obj) {
string action;
StrCopy(action, befehl);
SetLabelColor(0, 0, ActionLabelColorNormal);
if(StrGetCharAt(action, StrLen(action)-1) != ' ') StrCat(action, " ");
SetLabelText(0, 0, action);
Wait(30);
if(StrComp(hot,"") != 0) {
StrCat(action, hot);
SetLabelText(0, 0, action);
Wait(30);
}
if(StrComp(param,"") != 0) {
if(StrGetCharAt(param, 0) != ' ') StrCat(action, " ");
StrCat(action, param);
SetLabelText(0, 0, action);
Wait(30);
}
if(StrComp(obj,"") != 0) {
if(StrGetCharAt(param, StrLen(param)-1) != ' ') StrCat(action, " ");
StrCat(action, obj);
SetLabelText(0, 0, action);
Wait(30);
}
SetLabelColor(0,0,ActionLabelColorHighlighted);
}
Code: Alles auswählen
import function FakeLine(string action, string hs, string param, string obj);
Code: Alles auswählen
FakeLine("Hypnotisiere", "Rhinozeros", "", "");
DisplaySpeech(BERNARD, "Du bist jetzt ein Pferd...");
FakeLine("Frage", "Informatiker", "nach", "QBasic");
DisplaySpeech(INFORMATIKER, "QBasic? Damit kenne ich mich nicht aus");
FakeLine("Gib", "Prospekt", "an", "Informatiker");
DisplaySpeech(WEBDESIGNER, "QBascic? Nee, das ha'm wir hier nicht");
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
- SeltsamMitHut
- Profi-Abenteurer
- Beiträge: 798
- Registriert: 22.06.2004, 21:54
- Wohnort: Arkham
Danke! Probier mal, obs auch damit geht, blockend soll es allerdings nicht sein. Ähnlich wie bei Zak, wo man auch "kaufe" im Laden statt "nimm" hatte. D.h. bei dieser Aktion soll dann der Text "nimm" einfach ausgetauscht werden. Die Änderung soll dann später auch wieder rückgängig gemacht werden...
vielleicht kann mans ja anzeigen, wenn die Maus über den jweiligen Hotspot kommt...
vielleicht kann mans ja anzeigen, wenn die Maus über den jweiligen Hotspot kommt...
I was frozen today!
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Dann komm doch nicht gleich mit so einem Beispiel. Da gibt's ne andere Lösung. Such dir einen GlobalInt und dann verändere folgendes Script: (~Z.118)
Code: Alles auswählen
#define KAUFSTATTNIMM 100 // GlobalInt, die gesetzt ist, wenn die Befehle vertauscht sind
function TranslateAction (string result, int action, string objects, string item){
// get translated action template
if (action == A_WALK_TO) StrCopy (result, "Gehe zu %s");
else if (action == A_LOOK_AT) StrCopy (result, "Schau an %s");
else if (action == A_TALK_TO) StrCopy (result, "Rede mit %s");
else if (action == A_GIVE_TO)
{
if(GetGlobalInt(KAUFSTATTNIMM)) {
if (StrLen (item) > 0) StrCopy (result, "Verkaufe !s an %s");
else StrCopy (result, "Verkaufe %s");
}
else {
if (StrLen (item) > 0) StrCopy (result, "Gib !s an %s");
else StrCopy (result, "Gib %s");
}
}
else if (action == A_PICK_UP) {
if(GetGlobalInt(KAUFSTATTNIMM)) StrCopy(result, "Kaufe %s");
else StrCopy (result, "Nimm %s");
}
else if (action == A_USE)
{
if (StrLen (item) > 0) StrCopy (result, "Benutze !s mit %s");
else StrCopy (result, "Benutze %s");
}
else if (action == A_OPEN) StrCopy (result, "Öffne %s");
else if (action == A_CLOSE) StrCopy (result, "Schließe %s");
else if (action == A_PUSH) StrCopy (result, "Drücke %s");
else if (action == A_PULL) StrCopy (result, "Ziehe %s");
else if (action == A_SWITCH_TO) StrCopy (result, "Wechsle zu %s");
// fill object and item into action template
StrCopy (result, GetTranslation (result));
int ip = StrContains (result, "!s");
if (ip >= 0)
{
int op = StrContains (result, "%s");
StrSetCharAt (result, ip, '%');
if (ip < op) StrFormat (result, result, item, objects);
else StrFormat (result, result, objects, item);
}
else StrFormat (result, result, objects);
}
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet