überlege mir gerade ein Prozedur, mit AGS eine Hotspot-Anzeige zu bauen (Version: 2.72). Auf Tastendruck soll der Spieler alle Hotspots (bzw. später auch Objekte) im Raum angezeigt bekommen, die Enabled bzw. sichtbar sind.
Hab ein wenig mit Overlays rumgespielt, allerdings können nur 10 Overlays simulatan angezeigt werden. Das nächste Problem besteht darin, dass die Prozedur nicht an einen Raum gebunden sein soll (daher kann ich nicht die einzelnen Scriptnames der Hotspots checken und gucken, ob sie aktiviert sind).
Daher wollte ich zunächst (Es sei denn, es gibt einen bequemeren Weg), einfach mit den Walk-To-Points arbeiten. Je nachdem, ob Walk-To-Points dem Hotspot zugewiesen sind, soll also ein Hotspot angezeigt werden.
Wegen den maximal 10 Overlays wollte ich einfach mogeln. Die Idee ist, dass ich ein Overlay (AGS-Tasse) auf dem ersten Walk-To-Point zeichne, dann einen Screenshot mache, den Screenshot über die Szenerie lege, das Overlay auf dem nächsten Walk-To-Point mache und dann immer so weiter...
Leider kommt aber bei mit nur völliges Chaos... findet irgendwer die Fehler?
Code: Alles auswählen
if( IsKeyPressed(65 + 7) || IsKeyPressed(9)) {
if(GetGlobalInt(202) == 0) {
SetGlobalInt(202, 1);
DynamicSprite* backgr_hotspots = DynamicSprite.CreateFromScreenShot();
while(GetGlobalInt(202) < 30) {
if( (GetHotspotPointX(GetGlobalInt(202)) != - 1) && (GetHotspotPointY(GetGlobalInt(202)) != - 1) ) {
Overlay* show_spots = Overlay.CreateGraphical(GetViewportX(), 0, backgr_hotspots.Graphic, false);
Overlay* current_spot = Overlay.CreateGraphical(GetHotspotPointX(GetGlobalInt(202)), GetHotspotPointY(GetGlobalInt(202)), 0, true);
backgr_hotspots = DynamicSprite.CreateFromScreenShot();
//Wait(40);
show_spots.Remove();
current_spot.Remove();
}
SetGlobalInt(202, GetGlobalInt(202) + 1);
}
Overlay* all_hotspots = Overlay.CreateGraphical(GetViewportX(), 0, backgr_hotspots.Graphic, false);
//Wait(80);
backgr_hotspots.Delete();
SetGlobalInt(202,0);
all_hotspots.Remove();
}
}