Autor Thema: .Walk nach einem Dialog?  (Gelesen 22588 mal)

cast

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 29
  • Geschlecht: Männlich
    • ICQ Messenger - 107562728
    • Profil anzeigen
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #15 am: 16. Juli 2007, 22:39:05 »
Vielen danke für eure schnellen antworten.

wieder mal ein problem dabei.
ich habe schon eine dialog request function, die halt weiter oben mir schon reinkopiert wurde.

variable: dialog_request is already defined.

Wie kann ich das jetzt so ändern, dass das script geht.

oh man, habe mir das ganze wesentlich einfacher vorgestellt... zumal ich noch keine objekte oder inventargegenstände habe.
Ted is red.
See red Ted.

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #16 am: 16. Juli 2007, 22:42:50 »
Warum benutzt du denn dann nicht einfach die vorgegebene dialog_request? ;)
Kopiere doch einfach den Inhalt deiner Dialog_request in die vorherige und lösche die zweite (Dann überflüssige) aus dem Script. Damit müsste dein Problem behoben sein.

cast

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 29
  • Geschlecht: Männlich
    • ICQ Messenger - 107562728
    • Profil anzeigen
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #17 am: 16. Juli 2007, 22:59:16 »
haha:D
weil ich nicht soweit gedacht habe :D

mal schauen ob ich mir eine if abfrage machen kann, dass erst ein dialogoption mit einem character möglich ist, wenn man mit einem anderen z.b. über ihn gesprochen hat, also ein dialogoption mit jemanden anderen abgheackt ist.
Ted is red.
See red Ted.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: .Walk nach einem Dialog?
« Antwort #18 am: 16. Juli 2007, 23:07:29 »
Du brauchst kein if, das geht wieder genauso.
Ins Dialogscript schreibst Du bei dem Gespräch über den anderen Charakter "run-script 3" mit rein.

Und in die bestehende dialog_request kommt dann:
  if (xvalue==3) dAndererdialog.SetOptionState(x, eOptionOn);
Du merkst, es zeichnet sich ein Muster ab ;)

cast

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 29
  • Geschlecht: Männlich
    • ICQ Messenger - 107562728
    • Profil anzeigen
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #19 am: 16. Juli 2007, 23:08:47 »
hi danke, habs aber selbst hinbekommen, zumal aber das in mein script2 reinpasst. schließlich rede ich in dem ersten satz über die person.

Aber vielen dank:D

EDIT:

ABER:

function dialog_request (int xvalue) {
 
// das hier musst du selber reinschreiben
if(xvalue == 1) {
character[JEFF_OLD].Walk(800, 122, eBlock, eAnywhere);
oDooropen.Visible = true;
PlaySound(2);   // türöffen sound
player.ChangeRoom(20,580,137);
}
 }

Es kommt immernoch die meldung, dass sie undefiniert ist, also die Tür, obwohl das Objekt so heißt.

Mit
object[oOpendoor].Visible=true;Da kommt die Meldung: undefined symbol.
« Letzte Änderung: 16. Juli 2007, 23:38:15 von cast »
Ted is red.
See red Ted.

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2681
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: .Walk nach einem Dialog?
« Antwort #20 am: 17. Juli 2007, 08:04:21 »
ja, weil die tür im raum definiert ist und nicht im globalen skript
auswendig weiss ich jetzt keine 100%ige lösung und AGS hab ich momentan leider nicht zur hand...
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: .Walk nach einem Dialog?
« Antwort #21 am: 17. Juli 2007, 08:43:25 »
1. Statt "character[JEFF_OLD]" geht auch "cJeff_old".
2. [...] Da die dialog_request im global script ist, kann man keine O-Names für Objekte verwenden, statt dessen muss "object[X]" verwendet werden.
Statt dem X die Objektnummer eintragen.

cast

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 29
  • Geschlecht: Männlich
    • ICQ Messenger - 107562728
    • Profil anzeigen
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #22 am: 18. Juli 2007, 00:41:41 »
ja, habe ich schon probiert.
Aber dann stürzt es einfach ab.

Muss ich erst das Object Tür als also obeject[] definieren?

Ausserdem habe ich folgendes Problem.
Ich habe jetzt vollkommen neu angefangen, da das Startpack mir zuviel scripte hatte, die ich am ende nicht brauche.

Jetzt habe ich das Problem, dass die Eingangtür im ErdgeschossQuer(also mein Object) mein Character überdeckt.

