Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: Kiwa am 07. Januar 2014, 18:50:44
-
Hallo Zusammen,
weiß jemand wie man die Grad der Abdunkelung beim benutzen des Taschenlampenscrips verändern kann. Man geht in einen Raum und der ist dunkel. Nun ist es eben so das die Abdunkelung (wenn man das Taschenlampenscript/Flashlight benutzt) sehr stark ist.
Wie kann man die Stärke der Abdunkelung regulieren? Mit Flashlight.Transparency = 0 oder 50 oder 100 geht es nicht.
Danke für alle nützlichen Hinweise.
-
Bei der 3er-Version der Villa, habe ich ein Bild verwendet, das in der Mitte transparent ist, alles andere außen herum ist schwarz. Ansonsten müsste ich auch probieren.
-
Ich benutze AGS 3.2.1, also die 3er-Version von AGS, falls du das meinst.
Aber was du danach schreibst verstehe ich nicht ganz. Es geht hier NICHT um den Lichtkreis, sondern darum wie dunkel der ganze Raum generell ist. Ich finde es etwas zu dunkel und will es etwas heller machen so das man auch bei Dunkelheit etwas mehr erkennt. Der Lichtkreis der Taschenlampe spielt hier überhaupt keine Rolle.
Wenn es irgendeine Funktion gibt mit der die Dunkelheit in jedem Raum individuell angepasst werden kann, wäre das genau das wonach ich suche.
Beispiel: flashlight.setDarkness(50); -> soll heißen 50% Dunkelheit, Raum also halb dunkel
Ich habe schon einige Funktionen von Flashlight ausprobiert, doch ich habe es nicht hinbekommen die Dunkelheit zu ändern. Was mich an der Stelle interessiert ist wie die Dunkelheit generell erzeugt wird? Sollte es mit einem Bild gemacht worden sein, müsste man dieses austauschen, und das auch zur Laufzeit wenn in unterschiedlichen Räumen es unterschiedlich dunkel sein soll. Dafür bräuchte man dann auch eine Funktion.
-
Wenn dieses Bild auf einem GUI ist, muss man nur die Transparenz des GUIs verändern...
-
Wenn dieses Bild auf einem GUI ist, muss man nur die Transparenz des GUIs verändern...
Was genau meinst du mit "Wenn dieses Bild auf einem GUI ist"? Und wo/wie kann ich prüfen ob es so ist?
-
Du könntest z.B. in der Liste der GUIs nach einem namens "gFlashlight" suchen.
Ich bin gerade zu faul, selber nachzuschauen.
-
Danke für den Tipp aber danach habe ich auch schon gesucht. Es wird mir aber nur der Lichtkreis angezeigt. Im folgenden ein Screenshot vom AGS Editor mit geöffnetem Menüpunkt GUI und gFlashliegt:
http://www.uploadarea.de/files/u31b3lcc3gy9er552pw2fykq3.png
Da der Screensoht etwas groß ist habe ich den unwichtigen Teil (in dem nix angezeigt wird) rausgeschnitten. Wie man sieht ist ein dunkles Bild nicht zu finden. Wie genau wird den die Dunkelheit im Raum erzeugt? Wird dort überhaupt mit einem dunkel-tranzparentem Bild gearbeitet? Ich vermute fast das es irgendwie anders funktioniert. Vielleicht werden die Farbwerte mathematisch so verändert das alles dunkel erscheint aber die Konturen vom Raum und Objekten noch zu erkennen sind. Nur so eine Vermutung von mir. Wenn dem so sein sollte, müsste es dafür eine Funktion oder Methode geben die ich dann abändern müsste. Oder ich schreibe selber eine neue Funktion(im Flashlight Script) mit der die Veränderungen durchgeführt werden.
An der Stelle noch gleich eine Frage: Was ist der Unterschied zwischen
- gFlashlight
- v_Flashlight und
- Flashlight ?
Dazu finde ich weder im Flashlight.asc noch im Flashlight.ash Script etwas. Außer das Flashlight im asc Script exportiert und im ash Script importiert wird.
-
Sorry für den Doppelpost aber mir ist gerade was wichtiges eingefallen:
Die Abdunkelung in den Räumen kann eigentlich garnicht mit einem dunkel-transparentem Bild gemacht werden. Grund für diese Überlegung ist die Tatsache das man es mit dem Flashlight in jedem Raum dunkel machen kann, egal wie groß bzw. lang er ist. Beispiel:
Der Raum in der Villa mit den Drähten (Dachboden) ist sehr klein und der Kellerraum groß. Wenn nun beides mit einem Bild abgedunkelt werden soll müsste man unterschiedlich große (passende) Bilder haben. Da man aber Räume ganz unterschiedlicher Größe erstellen kann (und der Entwickler vom Flashlight Script die Größen auch vorher nicht alle kennen konnte) muss es wohl anders gemacht worden sein.
Oder es wurde ein extrem langes dunkeles Bild benutzt. So lang das der Entwickler davon ausgehen konnte das es keine längeren Räume geben wird. Das ist möglich weil in AGS Objekte auch über den Grafikrand hinaus geschoben werden können. Mmh :cl das klingt allerdings schon recht komisch, es so zu machen. Wahrscheinlicher ist dann doch die mathematische Methode. Dann sollte es aber auch einfacher sein den Farbwert der Dunkelheit zu ändern.
-
Du denkst zu kompliziert :)
Es reicht, den kompletten Bildschirm abzudunkeln. Der Rest des Raums ist nicht abgedunkelt, aber auch nicht zu sehen.
Ein kurzer Blick in Flashlight.ash, und die Antwort war sofort gefunden:
[ags] Flashlight.Transparency = 60;[/ags]
-
Du hast nicht richtig aufgepasst. :P
Wie in meinem Anfangspost schon beschrieben funktioniert es so nicht. An der Stelle zitiere ich mich mal selbst:
...
Wie kann man die Stärke der Abdunkelung regulieren? Mit Flashlight.Transparency = 0 oder 50 oder 100 geht es nicht.
...
Und mit einem Wert von 60 geht es auch nicht den keiner der Werte zeigt irgendeine Veränderung. In der room_Load() Funktion des Raumes steht bezüglich Flashlight folgendes:
gFlashlight.Visible = true;
v_Flashlight(false);
//Flashlight.Enabled = true; -> ob diese Zeile drin steht oder nicht macht keinen Unterschied(auch nicht bei false), deshalb auskommentiert
Flashlight.Transparency = 60; // -> das bewirkt nichts, leider
Ich habe schon verschiedene Kombinationen der einzelnen Zeilen ausprobiert (also Parameter geändert(true vs. false) oder Zeile ganz weggelassen) doch das gewünschte Ergebnis trat nicht auf.
-
Stimmt, aber ich lese nicht jedesmal wieder den kompletten Thread durch... ::)
Bei mir steht:
[ags] Flashlight.Transparency = 30;
Flashlight.Enabled = true;[/ags]
Ergebnis:
(http://i.imgur.com/HH4UJC2.png)
Mit 60:
(http://i.imgur.com/V7j8x5q.png)
Machst Du ein 8-bit Spiel? Denn da geht Transparenz nicht.
-
Machst Du ein 8-bit Spiel? Denn da geht Transparenz nicht.
Nein, bei den General Settings steht ganz oben bei Coluor depth 32-bit (true colour) Oder meinst du was anderes?
Ich habe es so ausprobiert wie du es auch gemacht hast. Das Ergebnis ist seltsam. Wenn ich es so in einem Raum der Villa mache, dann geht es. Wobei die Verdunkelung erst eine Sekunde nachdem man den Raum betreten hat, aktiv wird. Und ja, ich habe den Code in die room_Load() Funktion kopiert.
Jetzt kommt das schlimmere Problem:
Wenn ich es genauso in einem neuen Raum mache(den ich selber angelegt habe), passiert nix. Und ich meine überhauptnix, es gibt dann garkeine Verdunkelung mehr.
*total ratlos sein*
-
Ich habe es so ausprobiert wie du es auch gemacht hast. Das Ergebnis ist seltsam. Wenn ich es so in einem Raum der Villa mache, dann geht es. Wobei die Verdunkelung erst eine Sekunde nachdem man den Raum betreten hat, aktiv wird. Und ja, ich habe den Code in die room_Load() Funktion kopiert.
Ich will mich ja nicht einmischen, aber was ist, wenn Du KhrisMUCs Skript bei "Before_Enter_Room" hinzufügst? Das müsste doch das Problem beheben, dass die Verdunkelung erst später auftritt, oder? (Bin mir aber nicht so sicher...) :cl
-
Ich will mich ja nicht einmischen, aber was ist, wenn Du KhrisMUCs Skript bei "Before_Enter_Room" hinzufügst? Das müsste doch das Problem beheben, dass die Verdunkelung erst später auftritt, oder? (Bin mir aber nicht so sicher...) :cl
Natürlich darfst du dich einmischen. Je mehr Leute an der Sache arbeiten um so eher ist es gelöst. ;)
Zu deiner Idee: "Before_Enter_Room" ist die room-load Funktion. Es gibt aber noch eine weitere Funktion, nämlich "first time enters room", aber damit besteht das Pronlem der Verzögerung auch noch.
Die Sache ist das es im neuen Raum garnicht klappt. Deshalb habe ich immer geschrieben das es mit "Flashlight.Transparency = ..." nicht klappen würde. Aber damit geht es, allerdings nur in Räumen die schon im SP drin sind, NICHT bei neuen Räumen. Das habe ich dadurch rausgefunden das ich es einfach mal in einem "alten" Raum ausprobiert habe, und da geht es (wenn auch mit 1 Sek. Verzögerung). Ich habe vor einiger Zeit schonmal mit dem Flashlight herumexperimentiert, aber nur in "alten" Räumen. KhrisMUC's Bilder waren auch in einem alten Raum (vor der Villa), so habe ich es auch in einem alten Raum ausprobiert.
Das Problem hat sich nun dahingehend verändert das es nicht in neuen Räumen klappt. Entweder dort ist so dunkel wie immer oder garnicht.
-
Ich habs mal ausprobiert und einen neuen Raum angelegt, Raum 44. Hintergrundbild war ein PNG mit 16bit Farbtiefe.
Dann habe ich in den General settings die room transition auf FadeIn/FadeOut gestellt (Crossfade war eingestellt).
Zuletzt habe ich das before fadein event verlinkt und Folgendes eingetragen:
[ags]function room_Load()
{
Flashlight.Transparency = 40;
Flashlight.Enabled = true;
Wait(1);
}[/ags]
Alles funktioniert einwandfrei, und dank des Wait(1); ist der Raum bereits während des Hereinblendens abgedunkelt.
Grafiktreiber macht auch keinen Unterschied.
-
@KhrisMUC
Danke, das wars. :D Jetzt funktioniert es. Ich habe noch das v_Flashlight(false); mit eingebaut damit bei der überblendung zum nächsten Raum der Lichtkreis nicht zu sehen ist (nur als Hinweis, falls andere mal danach fragen).
Nochmals Danke. :D :D :D
-
Fein, aber an was lag es denn jetzt? Warum ging es in Deinem neuen Raum nicht?
-
Fein, aber an was lag es denn jetzt? Warum ging es in Deinem neuen Raum nicht?
Ich vermute es waren die Einstellungen bei den General Settings. Bei mir war dort auch Crossfade eingestellt (was immer das auch ist).
Ein PNG-Bild hatte ich vorher auch schon als Hintergrund und ich habe es auch nicht verändert. Und die anderen Sachen hatte ich auch schon ausprobiert. Das alles erklärt zwar immer noch nicht warum es im neuen Raum nicht klappte aber im alten, aber das ist die einzige Möglichkeit (Umstellung bei den General Settings).
Mmh, :cl vielleicht ist das eines von den Dingen die man nie erklären können wird. Schon irgendwie seltsam. Wenn ich mal wieder kompliziert denken darf:
Es gibt irgendeine Verbindung mit den Raumgrafiken und den Einstellungen bei den General Settings. In irgendeinem Punkt haben sich meine neue Raumgrafik (png-Bild) von den anderen alten unterschieden. Die Einstellungen bei den General Settings wirkten sich dann so darauf aus das der beschriebene Effekt entstand. Wäre doch eine plausible Erklärung, oder? :cl
-
nicht unbedingt,
rein vom Gefühl her beim überfliegen des Threads, würde ich sagen du hast einfach kein
Flashlight.Enabled = true;
in deine neuen Räume geschrieben, kann das sein?
Crossfade ist der Bildeffekt, beim Übergang von einem Raum zum anderen.
-
nicht unbedingt,
rein vom Gefühl her beim überfliegen des Threads, würde ich sagen du hast einfach kein
Flashlight.Enabled = true;
in deine neuen Räume geschrieben, kann das sein?
Nein, da liegst du falsch. Das war drin. Das Problem ist ja nun auch gelöst (wenn wir auch nicht so genau wissen warum?).
Crossfade ist der Bildeffekt, beim Übergang von einem Raum zum anderen.
Danke für die Info.
Eine Theorie woran es liegen kann ist das .NET Framework. Vielleicht liegt es irgendwo daran oder am Zusammenspiel von AGS und dem .NET Dings
Zum .NET Framework muss ich an der Stelle mal was sagen:
Als ich meinen PC neu installiert habe, kam natürlich (als alle Treiber usw. installiert waren) natürlich AGS als erste Software auf den PC. Prompt meckerte AGS mit den Worten: "Du must .NET 2.0 oder höher installieren bevor du AGS installierst." und die AGS Installation wurde nicht gestartet. Ich also sofort zu Microsoft auf die Homepage und dort .NET 4.0 runtergeladen und insatlliert. Nach erfolgreicher Installation erstmal einen Neustart (kann bei Windows nie schaden). Nun AGS.exe gestartet und prompt meckert AGS mit den gleichen Worten: "Du must .NET 2.0 oder höher installieren bevor du AGS installierst."
Ich grübel, grübel, grübel... Nun gut, bei der alten Windows installation wusste ich noch das ich nicht .NET4.0 hatte, wusste aber nicht mehr genau welcher der älteren Versionen ich nun hatte. Naja, das Zeug installiert man irgendwann mal und gut is, das war das einzige wonach ich nicht geschaut hatte bevor ich die alte Windows Installation platt gemacht hatte. Übrigens war das alte und neue Windows das gleiche. Ich wollte nur meinen Rechner mal ultimativ von altem Müll befreien.
Nun gut, also .NET4.0 wieder deinstalliert, Neustart und .NET 3.5 SP1 installiert. Neustart und dann wieder AGS.exe gestartet. Nun klappte es :D :D :D
Ich weiß zwar nicht warum das so war aber AGS scheint .NET4.0 nicht zu mögen oder es erkennt es nicht einmal. Da .NET für AGS scheinbar lebenswichtig ist, vielleicht liegt da die Ursache für das seltsame Verhalten mit dem Flashlight. Wie gesagt, ist nur eine Theorie. :cl
@KhrisMUC
Stell mal bei der transiton (General Settings) bei dir Crossfade ein und dann lege mal einen neuen Raum an und prüfe ob es dann immer noch klappt die Dunkelheit zu verändern. Sollte dann nicht mehr gehen.
-
Sorry, ist alles totaler Käse.
Eine .NET-Version beinhaltet nicht automatisch alle Vorgängerversionen; man muss schlimmstenfalls 2.0, 3.0 und 4.0 parallel installiert haben.
3.5 reicht aus für den AGS Editor, aber 4.0 nicht.
Mit dem Framework hat das Ganze aber eh nix zu tun, da nur der Editor .NET braucht; die Engine ist in C++ geschrieben und läuft ohne.
Ich hatte die Transition ursprünglich auf Crossfade (es ist die Grundeinstellung des Villa-Packs); damit hatte ich aber den Effekt, dass die Taschenlampen-Dunkelheit erst nach dem Fade sichtbar wurde. Nur deswegen habe ich es ausgeschaltet, funktioniert hat die Taschenlampe auch vorher.
Wir können jetzt noch weiter wild rumspekulieren; am wahrscheinlichsten ist, dass Du eine Zeile vergessen oder an die falsche Stelle gesetzt hast. Passiert mir auch gelegentlich.