Strona ekwipunku w menu
Aktualny czas: 28-04-26, 17:55 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[XP] Strona ekwipunku w menu
Helseth Offline
*


Liczba postów: 12
Dołączył: 03-05-13

Pomógł: 0



Post: #1
Strona ekwipunku w menu

Witam, po bardzo długim czasie postanowiłem wrócić do swojego starego projektu jeszcze z roku 2013 ;p Przeglądając całość jednak konieczne będą spore poprawki, z racji tego, że przez ten czas prawie wszystko zapomniałem, muszę uczyć się od podstaw :(

pierwszą rzeczą, która mi nie daje spokoju jest właśnie ekran "ekwipunku". Kiedyś gdzieś znalazłem jakiś skrypt ale po ponownym rzucie oka na projekt jednak postanowiłem go zmienić - nie podoba mi się już w nim kilka rzeczy niestety nie potrafię tego edytować ^^

skrypt:
#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
#  This class performs equipment screen processing.
#==============================================================================

class Scene_Equip
  
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    # Set item window to visible
    @item_window1.visible = (@right_window.index == 0)
    @item_window2.visible = (@right_window.index == 1)
    @item_window3.visible = (@right_window.index == 2)
    @item_window4.visible = (@right_window.index == 3)
    @item_window5.visible = (@right_window.index == 4)
    # Get currently equipped item
    item1 = @right_window.item
    # Set current item window to @item_window
    case @right_window.index
    when 0
      @item_window = @item_window1
    when 1
      @item_window = @item_window2
    when 2
      @item_window = @item_window3
    when 3
      @item_window = @item_window4
    when 4
      @item_window = @item_window5
    end
    # If right window is active
    if @right_window.active
      # Erase parameters for after equipment change
      @left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil)
      @left_window.set_elements(nil, nil)
      @left_window.set_states(nil, nil)
    end
    # If item window is active
    if @item_window.active
      # Get currently selected item
      item2 = @item_window.item
      # Change equipment
      last_hp = @actor.hp
      last_sp = @actor.sp
      @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
      # Get parameters for after equipment change
      new_atk = @actor.atk
      new_pdef = @actor.pdef
      new_mdef = @actor.mdef
      new_str = @actor.str
      new_dex = @actor.dex
      new_agi = @actor.agi
      new_int = @actor.int
      # Get element_set for after equipment change
      atk_element_set = @actor.element_set
      def_element_set = @actor.defense_element_set
      # Get state_set for after equipment change
      plus_state_set = @actor.plus_state_set
      def_state_set = @actor.defense_state_set
      # Return equipment
      @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
      @actor.hp = last_hp
      @actor.sp = last_sp
      # Draw in left window
      @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, \
      new_dex, new_agi, new_int)
      @left_window.set_elements(atk_element_set, def_element_set)
      @left_window.set_states(plus_state_set, def_state_set)
    end
  end
end

#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#  This class is for all in-game windows.
#==============================================================================

