• Anmelden

1

Freitag, 13. August 2010, 15:17

Gesichtsgrafiken im RPG Maker selbst durch AMS verändern

Hallo mal wieder.

Vorab: Ich lasse Gesichtsgrafiken mit \f mit dem AMS anzeigen.

Ich habe folgendes Problem: In meinem Spiel gibt es Funkgeräte, mit denen verschiedene Charaktere kommunizieren können und ich will die Gesichtsgrafik der Person, mit der der Held redet, anzeigen.
An der Gesichtsgrafik dieser anderen Person sollte jedoch erkennbar sein, dass man über Funk mit ihr redet.

Da fallen mir jetzt zwei Sachen ein:

Entweder legt man im RPG Maker irgendwie ein anderes Bild mit Transparenz darüber, das z.B. ein Rauschen symbolisiert (ich will nämlich nicht jede einzelne Gesichtsgrafik-Datei verändern!).
Also: Gesichtsgrafik normal anzeigen, dann zusätzlich ein verpixeltes Bild transparent darüber legen. Das wirkt dann hoffentlich etwas verzerrt, somit wird deutlich, dass man über Funk mit der Person redet.

Mein zweiter Ansatz: Man ändert die Farben der Gesichtsgrafik, vorzugsweise schwarz-weiß (auch hier gilt: Ich will die eigentlichen Gesichtsgrafik-Dateien im Ordner nicht verändern).

Hat jemand eine Idee, wie sich eine der beiden Ideen umsetzen lässt?
Oder fällt jemandem noch ein anderer Ansatz dafür ein?

2

Freitag, 13. August 2010, 15:33

Und warum genau willst du nicht einfach neue Bilder machen? Am Aufwand kann es ja nicht liegen...weiß nicht, aber das andere fände ich persönlich unnötig umständlich.
Es wäre ruckzuck erledigt und wäre meiner Meinung nach definitiv die einfachste Variante, zumindest für's AMS.

3

Freitag, 13. August 2010, 15:53

Ich habe über 400 Gesichtsgrafiken, das ist das Problem... Wäre also ziemlich viel Aufwand.
Da erscheint es mir viel einfacher, die Grafiken im RPG Maker zu verändern.

4

Freitag, 13. August 2010, 16:09

Die Bilder werden im RMXP gecacht, das heißt wenn du es änderst, wird der Cache geändert und es wird im folgenden immer mit dieser Änderung angezeigt.

Ruby Quellcode

1
2
3
bitmap1 = RPG::Cache.picture("eine_grüne_fläche")
bitmap1.clear
bitmap2 = RPG::Cache.picture("eine_grüne_fläche") #=> ein leeres Bild

Man könnte für die Messagebox das ändern, und einen neuen Befehl "Funkgerät-Face" oder so einfügen, dann müsstest du mal zu deiner AMS Version verlinken, dann geht das ganz schnell. Was würdest du denn bevorzugen? Graustufen oder Rauschenbild drüberlegen?
(Aber auch ich würde Lunes Weg bevorzugen)
Nebenbei: >400 Grafiken ôo wieviel Kommunikation hast du denn am Funkgerät?
(und der Aufwand ist gering, weil man solche stupiden Aufgaben, wie Bilder in GS umzuwandeln vom Rechner erledigen lässt)

5

Freitag, 13. August 2010, 17:43

Ich hab es mal mit der AMS-Version aus der Datenbank hier verglichen, und meine Version scheint der hier sehr ähnlich zu sein. Allerdings hab ich selber einige Änderungen eingefügt (ich weiß leider nicht mehr genau, was alles), das heißt es wird schwer, das ganze Skript zu ersetzen.

@Playm: Das Rausch-Bild ist vermutlich effektiver für so etwas denke ich.

Was meinst du mit GS?

Es geht mir auch ein bisschen um den Speicherplatz: Der Ordner für die Gesichtsgrafiken ist schon 10 MB groß, wenn ich jetzt für einige Personen noch ein Rausch-Bild darüberlege, macht das vermutlich um die 5 MB aus.

Und es klingt so umständlich, jede einzelne Gafik zu ändern...
Ich hab mir gedacht, es gäbe eine einfachere Methode im RPG Maker. Zum Beispiel dass man eben die ganz normale Gesichtsgrafik anzeigt und darüber noch etwas transparent eine Rausch-Grafik.

6

Freitag, 13. August 2010, 19:29

GS für GrauStufen ;)
Ich hab die Änderungen mal getippt:
Achja, deswegen wollte ich exakt deine Version ._. jetzt wird es etwas Such- und Kopierarbeit.
Also erstmal brauchst du diese Erweiterung
Spoiler: Code
Als neues Script über Main einfügen

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Window_Message
    #-----------------------------------------------------------------
    # * draw face graphic
    #-----------------------------------------------------------------
    def draw_face()
   	 if FileTest.exist?("Graphics/Pictures/#{@face_file}")
   		 rect = Rect.new(0, 0, 96, 96)
   		 face_bitmap = Bitmap.new("Graphics/Pictures/#{@face_file}")
   		 if @rauschen_flag
   			 rauschen = RPG::Cache.picture( "name.png" ) # hier der Name des "rauschen"-Bildes
   			 face_bitmap.blt(0,0,rauschen,rect, 125)
   		 end
   		 self.contents.blt(16, 16, face_bitmap, rect )
   		 face_bitmap.dispose
   	 end
    end
end
zum Lesen den Text mit der Maus markieren

Nun noch am AMS Script selbst etwas ändern =)
Du findest ab Zeile 170 etwa diesen Teil:

Ruby Quellcode

1
2
3
4
5
6
7
8
  if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
 	@face_file = $1 + ".png"
 	@x = @face_indent = 128
	if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
  	self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
	end
	@now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
  end

Diesen musst du ersetzen mit dem hier:
Spoiler: Code

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    if (/\\[Ff]unk\[(.+?)\]/.match(@now_text))!=nil then
   	 @face_file = $1 + ".png"
   	 @x = @face_indent = 128
   	 @rauschen_flag = true
   	 draw_face()
   	 @now_text.gsub!(/\\[Ff]unk\[(.*?)\]/) { "" }
    end
 
    if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
   	 @face_file = $1 + ".png"
   	 @x = @face_indent = 128
   	 @rauschen_flag = false
   	 draw_face()
   	 @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
    end
zum Lesen den Text mit der Maus markieren

Und in Zeile 708 etwa ersetzt du

Ruby Quellcode

1
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
mit

Ruby Quellcode

1
draw_face()


Achja, fast vergessen ^^" mit
\funk[Bildname]
zeigst du ein verändertes Bild an, die anderen Befehle funktionieren weiterhin wie gehabt

7

Samstag, 14. August 2010, 17:24

Vielen Danke, Playm!

Es hat erst nicht funktioniert, dann hab ich in deiner Window_Message-Erweiterung die FileTest.exist-Abfrage und den dispose-Befehl am Ende entfernt, jetzt geht es.

Ähnliche Themen

Social Bookmarks