Er verschwindet also in der geöffnetet Tür.
Habe schon die Objects verglichen, aber ich sehe keinen unterschied zu meinem.


EDIT: Aber nochmal zu vorheriger Problem, dass die Tür nicht als object erkannt wird.
Wenn die Tür schon auf ist, brauch ja kein Ton mehr kommen. Wie regel ich dass denn gleich mit?
« Letzte Änderung: 18. Juli 2007, 01:09:08 von cast »
Ted is red.
See red Ted.

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: .Walk nach einem Dialog?
« Antwort #23 am: 18. Juli 2007, 01:43:41 »
Wegen dem Verschwinden hinter der Tür, da kann ich helfen:

Du musst im 'Room Editor' bei den 'Objects' die Tür auswählen, dann klickst du auf den 'Set baseline'-Button (neben 'Interaction') und schiebst die Linie an den oberen Bildrand. Das bewirkt, dass AGS die Grundlinie als weiter hinten im Raum erkennt und Bernard dann vor die Tür gesetzt wird.  ;)

cast

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 29
  • Geschlecht: Männlich
    • ICQ Messenger - 107562728
    • Profil anzeigen
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #24 am: 18. Juli 2007, 03:07:57 »
danke  ;D

Habe noch eine weitere Frage, neben dem definieren eines objects in der global


Und zwar:
Bei einem Gespräch soll eine Kamerafahrt nach links verlaufen und wieder zurück fahren.
Problem: Ich kann keine feste X-Position angeben, da ich ja beim sprechen mit dem char entweder links oder rechts stehe oder gar unter/über ihm.
Aber das kann ich ja fixen, indem ich bei Ansprechen meinem ego eine feste x position zu weise.

Dennoch steht er entweder rechts oder links und mein script sieht bisher so aus:

if (xvalue==3){
 
{
  StartCutscene(eSkipESCOrRightButton);
  GUIOff(0);
  GUIOff(1);
  GUIOn(2);
  int x;
x = 300;
if (player.x < x) {

while(x > 50)
{
  x-=4;
  SetViewport(270, 0);
  Wait(1);
}
  Wait(20);
while(x< 175)
{
  x+=4;
  SetViewport(x, 0);
  Wait(1);
}

 {

else (player.x > x) {
while(x > 50)
{
  x-=4;
  SetViewport(x, 0);
  Wait(1);
}
  Wait(20);
while(x< 175)
{
  x+=4;
  SetViewport(330, 0);
  Wait(1);
}

  GUIOn(0);
  GUIOn(1);
  GUIOff(2);
EndCutscene();
}
}
}
}
}
}

Leider kommt eine Fehlermeldung wegen dem else.
Kann man mir da helfen?
Ted is red.
See red Ted.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: .Walk nach einem Dialog?
« Antwort #25 am: 18. Juli 2007, 09:35:49 »
Mal der Reihe nach:

object[] ist ein von AGS definierter array. Die einzelnen Elemente enthalten die Objekte des momentan geladenen Raumes, also object[0] ist das erste Objekt, object[1] das zweite, usw.
Warum es beim Testen abgestürzt ist, kann ich Dir nicht sagen, eventuell hast Du z.B. object[1] verwendet, obwohl der Raum nur ein Objekt (nämlich Nr. 0) hat.
Die Nummer eines Objekts kannst Du unter Room -> objects links oben ablesen.

Zum code:
Gewöhn Dir am Besten von Anfang an sinnvolles Einrücken und Klammersetzen an. Sonst wird es nachher nur mühsam. Debuggen macht bei weitem nicht so viel Spass wie coden. :)

Hier eine aufgeräumte Version, mit korrigierten Klammern:
  if (xvalue==3) {
    StartCutscene(eSkipESCOrRightButton);
    GUIOff(0);
    GUIOff(1);
    GUIOn(2);
    int x;
    x = 300;
    if (player.x < x) {
      while(x > 50) {
        x-=4;
        SetViewport(270, 0);
        Wait(1);
      }
      Wait(20);
      while(x< 175) {
        x+=4;
        SetViewport(x, 0);
        Wait(1);
      }
    }
    else {
      while(x > 50) {
        x-=4;
        SetViewport(x, 0);
        Wait(1);
      }
      Wait(20);
      while(x< 175) {
        x+=4;
        SetViewport(330, 0);
        Wait(1);
      }
     
      GUIOn(0);
      GUIOn(1);
      GUIOff(2);
      EndCutscene();
    }
  }