class Window_Base < Window

  #--------------------------------------------------------------------------
  # * Draw Icon
  #     icon_name : filename of the icon ("String")
  #     x         : draw spot x-coordinate
  #     y         : draw spot y-coordinate
  #     MOBIUS ADDED
  #--------------------------------------------------------------------------
  def draw_icon(icon_name, x, y)
    bitmap = RPG::Cache.icon(icon_name)
    src_rect = Rect.new(0, 0, 24, 24)
    self.contents.blt(x, y, bitmap, src_rect)
  end
  
  #--------------------------------------------------------------------------
  # * Draw Attack Elements - Draws the active attack elements for a given actor
  #     element_set     : the element set for a given actor
  #     x               : draw spot x-coordinate
  #     y               : draw spot y-coordinate
  #     MOBIUS ADDED
  #--------------------------------------------------------------------------
  def draw_attack_elements(element_set, x, y)
      #Draw fire if active
      if element_set.include?(1)
        draw_icon("Fire", x, y)
      else
        draw_icon("Fire 2", x, y)
      end
      #Draw ice if active
      if element_set.include?(2)
        draw_icon("Ice", x + 30, y)
      else
        draw_icon("Ice 2", x + 30, y)
      end
      #Draw lightning if active
      if element_set.include?(3)
        draw_icon("Lightning", x + 60, y)
      else
        draw_icon("Lightning 2", x + 60, y)
      end
      #Draw water if active
      if element_set.include?(4)
        draw_icon("Poison", x + 90, y)
      else
        draw_icon("Poison 2", x + 90, y)
      end
      #Draw earth if active
      if element_set.include?(5)
        draw_icon("Holy", x + 120, y)
      else
        draw_icon("Holy 2", x + 120, y)
      end
      #Draw wind if active
      if element_set.include?(6)
        draw_icon("Dark", x + 150, y)
      else
        draw_icon("Dark 2", x + 150, y)
      end
       #Draw wind if active
      if element_set.include?(7)
        draw_icon("Magic", x + 180, y)
      else
        draw_icon("Magic 2", x + 180, y)
      end
  end
    
  #--------------------------------------------------------------------------
  # * Draw Defense Elements - Draws the active defense elements for a given actor
  #     defense_element_set     : the defense element set for a given actor
  #     x                       : draw spot x-coordinate
  #     y                       : draw spot y-coordinate
  #     MOBIUS ADDED
  #--------------------------------------------------------------------------
  def draw_defense_elements(defense_element_set, x, y)
      #Draw fire if active
      if defense_element_set.include?(1)
        draw_icon("Fire Def", x, y)
      else
        draw_icon("Fire Def 2", x, y)
      end
      #Draw ice if active
      if defense_element_set.include?(2)
        draw_icon("Ice Def", x + 30, y)
      else
        draw_icon("Ice Def 2", x + 30, y)
      end
      #Draw lightning if active
      if defense_element_set.include?(3)
        draw_icon("Lightning Def", x + 60, y)
      else
        draw_icon("Lightning Def 2", x + 60, y)
      end
      #Draw water if active
      if defense_element_set.include?(4)
        draw_icon("Poison Def", x + 90, y)
      else
        draw_icon("Poison Def 2", x + 90, y)
      end
      #Draw earth if active
      if defense_element_set.include?(5)
        draw_icon("Holy Def", x + 120, y)
      else
        draw_icon("Holy Def 2", x + 120, y)
      end
      #Draw wind if active
      if defense_element_set.include?(6)
        draw_icon("Dark Def", x + 150, y)
      else
        draw_icon("Dark Def 2", x + 150, y)
      end
      #Draw wind if active
      if defense_element_set.include?(7)
        draw_icon("Magic Def", x + 180, y)
      else
        draw_icon("Magic Def 2", x + 180, y)
      end
    end
    
  #--------------------------------------------------------------------------
  # * Draw Plus States - Draws states the a weapon adds for a given actor
  #     state_set     : the plus state set for a given actor
  #     x             : draw spot x-coordinate
  #     y             : draw spot y-coordinate
  #     MOBIUS ADDED
  #--------------------------------------------------------------------------
  def draw_plus_states(state_set, x, y)
    if state_set == []
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "Element: ")
    elsif state_set.size == 1
      state = $data_states[state_set[0]]
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "Element: " + state.name)
    elsif state_set.size == 2
      state1 = $data_states[state_set[0]]
      state2 = $data_states[state_set[1]]
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "Element: " + state1.name +
      ", " + state2.name)
    else      
      rating = 0
      priority_state = ""
      total_states = state_set.size
      for i in state_set
        state = $data_states[i]
        if rating <= state.rating #if new state is higher priority
          rating = state.rating
          priority_state = state.name
        end
      end
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "Element: " + priority_state +
      " i " + (total_states - 1).to_s + " other")
    end
  end
  
  #--------------------------------------------------------------------------
  # * Draw Def States - Draws states the armor prevents for a given actor
  #     state_set     : the guard state set for a given actor
  #     x             : draw spot x-coordinate
  #     y             : draw spot y-coordinate
  #     MOBIUS ADDED
  #--------------------------------------------------------------------------
  def draw_def_states(state_set, x, y)
    if state_set == []
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "resis ")
    elsif state_set.size == 1
      state = $data_states[state_set[0]]
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "resis: " + state.name)
    elsif state_set.size == 2
      state1 = $data_states[state_set[0]]
      state2 = $data_states[state_set[1]]
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "resis " + state1.name +
      ", " + state2.name)
    else      
      rating = 0
      priority_state = ""
      total_states = state_set.size
      for i in state_set
        state = $data_states[i]
        if rating <= state.rating #if new state is higher priority
          rating = state.rating
          priority_state = state.name
        end
      end
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 240, 32, "resis " + priority_state +
      " i " + (total_states - 1).to_s + "other")
    end
  end
