设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
返回列表
+ 发新帖
查看: 513|回复: 0

[转载发布] Visible Debug 1.2

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-9-28 23:21
  • 签到天数: 212 天

    连续签到: 1 天

    [LV.7]常住居民III

    9089

    主题

    871

    回帖

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    64572
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    74562

    灌水之王

    发表于 2026-7-7 16:46:12 | 显示全部楼层 |阅读模式
    Visible Debug 1.2

    mikb89

    ​


    Introduction

    Sometimes something goes wrong with events, switches and variables. You don't know what is happening, you just know they don't work.

    With this script you can set in game a list of parameters to take under control and they'll be shown and updated in real time.

    Features

    The parameters list includes:


    • switches and variables, events' self switches;
    • events, player, actors, battlers character's graphic;
    • events and player Through state and position;
    • tile id of current player position;
    • items, weapons, armors possession number;
    • battlers' hp, mp, rage (if you use YEM), atk, def, spi, agi, two states;
    • actors' name & level (enemies don't have that);
    • others useful datas you can check in configurations and can add your own.

    Screenshots





    How to Use

    Copy the script under Materials to use, then press F9 as usually and a choice window should appear.

    Other infos in the comments.

    Demo

    Multilanguage demo v. 1.2 (262 K


    http://www.mediafire.com/?6equw8o51zt65b8

    Script

    Spoiler                 Code:        
    # Visible Debug v. 1.2 # VX version # by mikb89  # Details: #  Sometimes something goes wrong with events switches and variables. You don't #   know what is happening, you just know they don't work. #  With this script you can set in game a list of parameters to take under #   control and they'll be shown and updated in real time. #  This list includes: #   - switches and variables, events' self switches; #   - events, player, actors, battlers character's graphic; #   - events and player Through state and position; #   - tile id of current player position; #   - items, weapons, armors possession number; #   - battlers' hp, mp, rage (if you use YEM), atk, def, spi, agi, two states; #   - actors' name & level (enemies don't have that); #   - others useful datas you can check here in configurations and can add your #     own.  # Configurations: module VDEBUG   # Here's a list of terms you can change as you want:   HELP_TEXT = "Enter: add/remove; Pag: change list." # Help yourself!   # These are what appears on F9 press:     CALL_CLASSIC_DEBUG_TEXT = "Debug call"     CALL_VDEBUG_SETTINGS_TEXT = "Visible Debug data"   # These are lists names:     SWITCH_LIST_TEXT = "Switches"     VARIABLE_LIST_TEXT = "Variables"     ITEM_LIST_TEXT = "Items"     ACTOR_LIST_TEXT = "Actors"     EVENT_LIST_TEXT = "Events"     DATA_LIST_TEXT = "Infos"     WEAPON_LIST_TEXT = "Weapons"     ARMOR_LIST_TEXT = "Armors"     ENEMY_LIST_TEXT = "Enemies"    SHOW_EVENT_NAME = true # Show the event name. Set false for compatibility.   MOVE_AROUND_KEY = Input::ALT    # Pressing this key many times the debug sprite will move in the four angles    #  of the screen and then hide.    # The available data:   def self.collect_mainlist     poss = [] # You can change the order as you want, but can add nothing.     poss << [-1, $data_system.switches.size-1]     poss << [-2, $data_system.variables.size-1]     poss << [-3, $data_items.size-1]     poss << [-4, $data_actors.size-1]     poss << [0, $game_player]     poss << [-5, $game_map.events.size] # No need of -1 because it's a Hash. D:     poss << [-6, self.useful_data.size-1]     poss << [-7, $data_weapons.size-1]     poss << [-8, $data_armors.size-1]     poss << [-9, [$game_troop.members.size, 8].max]     poss # Unless you know what you're doing, of course.   end   def self.useful_data     da = [nil] # First value must be nil.     da << [["Party:", $game_party.members.size], # Open an array, add the item.            ["G:", $game_party.gold], # First value is a string shown...            ["S:", $game_party.steps], # ...second value is the variable to show.            ["T:", self.adjust_time(Graphics.frame_count)], # Remember the ,            ["Sav:", $game_system.save_count]] # Close the data array.            # Will show: "Party: 3 G: 333 S: 33 T: 3:33 Sav: 3" with something            #  instead of 3.     da << ["Timer:", self.adjust_time($game_system.timer)]            # Even a single item can be added. And variable can also be a def.     da << [["Map id:", $game_map.map_id],            ["Size:", $game_map.width], ["x", $game_map.height]]            # You can, as an exercise, add for example the map name.        # Add here your own! We want YOU for items adding.      da # Here just returns the datas.   end   def self.adjust_time(value) # Example of a function. Returns formatted time.     value /= Graphics.frame_rate # Graphics.frame_rate = 1 second.     sec = value % 60 # Get the seconds.     value -= sec # Subtract them.     "#{value/60}:#{sprintf("%02d",sec)}" # Return min:sec formatted time string.   end end  #Codename: vdebug   ($imported ||= {})[:mikb89_vdebug] = true  # License: # - You can ask me to include support for other scripts as long as these scripts #   use the $imported[script] = true; # - You can modify and even repost my scripts, after having received a response #   by me. For reposting it, anyway, you must have done heavy edit or porting, #   you can't do a post with the script as is; # - You can use my scripts for whatever you want, from free to open to #   commercial games. I'd appreciate by the way if you let me know about what #   you're doing; # - You must credit me, if you use this script or part of it.  # * operations to let the Visible Debug configuration be available  class Scene_Map #class Scene_Map#def call_debug() <- rewritten   def call_debug     Sound.play_decision     $game_temp.next_scene = nil     $scene = Scene_ChoiceDebug.new   end end    # Yanfly liked to destroy the Scene_End, let's support him!  if $imported["SystemGameOptions"] # REQUIRE YEM - System Game Options   class Scene_ChoiceDebug < Scene_Base # this is just a clone of the Scene_End #class Scene_ChoiceDebug#def start()     def start; super; create_menu_background; create_command_window; end #class Scene_ChoiceDebug#def post_start()     def post_start; super; open_command_window; end #class Scene_ChoiceDebug#def pre_terminate()     def pre_terminate; super; close_command_window; end #class Scene_ChoiceDebug#def terminate()     def terminate; super; @command_window.dispose; dispose_menu_background; end #class Scene_ChoiceDebug#def update()     def update       super; update_menu_background; @command_window.update       if Input.trigger?(Input::         Sound.play_cancel; return_scene       elsif Input.trigger?(Input::C); case @command_window.index         when 0; command_to_title         when 1; command_shutdown         when 2; Sound.play_decision; return_scene       end; end     end #class Scene_ChoiceDebug#def update_menu_background()     def update_menu_background; super; @menuback_sprite.tone.set(0,0,0,128); end #class Scene_ChoiceDebug#def open_command_window()     def open_command_window       @command_window.open; begin         @command_window.update; Graphics.update       end until @command_window.openness == 255     end #class Scene_ChoiceDebug#def close_command_window()     def close_command_window       @command_window.close; begin         @command_window.update; Graphics.update       end until @command_window.openness == 0     end   end # END REQUIRE else   class Scene_ChoiceDebug < Scene_End; end end  class Scene_ChoiceDebug #class Scene_ChoiceDebug#def return_scene()   def return_scene     $scene = Scene_Map.new   end #class Scene_ChoiceDebug#def create_command_window()   def create_command_window     s1 = VDEBUG::CALL_CLASSIC_DEBUG_TEXT     s2 = VDEBUG::CALL_VDEBUG_SETTINGS_TEXT     s3 = Vocab::cancel     @command_window = Window_Command.new(272, [s1, s2, s3])     @command_window.x = (544 - @command_window.width) / 2     @command_window.y = (416 - @command_window.height) / 2     @command_window.openness = 0   end   # just using original Scene_End class names #class Scene_ChoiceDebug#def command_to_title()   def command_to_title     Sound.play_decision     $scene = Scene_Debug.new     close_command_window   end #class Scene_ChoiceDebug#def command_shutdown()   def command_shutdown     Sound.play_decision     $scene = Scene_VisibleDebug.new     close_command_window   end end  # * operations to let the Visible Debug sprite work  #class Game_Event#def name() (class Game_Event; def name; @event.name; end; end) if VDEBUG::SHOW_EVENT_NAME  # why isn't the event name readable by default? WHY???  class Scene_End   alias_method(:terminateSE_b4_vdebug, :terminate) unless method_defined?(:terminateSE_b4_vdebug) #class Scene_End#def terminate() <- aliased   def terminate     terminateSE_b4_vdebug     # dispose the sprite on Shutdown and To title commands     $game_player.sdebug.dispose if !$scene || $scene.is_a?(Scene_Title)   end end  class Scene_Base   alias_method(:updateSB_b4_vdebug, :update) unless method_defined?(:updateSB_b4_vdebug) #class Scene_Base#def update() <- aliased   def update     updateSB_b4_vdebug     # update the debug sprite just everywhere!     $game_player.sdebug.update if $game_player   end   alias_method(:snapshot_for_background_b4_vdebug, :snapshot_for_background) unless method_defined?(:snapshot_for_background_b4_vdebug) #class Scene_Base#def snapshot_for_background() <- aliased   def snapshot_for_background     # we don't want the debug sprite to be captured in the snapshot     $game_player.sdebug.visible = false if $game_player     snapshot_for_background_b4_vdebug     $game_player.sdebug.visible = true if $game_player   end end class Game_Player   # rely sprite on $game_player due to its reperibility. No, I'm not kidding :E #class Game_Player#def sdebug()   def sdebug     @sdebug ||= Sprite_Debug.new   end end  class Sprite_Debug < Sprite   attr_reader :infos #class Sprite_Debug#def initialize(i, pos, vp)   def initialize(i = nil, pos = 0, vp = nil)     if vp == nil; super(); else; super(vp); end # viewport?     self.infos = (i.is_a?(Array) ? i : ) # must be an array     self.z = 99999999 # a big value     self.opacity = 222 # little transparency     @last_values = []     @pos = pos - 1; move_around # position set   end #class Sprite_Debug#def move_around()   def move_around     @pos += 1; @pos %= 5 # increase position, modulate value     self.x = w*(@pos%2) # right/left     self.y = Graphics.height/2*(@pos/2) # up/down/out   end #class Sprite_Debug#def w()   def w # just to write a little less     Graphics.width/2   end #class Sprite_Debug#def infos=(i)   def infos=(i)     @infos = i     create_bitmap # once data change, we recreate the image   end #class Sprite_Debug#def marshal_dump()   def marshal_dump     [@infos, @pos, self.viewport] # values to save   end #class Sprite_Debug#def marshal_load(data)   def marshal_load(data)     initialize(data[0] || nil, data[1] || 0, data[2] || nil)   end #class Sprite_Debug#def create_bitmap()   def create_bitmap     self.bitmap.dispose if self.bitmap && !self.bitmap.disposed?     h = @infos.size*24     self.bitmap = Bitmap.new(w,[h,1].max) # h is 0, if there's no item     for i in 0...@infos.size       next if @infos == nil || @infos.size < 2       draw_row(i, true)     end   end #class Sprite_Debug#def draw_row(i, new)   def draw_row(i, new = false)     self.bitmap.clear_rect(0,i*24,w,24) unless new # no need to clear if new     im = get_item(@infos) # get the bitmap then blt it. This way I can get     return unless im         #  the same bitmap everywhere ^^     draw_placement(0, i*24)     self.bitmap.blt(0, i*24, im, im.rect)     im.dispose   end #class Sprite_Debug#def draw_placement(x, y)   def draw_placement(x, y)     self.bitmap.fill_rect(x+4,y+6,w-8,24-8,Color.new(0,0,0,128)) # a bLackground   end #class Sprite_Debug#def collect(v)   def collect(v) # gets the relevant value(s) for each item     case v[0]       when 0; collect_player       when 1; $game_switches[v[1]]       when 2; $game_variables[v[1]]       when 3; $game_party.item_number($data_items[v[1]])       when 4; collect_actor($game_actors[v[1]])       when 5; collect_event($game_map.events[v[1]])       when 6; collect_data(VDEBUG::useful_data[v[1]])       when 7; $game_party.item_number($data_weapons[v[1]])       when 8; $game_party.item_number($data_armors[v[1]])       when 9; collect_enemy($game_troop.members[v[1]-1])       else; nil     end   end #class Sprite_Debug#def collect_player()   def collect_player     da = []     da << $game_player.character_name     da << $game_player.character_index     da << $game_player.direction     da << $game_player.x     da << $game_player.y     da << ($game_player.through || $game_player.debug_through?)     for i in [0, 1, 2]       da << $game_map.data[$game_player.x, $game_player.y, i]     end     da   end #class Sprite_Debug#def collect_actor(actor)   def collect_actor(actor)     da = []     da << actor.character_name     da << actor.character_index     da << actor.name     da << actor.level     da << actor.hp     da << actor.maxhp     da << actor.mp     da << actor.maxmp     da << actor.states     da << actor.atk     da << actor.def     da << actor.spi     da << actor.agi     da   end #class Sprite_Debug#def collect_event(event)   def collect_event(event)     da = []     return da if event.nil?     da << event.character_name     da << event.character_index     da << event.direction     da << event.x     da << event.y     da << (event.through || event.debug_through?)     for ss in ['A', 'B', 'C', 'D']       da << $game_self_switches[[$game_map.map_id, event.id, ss]]     end     da   end #class Sprite_Debug#def collect_data(data)   def collect_data(data)     da = []     return da if data.nil? || !data.is_a?(Array)     data = [data] unless data[0].is_a?(Array)     return da if data.size < 1     for val in data       da << val[1]     end     da   end #class Sprite_Debug#def collect_enemy(enemy)   def collect_enemy(enemy)     da = []     return da if enemy.nil?     da << enemy.battler_name     da << enemy.battler_hue     da << enemy.name     da << enemy.hp     da << enemy.maxhp     da << enemy.mp     da << enemy.maxmp     da << enemy.states     da << enemy.atk     da << enemy.def     da << enemy.spi     da << enemy.agi     da   end #class Sprite_Debug#def get_item(item, width, enabled)   def get_item(item, width = w, enabled = true) # draw item in a returned bitmap     bit = Bitmap.new(width,24)     bit.font.color.alpha = blta = enabled ? 255 : 128     case item[0]     when -9; draw_container(VDEBUG::ENEMY_LIST_TEXT, item[1], bit)     when -8; draw_container(VDEBUG::ARMOR_LIST_TEXT, item[1], bit)     when -7; draw_container(VDEBUG::WEAPON_LIST_TEXT, item[1], bit)     when -6; draw_container(VDEBUG::DATA_LIST_TEXT, item[1], bit)     when -5; draw_container(VDEBUG::EVENT_LIST_TEXT, item[1], bit)     when -4; draw_container(VDEBUG::ACTOR_LIST_TEXT, item[1], bit)     when -3; draw_container(VDEBUG::ITEM_LIST_TEXT, item[1], bit)     when -2; draw_container(VDEBUG::VARIABLE_LIST_TEXT, item[1], bit)     when -1; draw_container(VDEBUG::SWITCH_LIST_TEXT, item[1], bit)     when 0; draw_player(item[1], bit, blta)     when 1; draw_switch(item[1], bit, blta)     when 2; draw_variable(item[1], bit, blta)     when 3; draw_item(item[1], bit, blta)     when 4; draw_actor(item[1], bit, blta)     when 5; draw_event(item[1], bit, blta)     when 6; draw_data(item[1], bit, blta)     when 7; draw_weapon(item[1], bit, blta)     when 8; draw_armor(item[1], bit, blta)     when 9; draw_enemy(item[1], bit, blta)     else; bit.dispose; bit = nil     end     bit   end #class Sprite_Debug#def draw_container(txt, n, bitmap)   def draw_container(txt, n, bitmap)     bitmap.draw_text(12, 0, bitmap.width-32, 24, txt)     bitmap.draw_text(0, 0, bitmap.width, 24, n > 0 ? "(#{n})" : "", 2)   end #class Sprite_Debug#def draw_player(item, bitmap, blta)   def draw_player(item, bitmap, blta)     if item != nil       bitmap.blt(0, 0, get_character_icon(item, true), Rect.new(0,0,24,24), blta)       bitmap.draw_text(24, 0, bitmap.width, 24, "(#{item.x};#{item.y})")       tile = ""       for i in [0, 1, 2]         tile += $game_map.data[item.x, item.y, i].to_s + (i != 2 ? ", " : "")       end       bitmap.draw_text(0, 0, bitmap.width-3, 24, "Tile: #{tile}", 2)       if (item.through || item.debug_through?)         bitmap.font.size /= 2         bitmap.font.shadow = false         col = false         for i in -1..2; for j in -1..1 # I could avoid all this, but...           next if i == j && i == 0           if i == 2             next if j != 0             col = true             i = 0           end           bitmap.font.color = col ? Color.new(0,0,0) : Color.new(99,33,55)           bitmap.draw_text(i, j+8, 23, 24, "T", 2)           break if i == j && j == 0         end; end       end     end   end #class Sprite_Debug#def draw_switch(n, bitmap, blta)   def draw_switch(n, bitmap, blta)     if n != nil       name = $data_system.switches[n]       bitmap.blt(0, 0, get_text_icon("S"), Rect.new(0,0,24,24), blta)       bitmap.draw_text(24, 0, bitmap.width-32, 24, "[#{n}] #{name}:")       bitmap.draw_text(0, 0, bitmap.width, 24, "[O#{$game_switches[n] ? "N" : "FF"}]", 2)     end   end #class Sprite_Debug#def draw_variable(n, bitmap, blta)   def draw_variable(n, bitmap, blta)     if n != nil       name = $data_system.variables[n]       bitmap.blt(0, 0, get_text_icon("V"), Rect.new(0,0,24,24), blta)       bitmap.draw_text(24, 0, bitmap.width-32, 24, "[#{n}] #{name}:")       bitmap.draw_text(0, 0, bitmap.width-3, 24, $game_variables[n].to_s, 2)     end   end #class Sprite_Debug#def draw_item(n, bitmap, blta)   def draw_item(n, bitmap, blta)     item = $data_items[n]     if item != nil       bitmap.blt(0, 0, get_icon(item.icon_index), Rect.new(0,0,24,24), blta)       bitmap.draw_text(24, 0, bitmap.width, 24, item.name)       bitmap.draw_text(0, 0, bitmap.width-3, 24, $game_party.item_number(item), 2)     end   end #class Sprite_Debug#def draw_actor(n, bitmap, blta)   def draw_actor(n, bitmap, blta)     item = $game_actors[n]     if item != nil       iw = bitmap.width       bitmap.draw_text(24, 0, bitmap.width, 24, item.name)       wb = Window_Base.new(-(iw+32),-56,iw+32,56) # I get a Window_Base for its       wb.draw_actor_name(item, 24, 0)             #  useful draw_this, draw_that       gs = iw-w       vals = [-8, -2]       if $imported["CoreFixesUpgradesMelody"] || $imported["BattleEngineMelody"]         # REQUIRE YEM Battle Engine Melody OR YEM Core Fixes and Upgrades           if item.use_rage?             vals[0] -= 4; vals[1] -= 4; vals << 0             wb.draw_enemy_rage_gauge(item, 96, vals[2], 48+gs)           end         # END REQUIRE       end       wb.draw_actor_hp_gauge(item, 96, vals[0], 48+gs)       wb.draw_actor_mp_gauge(item, 96, vals[1], 48+gs)       wb.draw_actor_state(item, 154+gs, 0, 48)       wb.contents.font.size /= 2       wb.contents.font.shadow = false       col = false       for i in -1..2; for j in -1..1         next if i == j && i == 0         if i == 2           next if j != 0           col = true           i = 0         end         wb.contents.font.color = col ? Color.new(0,0,0) : wb.system_color         wb.contents.draw_text(i+6-1, j+8, 12, 24, Vocab::level_a)         wb.contents.draw_text(i+iw-80+16, j-4, 22, 24, Vocab::atk[0...3])         wb.contents.draw_text(i+iw-48+16, j-4, 22, 24, Vocab::def[0...3])         wb.contents.draw_text(i+iw-80+16, j+6, 22, 24, Vocab::spi[0...3])         wb.contents.draw_text(i+iw-48+16, j+6, 22, 24, Vocab::agi[0...3])         wb.contents.font.color = col ? Color.new(0,0,0) : wb.normal_color         wb.contents.draw_text(i, j+8, 23, 24, item.level, 2)         wb.contents.draw_text(i+iw-80+26, j-4, 18, 24, item.atk, 2)         wb.contents.draw_text(i+iw-48+26, j-4, 18, 24, item.def, 2)         wb.contents.draw_text(i+iw-80+26, j+6, 18, 24, item.spi, 2)         wb.contents.draw_text(i+iw-48+26, j+6, 18, 24, item.agi, 2)         break if i == j && j == 0       end;end       bitmap.blt(0, 0, get_character_icon(item), Rect.new(0,0,24,24), blta)       bitmap.blt(0, 0, wb.contents, wb.contents.rect, blta)       wb.dispose     end   end #class Sprite_Debug#def draw_event(n, bitmap, blta)   def draw_event(n, bitmap, blta)     item = $game_map.events[n]     if item != nil       bitmap.blt(0, 0, get_character_icon(item, true), Rect.new(0,0,24,24), blta)       nm = VDEBUG::SHOW_EVENT_NAME ? item.name : ""       bitmap.draw_text(24, 0, bitmap.width-3, 24, "[#{item.id}](#{item.x};#{item.y})#{nm}")       loc = "ON:"       for ss in ['A', 'B', 'C', 'D']         loc += " " + ss + "," if $game_self_switches[[$game_map.map_id, item.id, ss]]       end       loc[-1] = "" if loc[-1].chr == ','       bitmap.draw_text(0, 0, bitmap.width, 24, loc, 2)       if (item.through || item.debug_through?)         bitmap.font.size /= 2         bitmap.font.shadow = false         col = false         for i in -1..2; for j in -1..1           next if i == j && i == 0           if i == 2             next if j != 0             col = true             i = 0           end           bitmap.font.color = col ? Color.new(0,0,0) : Color.new(99,33,55)           bitmap.draw_text(i, j+8, 23, 24, "T", 2) if (item.through || item.debug_through?)           break if i == j && j == 0         end; end       end     else       bitmap.blt(0, 0, get_text_icon(n.to_s), Rect.new(0,0,24,24), blta)       bitmap.draw_text(0, 0, bitmap.width, 24, "EV#{sprintf("%03d", n)}", 1)     end   end #class Sprite_Debug#def draw_data(n, bitmap, blta)   def draw_data(n, bitmap, blta)     item = VDEBUG::useful_data[n]     if item != nil && item.is_a?(Array)       item = [item] unless item[0].is_a?(Array)       return if item.size < 1       str = ""       for val in item         str += val[0] + " #{val[1]} "       end       str[-1] = "" if str[-1].chr == " "       bitmap.draw_text(0, 0, bitmap.width, 24, str, 1)     end   end #class Sprite_Debug#def draw_weapon(n, bitmap, blta)   def draw_weapon(n, bitmap, blta)     item = $data_weapons[n]     if item != nil       bitmap.blt(0, 0, get_icon(item.icon_index), Rect.new(0,0,24,24), blta)       bitmap.draw_text(24, 0, bitmap.width, 24, item.name)       bitmap.draw_text(0, 0, bitmap.width-3, 24, $game_party.item_number(item), 2)     end   end #class Sprite_Debug#def draw_armor(n, bitmap, blta)   def draw_armor(n, bitmap, blta)     item = $data_armors[n]     if item != nil       bitmap.blt(0, 0, get_icon(item.icon_index), Rect.new(0,0,24,24), blta)       bitmap.draw_text(24, 0, bitmap.width, 24, item.name)       bitmap.draw_text(0, 0, bitmap.width-3, 24, $game_party.item_number(item), 2)     end   end #class Sprite_Debug#def draw_enemy(n, bitmap, blta)   def draw_enemy(n, bitmap, blta)     item = $game_troop.members[n-1]     iw = bitmap.width     if item != nil       wb = Window_Base.new(-(iw+32),-56,iw+32,56) # I get a Window_Base for its       wb.draw_actor_name(item, 24, 0)             #  useful draw_this, draw_that       gs = iw-w       vals = [-8, -2]       if $imported["CoreFixesUpgradesMelody"] || $imported["BattleEngineMelody"]         # REQUIRE YEM Battle Engine Melody OR YEM Core Fixes and Upgrades           if item.use_rage?             vals[0] -= 4; vals[1] -= 4; vals << 0             wb.draw_enemy_rage_gauge(item, 96, vals[2], 48+gs)           end         # END REQUIRE       end       wb.draw_actor_hp_gauge(item, 96, vals[0], 48+gs)       wb.draw_actor_mp_gauge(item, 96, vals[1], 48+gs)       wb.draw_actor_state(item, 154+gs, 0, 48)       wb.contents.font.size /= 2       wb.contents.font.shadow = false       col = false       for i in -1..2; for j in -1..1         next if i == j && i == 0         if i == 2           next if j != 0           col = true           i = 0         end         wb.contents.font.color = col ? Color.new(0,0,0) : wb.system_color         wb.contents.draw_text(i+iw-80+16, j-4, 22, 24, Vocab::atk[0...3])         wb.contents.draw_text(i+iw-48+16, j-4, 22, 24, Vocab::def[0...3])         wb.contents.draw_text(i+iw-80+16, j+6, 22, 24, Vocab::spi[0...3])         wb.contents.draw_text(i+iw-48+16, j+6, 22, 24, Vocab::agi[0...3])         wb.contents.font.color = col ? Color.new(0,0,0) : wb.normal_color         wb.contents.draw_text(i, j+8, 23, 24, item.letter, 2)         wb.contents.draw_text(i+iw-80+26, j-4, 18, 24, item.atk, 2)         wb.contents.draw_text(i+iw-48+26, j-4, 18, 24, item.def, 2)         wb.contents.draw_text(i+iw-80+26, j+6, 18, 24, item.spi, 2)         wb.contents.draw_text(i+iw-48+26, j+6, 18, 24, item.agi, 2)         break if i == j && j == 0       end;end       bitmap.blt(0, 0, get_enemy_icon(item), Rect.new(0,0,24,24), blta)       bitmap.blt(0, 0, wb.contents, wb.contents.rect, blta)       wb.dispose     else       bitmap.blt(0, 0, get_text_icon(n.to_s), Rect.new(0,0,24,24), blta)       bitmap.draw_text(0, 0, iw, 24, "...", 1)     end   end #class Sprite_Debug#def get_icon(index)   def get_icon(index) # get an icon with the Window_Base, cache it     @icache ||= {}     return @icache[index] if @icache[index]     wb = Window_Base.new(-56,-56,56,56)     wb.draw_icon(index,0,0)     bit = wb.contents.clone     wb.dispose     @icache[index] = bit     bit   end #class Sprite_Debug#def get_character_icon(chara, dir)   def get_character_icon(chara, dir = false) # get iconized character from...     if $imported["BattleEngineMelody"] && !dir # actors here have icons ^^       # REQUIRE YEM Battle Engine Melody         return get_icon(chara.battler_icon)       # END REQUIRE     end     @icache ||= {}     c_id = chara.character_name + "_" + chara.character_index.to_s + "_" +            (dir ? chara.direction.to_s : "2")     return @icache[c_id] if @icache[c_id]     if dir       cp = chara.clone       cp.transparent = true       sc = Sprite_Character.new(nil, cp) # ...a Sprite_Character or...       bit = Bitmap.new(24, 24)       bit.blt((24-sc.src_rect.width)/2,(24-sc.src_rect.height)/2,sc.bitmap, sc.src_rect)       sc.dispose       cp = nil     else       wb = Window_Base.new(-56,-56,56,56) # ...a Window_Base...       wb.draw_actor_graphic(chara,12,33)       bit = wb.contents.clone       wb.dispose     end     @icache[c_id] = bit # ...and cache it     bit   end #class Sprite_Debug#def get_text_icon(text)   def get_text_icon(text) # get an iconized text, like S, V or numbers     @icache ||= {}     return @icache[text] if @icache[text]     bit = Bitmap.new(24,24)     bit.font.shadow = false     bit.font.italic = true     bit.font.bold = true     bit.font.size -= 1     bit.font.color = Color.new(81,59,59, 128)     for i in -2..2; for j in -1..1 # draw black text many times around       bit.draw_text(i,j+2,24,24,text,1)     end; end     bit.blur # then blur it     bit.font.color = Color.new(255,255,255)     bit.draw_text(0,2,24,24,text,1)     @icache[text] = bit     bit   end #class Sprite_Debug#def get_enemy_icon(enemy)   def get_enemy_icon(enemy) # get an iconized enemy graphic     @icache ||= {}     if $imported["BattleEngineMelody"] # battlers here already have an icon ^^       # REQUIRE YEM Battle Engine Melody         wtf = enemy.enemy.enemy_icon_hue # enemy enemy enemy enemy enemy xD         id = enemy.battler_icon.to_s + "_" + wtf.to_s         return @icache[id] if @icache[id]         bit = get_icon(enemy.battler_icon).clone         bit.hue_change(wtf) if wtf != 0       # END REQUIRE     else       id = enemy.battler_name + "_" + enemy.battler_hue.to_s       return @icache[id] if @icache[id]       bit = Bitmap.new(24,24)       sb = Sprite_Battler.new(nil, enemy) # get the bitmap from a Sprite_Battler       sb.opacity = 0 # don't wanna see the full battler       if $imported["TankentaiSideview(Kaduki)"]         # REQUIRE RPG Tankentai Sideview Battle System           sb.make_battler # Tankentai has its own function for battler drawing         # END REQUIRE       else         sb.update_battler_bitmap # let the graphic be loaded       end       sb.dispose if sb.bitmap.nil? || sb.bitmap.disposed? # no graphic?       return bit if sb.disposed?       b2 = Bitmap.new(sb.src_rect.width, sb.src_rect.height) # I get a new bitmap       b2.blt(0, 0, sb.bitmap, sb.src_rect)                   #  within src_rect       sb.bitmap = b2 # disposing sb even its bitmap will be disposed       if b2.width <= 24 || b2.height <= 24 # if little bitmap just center it         bit.blt((24-b2.width)/2, (24-b2.height)/2, b2, b2.rect)       else # else resize         fact = (b2.width > b2.height ? b2.height : b2.width)/24.0         nw = b2.width/fact; nh = b2.height/fact         bit.stretch_blt(Rect.new((24-nw)/2, (24-nh)/2, nw, nh), b2, b2.rect)       end       sb.dispose     end     @icache[id] = bit     bit   end #class Sprite_Debug#def update()   def update     move_around if Input.trigger?(VDEBUG::MOVE_AROUND_KEY)     for i in 0...@infos.compact.size       v = @infos       # set every new value and redraw if needed       draw_row(i) if @last_values != (@last_values = collect(v))     end     super   end end  # * operation to create a Visible Debug options screen  class Window_VDList < Window_Selectable   # a silly, simple, window that handle a list   attr_reader :data #class Window_VDList#def initialize(x, y, list, ctd)   def initialize(x, y, list = [], ctd = false)     super(x, y, Graphics.width/2, Graphics.height-y)     @column_max = 1     @cantdisable = ctd     self.index = 0     set_list(list)   end #class Window_VDList#def set_list(list)   def set_list(list)     @data = list     @item_max = @data.size     self.index = @item_max - 1 if self.index > 0 && @item_max < self.index     refresh   end #class Window_VDList#def enabled?(index)   def enabled?(index)     return true if @cantdisable     !$game_player.sdebug.infos.include?(@data[index])   end #class Window_VDList#def item()   def item     return @data[self.index]   end #class Window_VDList#def add_item(it)   def add_item(it)     @data.push(it)     set_list(@data.compact)   end #class Window_VDList#def remove_item(it)   def remove_item(it)     remove(@data.index(it))   end #class Window_VDList#def remove(index)   def remove(index)     return if index == nil     return if index < 0     return if index >= @data.size     @data.delete_at(index)     set_list(@data)   end #class Window_VDList#def refresh()   def refresh     create_contents     for i in 0...@item_max       draw_item(i)     end   end #class Window_VDList#def draw_item(index)   def draw_item(index)     rect = item_rect(index)     self.contents.clear_rect(rect)     return if @data[index].nil?     im = $game_player.sdebug.get_item(@data[index], rect.width-4, enabled?(index))     self.contents.blt(rect.x, rect.y, im, im.rect) if im     im.dispose if im   end end  class Scene_VisibleDebug < Scene_Base   # a silly, simple, scene #class Scene_VisibleDebug#def start()   def start     super     create_menu_background     @help_window = Window_Help.new     @help_window.set_text(VDEBUG::HELP_TEXT)     ips = @help_window.height     # third list window parameter is the list, fourth is the cantdisable value     @mainlist_window = Window_VDList.new(0, ips, VDEBUG::collect_mainlist)     @debuglist_window = Window_VDList.new(@mainlist_window.width, ips,                                           $game_player.sdebug.infos, true)     @elementlist_window = Window_VDList.new(0, ips)     @elementlist_window.visible = false     @elementlist_window.active = false     @debuglist_window.active = false   end #class Scene_VisibleDebug#def terminate()   def terminate     super     dispose_menu_background     @help_window.dispose     @mainlist_window.dispose     @debuglist_window.dispose     @elementlist_window.dispose   end #class Scene_VisibleDebug#def update()   def update     super     update_menu_background     @help_window.update     @mainlist_window.update     @debuglist_window.update     @elementlist_window.update     if @mainlist_window.active       update_mainlist     elsif @debuglist_window.active       update_debuglist     elsif @elementlist_window.active       update_elementlist     end   end #class Scene_VisibleDebug#def update_mainlist()   def update_mainlist     if Input.trigger?(Input::       Sound.play_cancel       $scene = Scene_Map.new       return     elsif Input.trigger?(Input::C)       Sound.play_decision       it = @mainlist_window.item       if it[0] >= 0 # if item's a item:         if @mainlist_window.enabled?(@mainlist_window.index) # add/remove           @debuglist_window.add_item(it)         else           @debuglist_window.remove_item(it)         end         $game_player.sdebug.infos = @debuglist_window.data # update         @mainlist_window.draw_item(@mainlist_window.index) # redraw       else # if item's a group:         process_elementlist_open(it) # open the sub-list         @mainlist_window.active = false         @elementlist_window.active = true       end     elsif Input.trigger?(Input::R) || Input.trigger?(Input::L)       Sound.play_cursor       @mainlist_window.active = false       @debuglist_window.active = true     end   end #class Scene_VisibleDebug#def update_debuglist()   def update_debuglist     if Input.trigger?(Input::       Sound.play_cancel       $scene = Scene_Map.new       return     elsif Input.trigger?(Input::C)       Sound.play_decision       @debuglist_window.remove(@debuglist_window.index) # remove the item       $game_player.sdebug.infos = @debuglist_window.data # update       @mainlist_window.refresh # redraw     elsif Input.trigger?(Input::R) || Input.trigger?(Input::L)       Sound.play_cursor       @mainlist_window.active = true       @debuglist_window.active = false     end   end #class Scene_VisibleDebug#def update_elementlist()   def update_elementlist     if Input.trigger?(Input::       Sound.play_cancel       @elementlist_window.active = false       @mainlist_window.active = true       @elementlist_window.close     elsif Input.trigger?(Input::C)       Sound.play_decision       it = @elementlist_window.item       if @elementlist_window.enabled?(@elementlist_window.index) # add/remove         @debuglist_window.add_item(it)       else         @debuglist_window.remove_item(it)       end       $game_player.sdebug.infos = @debuglist_window.data # update       @elementlist_window.draw_item(@elementlist_window.index) # redraw     end   end #class Scene_VisibleDebug#def process_elementlist_open(it)   def process_elementlist_open(it) # it contains the type and the size     # collect elements of the group     vals = []     for d in 1..it[1] # starting from 1, because there aren't IDs 0        vals << [it[0]*-1,d] # the type must be positive     end     # and let the window appears     @elementlist_window.set_list(vals)     @elementlist_window.index = 0     @elementlist_window.visible = true     @elementlist_window.open   end end





    Also visible on Pastebin.FAQ

    Saves will contain the actual in-game list. It is possible to load previous saves, but to continue using those done while using this script, if you remove it, you can use a little piece of code you can find in the demo.

    Credit and Thanks

    Thanks Silver Element for having me inspired the idea


    Author's Notes

    N/A


    本贴来自国际rpgmaker官方论坛作者:mikb89处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/visible-debug-1-2.3459/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-10-6 08:02 , Processed in 0.087824 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表