Noob Saibot 38 Report post Posted April 14, 2010 We search for it on RMXP.net Archive and bring it back to life here: FOR HELP SEE ORIGINAL POST link below. He talks about required images which he did not post; sorry! Is my menu it have a options system (skin chooser, BGM and SE volume), have a minimap, help, and a custom tips system. You need the atached images in the bottom Original: Designed for PK Edition of RMXP #----------------------------------------------------------------- # Slipknot's Menu # created by Slipknot #----------------------------------------------------------------- class Scene_Menu #----------------------------------------------------------------- def initalize (menu_index = 0) @menu_index = menu_index end #----------------------------------------------------------------- def main opa = 180 @spriteset = Spriteset_Map.new s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Status"; s5 = "Save" s8 = "Exit"; s7 = "Options"; s6 = "Map";@tip = rand(4) @command = WCommand.new (152,[s1,s2,s3,s4,s5,s6,s7,s8],1) @command.index = @menu_index @command.x = 320 - @command.width/2 @command.y = 480 - @command.height @command.opacity = opa if $game_party.actors.size == 0 @command.dis(1,1); @command.dis(2,1); @command.dis(3,1) end if $game_system.save_disabled @command.dis(4,1) end if itemdis; @command.dis(0,1); end @playtime = PlayTime.new @playtime.opacity = opa @help = MenuWin.new(22,$defaultfonttype,opa) @help.y = 480 - @help.height; @help.x = 640 - @help.width @tips = MenuWin.new(20,"Arial",opa) @tips.y = 480 - @tips.height @imagen = Sprite.new @imagen.bitmap=RPG::Cache.picture("necro2") ox = @imagen.bitmap.width/2 oy = @imagen.bitmap.height/2 @opt = Window_Command.new(160,["Skin","BGM volumen","SE volumen"]) @skin = Window_Command.new(100,["Black","Blue","Red"]) @bgm = Slipknot_Slider.new("BGM") @bgm.index = $game_system.bgm_volume @se = Slipknot_Slider.new("SE") @se.index = $game_system.se_volume yo = 240 - @opt.height/2 xo = 16 xox = xo + @opt.width visact(@opt,false); @opt.x = xo; @opt.y = yo visact(@skin,false); @skin.x = xox; @skin.y = yo visact(@bgm,false); @bgm.x = xox; @bgm.y = yo visact(@se,false); @se.x = xox; @se.y = yo @optwins = [@opt,@skin,@bgm,@se] for i in @optwins; i.z = @command.z + 100; i.opacity = opa; end @imagen.x = 320 - ox @imagen.y = 240 - oy @imagen.opacity = 110 @gold = Gold.new; @gold.x = 440 @gold.y = 0; @gold.opacity = opa @status = Window_MenuStatus.new @status.x = 56; @status.y = 0 @status.z = 2000; @status.visible = false @wins = [@command,@status,@gold,@playtime,@help, @tips,@imagen,@opt,@skin,@bgm,@se] Graphics.transition loop do Graphics.update; Input.update; update if $scene != self; break; end end Graphics.freeze; @spriteset.dispose for i in @wins; i.dispose; end end #----------------------------------------------------------------- def update for i in @wins; i.update; end update_tips if @command.active; update_command update_help; return end if @status.active; update_status; return; end if @opt.active; update_opt; return; end if @sbs; update_sbs; return; end end #----------------------------------------------------------------- def update_opt if Input.trigger?(Input::B) visact(@opt,false) @command.active = true end if Input.trigger?(Input::C) case @opt.index when 0; optacc(@skin) when 1; optacc(@bgm) when 2; optacc(@se) end; return end end #----------------------------------------------------------------- def optacc(w) @opt.active = false; @sbs = true; visact(w,true) end #----------------------------------------------------------------- def update_sbs if Input.trigger?(Input::B) case @opt.index when 0; optcan(@skin) when 1; optcan(@bgm) when 2; optcan(@se) end end case @opt.index when 1; volacc(1,@bgm.index); return when 2; volacc(2,@se.index); return end if Input.trigger?(Input::C) and @skin.active case @skin.index when 0; skinacc("SlipBlack","SlipBlack") when 1; skinacc("SlipBlue","SlipBlue") when 2; skinacc("SlipRed","SlipRed") end return end end #----------------------------------------------------------------- def volacc(pla,vol) case pla; when 1 $game_system.bgm_volume = vol when 2 $game_system.se_volume = vol end end #----------------------------------------------------------------- def skinacc(sk1,sk2) $game_system.se_play($data_system.decision_se) $game_system.windowskin_name = sk1 $game_system.namewindowskin_name = sk2 end #----------------------------------------------------------------- def optcan(w) visact(w,false); @opt.active = true; @sbs = false end #----------------------------------------------------------------- def update_help case @command.index when 0 if itemdis; a = "(You don't have any)" else; a = ""; end @help.ref("See the party's items.",a) when 1; @help.ref("See the party's skills.","") when 2; @help.ref("See and change the party's","equipment.") when 3; @help.ref("See the complete status of","the party.") when 4; @help.ref("Saves the game.","") when 5; @help.ref("View the current map.","") when 6; @help.ref("Change some settings like","the volume and skin.") when 7; @help.ref("Restart or exits the game.","") end end #----------------------------------------------------------------- def update_tips case @tip when 0; @tips.ref("Use the potions only when","you really are in danger.") when 1; @tips.ref("Put attention when someone","is near to reach a new level.") when 2; @tips.ref("Constantly save the game.","") when 3; @tips.ref("Always keep in your bag","items like potions & revives.") when 4; @tips.ref("If you found a new town","talk with everybody.") end end #----------------------------------------------------------------- def itemdis @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0; @data.push($data_items[i]); end end for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0; @data.push($data_weapons[i]); end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0; @data.push($data_armors[i]); end end if @data.size == 0; return true; end end #----------------------------------------------------------------- def update_command if Input.trigger?(Input::B) $game_system.se_play ($data_system.cancel_se) $scene = Scene_Map.new; return end if Input.trigger?(Input::C) if $game_party.actors.size == 0 and @command.index == 1..3 $game_system.se_play ($data_system.buzzer_se) return end case @command.index when 0 if itemdis $game_system.se_play($data_system.buzzer_se); return end; comacc(Menu_Item) when 1..3 $game_system.se_play ($data_system.decision_se) @command.active = false; @status.index = 0 visact(@status,true) when 4 if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end; comacc(Scene_Save) when 5 $game_system.se_play($data_system.decision_se) $scene = Scene_Minimap.new(1) when 6 $game_system.se_play($data_system.decision_se) @opt.index = 0; visact(@opt,true) @command.active=false when 7; comacc(Scene_End); end return end end #----------------------------------------------------------------- def comacc(a) $game_system.se_play($data_system.decision_se); $scene = a.new end #----------------------------------------------------------------- def visact(w,tf) w.visible = tf; w.active = tf end #----------------------------------------------------------------- def update_status if Input.trigger?(Input::B) $game_system.se_play ($data_system.cancel_se) @command.active = true visact(@status,false) @status.index = -1 return end if Input.trigger?(Input::C) case @command.index when 1 if $game_party.actors[@status.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end statacc(Scene_Skill) when 2; statacc(Scene_Equip) when 3; statacc(Scene_Status) end return end end #----------------------------------------------------------------- def statacc(a) $game_system.se_play($data_system.decision_se); $scene = a.new(@status.index) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class PlayTime < Window_Base #----------------------------------------------------------------- def initialize super (0,0,200,80) self.contents = Bitmap.new (width - 32, height - 32) self.contents.font.size = $defaultfontsize self.contents.font.name = $defaultfonttype refresh end #----------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text (4,0,120,32,"Elapsed Time") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60; min = @total_sec /60 % 60 sec = @total_sec % 60 text = sprintf ("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text (10, 24, 120, 28, text, 2) end #----------------------------------------------------------------- def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Gold < Window_Base #----------------------------------------------------------------- def initialize super (0,0,200,80) self.contents = Bitmap.new (width - 32, height - 32) self.contents.font.size = $defaultfontsize self.contents.font.name = $defaultfonttype if $game_party.gold < 1 icon = RPG::Cache.icon("") elsif $game_party.gold < 100 icon = RPG::Cache.icon("gold1") elsif $game_party.gold < 250 icon = RPG::Cache.icon("gold2") elsif $game_party.gold < 500 icon = RPG::Cache.icon("gold3") elsif $game_party.gold < 1000 icon = RPG::Cache.icon("gold4") else icon = RPG::Cache.icon("gold5") end gold = $game_party.gold.to_s unless gold.size > 4; money = gold else case gold.size when 5 ary = gold.slice!(0,2) money = ary + ","+ gold when 6 ary = gold.slice!(0,3) money = ary + ","+ gold when 7 ary1 = gold.slice!(0,4) ary2 = ary1.slice!(1,4) money = ary1 + ","+ ary2 +","+ gold end end self.contents.draw_text (0,5,130,32, money.to_s, 2) self.contents.blt(130,8,icon,Rect.new(0,0,24,24)) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Window_MenuStatus < Window_Selectable #----------------------------------------------------------------- def initialize super (0, 0, 528, 480) self.opacity = 210 self.contents = Bitmap.new (width - 32, height - 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize refresh self.active = false; self.index = -1 end #------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 94; y = i * 116 actor = $game_party.actors[i] self.contents.draw_text(x,y,160,32,actor.name.upcase) draw_actor_class (actor, x+230, y) draw_actor_level (actor, x, y+32) draw_actor_state (actor, x+90, y+32) draw_actor_exp (actor, x, y+64) draw_actor_hpg (actor, x+230, y+35, 120,16) draw_actor_spg (actor, x+230, y+69,120,16) end end #------------------------------------------------------------- def update_cursor_rect if @index < 0; self.cursor_rect.empty else; self.cursor_rect.set(0,@index * 116,self.width-32,96); end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class MenuWin < Window_Base #----------------------------------------------------------------- def initialize(fosi,fona,opa) super(0,0,247,88); self.opacity = opa self.contents = Bitmap.new (width - 32, height - 32) self.contents.font.size = fosi; self.contents.font.name = fona ref("","") end #----------------------------------------------------------------- def ref(txt,txt2) self.contents.clear self.contents.draw_text(0,0,214,28,txt) self.contents.draw_text(0,28,214,28,txt2) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Slipknot_Slider < Window_Base #----------------------------------------------------------------- def initialize(text = "") super(0,0,160,290) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize self.active = false; @text = text if @index == nil; @index = 0; end @item_max = 100; self.visible = false @scale = 2; refresh end #----------------------------------------------------------------- def index=(index) @index = index; refresh end #----------------------------------------------------------------- def index return @index end #----------------------------------------------------------------- def refresh self.contents.clear self.contents.draw_text(0,0,128,24,@text+" volume",1) self.contents.draw_text(30,32,80,24,"0%") self.contents.draw_text(30,82,80,24,"25%") self.contents.draw_text(30,132,80,24,"50%") self.contents.draw_text(30,182,80,24,"75%") self.contents.draw_text(30,232,80,24,"100%") curhei = 18; mish = @item_max * @scale + curhei self.contents.fill_rect(0,32,20,mish+8,Color.new(200,200,200,140)) self.contents.fill_rect(2,34,16,mish+4,Color.new(128,128,128,190)) self.contents.fill_rect(4,36,12,mish,Color.new(64,64,64,190)) y = (@index*(@item_max*@scale))/@item_max + 36 self.contents.fill_rect(3,y,14,curhei, Color.new(100,100,100,215)) self.contents.fill_rect(6,y+4,8,curhei - 8, Color.new(90,90,90,215)) end #----------------------------------------------------------------- def update if $game_system.windowskin_name != @windowskin_name @windowskin_name = $game_system.windowskin_name self.windowskin = RPG::Cache.windowskin(@windowskin_name) end if self.active and @item_max > 0 if Input.repeat?(Input::UP) if @index != 0 case @text when "BGM" @index -= 5 $game_system.bgm_play($game_system.bgm_memorize) when "SE" $game_system.se_play($data_system.decision_se) @index -= 5 end; return end $game_system.se_play($data_system.buzzer_se) end if Input.repeat?(Input::DOWN) if @index < @item_max case @text when "BGM" @index += 5 $game_system.bgm_play($game_system.bgm_memorize) when "SE" $game_system.se_play($data_system.decision_se) @index += 5 end; return end $game_system.se_play($data_system.buzzer_se) end refresh; return end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class WCommand < Window_Selectable #----------------------------------------------------------------- def initialize(width, commands,pos=0) super(0,0,width,commands.size*32+32) @item_max = commands.size @commands = commands self.contents = Bitmap.new(width-32,@item_max*32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize @pos = pos; refresh; self.index = 0 end #----------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max; draw_item(i, normal_color); end end #----------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new(4,32*index, self.contents.width-8,32) self.contents.fill_rect(rect, Color.new(0,0,0,0)) self.contents.draw_text(rect,@commands[index],@pos) end #----------------------------------------------------------------- def dis(index,pos=0) @pos = pos; draw_item(index,disabled_color) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Game_System #----------------------------------------------------------------- attr_accessor :bgm_volume attr_accessor :se_volume #----------------------------------------------------------------- alias options_initiliaze initialize def initialize options_initiliaze @bgm_volume = 100; @se_volume = 100 end #----------------------------------------------------------------- def bgm_play(bgm) @playing_bgm = bgm if bgm != nil and bgm.name != "" Audio.bgm_play("Audio/BGM/"+bgm.name,bgm.volume * bgm_volume/100,bgm.pitch) else; Audio.bgm_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def bgs_play(bgs) @playing_bgs = bgs if bgs != nil and bgs.name != "" Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume * se_volume / 100, bgs.pitch) else; Audio.bgs_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def me_play(me) if me != nil and me.name != "" Audio.me_play("Audio/ME/"+me.name, me.volume*se_volume / 100, me.pitch) else; Audio.me_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def se_play(se) if se != nil and se.name != "" Audio.se_play("Audio/SE/"+se.name,se.volume*se_volume/100,se.pitch) end end #----------------------------------------------------------------- def namewindowskin_name if @namewindowskin_name == nil return "RaulBlue" else; return @namewindowskin_name; end end #----------------------------------------------------------------- def namewindowskin_name=(namewindowskin_name) @namewindowskin_name = namewindowskin_name end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Menu_Item #----------------------------------------------------------------- def main @what = ItemCommand.new @what.z = 100 @help_window = Window_Help.new @help_window.visible = false @none = NoneWin.new @target_window = Window_Target.new visact(@target_window,false) @itemw = SoloItem.new @itemw.help_window = @help_window @weparm = WeaponArmor.new visact(@weparm,false); visact(@itemw,false) @wins = [@what,@help_window,@none,@target_window,@itemw,@weparm] Graphics.transition loop do Graphics.update Input.update; update if $scene != self; break; end end Graphics.freeze for i in @wins; i.dispose; end end #----------------------------------------------------------------- def update for i in @wins; i.update; end if @itemw.active == false or @weparm.active == false @none.visible = true; @help_window.visible = false else; @none.visible = false; @help_window.visible = true; end if @what.active; update_what; return else; @help_window.visible = true; end if @itemw.active; update_item; return; end if @weparm.active; update_weparm; return; end if @target_window.active; update_target; return; end end #----------------------------------------------------------------- def update_what if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end if Input.trigger?(Input::C) case @what.index when 0; visact(@what,false); visact(@itemw,true) when 1; visact(@what,false); visact(@weparm,true) when 2 $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) end return end end #----------------------------------------------------------------- def update_item if Input.trigger?(Input::B) visact(@what,true); visact(@itemw,false); return end if Input.trigger?(Input::C) @item = @itemw.item unless @item.is_a?(RPG::Item) $game_system.se_play($data_system.buzzer_se) return end unless $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 @itemw.active = false @target_window.x = (@itemw.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else; @target_window.index = 0; end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @itemw.draw_item(@itemw.index) end $scene = Scene_Map.new; return end end; return end end #----------------------------------------------------------------- def update_weparm if Input.trigger?(Input::B) visact(@what,true) visact(@weparm,false) return end @item = @weparm.item if Input.trigger?(Input::C) $game_system.se_play($data_system.buzzer_se) return end end #----------------------------------------------------------------- def update_target if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) unless $game_party.item_can_use?(@item.id) @item_window.refresh end @itemw.active = true @target_window.visible = false @target_window.active = false return end if Input.trigger?(Input::C) if $game_party.item_number(@item.id) == 0 $game_system.se_play($data_system.buzzer_se) return end if @target_window.index == -1 used = false for i in $game_party.actors used |= i.item_effect(@item) end end if @target_window.index >= 0 target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end if used $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @itemw.draw_item(@itemw.index) end @target_window.refresh if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $scene = Scene_Map.new; return end end unless used $game_system.se_play($data_system.buzzer_se) end; return end end #----------------------------------------------------------------- def visact(w,tf) w.active = tf; w.visible = tf end #----------------------------------------------------------------- end #----------------------------------------------------------------- class SoloItem < Window_Selectable #----------------------------------------------------------------- def initialize super(0,64,640,416) @column_max = 2 refresh self.index = 0 end #----------------------------------------------------------------- def item return @data[self.index] end #----------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize for i in 0...@item_max draw_item(i) end end end #----------------------------------------------------------------- def draw_item(index) item = @data[index] number = $game_party.item_number(item.id) if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #----------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class WeaponArmor < Window_Selectable #----------------------------------------------------------------- def initialize super(0, 64, 640, 416) @column_max = 2 refresh self.index = 0 end #----------------------------------------------------------------- def item return @data[self.index] end #----------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons[i]) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors[i]) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize for i in 0...@item_max; draw_item(i); end end end #----------------------------------------------------------------- def draw_item(index) item = @data[index] number = $game_party.weapon_number(item.id) self.contents.font.color = disabled_color x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0,0,24,24),opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #----------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class NoneWin < Window_Base #----------------------------------------------------------------- def initialize; super(0,64,640,416); end #----------------------------------------------------------------- end #----------------------------------------------------------------- class ItemCommand < Window_Selectable #----------------------------------------------------------------- def initialize super(0,0,640,64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize @item_max = 3; @column_max = 3 @commands = ["Items","Weapons and Armors","Leave"] refresh; self.index = 0 end #----------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max; draw_item(i); end end #----------------------------------------------------------------- def draw_item(index) x = 4+index * 212 self.contents.draw_text(x,0,200,32,@commands[index]) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Scene_Minimap #----------------------------------------------------------------- def initialize(n=0) @n = n end #----------------------------------------------------------------- def main @spriteset = Spriteset_Map.new @contents = Slipknot_Contents.new @minimap = Sprite_MiniMap.new @width = @minimap.bitmap.width/2.5 @height = @minimap.bitmap.height/2.5 @minimap.x = 320 - (@minimap.bitmap.width/2.5)/2 @minimap.y = 276 - (@minimap.bitmap.height/2.5)/2 Graphics.transition loop do Graphics.update; Input.update; update if $scene != self; break; end end Graphics.freeze @minimap.dispose; @spriteset.dispose; @contents.dispose end #----------------------------------------------------------------- def update if Input.trigger?(Input::B) or Input.trigger?(Input::A) $game_system.se_play($data_system.cancel_se) case @n when 0; $scene = Scene_Map.new when 1: $scene = Scene_Menu.new(5) end end @minimap.update; @contents.update if @width > 640 if Input.repeat?(Input::LEFT) @minimap.x -= 2 elsif Input.repeat?(Input::RIGHT) @minimap.x += 2 end return end if @height > 448 if Input.repeat?(Input::UP) @minimap.y -= 2 elsif Input.repeat?(Input::DOWN) @minimap.y += 2 end end return end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Slipknot_Contents < Window_Base #----------------------------------------------------------------- def initialize super(0,0,640,480) self.opacity = 0; self.z = 110 self.contents = Bitmap.new (width-32,height-32) self.contents.font.name = $defaultfonttype self.contents.clear back_color = Color.new(0,0,0,128) self.contents.fill_rect(280,2,48,30,back_color) self.contents.font.size = $defaultfontsize self.contents.draw_text(0,0,608,32,"MAP",1) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Sprite_MiniMap < Sprite #----------------------------------------------------------------- INDEX = [ 26, 27, 32, 33, 4 , 27, 32, 33, 26, 5, 32, 33, 4, 5, 32, 33, 26, 27, 32, 11, 4 , 27, 32, 11, 26, 5, 32, 11, 4, 5, 32, 11, 26, 27, 10, 33, 4 , 27, 10, 33, 26, 5, 10, 33, 4, 5, 10, 33, 26, 27, 10, 11, 4 , 27, 10, 11, 26, 5, 10, 11, 4, 5, 10, 11, 24, 25, 30, 31, 24, 5, 30, 31, 24, 25, 30, 11, 24, 5, 30, 11, 14, 15, 20, 21, 14, 15, 20, 11, 14, 15, 10, 21, 14, 15, 10, 11, 28, 29, 34, 35, 28, 29, 10, 35, 4, 29, 34, 35, 4, 29, 10, 35, 38, 39, 44, 45, 4, 39, 44, 45, 38, 5, 44, 45, 4, 5, 44, 45, 24, 29, 30, 35, 14, 15, 44, 45, 12, 13, 18 ,19, 12, 13, 18, 11, 16, 17, 22, 23, 16, 17, 10, 23, 40, 41, 46, 47, 4, 41, 46, 47, 36, 37, 42, 43, 36, 5, 42, 43, 12, 17, 18, 23, 12, 13, 42, 43, 36, 41, 42, 47, 16, 17, 46, 47, 12, 17, 42, 47, 0, 1, 6, 7 ] X = [0, 1, 0, 1] Y = [0, 0, 1, 1] #----------------------------------------------------------------- def initialize super self.z = 100 @map_id = -1 update end #----------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #----------------------------------------------------------------- def update super if @map_id == $game_map.map_id return end @tile = 32 @map_id = $game_map.map_id @d = $game_map.height @c = $game_map.width width = @c*@tile; hight = @d*@tile size = @d*@c self.bitmap = Bitmap.new(width, hight) self.bitmap.fill_rect(0,0,width, hight,Color.new(0,0,0) ) for i in 0...size x = i % @c; y = i / @c for j in [0,1,2] pos = $game_map.data[x,y,j] if pos >= 384 bmp = RPG::Cache.tile($game_map.tileset_name,pos,0) src_rect = Rect.new(0,0,@tile,@tile) self.bitmap.blt(x*@tile,y*@tile,bmp,src_rect) end if pos >= 48 and pos < 384 id = pos / 48 - 1 pos = pos % 48 bmp = RPG::Cache.autotile($game_map.autotile_names[id]) for g in 0..3 h = 4 * pos + g y1 = INDEX[h] / 6 x1 = INDEX[h] % 6 src_rect = Rect.new(x1*16,y1*16,16,16) self.bitmap.blt(x*@tile+X[g]*16,y*@tile+Y[g]*16,bmp,src_rect) end end end end self.zoom_x = 40.0 / 100.0 self.zoom_y = 40.0 / 100.0 end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Window_Base < Window #----------------------------------------------------------------- def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color) distance = (start_x - end_x).abs + (start_y - end_y).abs if end_color == start_color for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i self.contents.fill_rect(x, y, width, width, start_color) end else for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i r = start_color.red * (distance-i)/distance + end_color.red * i/distance g = start_color.green * (distance-i)/distance + end_color.green * i/distance b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a)) end end end #---------------------------------------------------------------- def draw_actor_hpg(actor, x, y, width = 120, height = 12) w = width * actor.hp / actor.maxhp hp_color_1 = Color.new(255, 0, 0, 192) hp_color_2 = Color.new(255, 96, 0, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) if width - 32 >= 108 hp_x = x + width - 108 flag = true elsif width - 32 >= 48 hp_x = x + width - 48 end self.contents.font.color = actor.hp == 0 ? knockout_color : actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color self.contents.draw_text(hp_x - 40, y - 25, 48, 32, actor.hp.to_s, 2) self.contents.font.color = normal_color self.contents.draw_text(hp_x + 8, y - 25, 12, 32, "/", 1) self.contents.draw_text(hp_x + 20, y - 25, 48, 32, actor.maxhp.to_s) self.contents.font.color = system_color self.contents.draw_text(hp_x - 70, y - 25, 32, 32, "HP") end #----------------------------------------------------------------- def draw_actor_spg(actor, x, y, width = 120, height = 12) w = width * actor.sp / actor.maxsp hp_color_1 = Color.new( 0, 0, 225, 192) hp_color_2 = Color.new( 0, 128, 225, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) if width - 32 >= 108 sp_x = x + width - 108 flag = true elsif width - 32 >= 48 sp_x = x + width - 48 end self.contents.font.color = actor.hp == 0 ? knockout_color : actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color self.contents.draw_text(sp_x - 40, y - 25, 48, 32, actor.sp.to_s, 2) self.contents.font.color = normal_color self.contents.draw_text(sp_x + 8, y - 25, 12, 32, "/", 1) self.contents.draw_text(sp_x + 20, y - 25, 48, 32, actor.maxsp.to_s) self.contents.font.color = system_color self.contents.draw_text(sp_x - 70, y - 25, 32, 32, "MP") end #----------------------------------------------------------------- end Marked's Edited version for Legal RMXP version. #----------------------------------------------------------------- # Slipknot's Menu # created by Slipknot #----------------------------------------------------------------- class Scene_Menu #----------------------------------------------------------------- def initalize (menu_index = 0) @menu_index = menu_index end #----------------------------------------------------------------- def main opa = 180 @spriteset = Spriteset_Map.new s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Status"; s5 = "Save" s8 = "Exit"; s7 = "Options"; s6 = "Map";@tip = rand(4) @command = WCommand.new (152,[s1,s2,s3,s4,s5,s6,s7,s8],1) @command.index = @menu_index @command.x = 320 - @command.width/2 @command.y = 480 - @command.height @command.opacity = opa if $game_party.actors.size == 0 @command.dis(1,1); @command.dis(2,1); @command.dis(3,1) end if $game_system.save_disabled @command.dis(4,1) end if itemdis; @command.dis(0,1); end @playtime = PlayTime.new @playtime.opacity = opa @help = MenuWin.new(22,$defaultfonttype,opa) @help.y = 480 - @help.height; @help.x = 640 - @help.width @tips = MenuWin.new(20,"Arial",opa) @tips.y = 480 - @tips.height @opt = Window_Command.new(160,["Skin","BGM volumen","SE volumen"]) @skin = Window_Command.new(100,["Black","Blue","Red"]) @bgm = Slipknot_Slider.new("BGM") @bgm.index = $game_system.bgm_volume @se = Slipknot_Slider.new("SE") @se.index = $game_system.se_volume yo = 240 - @opt.height/2 xo = 16 xox = xo + @opt.width visact(@opt,false); @opt.x = xo; @opt.y = yo visact(@skin,false); @skin.x = xox; @skin.y = yo visact(@bgm,false); @bgm.x = xox; @bgm.y = yo visact(@se,false); @se.x = xox; @se.y = yo @optwins = [@opt,@skin,@bgm,@se] for i in @optwins; i.z = @command.z + 100; i.opacity = opa; end @gold = Gold.new; @gold.x = 440 @gold.y = 0; @gold.opacity = opa @status = Window_MenuStatus.new @status.x = 56; @status.y = 0 @status.z = 2000; @status.visible = false @wins = [@command,@status,@gold,@playtime,@help, @tips,@opt,@skin,@bgm,@se] Graphics.transition loop do Graphics.update; Input.update; update if $scene != self; break; end end Graphics.freeze; @spriteset.dispose for i in @wins; i.dispose; end end #----------------------------------------------------------------- def update for i in @wins; i.update; end update_tips if @command.active; update_command update_help; return end if @status.active; update_status; return; end if @opt.active; update_opt; return; end if @sbs; update_sbs; return; end end #----------------------------------------------------------------- def update_opt if Input.trigger?(Input::B) visact(@opt,false) @command.active = true end if Input.trigger?(Input::C) case @opt.index when 0; optacc(@skin) when 1; optacc(@bgm) when 2; optacc(@se) end; return end end #----------------------------------------------------------------- def optacc(w) @opt.active = false; @sbs = true; visact(w,true) end #----------------------------------------------------------------- def update_sbs if Input.trigger?(Input::B) case @opt.index when 0; optcan(@skin) when 1; optcan(@bgm) when 2; optcan(@se) end end case @opt.index when 1; volacc(1,@bgm.index); return when 2; volacc(2,@se.index); return end if Input.trigger?(Input::C) and @skin.active case @skin.index when 0; skinacc("SlipBlack","SlipBlack") when 1; skinacc("SlipBlue","SlipBlue") when 2; skinacc("SlipRed","SlipRed") end return end end #----------------------------------------------------------------- def volacc(pla,vol) case pla; when 1 $game_system.bgm_volume = vol when 2 $game_system.se_volume = vol end end #----------------------------------------------------------------- def skinacc(sk1,sk2) $game_system.se_play($data_system.decision_se) $game_system.windowskin_name = sk1 $game_system.namewindowskin_name = sk2 end #----------------------------------------------------------------- def optcan(w) visact(w,false); @opt.active = true; @sbs = false end #----------------------------------------------------------------- def update_help case @command.index when 0 if itemdis; a = "(You don't have any)" else; a = ""; end @help.ref("See the party's items.",a) when 1; @help.ref("See the party's skills.","") when 2; @help.ref("See and change the party's","equipment.") when 3; @help.ref("See the complete status of","the party.") when 4; @help.ref("Saves the game.","") when 5; @help.ref("View the current map.","") when 6; @help.ref("Change some settings like","the volume and skin.") when 7; @help.ref("Restart or exits the game.","") end end #----------------------------------------------------------------- def update_tips case @tip when 0; @tips.ref("Use the potions only when","you really are in danger.") when 1; @tips.ref("Put attention when someone","is near to reach a new level.") when 2; @tips.ref("Constantly save the game.","") when 3; @tips.ref("Always keep in your bag","items like potions & revives.") when 4; @tips.ref("If you found a new town","talk with everybody.") end end #----------------------------------------------------------------- def itemdis @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0; @data.push($data_items); end end for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0; @data.push($data_weapons); end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0; @data.push($data_armors); end end if @data.size == 0; return true; end end #----------------------------------------------------------------- def update_command if Input.trigger?(Input::B) $game_system.se_play ($data_system.cancel_se) $scene = Scene_Map.new; return end if Input.trigger?(Input::C) if $game_party.actors.size == 0 and @command.index == 1..3 $game_system.se_play ($data_system.buzzer_se) return end case @command.index when 0 if itemdis $game_system.se_play($data_system.buzzer_se); return end; comacc(Menu_Item) when 1..3 $game_system.se_play ($data_system.decision_se) @command.active = false; @status.index = 0 visact(@status,true) when 4 if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end; comacc(Scene_Save) when 5 $game_system.se_play($data_system.decision_se) $scene = Scene_Minimap.new(1) when 6 $game_system.se_play($data_system.decision_se) @opt.index = 0; visact(@opt,true) @command.active=false when 7; comacc(Scene_End); end return end end #----------------------------------------------------------------- def comacc(a) $game_system.se_play($data_system.decision_se); $scene = a.new end #----------------------------------------------------------------- def visact(w,tf) w.visible = tf; w.active = tf end #----------------------------------------------------------------- def update_status if Input.trigger?(Input::B) $game_system.se_play ($data_system.cancel_se) @command.active = true visact(@status,false) @status.index = -1 return end if Input.trigger?(Input::C) case @command.index when 1 if $game_party.actors[@status.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end statacc(Scene_Skill) when 2; statacc(Scene_Equip) when 3; statacc(Scene_Status) end return end end #----------------------------------------------------------------- def statacc(a) $game_system.se_play($data_system.decision_se); $scene = a.new(@status.index) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class PlayTime < Window_Base #----------------------------------------------------------------- def initialize super (0,0,200,80) self.contents = Bitmap.new (width - 32, height - 32) refresh end #----------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text (4,0,120,32,"Elapsed Time") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60; min = @total_sec /60 % 60 sec = @total_sec % 60 text = sprintf ("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text (10, 24, 120, 28, text, 2) end #----------------------------------------------------------------- def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Gold < Window_Base #----------------------------------------------------------------- def initialize super (0,0,200,80) self.contents = Bitmap.new (width - 32, height - 32) if $game_party.gold < 1 icon = RPG::Cache.icon("") elsif $game_party.gold < 100 icon = RPG::Cache.icon("gold1") elsif $game_party.gold < 250 icon = RPG::Cache.icon("gold2") elsif $game_party.gold < 500 icon = RPG::Cache.icon("gold3") elsif $game_party.gold < 1000 icon = RPG::Cache.icon("gold4") else icon = RPG::Cache.icon("gold5") end gold = $game_party.gold.to_s unless gold.size > 4; money = gold else case gold.size when 5 ary = gold.slice!(0,2) money = ary + ","+ gold when 6 ary = gold.slice!(0,3) money = ary + ","+ gold when 7 ary1 = gold.slice!(0,4) ary2 = ary1.slice!(1,4) money = ary1 + ","+ ary2 +","+ gold end end self.contents.draw_text (0,5,130,32, money.to_s, 2) self.contents.blt(130,8,icon,Rect.new(0,0,24,24)) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Window_MenuStatus < Window_Selectable #----------------------------------------------------------------- def initialize super (0, 0, 528, 480) self.opacity = 210 self.contents = Bitmap.new (width - 32, height - 32) refresh self.active = false; self.index = -1 end #------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 94; y = i * 116 actor = $game_party.actors self.contents.draw_text(x,y,160,32,actor.name.upcase) draw_actor_class (actor, x+230, y) draw_actor_level (actor, x, y+32) draw_actor_state (actor, x+90, y+32) draw_actor_exp (actor, x, y+64) draw_actor_hpg (actor, x+230, y+35, 120,16) draw_actor_spg (actor, x+230, y+69,120,16) end end #------------------------------------------------------------- def update_cursor_rect if @index < 0; self.cursor_rect.empty else; self.cursor_rect.set(0,@index * 116,self.width-32,96); end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class MenuWin < Window_Base #----------------------------------------------------------------- def initialize(fosi,fona,opa) super(0,0,247,88); self.opacity = opa self.contents = Bitmap.new (width - 32, height - 32) self.contents.font.size = fosi; self.contents.font.name = fona ref("","") end #----------------------------------------------------------------- def ref(txt,txt2) self.contents.clear self.contents.draw_text(0,0,214,28,txt) self.contents.draw_text(0,28,214,28,txt2) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Slipknot_Slider < Window_Base #----------------------------------------------------------------- def initialize(text = "") super(0,0,160,290) self.contents = Bitmap.new(width - 32, height - 32) self.active = false; @text = text if @index == nil; @index = 0; end @item_max = 100; self.visible = false @scale = 2; refresh end #----------------------------------------------------------------- def index=(index) @index = index; refresh end #----------------------------------------------------------------- def index return @index end #----------------------------------------------------------------- def refresh self.contents.clear self.contents.draw_text(0,0,128,24,@text+" volume",1) self.contents.draw_text(30,32,80,24,"0%") self.contents.draw_text(30,82,80,24,"25%") self.contents.draw_text(30,132,80,24,"50%") self.contents.draw_text(30,182,80,24,"75%") self.contents.draw_text(30,232,80,24,"100%") curhei = 18; mish = @item_max * @scale + curhei self.contents.fill_rect(0,32,20,mish+8,Color.new(200,200,200,140)) self.contents.fill_rect(2,34,16,mish+4,Color.new(128,128,128,190)) self.contents.fill_rect(4,36,12,mish,Color.new(64,64,64,190)) y = (@index*(@item_max*@scale))/@item_max + 36 self.contents.fill_rect(3,y,14,curhei, Color.new(100,100,100,215)) self.contents.fill_rect(6,y+4,8,curhei - 8, Color.new(90,90,90,215)) end #----------------------------------------------------------------- def update if $game_system.windowskin_name != @windowskin_name @windowskin_name = $game_system.windowskin_name self.windowskin = RPG::Cache.windowskin(@windowskin_name) end if self.active and @item_max > 0 if Input.repeat?(Input::UP) if @index != 0 case @text when "BGM" @index -= 5 $game_system.bgm_play($game_system.bgm_memorize) when "SE" $game_system.se_play($data_system.decision_se) @index -= 5 end; return end $game_system.se_play($data_system.buzzer_se) end if Input.repeat?(Input::DOWN) if @index < @item_max case @text when "BGM" @index += 5 $game_system.bgm_play($game_system.bgm_memorize) when "SE" $game_system.se_play($data_system.decision_se) @index += 5 end; return end $game_system.se_play($data_system.buzzer_se) end refresh; return end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class WCommand < Window_Selectable #----------------------------------------------------------------- def initialize(width, commands,pos=0) super(0,0,width,commands.size*32+32) @item_max = commands.size @commands = commands self.contents = Bitmap.new(width-32,@item_max*32) @pos = pos; refresh; self.index = 0 end #----------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max; draw_item(i, normal_color); end end #----------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new(4,32*index, self.contents.width-8,32) self.contents.fill_rect(rect, Color.new(0,0,0,0)) self.contents.draw_text(rect,@commands[index],@pos) end #----------------------------------------------------------------- def dis(index,pos=0) @pos = pos; draw_item(index,disabled_color) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Game_System #----------------------------------------------------------------- attr_accessor :bgm_volume attr_accessor :se_volume #----------------------------------------------------------------- alias options_initiliaze initialize def initialize options_initiliaze @bgm_volume = 100; @se_volume = 100 end #----------------------------------------------------------------- def bgm_play(bgm) @playing_bgm = bgm if bgm != nil and bgm.name != "" Audio.bgm_play("Audio/BGM/"+bgm.name,bgm.volume * bgm_volume/100,bgm.pitch) else; Audio.bgm_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def bgs_play(bgs) @playing_bgs = bgs if bgs != nil and bgs.name != "" Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume * se_volume / 100, bgs.pitch) else; Audio.bgs_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def me_play(me) if me != nil and me.name != "" Audio.me_play("Audio/ME/"+me.name, me.volume*se_volume / 100, me.pitch) else; Audio.me_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def se_play(se) if se != nil and se.name != "" Audio.se_play("Audio/SE/"+se.name,se.volume*se_volume/100,se.pitch) end end #----------------------------------------------------------------- def namewindowskin_name if @namewindowskin_name == nil return "RaulBlue" else; return @namewindowskin_name; end end #----------------------------------------------------------------- def namewindowskin_name=(namewindowskin_name) @namewindowskin_name = namewindowskin_name end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Menu_Item #----------------------------------------------------------------- def main @what = ItemCommand.new @what.z = 100 @help_window = Window_Help.new @help_window.visible = false @none = NoneWin.new @target_window = Window_Target.new visact(@target_window,false) @itemw = SoloItem.new @itemw.help_window = @help_window @weparm = WeaponArmor.new visact(@weparm,false); visact(@itemw,false) @wins = [@what,@help_window,@none,@target_window,@itemw,@weparm] Graphics.transition loop do Graphics.update Input.update; update if $scene != self; break; end end Graphics.freeze for i in @wins; i.dispose; end end #----------------------------------------------------------------- def update for i in @wins; i.update; end if @itemw.active == false or @weparm.active == false @none.visible = true; @help_window.visible = false else; @none.visible = false; @help_window.visible = true; end if @what.active; update_what; return else; @help_window.visible = true; end if @itemw.active; update_item; return; end if @weparm.active; update_weparm; return; end if @target_window.active; update_target; return; end end #----------------------------------------------------------------- def update_what if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end if Input.trigger?(Input::C) case @what.index when 0; visact(@what,false); visact(@itemw,true) when 1; visact(@what,false); visact(@weparm,true) when 2 $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) end return end end #----------------------------------------------------------------- def update_item if Input.trigger?(Input::B) visact(@what,true); visact(@itemw,false); return end if Input.trigger?(Input::C) @item = @itemw.item unless @item.is_a?(RPG::Item) $game_system.se_play($data_system.buzzer_se) return end unless $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 @itemw.active = false @target_window.x = (@itemw.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else; @target_window.index = 0; end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @itemw.draw_item(@itemw.index) end $scene = Scene_Map.new; return end end; return end end #----------------------------------------------------------------- def update_weparm if Input.trigger?(Input::B) visact(@what,true) visact(@weparm,false) return end @item = @weparm.item if Input.trigger?(Input::C) $game_system.se_play($data_system.buzzer_se) return end end #----------------------------------------------------------------- def update_target if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) unless $game_party.item_can_use?(@item.id) @item_window.refresh end @itemw.active = true @target_window.visible = false @target_window.active = false return end if Input.trigger?(Input::C) if $game_party.item_number(@item.id) == 0 $game_system.se_play($data_system.buzzer_se) return end if @target_window.index == -1 used = false for i in $game_party.actors used |= i.item_effect(@item) end end if @target_window.index >= 0 target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end if used $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @itemw.draw_item(@itemw.index) end @target_window.refresh if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $scene = Scene_Map.new; return end end unless used $game_system.se_play($data_system.buzzer_se) end; return end end #----------------------------------------------------------------- def visact(w,tf) w.active = tf; w.visible = tf end #----------------------------------------------------------------- end #----------------------------------------------------------------- class SoloItem < Window_Selectable #----------------------------------------------------------------- def initialize super(0,64,640,416) @column_max = 2 refresh self.index = 0 end #----------------------------------------------------------------- def item return @data[self.index] end #----------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end end end #----------------------------------------------------------------- def draw_item(index) item = @data[index] number = $game_party.item_number(item.id) if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #----------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class WeaponArmor < Window_Selectable #----------------------------------------------------------------- def initialize super(0, 64, 640, 416) @column_max = 2 refresh self.index = 0 end #----------------------------------------------------------------- def item return @data[self.index] end #----------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max; draw_item(i); end end end #----------------------------------------------------------------- def draw_item(index) item = @data[index] number = $game_party.weapon_number(item.id) self.contents.font.color = disabled_color x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0,0,24,24),opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #----------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class NoneWin < Window_Base #----------------------------------------------------------------- def initialize; super(0,64,640,416); end #----------------------------------------------------------------- end #----------------------------------------------------------------- class ItemCommand < Window_Selectable #----------------------------------------------------------------- def initialize super(0,0,640,64) self.contents = Bitmap.new(width - 32, height - 32) @item_max = 3; @column_max = 3 @commands = ["Items","Weapons and Armors","Leave"] refresh; self.index = 0 end #----------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max; draw_item(i); end end #----------------------------------------------------------------- def draw_item(index) x = 4+index * 212 self.contents.draw_text(x,0,200,32,@commands[index]) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Scene_Minimap #----------------------------------------------------------------- def initialize(n=0) @n = n end #----------------------------------------------------------------- def main @spriteset = Spriteset_Map.new @contents = Slipknot_Contents.new @minimap = Sprite_MiniMap.new @width = @minimap.bitmap.width/2.5 @height = @minimap.bitmap.height/2.5 @minimap.x = 320 - (@minimap.bitmap.width/2.5)/2 @minimap.y = 276 - (@minimap.bitmap.height/2.5)/2 Graphics.transition loop do Graphics.update; Input.update; update if $scene != self; break; end end Graphics.freeze @minimap.dispose; @spriteset.dispose; @contents.dispose end #----------------------------------------------------------------- def update if Input.trigger?(Input::B) or Input.trigger?(Input::A) $game_system.se_play($data_system.cancel_se) case @n when 0; $scene = Scene_Map.new when 1: $scene = Scene_Menu.new(5) end end @minimap.update; @contents.update if @width > 640 if Input.repeat?(Input::LEFT) @minimap.x -= 2 elsif Input.repeat?(Input::RIGHT) @minimap.x += 2 end return end if @height > 448 if Input.repeat?(Input::UP) @minimap.y -= 2 elsif Input.repeat?(Input::DOWN) @minimap.y += 2 end end return end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Slipknot_Contents < Window_Base #----------------------------------------------------------------- def initialize super(0,0,640,480) self.opacity = 0; self.z = 110 self.contents = Bitmap.new (width-32,height-32) self.contents.clear back_color = Color.new(0,0,0,128) self.contents.fill_rect(280,2,48,30,back_color) self.contents.draw_text(0,0,608,32,"MAP",1) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Sprite_MiniMap < Sprite #----------------------------------------------------------------- INDEX = [ 26, 27, 32, 33, 4 , 27, 32, 33, 26, 5, 32, 33, 4, 5, 32, 33, 26, 27, 32, 11, 4 , 27, 32, 11, 26, 5, 32, 11, 4, 5, 32, 11, 26, 27, 10, 33, 4 , 27, 10, 33, 26, 5, 10, 33, 4, 5, 10, 33, 26, 27, 10, 11, 4 , 27, 10, 11, 26, 5, 10, 11, 4, 5, 10, 11, 24, 25, 30, 31, 24, 5, 30, 31, 24, 25, 30, 11, 24, 5, 30, 11, 14, 15, 20, 21, 14, 15, 20, 11, 14, 15, 10, 21, 14, 15, 10, 11, 28, 29, 34, 35, 28, 29, 10, 35, 4, 29, 34, 35, 4, 29, 10, 35, 38, 39, 44, 45, 4, 39, 44, 45, 38, 5, 44, 45, 4, 5, 44, 45, 24, 29, 30, 35, 14, 15, 44, 45, 12, 13, 18 ,19, 12, 13, 18, 11, 16, 17, 22, 23, 16, 17, 10, 23, 40, 41, 46, 47, 4, 41, 46, 47, 36, 37, 42, 43, 36, 5, 42, 43, 12, 17, 18, 23, 12, 13, 42, 43, 36, 41, 42, 47, 16, 17, 46, 47, 12, 17, 42, 47, 0, 1, 6, 7 ] X = [0, 1, 0, 1] Y = [0, 0, 1, 1] #----------------------------------------------------------------- def initialize super self.z = 100 @map_id = -1 update end #----------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #----------------------------------------------------------------- def update super if @map_id == $game_map.map_id return end @tile = 32 @map_id = $game_map.map_id @d = $game_map.height @c = $game_map.width width = @c*@tile; hight = @d*@tile size = @d*@c self.bitmap = Bitmap.new(width, hight) self.bitmap.fill_rect(0,0,width, hight,Color.new(0,0,0) ) for i in 0...size x = i % @c; y = i / @c for j in [0,1,2] pos = $game_map.data[x,y,j] if pos >= 384 bmp = RPG::Cache.tile($game_map.tileset_name,pos,0) src_rect = Rect.new(0,0,@tile,@tile) self.bitmap.blt(x*@tile,y*@tile,bmp,src_rect) end if pos >= 48 and pos < 384 id = pos / 48 - 1 pos = pos % 48 bmp = RPG::Cache.autotile($game_map.autotile_names[id]) for g in 0..3 h = 4 * pos + g y1 = INDEX[h] / 6 x1 = INDEX[h] % 6 src_rect = Rect.new(x1*16,y1*16,16,16) self.bitmap.blt(x*@tile+X[g]*16,y*@tile+Y[g]*16,bmp,src_rect) end end end end self.zoom_x = 40.0 / 100.0 self.zoom_y = 40.0 / 100.0 end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Window_Base < Window #----------------------------------------------------------------- def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color) distance = (start_x - end_x).abs + (start_y - end_y).abs if end_color == start_color for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i self.contents.fill_rect(x, y, width, width, start_color) end else for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i r = start_color.red * (distance-i)/distance + end_color.red * i/distance g = start_color.green * (distance-i)/distance + end_color.green * i/distance b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a)) end end end #---------------------------------------------------------------- def draw_actor_hpg(actor, x, y, width = 120, height = 12) w = width * actor.hp / actor.maxhp hp_color_1 = Color.new(255, 0, 0, 192) hp_color_2 = Color.new(255, 96, 0, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) if width - 32 >= 108 hp_x = x + width - 108 flag = true elsif width - 32 >= 48 hp_x = x + width - 48 end self.contents.font.color = actor.hp == 0 ? knockout_color : actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color self.contents.draw_text(hp_x - 40, y - 25, 48, 32, actor.hp.to_s, 2) self.contents.font.color = normal_color self.contents.draw_text(hp_x + 8, y - 25, 12, 32, "/", 1) self.contents.draw_text(hp_x + 20, y - 25, 48, 32, actor.maxhp.to_s) self.contents.font.color = system_color self.contents.draw_text(hp_x - 70, y - 25, 32, 32, "HP") end #----------------------------------------------------------------- def draw_actor_spg(actor, x, y, width = 120, height = 12) w = width * actor.sp / actor.maxsp hp_color_1 = Color.new( 0, 0, 225, 192) hp_color_2 = Color.new( 0, 128, 225, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) if width - 32 >= 108 sp_x = x + width - 108 flag = true elsif width - 32 >= 48 sp_x = x + width - 48 end self.contents.font.color = actor.hp == 0 ? knockout_color : actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color self.contents.draw_text(sp_x - 40, y - 25, 48, 32, actor.sp.to_s, 2) self.contents.font.color = normal_color self.contents.draw_text(sp_x + 8, y - 25, 12, 32, "/", 1) self.contents.draw_text(sp_x + 20, y - 25, 48, 32, actor.maxsp.to_s) self.contents.font.color = system_color self.contents.draw_text(sp_x - 70, y - 25, 32, 32, "MP") end #----------------------------------------------------------------- end Original Post: RMXPU.net Archive Share this post Link to post Share on other sites
Gary The Duck 8 Report post Posted May 7, 2010 Not bad... Actually, it's pretty good! :alright: Share this post Link to post Share on other sites
FranklinX 37 Report post Posted May 7, 2010 It's OK. Add some new flashy graphics to spice it up. Share this post Link to post Share on other sites
Valdred 1 Report post Posted May 8, 2010 ok? I think it's great. Share this post Link to post Share on other sites
Shalaren Metropolis 0 Report post Posted August 6, 2010 the link for the post isnt working X: so I'll ask it here Im trying to take off the skin option I dont want people switchin skin while playing. but then it gives me an error +I want to take off the map option aswell X: +I want to put an option for hotkeys, (BLIZZ ABS) any Idea how to do that? Share this post Link to post Share on other sites
madanchi 18 Report post Posted August 6, 2010 just to comfirm that the link is fully wokring give it some time to load Share this post Link to post Share on other sites
Shalaren Metropolis 0 Report post Posted August 6, 2010 oh lol , it didnt work before Share this post Link to post Share on other sites
Marked 197 Report post Posted August 7, 2010 The site actually doesn't exist anymore. Its a webarchive, it copies data from sites at a point in time and stores them. It usually takes a while to load up. The link doesn't actually have the image that the script requires. I suspect also it was made with postility knights and thats why it has defaultfont variables. The legal version doesn't require. I edited the script so it works: #----------------------------------------------------------------- # Slipknot's Menu # created by Slipknot #----------------------------------------------------------------- class Scene_Menu #----------------------------------------------------------------- def initalize (menu_index = 0) @menu_index = menu_index end #----------------------------------------------------------------- def main opa = 180 @spriteset = Spriteset_Map.new s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Status"; s5 = "Save" s8 = "Exit"; s7 = "Options"; s6 = "Map";@tip = rand(4) @command = WCommand.new (152,[s1,s2,s3,s4,s5,s6,s7,s8],1) @command.index = @menu_index @command.x = 320 - @command.width/2 @command.y = 480 - @command.height @command.opacity = opa if $game_party.actors.size == 0 @command.dis(1,1); @command.dis(2,1); @command.dis(3,1) end if $game_system.save_disabled @command.dis(4,1) end if itemdis; @command.dis(0,1); end @playtime = PlayTime.new @playtime.opacity = opa @help = MenuWin.new(22,$defaultfonttype,opa) @help.y = 480 - @help.height; @help.x = 640 - @help.width @tips = MenuWin.new(20,"Arial",opa) @tips.y = 480 - @tips.height @opt = Window_Command.new(160,["Skin","BGM volumen","SE volumen"]) @skin = Window_Command.new(100,["Black","Blue","Red"]) @bgm = Slipknot_Slider.new("BGM") @bgm.index = $game_system.bgm_volume @se = Slipknot_Slider.new("SE") @se.index = $game_system.se_volume yo = 240 - @opt.height/2 xo = 16 xox = xo + @opt.width visact(@opt,false); @opt.x = xo; @opt.y = yo visact(@skin,false); @skin.x = xox; @skin.y = yo visact(@bgm,false); @bgm.x = xox; @bgm.y = yo visact(@se,false); @se.x = xox; @se.y = yo @optwins = [@opt,@skin,@bgm,@se] for i in @optwins; i.z = @command.z + 100; i.opacity = opa; end @gold = Gold.new; @gold.x = 440 @gold.y = 0; @gold.opacity = opa @status = Window_MenuStatus.new @status.x = 56; @status.y = 0 @status.z = 2000; @status.visible = false @wins = [@command,@status,@gold,@playtime,@help, @tips,@opt,@skin,@bgm,@se] Graphics.transition loop do Graphics.update; Input.update; update if $scene != self; break; end end Graphics.freeze; @spriteset.dispose for i in @wins; i.dispose; end end #----------------------------------------------------------------- def update for i in @wins; i.update; end update_tips if @command.active; update_command update_help; return end if @status.active; update_status; return; end if @opt.active; update_opt; return; end if @sbs; update_sbs; return; end end #----------------------------------------------------------------- def update_opt if Input.trigger?(Input::B) visact(@opt,false) @command.active = true end if Input.trigger?(Input::C) case @opt.index when 0; optacc(@skin) when 1; optacc(@bgm) when 2; optacc(@se) end; return end end #----------------------------------------------------------------- def optacc(w) @opt.active = false; @sbs = true; visact(w,true) end #----------------------------------------------------------------- def update_sbs if Input.trigger?(Input::B) case @opt.index when 0; optcan(@skin) when 1; optcan(@bgm) when 2; optcan(@se) end end case @opt.index when 1; volacc(1,@bgm.index); return when 2; volacc(2,@se.index); return end if Input.trigger?(Input::C) and @skin.active case @skin.index when 0; skinacc("SlipBlack","SlipBlack") when 1; skinacc("SlipBlue","SlipBlue") when 2; skinacc("SlipRed","SlipRed") end return end end #----------------------------------------------------------------- def volacc(pla,vol) case pla; when 1 $game_system.bgm_volume = vol when 2 $game_system.se_volume = vol end end #----------------------------------------------------------------- def skinacc(sk1,sk2) $game_system.se_play($data_system.decision_se) $game_system.windowskin_name = sk1 $game_system.namewindowskin_name = sk2 end #----------------------------------------------------------------- def optcan(w) visact(w,false); @opt.active = true; @sbs = false end #----------------------------------------------------------------- def update_help case @command.index when 0 if itemdis; a = "(You don't have any)" else; a = ""; end @help.ref("See the party's items.",a) when 1; @help.ref("See the party's skills.","") when 2; @help.ref("See and change the party's","equipment.") when 3; @help.ref("See the complete status of","the party.") when 4; @help.ref("Saves the game.","") when 5; @help.ref("View the current map.","") when 6; @help.ref("Change some settings like","the volume and skin.") when 7; @help.ref("Restart or exits the game.","") end end #----------------------------------------------------------------- def update_tips case @tip when 0; @tips.ref("Use the potions only when","you really are in danger.") when 1; @tips.ref("Put attention when someone","is near to reach a new level.") when 2; @tips.ref("Constantly save the game.","") when 3; @tips.ref("Always keep in your bag","items like potions & revives.") when 4; @tips.ref("If you found a new town","talk with everybody.") end end #----------------------------------------------------------------- def itemdis @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0; @data.push($data_items[i]); end end for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0; @data.push($data_weapons[i]); end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0; @data.push($data_armors[i]); end end if @data.size == 0; return true; end end #----------------------------------------------------------------- def update_command if Input.trigger?(Input::B) $game_system.se_play ($data_system.cancel_se) $scene = Scene_Map.new; return end if Input.trigger?(Input::C) if $game_party.actors.size == 0 and @command.index == 1..3 $game_system.se_play ($data_system.buzzer_se) return end case @command.index when 0 if itemdis $game_system.se_play($data_system.buzzer_se); return end; comacc(Menu_Item) when 1..3 $game_system.se_play ($data_system.decision_se) @command.active = false; @status.index = 0 visact(@status,true) when 4 if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end; comacc(Scene_Save) when 5 $game_system.se_play($data_system.decision_se) $scene = Scene_Minimap.new(1) when 6 $game_system.se_play($data_system.decision_se) @opt.index = 0; visact(@opt,true) @command.active=false when 7; comacc(Scene_End); end return end end #----------------------------------------------------------------- def comacc(a) $game_system.se_play($data_system.decision_se); $scene = a.new end #----------------------------------------------------------------- def visact(w,tf) w.visible = tf; w.active = tf end #----------------------------------------------------------------- def update_status if Input.trigger?(Input::B) $game_system.se_play ($data_system.cancel_se) @command.active = true visact(@status,false) @status.index = -1 return end if Input.trigger?(Input::C) case @command.index when 1 if $game_party.actors[@status.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end statacc(Scene_Skill) when 2; statacc(Scene_Equip) when 3; statacc(Scene_Status) end return end end #----------------------------------------------------------------- def statacc(a) $game_system.se_play($data_system.decision_se); $scene = a.new(@status.index) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class PlayTime < Window_Base #----------------------------------------------------------------- def initialize super (0,0,200,80) self.contents = Bitmap.new (width - 32, height - 32) refresh end #----------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text (4,0,120,32,"Elapsed Time") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60; min = @total_sec /60 % 60 sec = @total_sec % 60 text = sprintf ("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text (10, 24, 120, 28, text, 2) end #----------------------------------------------------------------- def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Gold < Window_Base #----------------------------------------------------------------- def initialize super (0,0,200,80) self.contents = Bitmap.new (width - 32, height - 32) if $game_party.gold < 1 icon = RPG::Cache.icon("") elsif $game_party.gold < 100 icon = RPG::Cache.icon("gold1") elsif $game_party.gold < 250 icon = RPG::Cache.icon("gold2") elsif $game_party.gold < 500 icon = RPG::Cache.icon("gold3") elsif $game_party.gold < 1000 icon = RPG::Cache.icon("gold4") else icon = RPG::Cache.icon("gold5") end gold = $game_party.gold.to_s unless gold.size > 4; money = gold else case gold.size when 5 ary = gold.slice!(0,2) money = ary + ","+ gold when 6 ary = gold.slice!(0,3) money = ary + ","+ gold when 7 ary1 = gold.slice!(0,4) ary2 = ary1.slice!(1,4) money = ary1 + ","+ ary2 +","+ gold end end self.contents.draw_text (0,5,130,32, money.to_s, 2) self.contents.blt(130,8,icon,Rect.new(0,0,24,24)) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Window_MenuStatus < Window_Selectable #----------------------------------------------------------------- def initialize super (0, 0, 528, 480) self.opacity = 210 self.contents = Bitmap.new (width - 32, height - 32) refresh self.active = false; self.index = -1 end #------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 94; y = i * 116 actor = $game_party.actors[i] self.contents.draw_text(x,y,160,32,actor.name.upcase) draw_actor_class (actor, x+230, y) draw_actor_level (actor, x, y+32) draw_actor_state (actor, x+90, y+32) draw_actor_exp (actor, x, y+64) draw_actor_hpg (actor, x+230, y+35, 120,16) draw_actor_spg (actor, x+230, y+69,120,16) end end #------------------------------------------------------------- def update_cursor_rect if @index < 0; self.cursor_rect.empty else; self.cursor_rect.set(0,@index * 116,self.width-32,96); end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class MenuWin < Window_Base #----------------------------------------------------------------- def initialize(fosi,fona,opa) super(0,0,247,88); self.opacity = opa self.contents = Bitmap.new (width - 32, height - 32) self.contents.font.size = fosi; self.contents.font.name = fona ref("","") end #----------------------------------------------------------------- def ref(txt,txt2) self.contents.clear self.contents.draw_text(0,0,214,28,txt) self.contents.draw_text(0,28,214,28,txt2) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Slipknot_Slider < Window_Base #----------------------------------------------------------------- def initialize(text = "") super(0,0,160,290) self.contents = Bitmap.new(width - 32, height - 32) self.active = false; @text = text if @index == nil; @index = 0; end @item_max = 100; self.visible = false @scale = 2; refresh end #----------------------------------------------------------------- def index=(index) @index = index; refresh end #----------------------------------------------------------------- def index return @index end #----------------------------------------------------------------- def refresh self.contents.clear self.contents.draw_text(0,0,128,24,@text+" volume",1) self.contents.draw_text(30,32,80,24,"0%") self.contents.draw_text(30,82,80,24,"25%") self.contents.draw_text(30,132,80,24,"50%") self.contents.draw_text(30,182,80,24,"75%") self.contents.draw_text(30,232,80,24,"100%") curhei = 18; mish = @item_max * @scale + curhei self.contents.fill_rect(0,32,20,mish+8,Color.new(200,200,200,140)) self.contents.fill_rect(2,34,16,mish+4,Color.new(128,128,128,190)) self.contents.fill_rect(4,36,12,mish,Color.new(64,64,64,190)) y = (@index*(@item_max*@scale))/@item_max + 36 self.contents.fill_rect(3,y,14,curhei, Color.new(100,100,100,215)) self.contents.fill_rect(6,y+4,8,curhei - 8, Color.new(90,90,90,215)) end #----------------------------------------------------------------- def update if $game_system.windowskin_name != @windowskin_name @windowskin_name = $game_system.windowskin_name self.windowskin = RPG::Cache.windowskin(@windowskin_name) end if self.active and @item_max > 0 if Input.repeat?(Input::UP) if @index != 0 case @text when "BGM" @index -= 5 $game_system.bgm_play($game_system.bgm_memorize) when "SE" $game_system.se_play($data_system.decision_se) @index -= 5 end; return end $game_system.se_play($data_system.buzzer_se) end if Input.repeat?(Input::DOWN) if @index < @item_max case @text when "BGM" @index += 5 $game_system.bgm_play($game_system.bgm_memorize) when "SE" $game_system.se_play($data_system.decision_se) @index += 5 end; return end $game_system.se_play($data_system.buzzer_se) end refresh; return end end #----------------------------------------------------------------- end #----------------------------------------------------------------- class WCommand < Window_Selectable #----------------------------------------------------------------- def initialize(width, commands,pos=0) super(0,0,width,commands.size*32+32) @item_max = commands.size @commands = commands self.contents = Bitmap.new(width-32,@item_max*32) @pos = pos; refresh; self.index = 0 end #----------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max; draw_item(i, normal_color); end end #----------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new(4,32*index, self.contents.width-8,32) self.contents.fill_rect(rect, Color.new(0,0,0,0)) self.contents.draw_text(rect,@commands[index],@pos) end #----------------------------------------------------------------- def dis(index,pos=0) @pos = pos; draw_item(index,disabled_color) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Game_System #----------------------------------------------------------------- attr_accessor :bgm_volume attr_accessor :se_volume #----------------------------------------------------------------- alias options_initiliaze initialize def initialize options_initiliaze @bgm_volume = 100; @se_volume = 100 end #----------------------------------------------------------------- def bgm_play(bgm) @playing_bgm = bgm if bgm != nil and bgm.name != "" Audio.bgm_play("Audio/BGM/"+bgm.name,bgm.volume * bgm_volume/100,bgm.pitch) else; Audio.bgm_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def bgs_play(bgs) @playing_bgs = bgs if bgs != nil and bgs.name != "" Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume * se_volume / 100, bgs.pitch) else; Audio.bgs_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def me_play(me) if me != nil and me.name != "" Audio.me_play("Audio/ME/"+me.name, me.volume*se_volume / 100, me.pitch) else; Audio.me_stop end; Graphics.frame_reset end #----------------------------------------------------------------- def se_play(se) if se != nil and se.name != "" Audio.se_play("Audio/SE/"+se.name,se.volume*se_volume/100,se.pitch) end end #----------------------------------------------------------------- def namewindowskin_name if @namewindowskin_name == nil return "RaulBlue" else; return @namewindowskin_name; end end #----------------------------------------------------------------- def namewindowskin_name=(namewindowskin_name) @namewindowskin_name = namewindowskin_name end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Menu_Item #----------------------------------------------------------------- def main @what = ItemCommand.new @what.z = 100 @help_window = Window_Help.new @help_window.visible = false @none = NoneWin.new @target_window = Window_Target.new visact(@target_window,false) @itemw = SoloItem.new @itemw.help_window = @help_window @weparm = WeaponArmor.new visact(@weparm,false); visact(@itemw,false) @wins = [@what,@help_window,@none,@target_window,@itemw,@weparm] Graphics.transition loop do Graphics.update Input.update; update if $scene != self; break; end end Graphics.freeze for i in @wins; i.dispose; end end #----------------------------------------------------------------- def update for i in @wins; i.update; end if @itemw.active == false or @weparm.active == false @none.visible = true; @help_window.visible = false else; @none.visible = false; @help_window.visible = true; end if @what.active; update_what; return else; @help_window.visible = true; end if @itemw.active; update_item; return; end if @weparm.active; update_weparm; return; end if @target_window.active; update_target; return; end end #----------------------------------------------------------------- def update_what if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end if Input.trigger?(Input::C) case @what.index when 0; visact(@what,false); visact(@itemw,true) when 1; visact(@what,false); visact(@weparm,true) when 2 $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) end return end end #----------------------------------------------------------------- def update_item if Input.trigger?(Input::B) visact(@what,true); visact(@itemw,false); return end if Input.trigger?(Input::C) @item = @itemw.item unless @item.is_a?(RPG::Item) $game_system.se_play($data_system.buzzer_se) return end unless $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 @itemw.active = false @target_window.x = (@itemw.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else; @target_window.index = 0; end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @itemw.draw_item(@itemw.index) end $scene = Scene_Map.new; return end end; return end end #----------------------------------------------------------------- def update_weparm if Input.trigger?(Input::B) visact(@what,true) visact(@weparm,false) return end @item = @weparm.item if Input.trigger?(Input::C) $game_system.se_play($data_system.buzzer_se) return end end #----------------------------------------------------------------- def update_target if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) unless $game_party.item_can_use?(@item.id) @item_window.refresh end @itemw.active = true @target_window.visible = false @target_window.active = false return end if Input.trigger?(Input::C) if $game_party.item_number(@item.id) == 0 $game_system.se_play($data_system.buzzer_se) return end if @target_window.index == -1 used = false for i in $game_party.actors used |= i.item_effect(@item) end end if @target_window.index >= 0 target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end if used $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @itemw.draw_item(@itemw.index) end @target_window.refresh if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $scene = Scene_Map.new; return end end unless used $game_system.se_play($data_system.buzzer_se) end; return end end #----------------------------------------------------------------- def visact(w,tf) w.active = tf; w.visible = tf end #----------------------------------------------------------------- end #----------------------------------------------------------------- class SoloItem < Window_Selectable #----------------------------------------------------------------- def initialize super(0,64,640,416) @column_max = 2 refresh self.index = 0 end #----------------------------------------------------------------- def item return @data[self.index] end #----------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end end end #----------------------------------------------------------------- def draw_item(index) item = @data[index] number = $game_party.item_number(item.id) if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #----------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class WeaponArmor < Window_Selectable #----------------------------------------------------------------- def initialize super(0, 64, 640, 416) @column_max = 2 refresh self.index = 0 end #----------------------------------------------------------------- def item return @data[self.index] end #----------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons[i]) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors[i]) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max; draw_item(i); end end end #----------------------------------------------------------------- def draw_item(index) item = @data[index] number = $game_party.weapon_number(item.id) self.contents.font.color = disabled_color x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0,0,24,24),opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #----------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class NoneWin < Window_Base #----------------------------------------------------------------- def initialize; super(0,64,640,416); end #----------------------------------------------------------------- end #----------------------------------------------------------------- class ItemCommand < Window_Selectable #----------------------------------------------------------------- def initialize super(0,0,640,64) self.contents = Bitmap.new(width - 32, height - 32) @item_max = 3; @column_max = 3 @commands = ["Items","Weapons and Armors","Leave"] refresh; self.index = 0 end #----------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max; draw_item(i); end end #----------------------------------------------------------------- def draw_item(index) x = 4+index * 212 self.contents.draw_text(x,0,200,32,@commands[index]) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Scene_Minimap #----------------------------------------------------------------- def initialize(n=0) @n = n end #----------------------------------------------------------------- def main @spriteset = Spriteset_Map.new @contents = Slipknot_Contents.new @minimap = Sprite_MiniMap.new @width = @minimap.bitmap.width/2.5 @height = @minimap.bitmap.height/2.5 @minimap.x = 320 - (@minimap.bitmap.width/2.5)/2 @minimap.y = 276 - (@minimap.bitmap.height/2.5)/2 Graphics.transition loop do Graphics.update; Input.update; update if $scene != self; break; end end Graphics.freeze @minimap.dispose; @spriteset.dispose; @contents.dispose end #----------------------------------------------------------------- def update if Input.trigger?(Input::B) or Input.trigger?(Input::A) $game_system.se_play($data_system.cancel_se) case @n when 0; $scene = Scene_Map.new when 1: $scene = Scene_Menu.new(5) end end @minimap.update; @contents.update if @width > 640 if Input.repeat?(Input::LEFT) @minimap.x -= 2 elsif Input.repeat?(Input::RIGHT) @minimap.x += 2 end return end if @height > 448 if Input.repeat?(Input::UP) @minimap.y -= 2 elsif Input.repeat?(Input::DOWN) @minimap.y += 2 end end return end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Slipknot_Contents < Window_Base #----------------------------------------------------------------- def initialize super(0,0,640,480) self.opacity = 0; self.z = 110 self.contents = Bitmap.new (width-32,height-32) self.contents.clear back_color = Color.new(0,0,0,128) self.contents.fill_rect(280,2,48,30,back_color) self.contents.draw_text(0,0,608,32,"MAP",1) end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Sprite_MiniMap < Sprite #----------------------------------------------------------------- INDEX = [ 26, 27, 32, 33, 4 , 27, 32, 33, 26, 5, 32, 33, 4, 5, 32, 33, 26, 27, 32, 11, 4 , 27, 32, 11, 26, 5, 32, 11, 4, 5, 32, 11, 26, 27, 10, 33, 4 , 27, 10, 33, 26, 5, 10, 33, 4, 5, 10, 33, 26, 27, 10, 11, 4 , 27, 10, 11, 26, 5, 10, 11, 4, 5, 10, 11, 24, 25, 30, 31, 24, 5, 30, 31, 24, 25, 30, 11, 24, 5, 30, 11, 14, 15, 20, 21, 14, 15, 20, 11, 14, 15, 10, 21, 14, 15, 10, 11, 28, 29, 34, 35, 28, 29, 10, 35, 4, 29, 34, 35, 4, 29, 10, 35, 38, 39, 44, 45, 4, 39, 44, 45, 38, 5, 44, 45, 4, 5, 44, 45, 24, 29, 30, 35, 14, 15, 44, 45, 12, 13, 18 ,19, 12, 13, 18, 11, 16, 17, 22, 23, 16, 17, 10, 23, 40, 41, 46, 47, 4, 41, 46, 47, 36, 37, 42, 43, 36, 5, 42, 43, 12, 17, 18, 23, 12, 13, 42, 43, 36, 41, 42, 47, 16, 17, 46, 47, 12, 17, 42, 47, 0, 1, 6, 7 ] X = [0, 1, 0, 1] Y = [0, 0, 1, 1] #----------------------------------------------------------------- def initialize super self.z = 100 @map_id = -1 update end #----------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #----------------------------------------------------------------- def update super if @map_id == $game_map.map_id return end @tile = 32 @map_id = $game_map.map_id @d = $game_map.height @c = $game_map.width width = @c*@tile; hight = @d*@tile size = @d*@c self.bitmap = Bitmap.new(width, hight) self.bitmap.fill_rect(0,0,width, hight,Color.new(0,0,0) ) for i in 0...size x = i % @c; y = i / @c for j in [0,1,2] pos = $game_map.data[x,y,j] if pos >= 384 bmp = RPG::Cache.tile($game_map.tileset_name,pos,0) src_rect = Rect.new(0,0,@tile,@tile) self.bitmap.blt(x*@tile,y*@tile,bmp,src_rect) end if pos >= 48 and pos < 384 id = pos / 48 - 1 pos = pos % 48 bmp = RPG::Cache.autotile($game_map.autotile_names[id]) for g in 0..3 h = 4 * pos + g y1 = INDEX[h] / 6 x1 = INDEX[h] % 6 src_rect = Rect.new(x1*16,y1*16,16,16) self.bitmap.blt(x*@tile+X[g]*16,y*@tile+Y[g]*16,bmp,src_rect) end end end end self.zoom_x = 40.0 / 100.0 self.zoom_y = 40.0 / 100.0 end #----------------------------------------------------------------- end #----------------------------------------------------------------- class Window_Base < Window #----------------------------------------------------------------- def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color) distance = (start_x - end_x).abs + (start_y - end_y).abs if end_color == start_color for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i self.contents.fill_rect(x, y, width, width, start_color) end else for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i r = start_color.red * (distance-i)/distance + end_color.red * i/distance g = start_color.green * (distance-i)/distance + end_color.green * i/distance b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a)) end end end #---------------------------------------------------------------- def draw_actor_hpg(actor, x, y, width = 120, height = 12) w = width * actor.hp / actor.maxhp hp_color_1 = Color.new(255, 0, 0, 192) hp_color_2 = Color.new(255, 96, 0, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) if width - 32 >= 108 hp_x = x + width - 108 flag = true elsif width - 32 >= 48 hp_x = x + width - 48 end self.contents.font.color = actor.hp == 0 ? knockout_color : actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color self.contents.draw_text(hp_x - 40, y - 25, 48, 32, actor.hp.to_s, 2) self.contents.font.color = normal_color self.contents.draw_text(hp_x + 8, y - 25, 12, 32, "/", 1) self.contents.draw_text(hp_x + 20, y - 25, 48, 32, actor.maxhp.to_s) self.contents.font.color = system_color self.contents.draw_text(hp_x - 70, y - 25, 32, 32, "HP") end #----------------------------------------------------------------- def draw_actor_spg(actor, x, y, width = 120, height = 12) w = width * actor.sp / actor.maxsp hp_color_1 = Color.new( 0, 0, 225, 192) hp_color_2 = Color.new( 0, 128, 225, 192) self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) x -= 1 y += (height/4).floor self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2) x -= 1 y += (height/4).ceil self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128)) draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2) if width - 32 >= 108 sp_x = x + width - 108 flag = true elsif width - 32 >= 48 sp_x = x + width - 48 end self.contents.font.color = actor.hp == 0 ? knockout_color : actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color self.contents.draw_text(sp_x - 40, y - 25, 48, 32, actor.sp.to_s, 2) self.contents.font.color = normal_color self.contents.draw_text(sp_x + 8, y - 25, 12, 32, "/", 1) self.contents.draw_text(sp_x + 20, y - 25, 48, 32, actor.maxsp.to_s) self.contents.font.color = system_color self.contents.draw_text(sp_x - 70, y - 25, 32, 32, "MP") end #----------------------------------------------------------------- end Share this post Link to post Share on other sites
CrimsonInferno 35 Report post Posted August 7, 2010 Looks really neat... :) Share this post Link to post Share on other sites
Noob Saibot 38 Report post Posted August 7, 2010 I added Marked's edited one to the first post. Share this post Link to post Share on other sites