end
#==============================================================================
# ** Window_EquipItem
#------------------------------------------------------------------------------
#  This window displays choices when opting to change equipment on the
#  equipment screen.
#==============================================================================

class Window_EquipItem < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor      : actor
  #     equip_type : equip region (0-3)
  #--------------------------------------------------------------------------
  def initialize(actor, equip_type)
    super(272, 256, 368, 224)
    @actor = actor
    @equip_type = equip_type
    @column_max = 1
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    #x = 4 + index % 2 * (288 + 32)  OLD
    x = 4
    #y = index / 2 * 32 OLD
    y = index * 32
    case item
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    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
end

#==============================================================================
# ** Window_EquipLeft
#------------------------------------------------------------------------------
#  This window displays actor parameter changes on the equipment screen.
#==============================================================================

class Window_EquipLeft < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 64, 272, 416)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_name(@actor, 4, 0)
    draw_actor_parameter(@actor, 4, 32, 0)  #ATK
    draw_actor_parameter(@actor, 4, 64, 1)  #PDEF
    draw_actor_parameter(@actor, 4, 96, 2)  #MDEF
    draw_actor_parameter(@actor, 4, 128, 3) #STR
    draw_actor_parameter(@actor, 4, 160, 4) #DEX
    draw_actor_parameter(@actor, 4, 192, 5) #AGI
    draw_actor_parameter(@actor, 4, 224, 6) #INT
    if @atk_element_set != nil
      draw_attack_elements(@atk_element_set, 4, 258)
    else
      draw_attack_elements(@actor.element_set, 4, 258)
    end
    if @def_element_set != nil
      draw_defense_elements(@def_element_set, 4, 292)
    else
      draw_defense_elements(@actor.defense_element_set, 4, 292)
    end    
    if  @plus_state_set != nil
      draw_plus_states(@plus_state_set, 4, 326)
    else
      draw_plus_states(@actor.plus_state_set, 4, 326)
    end
    if  @def_state_set != nil
      draw_def_states(@def_state_set, 4, 358)
    else
      draw_def_states(@actor.defense_state_set, 4, 358)
    end
    if @new_atk != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 32, 40, 32, "->", 1)
      self.contents.font.color = color_choose(@actor.atk, @new_atk)
      self.contents.draw_text(200, 32, 36, 32, @new_atk.to_s, 2)
    end
    if @new_pdef != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 64, 40, 32, "->", 1)
      self.contents.font.color = color_choose(@actor.pdef, @new_pdef)
      self.contents.draw_text(200, 64, 36, 32, @new_pdef.to_s, 2)
    end
    if @new_mdef != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 96, 40, 32, "->", 1)
      self.contents.font.color = color_choose(@actor.mdef, @new_mdef)
      self.contents.draw_text(200, 96, 36, 32, @new_mdef.to_s, 2)
    end
    if @new_str != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 128, 40, 32, "->", 1)
      self.contents.font.color = color_choose(@actor.str, @new_str)
      self.contents.draw_text(200, 128, 36, 32, @new_str.to_s, 2)
    end
    if @new_dex != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 160, 40, 32, "->", 1)
      self.contents.font.color = color_choose(@actor.dex, @new_dex)
      self.contents.draw_text(200, 160, 36, 32, @new_dex.to_s, 2)
    end
    if @new_agi != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 192, 40, 32, "->", 1)
      self.contents.font.color = color_choose(@actor.agi, @new_agi)
      self.contents.draw_text(200, 192, 36, 32, @new_agi.to_s, 2)
    end
    if @new_int != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 224, 40, 32, "->", 1)
      self.contents.font.color = color_choose(@actor.int, @new_int)
      self.contents.draw_text(200, 224, 36, 32, @new_int.to_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Set parameters after changing equipment
  #     new_atk  : attack power after changing equipment
  #     new_pdef : physical defense after changing equipment
  #     new_mdef : magic defense after changing equipment
  #     new_etc  : I think you get the picture
  #--------------------------------------------------------------------------
  def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, \
    new_agi, new_int)
    if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or
      @new_str != new_str or @new_dex != new_dex or @new_agi != new_agi or
      @new_int != new_int
      @new_atk = new_atk
      @new_pdef = new_pdef
      @new_mdef = new_mdef
      @new_str = new_str
      @new_dex = new_dex
      @new_agi = new_agi
      @new_int = new_int
      refresh
    end
  end
  
  #--------------------------------------------------------------------------
  # * Set element_set after changing equipment
  #     element_set  : an array containing the new equipment's element_set
  #                    reference the database for element values
  #--------------------------------------------------------------------------
  def set_elements(atk_element_set, def_element_set)
    if @atk_element_set != atk_element_set or
      @def_element_set != def_element_set
      @atk_element_set = atk_element_set
      @def_element_set = def_element_set
      refresh
    end
  end

  #--------------------------------------------------------------------------
  # * Set state_set after changing equipment
  #     state_set  : an array containing the new equipment's state_set
  #                    reference the database for state values
  #--------------------------------------------------------------------------
  def set_states(plus_state_set, def_state_set)
    if @plus_state_set != plus_state_set or @def_state_set != def_state_set
      @plus_state_set = plus_state_set
      @def_state_set = def_state_set
      refresh
    end
  end
