Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More

Recommended Posts

Nome Script: Visible Debug

Versione: 1.2c

Autore/i: mikb89

 

Informazioni:

Capita che qualcosa vada storto fra switch e variabili. Non sai cosa succede, sai solo che non funziona come previsto. Qui entra in gioco questo script!

 

Features:

Con questo script puoi tenere sotto controllo una lista di parametri vari i cui cambiamenti saranno mostrati in tempo reale. Questa lista include:

  • switch e variabili, switch locali degli eventi;
  • grafica di eventi, giocatore, eroi, nemici;
  • posizione e stato 'Come fantasma' di eventi e giocatore;
  • id dei tile dove si trova il giocatore;
  • numero di oggetti, armi, armature possedute;
  • hp, mp, tp (se abilitato), atk, def, luk, agi, due stati dei combattenti;
  • nomi & livello degli eroi (i nemici non li hanno);
  • altre informazioni utili aggiunte dalle configurazioni (puoi vedere come sono fatte e aggiungerne di tue).
Screenshots:

visibledebugvxace.png

 

Istruzioni:

Inserite lo script sotto Materials. Le istruzioni sono fra i commenti.

 

Script

 

 

# Visible Debug v. 1.2c# VX Ace version# by mikb89# Dettagli:#  Capita che qualcosa vada storto fra switch e variabili. Non sai cosa#   succede, sai solo che non funziona come previsto.#  Con questo script puoi tenere sotto controllo una lista di parametri#   vari i cui cambiamenti saranno mostrati in tempo reale.#  Questa lista include:#   - switch e variabili, switch locali degli eventi;#   - grafica di eventi, giocatore, eroi, nemici;#   - posizione e stato 'Come fantasma' di eventi e giocatore;#   - id dei tile dove si trova il giocatore;#   - numero di oggetti, armi, armature possedute;#   - hp, mp, tp (se abilitato), atk, def, luk, agi, due stati dei combattenti;#   - nomi & livello degli eroi (i nemici non li hanno);#   - altre informazioni utili aggiunte dalle configurazioni (puoi vedere#     come sono fatte e aggiungerne di tue).# Configurazioni:module VDEBUG  # Lista di termini da personalizzare come si vuole:  HELP_TEXT = "Invio: aggiungi/togli; Pag: cambia lista." # Aiutati!  # Cosa appare alla pressione di F9:    CALL_CLASSIC_DEBUG_TEXT = "Chiama Debug"    CALL_VDEBUG_SETTINGS_TEXT = "Dati Visible Debug"  # Nomi delle liste:    SWITCH_LIST_TEXT = "Switch"    VARIABLE_LIST_TEXT = "Variabili"    ITEM_LIST_TEXT = "Oggetti"    ACTOR_LIST_TEXT = "Eroi"    EVENT_LIST_TEXT = "Eventi"    DATA_LIST_TEXT = "Info"    WEAPON_LIST_TEXT = "Armi"    ARMOR_LIST_TEXT = "Armature"    ENEMY_LIST_TEXT = "Nemici"  SHOW_EVENT_NAME = true # Mostra nomi di eventi. Metti false per compatibilità.  MOVE_AROUND_KEY = :ALT   # Premendo questo più volte, l'hud del Visible Debug si sposterà nei quattro   #  angoli dello schermo e si nasconderà.  # Dati disponibili:  def self.collect_mainlist    poss = [] # Puoi cambiare l'ordine, ma non puoi aggiungere voci.    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] # Non serve -1 perché è un 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 # A patto che tu non sappia quel che fai, naturalmente.  end  def self.useful_data    da = [nil] # Il primo valore dev'essere nil.    da << [["Party:", $game_party.members.size], # Apri un array, aggiungi.           ["G:", $game_party.gold], # Primo valore: stringa mostrata...           ["S:", $game_party.steps], # ...secondo valore: variabile col dato.           ["T:", self.adjust_time(Graphics.frame_count)], # Ricorda le ,           ["Sav:", $game_system.save_count]] # Chiudi l'array.           # Mostrerà: "Party: 3 G: 333 S: 33 T: 3:33 Sav: 3" con qualcosa           #  invece di 3.    da << ["Timer:", self.adjust_time($game_timer.sec)]           # Anche un elemento singolo può essere aggiunto. E la variabile           #  può anche venir fuori da una funzione def.    da << [["Map id:", $game_map.map_id],           ["Size:", $game_map.width], ["x", $game_map.height]]           # Puoi, come esercizio, aggiungere ad esempio il nome mappa.      # Aggiungi qui le tue info personalizzate! TU puoi.    da # Semplicemente restituisce l'array.  end  def self.adjust_time(value) # Esempio di funzione. Formatta il tempo.    value /= Graphics.frame_rate # Graphics.frame_rate = 1 secondo.    sec = value % 60 # Ottiene i secondi.    value -= sec # Li sottrae.    "#{value/60}:#{sprintf("%02d",sec)}" # Restituisce il tempo come min:sec.  endend#Codename: vdebug($imported ||= {})[:mikb89_vdebug] = true# Licenza:# - Puoi chiedermi di includere il supporto per altri script, a patto che usino#   il $imported[script] = true;# - Puoi modificare e anche ripostare i miei script, dopo una mia risposta. Per#   ripostarli, comunque, devi aver fatto pesanti modifiche o porting, non puoi#   fare un post con lo script così com'è;# - Puoi usare i miei script per fare quel che vuoi, da giochi gratis a liberi#   a commerciali. Apprezzerei comunque essere messo al corrente di quello che#   stai creando;# - Devi creditarmi, se usi questo script o parte di esso.# * operations to let the Visible Debug configuration be availableclass Scene_Map#class Scene_Map#def update_call_debug() <- rewritten  def update_call_debug    SceneManager.call(Scene_ChoiceDebug) if $TEST && Input.press?(:F9)  endendclass Window_GameDebug < Window_GameEnd#class Window_GameDebug#def make_command_list()  def make_command_list    add_command(VDEBUG::CALL_CLASSIC_DEBUG_TEXT, :dbg)    add_command(VDEBUG::CALL_VDEBUG_SETTINGS_TEXT, :vd)    add_command(Vocab::cancel, :cancel)  endendclass Scene_ChoiceDebug < Scene_MenuBase#class Scene_ChoiceDebug#def start()  def start    super; @command_window = Window_GameDebug.new    @command_window.set_handler(:dbg, proc{SceneManager.goto(Scene_Debug)})    @command_window.set_handler(:vd, proc{SceneManager.goto(Scene_VisibleDebug)})    @command_window.set_handler(:cancel, method(:return_scene))  end#class Scene_ChoiceDebug#def pre_terminate()  def pre_terminate    super; @command_window.close; update until @command_window.close?  endend# * 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_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  endendclass << SceneManager  alias_method(:run_b4_vdebug, :run) unless method_defined?(:run_b4_vdebug)#class Scene_Manager#def self.run() <- aliased  def run    run_b4_vdebug    $game_player.sdebug.dispose  end  alias_method(:snapshot_for_background_b4_vdebug, :snapshot_for_background) unless method_defined?(:snapshot_for_background_b4_vdebug)#class Scene_Manager#def self.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  endendclass 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  endendclass Sprite_Debug < Sprite  attr_reader :infos#class Sprite_Debug#def initialize(i, pos)  def initialize(i = nil, pos = 0)    super()    self.infos = (i.is_a?(Array) ? i : [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 _dump(*args)  def _dump(*args)    str = @infos[0].nil? ? "n," : ""    @infos.each {|i|      i.each {|d| str += " #{d.is_a?(Numeric) ? d : "p"}"}      str += ","    } if str == ""    str += @pos.to_s # values to save  end#class Sprite_Debug#def _load(data)  def self._load(data)    p data    data = data.split(',')    pos = data.pop.to_i || 0    i = data[0] == "n" ? nil : data.each_index {|d|          data[d] = data[d].split          data[d].each_index {|n| data[d][n] = (data[d][n] == "p" ? $game_player : data[d][n].to_i)}        }    Sprite_Debug.new(i, pos)  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 [email protected]      next if @infos[i] == nil || @infos[i].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[i]) # 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.mhp    da << actor.mp    da << actor.mmp    da << actor.states    da << actor.atk    da << actor.def    da << actor.luk    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.mhp    da << enemy.mp    da << enemy.mmp    da << enemy.states    da << enemy.atk    da << enemy.def    da << enemy.luk    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.color = Color.new(0,0,0)        bitmap.font.out_color = Color.new(99,33,55)        bitmap.draw_text(0, 8, 23, 24, "T", 2)      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 $data_system.opt_display_tp        vals[0] -= 4; vals[1] -= 4; vals << 0        wb.draw_gauge(96, vals[2], 48+gs, item.tp_rate, wb.tp_gauge_color1, wb.tp_gauge_color2)      end      wb.draw_gauge(96, vals[0], 48+gs, item.hp_rate, wb.hp_gauge_color1, wb.hp_gauge_color2)      wb.draw_gauge(96, vals[1], 48+gs, item.mp_rate, wb.mp_gauge_color1, wb.mp_gauge_color2)      wb.draw_actor_icons(item, 154+gs, 0, 48)      wb.contents.font.size /= 2      wb.contents.font.color = Color.new(0,0,0)      wb.contents.font.out_color = wb.system_color      wb.contents.draw_text(5, 8, 12, 24, Vocab::level_a)      wb.contents.draw_text(iw-80+16, -4, 22, 24, Vocab::param(2)[0...3])      wb.contents.draw_text(iw-48+16, -4, 22, 24, Vocab::param(3)[0...3])      wb.contents.draw_text(iw-80+16, 6, 22, 24, Vocab::param(6)[0...3])      wb.contents.draw_text(iw-48+16, 6, 22, 24, Vocab::param(7)[0...3])      wb.contents.font.out_color = wb.normal_color      wb.contents.draw_text(0, 8, 23, 24, item.level, 2)      wb.contents.draw_text(iw-80+26, -4, 18, 24, item.atk, 2)      wb.contents.draw_text(iw-48+26, -4, 18, 24, item.def, 2)      wb.contents.draw_text(iw-80+26, 6, 18, 24, item.luk, 2)      wb.contents.draw_text(iw-48+26, 6, 18, 24, item.agi, 2)      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] == ','      bitmap.draw_text(0, 0, bitmap.width, 24, loc, 2)      if (item.through || item.debug_through?)        bitmap.font.color = Color.new(0,0,0)        bitmap.font.out_color = Color.new(99,33,55)        bitmap.draw_text(0, 8, 23, 24, "T", 2)      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] == " "      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 $data_system.opt_display_tp        vals[0] -= 4; vals[1] -= 4; vals << 0        wb.draw_gauge(96, vals[2], 48+gs, item.tp_rate, wb.tp_gauge_color1, wb.tp_gauge_color2)      end      wb.draw_gauge(96, vals[0], 48+gs, item.hp_rate, wb.hp_gauge_color1, wb.hp_gauge_color2)      wb.draw_gauge(96, vals[1], 48+gs, item.mp_rate, wb.mp_gauge_color1, wb.mp_gauge_color2)      wb.draw_actor_icons(item, 154+gs, 0, 48)      wb.contents.font.size /= 2      wb.contents.font.color = Color.new(0,0,0)      wb.contents.font.out_color = wb.system_color      wb.contents.draw_text(iw-80+16, -4, 22, 24, Vocab::param(2)[0...3])      wb.contents.draw_text(iw-48+16, -4, 22, 24, Vocab::param(3)[0...3])      wb.contents.draw_text(iw-80+16, 6, 22, 24, Vocab::param(6)[0...3])      wb.contents.draw_text(iw-48+16, 6, 22, 24, Vocab::param(7)[0...3])      wb.contents.font.out_color = wb.normal_color      wb.contents.draw_text(0, 8, 23, 24, item.letter, 2)      wb.contents.draw_text(iw-80+26, -4, 18, 24, item.atk, 2)      wb.contents.draw_text(iw-48+26, -4, 18, 24, item.def, 2)      wb.contents.draw_text(iw-80+26, 6, 18, 24, item.luk, 2)      wb.contents.draw_text(iw-48+26, 6, 18, 24, item.agi, 2)      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...    @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 ||= {}    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    sb.update_bitmap # let the graphic be loaded    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    @icache[id] = bit    bit  end#class Sprite_Debug#def update()  def update    return if SceneManager.scene_is?(Scene_File)    move_around if Input.trigger?(VDEBUG::MOVE_AROUND_KEY)    for i in [email protected]      v = @infos[i]      # set every new value and redraw if needed      draw_row(i) if @last_values[i] != (@last_values[i] = collect(v))    end    super  endend# * operation to create a Visible Debug options screenclass 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)    @cantdisable = ctd    self.index = 0    set_list(list)  end#class Window_VDList#def item_max()  def item_max    @data ? @data.size : 1  end#class Window_VDList#def set_list(list)  def set_list(list)    @data = list    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  endendclass Scene_VisibleDebug < Scene_Base  # a silly, simple, scene#class Scene_VisibleDebug#def start()  def start    super    @help_window = Window_Help.new(1)    @help_window.set_text(VDEBUG:<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/help.gif' class='bbc_emoticon' alt=':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    @mainlist_window.activate    @mainlist_window.set_handler(:ok, method(:mainlist_ok))    @mainlist_window.set_handler(:cancel, method(:return_scene))    @mainlist_window.set_handler(:pageup, method(:mainlist_pag))    @mainlist_window.set_handler(:pagedown, method(:mainlist_pag))    @debuglist_window.set_handler(:ok, method(:debuglist_ok))    @debuglist_window.set_handler(:cancel, method(:return_scene))    @debuglist_window.set_handler(:pageup, method(:debuglist_pag))    @debuglist_window.set_handler(:pagedown, method(:debuglist_pag))    @elementlist_window.set_handler(:ok, method(:elementlist_ok))    @elementlist_window.set_handler(:cancel, method(:elementlist_cancel))  end#class Scene_VisibleDebug#def mainlist_ok()  def mainlist_ok    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      @mainlist_window.activate    else # if item's a group:      process_elementlist_open(it) # open the sub-list      @elementlist_window.activate    end  end#class Scene_VisibleDebug#def mainlist_pag()  def mainlist_pag    @debuglist_window.activate  end#class Scene_VisibleDebug#def debuglist_ok()  def debuglist_ok    @debuglist_window.remove(@debuglist_window.index) # remove the item    $game_player.sdebug.infos = @debuglist_window.data # update    @mainlist_window.refresh # redraw    @debuglist_window.activate  end#class Scene_VisibleDebug#def debuglist_pag()  def debuglist_pag    @mainlist_window.activate  end#class Scene_VisibleDebug#def elementlist_ok()  def elementlist_ok    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    @elementlist_window.activate  end#class Scene_VisibleDebug#def elementlist_cancel()  def elementlist_cancel    @mainlist_window.activate    @elementlist_window.close  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  endend

 

