• Anmelden

1

Samstag, 17. Dezember 2011, 12:05

Autotiles blend mode

Hi,

habe eine ähnliche Frage schon vor paar Jahren gestellt, aber keine befriedigende Lösung bekommen. Also, ich benötige die Möglichkeit den additiven Blend-Modus (blend_mode = 1) zu verwenden, um bestimmte Wassereffekte zu simulieren. Dazu müsste ich die class Tilemap editieren, von der ich aber keinen Code habe.

- Gibt es bereits so ein Script? Kompatibilität / Fehler wayne, das würd ich mir schon zurechtschreiben.

- Wenn nicht, hat jemand den reinen Quell-Code der Tilemap-Klasse? Hab das ja schon teilweise für die class Window etc. gesehen, dürfte es also hier auch geben. Wenn ich die Klasse hab, kann ich mir den Rest selber schreiben.

- Wenn auch das nicht geht, kann mir wenigstens jemand ein kleines Script schreiben, das bestimmte Autotiles, z.B. das erste aus der Reihe, in eine bitmap kopiert und speichert? Ich hab leider keinen Plan wie die Autotiles genau ausgelesen werden. Ich weiß wie ich an die Tile-Daten komme, aber wie die Autotiles generiert werden.. kp.

In jedem Fall braucht das ganze nicht komplex sein, für additive Autotiles würde ich ohnehin nur immer einen Layer bzw. Priority 0 verwenden, muss also nicht sonderlich komplex sein.

mfg
The King
Terranigma 2 - Episode I - Open Beta out now!

RPC - Rpg-Maker Community Platform - Spielübergreifende Erfolge und mehr!

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

2

Sonntag, 18. Dezember 2011, 14:09

Der Sourcecode von der Tilemap ist in C geschrieben, schätze mal aus performance Gründen...
Ich habe aber mal eine kleine RPG::Cache Erweiterung geschrieben, die vielleicht für dich nützlich sein könnte:
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
module RPG
  module Cache
    AUTOTILES = [26, 27, 32, 33,  4, 27, 32, 33, # 1
                          5, 27, 32, 33,  4,  5, 32, 33, # 3
                         26, 27, 32, 11,  4, 27, 32, 11, # 5
                         26,  5, 32, 11,  4,  5, 32, 11, # 7
                         26, 27, 10, 33,  4, 27, 10, 33, # 9
                         26,  5, 10, 33,  4,  5, 10, 33, # 11
                         26, 27, 10, 11,  4, 27, 10, 11, # 13
                         26,  5, 10, 11,  4,  5, 10, 11, # 15
                         24, 25, 30, 31, 24,  5, 30, 31, # 17
                         24, 25, 30, 11, 24,  5, 30, 11, # 19
                         14, 15, 20, 21, 14, 15, 20, 11, # 21
                         14, 15, 10, 21, 14, 15, 10, 11, # 23
                         28, 29, 34, 35, 28, 29, 10, 35, # 25
                           4, 29, 34, 35,  4, 29, 10, 35, # 27
                         38, 39, 44, 45,  4, 39, 44, 45, # 29
                         38,  5, 44, 45,  4,  5, 44, 45, # 31
                         24, 29, 30, 35, 14, 15, 44, 45, # 33
                         12, 13, 18, 19, 12, 13, 18, 11, # 35
                         16, 17, 22, 23, 16, 17, 10, 23, # 37
                         40, 41, 46, 47,  4, 41, 46, 47, # 39
                         36, 37, 42, 43, 36,  5, 42, 43, # 41
                         12, 17, 18, 23, 12, 13, 42, 43, # 43
                         36, 41, 42, 47, 16, 17, 46, 47, # 45
                          0,  1,  6,  7,  0,  1,  6,  7] # 47
 
    module_function
    def atile(file, id)
      autotile_bitmap = Bitmap.new(32, 32)
      autotiles_bitmap = autotile(file)
      real_id = id * 4
      rect = Array.new(4) {|i| Rect.new(AUTOTILES[real_id + i] % 6 * 16, AUTOTILES[real_id + i] / 6 * 16, 16, 16)}
      autotile_bitmap.blt(0, 0, autotiles_bitmap, rect[0])
      autotile_bitmap.blt(16, 0, autotiles_bitmap, rect[1])
      autotile_bitmap.blt(0, 16, autotiles_bitmap, rect[2])
      autotile_bitmap.blt(16, 16, autotiles_bitmap, rect[3])
      return autotile_bitmap
    end
  end
end
zum Lesen den Text mit der Maus markieren

Diese gibt dir eine Bitmap des gewünschten Autotiles zurück.

mfg
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

3

Sonntag, 18. Dezember 2011, 17:27

Quellcode

1
Der Sourcecode von der Tilemap ist in C geschrieben, schätze mal aus performance Gründen...


Hmm ja hab ich nach elends langer Google-Suche auch rausgefunden. Gibt zwar viele Tilemap-Rewrites, aber die sind alle nix zur richtigen Verwendung, weil langsam oder priority-bugs.

Danke für die Cache-Erweiterung, die hilft mir wirklich sehr! Kannst du mir aber noch schnell helfen die Tile-ID richtig zu konvertieren? Ich habs so probiert

Soweit ich das sehe wird das richtige File gewählt, aber das falsche Tile. Kenn mich bei den Autotile-IDs nicht so gut aus, hab die Rechnung für f und a aus einem Mode7-Script übernommen. Wie gehörts richtig?


Ah, kleiner Tipp-Fehler. Super, jetzt funktioniert es perfekt, hab noch einen offset-parameter für die Animation hinzugefügt, der Rest ist kinderspiel. Muss nur schauen dass die Performance stimmt..
Terranigma 2 - Episode I - Open Beta out now!

RPC - Rpg-Maker Community Platform - Spielübergreifende Erfolge und mehr!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »The King« (18. Dezember 2011, 17:27)


Ähnliche Themen

Social Bookmarks