#------------------------------------------------------------------------------
# * color_choose  
#   decide text color based on whether the stat improves
#   Mobius Added
#------------------------------------------------------------------------------
  def color_choose(old_stat, new_stat)
    compare = (old_stat <=> new_stat)
    case compare
    when -1 #new is better
      Color.new(0, 255, 0, 255) #Return green color
    when 0 #old=new
      normal_color #Return white color
    when 1 #old is better
      Color.new(255, 0, 0, 255) #Return red color
    end
  end

end #class end

#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles the actor. It's used within the Game_Actors class
#  ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler

  #--------------------------------------------------------------------------
  # * Get Normal Attack Element
  #--------------------------------------------------------------------------
  def element_set
    weapon = $data_weapons[@weapon_id]
    return weapon != nil ? weapon.element_set : []
  end
  #--------------------------------------------------------------------------
  # * Get Normal Defense Elements
  #--------------------------------------------------------------------------
  def defense_element_set
    result = []
    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
      armor = $data_armors[i]
      if armor != nil
        result |= armor.guard_element_set
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # * Get Normal Attack State Change (+)
  #--------------------------------------------------------------------------
  def plus_state_set
    weapon = $data_weapons[@weapon_id]
    return weapon != nil ? weapon.plus_state_set : []
  end
  #--------------------------------------------------------------------------
  # * Get Normal State Defense
  #--------------------------------------------------------------------------
  def defense_state_set
    result = []
    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
      armor = $data_armors[i]
      if armor != nil
        result |= armor.guard_state_set
      end
    end
    return result
  end
end

dodaję również obrazek o co konkretnie mi chodzi, chce się pozbyć tego w czerwonym kwadracie, próbując samemu wyciąć ten fragment z kodu nie udaje mi się ponownie zmusić kodu do działania :-/

[Obrazek: 2lvk774.jpg]

ewentualnie jeśli ktoś wie w ogóle jak się nazywa profesjonalnie ten skrypt na ekran ekwipunku to proszę o napisanie również, bo szukałem parę dni tego, żeby ewentualnie inny skrypt użyć ale niestety bezskutecznie... znalazłem może ze 2 inne ale jeszcze gorzej się prezentujące niż ten powyżej :-/ większość linków/ skryptów wygasła i dużo ciężej dzisiaj jest coś znaleźć niż dajmy na to te 3 lata temu jak zaczynałem :(

Jeśli ktoś potrafi to zedytować to proszę o pomoc...
zastanawiam się jeszcze czy jest możliwość dodania do wyświetlanych statystyk (str, dex, itp)poziomu HP/MP gdy zakładam ekwipunek z danym bonusem, żeby wszystko fajnie było widać w jednym miejscu :P
(Ten post był ostatnio modyfikowany: 01-07-16 03:14 przez Helseth.)
01-07-16 03:13
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Wiadomości w tym wątku
Strona ekwipunku w menu - Helseth - 01-07-16 03:13

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.