Mir ist nicht ganz klar, was der Code genau bewirken soll, aber SetViewPort(270, 0); in der while-Schleife ca. 80 mal hintereinander aufzurufen, macht keinen Sinn.
EndCutscene(); steht nicht außerhalb sondern im else-Block, d.h. es wird nicht immer ausgeführt. Muss es aber.

Nach else brauchst Du nicht nochmal die Bedingung in Klammern, else behandelt jeden Fall, der nicht durch if (/else if) abgedeckt worden ist.
if (player.x < x) {
  ...
}
else if (player.x > x) {
  ...
}
else {
  Display("player.x ist genau x!");
}

cast

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 29
  • Geschlecht: Männlich
    • ICQ Messenger - 107562728
    • Profil anzeigen
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #26 am: 18. Juli 2007, 16:06:43 »
Zu dem Object: DANKE!

Habe total vergessen, dass das erste Object als object[0] erkannt wird.

Zum Zweiten: DANKE!

Es ist eine "Kamerafahrt" in dem Raum, sie fährt nach links und dann wieder nach rechts.

Problem dadurch:
Ich denke es liegt an dem letzten SetViepoint, der Screen lässt sich nämlich nicht weiter "scrollen". Er würde halt an den Seiten noch weitergehen, jedoch bleibt der Bildausschnitt bei den SetViewpoint, anstatt wieder dem ego zu folgen.
Habe bisher nichts dazu gefunden.
Ted is red.
See red Ted.

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #27 am: 18. Juli 2007, 16:10:59 »
ReleaseViewport () lautet die Lösung. Damit lässt sich die "Kamera" wieder frei bewegen.

cast

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 29
  • Geschlecht: Männlich
    • ICQ Messenger - 107562728
    • Profil anzeigen
    • E-Mail
Re: .Walk nach einem Dialog?
« Antwort #28 am: 18. Juli 2007, 23:47:29 »
dankschön!

Soo, mal wieder eine Frage:

Ich habe vor einen Penner vor dem Müllcontainer der Schule "suchen" zu lassen.

Ich habe also eine View mit "gestreckten" armen gemacht die sich bewegen.
Wie kriege ich das jetzt hin, dass diese View ständig läuft, bis ich ihn halt anspreche und der Talkview kommt? Danach soll wieder die andere View kommen.

EDIT die letzte... vorerst:

Hat geklappt. Bin wohl immer ein wenig zu ungeduldig.

Dafür stehe ich jetzt vor einem echten Problem. Jedesmal klappt das hier:
ChangeCharacterView(PENNER,39);
AnimateCharacter(PENNER,0,1,1);

Nur nicht nach dem TALK_TO...
Ich habe auch schon in dem dDialog ein script starten lassen, so das der obrige code in der dialog request steht.
Ich habe davor auch schon ein Wait(1) gesetzt, weil ich dachte vielleicht hat das damit zu tun.

So sieht die dialog request aus:
if (xvalue==4)
    {
      Wait(1);
      ChangeCharacterView(PENNER,39);
      AnimateCharacter(PENNER,0,1,1);
    }

Und so sah es in der interaction mit dem Char aus:
  else if (UsedAction (A_TALK_TO))
{
 {
  GoToCharacter(cPenner.ID, 0, 1, 2);
      FaceCharacter (GetPlayerCharacter (), PENNER);
      FaceCharacter (PENNER, GetPlayerCharacter ());
      dPenner.Start();
      ChangeCharacterView(PENNER,39);
      AnimateCharacter(PENNER,0,1,1);
 }
}
« Letzte Änderung: 19. Juli 2007, 05:14:10 von cast »
Ted is red.
See red Ted.

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2681
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: .Walk nach einem Dialog?
« Antwort #29 am: 19. Juli 2007, 08:31:50 »
um den penner suchen zu lassen brauchst du garkeinen extra code!
verwende einfach die "im müll suchen"-view als idle-view des charakters und setz die wartezeit auf 0

EDIT: hmm, bin mir jetzt aber nicht sicher, ob die idle-view bei einem NonPlayerCharacter überhaupt funktioniert...  :-\
« Letzte Änderung: 19. Juli 2007, 08:36:12 von Bòógieman »
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<