Autor Thema: Mit objekten reden?  (Gelesen 2278 mal)

Der Kompaniechef

  • volljähriger Tentakel
  • *****
  • Beiträge: 689
    • Profil anzeigen
Mit objekten reden?
« am: 22. August 2011, 14:56:41 »
Moin! Hab ein kleines Problem unter ags 3.1 Ich möchte das mein char mit einen objekt redet. Dies will er aber nicht. das ist mein script:

function object1_a() {
  
if (UsedAction (A_WALK_TO)) {
if (MovePlayer (252,130)) {
  }
}

else if (UsedAction (A_OPEN)) {
if (MovePlayer (252,130)) {
FaceDirection (GetPlayerCharacter (),  DIR_UP);
DisplaySpeech (GetPlayerCharacter (), ".");
  }
}
else if (UsedAction (A_USE)) {
if (MovePlayer (252,130)) {
FaceDirection (GetPlayerCharacter (),  DIR_UP);
    DisplaySpeech (GetPlayerCharacter (), "");
  }
}
else if (UsedAction (A_PUSH)) {
if (MovePlayer (252,130)) {
  FaceDirection (GetPlayerCharacter (),  DIR_UP);
    DisplaySpeech (GetPlayerCharacter (), ".");
  }
}
else if (UsedAction (A_PULL)) {
if (MovePlayer (252,130)) {
  FaceDirection (GetPlayerCharacter (),  DIR_UP);
    DisplaySpeech (GetPlayerCharacter (), ".");
  }
}
else if (UsedAction (A_LOOK_AT)) {
if (MovePlayer (252,130)) {
    FaceDirection (GetPlayerCharacter (),  DIR_UP);
       DisplaySpeech (GetPlayerCharacter (), ".");
  }
}
else if (UsedAction (A_TALK_TO)) {
if (MovePlayer (252,130)) {
    FaceDirection (GetPlayerCharacter (),  DIR_UP);
       DisplaySpeech (GetPlayerCharacter (), "Das ist das problem!!");
  }
}
else if (UsedAction (A_PICK_UP)) {
if (MovePlayer (252,130)) {
    FaceDirection (GetPlayerCharacter (),  DIR_UP);
DisplaySpeech (GetPlayerCharacter (), ".");
  }
}
else if (UsedAction (A_CLOSE)) {
if (MovePlayer (252,130)) {
    FaceDirection (GetPlayerCharacter (),  DIR_UP);
DisplaySpeech (GetPlayerCharacter (), ".");
  }
}
else if (UsedAction (A_USE_INV)) {
  if (character [GetPlayerCharacter ()].activeinv == 182) {
if (MovePlayer (252,130)) {
    FaceDirection (GetPlayerCharacter (),  DIR_UP);
    Wait (5);
    DisplaySpeech (GetPlayerCharacter (), ".");
  }
}
else Unhandled ();
  }  
}


Wer nett wenn einer helfen könnte.
MfG JPJF

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2653
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #1 am: 22. August 2011, 15:59:11 »
objekte unterstützen den rede befehl leider nicht
mach einen character statt dem object  ;)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Der Kompaniechef

  • volljähriger Tentakel
  • *****
  • Beiträge: 689
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #2 am: 22. August 2011, 16:03:02 »
das ist ja blöd.... Kann man dann einfach meinen anyklick auf den char übertragen?

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #3 am: 22. August 2011, 16:17:42 »
Warum ist das skript so kompliziert geschrieben?
im AGS geht das doch einfach:
[ags]
function oComputer_AnyClick()
 {
  if (any_click_move(235, 125, eDirDown))
 {
    if (UsedAction(eActWalkTo))
   {
    //   Wait(5);
   }
    else if (UsedAction(eActLookAt))
    {
      Wait(5);
      player.Say("Ein Computer.");
     }
     else if (UsedAction(eActPickUp))
     {
      Wait(5);
      player.Say("Das ist doch kein Laptop.");
     }
     else if (UsedAction(eActUse))
     {
      Wait(5);
      player.Say("Ich kenne das Passwort nicht.");
     }
     else if (UsedAction(eActOpen))
     {
      Wait(5);
      player.Say("Das mache ich nicht.");
     }
     else if (UsedAction(eActClose))
     {
      Wait(5);
      player.Say("Der hat ein geschlossenes Gehäuse.");
     }
     else if (UsedAction(eActPull))
     {
      Wait(5);
      player.Say("Ich will ihn nicht verschieben.");
     }
     else if (UsedAction(eActPush))
     {
      Wait(5);
      player.Say("Ich will ihn nicht verschieben.");
     }
     else if (UsedAction(eActUseInventory))
     {
      Wait(5);
      player.Say("Das passt hier nicht.");
     }
     else Unhandled();
    }
}
[/ags]
« Letzte Änderung: 22. August 2011, 16:21:12 von ZAK »
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Der Kompaniechef

  • volljähriger Tentakel
  • *****
  • Beiträge: 689
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #4 am: 22. August 2011, 16:53:45 »
ZAK ich habe es mir damals(mit 13oder 14 kp) so mir selber beigebracht.
Meine Script funzt super, warum soll ich dann was anderes mir beibringen?
Außerdem ich mache alles copy and paste dann ist das ja auch voll egal wie lang der script ist.

Bissiger Witzbold

  • volljähriger Tentakel
  • *****
  • Beiträge: 554
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #5 am: 22. August 2011, 17:14:50 »
Nebenbei bemerkt hat das Script den Fehler, daß bei allen Inventargegenständen ausser Nr. 182 keine Reaktion erfolgt.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #6 am: 22. August 2011, 22:52:27 »
das ist ja blöd.... Kann man dann einfach meinen anyklick auf den char übertragen?
Klar, Du musst aber die Funktion neu anlegen und dann nur den Inhalt übertragen.

Kuck dir Zak's Code mal an und vergleich ihn mit Deinem.
Anstatt den Spieler erst zum Gegenstand zu bewegen und dann auf die verschiedenen Aktionen zu reagieren, hast Du die Reihenfolge noch umgedreht (wie in alten Tutorials beschrieben, leider). Du musst also jedesmal in NEUN Zeilen die gleichen Koordinaten und die gleiche Richtung eintragen.

Klar, Zak verwendet außerdem die aktuellen Befehle, aber wenn Du Dir mal fünf Minuten Zeit nimmst und Dir den Code ankuckst, dürfte Dir ganz schnell klar werden, dass das sehr leicht umzusetzen und viel praktischer und zeitsparender ist.

Ist ja nicht so, als müsstest ne neue Sprache lernen.

Wenn Dir allerdings "funzt super" reicht, bitte.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #7 am: 23. August 2011, 08:01:33 »
mal ne ganz dumme Frage...
...wozu gibt es denn eigenglich die Funktion "Talk to object" im AGS?

Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Mit objekten reden?
« Antwort #8 am: 23. August 2011, 11:41:17 »
Dass man mit Objekten nicht reden kann, ist ein "Feature" der MMM-Starterpacks; denn das geht in MM oder DotT auch nicht.
Von AGS aus geht das aber selbstverständlich schon, es ist halt im SP blockiert (die zuständige Funktion heißt GlobalCondition).
Man kann Objekten z.B. auch nichts geben.

Im SP würde man sowieso nicht "Talk to object" verwenden, sondern isAction(eActTalk) in "Any clock on object".

Der Vollständigkeit halber: man könnte das global script locker so umschreiben, dass man mit Objekten reden kann. Es ist aber viel sinnvoller, einfach einen Charakter zu nehmen.