Demo:

Demo multilingua v. 1.2c (1.33 MB)

http://www.mediafire.com/?o5dqoberdpn9opa

 

Incompatibilità:

I salvataggi vengono modificati per contenere la lista di dati scelta. È possibile comunque caricare salvataggi precedenti, mentre per continuare ad usare quelli effettuati in presenza dello script, nel caso quest'ultimo venisse rimosso, è presente nella demo un piccolo codicino - per nulla invadente - da lasciare.

 

Note dell'autore:

Grazie a @Silver Element per avermi ispirato l'idea (:

Grazie a @Melosx per avermi supportato con un fastidioso bug ^^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • Contenuti simili

    • Da Ally
      Nome Script: FIX Pictures su mappa
      Versione: 1.0
      Autore/i: Ally

      Informazioni:
      Vedendo uno script per VX, ne ho fatta una versione per VX Ace, sperando possa essere utile a qualcuno.

      Quest'ultimo, come da titolo, da la possibilità di fissare le picture su mappa, dandovi la possibilità quindi di utilizzare picture che staranno ancorate sulla mappa anche se il PG si muove.

      La cosa si può fare benissimo anche ad eventi, ma l'utilizzo di questo è semplicissimo e in questo modo non starete a settarvi varibili etc...

      Istruzioni:
      Inserite lo script sotto Material.

      Le istruzioni sono all'interno dello script.

      Script:
      #======================================================= # ▼FIX Picture su Mappa▼ # Autore: Ally # Data: 08/01/2012 # Versione: 1.0 # Esclusiva per http://www.rpgmkr.net # Vietato postare lo script senza il permesso dell'Autore # # ▼Info e Istruzioni▼ # Con questo script si ha la possibilità di fissare # le picture alla mappa aggiungendo semplicemente la # parola FIX prima del nome della picture. # # ▼Conflitti Noti: N/D▼ #======================================================= #============================================================================== # ** Sprite_Picture #------------------------------------------------------------------------------ #  This sprite is used to display pictures. It observes an instance of the # Game_Picture class and automatically changes sprite states. #============================================================================== class Sprite_Picture < Sprite def update_position if @picture.name.include?("FIX") self.x = -$game_map.display_x*32 self.y = -$game_map.display_y*32 else self.x = @picture.x self.y = @picture.y end self.z = @picture.number end end # Fine Script # Incompatibilità:
      N/D

      Note dell'Autore:
      Per uso a scopo commerciale, contattate l'Autore per MP.
      E' vietato distribuire lo script senza il permesso dell'Autore.
    • Da Ally
      Nome Script: Link Event
      Versione: 1.60
      Autore/i: kingartur2(kingartur3)

      Informazioni:
      Nello script ce ne sono a suffienza.
      PS : se ci sono suggerimenti sono bel accolti.

      Istruzioni:
      Le trovate sempre nello script

      Script:


      #===============================================================================# Autore : kingartur2(kingartur3)# Versione : 1.60#===============================================================================# Istruzioni :# Apporre in un evento il seguente commento :## Link Event x## dove x rappresenta l'id dell'evento da collegare# in questo modo le switch locali dell'evento con id x non saranno più# considerate e le sue switch locali saranno on se tutti gli eventi ad esso# collegati avranno quella switch locale ad on.# Esempio :# Colleghi l'evento con id 1, 2, e 3 all'evento 4.# Se tramite il comando evento cambi la switch locale A dell'evento 4 non# succede nulla, se invece nell'evento 1,2 e 3 la switch locale A risulterà# a ON allora anche nell'evento 4 sarà così, però se nell'evento 1 e 2 la switch# locale A sarà ON e nell'evento 3 sarà OFF allora sarà OFF anche nell'evento 4## Link Event [id mappa, x]# Funziona allo stesso modo del comando precedente con la differenza che in# questo caso l'evento linkato si troverà in un altra mappa#===============================================================================class Game_Map attr_accessor :link_event alias djasijdiasj initialize def initialize djasijdiasj @link_event = [] endendclass Game_Event alias fshfusdhfusdih setup_page def setup_page(new_page) fshfusdhfusdih(new_page) if [email protected]? for i in @page.list if [108, 408].include?(i.code) if i.parameters[0].downcase.include?("link event") a = i.parameters[0].clone.downcase.gsub!("link event") {""} write_link_event(a.to_i) end if i.parameters[0].downcase.include?("link event [") or i.parameters[0].downcase.include?("link event[") a = i.parameters[0].clone.downcase.gsub!("link event") {""} eval("@b = " + a) write_overlink_event(@ end end end end end def write_link_event(id) if $game_map.link_event[$game_map.map_id].nil? $game_map.link_event[$game_map.map_id] = [] end if $game_map.link_event[$game_map.map_id][id].nil? $game_map.link_event[$game_map.map_id][id] = [] end $game_map.link_event[$game_map.map_id][id].push(self.id) end def write_overlink_event(val) if $game_map.link_event[val[0]].nil? $game_map.link_event[val[0]] = [] end if $game_map.link_event[val[0]][val[1]].nil? $game_map.link_event[val[0]][val[1]] = [] end $game_map.link_event[val[0]][val[1]].push([$game_map.map_id, self.id]) end endclass Game_SelfSwitches alias jfdsijfd [] def [](key) if !$game_map.link_event[key[0]].nil? if !$game_map.link_event[key[0]][key[1]].nil? state = true for i in $game_map.link_event[key[0]][key[1]] if i.is_a?(Array) if !$game_self_switches[[i[0], i[1], key[2]]] state = false end elsif !$game_self_switches[[key[0], i, key[2]]] state = false end end return state end end jfdsijfd(key) endend Demo:
      Coming Soon(Se richiesta, vista la semplicità dello script))

      Incompatibilità:
      N/A
    • Da Ally
      Nome Script: Switch Menu
      Versione: N/D
      Autore/i: Zerbu

      Informazioni:
      Come da titolo, con questo script si possono richiamare ad esempio degli eventi comuni al posto del menù etc...

      Screenshots:



      Istruzioni:
      Inserite lo script sotto Material.
      Istruzioni del suo funzionamento come da screen

      Script:


      #============================================================================== # › Switch Menu ‹ #------------------------------------------------------------------------------ # Using this script you can make it so that when the menu is called, a # switch is turned on instead. You can still open the menu by using a # [Open Menu Screen] event call. You can use the switch to create a common # event in place of the menu, or anthing else you want. #------------------------------------------------------------------------------ # by Zerbu #============================================================================== $imported = {} if $imported.nil? $imported["SwitchMenu"] = true #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= module SwitchMenu   #============================================================================   # ♦ Switch ID ♦   #----------------------------------------------------------------------------   # Set the switch you want turned on~   #============================================================================   SWITCH_ID = 1   #--- end #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #============================================================================== # » Scene_Map #============================================================================== class Scene_Map   #----------------------------------------------------------------------------   # » overwrite method: call_menu   #----------------------------------------------------------------------------   def call_menu         $game_switches[SwitchMenu] = true         @menu_calling = false   end   #--- end
    • Da Ally
      Nome Script: MSX - XP Characters on VX/VXAce
      Versione: 1.0
      Autore/i: Melosx
       
      Informazioni:
      Lo script permette di usare i chara xp nel vx semplicemente inserendo il tag $xp.
      Compatibile con VX e VXAce.
       
      Istruzioni:
      All'interno dello script.
       
      Script:
       

      #============================================================================== # ** MSX - XP Characters on VX/VXAce #============================================================================== # Autore: Melosx # Versione: 1.0 # Compatibile con VX e VXAce # #============================================================================== # * Descrizione # ----------------------------------------------------------------------------- # Lo script permette di usare i chara xp nel vx semplicemente inserendo il tag # $xp # prima del nome del file. # Potete quindi usare i normali VX/VXAce insieme a quelli dell'XP. # #============================================================================== # * Istruzioni # ----------------------------------------------------------------------------- # Inserire lo script sotto Materials e sopra Main. Aggiungere ai chara dell'XP # il tag $xp prima del nome. # #============================================================================== #============================================================================== # ** Sprite_Character #============================================================================== class Sprite_Character < Sprite_Base def update_bitmap if @tile_id != @character.tile_id or @character_name != @character.character_name or @character_index != @character.character_index @tile_id = @character.tile_id @character_name = @character.character_name @character_index = @character.character_index if @tile_id > 0 sx = (@tile_id / 128 % 2 * 8 + @tile_id % 8) * 32; sy = @tile_id % 256 / 8 % 16 * 32; self.bitmap = tileset_bitmap(@tile_id) self.src_rect.set(sx, sy, 32, 32) self.ox = 16 self.oy = 32 else self.bitmap = Cache.character(@character_name) sign = @character_name[/^[!$]./] if sign != nil and sign.include?('$') @cw = bitmap.width / 3 @ch = bitmap.height / 4 else @cw = bitmap.width / 12 @ch = bitmap.height / 8 end if @character_name != nil and @character_name.include?('$xp') @cw = bitmap.width / 4 @ch = bitmap.height / 4 end self.ox = @cw / 2 self.oy = @ch end end end def update_src_rect if @character_name != nil and @character_name.include?('$xp') if @tile_id == 0 pattern = @character.pattern > 0 ? @character.pattern - 1 : 3 sx = pattern * @cw sy = (@character.direction - 2) / 2 * @ch self.src_rect.set(sx, sy, @cw, @ch) end else if @tile_id == 0 index = @character.character_index pattern = @character.pattern < 3 ? @character.pattern : 1 sx = (index % 4 * 3 + pattern) * @cw sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch self.src_rect.set(sx, sy, @cw, @ch) end end end end #============================================================================== # ** Window_Base #============================================================================== class Window_Base < Window def draw_character(character_name, character_index, x, y) return if character_name == nil bitmap = Cache.character(character_name) sign = character_name[/^[!$]./] if character_name != nil and character_name.include?('$xp') cw = bitmap.width / 4 ch = bitmap.height / 4 n = character_index src_rect = Rect.new(0, 0, cw, ch) else if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) end self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect) end end
    • Da Ally
      Nome Script: Auto-Backup
      Versione: N/D
      Autore/i: woratana, Mr. Bubble
       
      Informazioni:
      Ad ogni avvio del test di gioco, verrà creata una cartella di back up ^^
       
      Istruzioni:
      Inserite lo script sotto Material.
       
      Script:
       

      #=============================================================== # ● [VXA] ◦ Auto-Backup VX Ace ◦ □ #-------------------------------------------------------------- # ◦ by Woratana [[email protected]] # ◦ Thaiware RPG Maker Community # ◦ Originally released on: 07/12/2008 # ◦ Ported to VX Ace by Mr. Bubble on: 27/12/2011 #-------------------------------------------------------------- # ◦ Features: # - Automatically backup your rvdata2 files when you run the game. # - Now in VX Ace, the Backup Report will appear in the debug console. #-------------------------------------------------------------- # ◦ How to use: # - Setup the script below, # - You may want to run your game now to backup data files the first time. #-------------------------------------------------------------- module WData_Backup BACKUP_WHEN_TEST = true # (true/false) Do you want to backup data files only # when running game through editor (When you press F12 in editor) ? BACKUP_REPORT = true # (true/false) Show textbox when backup process finish? DIRNAME = 'Backup_Data' # Name of the backup folder # (Script will automatically create folder if it doesn't exist) SCRIPT = <<_SCRIPT_ if (BACKUP_WHEN_TEST && '$TEST') || !BACKUP_WHEN_TEST time = Time.now Dir.mkdir(DIRNAME) unless File.directory?(DIRNAME) ftype = 'rvdata2' flist = Dir.glob('./Data/*.{' + ftype + '}') flist.each_index do |i| flist[i] = flist[i].split('/').last save_data(load_data('Data/' + flist[i]), DIRNAME + '/' + flist[i]) end p('Backup Finished!: ' + (Time.now - time).to_s + ' sec') if BACKUP_REPORT end _SCRIPT_ eval(SCRIPT) unless $@ end
×