Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # =============================================================================
- # TheoAllen - Variable Window
- # Version : 1.0
- # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
- # (This script documentation is written in informal indonesian language)
- # =============================================================================
- ($imported ||= {})[:Theo_VarWindow] = true
- # =============================================================================
- # CHANGE LOGS:
- # -----------------------------------------------------------------------------
- # 2013.05.21 - Finished Script
- # 2013.05.20 - Started Script
- # =============================================================================
- =begin
- # -------------------------------------------------------------------------
- Perkenalan :
- Script ini untuk membuat sebuah HUD yang berada map yang menampilkan sebuah
- atau beberapa buah variable.
- # -------------------------------------------------------------------------
- Cara penggunaan :
- Pasang di bawah material namun diatas main.
- Dibawah ini adalah beberapa command yang bisa digunakan dalam script call
- # -------------------------------------------------------------------------
- Penambahan list:
- var_window_set(type,id,"name")
- var_window_set(type,id,"name",icon)
- var_window_set(type,id,"name",icon,max)
- var_window_set(type,id,"name",icon,max,color1)
- var_window_set(type,id,"name",icon,max,color1,color2)
- Tiga yang harus diisi adalah type, id, dan nama. Sisanya kek icon dan
- kebelakangnya adalah optional.
- type adalah type variable yang akan kamu tampilkan.
- - :variable >> menampilkan angka variable dengan id tertentu
- - :item >> menampilkan jumlah item dengan id tertentu
- - :armor >> menampilkan jumlah armor dengan id tertentu
- - :weapon >> menampilkan jumlah weapon dengan id tertentu
- Contoh pemulisan dalam script call :
- var_window_set(:variable,2,"Progress :")
- max adalah nilai maksimal yang akan ditampilkan jika kamu memilih dalam HUDmu
- ada nilai maksimalnya
- Color1 dan color2 adalah berupa angka warna. Angka warnanya sama seperti
- angka warna dalam text.
- Catatan Warna-warna :
- - Putih = 00,05,06
- - Merah = 02,10,18,25
- - Biru = 01,04,09,12,16,22
- - Kuning = 06,14,17
- - Hijau = 03,11,24,28,29
- - Abu2 = 07,08
- - Ungu = 13,26,30,31
- - Hitam = 15,19
- - Orange = 20,21
- - Cyan = 23
- - Pink = 27
- Nilai default untuk masing2 jika tidak diisi adalah
- - icon >> 0
- - max >> 100
- - color1 >> 0
- - color2 >> 0
- # -------------------------------------------------------------------------
- Pengurangang list:
- - var_window_del(type,id) >> menghapus list dengan type dan id tertentu
- # -------------------------------------------------------------------------
- Penggantian title window
- - var_window_title(string)
- String adalah text yang ditulis menggunakan double quote.
- Contoh: var_window_title("variable window")
- # -------------------------------------------------------------------------
- Penghapusan semua list
- - var_window_clear >> Untuk ngehapus semua list
- # -------------------------------------------------------------------------
- Mengganti posisi window
- - var_window_pos(posisi)
- posisi adalah berupa angka. List angka yang bisa digunain bisa dilihat di
- konfigurasi
- # -------------------------------------------------------------------------
- Mengganti type penampilan HUD
- - var_window_type(tipe)
- tipe adalah berupa angka. List angka uang bisa digunain bisa diliat di
- konfigurasi
- Terms of use :
- Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
- keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
- dipake buat komersil, jangan lupa, gw dibagi gratisannya.
- =end
- # =============================================================================
- # Konfigurasi :
- # =============================================================================
- module THEO
- module WINDOW
- # =======================================================================
- # Settingan disini adalah settingan inisial (permulaan) waktu new game.
- # =======================================================================
- # =======================================================================
- VAR_WINDOW_TITLE = "Window Variable"
- TITLE_ALIGN = 1
- # -----------------------------------------------------------------------
- # Untuk title HUD. Jika kamu menginginkan tidak ditampilkan judul, bikin
- # double quote kosong ("")
- #
- # Title align adalah penempatan alignment title. Listnya kek gini :
- # - 0 >> Rata kiri
- # - 1 >> Rata tengah
- # - 2 >> Rata kanan
- # =======================================================================
- # =======================================================================
- VAR_WINDOW_FONT_SIZE = 24 # (default : 24)
- VAR_WINDOW_OPACITY = 0 # (default : 0)
- VAR_WINDOW_WIDTH = 200
- # -----------------------------------------------------------------------
- # Font size untuk mengatur besar font.
- # Opacity untuk transparansi (0 - 255)
- # Width adalah lebar window
- # =======================================================================
- # =======================================================================
- VAR_WINDOW_TYPE = 0
- # -----------------------------------------------------------------------
- # Type penampilan HUD. Yang bisa kamu pilih :
- # 0 = name + gauge + current/max
- # 1 = name + gauge only
- # 2 = name + current / max
- # 3 = name + current value only
- # =======================================================================
- # =======================================================================
- VAR_WINDOW_POS = 1
- # -----------------------------------------------------------------------
- # Posisi HUD pas di map. Yang bisa kamu pilih :
- # 0 >> Pojok kiri atas
- # 1 >> Pojok kanan atas
- # 2 >> Pojok kiri bawah
- # 3 >> Pojok kiri atas
- # =======================================================================
- # =======================================================================
- GAUGE_HEIGHT = 16 # (default : 16)
- GAUGE_BORDER = 0 # (default : 1)
- # -----------------------------------------------------------------------
- # REQUIRE / MEMBUTUHKAN : Theo - Gauge Bar Modifier
- # Settingan ini untuk menyeting tinggi gauge dan tebal border
- # =======================================================================
- # =======================================================================
- VARIABLE_ID = {
- # [id,:type ] => [icon , "nama" , max, color1, color2],
- [1 ,:variable] => [0 , "Var1 :", 100, 12, 0],
- [2 ,:item ] => [0 , "Item2 :", 100, 12, 0],
- [3 ,:armor ] => [0 , "Armor3 :", 100, 12, 0],
- }
- # -----------------------------------------------------------------------
- # Ini adalah list variable yang akan ditampilin dalam game
- # type adalah type variable yang akan kamu tampilkan.
- # - :variable >> menampilkan angka variable dengan id tertentu
- # - :item >> menampilkan jumlah item dengan id tertentu
- # - :armor >> menampilkan jumlah armor dengan id tertentu
- # - :weapon >> menampilkan jumlah weapon dengan id tertentu
- # =======================================================================
- # =======================================================================
- VAR_WINDOW_SWITCH = 1
- # -----------------------------------------------------------------------
- # Switch id untuk menampilkan HUD. Jika ON, maka window ini akan
- # ditampilkan
- # =======================================================================
- end
- end
- # =============================================================================
- # Akhir dari konfigurasi. Setelah bagian ini ga usah diedit kecuali ente ngerti
- # =============================================================================
- class Game_System
- attr_accessor :var_window_pos
- attr_accessor :var_window_type
- attr_accessor :var_window_width
- attr_accessor :var_window_opacity
- attr_accessor :var_window_title
- attr_accessor :variable_ids
- alias pre_var_window_init initialize
- def initialize
- pre_var_window_init
- init_var_window_info
- end
- def init_var_window_info
- @var_window_pos = [[THEO::WINDOW::VAR_WINDOW_POS,0].max,3].min
- @var_window_type = [[THEO::WINDOW::VAR_WINDOW_TYPE,0].max,3].min
- @var_window_width = THEO::WINDOW::VAR_WINDOW_WIDTH
- @var_window_opacity = THEO::WINDOW::VAR_WINDOW_OPACITY
- @var_window_title = THEO::WINDOW::VAR_WINDOW_TITLE
- @variable_ids = THEO::WINDOW::VARIABLE_ID
- end
- end
- class Window_Variable < Window_Base
- attr_reader :data
- attr_reader :title
- include THEO::WINDOW
- def initialize
- refresh_information
- width = $game_system.var_window_width
- height = @data.size * VAR_WINDOW_FONT_SIZE + standard_padding * 2 +
- (@title.empty? ? 0 : VAR_WINDOW_FONT_SIZE)
- super(0,0,width,height)
- contents.font.size = VAR_WINDOW_FONT_SIZE
- self.padding = contents.font.size / 2
- update_basic
- refresh
- end
- def update_basic
- update_opacity
- update_position
- end
- def update_opacity
- self.opacity = $game_system.var_window_opacity
- end
- def refresh_information
- @type = $game_system.var_window_type
- @pos = $game_system.var_window_pos
- @data = $game_system.variable_ids.dup
- @title = $game_system.var_window_title
- @variables = {}
- @data.keys.each do |key|
- @variables[key] = to_draw(key)
- end
- end
- def update_position
- case @pos
- when 0 # Pojok kiri atas
- self.x = self.y = 0
- when 1 # Pojok kanan atas
- self.x = Graphics.width - self.width
- self.y = 0
- when 2 # Pojok kiri bawah
- self.y = Graphics.height - self.height
- self.x = 0
- when 3 # Pojok kanan bawah
- self.x = Graphics.width - self.width
- self.y = Graphics.height - self.height
- end
- end
- def refresh
- contents.clear
- y_pos = draw_title
- @data.each do |key,value|
- x_pos = 0
- if value[0] > 0
- draw_icon(value[0],x_pos,y_pos)
- x_pos += 24
- end
- draw_var_window_gauge(x_pos,y_pos,key,value)
- draw_var_window_text(x_pos,y_pos,value[1])
- draw_value(x_pos,y_pos,key,value)
- y_pos += line_height
- end
- end
- def draw_title
- return 0 if @title.empty?
- draw_text(0,0,contents.width,line_height,@title,TITLE_ALIGN)
- return line_height
- end
- def draw_var_window_gauge(x,y,key,value)
- return unless [0,1].any? {|type| type == @type}
- rate = to_draw(key) / value[2].to_f
- draw_gauge(x+GAUGE_BORDER,y,contents.width-x-(GAUGE_BORDER*2),rate,
- color1(value[3]),color2(value[4]))
- end
- def draw_var_window_text(x,y,text)
- draw_text(x,y,contents.width-x,contents.font.size,text)
- end
- def draw_value(x,y,key,value)
- if [0,2].any? {|type| type == @type}
- draw_current_and_max_values(x, y,contents.width-x,to_draw(key),
- value[2], text_color(0), text_color(0))
- elsif @type == 3
- draw_text(x,y,contents.width-x,contents.font.size,to_draw(key),2)
- end
- end
- def to_draw(key)
- case key[1]
- when :variable
- return $game_variables[key[0]]
- when :item
- return $game_party.item_number($data_items[key[0]])
- when :weapon
- return $game_party.item_number($data_weapons[key[0]])
- when :armor
- return $game_party.item_number($data_armors[key[0]])
- else
- return 0
- end
- end
- def line_height
- contents.font.size
- end
- def color1(source)
- text_color(source)
- end
- def color2(source)
- text_color(source)
- end
- def update
- super
- update_visibility
- update_information
- end
- def update_visibility
- self.visible = $game_switches[VAR_WINDOW_SWITCH]
- end
- def update_information
- return unless information_change?
- refresh_information
- update_basic
- refresh
- end
- def information_change?
- @type != $game_system.var_window_type ||
- @pos != $game_system.var_window_pos ||
- @data.keys.any? {|key| @variables[key] != to_draw(key)} ||
- self.opacity != $game_system.var_window_opacity
- end
- if $imported[:Theo_GaugeBar]
- def draw_gauge(x, y, width, rate, color1, color2)
- rate = [[rate,0].max,1.0].min
- fill_w = (width * rate).to_i
- height = GAUGE_HEIGHT
- border = GAUGE_BORDER
- gauge_y = y + line_height - height - 4
- make_bg_color(x-border, gauge_y-border, width+(border*2),height+(border*2),
- border_color)
- make_bg_color(x,gauge_y,width,height,gauge_back_color)
- make_gauge(x, gauge_y, fill_w, height, color1, color2)
- end
- end
- end
- class Game_Interpreter
- def var_window_set(type,id,name,icon = 0,max = 100,color1 = 0,color2 = 0)
- $game_system.variable_ids[id,type] = [icon,name,max,color1,color2]
- end
- def var_window_del(id)
- $game_system.variable_ids.delete([id,type])
- end
- def var_window_clear
- $game_system.variable_ids.clear
- end
- def var_window_pos(pos)
- $game_system.var_window_pos = [[pos,0].min,3].max
- end
- def var_window_type(type)
- $game_system.var_window_type = [[type,0].min,3].max
- end
- def var_window_opacity(op)
- $game_system.var_window_opacity = op
- end
- def var_window_title(title)
- $game_system.var_window_title = title
- end
- end
- class Scene_Map < Scene_Base
- alias pre_var_window_create_all create_all_windows
- def create_all_windows
- pre_var_window_create_all
- create_variable_window
- end
- def create_variable_window
- @var_window.dispose if @var_window
- @var_window = Window_Variable.new
- end
- alias pre_var_window_update update
- def update
- pre_var_window_update
- check_var_window_existence
- end
- def check_var_window_existence
- create_variable_window if information_change?
- end
- def information_change?
- @var_window.data.size != $game_system.variable_ids.size ||
- @var_window.width != $game_system.var_window_width ||
- @var_window.title != $game_system.var_window_title
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment