Simple Text Effects Tipe: Gaje PengenalanBerawal dari request dari om Kuro kepada om dhoom di https://rmid.forumotion.net/t3594p20-dhoom-script-workshop#55667 , yang mana malah saya kerjain. Awalnya cuma coba2 karena udah lama gk scripting RGSS2, dan karena request yg itu kayaknya paling mudah diantara request2 di trid tersebut, jadi saya coba yg itu. Eh malah keasikan dan tanpa disadari ternyata scriptnya selesai Dan karena udah terlanjur jadi, saya kembangin dengan beberapa efek lain(saat ini ada 3 efek, yaitu fading text, zooming text, dan tinting text (benar gk nih namanya? )). Untuk cara pakai baca aja di scriptnya. Fitur
- 3 macam efek.
- Bisa lebih dari 1 teks berefek muncul sekaligus ke layar.
Screenshotstakada Demotakada Scripts - Code:
-
#=============================================================================== # * Text Effects #------------------------------------------------------------------------------- # Cara pakai: # - Cukup copy paste script ini ke script editor, di atas main # - Panggil melalui event script sesuai effect yg diinginkan # - Jangan ubah apapun dalam script kecuali bila anda tahu apa yang anda lakukan #------------------------------------------------------------------------------- # Effect yang tersedia saat ini: # - Fading Text # fadingtext(text, x, y, delay[, color, font, size, bold, # italic, shadow]) # # - Tinting Text # tintingtext(text, x, y, delay[, tintdelay, color, # font, size, bold, italic, shadow]) # # - Zooming Text # zoomingtext(text, x, y, delay, initzoom_x, initzoom_y, maxzoom_x, # maxzoom_y, zoomspeed_x, zoomspeed_y, # color, font, size, bold, italic, shadow) # Bila ingin membuat zoom yg mengecil, masukkan angka negatif pada zoomspeed_x # dan zoomspeed_y #------------------------------------------------------------------------------- # Keterangan: # - text = text yang akan ditampilkan # - x = posisi x dari text yang akan ditampilkan # - y = posisi y dari text yang akan ditampilkan # - delay = berapa lama(frame) text akan ada di layar # - tintdelay = lama waktu sekali kedipan # - initzoom_x = zoom x awal dari text # - initzoom_y = zoom y awal dari text # - maxzoom_x = zoom x maksimal/minimal(tergantung zoomspeed) dari text # - maxzoom_y = zoom y maksimal/minimal(tergantung zoomspeed) dari text # - zoomspeed_x = kecepatan zoom x dari text # - zoomspeed_y = kecepatan zoom y dari text # - color = warna text # - font = jenis font # - size = ukuran text # - bold = cetak tebal # - italic = cetak miring # - shadow = kurang tau #------------------------------------------------------------------------------- # Contoh: # - fadingtext("heheheh", 300, 100, 600) # - fadingtext("hehehe", 200, 100, 200, Color.new(255, 0, 255), # "Verdana", 64, true, true, true) #------------------------------------------------------------------------------- # Compatibility: # - Seharusnya sih kompatibel dengan semua script yang ada selama variabel # $game_map nya tidak dihilangkan (kayaknya gk bakal ada yg ngilangin deh =))) #------------------------------------------------------------------------------- # Term of Use: # - Bila anda menggunakan script ini, tidak perlu credit juga tidak apa-apa, # asalkan anda sopan dan menghargai sesama manusia. #------------------------------------------------------------------------------- # Membuat Effect Sendiri: # - Buat sebuah class baru yang merupakan subclass dari class Sprite_EffecText # > class namaclass < Sprite_EffectText # - Buat constructor dari class itu, yang menerima parameter text, x, y, # delay, color, font, size, bold, italic, shadow ditambah dengan yang anda # perlukan # > def initialize(text, x, y, delay, argumen_saya1, argumen_saya2, # argumen_saya3, color, font, size, bold, italic, shadow) # - Di dalam constructor itu, panggil constructor induk dengan kata kunci super # sebelum anda memulai logika anda # > super(text, x, y, delay, color, font, size, bold, italic, shadow) # - Buat method update, dan panggil super di dalamnya sebelum anda memulai # logika anda # > def update # super # - Lakukan inisialisasi yang anda mau pada method initialize di setelah super # - Lakukan logika efek text pada method update setelah super # - Tambahkan method di bagian Game_Interpreter seperti ini. # > def namafungsi(text, x, y, delay, argumen_saya1, argumen_saya2, # argumen_saya3, color, font, size, bold, italic, shadow) # $game_map.effecttext.add(namaclass.new(text, x, y, delay, argumen_saya1, # argumen_saya2, argumen_saya3, # color, font, size, bold, # italic, shadow)) # end # - Dan selesai. Sekarang anda bisa memanggil fungsi yang anda buat via event # script #------------------------------------------------------------------------------- # Contoh: Membuat Fading Text # - Buat sebuah class misalnya bernama Sprite_FadingText # > class Sprite_FadingText < Sprite_EffectText # - Buat constructor. Karena tidak diperlukan method tambahan, maka parameter # untuk constructor cukup seperti yang dibutuhkan oleh kelas induk. Di dalam # constructor itu, kita panggil constructor kelas induk dengan kata kunci # super. Lalu, karena text akan dimulai dari tidak terlihat(transparan), maka # kita set opacity-nya menjadi 0 # > def initialize(text, x, y, delay, color, font, size, bold, italic, shadow) # super(text, x, y, delay, color, font, size, bold, italic, shadow) # self.opacity = 0 # end # - Buat method update untuk logika efek. Efek yang ingin kita buat adalah, # untuk waktu 1/3 dari waktu yg ditentukan, text perlahan akan muncul, lalu # 1/3 waktu berikutnya, teks diam, kemudian 1/3 waktu terakhir, text # menghilang perlahan. # > def update # super # if @count <= @delay / 3 # self.opacity += 255 / (@delay / 3) # elsif @count <= @delay / 3 * 2 # elsif @count <= @delay # self.opacity -= 255 / (@delay / 3) # end # end # - Lalu, di Game_Interpreter, buat method baru untuk membuat efek teks # > def fadingtext(text, x, y, delay, color = Color.new(255, 255, 255), # font = "Arial", size = 32, bold = false, italic = false, # shadow = false) # $game_map.effecttext.add(Sprite_FadingText.new(text, x, y, delay, color, # font, size, bold, # italic, shadow)) # end # Dan skekarang anda sudah bisa membuat efek fade text via event script dengan # memasukkan script di atas pada event. #=============================================================================== class Sprite_EffectText < Sprite attr_reader :count attr_reader :delay def initialize(text, x, y, delay, color, font, size, bold, italic, shadow) super() @text = text @delay = delay self.x = x self.y = y self.z = 50 self.bitmap = Bitmap.new(544, 416) self.bitmap.font.name = font self.bitmap.font.size = size self.bitmap.font.color = color self.bitmap.font.bold = bold self.bitmap.font.italic = italic self.bitmap.font.shadow = shadow self.bitmap.draw_text(0, 0, 544, self.bitmap.font.size, text) @count = 0 self.visible = true end def update super @count += 1 end end
class Sprite_FadingText < Sprite_EffectText def initialize(text, x, y, delay, color, font, size, bold, italic, shadow) super(text, x, y, delay, color, font, size, bold, italic, shadow) self.opacity = 0 end def update super if @count <= @delay / 3 self.opacity += 255 / (@delay / 3) elsif @count <= @delay / 3 * 2 elsif @count <= @delay self.opacity -= 255 / (@delay / 3) end end end
class Sprite_TintingText < Sprite_EffectText def initialize(text, x, y, delay, tintdelay, color, font, size, bold, italic, shadow) super(text, x, y, delay, color, font, size, bold, italic, shadow) @tintdelay = tintdelay self.opacity = 255 end def update super self.visible = !self.visible if @count % @tintdelay == 0 end end
class Sprite_ZoomingText < Sprite_EffectText def initialize(text, x, y, delay, initzoom_x, initzoom_y, maxzoom_x, maxzoom_y, zoomspeed_x, zoomspeed_y, color, font, size, bold, italic, shadow) super(text, x, y, delay, color, font, size, bold, italic, shadow) @zoomspeed_x = zoomspeed_x @zoomspeed_y = zoomspeed_y @maxzoom_x = maxzoom_x @maxzoom_y = maxzoom_y self.zoom_x = initzoom_x self.zoom_y = initzoom_y end def update super if self.zoom_x < @maxzoom_x && @zoomspeed_x > 0 self.zoom_x += @zoomspeed_x elsif self.zoom_x > @maxzoom_x && @zoomspeed_x < 0 self.zoom_x += @zoomspeed_x else self.zoom_x = @maxzoom_x end if self.zoom_y < @maxzoom_y && @zoomspeed_y > 0 self.zoom_y += @zoomspeed_y elsif self.zoom_y > @maxzoom_y && @zoomspeed_y < 0 self.zoom_y += @zoomspeed_y else self.zoom_y = @maxzoom_y end end end
class EffectText_Manager def initialize @effecttext = [] end def add(effecttext) @effecttext.push(effecttext) end def update for i in 0 ... @effecttext.size next if @effecttext[i] == nil @effecttext[i].update if @effecttext[i].count > @effecttext[i].delay @effecttext[i].dispose @effecttext.delete_at(i) end end end end
class Scene_Map < Scene_Base alias anu_update update def update anu_update $game_map.effecttext.update end end
class Game_Map attr_reader :effecttext alias anu_initialize initialize def initialize anu_initialize @effecttext = EffectText_Manager.new end end
class Game_Interpreter def fadingtext(text, x, y, delay, color = Color.new(255, 255, 255), font = "Arial", size = 32, bold = false, italic = false, shadow = false) $game_map.effecttext.add(Sprite_FadingText.new(text, x, y, delay, color, font, size, bold, italic, shadow)) end def tintingtext(text, x, y, delay, tintdelay = 60, color = Color.new(255, 255, 255), font = "Arial", size = 32, bold = false, italic = false, shadow = false) $game_map.effecttext.add(Sprite_TintingText.new(text, x, y, delay, tintdelay,color, font, size, bold, italic, shadow)) end def zoomingtext(text, x, y, delay, initzoom_x = 0.1, initzoom_y = 0.1, maxzoom_x = 5.0, maxzoom_y = 5.0, zoomspeed_x = 0.1, zoomspeed_y = 0.1, color = Color.new(255, 255, 255), font = "Arial", size = 32, bold = false, italic = false, shadow = false) $game_map.effecttext.add(Sprite_ZoomingText.new(text, x, y, delay, initzoom_x, initzoom_y, maxzoom_x, maxzoom_y, zoomspeed_x, zoomspeed_y, color, font, size, bold, italic, shadow)) end end #===============================================================================
Credits FAQQ: Ga guna. A: Biarin. Q: Bug. A: Lapor. Q: Gk ada efek A. A: Katakan efek A itu bagaimana, mungkin ntar saya bikin.
|