Seite 1 von 1

Programmierfrage: Dialog mit Objects oder Hotspots

Verfasst: 03.08.2005, 00:27
von Gast
Hallo,

habe gerade angefangen mit AGS und auch schon fast sämtliche tutorials gewälzt.

Benutze die MMM_GUI, also denke ich die Frage gehört in dieses Forum.

Im global script werden ja nicht Character-Objekte von "A_TALK_TO" ausgeschlossen (was normalerweise auch Sinn macht).
Ich möchte aber einen Dialog mit einem leblosen Gegenstand führen (wie zum Beispiel toter Cousin Ted). Da es keine Antworten gibt, würde ich gerne darauf verzichten, den leblosen, unanimierten Gegenstand in einen Charakter umzuwandeln. Ich finde es unschön, dass ich den Character nicht in der Room-Ansicht sofort sehen kann u.A.

Lässt sich das irgendwie bewerkstelligen?

(Wenn ich meinen leblosen Gegenstand als Charakter deklariere, taucht dieser komischerweise im Startbildschirm auf, nicht aber in dem Raum mit der vorgegebenen Raumnummer)

Verfasst: 03.08.2005, 02:13
von Kate
Du willst also mit einem Object sprechen, wenn ich das richtig verstanden habe.

Ich habe das mal versucht, indem ich diese Zeile gelöscht habe, glaube ich (also nicht gelöscht, sondern // davorgeschrieben habe
else if (parameter == 3)
{
cond = ((isAction (A_TALK_TO) || (isAction (A_GIVE_TO) && (GetCursorMode () == 4))) && (GetLocationType (mouse.x, mouse.y) != 2));
}

So hatte es funktioniert. Ist aber denke ich nicht die optimalste Lösung.
Ich habe nochmal geschaut und da sind mir diese Zeilen aufgefallen.

if (GlobalCondition (2) || GlobalCondition (3) || GlobalCondition (4))
{
StrCopy (location, ">n");//Dont send the name of the hotspt/obj/char/inv to the action bar and set default action "none"
}

Die GlobalCondition(3) steht für die Aktion, wenn man mit einem Object sprechen oder ihm was geben will.

Meiner Ansicht nach müsste man das jetzt einfach rausnehmen.

Also:
if (GlobalCondition (2) || GlobalCondition (4))
{
StrCopy (location, ">n");//Dont send the name of the hotspt/obj/char/inv to the action bar and set default action "none"
}


Ich habe es aber nicht ausprobiert, musst du mal gucken. :)

(Nach den Zeilen kannst ja mit der Suchfunktion suchen)

nicht global sondern Objektspeziefisch

Verfasst: 03.08.2005, 09:13
von Corny
Ja, diese Zeilen habe ich auch schon gefunden. Sie stehen im Globalen Script.

Problem ist, dass ich das globale Script ungern ändern möchte. Dann könnte ich ja plötzlich mit jedem Objekt sprechen, obwohl ich nur mit einem einzigen Objekt reden will.

Gibt es nicht me möglichkeit, wie man das für das spezifische Objekt umschalten kann?

Vielleicht kann man das globale Script verändern wie:
">wenn A_TALK_TO gewählt ist --> wenn Objekt kein Charakter -->
- wenn Objekt die Variable SPRICH_MIT_MIR gesetzt hat, dann gib 0 zurück
- ansonsten deaktiviere die Interaktionsmöglichkeit mit Objekt"

Verfasst: 03.08.2005, 10:33
von andi_z
Hmmmm... man könnte es auch einfach so lösen, dass du einen völlig pinken (d.h. in AGS transparenten) Charakter erstellst (ist in max 1 Min erledigt) und ihn dann über das Objekt setzt und mit dem dann redest. Das kommt für den Spieler genau so an, als ob er mit dem Objekt spricht

Verfasst: 03.08.2005, 10:41
von [ZENSIERT]
Nein, geht bei Pixel-Perfect detection nicht. Stattdessen einen Screenshot erstellen, die betreffende Stelle rausschneiden und als Charakter einfügen und diesen an entsprechender Stelle einfügen

Nächste Frage 8)

Verfasst: 03.08.2005, 12:46
von Anonymous1
Ich würde den Cousin Ed als Charakter erstellen.
Du machst ein Screenshot, am besten bei Episode X, nimmst Ed raus und fügst ihn als Charakter ein.
Dadurch kannst du mit ihm auch sprechen.

Verfasst: 03.08.2005, 13:09
von Corny
hm ja, das dachte ich mir schon fast.

nun denn, werde ich es mal so probieren