PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : diäitsch's Problem Sammelthread (Xp) :D



diäitsch
10.08.2008, 00:59
Hallo ehrenwerte Community,
Da mir aufgefallen ist, wie viele "Problem Threads" ich schon aufgemacht habe, habe ich mich dazu entschlossen einen großen dafür aufzumachen.
Hier meine erste Frage, (nach über 1 Std. selbst versuchen nicht geschafft :()

Wenn ich selbst Animationen erstelle, und auf einer Map (z.B. auf einen Charakter) anzeigen lassen will, ist sie immer zu 50% transparent.
Im Kampf selber ist jedoch alles normal.
Ist das 'n Maker Bug, oder gibt's 'ne Erklärung/Lösung dafür?

(Beim Importieren habe ich alles richtig eingestellt)

T-Free
10.08.2008, 07:45
Die Animation wird zur Hälfte transparent angezeigt, weil die Einstellung, also die Bilddarstellungsart auf "Positive" gestellt ist. Das heißt, dass alle dunklen Farben transparent und alle hellen Farben sehr gut sichtbar, also z.B. weiß gar nicht transparent, angezeigt werden. Stellt man das Bild nun auf "Normal", so wird die Animation komplett sichtbar, (wenn man denn nichts an der "Opacity" ändert) angezeigt, nur ist natürlich die gewählte Transparentfarbe nicht sichtbar.
Beim "Negative" ist es ähnlich dem "Positiven", nur dass hier die Farben einer Animation inversiert werden, also z.B. wird Schwarz weiß, und weiß wird Schwarz. Hier wird das Bild dann anders angezeigt, alles Schwarze ist sichtbar, alles weiße ist transparent.

Wenn du die Einstellungen in der Animation ändern willst, so klickst du doppelt auf das eingefügte Bild und änderst alles nach deinem Belieben.^^

diäitsch
10.08.2008, 11:34
OK, dankeschön :)

Edit: Wow, so sieht das schon viel besser aus^^

diäitsch
17.08.2008, 12:19
Hey Leute,
Hat jemand von euch die Haupt Musik von "Return to Castle Wolfenstein" als MIDI Datei? Würde sie nämlich gerne in mein Spiel einbauen, habe sie aber leider nur als MP3...

MfG, diäitsch

Fir3bird
17.08.2008, 15:15
Es wird doch wohl tools zum umwandeln geben :p

Supermike
17.08.2008, 16:11
Es wird doch wohl tools zum umwandeln geben :p
Gibt es nicht!
Man kann MP3's nicht einfach in Midis umwandeln. Wäre zu schön gewesen...

@topic
Schonmal bei vgmusic.com(wenn's n game is) nachgeschaut oder mal gegoogelt?
Woher stammt das lied eigentlich genau?(konsole, film, anderes?)

diäitsch
17.08.2008, 16:23
@Supermike: Das Lied stammt aus dem Pc Game "Return to Castle Wolfenstein" von "Grey Matter" (Kommerziell).^^
Gegoogelt habe ich schon, da finde ich aber nur MIDIs von dem XBox Ableger...
Ich schau mal auf der Seite nach, die du mir empfohlen hast, danke :)

Edit: Habe leider nichts gefunden...naja, wie gesagt, trotzdem danke.

Btw. Ich habe das auch als MIDI, ABER: Viel kleiner ist's nicht geworden, von 1,87 MB, auf 1,27 MB.
Das Prog. war 'ne Testversion, die ich nicht mehr habe...

Wenn man es sich so laden würde, wäre es viel kleiner.

diäitsch
19.08.2008, 18:47
Schade, das niemand die MIDI hat...naja, da kann man nichts machen^^
Nächstes Problem, ich bin gerade dabei das Intro zu meinem Game (dessen Namen ich aus werberechtlichen Gründen nicht nennen darf) aufzumotzen, und hier ist das Problem:
Ich habe ein Picture als Hintergrund (Picture1)
Ich lege "Picture2" darüber (eine Person), sie geht nach links.
Nun sieht das ziemlich langweilig aus, so als würde sie schweben (auch wenn nur der Oberkörper gezeigt wird).
Wie schaffe ich es, das diese Person quasi rauf, und runter, und gleichzeitig nach links geht?
Hoffe ich habe es verständlich erklärt^^

MfG, diäitsch

Fir3bird
19.08.2008, 19:24
Arbeite am besten mit Variablen:
Als erstes die Y-Variable: Diese lässt du einfach kontinuierlich eins abziehen.
Bei der X-Variable addierst und subtrahierst du nacheinander:

Bsp:
Variable [Y] == 640
Variable [X] == 240
Loop
Variable [Y] -= 5
Variable [X] += 5
Move Pic [wait]
Variable [Y] -= 5
Variable [X] -= 5
Move Pic [wait]
Repeat

Ist nicht ganz vollständig; der Schluss fehlt, sollte aber kein Problem sein.

diäitsch
19.08.2008, 19:36
Also so langsam sollte ich mich auch mal mit Variabeln vertraut machen...
Vielen Dank für die Erklärung, und nein, der Schluss ist kein Problem^^

diäitsch
22.08.2008, 12:59
Und hier eine weitere Frage:
Wie macht man 2 Inventare? Da man in meinem Game zwischen 2 Teams wechselt, sollten diese auch verschiedene Ggst. haben, vor allem weil sich die Charas noch nie begegnet sind.
Wenn sie später zusammentreffen, sollten die Ggst. natürlich zusammengelegt werden.
Wer kann mir helfen?
Wenn's möglich ist, will ich das OHNE Scripte regeln.

MfG, diäitsch

Fir3bird
22.08.2008, 13:51
Arg, dass könnte langweilig werden: Jede Item-Art benötigt zwei Variablen: "Anzahl T1" und "Anzahl T2".

Variable[Anzahl T1] = Item*

Bei Wechsel

drop item [all]
add item [Anzahl T1] oder [T2]*

Wenn sie zusammentreffen:

Variable[Anzahl T1] + Variable[Anzahl T2]*
drop item [all]
add item Variable[Anzahl T1]*

* für jede Item-Art

diäitsch
22.08.2008, 14:24
Ja, mit Scripten würde das wahrscheinlich echt einfacher gehen, aber ich vertraue diesen Scripten nicht so recht, so verbuggt wie manche sind^^
Auf jeden Fall, vielen Dank für die Antwort, werde das heute Abend mal ausprobieren :)

R.D.
22.08.2008, 14:46
warum schreibst du es nicht selbst?
damit wäre die Bug frage auch erledigt, das es dein eigens wäre und du es so schnell änder könntest.
Dürfte ja nicht so schwer sein.

diäitsch
22.08.2008, 15:29
@R.D.: Doch, ist es :( ich habe keine Ahnung von Ruby, das einzige was ich weiß ist, wie man "New Game" etc. umbenennt ;)
Das mit den Varis ist zwar 'n Bisschen komplizierter, dafür aber deutlich sicherer^^

-KD-
22.08.2008, 18:10
In dem Fall ist allerdings die Rubylösung derart banal einfach, dass es sich wirklich anbietet das per Script zu lösen.


class Game_Inventory
attr_reader :weapons, :items, :armors
attr_accessor :gold
def initialize(w={}, a={}, i={}, g=0)
@weapons = w
@armors = a
@items = i
@gold = g
end
end

class Game_Party
alias initialize_group initialize
def initialize
initialize_group()
@inventories = [Game_Inventory.new(@weapons, @armors, @items, @gold)]
@group = 0
end
attr_reader :group
def group=(value)
@inventories[@group].gold = @gold
@group = value
@inventories[value] ||= Game_Inventory.new
@weapons = @inventories[value].weapons
@armors = @inventories[value].armors
@items = @inventories[value].items
@gold = @inventories[value].gold
end
end

Die Gruppen legst du mit

$game_party.group = 0
fest. Die Gruppe 0 ist die Startgruppe. Du kannst beliebig viele andere Gruppen benutzen. Immer wenn du die Gruppe wechselst, hast du ein separates Item/Waffen/Rüstung/Gold-Inventar.

diäitsch
22.08.2008, 19:38
@-KD-: Erstmal versuche ich das über Variabeln zu regeln, (viele Items wird man beim Wechsel eh nicht haben).
Wenn ich das gar nicht hinkriege, werde ich Wohl oder Übel den Script benutzen.
(Ich finde's gut, das sich Leute die Mühe machen, Scripts zu erstellen, aber mein Spiel soll Bug Frei bleiben. Was jetzt nicht heißt, das jeder Script verbugt ist...)
Trotzdem danke :)

Fir3bird
22.08.2008, 19:50
Probier's doch erst mit Script. Wenn's verbugt ist, merkt man das schnell :p

Ascare
22.08.2008, 22:32
@-KD-: Erstmal versuche ich das über Variabeln zu regeln, (viele Items wird man beim Wechsel eh nicht haben).
Wenn ich das gar nicht hinkriege, werde ich Wohl oder Übel den Script benutzen.
(Ich finde's gut, das sich Leute die Mühe machen, Scripts zu erstellen, aber mein Spiel soll Bug Frei bleiben. Was jetzt nicht heißt, das jeder Script verbugt ist...)
Trotzdem danke :)
Das macht irgendwie keinen Sinn...oder?. :\
Das ist so als wenn du Hunger hast und Fisch essen willst und KD präsentiert ein Teller feinstem Lachs mit vielen leckeren Beilagen, welches du kostenlos Essen darfst, aber du ablehnend dann mit einem "Nein, danke. Schmeissen sie Teller weg, Herr Ober. Ich schaue mal selber was ich im Fluss an Fischen so finde" daherkommst.

diäitsch
23.08.2008, 15:54
So, ich habe jetzt erstmal für jeden Ggst. den man mit Team 1 erhalten kann eine Variabel festgelegt, und jetzt? (Hab's erstmal als extra Test Event gemacht)

http://file1.npage.de/001494/20/bilder/wie.png

http://file1.npage.de/001494/20/bilder/wie2.png

Wenn ich ihn anklicke, bleiben die Items so, mit "Sub" habe ich's auch schon versucht


Edit: @Ascare: Ich würde lieber Matjes oder einen Hering essen, will heißen ich will die standard Möglichkeiten des Makers nutzen

SMWma
23.08.2008, 21:05
ich erklaere es mit nur ein Item:
1)erstelle einen zyklus
2)im zykluss am amfang fraegst du mit einen conditional brench ab; obe es ein Item, gibt.
Wenn ja, dann erhoehst du Variable 0001 um eins.
Jetzt ferriengerst du das Item
2-2)Du fraegst wieder mit ein CB ab, ob das Item immrnoch exestiert. Im Ja-Berreich passiert nichts.
Aber im Nein Berreich wird Variable 0002 auf die gleiche Zahl, wie 0001 gesezt und der Zyklus wird gebrochen.
Dies gillt auch im anderem Nein-Berreich.

WICHTIG:
Pro Item nur zwei Variablen benutzen.

Um die genommene Items wieder z bekommen, muss man folgendes machen:
1)
zuerst ein Zyklus mit flogendes:
Du fraegst mit ein CB ab,ob Variable 0001 groeser als null ist und im ja-Fall erhoest du dein Item um eins und erniedrigst die Variable 0001 um eins.
Im Nein-Fall brichst du den Zyklus.

diäitsch
24.08.2008, 00:29
So, danke an euch allen, ich habe jetzt erstmal die Möglichkeit von Adrian2000 genommen, (Vorerst nur Items abgeben) 17 Loops mit CB sind doch gar nicht so viel ;)

The_Burrito
26.08.2008, 08:34
Edit: @Ascare: Ich würde lieber Matjes oder einen Hering essen, will heißen ich will die standard Möglichkeiten des Makers nutzen

Zu denen RGSS im Falle des RMXP ja wohl dazugehört.

Mal abgesehen davon können deine Eventskripte genau so verbugt sein wie Rubyskripte es sind. Und es soll tatsächlich Leute geben, die von sowas ne Ahnung haben, und es schaffen einfache Skripte ohne Bugs zu erstellen. Hab ich irgendwo mal gehört.

diäitsch
26.08.2008, 12:25
@The_Burrito:Ich habe jetzt Adrian2000's Lösungsweg benutzt, und er funktioniert super.
Der Eventscript funktioniert tadellos, und deshalb werde ich ihn auch nicht durch irgendeinen Script austauschen -_-
Btw. glaube ich dir gerne, das es Leute gibt, die Scripte ohne Bugs schreiben, aber es gibt auch welche, deren Scripte so verbuggt sind, das sie das Spiel beim z.B. Textbox anzeigen abstürzen lassen oder was auch immer ;)

diäitsch
18.09.2008, 17:10
Hey Leute,
kurze Frage:
Kann man die "Weather Effects" (beim Xp) eigentlich stärker als "9" machen?
Wenn ja, wie?
(Naja, man kann ja alles umstellen...aber wie? Ruby...)^^

Fir3bird
18.09.2008, 18:33
Vielleicht so:


#===========================
# ccoa's weather script
# with ideas by ScriptKitty and Mr.DJ
#===========================
# Weather Types:
# 1 - rain
# 2 - storm
# 3 - snow
# 4 - hail
# 5 - rain with thunder and lightning
# 6 - falling leaves (autumn)
# 7 - blowing leaves (autumn)
# 8 - swirling leaves (autumn)
# 9 - falling leaves (green)
# 10 - cherry blossom (sakura) petals
# 11 - rose petals
# 12 - feathers
# 13 - blood rain
# 14 - sparkles
# 15 - user defined
#
# Weather Power:
# An integer from 0-40. 0 = no weather, 40 = 400 sprites
#
# Usage:
# Create a call script with the following:
# $game_screen.weather(type, power, hue)
#
# Usage of user-defined weather:
# Look at the following globals:

$WEATHER_UPDATE = false # the $WEATHER_IMAGES array has changed, please update
$WEATHER_IMAGES = [] # the array of picture names to use
$WEATHER_X = 0 # the number of pixels the image should move horizontally (positive = right, negative = left)
$WEATHER_Y = 0 # the number of pizels the image should move vertically (positive = down, negative = up)
$WEATHER_FADE = 0 # how much the image should fade each update (0 = no fade, 255 = fade instantly)
$WEATHER_ANIMATED = false # whether or not the image should cycle through all the images

module RPG
class Weather
def initialize(viewport = nil)
@type = 0
@max = 0
@ox = 0
@oy = 0
@count = 0
@current_pose = []
@info = []
@countarray = []

make_bitmaps

# **** ccoa ****
for i in 1..500
sprite = Sprite.new(viewport)
sprite.z = 1000
sprite.visible = false
sprite.opacity = 0
@sprites.push(sprite)
@current_pose.push(0)
@info.push(rand(50))
@countarray.push(rand(15))
end
end

def dispose
for sprite in @sprites
sprite.dispose
end
@rain_bitmap.dispose
@storm_bitmap.dispose
@snow_bitmap.dispose
@hail_bitmap.dispose
@petal_bitmap.dispose
@blood_rain_bitmap.dispose
for image in @autumn_leaf_bitmaps
image.dispose
end
for image in @green_leaf_bitmaps
image.dispose
end
for image in @rose_bitmaps
image.dispose
end
for image in @feather_bitmaps
image.dispose
end
for image in @sparkle_bitmaps
image.dispose
end
for image in @user_bitmaps
image.dispose
end
$WEATHER_UPDATE = true
end

def type=(type)
return if @type == type
@type = type
case @type
when 1 # rain
bitmap = @rain_bitmap
when 2 # storm
bitmap = @storm_bitmap
when 3 # snow
bitmap = @snow_bitmap
when 4 # hail
bitmap = @hail_bitmap
when 5 # rain w/ thunder and lightning
bitmap = @rain_bitmap
@thunder = true
when 6 # falling autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 7 # blowing autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 8 # swirling autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 9 # falling green leaves
bitmap = @green_leaf_bitmaps[0]
when 10 # sakura petals
bitmap = @petal_bitmap
when 11 # rose petals
bitmap = @rose_bitmaps[0]
when 12 # feathers
bitmap = @feather_bitmaps[0]
when 13 # blood rain
bitmap = @blood_rain_bitmap
when 14 # sparkles
bitmap = @sparkle_bitmaps[0]
when 15 # user-defined
bitmap = @user_bitmaps[rand(@user_bitmaps.size)]
else
bitmap = nil
end
if @type != 5
@thunder = false
end
# **** ccoa ****
for i in 1..500
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
sprite.bitmap = bitmap
end
end
end

def ox=(ox)
return if @ox == ox;
@ox = ox
for sprite in @sprites
sprite.ox = @ox
end
end

def oy=(oy)
return if @oy == oy;
@oy = oy
for sprite in @sprites
sprite.oy = @oy
end
end

def max=(max)
return if @max == max;
# **** ccoa ****
@max = [[max, 0].max, 500].min
for i in 1..500
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
end
end
end

def update
return if @type == 0
for i in 1..@max
sprite = @sprites[i]
if sprite == nil
break
end
if @type == 1 or @type == 5 or @type == 13 # rain
sprite.x -= 2
sprite.y += 16
sprite.opacity -= 8
if @thunder and (rand(8000 - @max) == 0)
$game_screen.start_flash(Color.new(255, 255, 255, 255), 5)
Audio.se_play("Audio/SE/061-Thunderclap01")
end
end
if @type == 2 # storm
sprite.x -= 8
sprite.y += 16
sprite.opacity -= 12
end
if @type == 3 # snow
sprite.x -= 2
sprite.y += 8
sprite.opacity -= 8
end
if @type == 4 # hail
sprite.x -= 1
sprite.y += 18
sprite.opacity -= 15
end
if @type == 6 # falling autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
sprite.x -= 1
sprite.y += 1
end
if @type == 7 # blowing autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
sprite.x -= 10
sprite.y += (rand(4) - 2)
end
if @type == 8 # swirling autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
if @info[i] != 0
if @info[i] >= 1 and @info[i] <= 10
sprite.x -= 3
sprite.y -= 1
elsif @info[i] >= 11 and @info[i] <= 16
sprite.x -= 1
sprite.y -= 2
elsif @info[i] >= 17 and @info[i] <= 20
sprite.y -= 3
elsif @info[i] >= 21 and @info[i] <= 30
sprite.y -= 2
sprite.x += 1
elsif @info[i] >= 31 and @info[i] <= 36
sprite.y -= 1
sprite.x += 3
elsif @info[i] >= 37 and @info[i] <= 40
sprite.x += 5
elsif @info[i] >= 41 and @info[i] <= 46
sprite.y += 1
sprite.x += 3
elsif @info[i] >= 47 and @info[i] <= 58
sprite.y += 2
sprite.x += 1
elsif @info[i] >= 59 and @info[i] <= 64
sprite.y += 3
elsif @info[i] >= 65 and @info[i] <= 70
sprite.x -= 1
sprite.y += 2
elsif @info[i] >= 71 and @info[i] <= 81
sprite.x -= 3
sprite.y += 1
elsif @info[i] >= 82 and @info[i] <= 87
sprite.x -= 5
end
@info[i] = (@info[i] + 1) % 88
else
if rand(200) == 0
@info[i] = 1
end
sprite.x -= 5
sprite.y += 1
end
end
if @type == 9 # falling green leaves
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @green_leaf_bitmaps.size
sprite.bitmap = @green_leaf_bitmaps[@current_pose[i]]
@countarray[i] = rand(15)
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.y += 1
end
if @type == 10 # sakura petals
if @info[i] < 25
sprite.x -= 1
else
sprite.x += 1
end
@info[i] = (@info[i] + 1) % 50
sprite.y += 1
end
if @type == 11 # rose petals
@count = rand(20)
if @count == 0
sprite.bitmap = @rose_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @rose_bitmaps.size
end
if @info[i] % 2 == 0
if @info[i] < 10
sprite.x -= 1
else
sprite.x += 1
end
end
sprite.y += 1
end
if @type == 12 # feathers
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @feather_bitmaps.size
sprite.bitmap = @feather_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
if rand(100) == 0
sprite.x -= 1
end
if rand(100) == 0
sprite.y -= 1
end
if @info[i] < 50
if rand(2) == 0
sprite.x -= 1
else
sprite.y -= 1
end
else
if rand(2) == 0
sprite.x += 1
else
sprite.y += 1
end
end
@info[i] = (@info[i] + 1) % 100
end
if @type == 14 # sparkles
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @sparkle_bitmaps.size
sprite.bitmap = @sparkle_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.y += 1
sprite.opacity -= 1
end
if @type == 15 # user-defined
if $WEATHER_UPDATE
update_user_defined
$WEATHER_UPDATE = false
end
if $WEATHER_ANIMATED and @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @user_bitmaps.size
sprite.bitmap = @user_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.x += $WEATHER_X
sprite.y += $WEATHER_Y
sprite.opacity -= $WEATHER_FADE
end

x = sprite.x - @ox
y = sprite.y - @oy
if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
sprite.x = rand(800) - 50 + @ox
sprite.y = rand(800) - 200 + @oy
sprite.opacity = 255
end
end
end

def make_bitmaps
color1 = Color.new(255, 255, 255, 255)
color2 = Color.new(255, 255, 255, 128)
@rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
end
@storm_bitmap = Bitmap.new(34, 64)
for i in 0..31
@storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
@storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
@storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
end
@snow_bitmap = Bitmap.new(6, 6)
@snow_bitmap.fill_rect(0, 1, 6, 4, color2)
@snow_bitmap.fill_rect(1, 0, 4, 6, color2)
@snow_bitmap.fill_rect(1, 2, 4, 2, color1)
@snow_bitmap.fill_rect(2, 1, 2, 4, color1)
@sprites = []

blueGrey = Color.new(215, 227, 227, 150)
grey = Color.new(214, 217, 217, 150)
lightGrey = Color.new(233, 233, 233, 250)
lightBlue = Color.new(222, 239, 243, 250)
@hail_bitmap = Bitmap.new(4, 4)
@hail_bitmap.fill_rect(1, 0, 2, 1, blueGrey)
@hail_bitmap.fill_rect(0, 1, 1, 2, blueGrey)
@hail_bitmap.fill_rect(3, 1, 1, 2, grey)
@hail_bitmap.fill_rect(1, 3, 2, 1, grey)
@hail_bitmap.fill_rect(1, 1, 2, 2, lightGrey)
@hail_bitmap.set_pixel(1, 1, lightBlue)


color3 = Color.new(255, 167, 192, 255) # light pink
color4 = Color.new(213, 106, 136, 255) # dark pink
@petal_bitmap = Bitmap.new(4, 4) #This creates a new bitmap that is 4 x 4 pixels
@petal_bitmap.fill_rect(0, 3, 1, 1, color3) # this makes a 1x1 pixel "rectangle" at the 0, 3 pixel of the image (upper left corner is 0, 0)
@petal_bitmap.fill_rect(1, 2, 1, 1, color3)
@petal_bitmap.fill_rect(2, 1, 1, 1, color3)
@petal_bitmap.fill_rect(3, 0, 1, 1, color3)
@petal_bitmap.fill_rect(1, 3, 1, 1, color4)
@petal_bitmap.fill_rect(2, 2, 1, 1, color4)
@petal_bitmap.fill_rect(3, 1, 1, 1, color4)


