Character soll eine längere Strecke ablaufen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Lak
Rätselmeister
Rätselmeister
Beiträge: 1586
Registriert: 27.02.2005, 10:43
Wohnort: London (England)

Character soll eine längere Strecke ablaufen

Beitrag von Lak »

Ich bin am verzweifeln. Zwei, nagut drei Wochen rühr ich das Programm nicht an und schon komm ich garnicht mehr zurecht. Schlimm ist das.

Mein Problem:

Mein Character (nicht der Spielercharacter) soll eine längere Strecke gehen. Also nicht nur von a nach b sondern erst von a nach b dann nach c dann nach d kurz stehenbleiben und so weiter. Normal funktioniert das mit MoveCharacter und Wait, ich weiß. Soweit krieg ich das ja locker hin, schafft ja jeder Anfänger. Aber ich will nen Zusatz: Dieser Character soll die Strecken ablaufen und dabei stehen bleiben WÄHREND ich mit dem Spielercharacter etwas ganz anderes machen kann. Also ich kann mit dem EGO auch grad in nem ganz anderen Raum sein und der macht trotzdem weiter, nur seh ich ihn halt nicht.

Ich hatte das schonmal hinbekommen mit ner halben Stunde pruckeln oder so, da das aber nur n Versuch war gelöscht und jetzt bin ich schon den halben Tag am verzweifel, sage mir die ganze Zeit, dass ich das selbst rausfinden will, aber ich schaff es nicht.

Jemand ne Idee?

Mit freundlichem Gruß,
the Lak.
...
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

Character.Walk(int x, int y, optional BlockingStyle,
optional WalkWhere);

entscheidend ist der Blocking Style.
vielleicht hilft dir das weiter.
Benutzeravatar
Lak
Rätselmeister
Rätselmeister
Beiträge: 1586
Registriert: 27.02.2005, 10:43
Wohnort: London (England)

Beitrag von Lak »

Entweder eNoBlock oder eBlock muss man da machen.

Bei einem bleibt er stehen wenn man den Raum wechselt und geht an von der Stelle wo er stehenblieb nach B weiter wenn man wiederkommt, beim zweiten kann man den Raum nicht wechseln. Er soll jedoch weitergehen auch wnen man den Raum wechselt!
...
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Auch mal diese Funktion probiert?

cTyp.AddWaypoint

Das Anhalten müsste mit Timern machbar sein.
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
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

Beitrag von Floyd »

Ich glaube, das Problem an der Sache ist, dass man Charaktere, die sich nicht im "aktiven" Raum befinden, wohl generell nicht bewegen kann (Abgesehen vom Teleportieren).

In diesem Fall müsstest du über einen Zähler abfragen, wie lange sich der Spieler im anderen Raum aufgehalten hat und was für eine Strecke der andere Charakter in dieser Zeit zurückgelegt hätte, wenn er sich hätte bewegen können, abhängig vom Startpunkt natürlich.
Einfacher wäre es aber natürlich, wenn du ungefähr wüsstest, wo sich die Figur nach dem Raumwechsel befinden müsste, dann könntest du die Koordinaten einfach manuell verändern.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Room script:

Code: Alles auswählen

int state;
int states=5; // anzahl####
int x[6];  // entsprechend miterhöhen####
int y[6];  // ####
Character*wanderer;

function nextstate(int s) {
  if (s==states) return 1;
  else return s+1;
}

function prevstate(int s) {
  if (s==1) return states;
  else return s-1;
}

function dostate() {
  if (y[state]==0) SetTimer(1, x[state]);
  else wanderer.Walk(x[state], y[state]); // default: eNoBlock, eWalkableAreas
}

function ... {
  // before fadein

  x[1]=?; y[1]=?;  // hier die Wegpunkte festlegen####
  x[2]=?; y[2]=?;  //####
  x[3]=?; y[3]=?; //####
  x[4]=?; y[4]=?; // ####
  x[5]=80; y[5]=0;   // y=0 -> x frames warten statt####
                     // neuem Wegpunkt
  wanderer=cBernhard; // hier den "Wanderer" festlegen####

  state=Random(states-1)+1;  // zufälliger Anfang
  int prev=prevstate(state);
  while (y[prev]==0) prev=prevstate(prev); // vorherigen Weppunkt
  wanderer.x=x[prev];        // finden für Startposition
  wanderer.y=y[prev];
  dostate();
}

function ... {
  // room's rep ex
  if (y[state]!=0 && wanderer.Moving==false) {
    state=nextstate(state);
    dostate();
    return;
  }
  if (y[state]==0 && IsTimerExpired(1)) {
    state=nextstate(state);
    dostate();
  }
}
Alle Zeilen mit #### drin müssen angepasst werden.
Die Wegpunkte bzw. Pausen sollten beliebig festlegbar sein nach dem angegebenen Schema. (x,y: wegpunkt, x,0: x/40 Sek. warten)
Das Ganze ist hoffentlich fehlerfrei, ich war zu faul, es zu testen ;)

Das sich der Charakter auch in der Abwesenheit des Spielers bewegt, habe ich durch einen Zufallseinstieg in den "Rundgang" des Charakters eingebaut.
Normalerweise sollte es ja nicht nötig sein, dass das Timing exakt stimmt, bzw. dass sich der Charakter während der Abwesenheit tatsächlich bewegt. Hauptsache, dieser Eindruck entsteht.

EDIT: Code korrigiert.
Zuletzt geändert von KhrisMUC am 06.06.2006, 20:00, insgesamt 1-mal geändert.
Benutzeravatar
Lak
Rätselmeister
Rätselmeister
Beiträge: 1586
Registriert: 27.02.2005, 10:43
Wohnort: London (England)

Beitrag von Lak »

Funzt nicht - Kommen dauernd fehler, obwohl ich die relevanten Dinge ergänzt habe.
...
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

character control module von strazer:

http://www.bigbluecup.com/yabb/index.php?topic=24489.0

imo genau das was du brauchst.
Benutzeravatar
Lak
Rätselmeister
Rätselmeister
Beiträge: 1586
Registriert: 27.02.2005, 10:43
Wohnort: London (England)

Beitrag von Lak »

Hab das Demogame reingemacht... geöffnet, gestestet => Fehlermeldung

Dann hab ich mich am Kopf gekratzt und festgestellt das ich AGS27 habe statt 27.1 - aaaaaaaaaaaaaaaaaaaaaaaargh! :oops:

thx für den Link, ich lad grad 27.1 und versuchs dann nochmal :)
...
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Also erstmal ist es 2.71 und nicht 27.1

Ich hab meinen Code ins Syd-Pack reinkopiert (AGS 2.7!).
Da kommen genau zwei Fehlermeldungen:
1. cBernard ist ein unbekannter Charakter (er heißt im Pack immer noch BernHard)
2. "variable state is already defined", da musste das "int" davor weg.

Beide Fehler sind auch für Laien locker selbst korrigierbar, IMO.

Danach hat der Code perfekt funktioniert, abgesehen davon, dass Bernard an einem Wegpunkt ohne Pause stehengeblieben ist, wenn Syd gerade geredet hat.

Bevor Du also ein banales "funzt nicht" loslässt, solltest Du vielleicht selber Dein Hirn kurz anstrengen.
Benutzeravatar
Lak
Rätselmeister
Rätselmeister
Beiträge: 1586
Registriert: 27.02.2005, 10:43
Wohnort: London (England)

Beitrag von Lak »

Sorry das ich das Programm nicht so gut kann wie du. Das ist natürlich ein Unverschämtheit und ich bitte dies vielmals zu endschuldigen :roll: :roll:

Trotzdem danke und ich wünsch dir einen schöneren Abend als dein Tag anscheinend war...

Mit freundlichem Gruß,
the Lak.
...
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ich hätte wissen müssen, dass ich keine vernünftige Antwort bekomme.
Du hast nichtmal die Fehlermeldungen gepostet, also offensichtlich auch kein Interesse an meiner Lösung gehabt. Auch das hätte ich eigentlich vorher wissen müssen.

Wird nicht wieder vorkommen.
Antworten