Hauptmenü

Neuigkeiten:

Bitte unterstützt uns und bestellt über diese Links bei Amazon  oder HumbleBumble!

Hilfe zum Maniacweed-Starterpak

Begonnen von 1mal_volltanken, 28. Juli 2026, 15:35:19

Vorheriges Thema - Nächstes Thema

1mal_volltanken

Hallo.

Ich wollte dem Startbildschirm (Room 1) ein Event namens "After_fade_in()" hinzufügen, bekomme aber nur folgende Fehlermeldung:


Room room1.crm was saved, but there were warnings; details below
room1.asc: Function "room_AfterFadeIn" looks like an event handler, but is not linked on Room 1's Event pane


Was muss ich denn genau machen, um diesen Fehler zu beheben, denn ich möchte gerne ein After_Fade_In hinzufügen.


Danke schon mal im Voraus.


BG
der Volltanker

"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

1mal_volltanken

Mit dem Fade_in hat sich schon erledigt. ;)


Dafür habe ich ein anderes Problem.

Wie ist der richtige Syntax, wenn ich der Zeile...


aMoH_Main_Theme.Play();


...einen Loop hinzufügen möchte?


BG
der Volltanker

"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

AmigaMaster

#2
Quelle: https://adventuregamestudio.github.io/ags-manual/v3/AudioClip.html#audioclipplay

Ohne Gewähr, ich habe das alles noch nie gemacht:
AudioChannel* musicChannel = aMoH_Main_Theme.Play(eAudioPriorityNormal, eRepeat);
und zum Stoppen
musicChannel.Stop();
Meine kleine Welt:
YouTube / Odysee
Discord mit vielen Retrobegeisterten
Lösungen jeder kann mitmachen

1mal_volltanken

Besten Dank!

Ja, das hat geklappt. Super.

Der Syntax in 3.6.2. hat sich doch teilweise geändert. Andererseits bin ich auch schon etwas raus und muss mich da wieder reinfuchsen.


BG
der Volltanker
"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

1mal_volltanken

Beim Ausprobieren des Maniacweed-Starterpaks war mir aufgefallen, dass dieses Starterpak noch kein Licht-an--Licht-aus-Effekt beinhaltet.

Bernard schaltet den Lichtschalter im Keller nicht um, sondern sagt nur "Dann stehe ich hier im Dunkeln".

Wäre es bei diesem Starterpak schwer, diesen Effekt mit einzubauen, dass der Raum jeweils einmal hell und einmal dunkel dargestellt wird?

Wie wäre das denn machbar, einen Raum schlicht zu verdunkeln und bei Lichtquelle den Raum wieder hell zu machen?


Danke schon mal im Voraus.


BG
der Volltanker
"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

AmigaMaster

#5
Das ist noch nicht zu Ende gedacht, weil man noch Infos zum jeweiligen Raum braucht, ob das Licht beim Betreten des Raums ein- oder ausgeschaltet war PLUS natürlich beim Verlassen des Raums das GUI wieder zu deakivieren, aber das folgende hat in meinem Tutorial Script (Das Tutorial zu Foxy's Quest) funktioniert:

1. Ein neues GUI angelegen, in meinem Fall habe ich es gDarkness genannt, Background und BorderColor 8,8,8 (schwarz), Transparency 100, Height und Width auf die Größe des Bereichs, den man mit dem GUI verdecken bzw. abdunkeln möchte (Im Falle des Foxy's Quest Tutorials ist das Height=186, Top=14, Width=320) und wichtig: Clickable auf FALSE stellen.

2. Ein und Ausblenden des GUI's an der passenden Action festmachen, ich habe der Einfachheit halber die vorhandene Look Action genommen
Der Teil mit dem sanfteren Aus- und Einblenden ist natürlich optional und man kann stattdessen einfach das Visible Attribut hart auf den gewünschten Transparenzwert umschalten.
function hTree_Look(Hotspot *theHotspot, CursorMode mode)
{
  Display("That's a big tree next to the pond.");
  if (gDarkness.Visible == false)
  {
    int transparency=gDarkness.Transparency;
    gDarkness.Visible=true;
    while (transparency > 50)
    {
      transparency -= 10;
      gDarkness.Transparency = transparency;
      Wait(1);
    }
  }
  else
  {
    int transparency=gDarkness.Transparency;
    gDarkness.Visible=true;
    while (transparency < 100)
    {
      transparency += 10;
      gDarkness.Transparency = transparency;
      Wait(1);
    }
    gDarkness.Visible=false;
  }
}

Beim Verlassen des Raums dann nicht vergessen, das GUI wieder auf visible=false zu setzen.
Meine kleine Welt:
YouTube / Odysee
Discord mit vielen Retrobegeisterten
Lösungen jeder kann mitmachen

1mal_volltanken

Cool, danke!

Ich wäre nie auf die Idee gekommen, das mit einem GUI zu versuchen. ;)

Theoretisch könnte man das ja schon mit dem Bernard-Starterpak ausprobieren um das dann später in ein anderes Spiel zu portieren.

Prinzipiell ist das ja auch gar nicht so viel Code.


BG
der Volltanker
"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

alphawolf300

Es geht auch irgendwie mit einem zweiten Background, den man einfügt und dann je nach Situation setzt. Das hab ich aber noch nie gemacht.

1mal_volltanken

So. Ich habe jetzt das Maniacweed-Starterpak so überarbeitet, dass man im Keller jetzt das Licht an und ausschalten kann.

Hier der Link:

Maniacweed Starterpak 2


Funktioniert auch alles wunderbar.

Der Link hält allerdings auch nur 7 Tage an. Also ran, und fleißig downloaden. ;) Wenn möglich, vielleicht einen Upload machen, der dauerhaft ist. ;)


