Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: Timer am 20. Mai 2007, 12:36:33
-
Ich habe ein Problem (AGS 2.72). Ich habe in meiner Episode einen Charakter eingebaut, dem man auch etwas geben können sollte... Nur bereitet das Probleme. Wenn ich das Script in "Use Inventory on Charakter" reinschreibe, funktioniert es soweit, dass der Spielercharakter seinen Kommentar bei "gib" und bei "benutze...mit" sagt. Allerdings geht er dann zur Person hin und sagt einen Stardardkommentar. Wenn ich das Script unter "any click on Charakter" reinschreibe, reagiert der Spielercharakter nur auf "benutze...mit". Ich hätte aber gerne, dass man beides verwenden kann und dass er nur einmal einen Kommentar abgibt. Hat jemand eine Lösung für mich?
-
Jepp, dann darfst du bei "any click on character" kein "else unhandled ();" mehr verweden. 8)
-
Ah, danke! Denke, die Episode ist nun bald bereit zur Veröffentlichung. 8) :)
-
Na, dann rückt ja das Ende der 6. Staffel langsam aber sicher näher! ;D
-
Dann schreib ich hier doch gleich nochmal eine Frage rein: Um zu überprüfen, ob der Spielercharakter einen Gegenstand hat, kann man das mit player.inv == 3 bzw. player.inv[3] == true machen?
Edit: Erledigt...
-
Für den Fall, das jemand anderes das mal braucht/liest:
if (player.InventoryQuantity[iZeug.ID]>0) ...
-
Habe auch eine Frage zum Thema Gegenstände geben:
Was muss ich ins Skript eines Charakters schreiben, damit er nur dann einen Gegenstand annimmt, wenn man denn Befehl (Gib x an y) gibt und nicht allgemein wenn man ihm etwas zu geben versucht. Habs nämlich in keinem Tutorial oder in der Anleitung für das AGS gefunden. Wenn ich das nur blöde Übersehen habe bitte ich um Nachsicht, da ich das Programm erst seit lurzem haben und mich auch in den unendlichen weiten dieses Forums noch nicht so aus kenne.
Wäre nett wen mir jemand helfen könnte.
-
Das ist leider ein etwas kompliziertes Thema, da die Starterpacks nach wie vor so ausgelegt sind, dass die Charaktere 0-6 Gegenstände kommentarlos austauschen.
Folgendes sollte klappen:
1. Ersetze im global script in der Funktion on_mouse_click den Code für den linken Mausbutton durch dieses hier:
else if (button == LEFT)
{
if (GlobalCondition (2) || GlobalCondition (3) || GlobalCondition (4))
{
// SetMode("default");
}
else if (GSagsusedmode == 9)
{
// walk to
SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
if (IsInteractionAvailable (mouse.x, mouse.y, GSagsusedmode)) ProcessClick (mrx - GetViewportX (), mry - GetViewportY (), GSagsusedmode);
else ProcessClick (mrx - GetViewportX (), mry - GetViewportY (), MODE_WALK);
}
else if ((GSagsusedmode == MODE_TALK) && (IsInteractionAvailable (mouse.x, mouse.y, GSagsusedmode) == 1) && (GetCharacterAt (mouse.x, mouse.y) < 7))
{
SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
if (GoToCharacter (GSlocid, 0, 1, 2)) RunCharacterInteraction (GSlocid, GSagsusedmode);
SetAction (A_DEFAULT);
}
else
{
UpdateActionBar ();
SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
ProcessClick (mrx - GetViewportX (), mry - GetViewportY (), GSagsusedmode);
SetAction (A_DEFAULT);
}
}
2. Dann wie mit den anderen Verben in "any click on character":
else if (UsedAction(A_GIVE_TO)) {
if (player.ActiveInventory==iItem) {
// bla
}
else Unhandled();
}
-
Danke sehr!
Damit hats funktioniert!
Damit steht meinem eigenen MMM-Adventure nichts mehr im Wege!