2 Fragen... (2 Probleme - keine leichten) - Und Weiteres

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

2 Fragen... (2 Probleme - keine leichten) - Und Weiteres

Beitrag von Timer »

1. Frage: Kann ich einen Charakter mehrmals in einem Raum auftreten lassen (z.B. um Zwillinge darzustellen)?
2. Frage: Kann ich ein neues Objekt im Spiel einfügen während es läuft?

Ich bezweifle selbst, dass eine der beiden Sachen funktionniert, aber vielleicht kann mir hier jemand weiterhelfen, wie ich das Problem anders lösen kann...
Zuletzt geändert von Timer am 16.12.2007, 16:32, insgesamt 1-mal geändert.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

1. Nimm mehrere Charaktere und weise ihnen die gleiche Normal- und Speechview zu.
2. Nein. Ich müsste wissen, was Du erreichen willst, um dir einen sinnvollen Workaround vorzuschlagen.
Use gopher repellent on funny little man
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Also schon mal danke so weit... :)
KhrisMUC hat geschrieben:1. Nimm mehrere Charaktere und weise ihnen die gleiche Normal- und Speechview zu.
Das habe ich mir bereits gedacht. Ich fand es nur etwas umständlich, da dieser Charakter gut und gerne 20mal in einem Raum auftritt... :lol:
KhrisMUC hat geschrieben:2. Nein. Ich müsste wissen, was Du erreichen willst, um dir einen sinnvollen Workaround vorzuschlagen.
Es geht um ein Minispiel. In diesem soll der Charakter Schüsse abfeuern können, die man dann über den Bildschirm fliegen sehen kann, bis sie das nächste Ziel erreichen und dort zerplatzen. Das Schwierige daran ist, dass man beliebig viele Schüsse abschießen und sich unabhängig von ihnen bewegen können soll. Sonst würde ich einfach ein paar Objekte definieren, sie außerhalb des Bildschirmrandes plazieren und diese dann verwenden. Allerdings verwende ich sowieso schon recht viele Objekte, also könnte das theoretisch das Objektlimit sprengen. Wie viele Objekte kann man eigentlich pro Raum verwenden?
Benutzeravatar
hookepack
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 36
Registriert: 04.04.2007, 13:34
Wohnort: wiesbaden

Beitrag von hookepack »

Zitat:
Wie viele Objekte kann man eigentlich pro Raum verwenden?
Äh ich glaube zwanzig ist das Limit.

ja doch Zwanzig.



Hookepack
Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: "Das ist technisch unmöglich!"
Peter Ustinov
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Da liegt das Problem. 20 Objekte reichen mir dafür nicht aus.
Benutzeravatar
Kaktus
Tastatursteuerer
Tastatursteuerer
Beiträge: 658
Registriert: 17.02.2006, 01:45
Wohnort: Wüstä
Kontaktdaten:

Beitrag von Kaktus »

Dann musst das wohl über RawDrawImage() und RawRestoreScreen() machen.
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Klingt wie ein guter Vorschlag. Danke, Kaktus! Ich müsste mich nur in RawDraw einarbeiten. Habe es noch nie verwendet. Aber wenn sich das, was ich machen will, mit RawDraw klappt, dann wäre es richtig gut. :)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Jepp, RawDraw() ist die einzig vernünftige Möglichkeit.

Im Grunde musst Du "nur" in der rep_ex Folgendes haben:

-RawRestoreScreen();
-Alle_Objekte_Zeichnen();
-Wait(1);

Nimm einen array, um die Geschosse zu verwalten.
Use gopher repellent on funny little man
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Also gut - ich danke schon mal sehr. Ich bin an der Umsetzung. Ist aber komplizierter als gedacht...
Zudem kommt jetzt diese seltsame Fehlermeldung:
Bild
Als Fehlerhaft wird die Zeile mit dem X gemeldet:

Code: Alles auswählen

