Jump to content
Rpg²S Forum

Melosx

Utenti
  • Posts

    620
  • Joined

  • Last visited

Posts posted by Melosx

  1. STR33g1_Battle Status 0.5 VXAce Version

     

    Descrizione

    Conversione dello script di Star alla qualle ho aggiunto i TP...

     

    Autore

    Versione VX originale: Star

    Versione VXAce: Melosx

     

    Allegati

     

    Screenshot

    http://i39.tinypic.com/11hrnyg.png

     

    Istruzioni per l'uso

    Copiare sotto materials e sopra main. Inserite le immagini conetenute nel rar nella cartella Graphics/System

     

    Script

     

     

    #==============================================================================
    # ★RGSS2
    # STR33g1_Battle Status  0.5 08/03/20
    # VXAce Version by Melosx 12/03/04
    #
    # ・STR11e has the same specifications.
    # ★STR11eの後付ゲージプラグインを利用することができます。
    #  このスクリプトより下に導入してください。
    #
    # ◇Features
    # ・Different HP/MP/TP Gauge Flavor
    # ・"Rolling" Numbers
    # ・State Icon Cycle
    #
    # ◇Materials
    # This script requires several image skins.
    # Skin images are placed in the .Graphics\System folder.
    #
    # ・Main Skin
    #  HP/MP Back Gauge Skin
    #   No size limit.
    # ・HP/MP Gauge
    #  Normally two gauges
    #   Width = Unlimited
    #  Height = Gauge Height(Optional) * 2
    #  一列目に通常ゲージ、二列目に追尾ゲージを配置します。
    # ・Numbers
    #  0123456789 is the order of number arrays
    #   Width = One Frame Width(Any Size) * 10
    #  Height = Unlimited
    # ・State Skin
    #  State Icon Main Skin
    #  なにもステートが掛かっていない時は非表示になる仕様の為、
    #  Main skin is separate.
    #  No size limit.
    #
    #==============================================================================
    # ■ Window_BattleStatus
    #==============================================================================
    class Window_BattleStatus < Window_Selectable
     # Skin File name
     BTSKIN_00 = "Btskin_main"   # Main Skin
     BTSKIN_01 = "Btskin_hp"		# HP(Gauge)
     BTSKIN_02 = "Btskin_mp"		# MP(Gauge)
     BTSKIN_07 = "Btskin_tp"		 # TP(gauge)
     BTSKIN_04 = "Btskin_n00"	  # HP(Numbers)
     BTSKIN_05 = "Btskin_n01"	  # MP(Numbers)
     BTSKIN_08 = "Btskin_n02"	  # TP(Numbers)
     BTSKIN_03 = "Btskin_state"  # State
     # Skin coordinates[  x,  y]
     BTSKIN_B_XY = [  -5,  3]	   # Standard Coordinates
     BTSKIN_00XY = [  0,  0]		# Main Skin
     BTSKIN_01XY = [157, 14]		# HP(Gauge)
     BTSKIN_02XY = [243, 14]		# MP(Gauge)
     BTSKIN_07XY = [328, 14]		# TP(Gauge)
     BTSKIN_04XY = [175,  0]		# HP(Numbers)
     BTSKIN_05XY = [260,  0]		# MP(Numbers)
     BTSKIN_08XY = [349, 0]		 # TP(Numbers)
     BTSKIN_03XY = [100,  -10]	  # State Skin
     BTSKIN_06XY = [100,  0]		# State
     # Various Settings
     BTSKIN_01GS = 2						# HP Gauge Speed (Low values are fast)
     BTSKIN_02GS = 4						# MP Gauge Speed(Low values are fast)
     BTSKIN_07GS = 4						# TP Gauge Speed(Low values are fast)
     BTSKIN_04SS = 8						# HP Rolling Numbers Speed(Low values are fast)
     BTSKIN_05SS = 2						# MP Rolling Numbers Speed(Low values are fast)
     BTSKIN_08SS = 4						#TP Rolling Numbers Speed(Low values are fast)
     BTSKIN_04NS = 4						# HP Maximum Digits
     BTSKIN_05NS = 4						# MP Maximum Digits
     BTSKIN_08NS = 3						# TP Maximum Digits
     BTSKIN_06WH = [24,24]	# [state Width, Height]
     BTSKIN_06SC = 2						# State Icon Scroll Speed
    													  # (Values close to 1 are fast)
    													  
     # バトルステータス座標
     def set_xy
    	@x = []
    	@y = []
    	for i in 0...$game_party.battle_members.size
    	  x = 0
    	  y = (i * 24)
    	  @x[i] = x + 16#+ STRRGSS2::ST_SX
    	  @y[i] = y + 16#+ STRRGSS2::ST_SY
    	end
     end
     # 設定箇所ここまで
     @@f = false
    
    
     #--------------------------------------------------------------------------
     # ★ エイリアス
     #--------------------------------------------------------------------------
     alias initialize_str33 initialize
     def initialize(f = false)
    	initialize_str33
    	unless @@f
    	  @f = @@f = true
    	else
    	  @f = false
    	end
    	set_xy
    	@s_sprite = []
    	@s_party = []
    	@s_lv = []
    	@opacity = 0
    	self.contents.dispose
    	self.create_contents
    	self.back_opacity = 0
    	self.opacity = 0
    	#@column_max = $game_party.actors.size
    	@viewport = Viewport.new(0, 416-128, 416, 128)
    	@hpgw = (Cache.system(BTSKIN_01)).width
    	@mpgw = (Cache.system(BTSKIN_02)).width
    	@tpgw = (Cache.system(BTSKIN_07)).width
    	@viewport.z = self.z - 1
    	@state_opacity = []
    	@item_max = $game_party.members.size
    	return unless @f
    	for i in 0...@item_max
    	  draw_item(i)
    	end
    	update
     end
     #--------------------------------------------------------------------------
     # ● リフレッシュ潰し
     #--------------------------------------------------------------------------
     def refresh
    	# :-)
     end
     #--------------------------------------------------------------------------
     # ● ステートの描画
     #--------------------------------------------------------------------------
     def draw_actor_state(actor)
    	icon = Cache.system("Iconset")
    	w = actor.states.size * 24
    	w = 24 if w < 1
    	bitmap = Bitmap.new(w, BTSKIN_06WH[1])
    	count = 0
    	for state in actor.states
    	  icon_index = state.icon_index
    	  x = 24 * count
    	  rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    	  bitmap.blt(x, 0, icon, rect)
    	  count += 1
    	end
    	return bitmap
     end
     #--------------------------------------------------------------------------
     # ● 名前作成
     #--------------------------------------------------------------------------
     def name_bitmap(actor)
    	bitmap = Bitmap.new(100, 24)
    	bitmap.font.size = 16
    	bitmap.draw_text(0, 0, 100, 24, actor.name)
    	return bitmap
     end
     #--------------------------------------------------------------------------
     # ● ステート数取得
     #--------------------------------------------------------------------------
     def state_size(actor)
    	return actor.states.size
     end
     #--------------------------------------------------------------------------
     # ● アイテム作成
     #--------------------------------------------------------------------------
     def draw_item(index)
    	return unless @f
    	actor = $game_party.battle_members[index]
    	#
    	@s_sprite[index] = []
    	s = @s_sprite[index]
    	# メインスキン
    	s[0] = Sprite.new(@viewport)
    	s[0].bitmap = Cache.system(BTSKIN_00)
    	s[0].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_00XY[0]
    	s[0].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_00XY[1]
    	s[0].z = 0
    	# HP
    	s[1] = Sprite.new(@viewport)
    	s[1].bitmap = Cache.system(BTSKIN_01)
    	s[1].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    	s[1].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    	s[1].z = 4
    	w = s[1].bitmap.width
    	h = s[1].bitmap.height / 2
    	s[1].src_rect.set(0, 0, w, h)
    	s[2] = Sprite.new(@viewport)
    	s[2].bitmap = Cache.system(BTSKIN_01)
    	s[2].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    	s[2].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    	s[2].z = 3
    	s[2].src_rect.set(0, h, w, h)
    	s[11] = 96
    	s[6] = Sprite_strNumbers.new(@viewport, BTSKIN_04, BTSKIN_04NS)
    	s[6].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_04XY[0]
    	s[6].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_04XY[1]
    	s[6].z = 5
    	s[13] = actor.hp
    	s[6].update(s[13])
    	# MP
    	s[3] = Sprite.new(@viewport)
    	s[3].bitmap = Cache.system(BTSKIN_02)
    	s[3].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    	s[3].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    	s[3].z = 4
    	w = s[3].bitmap.width
    	h = s[3].bitmap.height / 2
    	s[3].src_rect.set(0, 0, w, h)
    	s[4] = Sprite.new(@viewport)
    	s[4].bitmap = Cache.system(BTSKIN_02)
    	s[4].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    	s[4].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    	s[4].z = 3
    	s[4].src_rect.set(0, h, w, h)
    	s[12] = 56
    	s[7] = Sprite_strNumbers.new(@viewport, BTSKIN_05, BTSKIN_05NS)
    	s[7].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_05XY[0]
    	s[7].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_05XY[1]
    	s[7].z = 5
    	s[14] = actor.mp
    	s[7].update(s[14])
    	s[16] = Sprite.new(@viewport)
    	s[16].bitmap = Cache.system(BTSKIN_07)
    	s[16].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_07XY[0]
    	s[16].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_07XY[1]
    	s[16].z = 4
    	w = s[16].bitmap.width
    	h = s[16].bitmap.height / 2
    	s[16].src_rect.set(0, 0, w, h)
    	s[17] = Sprite.new(@viewport)
    	s[17].bitmap = Cache.system(BTSKIN_07)
    	s[17].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_07XY[0]
    	s[17].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_07XY[1]
    	s[17].z = 3
    	s[17].src_rect.set(0, h, w, h)
    	s[20] = 56
    	s[18] = Sprite_strNumbers.new(@viewport, BTSKIN_08, BTSKIN_08NS)
    	s[18].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_08XY[0]
    	s[18].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_08XY[1]
    	s[18].z = 5
    	s[19] = (actor.tp * 100).to_i
    	s[18].update(s[19])
    	# ステート
    	s[5] = Viewport.new(0, 0, BTSKIN_06WH[0], BTSKIN_06WH[1])
    	s[5].rect.x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_06XY[0] + @viewport.rect.x
    	s[5].rect.y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_06XY[1] + @viewport.rect.y
    	s[5].z = @viewport.z + 1
    	s[8] = Sprite.new(@viewport)
    	s[8].bitmap = Cache.system(BTSKIN_03)
    	s[8].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_03XY[0]
    	s[8].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_03XY[1]
    	s[8].z = -2
    	s[9] = Plane.new(s[5])
    	s[9].bitmap = draw_actor_state(actor)
    	s[10] = state_size(actor)
    	# 現在のステータスに
    	s[11] = ((@hpgw * (actor.hp / (actor.mhp * 1.0))) + 1).truncate
    	if actor.mmp != 0
    	  s[12] = ((@mpgw * (actor.mp / (actor.mmp * 1.0))) + 1).truncate
    	else
    	  s[12] = 0
    	end
    	s[20] = ((@tpgw * (actor.tp_rate* 1.0)) + 1).truncate
    	s[15] = Sprite.new(@viewport)
    	s[15].bitmap = name_bitmap(actor)
    	s[15].x = @x[index] + 4
    	s[15].y = @y[index] + 2
    	s[15].z = 0
    	s[1].src_rect.width = s[11]
    	s[2].src_rect.width = s[11]
    	s[3].src_rect.width = s[12]
    	s[4].src_rect.width = s[12]
    	s[16].src_rect.width = s[20]
    	s[17].src_rect.width = s[20]
    	s[6].update(s[13])
    	s[7].update(s[14])
    	s[18].update(s[19])
    	# 不可視に
    	for l in [0,1,2,3,4,8,9,15,16,17]
    	  s[l].opacity = 0
    	end
    	for l in [6,7,18]
    	  s[l].o = 0
    	end
    	# 情報記憶
    	@s_lv[index] = actor.level
    	@s_party[index] = [actor.name, actor.hp, actor.mhp,
    									   actor.mp, actor.mmp, actor.states, actor.tp]
    	#
     end
     #--------------------------------------------------------------------------
     # ● オブジェクト開放
     #--------------------------------------------------------------------------
     def dispose	
    	super
    	return unless @f
    	for i in 0...@s_sprite.size
    	  for l in [0,1,2,3,4,8,9,15,16,17]
    			@s_sprite[i][l].bitmap.dispose
    			@s_sprite[i][l].dispose
    	  end
    	  for l in [5,6,7,18]
    			@s_sprite[i][l].dispose
    	  end
    	end
    	@@f = false
     end
     #--------------------------------------------------------------------------
     # ● フレーム更新
     #--------------------------------------------------------------------------
     def update
    	super
    	return unless @f
    	for i in 0...@s_sprite.size
    	  s = @s_sprite[i]
    	  a = $game_party.battle_members[i]
    	  m = @s_party[i]
    	  @state_opacity[i] = 0 if @state_opacity[i] == nil
    	  # 不透明度アップ
    	  @state_opacity[i] += 8
    	  if @opacity < 272
    			@opacity += 8
    			for l in [0,1,2,3,4,15,16,17]
    			  s[l].opacity = @opacity
    			end
    			for l in [6,7,18]
    			  s[l].o = @opacity
    			end
    	  end
    	  # 名前更新
    	  if a.name != m[0]
    			s[15].bitmap.dispose
    			s[15].bitmap = name_bitmap(a)
    			m[0] = a.name
    	  end
    	  # HP/MP/TP更新
    	  update_hp(s,a,m)
    	  update_mp(s,a,m)
    	  update_tp(s,a,m)
    	  # ステート更新
    	  if s[10] > BTSKIN_06WH[0] / 24 and (Graphics.frame_count % BTSKIN_06SC) == 0
    			s[9].ox += 1
    	  end
    	  if s[10] > 0 and @state_opacity[i] < 272
    			for l in [8,9]
    			  s[l].opacity = @state_opacity[i]
    			end
    	  end
    	  if a.states != m[5]
    			m[5] = a.states
    			s[9].ox = 0
    			s[9].bitmap.dispose
    			s[9].bitmap = draw_actor_state($game_party.members[i])
    			s[10] = state_size($game_party.members[i])
    			@state_opacity[i] = 0
    			for l in [8,9]
    			  s[l].opacity = @state_opacity[i]
    			end
    	  end
    	end
     end
     #--------------------------------------------------------------------------
     # ● フレーム更新 (HP)
     #--------------------------------------------------------------------------
     def update_hp(s,a,m)
    	# HPくるくる
    	if a.hp != s[13]
    	  c = 0; c = 1 if a.hp < a.mhp / 4; c = 2 if a.hp == 0
    	  if s[13] > a.hp
    			s[13] -= BTSKIN_04SS
    			s[13] = a.hp if s[13] < a.hp
    	  else
    			s[13] += BTSKIN_04SS
    			s[13] = a.hp if s[13] > a.hp
    	  end
    	  s[6].update(s[13], c)
    	end
    	# HP
    	if a.hp != m[1]
    	  s[11] = ((@hpgw * (a.hp / (a.mhp * 1.0))) + 1).truncate
    	  m[1] = a.hp
    	end
    	sr = s[1].src_rect
    	if sr.width != s[11]
    	  sp = BTSKIN_01GS
    	  sr.width = (s[11] + (s[1].src_rect.width * (sp - 1))) / sp
    	  sr.width = 2 if sr.width <= 1 and a.hp > 0
    	end
    	sr = s[2].src_rect
    	sp = 2
    	if sr.width != s[1].src_rect.width and (Graphics.frame_count % sp) == 0
    	  if sr.width < s[1].src_rect.width
    			sr.width += 1
    	  else
    			sr.width -= 1
    	  end
    	end
    	sr.width = 2 if sr.width <= 1 and a.hp > 0
     end
     #--------------------------------------------------------------------------
     # ● フレーム更新 (MP)
     #--------------------------------------------------------------------------
     def update_mp(s,a,m)
    	# MPくるくる
    	if a.mp != s[14]
    	  c = 0; c = 1 if a.mp < a.mmp / 4
    	  if s[14] > a.mp
    			s[14] -= BTSKIN_05SS
    			s[14] = a.mp if s[14] < a.mp
    	  else
    			s[14] += BTSKIN_05SS
    			s[14] = a.mp if s[14] > a.mp
    	  end
    	  s[7].update(s[14], c)
    	end
    	# MP
    	if a.mp != m[3]
    	  if a.mmp != 0
    			s[12] = ((@mpgw * (a.mp / (a.mmp * 1.0))) + 1).truncate
    	  else
    			s[12] = 0
    	  end
    	  m[3] = a.mp
    	end
    	sr = s[3].src_rect
    	if sr.width != s[12]
    	  sp = BTSKIN_02GS
    	  sr.width = (s[12] + (s[3].src_rect.width * (sp - 1))) / sp
    	  sr.width = 2 if sr.width <= 1 and a.mp > 0
    	end
    	sr = s[4].src_rect
    	sp = 2
    	if sr.width != s[3].src_rect.width and (Graphics.frame_count % sp) == 0
    	  if sr.width < s[3].src_rect.width
    			sr.width += 1
    	  else
    			sr.width -= 1
    	  end
    	end
    	sr.width = 2 if sr.width <= 1 and a.mp > 0
     end
    
     def update_tp(s,a,m)
    	# TPくるくる
    	if a.tp != s[19]
    	  c = 0; c = 1 if a.tp < 100
    	  if s[19] > a.tp
    			s[19] -= BTSKIN_08SS
    			s[19] = a.tp if s[19] < a.tp
    	  else
    			s[19] += BTSKIN_08SS
    			s[19] = a.tp if s[19] > a.tp
    	  end
    	  s[18].update(s[19].to_i, c)
    	end
    	# TP
    	if a.tp != m[6]
    	  if a.tp != 0
    			s[20] = ((@tpgw * (a.tp_rate * 1.0)) + 1).truncate
    	  else
    			s[20] = 0
    	  end
    	  m[6] = a.tp
    	end
    	sr = s[16].src_rect
    	if sr.width != s[20]
    	  sp = BTSKIN_07GS
    	  sr.width = (s[20] + (s[16].src_rect.width * (sp - 1))) / sp
    	  sr.width = 2 if sr.width <= 1 and a.tp > 0
    	end
    	sr = s[17].src_rect
    	sp = 2
    	if sr.width != s[16].src_rect.width and (Graphics.frame_count % sp) == 0
    	  if sr.width < s[16].src_rect.width
    			sr.width += 1
    	  else
    			sr.width -= 1
    	  end
    	end
    	sr.width = 2 if sr.width <= 1 and a.tp > 0
     end
    
    end
    #==============================================================================
    # ■ Sprite_strNumber
    #==============================================================================
    class Sprite_strNumber < Sprite
     #--------------------------------------------------------------------------
     # ● オブジェクト初期化
     #--------------------------------------------------------------------------
     def initialize(v, gra, n = 0)
    	@n = n
    	super(v)
    	self.bitmap = Cache.system(gra)
    	@w = self.bitmap.width/10
    	@h = self.bitmap.height/3
    	self.src_rect = Rect.new(@n*@w, 0, @w, @h)
     end
     #--------------------------------------------------------------------------
     # ● フレーム更新
     #--------------------------------------------------------------------------
     def update(n = -1, c = 0)
    	@n = n
    	self.src_rect.x = @n*@w
    	self.src_rect.y = c*@h
     end
    end
    #==============================================================================
    # ■ Sprite_strNumbers
    #==============================================================================
    class Sprite_strNumbers
     attr_accessor :x
     attr_accessor :y
     attr_accessor :z
     attr_accessor :o
     #--------------------------------------------------------------------------
     # ● オブジェクト初期化
     #--------------------------------------------------------------------------
     def initialize(v, gra, n = 4, s = 0)
    	@n = n.to_i # 桁数
    	@x = 0
    	@y = 0
    	@z = 0
    	@o = 255
    	@sprite = []
    	# 字間設定
    	b = Cache.system(gra)
    	@s = b.width / 10 - s
    	# スプライト作成
    	for i in 0...n
    	  @sprite[i] = Sprite_strNumber.new(v, gra)
    	end
    	update
     end
     #--------------------------------------------------------------------------
     # ● フレーム更新
     #--------------------------------------------------------------------------
     def update(v = 0, c = 0)
    	val = []
    	# 数値を配列に格納
    	for i in 0...@n
    	  if (10 ** (i)) == 0
    			val[i] = v % 10
    	  else
    			val[i] = v / (10 ** (i)) % 10
    	  end
    	end
    	val = val.reverse
    	# 先頭の0を取り除く
    	for i in 0...@n
    	  if val[i] == 0 and @n != i + 1
    			val[i] = -1
    	  else
    			break
    	  end
    	end
    	# スプライト更新
    	for i in 0...@n
    	  @sprite[i].update(val[i], c)
    	  @sprite[i].x = @x + (i * @s)
    	  @sprite[i].y = @y
    	  @sprite[i].z = @z
    	  @sprite[i].opacity = @o
    	end
     end
     #--------------------------------------------------------------------------
     # ● 不透明度の適用
     #--------------------------------------------------------------------------
     def o=(val)
    	@o = val
    	for i in 0...@n
    	  @sprite[i].opacity = @o
    	end
     end
     #--------------------------------------------------------------------------
     # ● オブジェクト開放
     #--------------------------------------------------------------------------
     def dispose
    	for i in 0...@sprite.size
    	  @sprite[i].bitmap.dispose
    	  @sprite[i].dispose
    	end
     end
    end
    
    
    
    #==============================================================================
    # ■ Scene_Battle
    #==============================================================================
    
    class Scene_Battle
    
     def update_info_viewport
    	return 0
     end
    
     def create_status_window
    	@status_window = Window_BattleStatus.new
    	@status_window.x = 0
     end
    
     def create_info_viewport
    	@info_viewport = Viewport.new
    	@info_viewport.rect.y = Graphics.height - @status_window.height
    	@info_viewport.rect.height = @status_window.height
    	@info_viewport.z = 100
    	@info_viewport.ox = 0
    	@status_window.viewport = @info_viewport
     end
    
     def create_actor_command_window
    	@actor_command_window = Window_ActorCommand.new
    	@actor_command_window.viewport = @info_viewport
    	@actor_command_window.set_handler(:attack, method(:command_attack))
    	@actor_command_window.set_handler(:skill,  method(:command_skill))
    	@actor_command_window.set_handler(:guard,  method(:command_guard))
    	@actor_command_window.set_handler(:item,   method(:command_item))
    	@actor_command_window.set_handler(:cancel, method(:prior_command))
    	@actor_command_window.x = 416
     end
    
    
     def create_party_command_window
    	@party_command_window = Window_PartyCommand.new
    	@party_command_window.viewport = @info_viewport
    	@party_command_window.x = 416
    	@party_command_window.set_handler(:fight,  method(:command_fight))
    	@party_command_window.set_handler(:escape, method(:command_escape))
    	@party_command_window.unselect
     end
    
    end
    

     

     

     

    Bugs e Conflitti Noti

    Inserite qui il testo (obbligatorio, se non ci sono bugs o conflitti conosciuti scrivete N/A)

     

    Altri Dettagli

    Funziona con Tankentai e altri SBS.
  2. Database Script
    Ultimo Aggiornamento: 31/08/2014
    !! AGGIORNAMENTO IN CORSO !!


    Modifiche Party/Eroe - 1



    Battle System - 4



    Battle System Add-On - 1



    Menu Personalizzati - 2



    Menu Add-On - 3



    Modifiche Grafica - 8



    Modifiche Audio - 0

    -



    Modifiche Gameplay - 22



    Sistemi Completi - 3



    Altro - 11



    Totale Script: 55 !! 30% circa del totale degli script presenti nella sezione. !!

  3. MSX - Scene_Menu MOD

    Descrizione

     

    Nuova veste del Menu.

     

    Autore

     

    Melosx

     

     

    Istruzioni per l'uso

     

    Copiare sotto Materials e sopra Main.

     

    Screenshot

     

    http://i44.tinypic.com/rlx4ec.png

     

     

    Script

     

    #=============================================================================
    # ** MSX - Scene_Menu MOD
    #=============================================================================
    # Author: Melosx
    # Version: 2.0 Beta 1
    # Release Date: 06-01-2012 => v1.0
    #			   13-06-2012 => v2.0 Beta 1
    #
    #=============================================================================
    # * Instructions
    #-----------------------------------------------------------------------------
    # Copy the script below Materials and above Main.
    #
    #=============================================================================
    # * Rewrite
    #-----------------------------------------------------------------------------
    #
    # Window_Base:
    #
    #	    def draw_character
    #	    def draw_actor_graphic
    #	    def draw_gauge
    #
    #=============================================================================
    # * Add
    #-----------------------------------------------------------------------------
    #
    # Window_Base:
    #
    #	    def draw_actor_exp_gauge
    #
    #==============================================================================
    
    
    
    module MSX
    
    
    #==============================================================================#
    #=============================CONFIGURATION START==============================#
    #==============================================================================#
    
     ACTIVE_MEMBERS = 4 # Default -> 4. Number ofactive member in menu.
    
     USE_GRAPHIC = true # true/false - Use/Not use graphic
     USE_FACE = true    # true/false - Use/Not use face.
    
     MAIN_X = 50 # General x coordinate
     MAIN_Y = 0 # General y coordinate
    
    
     # FACE
    
     FACE_X = 1 # Actor Face x coordinate
     FACE_Y = 1 # Actor Face y coordinate
    
     FACE_HEIGHT = 64 # Actor Face height
    
    
     # GRAPHIC
    
     GRAPHIC_X = 24 # Actor Graphic x coordinate
     GRAPHIC_Y = 52 # Actor Graphic y coordinate
    
    
     # GAUGE STYLE
    
     GAUGE_HEIGHT = 6 # HP/MP Gauge width
     GAUGE_BORDER = true # HP/MP Gauge Border
    
    
     # HP
    
     HP_X = 170 # Gauge x coordinate
     HP_Y = 20 # Gauge y coordinate
    
     HP_WIDTH = 130 # Gauge width
    
     HP_TYPE = 0 # 0 -> default; 1 -> center; 2 -> inverse;
    
    
     # MP
    
     MP_X = 175 # Gauge x coordinate
     MP_Y = 44 # Gauge y coordinate
    
     MP_WIDTH = 130 # Gauge width
    
     MP_TYPE = 0 # 0 -> default; 1 -> center; 2 -> inverse;
    
    
     # EXP
    
     EXP_GAUGE_X = 345 # Gauge x coordinate
     EXP_GAUGE_Y = 44 # Gauge y coordinate
    
     EXP_GAUGE_WIDTH = 90 # Gauge width
     EXP_GAUGE_HEIGHT = 6 # Gauge height
    
     EXP_INFO_X = 340 # Exp Info x coordinate
     EXP_INFO_Y = 18 # Exp Info y coordinate
    
    
     # NAME
    
     NAME_X = 0 # Name x coordinate
     NAME_Y = 0 # Name y coordinate
    
    
     # NICKNAME
    
     NICK_X = 0 # Nickname x coordinate
     NICK_Y = 20 # Nickname y coordinate
    
    
     # LEVEL
    
     LVL_X = 290 # Level x coordinate
     LVL_Y = 0 # Level y coordinate
    
    
     # CLASS
    
     CLASS_X = 100 # Class x coordinate
     CLASS_Y = 0 # Class y coordinate
    
    
     # STATE
    
     STATE_X = 50 # State x coordinate
     STATE_Y = 0 # State y coordinate
     STATE_NUMBER = 6 # Number of state
    
    
    #==============================================================================#
    #==============================CONFIGURATION END===============================#
    #==============================================================================#
    end
    
    
    #==============================================================================
    # ** Game_Party
    #==============================================================================
    
    class Game_Party < Game_Unit
    
     def menu_members
       all_members[0, MSX::ACTIVE_MEMBERS].select {|actor| actor.exist? }
     end
    
    end
    
    
    #==============================================================================
    # ** Scene_Menu
    #==============================================================================
    class Scene_Menu < Scene_MenuBase
    
     def start
       super
       create_command_window
       create_gold_window
       create_status_window
     end
    
     def create_gold_window
       @gold_window = Window_MenuPlus_Horz.new
       @gold_window.x = 0
       @gold_window.y = Graphics.height - @gold_window.height
     end
    
     def create_status_window
       @status_window = Window_MenuStatus.new(0, 48)
     end
    
    end
    
    
    #==============================================================================
    # ** Window_MenuCommand
    #==============================================================================
    class Window_MenuCommand < Window_Command
    
     def initialize
       super(0, 0)
       self.contents.font.size = 16
       select_last
     end
    
     def visible_line_number
       return 1
     end
    
     def col_max
       return 7
     end
    
     def spacing
       return 4
     end
    
     def window_width
       return 544
     end
    
     def window_height
       return 48
     end
    
    end
    
    
    
    #==============================================================================
    # ** Window_MenuStatus
    #==============================================================================
    class Window_MenuStatus < Window_Selectable
     attr_reader   :pending_index
    
     def initialize(x, y)
       super(x, y, window_width, window_height)
       self.contents.font.size = 16
       @pending_index = -1
       refresh
     end
    
     def window_width
       544
     end
    
     def window_height
       320
     end
    
     def draw_item(index)
       actor = $game_party.members[index]
       enabled = $game_party.menu_members.include?(actor)
       rect = item_rect(index)
       draw_item_background(index)
       if MSX::USE_FACE
      draw_actor_menu_face(actor, rect.x + MSX::FACE_X, rect.y + MSX::FACE_Y, enabled)
      draw_actor_simple_status(actor, rect.x + MSX::MAIN_X, rect.y + MSX::MAIN_Y)
       else
      draw_actor_simple_status(actor, rect.x + MSX::MAIN_X, rect.y + MSX::MAIN_Y)
       end
       if MSX::USE_GRAPHIC
      draw_actor_graphic(actor, MSX::GRAPHIC_X, rect.y + MSX::GRAPHIC_Y, enabled)
       end
     end
    
     def draw_actor_simple_status(actor, x, y)
       draw_actor_name(actor, x + MSX::NAME_X, y + MSX::NAME_Y)
       draw_actor_nickname(actor, x + MSX::NICK_X, y + MSX::NICK_Y, 160)
       draw_actor_level(actor, x + MSX::LVL_X, y + MSX::LVL_Y)
       draw_actor_icons(actor, MSX::STATE_X, MSX::STATE_Y + line_height * 2, MSX::STATE_NUMBER * 24)
       draw_actor_class(actor, x + MSX::CLASS_X, y + MSX::CLASS_Y)
       draw_actor_hp(actor, x + MSX::HP_X, y + MSX::HP_Y, MSX::HP_WIDTH, MSX::HP_TYPE)
       draw_actor_mp(actor, x + MSX::MP_X, y + MSX::MP_Y, MSX::MP_WIDTH, MSX::MP_TYPE)
       draw_actor_exp_gauge(actor, x + MSX::EXP_GAUGE_X,  y + MSX::EXP_GAUGE_Y, MSX::EXP_GAUGE_WIDTH)
       draw_exp_info(actor, x + MSX::EXP_INFO_X, y + MSX::EXP_INFO_Y)
     end
    
     def draw_actor_class(actor, x, y, width = 112)
       change_color(system_color)
       draw_text(x, y, 52, line_height, "Class:")
       change_color(normal_color)
       draw_text(x + 54, y, width, line_height, actor.class.name)
     end
    
     def draw_exp_info(actor, x, y)
       self.contents.font.color = text_color(0)
       if actor.level != 99
      s1 = actor.exp - actor.current_level_exp
      s2 = actor.next_level_exp - actor.current_level_exp
       else
      s1 = "-"
      s2 = "-"
       end
       exp = s1.to_s + " / " + s2.to_s
       change_color(system_color)
       draw_text(x, y, 100, line_height, "Experience")
       change_color(normal_color)
       draw_text(x, y + 12, 100, line_height, exp, 2)
     end
    
    end
    
    
    
    #==============================================================================
    # ** Window_Base
    #==============================================================================
    class Window_Base < Window
    
     def draw_menu_face(face_name, face_index, x, y, enabled = true)
       bitmap = Cache.face(face_name)
       rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, MSX::FACE_HEIGHT)
       contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
       bitmap.dispose
     end
    
     def draw_actor_menu_face(actor, x, y, enabled = true)
       draw_menu_face(actor.face_name, actor.face_index, x, y, enabled)
     end
    
     def draw_character(character_name, character_index, x, y, enabled=true)
       return unless character_name
       bitmap = Cache.character(character_name)
       sign = character_name[/^[\!\$]./]
       if sign && sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
       else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
       end
       n = character_index
       src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
       contents.blt(x - cw / 2, y - ch, bitmap, src_rect, enabled ? 255 : translucent_alpha)
     end
    
     def draw_actor_graphic(actor, x, y, enabled=true)
       draw_character(actor.character_name, actor.character_index, x, y, enabled)
     end
    
     def draw_gauge(x, y, width, rate, color1, color2, type = 0)
       fill_w = (width * rate).to_i
       gauge_y = y + line_height - 8
       if MSX::GAUGE_BORDER
      contents.fill_rect(x - 2, gauge_y - 2, width + 4, MSX::GAUGE_HEIGHT + 4, gauge_back_color)
      contents.fill_rect(x - 1, gauge_y - 1, width + 2, MSX::GAUGE_HEIGHT + 2, normal_color)
       end
       case type
      when 0
        contents.fill_rect(x, gauge_y, width, MSX::GAUGE_HEIGHT, gauge_back_color)
        contents.gradient_fill_rect(x, gauge_y, fill_w, MSX::GAUGE_HEIGHT, color1, color2)
      when 1
        gr_x = x + (width - fill_w) / 2
        contents.fill_rect(x, gauge_y, width, MSX::GAUGE_HEIGHT, gauge_back_color)
        contents.gradient_fill_rect(gr_x, gauge_y, fill_w, MSX::GAUGE_HEIGHT, color1, color2)
      when 2
        gr_x = x + (width - fill_w)
        contents.fill_rect(x, gauge_y, width, MSX::GAUGE_HEIGHT, gauge_back_color)
        contents.gradient_fill_rect(gr_x, gauge_y, fill_w, MSX::GAUGE_HEIGHT, color1, color2)
       end
     end
    
     def draw_actor_hp(actor, x, y, width = 124, type = 0)
       draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2, type)
       change_color(system_color)
       draw_text(x, y, 30, line_height, Vocab::hp_a)
       draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
      hp_color(actor), normal_color)
     end
      
     def draw_actor_mp(actor, x, y, width = 124, type = 0)
       draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2, type)
       change_color(system_color)
       draw_text(x, y, 30, line_height, Vocab::mp_a)
       draw_current_and_max_values(x, y, width, actor.mp, actor.mmp,
      mp_color(actor), normal_color)
     end
    
     def draw_actor_exp_gauge(actor, x, y, width = 100)
       if actor.level != 99
      s1 = actor.exp - actor.current_level_exp
      s2 = actor.next_level_exp - actor.current_level_exp
      gw = width * s1 / s2
       else
      gw = 0
       end
       gc1 = text_color(14)
       gc2 = text_color(6)
       self.contents.fill_rect(x - 1, y - 1, width + 4, MSX::EXP_GAUGE_HEIGHT + 4, gauge_back_color)
       self.contents.fill_rect(x, y, width + 2, MSX::EXP_GAUGE_HEIGHT + 2, normal_color)
       self.contents.fill_rect(x + 1, y + 1, width, MSX::EXP_GAUGE_HEIGHT, gauge_back_color)
       self.contents.gradient_fill_rect(x + 1, y + 1, gw, MSX::EXP_GAUGE_HEIGHT, gc1, gc2)
     end
    
    end
    
    
    
    #==============================================================================
    # ** Window_MenuPlus_Horz
    #==============================================================================
    class Window_MenuPlus_Horz < Window_Base
    
     def initialize
       super(0, 0, window_width, fitting_height(1))
       self.contents.font.size = 16
       refresh
     end
    
     def update
       super
       sec = (Graphics.frame_count / Graphics.frame_rate) % 60
       if sec > @total_sec % 60 or sec == 0
      refresh
       end
     end
    
     def window_width
       return 544
     end
    
     def refresh
       contents.clear
       draw_currency_value(value, currency_unit, 4, 0, 120)
       draw_text(4, 0, 120, line_height, "Gold:", 0)
       draw_text(195, 0, 120, line_height, "Steps:", 0)
       draw_text(390, 0, 120, line_height, "Time:", 0)
       change_color(normal_color)
       draw_text(195, 0, 120, line_height, $game_party.steps, 2)
       @total_sec = Graphics.frame_count / Graphics.frame_rate
       ora = @total_sec / 60 / 60
       min = @total_sec / 60 % 60
       sec = @total_sec % 60
       tempo = sprintf("%02d:%02d:%02d", ora, min, sec)
       draw_text(390, 0, 120, line_height, tempo, 2)
     end
    
     def value
       $game_party.gold
     end
    
     def currency_unit
       Vocab::currency_unit
     end
    
     def open
       refresh
       super
     end
    
    end
    

     

     

    Bugs e Conflitti Noti

     

    N/A
  4. MSX - Bars Type

    Descrizione

    Due nuovi tipi di barra.

     

    Autore

    Melosx

     

     

    Screnshot

    http://i42.tinypic.com/10mifjt.png

     

    Istruzioni per l'uso

    Inserire lo script sopra Main e sotto Materials

     

    Script

     

    #=============================================================================
    # ** MSX - Bars Type
    #=============================================================================
    # Autore: Melosx
    # Versione: 1.0 => 13-1-2012
    #
    #=============================================================================
    # * Istruzioni
    #-----------------------------------------------------------------------------
    # Aggiunge due nuovi tipi di barre. Questi nuovi tipi vanno settati inserendo 0, 1 o 2 nel codice
    # che disegna le barre. Di default è settato 0 cioè il tipo di barra di default.
    #
    #==============================================================================
    
    
    
    class Window_Base < Window
    
      def draw_gauge(x, y, width, rate, color1, color2, type = 0)
    	case type
    	when 0
    	  fill_w = (width * rate).to_i
    	  gauge_y = y + line_height - 8
    	  contents.fill_rect(x, gauge_y, width, 6, gauge_back_color)
    	  contents.gradient_fill_rect(x, gauge_y, fill_w, 6, color1, color2)
    	when 1
    	  fill_w = (width * rate).to_i
    	  gauge_y = y + line_height - 8
    	  gr_x = x + (width - fill_w) / 2
    	  contents.fill_rect(x, gauge_y, width, 6, gauge_back_color)
    	  contents.gradient_fill_rect(gr_x, gauge_y, fill_w, 6, color1, color2)
    	when 2
    	  fill_w = (width * rate).to_i
    	  gauge_y = y + line_height - 8
    	  gr_x = x + (width - fill_w)
    	  contents.fill_rect(x, gauge_y, width, 6, gauge_back_color)
    	  contents.gradient_fill_rect(gr_x, gauge_y, fill_w, 6, color1, color2)
    	end
      end
    
      def draw_actor_hp(actor, x, y, width = 124, type = 0)
    	draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2, type)
    	change_color(system_color)
    	draw_text(x, y, 30, line_height, Vocab::hp_a)
    	draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
    	  hp_color(actor), normal_color)
    	end
      
      def draw_actor_mp(actor, x, y, width = 124, type = 0)
    	draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2, type)
    	change_color(system_color)
    	draw_text(x, y, 30, line_height, Vocab::mp_a)
    	draw_current_and_max_values(x, y, width, actor.mp, actor.mmp,
    	  mp_color(actor), normal_color)
    	end
      
      def draw_actor_tp(actor, x, y, width = 124, type = 0)
    	draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2, type)
    	change_color(system_color)
    	draw_text(x, y, 30, line_height, Vocab::tp_a)
    	change_color(tp_color(actor))
    	draw_text(x + width - 42, y, 42, line_height, actor.tp.to_i, 2)
      end
    
    end
    

     

     

    Bugs e Conflitti Noti

    N/A
  5. Le mappe sono vuote dovresti riempirle... I tileset sono un miscuglio tra RTP e Mack il che non sta molto bene perchè sono stile diversi... Nel posto dove l'anima sceglie il corpo devi agiungere il bordo di luce anche alla vasca d'acqua perchè cosi non sembra avere profondita da quel lato... non capisco il senso dei lampioni nel tra gli alberi in riva ad un fiume/lago/mare... La trama per quanto poca tu ne abbia esposto sembra buona ma devi migliorare il mapping... non dico a livelli ultra ma riempire e diversificare il terreno... erba, pietre, alberi, foglie usali un po di più...
  6. puoi fare in modo che controlli su che versione gira lo script...

    per esempio

    if File.exists?("Data/Script.rvdata") # File script del vx

    $scene = nil

    else # se non c'è vuol dire che sei sull'ace

    SceneManager.exit

    end

    Sperodi aver scritto giusto il codice...

  7. Bello script holy ma non è compatibile al 100% con l'ace...

    In questo pezzo

    #metodo per chiudere il gioco
     def self.terminate
        $scene = nil
     end
    

    trovi $scene... e bene questo metodo per gestire le scene non esiste piu nell'ace ma devi usare lo SceneManager ed in questo caso il codice SceneManager.exit per chiudere il gioco....

  8. avevo trovatp un sistema su un proj giapponese che stavo per convertire ma l'ho perso devo ritrovarlo perche' era veramente un granbel sistema... vedro di mettere in pratoico quello che ho appreso sul vx nel vx ace... Alla prossima con il topic di Virtua Quest...
×
×
  • Create New...