brightOrange = Color.new(248, 88, 0, 255)
orangeBrown = Color.new(144, 80, 56, 255)
burntRed = Color.new(152, 0, 0, 255)
paleOrange = Color.new(232, 160, 128, 255)
darkBrown = Color.new(72, 40, 0, 255)
@autumn_leaf_bitmaps = []
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
# draw the first of the leaf1 bitmaps
@autumn_leaf_bitmaps[0].set_pixel(5, 1, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(7, 1, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(3, 2, orangeBrown)
@autumn_leaf_bitmaps[0].fill_rect(4, 2, 2, 1, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(6, 2, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(2, 3, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(3, 3, brightOrange)
@autumn_leaf_bitmaps[0].fill_rect(4, 3, 2, 1, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(1, 4, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(2, 4, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(3, 4, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(1, 5, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(2, 5, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(0, 6, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(1, 6, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(0, 7, paleOrange)

# draw the 2nd of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[1].set_pixel(3, 0, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(7, 0, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(3, 1, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(4, 1, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(0, 2, paleOrange)
@autumn_leaf_bitmaps[1].set_pixel(1, 2, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(2, 2, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(3, 2, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(4, 2, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(5, 2, brightOrange)
@autumn_leaf_bitmaps[1].fill_rect(1, 3, 3, 1, orangeBrown)
@autumn_leaf_bitmaps[1].fill_rect(4, 3, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(6, 3, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(2, 4, burntRed)
@autumn_leaf_bitmaps[1].fill_rect(3, 4, 3, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(6, 4, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(7, 4, darkBrown)
@autumn_leaf_bitmaps[1].set_pixel(1, 5, orangeBrown)
@autumn_leaf_bitmaps[1].fill_rect(2, 5, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(4, 5, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(5, 5, burntRed)
@autumn_leaf_bitmaps[1].fill_rect(1, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].fill_rect(4, 6, 2, 1, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(0, 7, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(5, 7, darkBrown)

# draw the 3rd of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[2].set_pixel(7, 1, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 2, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(7, 2, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(5, 3, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 3, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 4, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(5, 4, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 4, orangeBrown)
@autumn_leaf_bitmaps[2].fill_rect(2, 5, 2, 1, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 5, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(5, 5, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(1, 6, paleOrange)
@autumn_leaf_bitmaps[2].fill_rect(2, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 6, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(0, 7, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(1, 7, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(2, 7, orangeBrown)

# draw the 4th of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[3].set_pixel(3, 0, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(7, 0, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(3, 1, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(4, 1, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(0, 2, paleOrange)
@autumn_leaf_bitmaps[3].set_pixel(1, 2, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(2, 2, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(3, 2, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(4, 2, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(5, 2, brightOrange)
@autumn_leaf_bitmaps[3].fill_rect(1, 3, 3, 1, orangeBrown)
@autumn_leaf_bitmaps[3].fill_rect(4, 3, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(6, 3, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(2, 4, burntRed)
@autumn_leaf_bitmaps[3].fill_rect(3, 4, 3, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(6, 4, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(7, 4, darkBrown)
@autumn_leaf_bitmaps[3].set_pixel(1, 5, orangeBrown)
@autumn_leaf_bitmaps[3].fill_rect(2, 5, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(4, 5, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(5, 5, burntRed)
@autumn_leaf_bitmaps[3].fill_rect(1, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].fill_rect(4, 6, 2, 1, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(0, 7, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(5, 7, darkBrown)

@green_leaf_bitmaps = []
darkGreen = Color.new(62, 76, 31, 255)
midGreen = Color.new(76, 91, 43, 255)
khaki = Color.new(105, 114, 66, 255)
lightGreen = Color.new(128, 136, 88, 255)
mint = Color.new(146, 154, 106, 255)

# 1st leaf bitmap
@green_leaf_bitmaps[0] = Bitmap.new(8, 8)
@green_leaf_bitmaps[0].set_pixel(1, 0, darkGreen)
@green_leaf_bitmaps[0].set_pixel(1, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(2, 1, darkGreen)
@green_leaf_bitmaps[0].set_pixel(2, 2, khaki)
@green_leaf_bitmaps[0].set_pixel(3, 2, darkGreen)
@green_leaf_bitmaps[0].set_pixel(4, 2, khaki)
@green_leaf_bitmaps[0].fill_rect(2, 3, 3, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[0].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[0].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[0].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[0].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[0].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[0].set_pixel(5, 5, khaki)
@green_leaf_bitmaps[0].set_pixel(6, 5, lightGreen)
@green_leaf_bitmaps[0].set_pixel(4, 6, midGreen)
@green_leaf_bitmaps[0].set_pixel(5, 6, darkGreen)
@green_leaf_bitmaps[0].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[0].set_pixel(6, 7, khaki)

# 2nd leaf bitmap
@green_leaf_bitmaps[1] = Bitmap.new(8, 8)
@green_leaf_bitmaps[1].fill_rect(1, 1, 1, 2, midGreen)
@green_leaf_bitmaps[1].fill_rect(2, 2, 2, 1, khaki)
@green_leaf_bitmaps[1].set_pixel(4, 2, lightGreen)
@green_leaf_bitmaps[1].fill_rect(2, 3, 2, 1, darkGreen)
@green_leaf_bitmaps[1].fill_rect(4, 3, 2, 1, lightGreen)
@green_leaf_bitmaps[1].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[1].set_pixel(3, 4, darkGreen)
@green_leaf_bitmaps[1].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[1].fill_rect(5, 4, 2, 1, lightGreen)
@green_leaf_bitmaps[1].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[1].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[1].set_pixel(5, 5, khaki)
@green_leaf_bitmaps[1].set_pixel(6, 5, lightGreen)
@green_leaf_bitmaps[1].set_pixel(5, 6, darkGreen)
@green_leaf_bitmaps[1].fill_rect(6, 6, 2, 1, khaki)

# 3rd leaf bitmap
@green_leaf_bitmaps[2] = Bitmap.new(8, 8)
@green_leaf_bitmaps[2].set_pixel(1, 1, darkGreen)
@green_leaf_bitmaps[2].fill_rect(1, 2, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(2, 3, midGreen)
@green_leaf_bitmaps[2].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[2].set_pixel(4, 3, midGreen)
@green_leaf_bitmaps[2].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[2].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[2].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[2].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[2].fill_rect(5, 5, 2, 1, khaki)
@green_leaf_bitmaps[2].fill_rect(4, 6, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[2].set_pixel(6, 7, khaki)

# 4th leaf bitmap
@green_leaf_bitmaps[3] = Bitmap.new(8, 8)
@green_leaf_bitmaps[3].fill_rect(0, 3, 1, 2, darkGreen)
@green_leaf_bitmaps[3].set_pixel(1, 4, midGreen)
@green_leaf_bitmaps[3].set_pixel(2, 4, khaki)
@green_leaf_bitmaps[3].set_pixel(3, 4, lightGreen)
@green_leaf_bitmaps[3].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[3].set_pixel(7, 4, midGreen)
@green_leaf_bitmaps[3].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[3].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[3].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[3].set_pixel(4, 5, mint)
@green_leaf_bitmaps[3].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[3].set_pixel(6, 5, khaki)
@green_leaf_bitmaps[3].set_pixel(7, 5, midGreen)
@green_leaf_bitmaps[3].fill_rect(2, 6, 2, 1, midGreen)
@green_leaf_bitmaps[3].set_pixel(4, 6, lightGreen)
@green_leaf_bitmaps[3].set_pixel(5, 6, khaki)
@green_leaf_bitmaps[3].set_pixel(6, 6, midGreen)

# 5th leaf bitmap
@green_leaf_bitmaps[4] = Bitmap.new(8, 8)
@green_leaf_bitmaps[4].set_pixel(6, 2, midGreen)
@green_leaf_bitmaps[4].set_pixel(7, 2, darkGreen)
@green_leaf_bitmaps[4].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[4].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[4].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[4].fill_rect(3, 4, 2, 1, khaki)
@green_leaf_bitmaps[4].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[4].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[4].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[4].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[4].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[4].set_pixel(4, 5, mint)
@green_leaf_bitmaps[4].set_pixel(5, 5, midGreen)
@green_leaf_bitmaps[4].set_pixel(2, 6, darkGreen)
@green_leaf_bitmaps[4].fill_rect(3, 6, 2, 1, midGreen)

# 6th leaf bitmap
@green_leaf_bitmaps[5] = Bitmap.new(8, 8)
@green_leaf_bitmaps[5].fill_rect(6, 2, 2, 1, midGreen)
@green_leaf_bitmaps[5].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[5].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[5].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[5].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[5].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[5].set_pixel(6, 4, mint)
@green_leaf_bitmaps[5].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[5].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[5].fill_rect(3, 5, 2, 1, mint)
@green_leaf_bitmaps[5].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[5].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[5].set_pixel(3, 6, khaki)
@green_leaf_bitmaps[5].set_pixel(4, 6, lightGreen)

# 7th leaf bitmap
@green_leaf_bitmaps[6] = Bitmap.new(8, 8)
@green_leaf_bitmaps[6].fill_rect(6, 1, 1, 2, midGreen)
@green_leaf_bitmaps[6].fill_rect(4, 2, 2, 1, midGreen)
@green_leaf_bitmaps[6].fill_rect(6, 2, 1, 2, darkGreen)
@green_leaf_bitmaps[6].fill_rect(3, 3, 2, 1, midGreen)
@green_leaf_bitmaps[6].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[6].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[6].set_pixel(3, 4, khaki)
@green_leaf_bitmaps[6].set_pixel(4, 4, lightGreen)
@green_leaf_bitmaps[6].set_pixel(5, 4, midGreen)
@green_leaf_bitmaps[6].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[6].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[6].fill_rect(3, 5, 2, 1, midGreen)
@green_leaf_bitmaps[6].set_pixel(1, 6, darkGreen)
@green_leaf_bitmaps[6].set_pixel(2, 6, midGreen)

# 8th leaf bitmap
@green_leaf_bitmaps[7] = Bitmap.new(8, 8)
@green_leaf_bitmaps[7].set_pixel(6, 1, midGreen)
@green_leaf_bitmaps[7].fill_rect(4, 2, 3, 2, midGreen)
@green_leaf_bitmaps[7].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[7].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[7].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[7].fill_rect(4, 4, 2, 1, khaki)
@green_leaf_bitmaps[7].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[7].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[7].fill_rect(3, 5, 2, 1, lightGreen)
@green_leaf_bitmaps[7].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[7].set_pixel(3, 6, lightGreen)

# 9th leaf bitmap
@green_leaf_bitmaps[8] = Bitmap.new(8, 8)
@green_leaf_bitmaps[8].fill_rect(6, 1, 1, 2, midGreen)
@green_leaf_bitmaps[8].fill_rect(4, 2, 2, 1, midGreen)
@green_leaf_bitmaps[8].fill_rect(6, 2, 1, 2, darkGreen)
@green_leaf_bitmaps[8].fill_rect(3, 3, 2, 1, midGreen)
@green_leaf_bitmaps[8].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[8].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[8].set_pixel(3, 4, khaki)
@green_leaf_bitmaps[8].set_pixel(4, 4, lightGreen)
@green_leaf_bitmaps[8].set_pixel(5, 4, midGreen)
@green_leaf_bitmaps[8].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[8].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[8].fill_rect(3, 5, 2, 1, midGreen)
@green_leaf_bitmaps[8].set_pixel(1, 6, darkGreen)
@green_leaf_bitmaps[8].set_pixel(2, 6, midGreen)

# 10th leaf bitmap
@green_leaf_bitmaps[9] = Bitmap.new(8, 8)
@green_leaf_bitmaps[9].fill_rect(6, 2, 2, 1, midGreen)
@green_leaf_bitmaps[9].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[9].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[9].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[9].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[9].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[9].set_pixel(6, 4, mint)
@green_leaf_bitmaps[9].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[9].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[9].fill_rect(3, 5, 2, 1, mint)
@green_leaf_bitmaps[9].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[9].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[9].set_pixel(3, 6, khaki)
@green_leaf_bitmaps[9].set_pixel(4, 6, lightGreen)

# 11th leaf bitmap
@green_leaf_bitmaps[10] = Bitmap.new(8, 8)
@green_leaf_bitmaps[10].set_pixel(6, 2, midGreen)
@green_leaf_bitmaps[10].set_pixel(7, 2, darkGreen)
@green_leaf_bitmaps[10].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[10].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[10].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[10].fill_rect(3, 4, 2, 1, khaki)
@green_leaf_bitmaps[10].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[10].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[10].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[10].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[10].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[10].set_pixel(4, 5, mint)
@green_leaf_bitmaps[10].set_pixel(5, 5, midGreen)
@green_leaf_bitmaps[10].set_pixel(2, 6, darkGreen)
@green_leaf_bitmaps[10].fill_rect(3, 6, 2, 1, midGreen)



# 12th leaf bitmap
@green_leaf_bitmaps[11] = Bitmap.new(8, 8)
@green_leaf_bitmaps[11].fill_rect(0, 3, 1, 2, darkGreen)
@green_leaf_bitmaps[11].set_pixel(1, 4, midGreen)
@green_leaf_bitmaps[11].set_pixel(2, 4, khaki)
@green_leaf_bitmaps[11].set_pixel(3, 4, lightGreen)
@green_leaf_bitmaps[11].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[11].set_pixel(7, 4, midGreen)
@green_leaf_bitmaps[11].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[11].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[11].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[11].set_pixel(4, 5, mint)
@green_leaf_bitmaps[11].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[11].set_pixel(6, 5, khaki)
@green_leaf_bitmaps[11].set_pixel(7, 5, midGreen)
@green_leaf_bitmaps[11].fill_rect(2, 6, 2, 1, midGreen)
@green_leaf_bitmaps[11].set_pixel(4, 6, lightGreen)
@green_leaf_bitmaps[11].set_pixel(5, 6, khaki)
@green_leaf_bitmaps[11].set_pixel(6, 6, midGreen)

# 13th leaf bitmap
@green_leaf_bitmaps[12] = Bitmap.new(8, 8)
@green_leaf_bitmaps[12].set_pixel(1, 1, darkGreen)
@green_leaf_bitmaps[12].fill_rect(1, 2, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(2, 3, midGreen)
@green_leaf_bitmaps[12].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[12].set_pixel(4, 3, midGreen)
@green_leaf_bitmaps[12].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[12].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[12].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[12].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[12].fill_rect(5, 5, 2, 1, khaki)
@green_leaf_bitmaps[12].fill_rect(4, 6, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[12].set_pixel(6, 7, khaki)

@rose_bitmaps = []
brightRed = Color.new(255, 0, 0, 255)
midRed = Color.new(179, 17, 17, 255)
darkRed = Color.new(141, 9, 9, 255)

# 1st rose petal bitmap
@rose_bitmaps[0] = Bitmap.new(3, 3)
@rose_bitmaps[0].fill_rect(1, 0, 2, 1, brightRed)
@rose_bitmaps[0].fill_rect(0, 1, 1, 2, brightRed)
@rose_bitmaps[0].fill_rect(1, 1, 2, 2, midRed)
@rose_bitmaps[0].set_pixel(2, 2, darkRed)

# 2nd rose petal bitmap
@rose_bitmaps[1] = Bitmap.new(3, 3)
@rose_bitmaps[1].set_pixel(0, 1, midRed)
@rose_bitmaps[1].set_pixel(1, 1, brightRed)
@rose_bitmaps[1].fill_rect(1, 2, 1, 2, midRed)

@feather_bitmaps = []
white = Color.new(255, 255, 255, 255)

# 1st feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(0, 2, white)
@feather_bitmaps[0].set_pixel(1, 2, grey)
@feather_bitmaps[0].set_pixel(2, 1, grey)

# 2nd feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(0, 0, white)
@feather_bitmaps[0].set_pixel(0, 1, grey)
@feather_bitmaps[0].set_pixel(1, 2, grey)

# 3rd feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(2, 0, white)
@feather_bitmaps[0].set_pixel(1, 0, grey)
@feather_bitmaps[0].set_pixel(0, 1, grey)

# 4th feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(2, 2, white)
@feather_bitmaps[0].set_pixel(2, 1, grey)
@feather_bitmaps[0].set_pixel(1, 0, grey)

@blood_rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@blood_rain_bitmap.fill_rect(6-i, i*8, 1, 8, darkRed)
end

@sparkle_bitmaps = []

lightBlue = Color.new(181, 244, 255, 255)
midBlue = Color.new(126, 197, 235, 255)
darkBlue = Color.new(77, 136, 225, 255)

# 1st sparkle bitmap
@sparkle_bitmaps[0] = Bitmap.new(7, 7)
@sparkle_bitmaps[0].set_pixel(3, 3, darkBlue)

# 2nd sparkle bitmap
@sparkle_bitmaps[1] = Bitmap.new(7, 7)
@sparkle_bitmaps[1].fill_rect(3, 2, 1, 3, darkBlue)
@sparkle_bitmaps[1].fill_rect(2, 3, 3, 1, darkBlue)
@sparkle_bitmaps[1].set_pixel(3, 3, midBlue)

# 3rd sparkle bitmap
@sparkle_bitmaps[2] = Bitmap.new(7, 7)
@sparkle_bitmaps[2].set_pixel(1, 1, darkBlue)
@sparkle_bitmaps[2].set_pixel(5, 1, darkBlue)
@sparkle_bitmaps[2].set_pixel(2, 2, midBlue)
@sparkle_bitmaps[2].set_pixel(4, 2, midBlue)
@sparkle_bitmaps[2].set_pixel(3, 3, lightBlue)
@sparkle_bitmaps[2].set_pixel(2, 4, midBlue)
@sparkle_bitmaps[2].set_pixel(4, 4, midBlue)
@sparkle_bitmaps[2].set_pixel(1, 5, darkBlue)
@sparkle_bitmaps[2].set_pixel(5, 5, darkBlue)

# 4th sparkle bitmap
@sparkle_bitmaps[3] = Bitmap.new(7, 7)
@sparkle_bitmaps[3].fill_rect(3, 1, 1, 5, darkBlue)
@sparkle_bitmaps[3].fill_rect(1, 3, 5, 1, darkBlue)
@sparkle_bitmaps[3].fill_rect(3, 2, 1, 3, midBlue)
@sparkle_bitmaps[3].fill_rect(2, 3, 3, 1, midBlue)
@sparkle_bitmaps[3].set_pixel(3, 3, lightBlue)

# 5th sparkle bitmap
@sparkle_bitmaps[4] = Bitmap.new(7, 7)
@sparkle_bitmaps[4].fill_rect(2, 2, 3, 3, midBlue)
@sparkle_bitmaps[4].fill_rect(3, 2, 1, 3, darkBlue)
@sparkle_bitmaps[4].fill_rect(2, 3, 3, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(3, 3, lightBlue)
@sparkle_bitmaps[4].set_pixel(1, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(5, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(1, 5, darkBlue)
@sparkle_bitmaps[4].set_pixel(5, 1, darkBlue)

# 6th sparkle bitmap
@sparkle_bitmaps[5] = Bitmap.new(7, 7)
@sparkle_bitmaps[5].fill_rect(2, 1, 3, 5, darkBlue)
@sparkle_bitmaps[5].fill_rect(1, 2, 5, 3, darkBlue)
@sparkle_bitmaps[5].fill_rect(2, 2, 3, 3, midBlue)
@sparkle_bitmaps[5].fill_rect(3, 1, 1, 5, midBlue)
@sparkle_bitmaps[5].fill_rect(1, 3, 5, 1, midBlue)
@sparkle_bitmaps[5].fill_rect(3, 2, 1, 3, lightBlue)
@sparkle_bitmaps[5].fill_rect(2, 3, 3, 1, lightBlue)
@sparkle_bitmaps[5].set_pixel(3, 3, white)

# 7th sparkle bitmap
@sparkle_bitmaps[6] = Bitmap.new(7, 7)
@sparkle_bitmaps[6].fill_rect(2, 1, 3, 5, midBlue)
@sparkle_bitmaps[6].fill_rect(1, 2, 5, 3, midBlue)
@sparkle_bitmaps[6].fill_rect(3, 0, 1, 7, darkBlue)
@sparkle_bitmaps[6].fill_rect(0, 3, 7, 1, darkBlue)
@sparkle_bitmaps[6].fill_rect(2, 2, 3, 3, lightBlue)
@sparkle_bitmaps[6].fill_rect(3, 2, 1, 3, midBlue)
@sparkle_bitmaps[6].fill_rect(2, 3, 3, 1, midBlue)
@sparkle_bitmaps[6].set_pixel(3, 3, white)

@user_bitmaps = []
update_user_defined
end

def update_user_defined
for image in @user_bitmaps
image.dispose
end

#user-defined bitmaps
for name in $WEATHER_IMAGES
@user_bitmaps.push(RPG::Cache.picture(name))
end
for sprite in @sprites
sprite.bitmap = @user_bitmaps[rand(@user_bitmaps.size)]
end
end

attr_reader :type
attr_reader :max
attr_reader :ox
attr_reader :oy
end
end

diäitsch
18.09.2008, 19:09
Danke, werd's mal am Wochenende ausprobieren.
Über "Main" einfügen?

Ascare
19.09.2008, 01:31
Danke, werd's mal am Wochenende ausprobieren.
Über "Main" einfügen?
Yep. Allerdings musst du aufpassen weil Firebird kein CODE-Tag benutzt hat...könnten also Fehler auftauchen.

Fir3bird
19.09.2008, 11:36
Yep. Allerdings musst du aufpassen weil Firebird kein CODE-Tag benutzt hat...könnten also Fehler auftauchen.

Äh, was ?!

Ascare
19.09.2008, 13:12
Wenn du Scripte postest benutze den CODE-Tag, dann wird das Script richtig formatiert. Bei deinem Script sind ganz zum Schluß unten 2 Smileys z.B. das gehört da nicht hin und wird daher nicht funktionieren. Anstatt den Spoiler zu nehmen gibt es 3 Symbole links davon so ein # und das ist der CODE-Tag, das sieht dann so aus:


#===========================
# ccoa's weather script
# with ideas by ScriptKitty and Mr.DJ
#===========================
# Weather Types:
# 1 - rain
# 2 - storm
# 3 - snow
# 4 - hail
# 5 - rain with thunder and lightning
# 6 - falling leaves (autumn)
# 7 - blowing leaves (autumn)
# 8 - swirling leaves (autumn)
# 9 - falling leaves (green)
# 10 - cherry blossom (sakura) petals
# 11 - rose petals
# 12 - feathers
# 13 - blood rain
# 14 - sparkles
# 15 - user defined
#
# Weather Power:
# An integer from 0-40. 0 = no weather, 40 = 400 sprites
#
# Usage:
# Create a call script with the following:
# $game_screen.weather(type, power, hue)
#
# Usage of user-defined weather:
# Look at the following globals:

$WEATHER_UPDATE = false # the $WEATHER_IMAGES array has changed, please update
$WEATHER_IMAGES = [] # the array of picture names to use
$WEATHER_X = 0 # the number of pixels the image should move horizontally (positive = right, negative = left)
$WEATHER_Y = 0 # the number of pizels the image should move vertically (positive = down, negative = up)
$WEATHER_FADE = 0 # how much the image should fade each update (0 = no fade, 255 = fade instantly)
$WEATHER_ANIMATED = false # whether or not the image should cycle through all the images

module RPG
class Weather
def initialize(viewport = nil)
@type = 0
@max = 0
@ox = 0
@oy = 0
@count = 0
@current_pose = []
@info = []
@countarray = []

make_bitmaps

# **** ccoa ****
for i in 1..500
sprite = Sprite.new(viewport)
sprite.z = 1000
sprite.visible = false
sprite.opacity = 0
@sprites.push(sprite)
@current_pose.push(0)
@info.push(rand(50))
@countarray.push(rand(15))
end
end

def dispose
for sprite in @sprites
sprite.dispose
end
@rain_bitmap.dispose
@storm_bitmap.dispose
@snow_bitmap.dispose
@hail_bitmap.dispose
@petal_bitmap.dispose
@blood_rain_bitmap.dispose
for image in @autumn_leaf_bitmaps
image.dispose
end
for image in @green_leaf_bitmaps
image.dispose
end
for image in @rose_bitmaps
image.dispose
end
for image in @feather_bitmaps
image.dispose
end
for image in @sparkle_bitmaps
image.dispose
end
for image in @user_bitmaps
image.dispose
end
$WEATHER_UPDATE = true
end

def type=(type)
return if @type == type
@type = type
case @type
when 1 # rain
bitmap = @rain_bitmap
when 2 # storm
bitmap = @storm_bitmap
when 3 # snow
bitmap = @snow_bitmap
when 4 # hail
bitmap = @hail_bitmap
when 5 # rain w/ thunder and lightning
bitmap = @rain_bitmap
@thunder = true
when 6 # falling autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 7 # blowing autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 8 # swirling autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 9 # falling green leaves
bitmap = @green_leaf_bitmaps[0]
when 10 # sakura petals
bitmap = @petal_bitmap
when 11 # rose petals
bitmap = @rose_bitmaps[0]
when 12 # feathers
bitmap = @feather_bitmaps[0]
when 13 # blood rain
bitmap = @blood_rain_bitmap
when 14 # sparkles
bitmap = @sparkle_bitmaps[0]
when 15 # user-defined
bitmap = @user_bitmaps[rand(@user_bitmaps.size)]
else
bitmap = nil
end
if @type != 5
@thunder = false
end
# **** ccoa ****
for i in 1..500
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
sprite.bitmap = bitmap
end
end
end

def ox=(ox)
return if @ox == ox;
@ox = ox
for sprite in @sprites
sprite.ox = @ox
end
end

def oy=(oy)
return if @oy == oy;
@oy = oy
for sprite in @sprites
sprite.oy = @oy
end
end

def max=(max)
return if @max == max;
# **** ccoa ****
@max = [[max, 0].max, 500].min
for i in 1..500
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
end
end
end

def update
return if @type == 0
for i in 1..@max
sprite = @sprites[i]
if sprite == nil
break
end
if @type == 1 or @type == 5 or @type == 13 # rain
sprite.x -= 2
sprite.y += 16
sprite.opacity -= 8
if @thunder and (rand(8000 - @max) == 0)
$game_screen.start_flash(Color.new(255, 255, 255, 255), 5)
Audio.se_play("Audio/SE/061-Thunderclap01")
end
end
if @type == 2 # storm
sprite.x -= 8
sprite.y += 16
sprite.opacity -= 12
end
if @type == 3 # snow
sprite.x -= 2
sprite.y += 8
sprite.opacity -= 8
end
if @type == 4 # hail
sprite.x -= 1
sprite.y += 18
sprite.opacity -= 15
end
if @type == 6 # falling autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
sprite.x -= 1
sprite.y += 1
end
if @type == 7 # blowing autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
sprite.x -= 10
sprite.y += (rand(4) - 2)
end
if @type == 8 # swirling autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
if @info[i] != 0
if @info[i] >= 1 and @info[i] <= 10
sprite.x -= 3
sprite.y -= 1
elsif @info[i] >= 11 and @info[i] <= 16
sprite.x -= 1
sprite.y -= 2
elsif @info[i] >= 17 and @info[i] <= 20
sprite.y -= 3
elsif @info[i] >= 21 and @info[i] <= 30
sprite.y -= 2
sprite.x += 1
elsif @info[i] >= 31 and @info[i] <= 36
sprite.y -= 1
sprite.x += 3
elsif @info[i] >= 37 and @info[i] <= 40
sprite.x += 5
elsif @info[i] >= 41 and @info[i] <= 46
sprite.y += 1
sprite.x += 3
elsif @info[i] >= 47 and @info[i] <= 58
sprite.y += 2
sprite.x += 1
elsif @info[i] >= 59 and @info[i] <= 64
sprite.y += 3
elsif @info[i] >= 65 and @info[i] <= 70
sprite.x -= 1
sprite.y += 2
elsif @info[i] >= 71 and @info[i] <= 81
sprite.x -= 3
sprite.y += 1
elsif @info[i] >= 82 and @info[i] <= 87
sprite.x -= 5
end
@info[i] = (@info[i] + 1) % 88
else
if rand(200) == 0
@info[i] = 1
end
sprite.x -= 5
sprite.y += 1
end
end
if @type == 9 # falling green leaves
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @green_leaf_bitmaps.size
sprite.bitmap = @green_leaf_bitmaps[@current_pose[i]]
@countarray[i] = rand(15)
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.y += 1
end
if @type == 10 # sakura petals
if @info[i] < 25
sprite.x -= 1
else
sprite.x += 1
end
@info[i] = (@info[i] + 1) % 50
sprite.y += 1
end
if @type == 11 # rose petals
@count = rand(20)
if @count == 0
sprite.bitmap = @rose_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @rose_bitmaps.size
end
if @info[i] % 2 == 0
if @info[i] < 10
sprite.x -= 1
else
sprite.x += 1
end
end
sprite.y += 1
end
if @type == 12 # feathers
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @feather_bitmaps.size
sprite.bitmap = @feather_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
if rand(100) == 0
sprite.x -= 1
end
if rand(100) == 0
sprite.y -= 1
end
if @info[i] < 50
if rand(2) == 0
sprite.x -= 1
else
sprite.y -= 1
end
else
if rand(2) == 0
sprite.x += 1
else
sprite.y += 1
end
end
@info[i] = (@info[i] + 1) % 100
end
if @type == 14 # sparkles
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @sparkle_bitmaps.size
sprite.bitmap = @sparkle_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.y += 1
sprite.opacity -= 1
end
if @type == 15 # user-defined
if $WEATHER_UPDATE
update_user_defined
$WEATHER_UPDATE = false
end
if $WEATHER_ANIMATED and @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @user_bitmaps.size
sprite.bitmap = @user_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.x += $WEATHER_X
sprite.y += $WEATHER_Y
sprite.opacity -= $WEATHER_FADE
end

x = sprite.x - @ox
y = sprite.y - @oy
if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
sprite.x = rand(800) - 50 + @ox
sprite.y = rand(800) - 200 + @oy
sprite.opacity = 255
end
end
end

def make_bitmaps
color1 = Color.new(255, 255, 255, 255)
color2 = Color.new(255, 255, 255, 128)
@rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
end
@storm_bitmap = Bitmap.new(34, 64)
for i in 0..31
@storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
@storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
@storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
end
@snow_bitmap = Bitmap.new(6, 6)
@snow_bitmap.fill_rect(0, 1, 6, 4, color2)
@snow_bitmap.fill_rect(1, 0, 4, 6, color2)
@snow_bitmap.fill_rect(1, 2, 4, 2, color1)
@snow_bitmap.fill_rect(2, 1, 2, 4, color1)
@sprites = []

blueGrey = Color.new(215, 227, 227, 150)
grey = Color.new(214, 217, 217, 150)
lightGrey = Color.new(233, 233, 233, 250)
lightBlue = Color.new(222, 239, 243, 250)
@hail_bitmap = Bitmap.new(4, 4)
@hail_bitmap.fill_rect(1, 0, 2, 1, blueGrey)
@hail_bitmap.fill_rect(0, 1, 1, 2, blueGrey)
@hail_bitmap.fill_rect(3, 1, 1, 2, grey)
@hail_bitmap.fill_rect(1, 3, 2, 1, grey)
@hail_bitmap.fill_rect(1, 1, 2, 2, lightGrey)
@hail_bitmap.set_pixel(1, 1, lightBlue)


color3 = Color.new(255, 167, 192, 255) # light pink
color4 = Color.new(213, 106, 136, 255) # dark pink
@petal_bitmap = Bitmap.new(4, 4) #This creates a new bitmap that is 4 x 4 pixels
@petal_bitmap.fill_rect(0, 3, 1, 1, color3) # this makes a 1x1 pixel "rectangle" at the 0, 3 pixel of the image (upper left corner is 0, 0)
@petal_bitmap.fill_rect(1, 2, 1, 1, color3)
@petal_bitmap.fill_rect(2, 1, 1, 1, color3)
@petal_bitmap.fill_rect(3, 0, 1, 1, color3)
@petal_bitmap.fill_rect(1, 3, 1, 1, color4)
@petal_bitmap.fill_rect(2, 2, 1, 1, color4)
@petal_bitmap.fill_rect(3, 1, 1, 1, color4)


brightOrange = Color.new(248, 88, 0, 255)
orangeBrown = Color.new(144, 80, 56, 255)
burntRed = Color.new(152, 0, 0, 255)
paleOrange = Color.new(232, 160, 128, 255)
darkBrown = Color.new(72, 40, 0, 255)
@autumn_leaf_bitmaps = []
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
# draw the first of the leaf1 bitmaps
@autumn_leaf_bitmaps[0].set_pixel(5, 1, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(7, 1, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(3, 2, orangeBrown)
@autumn_leaf_bitmaps[0].fill_rect(4, 2, 2, 1, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(6, 2, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(2, 3, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(3, 3, brightOrange)
@autumn_leaf_bitmaps[0].fill_rect(4, 3, 2, 1, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(1, 4, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(2, 4, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(3, 4, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(1, 5, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(2, 5, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(0, 6, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(1, 6, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(0, 7, paleOrange)

# draw the 2nd of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[1].set_pixel(3, 0, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(7, 0, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(3, 1, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(4, 1, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(0, 2, paleOrange)
@autumn_leaf_bitmaps[1].set_pixel(1, 2, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(2, 2, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(3, 2, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(4, 2, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(5, 2, brightOrange)
@autumn_leaf_bitmaps[1].fill_rect(1, 3, 3, 1, orangeBrown)
@autumn_leaf_bitmaps[1].fill_rect(4, 3, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(6, 3, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(2, 4, burntRed)
@autumn_leaf_bitmaps[1].fill_rect(3, 4, 3, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(6, 4, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(7, 4, darkBrown)
@autumn_leaf_bitmaps[1].set_pixel(1, 5, orangeBrown)
@autumn_leaf_bitmaps[1].fill_rect(2, 5, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(4, 5, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(5, 5, burntRed)
@autumn_leaf_bitmaps[1].fill_rect(1, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].fill_rect(4, 6, 2, 1, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(0, 7, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(5, 7, darkBrown)

# draw the 3rd of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[2].set_pixel(7, 1, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 2, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(7, 2, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(5, 3, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 3, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 4, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(5, 4, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 4, orangeBrown)
@autumn_leaf_bitmaps[2].fill_rect(2, 5, 2, 1, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 5, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(5, 5, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(1, 6, paleOrange)
@autumn_leaf_bitmaps[2].fill_rect(2, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 6, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(0, 7, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(1, 7, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(2, 7, orangeBrown)

# draw the 4th of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[3].set_pixel(3, 0, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(7, 0, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(3, 1, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(4, 1, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(0, 2, paleOrange)
@autumn_leaf_bitmaps[3].set_pixel(1, 2, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(2, 2, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(3, 2, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(4, 2, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(5, 2, brightOrange)
@autumn_leaf_bitmaps[3].fill_rect(1, 3, 3, 1, orangeBrown)
@autumn_leaf_bitmaps[3].fill_rect(4, 3, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(6, 3, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(2, 4, burntRed)
@autumn_leaf_bitmaps[3].fill_rect(3, 4, 3, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(6, 4, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(7, 4, darkBrown)
@autumn_leaf_bitmaps[3].set_pixel(1, 5, orangeBrown)
@autumn_leaf_bitmaps[3].fill_rect(2, 5, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(4, 5, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(5, 5, burntRed)
@autumn_leaf_bitmaps[3].fill_rect(1, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].fill_rect(4, 6, 2, 1, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(0, 7, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(5, 7, darkBrown)

@green_leaf_bitmaps = []
darkGreen = Color.new(62, 76, 31, 255)
midGreen = Color.new(76, 91, 43, 255)
khaki = Color.new(105, 114, 66, 255)
lightGreen = Color.new(128, 136, 88, 255)
mint = Color.new(146, 154, 106, 255)

# 1st leaf bitmap
@green_leaf_bitmaps[0] = Bitmap.new(8, 8)
@green_leaf_bitmaps[0].set_pixel(1, 0, darkGreen)
@green_leaf_bitmaps[0].set_pixel(1, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(2, 1, darkGreen)
@green_leaf_bitmaps[0].set_pixel(2, 2, khaki)
@green_leaf_bitmaps[0].set_pixel(3, 2, darkGreen)
@green_leaf_bitmaps[0].set_pixel(4, 2, khaki)
@green_leaf_bitmaps[0].fill_rect(2, 3, 3, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[0].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[0].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[0].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[0].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[0].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[0].set_pixel(5, 5, khaki)
@green_leaf_bitmaps[0].set_pixel(6, 5, lightGreen)
@green_leaf_bitmaps[0].set_pixel(4, 6, midGreen)
@green_leaf_bitmaps[0].set_pixel(5, 6, darkGreen)
@green_leaf_bitmaps[0].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[0].set_pixel(6, 7, khaki)

# 2nd leaf bitmap
@green_leaf_bitmaps[1] = Bitmap.new(8, 8)
@green_leaf_bitmaps[1].fill_rect(1, 1, 1, 2, midGreen)
@green_leaf_bitmaps[1].fill_rect(2, 2, 2, 1, khaki)
@green_leaf_bitmaps[1].set_pixel(4, 2, lightGreen)
@green_leaf_bitmaps[1].fill_rect(2, 3, 2, 1, darkGreen)
@green_leaf_bitmaps[1].fill_rect(4, 3, 2, 1, lightGreen)
@green_leaf_bitmaps[1].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[1].set_pixel(3, 4, darkGreen)
@green_leaf_bitmaps[1].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[1].fill_rect(5, 4, 2, 1, lightGreen)
@green_leaf_bitmaps[1].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[1].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[1].set_pixel(5, 5, khaki)
@green_leaf_bitmaps[1].set_pixel(6, 5, lightGreen)
@green_leaf_bitmaps[1].set_pixel(5, 6, darkGreen)
@green_leaf_bitmaps[1].fill_rect(6, 6, 2, 1, khaki)

# 3rd leaf bitmap
@green_leaf_bitmaps[2] = Bitmap.new(8, 8)
@green_leaf_bitmaps[2].set_pixel(1, 1, darkGreen)
@green_leaf_bitmaps[2].fill_rect(1, 2, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(2, 3, midGreen)
@green_leaf_bitmaps[2].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[2].set_pixel(4, 3, midGreen)
@green_leaf_bitmaps[2].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[2].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[2].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[2].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[2].fill_rect(5, 5, 2, 1, khaki)
@green_leaf_bitmaps[2].fill_rect(4, 6, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[2].set_pixel(6, 7, khaki)

# 4th leaf bitmap
@green_leaf_bitmaps[3] = Bitmap.new(8, 8)
@green_leaf_bitmaps[3].fill_rect(0, 3, 1, 2, darkGreen)
@green_leaf_bitmaps[3].set_pixel(1, 4, midGreen)
@green_leaf_bitmaps[3].set_pixel(2, 4, khaki)
@green_leaf_bitmaps[3].set_pixel(3, 4, lightGreen)
@green_leaf_bitmaps[3].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[3].set_pixel(7, 4, midGreen)
@green_leaf_bitmaps[3].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[3].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[3].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[3].set_pixel(4, 5, mint)
@green_leaf_bitmaps[3].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[3].set_pixel(6, 5, khaki)
@green_leaf_bitmaps[3].set_pixel(7, 5, midGreen)
@green_leaf_bitmaps[3].fill_rect(2, 6, 2, 1, midGreen)
@green_leaf_bitmaps[3].set_pixel(4, 6, lightGreen)
@green_leaf_bitmaps[3].set_pixel(5, 6, khaki)
@green_leaf_bitmaps[3].set_pixel(6, 6, midGreen)

# 5th leaf bitmap
@green_leaf_bitmaps[4] = Bitmap.new(8, 8)
@green_leaf_bitmaps[4].set_pixel(6, 2, midGreen)
@green_leaf_bitmaps[4].set_pixel(7, 2, darkGreen)
@green_leaf_bitmaps[4].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[4].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[4].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[4].fill_rect(3, 4, 2, 1, khaki)
@green_leaf_bitmaps[4].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[4].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[4].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[4].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[4].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[4].set_pixel(4, 5, mint)
@green_leaf_bitmaps[4].set_pixel(5, 5, midGreen)
@green_leaf_bitmaps[4].set_pixel(2, 6, darkGreen)
@green_leaf_bitmaps[4].fill_rect(3, 6, 2, 1, midGreen)

# 6th leaf bitmap
@green_leaf_bitmaps[5] = Bitmap.new(8, 8)
@green_leaf_bitmaps[5].fill_rect(6, 2, 2, 1, midGreen)
@green_leaf_bitmaps[5].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[5].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[5].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[5].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[5].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[5].set_pixel(6, 4, mint)
@green_leaf_bitmaps[5].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[5].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[5].fill_rect(3, 5, 2, 1, mint)
@green_leaf_bitmaps[5].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[5].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[5].set_pixel(3, 6, khaki)
@green_leaf_bitmaps[5].set_pixel(4, 6, lightGreen)

# 7th leaf bitmap
@green_leaf_bitmaps[6] = Bitmap.new(8, 8)
@green_leaf_bitmaps[6].fill_rect(6, 1, 1, 2, midGreen)
@green_leaf_bitmaps[6].fill_rect(4, 2, 2, 1, midGreen)
@green_leaf_bitmaps[6].fill_rect(6, 2, 1, 2, darkGreen)
@green_leaf_bitmaps[6].fill_rect(3, 3, 2, 1, midGreen)
@green_leaf_bitmaps[6].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[6].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[6].set_pixel(3, 4, khaki)
@green_leaf_bitmaps[6].set_pixel(4, 4, lightGreen)
@green_leaf_bitmaps[6].set_pixel(5, 4, midGreen)
@green_leaf_bitmaps[6].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[6].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[6].fill_rect(3, 5, 2, 1, midGreen)
@green_leaf_bitmaps[6].set_pixel(1, 6, darkGreen)
@green_leaf_bitmaps[6].set_pixel(2, 6, midGreen)

# 8th leaf bitmap
@green_leaf_bitmaps[7] = Bitmap.new(8, 8)
@green_leaf_bitmaps[7].set_pixel(6, 1, midGreen)
@green_leaf_bitmaps[7].fill_rect(4, 2, 3, 2, midGreen)
@green_leaf_bitmaps[7].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[7].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[7].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[7].fill_rect(4, 4, 2, 1, khaki)
@green_leaf_bitmaps[7].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[7].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[7].fill_rect(3, 5, 2, 1, lightGreen)
@green_leaf_bitmaps[7].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[7].set_pixel(3, 6, lightGreen)

# 9th leaf bitmap
@green_leaf_bitmaps[8] = Bitmap.new(8, 8)
@green_leaf_bitmaps[8].fill_rect(6, 1, 1, 2, midGreen)
@green_leaf_bitmaps[8].fill_rect(4, 2, 2, 1, midGreen)
@green_leaf_bitmaps[8].fill_rect(6, 2, 1, 2, darkGreen)
@green_leaf_bitmaps[8].fill_rect(3, 3, 2, 1, midGreen)
@green_leaf_bitmaps[8].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[8].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[8].set_pixel(3, 4, khaki)
@green_leaf_bitmaps[8].set_pixel(4, 4, lightGreen)
@green_leaf_bitmaps[8].set_pixel(5, 4, midGreen)
@green_leaf_bitmaps[8].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[8].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[8].fill_rect(3, 5, 2, 1, midGreen)
@green_leaf_bitmaps[8].set_pixel(1, 6, darkGreen)
@green_leaf_bitmaps[8].set_pixel(2, 6, midGreen)

# 10th leaf bitmap
@green_leaf_bitmaps[9] = Bitmap.new(8, 8)
@green_leaf_bitmaps[9].fill_rect(6, 2, 2, 1, midGreen)
@green_leaf_bitmaps[9].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[9].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[9].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[9].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[9].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[9].set_pixel(6, 4, mint)
@green_leaf_bitmaps[9].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[9].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[9].fill_rect(3, 5, 2, 1, mint)
@green_leaf_bitmaps[9].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[9].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[9].set_pixel(3, 6, khaki)
@green_leaf_bitmaps[9].set_pixel(4, 6, lightGreen)

# 11th leaf bitmap
@green_leaf_bitmaps[10] = Bitmap.new(8, 8)
@green_leaf_bitmaps[10].set_pixel(6, 2, midGreen)
@green_leaf_bitmaps[10].set_pixel(7, 2, darkGreen)
@green_leaf_bitmaps[10].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[10].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[10].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[10].fill_rect(3, 4, 2, 1, khaki)
@green_leaf_bitmaps[10].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[10].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[10].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[10].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[10].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[10].set_pixel(4, 5, mint)
@green_leaf_bitmaps[10].set_pixel(5, 5, midGreen)
@green_leaf_bitmaps[10].set_pixel(2, 6, darkGreen)
@green_leaf_bitmaps[10].fill_rect(3, 6, 2, 1, midGreen)



# 12th leaf bitmap
@green_leaf_bitmaps[11] = Bitmap.new(8, 8)
@green_leaf_bitmaps[11].fill_rect(0, 3, 1, 2, darkGreen)
@green_leaf_bitmaps[11].set_pixel(1, 4, midGreen)
@green_leaf_bitmaps[11].set_pixel(2, 4, khaki)
@green_leaf_bitmaps[11].set_pixel(3, 4, lightGreen)
@green_leaf_bitmaps[11].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[11].set_pixel(7, 4, midGreen)
@green_leaf_bitmaps[11].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[11].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[11].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[11].set_pixel(4, 5, mint)
@green_leaf_bitmaps[11].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[11].set_pixel(6, 5, khaki)
@green_leaf_bitmaps[11].set_pixel(7, 5, midGreen)
@green_leaf_bitmaps[11].fill_rect(2, 6, 2, 1, midGreen)
@green_leaf_bitmaps[11].set_pixel(4, 6, lightGreen)
@green_leaf_bitmaps[11].set_pixel(5, 6, khaki)
@green_leaf_bitmaps[11].set_pixel(6, 6, midGreen)

# 13th leaf bitmap
@green_leaf_bitmaps[12] = Bitmap.new(8, 8)
@green_leaf_bitmaps[12].set_pixel(1, 1, darkGreen)
@green_leaf_bitmaps[12].fill_rect(1, 2, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(2, 3, midGreen)
@green_leaf_bitmaps[12].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[12].set_pixel(4, 3, midGreen)
@green_leaf_bitmaps[12].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[12].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[12].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[12].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[12].fill_rect(5, 5, 2, 1, khaki)
@green_leaf_bitmaps[12].fill_rect(4, 6, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[12].set_pixel(6, 7, khaki)

@rose_bitmaps = []
brightRed = Color.new(255, 0, 0, 255)
midRed = Color.new(179, 17, 17, 255)
darkRed = Color.new(141, 9, 9, 255)

# 1st rose petal bitmap
@rose_bitmaps[0] = Bitmap.new(3, 3)
@rose_bitmaps[0].fill_rect(1, 0, 2, 1, brightRed)
@rose_bitmaps[0].fill_rect(0, 1, 1, 2, brightRed)
@rose_bitmaps[0].fill_rect(1, 1, 2, 2, midRed)
@rose_bitmaps[0].set_pixel(2, 2, darkRed)

# 2nd rose petal bitmap
@rose_bitmaps[1] = Bitmap.new(3, 3)
@rose_bitmaps[1].set_pixel(0, 1, midRed)
@rose_bitmaps[1].set_pixel(1, 1, brightRed)
@rose_bitmaps[1].fill_rect(1, 2, 1, 2, midRed)

@feather_bitmaps = []
white = Color.new(255, 255, 255, 255)

# 1st feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(0, 2, white)
@feather_bitmaps[0].set_pixel(1, 2, grey)
@feather_bitmaps[0].set_pixel(2, 1, grey)

# 2nd feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(0, 0, white)
@feather_bitmaps[0].set_pixel(0, 1, grey)
@feather_bitmaps[0].set_pixel(1, 2, grey)

# 3rd feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(2, 0, white)
@feather_bitmaps[0].set_pixel(1, 0, grey)
@feather_bitmaps[0].set_pixel(0, 1, grey)

# 4th feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(2, 2, white)
@feather_bitmaps[0].set_pixel(2, 1, grey)
@feather_bitmaps[0].set_pixel(1, 0, grey)

@blood_rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@blood_rain_bitmap.fill_rect(6-i, i*8, 1, 8, darkRed)
end

@sparkle_bitmaps = []

lightBlue = Color.new(181, 244, 255, 255)
midBlue = Color.new(126, 197, 235, 255)
darkBlue = Color.new(77, 136, 225, 255)

# 1st sparkle bitmap
@sparkle_bitmaps[0] = Bitmap.new(7, 7)
@sparkle_bitmaps[0].set_pixel(3, 3, darkBlue)

# 2nd sparkle bitmap
@sparkle_bitmaps[1] = Bitmap.new(7, 7)
@sparkle_bitmaps[1].fill_rect(3, 2, 1, 3, darkBlue)
@sparkle_bitmaps[1].fill_rect(2, 3, 3, 1, darkBlue)
@sparkle_bitmaps[1].set_pixel(3, 3, midBlue)

# 3rd sparkle bitmap
@sparkle_bitmaps[2] = Bitmap.new(7, 7)
@sparkle_bitmaps[2].set_pixel(1, 1, darkBlue)
@sparkle_bitmaps[2].set_pixel(5, 1, darkBlue)
@sparkle_bitmaps[2].set_pixel(2, 2, midBlue)
@sparkle_bitmaps[2].set_pixel(4, 2, midBlue)
@sparkle_bitmaps[2].set_pixel(3, 3, lightBlue)
@sparkle_bitmaps[2].set_pixel(2, 4, midBlue)
@sparkle_bitmaps[2].set_pixel(4, 4, midBlue)
@sparkle_bitmaps[2].set_pixel(1, 5, darkBlue)
@sparkle_bitmaps[2].set_pixel(5, 5, darkBlue)

# 4th sparkle bitmap
@sparkle_bitmaps[3] = Bitmap.new(7, 7)
@sparkle_bitmaps[3].fill_rect(3, 1, 1, 5, darkBlue)
@sparkle_bitmaps[3].fill_rect(1, 3, 5, 1, darkBlue)
@sparkle_bitmaps[3].fill_rect(3, 2, 1, 3, midBlue)
@sparkle_bitmaps[3].fill_rect(2, 3, 3, 1, midBlue)
@sparkle_bitmaps[3].set_pixel(3, 3, lightBlue)

# 5th sparkle bitmap
@sparkle_bitmaps[4] = Bitmap.new(7, 7)
@sparkle_bitmaps[4].fill_rect(2, 2, 3, 3, midBlue)
@sparkle_bitmaps[4].fill_rect(3, 2, 1, 3, darkBlue)
@sparkle_bitmaps[4].fill_rect(2, 3, 3, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(3, 3, lightBlue)
@sparkle_bitmaps[4].set_pixel(1, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(5, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(1, 5, darkBlue)
@sparkle_bitmaps[4].set_pixel(5, 1, darkBlue)

# 6th sparkle bitmap
@sparkle_bitmaps[5] = Bitmap.new(7, 7)
@sparkle_bitmaps[5].fill_rect(2, 1, 3, 5, darkBlue)
@sparkle_bitmaps[5].fill_rect(1, 2, 5, 3, darkBlue)
@sparkle_bitmaps[5].fill_rect(2, 2, 3, 3, midBlue)
@sparkle_bitmaps[5].fill_rect(3, 1, 1, 5, midBlue)
@sparkle_bitmaps[5].fill_rect(1, 3, 5, 1, midBlue)
@sparkle_bitmaps[5].fill_rect(3, 2, 1, 3, lightBlue)
@sparkle_bitmaps[5].fill_rect(2, 3, 3, 1, lightBlue)
@sparkle_bitmaps[5].set_pixel(3, 3, white)

# 7th sparkle bitmap
@sparkle_bitmaps[6] = Bitmap.new(7, 7)
@sparkle_bitmaps[6].fill_rect(2, 1, 3, 5, midBlue)
@sparkle_bitmaps[6].fill_rect(1, 2, 5, 3, midBlue)
@sparkle_bitmaps[6].fill_rect(3, 0, 1, 7, darkBlue)
@sparkle_bitmaps[6].fill_rect(0, 3, 7, 1, darkBlue)
@sparkle_bitmaps[6].fill_rect(2, 2, 3, 3, lightBlue)
@sparkle_bitmaps[6].fill_rect(3, 2, 1, 3, midBlue)
@sparkle_bitmaps[6].fill_rect(2, 3, 3, 1, midBlue)
@sparkle_bitmaps[6].set_pixel(3, 3, white)

@user_bitmaps = []
update_user_defined
end

def update_user_defined
for image in @user_bitmaps
image.dispose
end

#user-defined bitmaps
for name in $WEATHER_IMAGES
@user_bitmaps.push(RPG::Cache.picture(na me))
end
for sprite in @sprites
sprite.bitmap = @user_bitmaps[rand(@user_bitmaps.size)]
end
end

attr_reader :type
attr_reader :max
attr_reader :ox
attr_reader :oy
end
end

Alternativ kann man auch wahrscheinlich den php-Tag nehmen.

Hier mehr Infos zu den Tags:
http://www.multimediaxis.de/misc.php?do=bbcode#code

Fir3bird
20.09.2008, 13:27
Danke für deine Antwort. Werde es mir merken.

diäitsch
05.10.2008, 22:58
(Mit folgender Frage wird der Threadtitel ungültig...aber egal)
Hat jemand 'n "Kolosseum"-, oder "Arena"-Chipset? (2k)
Ich stelle mir da sowas vor, wie das Kolosseum in ToS :)
Btw. nein, ich bin nicht auf 'n 2k umgestiegen, ich möchte nur mit den Chipsets arbeiten ;)

SMWma
07.10.2008, 15:10
es gibt doch sowas im RTP vom RM2K(3)...
Einfach koppieren und vergrössern.

diäitsch
07.10.2008, 15:30
Also ich kann in den RTPs nichts finden, was auch nur annähernd so aussieht.
Btw. ist der Style vom RTP auch nicht so doll.
Eigentlich suche ich sowas von M&B, oder den Style von EL, oder Mondschein (mit welchen Sets die auch immer gemacht wurden ;))

SMWma
07.10.2008, 19:02
was hat das eigentlich mit Technik zu tun???
Naja... Egal^^
Google doch mal. Man kann übringens auch auf http://images.google.de/imghp?hl=de&tab=wi (diesem Link) gehen^^

diäitsch
11.10.2008, 00:14
Also bis jetzt habe ich noch nichts gefunden...
Hat den keiner ein "Arena Chipset" (ja genau, 2k ;))?

Ascare
11.10.2008, 13:23
Wie genau sieht denn so ein Arena Set aus? Ich mein theoretisch kann man ja Burgmauern nehmen und Sand als Boden und schon hat man sowas wie eine Arena, oder?

btw: EL und Mondschein sind M&B
siehe http://www.tekepon.net/fsm/

diäitsch
11.10.2008, 23:07
@Ascare: Jo, scheint als bliebe mir nichts anderes übrig, als 'n paar Tilesets zusammen zu schneiden.
Btw. kam ich auf der Seite, die du verlinkt hast nicht klar ;)

Ascare
11.10.2008, 23:23
@Ascare: Jo, scheint als bliebe mir nichts anderes übrig, als 'n paar Tilesets zusammen zu schneiden.
Btw. kam ich auf der Seite, die du verlinkt hast nicht klar ;)
Klick erstmal ganz oben rechts auf 'English', dann in der oberen Leiste auf 'Downloads'. Dort kannst du dann links im Menü Chips/Chars etc. auswählen. Den Rest sollte man schaffen.

diäitsch
20.10.2008, 12:46
Hey Comm, könnte mir jemand bei folgendem Problem helfen?

http://file1.npage.de/001494/20/bilder/zcommon.png

(Die versch. Wörter würden aufgrund der Tatsache unkenntlich gemacht, damit sie nicht die Spannung nehmen).

Also, es geht darum, das Cliff ein spezielles Schwert ausrüsten muss, um spezielle Techniken zu erlernen.
Diese stehen in Verbindung mit dem Schwert.
Wenn man das Schwert ablegt, landet es ja im Inventar, und man soll die Techniken verlernen.
...Funktioniert irgendwie nicht.

Das Item auf dem das Common Event liegt, erhält man zusätzlich mit erhalten des Schwertes, und liegt ebenfalls im Inventar.

Könnte mir bitte jemand sagen, wieso Cliff bei Ablegen des Schwertes die Techniken nicht verlernt?

Ascare
20.10.2008, 15:04
Kann es sein das Cliff die beiden Skills schon mit Lvl.1 automatisch gelernt hat? (Steht bei Classes).

diäitsch
20.10.2008, 15:21
Ne, die beiden Techniken kann man nur durch das Schwert erlernen.
Selbst wenn er sie schon könnte, müssten sie eigentlich wieder bei Ausrüsten des Schwertes verschwinden.
Das Problem liegt bei dem Item, welches das Common Event von alleine auslösen soll.
Wenn ich es manuell auslöse, funktioniert es.
Aber es sollte eigentlich automatisch das Event aktivieren...
ich stelle mal einen Screen des besagten Items rein.

http://file1.npage.de/001494/20/bilder/zccc.png

Das wichtigste ist, dass das Item das Event von alleine auslöst.
Sonst müsste ich wahrscheinlich auf jeder Map einen Call Event einbauen...

SMWma
20.10.2008, 17:57
mach mal ein häckchen bei custom defant handler und gibt remove skill X ein...
Sollte klappen

Ascare
20.10.2008, 18:14
Eine Idee: Du gibtst der gruppe 2 Items, eines das Schwert, das andere ist ein Ausrüstungsobjekt.
change item [schwert ausrüsten] +1
change weapon [schwert waffe] +1

Den Helden setzt du unter Actor bei Weapon auf fixed, damit der Spieler nicht manuell die Waffen selber tauscht.

Das item 'schwert ausrüsten' ruft das Commen Event 'wenn schwert' auf.
Das sollte ungefähr so aussehen:
wenn held hat 'schwert waffe' equipped
> skill: held, 'spezialangriff' entfernen
> waffe: held, 'keine'
else
> skill: held, 'spezialangriff' lernen
> waffe: held, 'schwert waffe'
end

Natürlich wäre es besser irgendwie in dem Moment wenn man im Menü eine Waffe wechselt, per Ruby dann das entsprechende Common Event aufzurufen, dann müsste man nicht den Umweg über Items gehen. Leider weiß ich nicht wie das geht, aber vielleicht kriege ich es ja noch heraus.

edit: hab zwar jetzt per ruby gefunden wie man ein common event aufruft, aber aus irgendnem grund muss man erst aus dem menü raus und wieder rein damit er den skill auch anzeigt.
Naja, so gehts:
In Scene_Equip bei Reihe 211 steht

@actor.equip(@right_window.index, item == nil ? 0 : item.id)
gleich darunter kannst du dann

# Common Event aufrufen (anstatt X dann die ID des Common Events)
$game_temp.common_event_id = X
schreiben.

diäitsch
21.10.2008, 13:16
@Adrian2000: Funktioniert leider nicht. Trotzdem danke.

@Ascare: Sehr gute Idee, nur gibt's bei der Sache einen Hacken, und zwar: Wenn ich die Waffe auf "Fixed" setze, wird Cliff diese mächtige Waffe schon von Anfang an besitzen, und das wäre auch nicht so toll.
Also wenn du eine Lösung kennst, das Schwert mit aktivieren des Common Events auf "Fixed" zu setzen, wäre das schon ziemlich genial.

Ansonsten bin ich gestern noch auf die Idee gekommen die "Class" mit Ausrüsten des Schwertes zu wechseln, sodass man entweder dieses eine Schwert ausrüsten kann, oder gar nichts.

Aber wie gesagt Ascare, wenn du weißt wie das Fixes im nach hinein gesetzt werden kann, dann lass hören :)

Ascare
21.10.2008, 18:03
Hmm, nee das mit den Fixes krieg ich nicht hin.
Was du aber machen könntest, wäre den Held von Anfang an auf Weapon <none> / fixed zu stellen und jeder Waffe die der Held ausrüsten will ein eigenes Ausrüstungsitem zu geben.
Ich denke aber das ist zu umständlich, mach lieber ein Item was z.b. "Skill freisetzen" heißt und je nachdem welches Schwert ausgerüstet ist werden dann per Common Event die entsprechenden Skills gelernt/vergessen.

diäitsch
21.10.2008, 18:45
mach lieber ein Item was z.b. "Skill freisetzen" heißt und je nachdem welches Schwert ausgerüstet ist werden dann per Common Event die entsprechenden Skills gelernt/vergessen.

Da liegt ja das Problem, dieses Item gibt's ja schon, aber die Techniken werden nicht vergessen, sobald das schwert abgelegt ist.
Deswegen habe ich es so geregelt, das man einen neuen Titel bekommt, die Eigenschaften sind die selben, wie zuvor, nur eben, das man nur 1 Schwert (ist übrigens das stärkste) ausrüsten kann.
Man kann es auch ablegen, da aber alle Techniken ohne einen Angriffswert (den ja ein Schwert ausmacht) nur ca. 10% (durch den Power Wert kommt minimaler Schaden zustande) Schaden machen, wird man es wohl ausrüsten müssen, was aber bei dem stärksten im ganzen Spiel zu keinem Nachteil für den Spieler führen wird :)

Vielen Dank für die Hilfe Ascare, btw. korrigiere mich, wenn ich dich falsch verstanden habe. Die Sache scheint sich jedoch nicht ganz so einfach lösen zu lassen.
Ist jetzt im Moment wie gesagt nicht mehr soooo schlimm, manchmal muss man eben Sachen anders regeln, als geplant ;)

Ascare
21.10.2008, 21:26
Hmm, nee ist schon richtig. War ein ein Denkfehler von mir drin. Ja über Classes ist wohl das einzige wie man es machen kann oder eben über Ruby. Aber dafür krieg ich keine ordentliche Lösung hin.

Cellcen
23.10.2008, 13:13
Frage hat sich erledigt

MfG Cellcen

diäitsch
26.10.2008, 18:36
Frage hat sich erledigt

MfG Cellcen

?

Neue Frage, und zwar geht es darum, die gegnerischen Techniken an dem rot markierten Kreis anzeigen zu lassen.
Soweit ich weiß, kann man jede Technik in der Animation Database verschieben, da dies aber zu lange, und wahrscheinlich auch zu ungenau wäre, möchte ich gerne wissen, welche Koordinaten man in welchem Script verändern muss.
(Ist für mein nächstes Projekt, also werden die Charas und Gegner natürlich dazu passen ;))

http://file1.npage.de/001494/20/bilder/z2.png

MfG, diäitsch

SMWma
26.10.2008, 18:42
???
Es gibt ja eine umständliche Lösung und ist auch nicht grad der hammer,
aber erstelle doch einen Gegner mit 1 Leben und am Amfang des Kampfes wird er durch die Battle-Events sterben.
Seine Coordinaten müssten dann glaub ich aber immer noc da sein.

diäitsch
26.10.2008, 18:47
@Adrian2000: Ich glaube du hast mich nicht verstanden ;)
Es geht nicht darum den Gegner sterben zu lassen, es sollen die Battle Animationen an anderen Stellen gezeigt werden. Da mein nächstes Spiel Side View sein soll, sollen die Animationen natürlich auch an anderen stellen gezeigt werden.
Und da ich das Side View nicht über einen Script regeln werde, muss ich die Animationen noch so einstellen, das sie an den "richtigen" Stellen angezeigt werden.

SMWma
26.10.2008, 19:08
dadurch, das der Gegner tot ist, ist es so, als sei er nie dagewessen.
Nur ist sein Standort noch im Maker drinn.
Also kannst du auf dem Standort des toten Gegners eine animation zeigen.

diäitsch
27.10.2008, 14:15
http://file1.npage.de/001494/20/bilder/zschau.png

Normalerweise werden Animationen auf 1 angezeigt, sie sollen aber auf 2 angezeigt werden.
Welche Zahlen muss ich in welchem Script verändern, um das zu erreichen?

Die Charas sehen dann übrigens so aus (werden genau so im Maker importiert):

http://file1.npage.de/001494/20/bilder/zbattlerx.png

Bei den Gegnern sieht das normal aus.

Ascare
28.10.2008, 09:28
So einfach ist das nicht, das mit den Animationen ist glaube ich ein ganz schönes Gewurschtel im Script.
Aber schau dich mal hier nach Kampfsystemen (http://www.creationasylum.net/index.php?showforum=128) um. Z.B. das von Wulfman gepostete könnte dir helfen.

diäitsch
28.10.2008, 13:00
Schade, dass das auch nicht so leicht zu bewerkstelligen ist, dann werde ich mir Wohl oder Übel andere Scripts besorgen. (Oder ich lerne selber mal Ruby ;))
Auf jeden Fall danke Ascare.

diäitsch
18.11.2008, 19:00
Hallo Leute,
mein folgendes Anliegen ist zwar kein richtiges Problem, aber es wäre sehr nett, wenn mir trotzdem jemand helfen könnte. :)
(Ich selbst habe auch schon gesucht, aber nichts gefunden).
Also, hat jemand freien J-Rock? Damit sind MP3s gemeint, die vom Ersteller zur Weiterverbreitung freigegeben wurden (common licence(?))
Sowas wäre nämlich für mein neues Projekt sehr hilfreich.^^

Ich hoffe, das jemand eine Seite kennt, auf der sowas angeboten wird.
Schon mal danke im Vorraus.


Anmerkung, Da es so schwer zu sein scheint, bekommt der/die Person, die etwas findet (was mir gefällt) eine Gastrolle in meinem neuen Game (ein Spiel für einen Contest im rmxp.de)

Dragenai
19.11.2008, 15:44
Soweit ich weiß sind MP3´s doch nicht mehr Erlaubt ? o.o in Projekten/Spielen.

..

Zu dem mit dem KS wegen der Animation meinst du das so ?

http://www.npshare.de/files/453edde3/%21.bmp

diäitsch
19.11.2008, 15:55
Zu den MP3s: Kommt darauf an, kommerzielle MP3s sind nicht erlaubt, deshalb habe ich auch nach freien MP3s gefragt, bei denen der Ersteller die Weiterverbreitung erlaubt.

Zu den Animationen: Hat sich erledigt, jedoch gehe ich davon aus, das du ein gescriptetes SKS benutzt, das hilft mir nicht wirklich weiter. ;)

Dragenai
19.11.2008, 15:58
Zu den MP3s: Kommt darauf an, kommerzielle MP3s sind nicht erlaubt, deshalb habe ich auch nach freien MP3s gefragt, bei denen der Ersteller die Weiterverbreitung erlaubt.

Zu den Animationen: Hat sich erledigt, jedoch gehe ich davon aus, das du ein gescriptetes SKS benutzt, das hilft mir nicht wirklich weiter. ;)

Nein ich benutze nen Game Actor Game Battler Edit. ^^
Und das normale Kampfsystem des rmxp nur in version2.

diäitsch
21.11.2008, 22:26
Hm, entweder gibt es keinen freien J-Rock, oder ihr habt keinen bzw. findet keinen etc. könntet ihr mir wenigstens ein paar Links zu Seiten auf denen es freie Musik gibt posten?
Jetzt schon mal vielen Dank.

Tael Alchemist
22.11.2008, 11:51
Gibt es nicht!
Man kann MP3's nicht einfach in Midis umwandeln. Wäre zu schön gewesen...

@topic
Schonmal bei vgmusic.com(wenn's n game is) nachgeschaut oder mal gegoogelt?
Woher stammt das lied eigentlich genau?(konsole, film, anderes?)

Halt! man kann MP3 Dateien in wav umwandeln, dann den wav in midi, doch wav ist ja auch ok, oder?

Man braucht dazu...nur... QUICK TIME PLAYER PRO!

das ist das beste Programm um für ALLE Maker Musik zu konvertieren! :whistle:

Supermike
22.11.2008, 16:30
Halt! man kann MP3 Dateien in wav umwandeln, dann den wav in midi, doch wav ist ja auch ok, oder?


Es gibt Programme die das können, ja. Aber die können dir keine ganzen MP3/wavs umwandeln. Und schon gar nicht in einer guten qualität.
Melodien mit einem Instrument vielleicht...
http://www.pepperpics.biz/bild/1576/brianico10B4I1C.gif

@diäitsch
www.jamendo.com <--- Seite für hobbykomponisten, verschiedene stile und mehr...

www.newgrounds.com <--- Hier gibts unter anderem noch selfmade games und flashspiele von daher ist die musik eher dafür ausgelegt.
Allgemein find ich die Stücke da passender.

http://www.pepperpics.biz/bild/1573/brianico7WYT42.gif

Tael Alchemist
23.11.2008, 09:13
Es gibt Programme die das können, ja. Aber die können dir keine ganzen MP3/wavs umwandeln. Und schon gar nicht in einer guten qualität.
Melodien mit einem Instrument vielleicht...

Man kann mit Quicktimeplayerpro auch die Lieder kürzen, dann kann man locker ein wav machen, nur den Refrain zum Beispiel. Ich habe jedoch ein wav(selbstgemacht) das 3:23Minuten geht... also mann kann auch längere Lieder zu wav machen. Doch das mit dem midi, da muss ich dir Recht geben, es gibt Lieder die nur auf dem Klavier gespielt werden, da findest du genügend Beispiele auf Youtube. Lade dir doch eine MP3 Datei von Youtube runter, die nur mit Klavier gespielt wird.Hier ein Converter, mit dem du aus Youtube filmen .mp3 machen kannst:

http://share-tube.de/

diäitsch
26.11.2008, 15:33
@Supermike: Danke, habe da zwar noch nicht das richtige gefunden...werden aber weiter suchen. :)

So Leute, noch ne Frage: Hat jemand von euch ein Autotile (beweglich), eines Nebels? Ich stelle mir das in etwa so vor:

http://npshare.de/files/2b37ecd0/Unbenannt.PNG

(Aus dem Spiel "Return to castle Wolfenstein", Screen etwas heller gemacht)

Also der Nebel sollte dem Chara bis zum Bauch gehen.
Ich weiß, das der Maker (bzw. dessen Spiele) nicht 3D sind, den Nebel Effekt stelle ich mir jedoch so vor, wie bei dem Graß des Makers:

http://npshare.de/files/938eaecd/Unbenannt2.PNG

Hoffe ihr versteht was ich meine :)

Solltet ihr sowas nicht finden, würde ich mich auch über die Antwort freuen, wie das Graß/der Nebel mehr vom Chara bedecken kann. (wie gesagt, so bis zum Bauch).

(Fogs bedecken ja leider den ganzen Screen...)

MfG, diäitsch

Tael Alchemist
27.11.2008, 14:23
Hey, ich glaube, ich könnte dir eventuell weiterhelfen, ich kenne jemanden, der so etwas in der art hat, doch ich sehe ihn erst in ein paar Wochen... also müsstest du dich etwas gedulden. oder jemand kann dir vor mir helfen. Wenn ich ihn sehe, und er weiterhelfen kann, schreib ich dir ne PM, gell? :)

Geduld ist die Tugend, die jeder Maker haben sollte! :D

diäitsch
27.11.2008, 14:36
Wäre cool, aber nicht vergessen.^^

Lodrik
27.11.2008, 15:59
Ich würde mich auch für das Thema interessieren :) Wär nett, wenn mich da auch was erreichen könnte, vielen Dank ^^

Tael Alchemist
28.11.2008, 09:08
Ich schaue was sich da machen lässt! Ich hoffe ich kann euch weiterhelfen! Ich schreib euch n PM, wenn ich bescheid weiss.

SMWma
28.11.2008, 17:19
dazu gitb es im Maker folgende Funktion:
show picture^^
Es gibt noch so nebenbei die Fumktion:
transparent^^
Werde mal ein Beispielsprojekt erstellen...
Oder noch besser:
Meine Script-Sammlung:D:D:D:D

gRuFtY
28.11.2008, 17:34
Naja, ein Picture ist ja genau das, was nicht erwünscht ist. Es sollen von jedem Event nur die untersten Pixel vom Nebel überlagert werden, so wie halt beim hohen Gras.
Btw würde mich das Script (oder was es ist) dafür auch interessieren, @ Tael Alchemist, und ich denke andere vielleicht auch. Wenn du was weißt, poste es doch einfach hier, anstatt es nur per pn zu verschicken ;) Wäre aber auf jeden Fall dankbar, wenn ich es auch bekommen könnte :)

MFG
gRuFtY

SMWma
29.11.2008, 17:04
Database => Tileset => Obscuring...
Und nun sieht man solche
~
~
natürlich näher zueinander...
Aber mal wieder so leicht, das das niemand bemerkt :D :D :D

gRuFtY
29.11.2008, 18:48
Naja, Obsuring ist ja gar nicht gefragt. Obsuring ist für den hohen-Gras-Effekt dar, das heißt, der untere Teil vom Char wir auf einem Feld mit Obsuring halb-transparent. Nebel würde jedoch über dem unteren Teil des Char liegen und selber transparent sein. Der unterschied ist also, was was überlagert und was transparent ist:

Obsuring: Char über Gras, Charbeine halbtransparent
Gewünschter Bodennebeleffekt: Nebel über Charbeinen, Nebel halbtransparent

So hab ich das jedenfalls verstanden ;)

SMWma
29.11.2008, 19:03
tja, wie währe es mit:
Variable 0001 = Held X
Variable 0002 = Held Y
Variable 0001 X 32
Variable 0002 X 32
Show Picture
X = Variable 0001
Y = Variable 0002
Transparent = 122 oder 123

diäitsch
30.11.2008, 01:19
Naja, da ich es mir aber so wie in meinem Beispielbild aus rtcw vorstelle, wäre mit einem Picture auch die schwarzen Deckentiles mit Nebel bedeckt, und das ist unlogisch, außerdem würde sich das Bild mit dem Chara bewegen, also wir sollten auf Tael Alchemist warten, er kann seine Lösung dann ja öffentlich posten, wenn schon ein solches Interesse besteht. :)

Tael Alchemist
30.11.2008, 12:03
Ja, das könnte ich eigentlich... Doch es isteben nicht sicher, ob er das hat was ihr meint, doch versuchen kanns man ja! Hoffentlich haben wir Glück, ich hätte nähmlich selbst daran interesse! :D

Edit: Wie findet ihr eigentlich meine neue Signatur? Ich meine das Banner.

diäitsch
13.12.2008, 21:35
Edit: Wie findet ihr eigentlich meine neue Signatur? Ich meine das Banner.

Öhm, ganz gut.^^

Hat sich hier eigentlich eine Möglichkeit gefunden? Das wäre nämlich ziemlich atmosphärisch, vor allem für Horrorspiele.

SMWma
13.12.2008, 21:46
Database => Tileset => Obscuring...
Und nun sieht man solche
~
~
natürlich näher zueinander...
Aber mal wieder so leicht, das das niemand bemerkt :D :D :Dhhh

diäitsch
13.12.2008, 22:16
Öhm nein? Ich glaube du verstehst das Problem an der Sache nicht. ;)
Glaub mir, ich weiß was man alles auf den Tilesets einstellen kann, und wenn ich das so mache, wie du es vorschlägst, wäre (in meinem Fall Nebel) nicht auf Bauchhöhe, sondern höchstens Kniehöhe.
Ach, wenn jemand ein "Nebel-Autotile" hat, dann immer her damit. :D

Tael Alchemist
14.12.2008, 09:36
So, lange haben wir darauf gewartet, doch leider hats nichts gebracht... Sein Nebel geht nicht bis zum Bauch... Mega schade, ich hätte mich auch gefreut... Er sagt, wir sollten in Google ein Skript herunterladen. Hahaha, ich fands auch nicht lustig.... Es tut mir Leid, vielleicht findet jemand anderer hier eine Lösung! Hoffentlich!

Nochmals sorry!:(

SMWma
14.12.2008, 10:25
google.de, sagst du??
Wie wäre es denn mit meinen lieblingsgoogle??
Net Yahoo.de oder Abacho.de sondern
Rpgoogle.de

Ascare
14.12.2008, 10:52
Ich weiß jetzt nicht was an Lösungen hier gepostet wurde, aber das mit dem Nebel würde ich wahrscheinlich so machen:
1. Den Nebel irgendwie ins Tileset integrieren (wenn er statisch sein soll). Beispiel: Die Reise ins All:
http://www.npshare.de/files/f2fdc320/nebel.png
2. Den jeweiligen Bush-Tiles einen Bush Flag im Tileset geben. Falls mir das zu niedrig wäre, würde ich im Script-Editor schauen ob ich das manipulieren kann. Und würde im Game_Character 1, Zeile 291 "return 12" finden. Dieses würde ich auf 16, 20 oder 24 erhöhen damit der Nebel höher steigt.

Tael Alchemist
17.12.2008, 11:15
Oh, das könnte klappen, ich versuchs Mal! Hoffentlich siehts gut aus! :D

diäitsch
17.12.2008, 11:43
Oh man, habe total vergessen hier wieder rein zu schauen...:o
Ich werde es ebenfalls mal ausprobieren, schon mal danke Ascare.

Edit: Viele Dank! Es klappt tatsächlich, du bist genial.^^

Edit²: Gibt's eigentlich auch 'ne Möglichkeit das ganze auf bestimmte Maps zu beschränken? Sonst müsste ich bei dem Gras in Wäldern etc. den "Bush Flag" rausnehmen. Wäre zwar kein Weltuntergang, aber wenn's nicht unbedingt nötig ist, kann man's ja auch verhindern. ;)

Tael Alchemist
17.12.2008, 13:33
Jau! Es sieht toll aus!, danke!http://www.multimediaxis.de/images/smilies/old/sm_12.gif

Ascare
17.12.2008, 14:59
Jo, gern geschehen ihr beiden.



Edit²: Gibt's eigentlich auch 'ne Möglichkeit das ganze auf bestimmte Maps zu beschränken? Sonst müsste ich bei dem Gras in Wäldern etc. den "Bush Flag" rausnehmen. Wäre zwar kein Weltuntergang, aber wenn's nicht unbedingt nötig ist, kann man's ja auch verhindern. ;)
Hmm, ka...an deiner Stelle würde ich dann anstatt einer fixen Zahl eine Variable zuweisen. Also schreibst anstelle der 12 einfach $game_variables[x] hin (x mit der Variable ersetzen). Dann könntest bequem den Bush flag dynamisch anpassen.
Noch ein Tip:
Du könntest sogar sowas wie einen sich bewegenden Nebel machen. Dazu stellst du die Variabel auf random (16-20) auf p.prozess. Und gleich dahinter ein Wait frame von 5 oder 10.
Jetzt schwankt der Wert alle 5 - 10 Frames zwischen 16 und 20. Das sieht so aus als ob sich der Nebel bewegt. Auch sehr nützlich für seichteres Gewässer o.ä. ;)

diäitsch
11.01.2009, 15:16
Okay, danke Ascare.

Nächste Sache:
Ich habe letztens ein eigenes Tileset (mit kleinen Grafiken) gemacht. Während des Spielens soll in die jeweilige Map hineingezoomt werden (z.B. 200%). Wie bekomme ich das hin, also welchen Teil welches Scriptes muss geändert werden?
(Für Kämpfe soll das nicht gelten).

Hoffe jemand weiß bescheid.

Tael Alchemist
14.01.2009, 14:41
Ey Leute, libe Moderatoren liebe Community.

Da dieser Thread schon manchen Leuten geholfen hat, und er auch bestimmt weiteren Makerfreaks helfen wird, finde ich, das dieser Thread gepinnt werden sollte! Bitte macht das doch!8)

Gruss Tael

diäitsch
14.01.2009, 16:22
Okay Leute, ich habe mal 2 Screenshots gemacht, um euch die Sache zu verdeutlichen:

http://npshare.de/files/5432c0ed/1.PNG

So sieht's momentan aus.

http://npshare.de/files/f8594843/2.PNG

So soll's aussehen

Also wie kann man erreichen, das die "Kamera" während des Spiels reinzoomt? Welche Zahlen in welchem Script muss man erhöhen?
Eine Antwort würde mir enorm helfen. :)

@Tael Alchemist: Bestimmt eine Tolle Idee, aber glaubst du dass das Sinn macht? ich meine schau dir mal den "Wer hat was Thread" an. Alle wollen was, aber keiner hat was. Der Grund das in diesem Thread geantwortet wird, ist das nur eine Person ab und zu 'ne Frage stellt. Würde hier jeder Fragen, kämen viel zu viele Fragen, aber auch viel zu wenig Antworten.

@Mods: Mir ist es relativ egal, wenn ihr seine Idee gut findet, pint den Thread, könntet ihn dann ja umbennenen. Wenn das ganze so läuft wie ich's "profezeie" (boah, wie schreibt man das? xD) könnt ihr's ja wieder "entpinnen".

Tael Alchemist
14.01.2009, 16:56
Vielleicht erfüllt sich deine -> "Prophezeiung" ja, vielleicht auch nicht, mann kanns ja ausprobieren.:D

SMWma
15.01.2009, 18:42
Vielleicht erfüllt sich deine -> "Prophezeiung" ja, vielleicht auch nicht, mann kanns ja ausprobieren.:D

http://www.multimediaxis.de/images/smilies/old/s_009.gifWilkommen auf der Liste - auf der schwarzen Liste:D
Die schwarze Spamm-Liste;)

Zum Thread:
Mach doch einfach einen Screenshot oder benutze das Mod7-Script.

Tael Alchemist
16.01.2009, 09:13
das war kein spam, ich hatte ihm nur gezeigt wie man prophezeiung schreibt... *stöhn*was ihr auch unter spam versteht...*enttäuscht...*

das ist spam:



Ach ja cool:D

oder:


:D;):o>:(:eek:8);):o:(:):p>:(http://www.multimediaxis.de/images/smilies/old/s_009.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gif:eek:

oder auch ganz einfach:


ja

ich hoffe du weisst jetzt wer zur schwarzen liste gehört und wer nicht...;)

diäitsch
16.01.2009, 18:30
Oh oh, wie konnte ich das nur falsch schreiben?! xD
Naja, wie dem auch sei: Adrian, dieses Script, könnte es mir wirklich helfen? Man bedenke, dass das gezoomte nicht für Kämpfe, das Menü etc. gelten soll.
Gibt's denn kein Script in dem die Auflösung versch. Bereiche geregelt ist? :(

SMWma
16.01.2009, 22:28
sweit ich weiss ist dieser Effekt im Kampf ausgeschaltet.
Nur im Spiel ist er mit einen 3D-Effekt zu sehen.

diäitsch
04.03.2009, 19:08
Guten Abend werte Community,
mal 'ne bescheidene Frage zu den "Transitions". Wie muss ich sie bei einem Teleport Event, also Mapwechsel positionieren das sie auch wirklich ausgeführt werden?
(Bisher habe ich es folgendermaßen probiert):
1.
Prepare for Transition
Transfer Player...
Execute Transition

2.
Prepare for Transition
Execute Transition
Transfer Player...

Irgendwie klappt das nicht so wie ich's mir vorgestellt habe.

Shining Advances
06.03.2009, 14:23
du musst beim teleport fading -> no auswählen.
das fading is nämlich auch ne transition die das prepare wieder aufhebt.
deshalb kann deine transition nicht mehr ausgeführt werden.
also:
prepare transition
transfer player , no fade
execute transition

diäitsch
06.03.2009, 15:28
Cool, jetzt geht's.
Vielen Dank für die Hilfe. :)

diäitsch
31.03.2009, 16:39
Hey Leute, habe mal eben 'ne Frage bzgl Ruby.
Für mich schwer zu lösen, Leute die etwas geübter sind werden den...die Fehler wohl schnell erkennen.^^
Hier der Code:


draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 190)
draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 238)
draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 286)
draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 400)
draw_picture_name($data_pictures[@actor.systemschrift_id], 320 + 16, 400)

Es geht um die letzte Reihe. (Die oberen sind etwas verändert, da nicht alle Ausrüstungsgegenstände gebraucht werden und ich keine Lücken haben wollte).

Naja, zum Problem. Ich habe ein Picture (Systemschrift) angefertigt und diese soll nun unten auf dem Bildschirm angezeigt werden (Das Pic beinhaltet den Namen des Spiels).
Dies ist übrigens ein Teil aus dem "Window_Status" Script.

Hoffe jemand kann mir helfen. :)

Edit: Also nur um das klar zustellen: Wenn ich auf den Status des Charas gehe, tritt 'ne Fehlermeldung auf...Die würde ich sehr gerne umgehen, nur muss dafür die letzte Zeile des Scripts richtig gestellt werden.

shimassy
31.03.2009, 21:12
1.) Wie lautet die Fehlermeldung??? (sollte bei jedem Problem dabeistehen, denn allein aus deinem Codeschnipsel wird wohl keiner schlau)
2.)

draw_picture_name($data_pictures[@actor.systemschrift_id], 320 + 16, 400)
Wo hast du diese Methode denn definiert? und wenn immer nur der name des spiels angezeigt werden soll, wofür dann eine methode für Game_Actors schreiben???


Probier einfach statt der letzten zeile einmal:

@systemschrift = Sprite.new
@systemschrit.bitmap = RPG::Cache.picture("systemschrift.png") #wenn das pic systemschrift.png heißt
@systemschrift.x = 336
@systemschrit.y = 400

Ansonsten bitte genaueres posten, mit diesen paar zeilen wird wahrscheinlich niemand helfen können...

diäitsch
01.04.2009, 11:30
Hm, mit dem Code den du mir geschickt hast geht's auch nicht.
Ich möchte diesen Code gerne als Script einbinden weil ich das Menü etwas angepasst habe und so weniger Platz verbrauche. Im unteren Teil des Bildschirms ist viel Platz den ich gerne füllen würde.
Hier der komplette Code:

#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================

class Window_Status < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 640, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_graphic(@actor, 40, 112)
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 4 + 144, 0)
draw_actor_state(@actor, 96, 64)
draw_actor_hp(@actor, 96, 112, 172)
draw_actor_parameter(@actor, 96, 192, 0)
draw_actor_parameter(@actor, 96, 224, 1)
draw_actor_parameter(@actor, 96, -60, 2)
draw_actor_parameter(@actor, 96, -60, 3)
draw_actor_parameter(@actor, 96, 288, 4)
draw_actor_parameter(@actor, 96, 256, 5)
draw_actor_parameter(@actor, 96, -60, 6)
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 0, 0, "")
self.contents.draw_text(0, 0, 0, 0, "")
self.contents.font.color = normal_color
self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2)
self.contents.draw_text(320 + 80, 80, 84, 32, @actor.next_rest_exp_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 0, 0, "")
draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 190)
draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 238)
draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 286)
draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 400)
draw_picture_name($data_pictures["systemschrift.png"], 320 + 16, 400)
end
def dummy
self.contents.font.color = system_color
self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
end
end



Hier werden ja quasi die Ausrüstungsgegenstände, Statuswerte etc. angezeigt. Deshalb möchte ich das Pic hier drüber einbinden.
Durch diese Zeile kommt aber folgende Fehlermeldung zustande:

http://npshare.de/files/d010afae/Fehler.PNG

(Bin noch ein totaler Anfänger in ruby).

Edit: Laut Fehlermeldung muss dieser Code noch irgendwo definiert werden, oder? Wo genau und wie macht man sowas?

shimassy
01.04.2009, 18:08
draw_picture_name ist eine Methode, die du nirgends definiert hast. Eine Methode definiert man so:

def draw_picture_name(parameter)
print "xyz" #was die methode halt machen soll, hier den text xyz ausgeben
end
Ich empfehle dir erst mal KDs Rubykurs (http://rpg2000.4players.de/techwiki/index.php/Kategorie:Rubykurs)

Ansonsten in Window_Status VOR dem letzten end das einfügen:

def titel_anzeigen(x=0, y=0)
bitmap = RPG::Cache.picture("systemschrift.png") #wenn das pic systemschrift.png heißt
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
und dort wo die zeile mit draw_picture_name stand, das einfügen (in den klammern die richtigen x und y-werte eintragen)

titel_anzeigen(200, 300)

Ist btw. nicht die schönste/sauberste Art neuen Code einzufügen, aber ich hab atm. keine Zeit dafür, das ganze "schön" zu scripten, außerdem sollte es so auch reichen...

diäitsch
01.04.2009, 18:49
Jup, wird wohl reichen. Dankeschön. :)

SMWma
01.04.2009, 21:17
Der Fehler liegt in Zeile 48. Poste mal genau diese Zeile extra^^
PS: Wurden die Buttons für die Spoiler erneuert?

diäitsch
04.04.2009, 18:29
@Adrian2000: Problem hat sich doch schon erledigt. ;)

Nächste Probleme:
1. Wie kann man die Charakterposition im Kampfmenü verschieben?
Bild: http://npshare.de/files/6c678c23/1.PNG

2. Ich habe ein Event in dem ein Charakter immer wieder den selben Weg läuft,
hier ein Beispiel:
Move up
Move up
Move up
Move down
Move down
Move down
[Repeat action]
Ich würde ihn gerne alle 3 Sekunden nach links gehen lassen.
Wie macht man sowas?

Hoffe jemand kann mir helfen. :)

MfG

Nesis
04.04.2009, 18:44
http://npshare.de/files/5f9adbcb/Events.png

Ich hoffe diese Zeichnung kann dir helfen. ^^

Shining Advances
04.04.2009, 19:01
@Adrian2000: Problem hat sich doch schon erledigt. ;)

Nächste Probleme:
1. Wie kann man die Charakterposition im Kampfmenü verschieben?
Bild: http://npshare.de/files/6c678c23/1.PNG


1)
bei Game_Actor zeile 570 folgend wird die x koordinate der battlergrafik im kampf angegeben.
2)
in Window_BattleStatus zeile 38 wird die x koordinate des info fenster berechnet.

diäitsch
04.04.2009, 19:47
@Shining Advances: Danke, jetzt klappt es. :)

@Nesis: Bei dieser Sache gibt's noch'n kleines Problem:
Sobald der Switch wieder off ist, verfolgt der Chara seine ursprüngliche Route von Anfang an. D.h. das er anstatt nach unten, nach oben geht und aus dem Bildschirm verschwindet.
Sprich: Der Charakter sollte nachdem der Switch auf "off" gestellt ist, seine vorgegebene Route beenden und nicht neu beginnen.

Shining Advances
04.04.2009, 22:13
@2
also wenn die nesis möglichkeit nich gefällt hab ich da auch noch zwei x)

setze die event bewegung auf custom und mach da deine auf/ab bewegung.
dann das event noch auf parallel process stellen und als event commands nen wait von 60 frames (20fps*3sec=60frames) und danach den move befehl nach links

http://imagesload.net/img/3secschritt.PNG


du kannst aber auch einfach ausrechnen wann die 3 sec um sind un das direkt in die bewegungsroute einbauen. bei der geschwindikeit slow benötigt das event 8 frames für einen schritt.
dh:
60frames / 8 frames = 7.5 schritte
=> 8 schritte und dann die links bewegung.

diäitsch
04.04.2009, 22:28
@Shining Advances:
Das Problem ist fast gelöst, nur führt das Event die links/rechts Bewegung nur 1 mal aus. Danach kommt nur noch die oben/unten Bewegung.
Erstmal danke dafür das es jetzt schon besser ist als zuvor. Suche jetzt noch selbst 'ne Lösung dafür, das die links Bewegung alle 3 Sekunden ausgelöst wird.
Oder weißt du wieso sie nur 1 mal ausgelöst wird?

Edit: Mein Fehler, habe unter dem Move befehl 'n "wait for moves completition" gesetzt.
Vielen Dank für die schnelle und detaillierte Hilfe. :)

diäitsch
08.04.2009, 00:30
Guten Ab...öhm...gute Nacht Community,
Ich würde gerne die Schriftfarbe des des "Shop processing" ändern.
Wo stellt man sowas ein? Im "Window_Base" habe ich nichts gefunden und im "Shop_processing" auch nicht.
Schon mal danke im Vorraus. :)

Edit: Wo man die Schriftfarbe im Kampf umstellen kann (Lebenspunktabzug) finde ich auch nicht.

Shining Advances
08.04.2009, 12:50
hm weiß nicht genau was das shop processing sein soll (die suche im script editor will mir nix zeigen).
meinst du damit die ganz normale shop scene oder nen speziellen bereich?

wie auch immer....
die farbe ändert man über

self.contents.font.color = Color.new(r,g,b,alpha)
rgba durch die farbwerte ersetzen (rot, grün, blau, transparenz).
kannst das in den refresh part vor den draw_text befehlen einer jeden window klasse setzen.

edit: k im kampf bei den hp stimmt das nicht ganz was ich oben gesagt hab. da wird die farbe innerhalb von draw_actor_hp nochmal verändert. musst das also dort ändern.
statt knockout_color/crisis_color etc deine gewünschten farbwerte per Color.new ODER einfach die methoden ändern (window_base zeile 64-90).

diäitsch
08.04.2009, 23:28
@Shining Advances: Cool, es klappt. (Auch wenn ich meistens schreibe "danke im Vorraus", muss ich es einfach nochmal sagen bzw. schreiben):
Vielen Dank für die ausführliche Beschreibung. :)

lokoroko
09.04.2009, 20:16
ähh ich habe auch ein problem!:D
undzwar:
Ich Habe mir ein Chipset und ein
charset zusammen gebastelt aus anderen
chipsets,auch auf die richtige Größe gestellt
und als PNG abgespeichert.
wenn ich das aber importieren möchte
kommt da ein fenster in dem steht:

Invalid Image side

Hab keine ahnung was das heißen könnte:D

Ascare
09.04.2009, 22:45
Wohl eher "Invalid Image size" was heißen würde das du doch nicht die richtige Größe benutzt. Nutzt du überhaupt den RMXP?

lokoroko
10.04.2009, 09:35
Ähh tschuldige hab mich verklickt:p hätte eigentlich
in das andere technik forum gemusst!:(
Entschuldigung!:'(

Ascare
10.04.2009, 11:36
http://www.rpg-atelier.net/ebook/index.htm

Schlag da mal "Über Maker-Grafiken" auf. Da steht alles drin was du wissen musst. ;)

diäitsch
11.04.2009, 19:33
Guten Abend Comm,
Wie kann man im Kampfbildschirm die Oparacitys der versch. Fenster ändern?
Habe schon im window_battle Script gesucht aber nicht wirklich was gefunden.
Hoffe jemand kann helfen.

Ascare
12.04.2009, 13:49
guck mal ab scene_battle1

diäitsch
12.04.2009, 22:50
Danke Ascare.^^
Muss mal irgendwann lernen, wo man was verändern kann, um euch nicht immer mit diesen dämlichen Fragen zu löchern. :)

diäitsch
15.06.2009, 13:47
Hey Leute,
in welchem Script lassen sich die Battlergrafiken (der eigenen Party) verschieben? In etwa so:
http://npshare.de/files/4f5ee03d/BspBild.PNG

MfG, diäitsch

Ascare
15.06.2009, 16:32
class Game_Actor < Game_Battler
def screen_x
if self.index != nil
return self.index * 80 + 360
else
return 0
end
end
def screen_y
return self.index * 40 + 220
end
def screen_z
if self.index != nil
return 1 + self.index
else
return 0
end
end
end

Als neues Script einfügen oder die entsprechenden Methoden ändern.
Erklärung zu screen x:
self.index ist die ID des Battlers (0-3 afaik, insgesamt also 4)
80 steht für die Verschiebung/Abstand der X Position von einem Battler zum nächsten.
360 ist die X Position mit der begonnen wird, also der erste Battler quasi.
Das gleiche gilt für screen y...falls die Werte die ich da reingesetzt hab nicht passen musst du eben mit den Werten rumfummeln bis es passt. ^^

Also nochmal erklärt: Bei 360 * 220 Pixeln wird der erste Battler platziert, der nächste Battler befindet sich 80 Pixel (X) neben ihm und 40 Pixel (Y) unter ihm usw.

Ist es auf gründlich auf Fehler getestet? Hell no... :D

diäitsch
15.06.2009, 18:50
Okay, danke. :)
Werde es gleich mal testen. Wenn Fehler auftreten, nerve ich einfach weiter. ;)

Edit: Getestet, bisher gibt's keine Probleme.^^

strich
16.06.2009, 14:55
Edit: Damn falscher thread sry

diäitsch
27.06.2009, 16:36
Hallo Community,
irgendwie habe ich ein Problem mit einem Autorun Event...ein Problem welches mir fast schon peinlich ist.
http://npshare.de/files/a6e64a6b/Impossible.PNG
Aus irgendeinen Grund wird Picture 2 nicht angezeigt.
Wieso? :confused:

Shining Advances
27.06.2009, 16:56
du hast die zoom stufe beim move picture weiterhin auf 0%
bei 0 höhe und 0 breite kann man nicht viel sehen ;)

diäitsch
27.06.2009, 17:08
Oh man, wieso habe ich das denn auf 0 gestellt?! Stimmt ja, sollte auf 100 sein. xD
Dankeschön.^^
Peinlich, peinlich...

diäitsch
05.09.2009, 16:31
Hallo Community,
ich habe ein relativ schweres Problem:
Die Begehbarkeit der Tiles eines bestimmten Sets.
Sie sind in der Database durch ein "x" gekennzeichnet, trotzdem kann ich über manche dieser Tiles drüberlaufen.
Habe schon folgendes probiert:

-Database Platz ändern, also von Platz 32 zu Platz 35.
Brachte nichts.

-Paralell Process Events geprüft.
Kein Fund auf Beeinflussung.

-Geschaut ob unsichtbare Tiles ("o") drüberliegen
Tun sie nicht.

Hat jemand vielleicht eine Erklärung was da los sein könnte?

Btw. wenn ich unsichtbare "x" Tiles drüberlegen, dann funktioniert es komischerweise. Nur ist das keine befriedigende Lösung für mich, da es ja nun mal "normal" funktionieren sollte.

Hoffe jemand kann mir helfen.

MfG, diäitsch

Shining Advances
05.09.2009, 18:26
die priority des feldes steht vermutlich nicht auf 0.
sobald ein feld ne priority besitzt, wird die passierbarkeit ignoriert.

diäitsch
05.09.2009, 18:36
Daran liegt's leider nicht. Die Priority steht auf "." also "0". :(

The_Burrito
09.09.2009, 22:10
Hat das aller erste Tile von dem Tileset (also das leere Tile, links neben den Autotiles) eine Priority eingestellt? Wenn nicht, gib ihm eine von 5.

diäitsch
10.09.2009, 16:09
Oh super, vielen Dank, jetzt läuft alles wieder einwandfrei. :)
Btw. das ist ja aber eigentlich schon 'n Bug im System, oder? Weil die anderen Sets haben im obersten, linken Tile eine Priority von "." (0).
Und da werden jede Einstellungen fehlerfrei beachtet.

Rusk
10.09.2009, 17:09
Oh super, vielen Dank, jetzt läuft alles wieder einwandfrei. :)
Btw. das ist ja aber eigentlich schon 'n Bug im System, oder? Weil die anderen Sets haben im obersten, linken Tile eine Priority von "." (0).
Und da werden jede Einstellungen fehlerfrei beachtet.

Bei mir haben alle von Anfang an schon "5" gehabt.
Vlt. hast du dich ja mal verdrückt, als du die das Tileset eingestellt hast.

The_Burrito
10.09.2009, 18:18
Hatte vor kurzem auch das Problem.
Ich weiß nicht wieso sich das ganze so verhält, aber es ist irgendwie so.
Hab ewig gebraucht, bis ich gemerkt habe, dass der einzige Unterschied zu den Standardsets der war, dass im ersten Tile eine Priority von 5 eingetragen war.
Ist soweit ich gesehen habe, auch nirgends dokumentiert, dass das so sein muss.

Rusk
11.09.2009, 12:02
Hatte vor kurzem auch das Problem.
Ich weiß nicht wieso sich das ganze so verhält, aber es ist irgendwie so.
Hab ewig gebraucht, bis ich gemerkt habe, dass der einzige Unterschied zu den Standardsets der war, dass im ersten Tile eine Priority von 5 eingetragen war.
Ist soweit ich gesehen habe, auch nirgends dokumentiert, dass das so sein muss.

Das wird wohl eines der vielen Geheimnisse des Makers sein. :rolleyes:

diäitsch
02.11.2009, 18:15
Guten Abend,
kann mir jemand bei folgendem Problem helfen?

http://npshare.de/files/2991b607/seltsam.PNG

Die rot markieren Befehle werden einfach vom Maker ignoriert. Am laufenden PP Event liegt's nicht, dies beinhaltet nur den Befehl "Erase Picture 1". ;)
Naja, sowas kotzt mich echt an. Schade das es nicht mehr möglich zu sein scheint, einfach mal ein Stündchen entspannt zu makern, da sowas einfach nur nervend ist und bestimmt nicht zu besserer Laune beiträgt. >_<

SMWma
02.11.2009, 19:49
beim Event: Liegt vielleicht dadrann, dass es blockiert wird.

Musikbefehle werden bei dir komischerweiße die ganze Zeit lang ignoriert. Poste mal die übere Hälfte des Events.

diäitsch
02.11.2009, 20:29
Ne, hat sich geklärt. Die Eventseite davor war auch schon ein Autorun Event. Welches aber nicht mit einem Switch beendet wurde. So, zw. Seite 1 und 2 lagen zwar 2 Teleport Events und eines der beiden wurde durch einen Switch beendet, trotzdem wurde dieses Event beeinflusst. Wahrscheinlich sind die Musikeinstellungen von Seite 1, die ja nicht wirklich abgeschlossen wurde mit einem PP gleichgesetzt. Aber wieso Event9 einen Move up ignoriert hat, weis ich nicht. Blockiert werden konnte es nicht (Through).

Edit: Wie kommst du darauf das die Musikbefehle bei mir die ganze Zeit ignoriert werden?

Marsellus
04.11.2009, 16:37
Gibt es irgendwie eine Möglichkeit, zu überprüfen, ob grade eine Nachricht aktiv ist?
Denn ich habe ein Menü, das mit ESC aufrufbar ist. Wenn man allerdings während einer Nachricht Esc drückt, kommt das Menü auch. Kann ich irgendwie in den Common Events sowas machen? Falls eine Nachricht aktiv ist und man Esc drückt, soll nichts passieren. Andernfalls soll das Menü aufgerufen werden.
Ich bin für jede Hilfe dankbar! :D

diäitsch
04.11.2009, 16:47
Seite 1, das zweite von rechts unten. "Change Menu Access... (Disable)" Am Ende einfach wieder auf "Able" setzen. Und das nächste mal bitte nicht diesen Thread nutzen. ;)

Shining Advances
04.11.2009, 18:40
@diätsch
glaube er meinte ein eigenes menü und nicht das standart.
@shiny
entweder du machst vor jeder message einen switch un fragst denn ab oder du wählst beim conditional branch die letzte option script mit

$game_system.map_interpreter.running? == false

diäitsch
16.11.2009, 22:30
Guten Abend Community,
da ich mal (und das ist echt eine Neuheit) Rätsel in mein neues Game einbauen will, muss ich (in diesem Fall) auf Conditional Branches zurück greifen. Eigentlich kein Problem, aber irgendwie wird der Tastendruck ignoriert...
http://npshare.de/files/70a92ed0/Hmmm.PNG
Die neue Move Route wird ignoriert.

-Habe es mit mehreren Tasten ausprobiert
-Es laufen keine weiteren PP.
-Habe es ohne CB ausprobiert, Ergebnis was wie ich es wollte, liegt also auf jeden Fall am CB.

Hoffe jemand kann mir helfen.

SMWma
17.11.2009, 12:19
Probier mal, vor der Moveroute ein Befehl wie message einzugeben. Wenn es dann gezeigt wird, dann wissen wir es. Achja, du kannst die die Taste mit F2 oder F1 im Spiel anzeigen lassen(nur im Maker)

diäitsch
17.11.2009, 13:56
Hm, danke für den Tipp, klappte so aber nicht.
Jedoch, ich habe mal die Tasten durchprobiert, das Ergebnis:
Als Condition ist ja "A" festgelegt. Es geht aber nur mit der Taste "Z".
Liegt das jetzt an meiner Tastatur oder wird es dann überall mit "Z" sein?
Ist ja blöd wenn ich dann schreibe "drücken Sie Z" und dann geht das auf einmal nicht bei den Spielern.

Shining Advances
17.11.2009, 16:19
wenn du im spiel F1 drückst kannst du einstellen welche teste für A steht.
vom standart her ist es immer Z also musst du dir um deine Spiele keine sorgen machen ;)

SMWma
18.11.2009, 20:16
Probier mal, vor der Moveroute ein Befehl wie message einzugeben. Wenn es dann gezeigt wird, dann wissen wir es. Achja, du kannst die die Taste mit F2 oder F1 im Spiel anzeigen lassen(nur im Maker)


wenn du im spiel F1 drückst kannst du einstellen welche teste für A steht.
vom standart her ist es immer Z also musst du dir um deine Spiele keine sorgen machen ;)
lol^ Man wiederholt mich xD
But TT:
kA why but die Tast: Den in der Conditional Branch entsprechen nicht die der Tastatur. Stell dir mal vor, wie lange ich gebraucht habe, um ein zweiplayer-Event zu schreiben. Ich musste jede Taste durchprobieren:D

diäitsch
29.11.2009, 17:04
Guten Abend Community,
habe ein Problem:
Mein Projekt "Pluto- the chosen one" will sich nicht mehr spielen lassen. Wenn ich es z.B. testen will (über den Maker) oder einfach so spielen will, kommt halt erst der Startbildschirm und dann bricht es ohne Fehlermeldung ab (bevor das Titelbild erscheint).
Am Maker liegt es anscheinend nicht. Meine anderen Projekte lassen sich spielen. Probiert habe ich folgendes:
-Den RGSS Player ausgetauscht, also das Symbol. Ohne Erfolg.

Hoffe jemand kann mir helfen.

MfG, diäitsch

diäitsch
29.11.2009, 17:05
Guten Abend Community,
habe ein Problem:
Mein Projekt "Pluto- the chosen one" will sich nicht mehr spielen lassen. Wenn ich es z.B. testen will (über den Maker) oder einfach so spielen will, kommt halt erst der Startbildschirm und dann bricht es ohne Fehlermeldung ab (bevor das Titelbild erscheint).
Am Maker liegt es anscheinend nicht. Meine anderen Projekte lassen sich spielen. Probiert habe ich folgendes:
-Den RGSS Player ausgetauscht, also das Symbol. Ohne Erfolg.

Die Scripte sind auch noch alle da.
Hoffe jemand kann mir helfen.

MfG, diäitsch

diäitsch
01.12.2009, 18:35
Niemand 'ne Lösung?
Hatte eigentlich vor auf Hlg. Abend 'ne Mini Demo rauszubringen... aber so wird das nichts. :rolleyes:

Bin über jede Hilfe dankbar.

Rosa Canina
01.12.2009, 18:54
Da scheint wohl eine Data kaputt zu sein. Leg dir eine Kopie an und such dann den Übeltäter. Vielleicht sieht man es ja schon an einer 0 Byte-Größe oder so - ansonsten nach und nach die einzelnen rausschmeißen und durch Standard ersetzen, bis du den Übeltäter hast.

Ich drück dir die Daumen, dass keine wichtige Datei kaputt gegangen ist
(Sicherheitskopie gemacht?)

Shining Advances
01.12.2009, 19:39
haste nen script, das von anfang an einen thread laufen lässt? (zb die klassische anti "script is hanging" schleife)
das spiel stürzt nämlich ohne fehlermeldung ab, wenn es innerhalb eines threads nen fehler gibt.

diäitsch
01.12.2009, 19:56
@Rosa Canina:
Mache ich immer. ;)
Muss nur gucken auf welchem Stand sie ist und wann ich sie gemacht habe...
könnte ja sein das sie da schon kapput war (ist zumindest bei der Kopie auf meinem Handy so...).
Auf jeden Fall danke für den Tipp, werde entweder gleich nach dem Übeltäter suchen (auf dem Handy, wenn 'ne 0 Byte große da ist weis ich's ja), oder morgen, da ich momentan am Laptop meiner Mom sitze. :)

@Shining Advances:
Habe nur eine kleine Erweiterung zum KS als Script, welches die Positionen regelt. Damit gab's aber in meinem Testprojekt (in dem ich halt alles mögliche zum testen rein tue) keine Probleme.
Jedoch, wo du es eben erwähnst, es könnte sein, das zusätzlich zu dem Script noch etwas in einem anderen Teil der KS Scripte geändert werden musste...
Da setze ich mich morgen dran, aber erstmal suche ich nach einer kaputten Datei.

Danke euch beiden für eure Tipps. Morgen schreibe ich dann ob irgendwas geklappt hat. :)

MfG, diäitsch

Edit: Dateien nach und nach ausgetauscht, Fehler lag an der "System" Datei. Jedoch war die Datei an sich nicht beschädigt, eine MP3 Datei lies das Spiel abstürtzen... das Titellied zu P-tco war der Übeltäter. Seltsam, dabei ging es doch vorher naja, mal schauen was sich da so machen lässt.^^
Nochmals danke euch beiden, vor allem Rosa Canina.

diäitsch
27.04.2010, 16:33
Hallo Leute,
mal eben 'ne Frage, kann es sein das der Maker teilweise Conditional Branches ignoriert?

If Character X has learned Skill y
when: Change Skill y (1) remove
Change Skill y (2) learn
Else:
End

If Character X has learned Skill z
when: Change Skill z (1) remove
Change Skill z (2) learn
Else:
End

klappt irgendwie nicht. Wenn es aber ohne Conditional Branch geregelt wird

Change Skill y (1) remove
Change Skill y (2) learn
Change Skill z (1) remove
Change Skill z (2) learn

dann klappt es.

Weiß jemand eine Antwort?

MfG, diäitsch

SMWma
27.04.2010, 17:49
ähhhmmm... überprüf, ob der Held wirklich auch die Skill erlernt hat. Denn wenn du zwei Skills hast oder zwei Helden, die gleich heißen, dann kannst du dir ja den Grund selber denken:) Aber das hast du ja bestimmt schon tausendmal durchgeschaut. Aber lass doch mal den Helden es direkt vor der CB den Skill erlernen.

diäitsch
27.04.2010, 18:57
/Edit: Alles klar, hat sich erledigt. Zwei nebenher laufende aralell Processe waren schuld. Hatte garnicht gesehen das ich zweie auf der map habe laufen lassen, wieso auch immer...
Trotzdem danke Adrian2000.^^

diäitsch
01.05.2010, 14:04
Nächste Frage,
weiß einer von euch wie man Wetter Effekte (z.B. Regen) auch über Pictures anzeigen lassen kann. Verschwinden ja leider hinter besagten.

SMWma
01.05.2010, 17:23
erstelle ganz einfach viele Pics und lasse sie mit einen Zeitunterschied von 1 Frame nacheinander anzeigen. Dazu noch eine BGS und fertig. Alternativ kannst du auch Movepicture nehmen. Aber OT:
Es gibt doch ein tolles Wetterscript, oder?

diäitsch
09.05.2010, 10:53
Hm, also auf Pics wollte ich eigentlich verzichten, geht ja einfacher. ;)
Hast du zufällig 'nen Link parat?^^

SMWma
09.05.2010, 11:44
link? Meinst du den mit den mit der Fee, der mit den hässlichen Ohren und ein Schwert, mit dem er alles zerstören kann? xD

Neee, ein Link. Wozu? Zu dem Script. Ist, wenn ich mich nicht täusch hier in den Thread, wo alle Skripte reinkommen, die man eigentlich brauch. Also Standartskripte, oder wie der auch hieß xD

diäitsch
06.01.2011, 09:05
Guten Morgen Community,
mal eine wirklich ganz bescheidene Frage und zwar: Wie kann man bei der Auswahl im Titelbild (Neues Spiel, Spiel laden, Spiel beenden) die Textbox länger ziehen?
Also über "Scene_Title" im der RGS Library kann man ja u.a. die Breite ändern aber für die Länge habe ich da nichts gefunden. Und wenn man mehr machen muss als Zahlen ändern, hört's bei mir auch schon auf... :p
Vielleicht kann mir jemand helfen?

MfG, diäitsch

MagicMagor
06.01.2011, 09:29
Die Frage ist eher wieso du die Länge ändern willst.
Die Textbox im Titelmenü ist ein "Window_Command" und das passt sich in der Länge automatisch der Anzahl der Optionen an. An Window_Command rumzufummeln würde ich aber nicht vorschlagen (da diese Klasse auch an einigen anderen Stellen Verwendung findet).

diäitsch
06.01.2011, 10:07
Der Grund liegt darin das ich die Optionen (Neues Spiel, Spiel laden, Spiel beenden) direkt auf das Titelbild geschrieben habe, es also dem Stil der weiteren Textzeilen auf dem TB angepasst habe. Diese sind jedoch zu weit auseinander als das die Standarteinstellung reichen würde.
Im "Scene Titel" habe ich diese 3 einfach offen gelassen. Windowskin ist auch stark beschränkt.^^
Nun, wenn es doch nicht so einfach ist... gibt es eine Möglichkeit das ganze über Tastendruck zu regeln?

Neues Spiel - 1
Spiel laden - 2
Spiel beenden - 3

Spielstand #1 - 1
Spielstand #2 - 2
Spielstand #3 - 3
Spielstand #4 - 4

Cornix
06.01.2011, 12:48
Eine "Scene_Title" Klasse selbst zu erstellen ist eigentlich kein Problem, soetwas kann in ein paar wenigen Minuten erledigt werden. Wenn es ein Titelbildschirm im standart Format ist kann man die Optionsauswahl auch ganz einfach ohne ein Window_Command durchführen.

Wenn du möchtest könnte ich dir gerne einmal ein einfaches Beispiel geben, es ist wirklich keine Arbeit die Länger als ein paar wenige Minuten dauern sollte.

diäitsch
06.01.2011, 15:26
Es ist ein Standard Titelbild.
Also klar, wenn du mir ein Beispiel geben könntest wäre das echt toll. :)

Cornix
07.01.2011, 12:36
Hier, ein kleines Beispiel.
Es ist nicht besonders kompliziert und bietet daher auch nicht allzu viele Möglichkeiten. Lässt sich allerdings perfekt in jegliche standard XP-Projekte integrieren. Im Moment ist es lediglich eine Art kopie des normalen Titelscreens nur ohne ein Command Window sondern stattdessen ein dynamischer sprite als Cursor.

An diesem Titelbildschirm kann natürlich noch sehr viel gefeilt werden um ihn besser zu machen. Vielleicht schaffst du es selbst nötige Updates vor zu nehmen, falls nicht kannst du immernoch nachfragen.

Verändert werden müsste lediglich die Klasse "Scene_Title" und dazu wird die neue Klasse "Scene_Title" hinzugefügt. Man könnte dies auch ohne zwei Klassen lösen allerdings denke ich ist es so wie es im Moment ist am einfachsten zu bearbeiten und zu konfigurieren.

Schau dir einmal das Beispielprojekt an.
Alles was du erledigen musst um es zu implementieren ist folgendes:
Kopiere den Code im Beispielprojekt aus der Klasse "Scene_Title_Base" und füge ihn in die Klasse "Scene_Title" aus deinem Projekt ein.
Kopiere die Klasse "Scene_Title" aus dem Beispielprojekt und füge sie in dein Projekt ein.
In den ersten Zeilen der Klasse "Scene_Title" kannst du den Pfad für das "Background" und "Pointer" Bitmap eingeben.

Hier ist der Code beider Klassen falls du das Projekt nicht downloaden und testen willst:

#==============================================================================
# ** Scene_Title_Base
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================

class Scene_Title_Base
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
# Play title BGM
$game_system.bgm_play($data_system.title_bgm)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of command window
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# * Command: New Game
#--------------------------------------------------------------------------
def command_new_game
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Stop BGM
Audio.bgm_stop
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each type of game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up initial party
$game_party.setup_starting_members
# Set up initial map position
$game_map.setup($data_system.start_map_id)
# Move player to initial position
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Refresh player
$game_player.refresh
# Run automatic change for BGM and BGS set with map
$game_map.autoplay
# Update map (run parallel process event)
$game_map.update
# Switch to map screen
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Command: Continue
#--------------------------------------------------------------------------
def command_continue
# If continue is disabled
unless @continue_enabled
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to load screen
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# * Command: Shutdown
#--------------------------------------------------------------------------
def command_shutdown
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Shutdown
$scene = nil
end
#--------------------------------------------------------------------------
# * Battle Test
#--------------------------------------------------------------------------
def battle_test
# Load database (for battle test)
$data_actors = load_data("Data/BT_Actors.rxdata")
$data_classes = load_data("Data/BT_Classes.rxdata")
$data_skills = load_data("Data/BT_Skills.rxdata")
$data_items = load_data("Data/BT_Items.rxdata")
$data_weapons = load_data("Data/BT_Weapons.rxdata")
$data_armors = load_data("Data/BT_Armors.rxdata")
$data_enemies = load_data("Data/BT_Enemies.rxdata")
$data_troops = load_data("Data/BT_Troops.rxdata")
$data_states = load_data("Data/BT_States.rxdata")
$data_animations = load_data("Data/BT_Animations.rxdata")
$data_tilesets = load_data("Data/BT_Tilesets.rxdata")
$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
$data_system = load_data("Data/BT_System.rxdata")
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up party for battle test
$game_party.setup_battle_test_members
# Set troop ID, can escape flag, and battleback
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# Play battle start SE
$game_system.se_play($data_system.battle_start_se)
# Play battle BGM
$game_system.bgm_play($game_system.battle_bgm)
# Switch to battle screen
$scene = Scene_Battle.new
end
end

class Scene_Title < Scene_Title_Base

BACKGROUND_BITMAP = "Graphics/Pictures/Test-Background.png"
POINTER_BITMAP = "Graphics/Pictures/Test-Pointer.png"

POINTER_X = 224 #Cursor X position
POINTER_Y = 166 #Cursor Y position for first command
POINTER_Y_STEP = 55 #Cursor Y Addition for

OPTIONS = 3 #number of commands
NEW_GAME = 0 #Index number for command: New Game
LOAD_GAME = 1 #Index number for command: Load Game
QUIT_GAME = 2 #Index number for command: Quit Game
MAX_INDEX = OPTIONS - 1 #total number of indices

def main
#visual stuff
@sprite_background = Sprite.new
@sprite_background.bitmap = Bitmap.new(BACKGROUND_BITMAP)
@sprite_background.src_rect = @sprite_background.bitmap.rect

@sprite_pointer = Sprite.new
@sprite_pointer.bitmap = Bitmap.new(POINTER_BITMAP)
@sprite_pointer.src_rect = @sprite_pointer.bitmap.rect

@index = 0
@sprite_pointer.x = POINTER_X
self.update_pointer
#standard "Scene_Title" initialization stuff
super
#end of scene title
@sprite_pointer.bitmap.dispose
@sprite_pointer.dispose
@sprite_background.bitmap.dispose
@sprite_background.dispose
end

def update
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index = @index > 0 ? @index - 1 : MAX_INDEX
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_INCREASEMENT
end
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index = @index < MAX_INDEX ? @index + 1 : 0
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_INCREASEMENT
end
if Input.trigger?(Input::C)
case @index
when NEW_GAME
self.command_new_game
when LOAD_GAME
self.command_continue
when QUIT_GAME
self.command_shutdown
end
end
end

def update_pointer
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_STEP
end

end

diäitsch
07.01.2011, 14:55
Hey, danke für die ausführlichge Beschreibung. :)
Jedoch hat sich wohl ein Bug eingeschlichen. Habe das Projekt, welches du angehängt hast gedownloaded und getestet, wenn ich jedoch die Pfeil nach oben- oder unten Taste drücke, erscheint folgende Fehlermeldung:
http://npshare.de/files/40d689d3/Fehlermeldung.PNG
Wäre echt super wenn du das beheben könntest. Scheint ja für dich kein Problem darzustellen... ;)

Shisu
07.01.2011, 22:08
Ersetze das 2. Scene_Title im Script durch dieses:


class Scene_Title < Scene_Title_Base

BACKGROUND_BITMAP = "Graphics/Pictures/Test-Background.png"
POINTER_BITMAP = "Graphics/Pictures/Test-Pointer.png"

POINTER_X = 224 #Cursor X position
POINTER_Y = 166 #Cursor Y position for first command
POINTER_Y_STEP = 55 #Cursor Y Addition for

OPTIONS = 3 #number of commands
NEW_GAME = 0 #Index number for command: New Game
LOAD_GAME = 1 #Index number for command: Load Game
QUIT_GAME = 2 #Index number for command: Quit Game
MAX_INDEX = OPTIONS - 1 #total number of indices

def main
#visual stuff
@sprite_background = Sprite.new
@sprite_background.bitmap = Bitmap.new(BACKGROUND_BITMAP)
@sprite_background.src_rect = @sprite_background.bitmap.rect

@sprite_pointer = Sprite.new
@sprite_pointer.bitmap = Bitmap.new(POINTER_BITMAP)
@sprite_pointer.src_rect = @sprite_pointer.bitmap.rect

@index = 0
@sprite_pointer.x = POINTER_X
self.update_pointer
#standard "Scene_Title" initialization stuff
super
#end of scene title
@sprite_pointer.bitmap.dispose
@sprite_pointer.dispose
@sprite_background.bitmap.dispose
@sprite_background.dispose
end

def update
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index = @index > 0 ? @index - 1 : MAX_INDEX
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_STEP
end
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index = @index < MAX_INDEX ? @index + 1 : 0
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_STEP
end
if Input.trigger?(Input::C)
case @index
when NEW_GAME
self.command_new_game
when LOAD_GAME
self.command_continue
when QUIT_GAME
self.command_shutdown
end
end
end

def update_pointer
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_STEP
end

end

diäitsch
08.01.2011, 13:40
Vielen Dank euch beiden, jetzt klappt es.^^
Interessant auch, dass das TB und das "falsche Windowskin" auf die Pictures zugreifen.

Cornix
08.01.2011, 20:14
Vielen Dank an Shisu, es schlich sich tatsächlich ein kleiner Fehler hinein. Hauptsache es funktioniert jetzt.
Doch wie gesagt, im Moment ist es nur sehr grundlegend.

diäitsch
15.02.2011, 15:01
Hallo Community,
der Befehl "Event Touch" ist ja bekanntlich nur für den Player von Bedeutung, kommt er mit einem Event welches so eingestellt ist in Berührung, oder kommt das Event mit ihm in Berührung, so passiert etwas. Nun habe ich vor ein kleines AKS zu machen. Die Kondition das man selbst oder der Gegner Schaden erhält ist, das man/er mit einem Event in Berührung kommt (in diesem Fall eine Patrone).
Also, wie ist es Möglich das Events mit anderen Events reagieren?

sorata08
16.02.2011, 11:22
Map-/Screen-Koordinaten.
Musst du halt dann für die betreffenden Events abfragen und vergleichen. Für eine Kugel dürfte es ja nur von Interesse sein, wenn sie dieselben Koordinaten wie ein Event/der Spieler hat.

diäitsch
16.02.2011, 15:27
Okay, danke für die Info. :)
Wobei ich sagen muss das betreffendes Projekt jetzt wahrscheinlich ein Teamprojekt wird.
Der Jenige hat schon das Ein oder Andere Interessante KS erstellt und das, wie ich es bevorzuge alles über Events.

diäitsch
28.02.2011, 23:53
Hallo Community:
Dieses Mal ist mein Problem schnell erläutert.
Wie kann man auf einer Map zwei verschiedene Fogs anzeigen lassen?
Falls diese Info wichtig ist: Einer soll sich bewegen, der Andere bewegt sich nicht.

Und nein, ich kann keinen der beiden einfach als Picture anzeigen lassen, da die Map größer als 20x15 ist und der eine Fog eine LE ist. ;)

Hoffe jemand kann mir helfen.

Cornix
01.03.2011, 19:12
Du kannst dieses Script direkt über dein "Main" Script einfügen. Damit erhälst du Zugang zu einem weiteren Fog.

Additional_Fog_Standard_Name = ""
Additional_Fog_Standard_Hue = 0
Additional_Fog_Standard_Opacity = 64
Additional_Fog_Standard_Zoom_X = 1.0
Additional_Fog_Standard_Zoom_Y = 1.0
Additional_Fog_Standard_Blend_Type = 0

class Spriteset_Map

attr_accessor :refresh_additional_fog
alias initialize_standard initialize

def initialize
@additional_fog = Plane.new(@viewport1)
@additional_fog.z = 3000
@refresh_additional_fog = true
initialize_standard
end

alias dispose_standard dispose

def dispose
@additional_fog.dispose
self.dispose_standard
end

alias update_standard update

def update
if @refresh_additional_fog
@additional_fog.bitmap = RPG::Cache.fog($game_map.additional_fog_name, $game_map.additional_fog_hue)
@additional_fog.zoom_x = $game_map.additional_fog_zoom_x
@additional_fog.zoom_y = $game_map.additional_fog_zoom_y
@additional_fog.opacity = $game_map.additional_fog_opacity
@additional_fog.blend_type = $game_map.additional_fog_blend_type
@refresh_additional_fog = false
end
update_standard
end

end
class Game_Map
attr_accessor :additional_fog_name
attr_accessor :additional_fog_hue
attr_accessor :additional_fog_zoom_x
attr_accessor :additional_fog_zoom_y
attr_accessor :additional_fog_opacity
attr_accessor :additional_fog_blend_type

alias initialize_standard initialize

def initialize
@additional_fog_name = Additional_Fog_Standard_Name
@additional_fog_hue = Additional_Fog_Standard_Hue
@additional_fog_zoom_x = Additional_Fog_Standard_Zoom_X
@additional_fog_zoom_y = Additional_Fog_Standard_Zoom_Y
@additional_fog_opacity = Additional_Fog_Standard_Opacity
@additional_fog_blend_type = Additional_Fog_Standard_Blend_Type
initialize_standard
end
end
class Scene_Map
def set_additional_fog(name=Additional_Fog_Standard_Name, hue=Additional_Fog_Standard_Hue, opacity=Additional_Fog_Standard_Opacity, zoom_x=Additional_Fog_Standard_Zoom_X, zoom_y=Additional_Fog_Standard_Zoom_Y, blend_type=Additional_Fog_Standard_Blend_Type)
$game_map.additional_fog_name = name
$game_map.additional_fog_hue = hue
$game_map.additional_fog_opacity = opacity
$game_map.additional_fog_zoom_x = zoom_x
$game_map.additional_fog_zoom_y = zoom_y
$game_map.additional_fog_blend_type = blend_type
@spriteset.refresh_additional_fog = true
return true
end
end

Der Fog besitzt eine Standardeinstellung welche für alle Karten automatisch geladen wird. Im Moment ist die Standardeinstellung folgende:


Additional_Fog_Standard_Name = ""
Additional_Fog_Standard_Hue = 0
Additional_Fog_Standard_Opacity = 64
Additional_Fog_Standard_Zoom_X = 1.0
Additional_Fog_Standard_Zoom_Y = 1.0
Additional_Fog_Standard_Blend_Type = 0

Der Name ist der Dateiname deines Fogs innerhalb des "Graphics/Fogs" Ordners. Dateinamenserweiterungen wie zum Beispiel ".png" können, müssen aber nicht geschrieben werden.
Die "Hue" ist die Sättigung deines Fogs, innerhalb der Database also der Schieberegler um die Farbe zu variieren.
Opacity beschreibt die Transparenz des Fogs, eine Opacity von 0 bedeutet komplett durchsichtig, beziehungsweise unsichtbar. Eine Opacity von 255 ist das Maximum.
Dann die Zoomwerte als reele Zahl und der Blend_Type. Der Blend_Type 0 bedeutet, dass kein Blendmodus verwendet wird, 1 ist Addition, 2 Subtraktion.

Wie gesagte, dieser Standard gilt für alle Karten, lässt du den Namen leer, wie in dem Beispiel wird kein zusätzlicher Fog gezeigt.

Innerhalb eines Events kannst du den Fog der Karte ebenfalls ändern. Diese Änderung gilt dann für alle Karten global.

der Befehl lautet:
"$scene.set_additional_fog(name, hue, opacity, zoom_x, zoom_y, blend_type)"
Einfach als custom Script in ein Event schreiben und die entsprechenden Parameter eintragen.

Das Script ist natürlich noch ausbaufähig, es soll eher eine Art Ansatz darstellen.
Ich hoffe du wirst damit klarkommen und es kann dir eine Hilfe sein.

shimassy
02.03.2011, 12:51
Und nein, ich kann keinen der beiden einfach als Picture anzeigen lassen, da die Map größer als 20x15 ist und der eine Fog eine LE ist. ;)


http://forum.rpg2000.4players.de/phpBB3/viewtopic.php?f=15&t=87238&hilit=picture+fixieren

Mit diesem Script sollte es auch mit Pictures möglich sein.

diäitsch
02.03.2011, 15:51
Hm, welches soll ich nur nehmen?...^^
Danke euch beiden. Habt mir sehr geholfen! :)

Cornix
02.03.2011, 16:33
Das Script von KD erlaubt es die normalen Pictures dafür einzusetzen, ich hab einfach den Fog aus der Game_Map mit all seinen Möglichkeiten nocheinmal kopiert.
Es ist wohl einfach eine Frage des Geschmacks, die Arbeit der Umsetzung sollte mehr oder weniger die gleiche sein.

diäitsch
29.10.2011, 17:04
Hey,
kleine Frage, wie kann man beim Titelbild die drei Optionen (Neues Spiel, Laden, Beenden... oder wie auch immer man diese nennt)
nebeneinander, statt untereinander anzeigen lassen?
Hoffe auf Hilfe. :)

MfG, diäitsch

Cornix
30.10.2011, 10:11
Ich habe den Maker gerade nicht zur Hand weshalb ich dir leider kein Script geben kann, allerdings kann ich dir erklären was zu tun sein sollte und vielleicht wirst du selbst in der Lage sein das Problem zu lösen.

Die Befehle auf dem Titelscreen sind in einem Command_Window (die Klasse heist im Maker "Window_Command") Gespeichert.
Das Command Window regelt die Positionen der einzelnen Buttons.
Das Command_Window im Maker erlaubt normalerweise keine horizontale Anordnung, die Befehle in diesem Window sind demnach immer übereinander angeordnet und es gibt keine einfache Möglichkeit sie nebeneinander anzuordnen.
Um sie also nebeneinander anordnen zu können müsstest du die Klasse umschreiben (ich empfehle dir eine Kopie der Klasse anzulegen und diese Kopie zu bearbeiten).

Von diesem Punkt aus weiter kann ich dir gerade im Moment leider nicht helfen da ich das Script nicht zur Hand habe. Falls du nicht selbst in der Lage bist das Script umzuschreiben könntest du es vielleicht auch hier hochstellen sofern sich niemand anderes zur Hilfe anbietet.

-KD-
30.10.2011, 12:50
Hier (http://www.rpg-studio.de/scientia/RGSS/Tutorials/Rubykurs_3_-_RGSS_Teil_4) findest du eine Klasse Window_Command_Horizontal. Die müsste genau das machen was du brauchst. Einfach im Titelmenü Window_Command durch Window_Command_Horizontal ersetzen und die Breitenangabe in der Parameterliste weglassen (also Window_Command_Horizontal.new(commands) reicht aus).

diäitsch
31.10.2011, 10:31
Hm, habe jetzt über 'ne halbe Stunde daran rumprobiert... bitte, ein bisschen ausführlicher. :\

Shisu
31.10.2011, 23:00
Einfach das als neues Script über Main einfügen:

class Window_Command_Horizontal < Window_Selectable
def initialize(commands)
@commands = commands
super(0, 0, compute_menu_width(), 64)
self.contents = Bitmap.new(width-32, height-32)
@item_max = @commands.size
@column_max = @commands.size
@index = 0
refresh
end

def refresh
contents.clear
contents.font.color = normal_color()
@commands.each_index do |index|
draw_item(index)
end
end

def draw_item(index)
contents.draw_text(text_rect(index), @commands[index].to_s, 1)
end

def disable_item(index)
contents.fill_rect(text_rect(index), Color.new(0, 0, 0, 0))
contents.font.color = disabled_color()
draw_item(index)
end

def text_rect(index)
w = width/@commands.size
Rect.new(index * w, 0, w-32, 32)
end

def compute_menu_width
bitmap = Bitmap.new(1, 1)
widths = @commands.map do |command|
bitmap.text_size(command.to_s).width
end
(widths.max + 32) * @commands.size + 32
end

end


und dann in Scene_Title die Stelle wo eine Instanz von Window_Command erzeugt wird, durch Window_Command_Horizontal ersetzen.

diäitsch
08.12.2011, 22:52
Hallo Community,
ich würde gerne einen Wettereffekt anzeigen lassen im Titelmenü, also über dem Titelbild.
Um präzise zu sein, es geht um den Schnee WeatherEffect.

MfG, diäitsch

diäitsch
12.12.2011, 22:49
<== Frage weiterhin aktuell.
Bitte um Antwort.

diäitsch
15.12.2011, 21:18
<== <== Frage weiterhin aktuell.
Bitte um Antwort.

Cornix
16.12.2011, 19:00
Der RPG-Maker XP besitzt keine eingebaute Funktion um Wettereffekte zu erstellen.
Der VX besitzt zwar solch eine Funktion, intern wird jedoch auch nur ein neues Bitmap erschaffen und ein Schnee-Effekt darauf gezeichnet.

Ich würde dir raten es dir einfacher zu machen und einfach ein Bild des Schnee-Effektes zu erstellen oder aus dem Internet zu suchen, diesen als Plane in einen Viewport zu stecken und dann periodisch die Offset-Werte für X und Y-Koordinaten zu manipulieren je nachdem wie schnell oder langsam du den Schnee fallen haben möchtest.
Wenn du dir viel mühe geben willst kannst du auch separate Sprites für jede "Zeile" des Schnee-Effektes erstellen und diese dann individuell bewegen lassen um es weniger "systematisch" fallen zu lassen.

sorata08
17.12.2011, 13:17
Oder du überspringst die Title-Scene und bastelst dir auf einer Map einen eigenen Title...

diäitsch
17.12.2011, 13:32
@Cornix:
Hm, ich dachte man könne einfach den Effekt den man auf den Maps einstellen kann, im Script Editor in Scene Title oder so kopieren.
Naja, danke für die Antwort, muss mal gucken für welche Methode ich mich entscheide oder ob ich's einfach bei 'nem normalen TB belasse.

@Sorata:
Wäre dann auch eine Möglichkeit. Scripte dafür finden sich ja wie Sand am Meer.

Cepanks
17.12.2011, 16:45
@Cornix:
Hm, ich dachte man könne einfach den Effekt den man auf den Maps einstellen kann, im Script Editor in Scene Title oder so kopieren.
Kannst du auch. Der XP hat das Wetter-Script zwar nicht direkt im Editor, aber es lässt sich in der Hilfe-Datei anschauen.

module RPG
class Weather
def initialize(viewport = nil)
@type = 0
@max = 0
@ox = 0
@oy = 0
color1 = Color.new(255, 255, 255, 255)
color2 = Color.new(255, 255, 255, 128)
@rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
end
@storm_bitmap = Bitmap.new(34, 64)
for i in 0..31
@storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
@storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
@storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
end
@snow_bitmap = Bitmap.new(6, 6)
@snow_bitmap.fill_rect(0, 1, 6, 4, color2)
@snow_bitmap.fill_rect(1, 0, 4, 6, color2)
@snow_bitmap.fill_rect(1, 2, 4, 2, color1)
@snow_bitmap.fill_rect(2, 1, 2, 4, color1)
@sprites = []
for i in 1..40
sprite = Sprite.new(viewport)
sprite.z = 1000
sprite.visible = false
sprite.opacity = 0
@sprites.push(sprite)
end
end
def dispose
for sprite in @sprites
sprite.dispose
end
@rain_bitmap.dispose
@storm_bitmap.dispose
@snow_bitmap.dispose
end
def type=(type)
return if @type == type
@type = type
case @type
when 1
bitmap = @rain_bitmap
when 2
bitmap = @storm_bitmap
when 3
bitmap = @snow_bitmap
else
bitmap = nil
end
for i in 1..40
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
sprite.bitmap = bitmap
end
end
end
def ox=(ox)
return if @ox == ox;
@ox = ox
for sprite in @sprites
sprite.ox = @ox
end
end
def oy=(oy)
return if @oy == oy;
@oy = oy
for sprite in @sprites
sprite.oy = @oy
end
end
def max=(max)
return if @max == max;
@max = [[max, 0].max, 40].min
for i in 1..40
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
end
end
end
def update
return if @type == 0
for i in 1..@max
sprite = @sprites[i]
if sprite == nil
break
end
if @type == 1
sprite.x -= 2
sprite.y += 16
sprite.opacity -= 8
end
if @type == 2
sprite.x -= 8
sprite.y += 16
sprite.opacity -= 12
end
if @type == 3
sprite.x -= 2
sprite.y += 8
sprite.opacity -= 8
end
x = sprite.x - @ox
y = sprite.y - @oy
if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
sprite.x = rand(800) - 50 + @ox
sprite.y = rand(800) - 200 + @oy
sprite.opacity = 255
end
end
end
attr_reader :type
attr_reader :max
attr_reader :ox
attr_reader :oy
end
end

Sofern du den normalen Standard-Titelbildschirm verwendest sollte es also reichen, in Scene_Title folgende Zeilen hinzuzufügen:

In Scene_Title#main irgendwo vor Graphics.transition


@weather = RPG::Weather.new
@weather.type = 3 # 0=Kein Wettereffekt, 1=Regen, 2=Sturm, 3=Schnee
@weather.max = 40 # Wetterstärke (0-40)


In Scene_Title#main irgendwo nach Graphics.freeze (Am besten einfach ans Ende der Methode)

@weather.dispose

Irgendwo in Scene_Title#update (Am besten einfach ans Ende der Methode)

@weather.update

Cornix
17.12.2011, 17:21
Tatsächlich.
Ich habe mich lediglich auf den Script-Editor gestützt und dort keine Wettermethoden gefunden.
Ich habe garnicht daran gedacht, dass die Wettereffekte derart versteckt werden würden.

Todu
17.12.2011, 21:56
Ist bei einige der Klassen, die die Enterbrain-Leute als Kern des RGSS gesehen haben so. GLücklicherweise ist in der Hilfedatei zu allein nicht-Ruby-RGSS-Klassen der Sourcecode und gute Kommentierung zu finden.

diäitsch
23.01.2012, 12:25
Hallo Community,
ich hätte eine Frage bzgl. des KS des Makers.
Wenn ich während eines Kampfes ein Picture anzeigen lasse, legt sich dieses über den Windowskin, wenn ich z.B. Techniken auswählen will.
Was muss ich wo umschreiben, das sich der Windowskin über das Picture legt?
Meine zweite Frage wäre, wie ich es vermeiden kann, das nach dem Kampf das Fenster erscheint in dem drinsteht wieviel EP und Geld man gewonnen hat.
Ich hoffe jemand kann mir helfen.

MfG, diäitsch

Cornix
23.01.2012, 13:30
Das mit den Picturen ist ein wenig kompliziert. Es ist so, dass alle Arten von Grafiken welche auf dem Bildschirm dargestellt werden sollen in einen Viewport gepackt werden müssen.
Im Kampf sind zum Beispiel das Hintergrundbild und die Feinde in einem Viewport. In einem zweiten sind die Charaktersprites. In einem nächsten sind dann die Pictures. Und so weiter.
Die Fenster werden allerdings im RPG-Maker XP standardmäßig in keinen Viewport gepackt, demnach also in einen generischen standardviewport auf welchen du keinen Einfluss nehmen kannst.
Die Z-Position der Grafiken, also welche Grafik über einer anderen dargestellt wird, ist aber auch von ihrem Viewport abhängig. Viewports besitzen ebenfalls eine Z-Koordinate und falls ein Viewport über einem anderen liegt so liegen gleichzeitig auch alle Sprites innerhalb dieses Viewports über allen aus dem anderen.

Um die Pictures nun also unter die Fenster zu schieben müsstest du den Fenstern einen Viewport geben und das wäre ein wenig mehr Arbeit, es würde vor allem gutes Verständnis von dem was man machen will erfordern.

Eine einfachere Lösung könnte natürlich für dich sein einfach die Höhe des Viewports auf welchem die Pictures gelegt werden zu beschränken insofern dieser garnichtmehr bis zu den Fenstern am unteren Bildschirmrand reichen wird.

In dem Script: "Spriteset_Battle" findest du dafür in Zeile 21 die Anweisung:

@viewport3 = Viewport.new(0, 0, 640, 480)
[Anmerkung: Parameter für einen Viewport sind: (x, y, width, height).]

Dieser Viewport ist derjenige welcher die Pictures umfasst. Wenn du die Höhe, also die "480" in dieser Zeile nun variierst werden die Pictures garnichtmehr bis zu den Fenstern reichen dürfen.
Versuche es einmal diese Zeile mit folgender auszutauschen:

@viewport3 = Viewport.new(0, 0, 640, 320)

Für dein zweites Problem versuche einmal folgendes:
In dem Script: "Scene_Battle 2" tauscht du die Zeilen 191 bis 194 welche lauten:

# Make battle result window
@result_window = Window_BattleResult.new(exp, gold, treasures)
# Set wait count
@phase5_wait_count = 100
gegen diese Zeilen aus:

@status_window.refresh
battle_end(0)

Das sollte eigentlich bereits alles sein was zu tun ist.

diäitsch
23.01.2012, 14:45
Danke, Cornix. Das zweite Problem hat sich somit gelöst. Mit der Lösung des ersten Problems bin ich noch unzufrieden.
Das ganze sieht nämlich so aus:
http://img.webme.com/pic/d/diaeitsch-games/problem.png
Das Picture muss an dieser Stelle stehen, damit die Battler nicht plötzlich auf den Bäumen stehen.

Cornix
23.01.2012, 18:00
So wie es aussieht hast du dann keine andere Wahl als das Kampfsystem zu einem gewissen Grad neu zu scripten. Dieses Problem kann man leider nicht so einfach mit einer "kleinen" Copy-And-Paste Aktion lösen.
Das Hauptproblem ist einfach wie die Windowklassen und die übrigen Grafiken in den Standardsystemen des Makers getrennt werden.
Alle Pictures, der Hintergrund, die Charaktere und das drum und dran sind in der Spriteset_Battle Klasse untergebracht, genauso wie auch die Viewports.
Während alle Windows direkt in der Scene eingebunden sind und deswegen nicht auf die Viewports zugreifen können.

Was du natürlich versuchen kannst ist einen Viewport in die Scene zu setzen und die Windows daraufhin umzuschreiben diesen Viewport zu verwenden. Das wäre ziemlich hässlich (aus Programmierersicht gesehen) und auch generell ein schlechter Stil aber es wäre wahrscheinlich vergleichsweise einfach und schnell erledigt.

Was man dabei allerdings erwähnen sollte, ist, dass es dir danach sehr viel schwerer fallen wird in der Zukunft noch Erweiterungen oder Veränderungen am Kampfsystem durchzuführen weil wir nicht wissen wie dein Kampfsystemscript aussieht und bei wachsender Unordnung wegen vieler kleiner Änderungen auch nicht den Nerv aufbringen werden uns den gesamten Code durchzulesen und ihn zu analisieren.

Hier nocheinmal eine Zusammenfassung wie es relativ schnell gelöst werden könnte.
Window_Base und Sub-Klassen erweitern sodass man im Konstruktor einen Viewport angeben kann. Für die Kompatibilität mit anderen Scripten natürlich für den default Viewport "nil" angeben im Konstruktor.
Also als Beispiel:

class Window_Base
def initialize(x,y,width,height,viewport = nil)
super(viewport)
[...übriger code...]
end
[...]
end

Dann die passenden Window-Klassen welche du im Kampfmenü verwendest (und deren Oberklassen falls vorhanden) finden und auch deren Konstruktoren anpassen um ebenfalls einen Viewport übergeben zu bekommen. Analog zum Base-Window.
Dann in der Scene_Battle einen Viewport erschaffen, diesem Viewport einen Z-Wert unterhalb des @viewport_3 im Spriteset_Battle geben, also "@scene_battle_viewport.z = 150" zum Beispiel da der Viewport 3 standardmäßig den Z-Wert 201 hat wenn ich mich recht errinere.
Und natürlich allen Windows in der Scene diesen Viewport im Konstruktor zuweisen.

Ist relativ gesehen wenig aufwand, bringt aber die oben angegebenen Nachteile. Es würde sich vielleicht direkt anbieten ein eigenes Kampfsystem zu scripten.

Fatalis
23.01.2012, 21:18
Ich weiß nicht ob es bei den Fenstern vom KS irgendwelche Besonderheiten gibt, aber würde es nicht reichen, z-Koordinate von Fenster und Picture entsprechend anzupassen?
Game_Picture hat zwar von sich aus kein z-Attribut, aber da man ja den kompletten Code von Game_Picture und Sprite_Picture hat könnte man recht einfach ein z Attribut hinzufügen. Eventuell würde es schon reichen, z vom Window ausreichend hochzusetzen, damit es über dem Picture liegt.
Ich hab mit dem Standard-KS gar nicht gearbeitet, deshalb weiß ich nicht was es da noch für Probleme geben könnte, aber ich würd einfach an der Stelle, wo das Fenster erzeugt wird, window.z = 1000 (nicht sicher welchen z-Wert Pictures standardgemäß haben) einfügen.
Ich arbeite jedenfalls auf der normalem Map mit Pictures, Windows und eigenen Sprites und über den z-Wert allein ließ sich eigentlich immer kontrollieren was wo oben ist, ohne mit Viewports zu arbeiten.

Ist so keine vollständige Lösung, ich weiß nicht sicher ob es so funktioniert, aber es wäre zumindest ein Ansatz.

Cornix
23.01.2012, 22:09
Die Z-Koordinaten kann man hier nicht nutzen aus dem grund da die einzelnen Grafiken, in diesem Fall Pictures und Fenster, auf einzelnen Viewports liegen und diese Viewports unterschiedliche Z-Werte besitzen. Viewports besitzen eine höhere Priorität wenn es um Z-Werte geht.
Besitzt ein Viewport A einen höheren Z-Wert als Viewport B dann besitzen alle Grafiken aus Viewport A immer einen höheren Z-Wert als jede Grafik aus Viewport B unabhängig davon wie man mit den einzelnen Z-Werten der Grafiken herumspielt.

diäitsch
04.03.2012, 21:49
Bevor ich zu meiner nächsten Frage komme, muss ich mal loswerden, dass ich es super finde, wie verlässlich diese Community doch ist,
wenn es um Problemlösungen geht. :)
Nun zu meiner Frage: Im Kampfbildschirm hat man neben den aktuellen Lebens- und Magiepunkte ja auch noch den Status stehen, welcher
normalerweise "[Normal]" ist. In meinem neuen Projekt werden Statusveränderungen keine Rolle spielen, daher kann diese Anzeige auch
weg, bloß wie? habe in der Library nichts gefunden... Natürlich kann man das Ganze auch via Picture überdecken, aber das lässt sich
doch bestimmt auch eleganter lösen, oder?

MfG, diäitsch

Cornix
04.03.2012, 21:54
In der Klasse "Window_BattleStatus" suchst du in Zeile 33 die Methode:

def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 32, 120)
draw_actor_sp(actor, actor_x, 64, 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, actor_x, 96)
end
end
end
dort löscht du die Zeilen:

else
draw_actor_state(actor, actor_x, 96)
Sodass die Methode im Nachhinein nurnoch wie folgt aussieht:

def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 32, 120)
draw_actor_sp(actor, actor_x, 64, 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
end
end
end
Und nun sollte es eigentlich geschehen sein.

diäitsch
04.03.2012, 22:35
Oh, dachte das stände, wie auch vieles andere in lilaner Schrift irgendwo.
Vielen Dank, Cornix.^^

Cornix
04.03.2012, 22:52
Die Purpurne Syntax-Färbung ist lediglich für konstante Strings, also Zeichenfolgen die bereits fest im Programm stehen. Hierbei handelt es sich jedoch um einen Funktionsaufruf.

diäitsch
19.07.2012, 16:23
Hallo Community,
momentan arbeite ich an einem kleinen Projekt und habe ein sehr ärgerliches Problem.
Es geht um eine 49x45 Tiles große Map, welche Fackeln an den Wänden aufweist, insgesamt sind es 32.
Jedenfalls soll jede dieser Fackeln auch brennen. Nun wollte ich es umgehen, diese Map mit 32 zusätzlichen
Events zu belasten, also habe ich einen großen Fog erstellt, der die Flammen enthält. Dieser sollte sich alle 5 Frames
ändern, da die Flammen 4-fach animiert sind. Das Problem ist nur, dass das Spiel dann alle 5 Frames stockt...
Habe gerade mal probiert das ganze in ein riesiges (6272x5760 Pixel großes) Charset zu packen, dieses jedoch lässt
sich nicht in das Projekt importieren (von wegen unbegrenzte Charset Größen im Rpg maker Xp).
Zwar könnte ich diese 32 Events in weitaus weniger Charsets zusammenfassen, aber vielleicht weiß jemand von euch
eine bessere Lösung, würde das ganze eigentlich sehr gerne über den Fog regeln.

MfG, diäitsch

-KD-
19.07.2012, 17:44
Das hängt damit zusammen, dass der Maker nicht ordentlich cacht. Die Fogs werden jedes Mal neu aus der Datei geladen. Im Scripteditor ab Zeile 108 findest du

if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
Hier die Zeile mit dem Dispose auskommentieren (# davor schreiben), so dass da steht

if @fog.bitmap != nil
# @fog.bitmap.dispose
@fog.bitmap = nil
end

Aber Achtung: Wenn du viele verschiedene Fogs einsetzt und die nie gelöscht werden, kann das auf Dauer den Speicher belasten. Ein Kompromiss wäre, Fogs pro Map zu cachen. Das sieht
dann so aus:

if @fog.bitmap != nil
# @fog.bitmap.dispose
(@used_fogs ||= {})[@fog.bitmap] = true
@fog.bitmap = nil
end

Und dann bei dispose (ab Zeile 58)

def dispose
# Dispose of tilemap
@tilemap.tileset.dispose
for i in 0..6
@tilemap.autotiles[i].dispose
end
@tilemap.dispose
# Dispose of panorama plane
@panorama.dispose
# Dispose of fog plane

# edit
if @used_fogs
@used_fogs.each_key {|fog| fog.dispose unless fog.disposed?}
@used_fogs.clear
end

# Dispose of character sprites
for sprite in @character_sprites
sprite.dispose
end

diäitsch
19.07.2012, 21:02
Genial! Velen Dank für deine schnelle Hilfe. :)

diäitsch
30.07.2012, 09:38
Guten Morgen,
ich habe eine Frage und zwar habe ich die Schriftfarbe meines Projekts von weiß in schwarz geändert, jedoch gibt es noch zwei Dinge,
die noch immer in weißer Schrift angezeigt werden und bei denen ich im Script-Editor nichts finde. Dies sind zum einen die Auswahlmöglichkeiten
des Shop processing (Buy, Sell, Quit), zum anderen ist das die Anzeige "miss" im Kampfsystem. Kann mir jemand sagen wo ich das ebenfalls
ändern kann?

Cornix
30.07.2012, 13:21
Wo genau hast du die Font.color in deinem Projekt geändert?
Für diverse Fenster werden im XP fest vordefinierte Farben verwendet welche du in der Klasse "Window_Base" ändern kannst.
Für die Schrift im Kampfsystem musst du die Klasse "RPG::Sprite" ändern welche jedoch nicht im Script-Editor vorhanden ist sondern versteckt im RGSS.
Du kannst den Quellcode der Klasse in der Hilfedatei des Makers betrachten und musst ihn im Script-Editor überschreiben um die Schriftfarbe ändern zu können.

diäitsch
30.07.2012, 18:50
Habe sie in der Window Base geändert.
Wenn ich jetzt darüber nachdenke wäre es evtl. besser die Farbe im KS weiß zu lassen, jedoch stört die weiße "Farbe"
im Shop processing. Habe mal in der Hilfsdatei nachgesehen, kann diesbezüglich aber nichts finden.

diäitsch
31.07.2012, 20:32
Also wie gesagt, bin mit allem zufrieden, verstehe halt nur nicht wieso im Shop processing nur diese drei Auswahlmöglichkeiten noch in weißer Schrift
angezeigt werden. Auch ist es mir ein Rätsel wo man das ändern kann. Man sollte doch meinen dass sich dies dort ändern lasse, wo man auch die
Schriftfarben der anderen Wörter ändern kann, welche ebenfalls im Shop processing angezeigt werden...

Cornix
31.07.2012, 21:13
Ich habe mich nocheinmal durch das Script gelesen. Es werden dort nur die Farben verwendet welche in der Window_Base-Klasse angegeben werden, nämlich: normal_color, system_color und disabled_color.

diäitsch
31.07.2012, 21:46
Hm, seltsam. Dann werde ich wohl etwas übersehen haben, hier meine Window-Base-Class:


#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================

class Window_Base < Window
#--------------------------------------------------------------------------
# * Object Initialization
# x : window x-coordinate
# y : window y-coordinate
# width : window width
# height : window height
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super()
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)
self.x = x
self.y = y
self.width = width
self.height = height
self.z = 100
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
# Dispose if window contents bit map is set
if self.contents != nil
self.contents.dispose
end
super
end
#--------------------------------------------------------------------------
# * Get Text Color
# n : text color number (0-7)
#--------------------------------------------------------------------------
def text_color(n)
case n
when 0
return Color.new(-255, -255, -255, 255)
when 1
return Color.new(-255, -255, -255, 255)
when 2
return Color.new(-255, -255, -255, 255)
when 3
return Color.new(-255, -255, -255, 255)
when 4
return Color.new(-255, -255, -255, 255)
when 5
return Color.new(-255, -255, -255, 255)
when 6
return Color.new(-255, -255, -255, 255)
when 7
return Color.new(-255, -255, -255, 255)
else
normal_color
end
end
#--------------------------------------------------------------------------
# * Get Normal Text Color
#--------------------------------------------------------------------------
def normal_color
return Color.new(-255, -255, -255, 255)
end
#--------------------------------------------------------------------------
# * Get Disabled Text Color
#--------------------------------------------------------------------------
def disabled_color
return Color.new(-255, -255, -255, 255)
end
#--------------------------------------------------------------------------
# * Get System Text Color
#--------------------------------------------------------------------------
def system_color
return Color.new(-255, -255, -255, 255)
end
#--------------------------------------------------------------------------
# * Get Crisis Text Color
#--------------------------------------------------------------------------
def crisis_color
return Color.new(-255, -255, -255, 255)
end
#--------------------------------------------------------------------------
# * Get Knockout Text Color
#--------------------------------------------------------------------------
def knockout_color
return Color.new(-255, -255, -255)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# Reset if windowskin was changed
if $game_system.windowskin_name != @windowskin_name
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)
end
end
#--------------------------------------------------------------------------
# * Draw Graphic
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_graphic(actor, x, y)
bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# * Draw Name
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 120, 32, actor.name)
end
#--------------------------------------------------------------------------
# * Draw Class
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_class(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 236, 32, actor.class_name)
end
#--------------------------------------------------------------------------
# * Draw Level
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_level(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, "Lv")
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
end
#--------------------------------------------------------------------------
# * Make State Text String for Drawing
# actor : actor
# width : draw spot width
# need_normal : Whether or not [normal] is needed (true / false)
#--------------------------------------------------------------------------
def make_battler_state_text(battler, width, need_normal)
# Get width of brackets
brackets_width = self.contents.text_size("[]").width
# Make text string for state names
text = ""
for i in battler.states
if $data_states[i].rating >= 1
if text == ""
text = $data_states[i].name
else
new_text = text + "/" + $data_states[i].name
text_width = self.contents.text_size(new_text).width
if text_width > width - brackets_width
break
end
text = new_text
end
end
end
# If text string for state names is empty, make it [normal]
if text == ""
if need_normal
text = "[Normal]"
end
else
# Attach brackets
text = "[" + text + "]"
end
# Return completed text string
return text
end
#--------------------------------------------------------------------------
# * Draw State
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_state(actor, x, y, width = 120)
text = make_battler_state_text(actor, width, true)
self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
self.contents.draw_text(x, y, width, 32, text)
end
#--------------------------------------------------------------------------
# * Draw EXP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_exp(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 24, 32, "E")
self.contents.font.color = normal_color
self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
end
#--------------------------------------------------------------------------
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_hp(actor, x, y, width = 144)
# Draw "HP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
# Calculate if there is draw space for MaxHP
if width - 32 >= 108
hp_x = x + width - 108
flag = true
elsif width - 32 >= 48
hp_x = x + width - 48
flag = false
end
# Draw HP
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
# Draw MaxHP
if flag
self.contents.font.color = normal_color
self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
end
end
#--------------------------------------------------------------------------
# * Draw SP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_sp(actor, x, y, width = 144)
# Draw "SP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
# Calculate if there is draw space for MaxHP
if width - 32 >= 108
sp_x = x + width - 108
flag = true
elsif width - 32 >= 48
sp_x = x + width - 48
flag = false
end
# Draw SP
self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
# Draw MaxSP
if flag
self.contents.font.color = normal_color
self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
end
end
#--------------------------------------------------------------------------
# * Draw Parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type (0-6)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
end
#--------------------------------------------------------------------------
# * Draw Item Name
# item : item
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_item_name(item, x, y)
if item == nil
return
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name)
end
end

Cornix
31.07.2012, 22:08
Ich habe es gerade einmal mit deinem Script getestet.
Wie es aussieht liegt der Fehler hier in der Klasse "Window_ShopCommand", in dieser Klasse wird nämlich tatsächlich garkeine Farbe für die Schrift eingestellt, deshalb wird die standard Farbe verwendet welche bei deinem Projekt wahrscheinlich Weiß ist.

Du hast zwei Möglichkeiten welche beide sehr simpel sind. Du veränderst die Klasse "Window_ShopCommand" und fügst einfach eine Zeile ein um die Farbe zu setzen wie in diesem Beispiel hier:

def initialize
super(0, 64, 480, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.color = normal_color
@item_max = 3
@column_max = 3
@commands = ["Buy", "Sell", "Exit"]
refresh
self.index = 0
end
Oder du änderst auch die standard Schriftfarbe in deinem Projekt auf Schwarz, das geht über folgende Zeile welche du lediglich irgendwann vor Beginn des eigentlichen Spiels, also am besten in der Main-Funktion, aufrufst:

Font.default_color = Color.new(0,0,0,255)

diäitsch
02.08.2012, 17:32
Vielen Dank für die Hilfe, Cornix.
Habe es mit deiner zweiten Variante gelöst. Klappt einwandfrei. :)

diäitsch
14.10.2012, 17:43
Guten Abend Community,
ich habe eine Frage zu Pictures, welche auf dem Battle Screen angezeigt werden.
Ist es irgendwie möglich diese direkt nach dem Kampf wieder verschwinden zu lassen?

Bekomme es nicht hin, habe es mit Switches, Conditional Branches und sogar Labels versucht,
nichts funktioniert. Beim nächsten Kampf ist das Picture noch immer vorhanden. Problematisch ist
dies wenn besagtes Picture nicht auf den (anderen) Battleback passt. Natürlich kann man durch
Erase Picture das Bild verschwinden lassen, aber trotzdem ist das Bild ca. eine Sekunde zu sehen.
Es müsste doch auch irgendwie direkt nach einem Kampf (und nicht direkt zu Beginn des nächsten
Kampfes) möglich sein, oder?

Hoffe jemand kann mir helfen.

MfG, diäitsch

diäitsch
15.10.2012, 21:13
Vielleicht noch wichtig zu erwähnen:
Es geht um die Einstellungen des Punktes "Troops" in der Database.

Edit: Es ist einfach unglaublich, wie schwierig Enterbrain es den Nutzern des Rpg Maker Xp
macht, jetzt habe ich versucht zu trixen, in dem ich vor dem Kampf den Screencolor Tone
herunterschraube (-255, -255, -255, 0) und erst eine halbe Sekunde nach Kampfbeginn
wieder normalisiere. Würde auch sicherlich in Verbindung mit Fogs statt Pictures super
funktionieren, aber anscheinend werden im Kampf keine Fogs angezeigt!

FlipelyFlip
18.10.2012, 19:53
ich weiß nicht obs noch aktuell ist, aber willst du das ganze auch für Random-battles oder nur für bestimmte Bossbattles die du über Event einstellst?
Theoretisch könnt ich dir da was schreiben, damt sowas klappt, bräuchte blos ein paar genauere Infos dafür.

diäitsch
21.10.2012, 18:44
Gedacht war das für bestimmte Kämpfe.
Habe das jetzt aber anders gelöst, trotzdem danke.