struct Schuss{
  int X; 
  int Y; 
  int Abgefeuert;
};
Kann mir hier jemand weiterhelfen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ich würd die struct-Deklaration in den header schreiben (da gehört sie eigentlich auch hin).
Nachher hast Du sowieso "Schuss schuss[100];" o.Ä. im global script stehen, damit ist der Array eh global.
Falls Du den Fehler immer noch kriegst, nimm statt "X" mal "x" oder "xpos".
Use gopher repellent on funny little man
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Danke - Xpos hat das Problem beseitigt. :)
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Bitte antwortet einem doofen Deppen...
Ich kriege das Zeichnen der Schüsse nicht hin.
Im Script Header definiere ich einen Struct für die verschiedenen Schüsse:

Code: Alles auswählen

struct Schuss{
  int Xpos; 
  int Ypos; 
  int Abgefeuert;
  int Bild;
  int stoesst;
};

Schuss Feuer[40];
Im room script (repeatly_execute) habe ich folgendes:

Code: Alles auswählen

if (IsKeyPressed (13)){
  if (SchussTasteUnten == false){
    SchussTasteUnten = true;
    if (AktuellerSchuss != 40) AktuellerSchuss=AktuellerSchuss+1;
    else AktuellerSchuss = 0;
    Feuer[AktuellerSchuss].Xpos = player.x;
    Feuer[AktuellerSchuss].Ypos = (player.y - 20);
    Feuer[AktuellerSchuss].Abgefeuert = true;
    Feuer[AktuellerSchuss].Bild = 219;
  }
}
else SchussTasteUnten = false;

RawRestoreScreen ();
SchuesseZeichnen (AktuellerSchuss); 
Dazu kommt die Schüsse-Zeichnen Funktion im GS:

Code: Alles auswählen

function SchuesseZeichnen (int AS) {
  
  int SZ = 0;
  while (SZ <= AS){
		if (Feuer[SZ].stoesst == false) //Wenn Schuss nirgends anstößt
		{ 
			RawDrawImage (Feuer[SZ].Xpos, Feuer[SZ].Ypos, Feuer[SZ].Bild); //Zeichne Geschoss
			Feuer[SZ].Xpos = Feuer[SZ].Xpos - 3; //Ändere Geschossposition
		}
		else {
			if (Feuer[SZ].Bild <= 230) { //Wenn Bild Endbild
				Feuer[SZ].Bild ++; //Bild hochstufen
				RawDrawImage (Feuer[SZ].Xpos, Feuer[SZ].Ypos, Feuer[SZ].Bild); //Platzanimation
			}
	  }
	  if (Feuer[SZ].Xpos <= 0) Feuer[SZ].stoesst = true;
    SZ=SZ+1;
	}
}
Wahrscheinlich habe ich mich irgendwie komplett verfahren...
oder ich habe eine Kleinigkeit übersehen...

Ich fände jede Hilfe auf jeden Fall klasse! :)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Sei unbesorgt, dir ist nur ein kleiner Schnitzer unterlaufen :)

Code: Alles auswählen

// header
import Schuss Feuer[40];

// gs
Schuss Feuer[40];
export Feuer;
Wenn Du "Schuss Feuer[40];" im header stehen hasst, endest Du mit mehreren Arrays, einem fürs GS und einem für jeden Raum. Die heißen zwar alle gleich, sind aber de facto unterschiedliche Variablen.
Deswegen zeichnet das GS alles bei 0:0.
Use gopher repellent on funny little man
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Da bin ich aber beruhigt. :)
Vielen, vielen Dank, KhrisMUC! :D

(Was wäre ich ohne dich?)
Benutzeravatar
Timer
Süßwasserpirat
Süßwasserpirat
Beiträge: 260
Registriert: 27.02.2007, 17:35

Beitrag von Timer »

Hm. Leider klappt es immer noch nicht viel besser...
Ich drücke zwar auf ENTER, aber es kommt kein Geschoss.
Antworten