Fehlt eigentlich nur noch ein Flashlight-Code, sowie ingame noch eine Taschenlampe. Aber dafür fehlen mir noch die programmiertechnischen Fertigkeiten. Wer weiß. Vielleicht will das ja jemand machen.

;)


@alphawolf300 Ja, man kann pro Raum tatsächlich bis zu 5 Backgrounds anlegen. Aber der Effekt wäre wahrscheinlich, dass man das Bild nur schwarz machen könnte. Mit dem GUI kann man auch eine geringe Transparenz einstellen. Und ich weiß nicht, ob der zweite Background geeignet wäre, um ggf. noch einen Flashlight-Effekt einzubauen.


BG
der Volltanker


"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

AmigaMaster

#9
Ich versuche ja immer noch weiter zu lernen und habe mir das gerade angeschaut und ein wenig mit rumgespielt:

  • gDarkness ist mir mit dem Transparency-Wert 1 für mich zu dunkel. Mir persönlich sagt 8 mehr zu. Das ist aber natürlich eine persönliche Präferenz und hängt auch davon ab, was man mit der Dunkelheit erreichen möchte.
  • Height von gDarkness müsste 124 sein, ansonsten ragt das GUI in die Textzeile bei der klassischen Bedienung
  • ZOrder von gDarkness auf -10, damit es sich nicht ÜBER das Speichermenü legt

Das mit einem zweiten Hintergrund bietet dann natürlich die komplette künstlerische Freiheit, man könnte dann auch helle und dunkle Stellen darstellen (ich kenn manche AGS-Spiele, da reagiert der Charakter dann auch auf die Helligkeit).

Ich hätte auch noch eine andere Idee im Kopf aber das ist einfach nur Spielerei und wird auch nicht ohne weiteres überall funktionieren, da die Grafiken dann nicht passen: Basierend auf der echten Uhrzeit die Helligkeit im Spiel anpassen. Wenn ich also um 22:00 Uhr Echtzeit spiele, dass das ganze Spiel oder bestimmte Spielszenen dann dunkler dargestellt werden. Könnte man in ein Rätsel einbauen, bei dem das Spiel die dritte Wand durchbricht oder so.
Meine kleine Welt:
YouTube / Odysee
Discord mit vielen Retrobegeisterten
Lösungen jeder kann mitmachen

1mal_volltanken

Stimmt. An die anderen GUIs habe ich gar nicht gedacht.

Habe lediglich das Action auf Z-Order 1 gesetzt.

Das müsste wohl noch korrigiert werden.
"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

Bòógieman

Nachdem ich zu dem Thema per PM gefragt wurde, hier gleich mal meine Ideen dazu, damit alle was davon haben:  ;)

Flashlight-Effekt hab ich selbst auch noch nie gemacht, bei Epi53 hab ich da einfach einen zweiten Hintergrund im Raum gehabt und die Char-View auf den dunklen Eimer gesetzt, also die Lösung die ihr schon im Thread erörtert habt.
Ohne mich selbst näher damit beschäftigt zu haben hätte ich da aber schon eine Idee, wie das mit der GUI funktionieren könnte, je nachdem wie AGS das technisch implementiert hat:
Ein GUI Element machen, wo die Lichtfläche per Transparenz den eigentlichen hellen Hintergrund durchlässt und dieses per Script zyklisch an die aktuelle Mausposition schieben.
Falls AGS es zulässt müsste man das abdunkelnde GUI Element auf vierfache Raumgröße machen und die Lichtfläche zentral darin platziert.
Falls das nicht geht, müsste man mehrere GUI Elemente (abdunkelnde Rechtecke und eine Lichtfläche) machen und per Code die Rechtecke berechnen, die rund um die Lichtfläche gelegt und skaliert werden müssen, damit der restliche Raum abgedunkelt wird.
Sind eigentlich dann nur 5 Rechtecke/GUI Elemente
111
203
444
(0 ist die Lichtfläche, 1 ist oberhalb der Lichtfläche, 2 links, 3 rechts, 4 unterhalb)
Ist zwar etwas Tüftelarbeit, aber eigentlich recht simple Berechnungen.

Viel Spaß beim Tüfteln!
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

1mal_volltanken

Danke Bòógieman!

Ja, meine Idee war evtl. auch, ob man das mit nem Cursor umsetzen könnte und die Fläche des Cursors entsprechend vergrößert, je nach dem, wie groß der Lichtstrahl werden soll.

Ich müsste mal gucken, wie das funktioniert, ein GUI an der Mausposition zu positionieren. Zur Zeit übe ich ja noch mit AGS.

Es gibt ja noch ein ein altes Flashlight-PlugIn für ich glaub 2.72. Aber das wird für das Maniacweed nicht kompatibel sein, nehme ich an.

Viele der alten Haudegen in Sachen AGS-Technik sind ja leider nicht mehr hier im Forum anzutreffen.

Drum liegt es jetzt an uns, es mit Bòógiemans Ansatz herauszufinden, wie es funktioniert.


@AmigaMaster   Hast Du von den GUIs die Z-Order schon angepasst oder müsste ich das noch machen? Ansonsten kannst Du ja das geänderte Starterpak hier hochladen. ;)


BG
der Volltanker




"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

AmigaMaster

Hier eine Version mit veränderten ZOrder zum Testen. Ich habe dabei auch die ZOrder für die gOptions usw. angepasst da der Text sich auch vor das Options-GUI gelegt hat.

maniacweed-master.7z
Meine kleine Welt:
YouTube / Odysee
Discord mit vielen Retrobegeisterten
Lösungen jeder kann mitmachen

AmigaMaster

#14
Ich habe hier eine Flashlight-Demo basierend auf dem gDarkness GUI-Ansatz. Ist bisher nur einfach an der BENUTZE Lichtschalter-Aktion festgemacht aber zeigt, dass es technisch mit Bordmitteln möglich ist.
Edit: Ich habe mich an der Implementierung einer Taschenlampe versucht und dazu die Scripte in den Räumen entsprechend angepasst. Wer testen möchte, der muss die Version vom 11.08.2026, 17:53 Uhr erneut herunterladen.

maniacweed-master-flashlight-demo.7z

Es sind folgende Änderungen notwendig:
1. Damit die Transparenz der Flashlight korrekt berechnet wird, muss gDarkness zwingend 0,0,0 als BackgroundColour und BorderColor haben! (DAS hat mich 45 Minuten gekostet, das herauszufinden).

2.Dem gDarkness GUI ist der Button bFlashlight hinzugefügt, welches ein mit GIMP erstelltes Alphachannel PNG Bild enthält. Das Bild inkl. Original GIMP-Format liegt im Verzeichnis sprites\flashlight.

3. Im GlobalScript in der Funktion repeatedly_execute_always():
  // Check if the darkness GUI is active
  if (gDarkness.Visible)
    {
        // Move the GUI button with the mouse cursor
        bFlashlight.X = mouse.x - (bFlashlight.Width / 2);
        bFlashlight.Y = mouse.y - (bFlashlight.Height / 2);
    }
Meine kleine Welt:
YouTube / Odysee
Discord mit vielen Retrobegeisterten
Lösungen jeder kann mitmachen