Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Otwarty przez: Nhadala
Sro 29 Sie, 2012 06:45
Rozszerzenie Ekwipunku
Autor Wiadomość
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sro 16 Gru, 2009 12:21
Rozszerzenie Ekwipunku
~ Rozszerzenie Ekwipunku VX ~

Krótki opis
Skrypt umożliwia dodanie nowych lokacji w ekwipunku i wyróżnienie przedmiotów (takich jak Buty lub Naramienniki), które dotąd były zaklasyfikowane jako 'akcesoria'.

Autor skryptu
KGC

Tłumaczenie i poprawki
Ayene [yurika@o2.pl]

Kompatybilność
Tylko VX

UWAGA!!!
Skrypt jest w dużym stopniu przerobiony (okrojony - według mnie - z niepotrzebnych udziwnień). Zaleca się uważne przetestowanie jego działania.

Skrypt
Spoiler:

Kod:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ Tytuł: Equipment Extension  /  Rozszerzenie Ekwipunku
#_/ Autor: KGC
#_/ Tłumaczenie i korekta: Ayene
#_/ www.ultimateam.pl
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/   Skrypt umożliwia dodanie nowych lokacji w ekwipunku i wyróżnienie
#_/   przedmiotów (takich jak Buty lub Naramienniki), które dotąd były
#_/   zaklasyfikowane jako 'akcesoria'.
#_/----------------------------------------------------------------------------
#_/  INSTRUKCJA
#_/
#_/  By skorzystać z funkcji musisz umieścić w oknie 'Notes' pancerza w bazie
#_/  danych notatkę <equipkind TypEkwipunku>, gdzie TypEkwipunku to konkretna
#_/  lokacja zdefiniowana poniżej (patrz EXTRA_EQUIP_KIND), np.
#_/  Wpisanie notatki <equipkind Nogi> sprawi, że wybrany pancerz będzie
#_/  przyporządkowany nogom.
#_/
#_/
#_/  Dodatkowe polecenia
#_/
#_/  * set_actor_equip_type(ID_Postaci, [TypEkwipunku])
#_/  Pozwala ręcznie ustalić sloty ekwipunku konkretnej postaci.
#_/  np. set_actor_equip_type(2, [0, 2, 3, 3, 3])
#_/  Gdzie:
#_/  0:Broń / Tarcza   1:Hełm   2:Zbroja   3:Akcesoria   4:"Nogi"   5:"Ramiona"
#_/  Tym samym postać o nr id 2 będzie miała w ekwipunku:
#_/  broń i tarczę, hełm oraz trzy akcesoria.
#_/
#_/  * change_actor_equipment(ID_Postaci, slot_ekwipunku, ID_Przedmiotu)
#_/  Pozwala zmienić ekwipunek wybranej postaci pod warunkiem, że wybrany
#_/  przedmiot znajduje się w inwentarzu drużyny.
#_/  UWAGA! slot_ekwipunku różni się od Typu Ekwipnuku:
#_/  0:Broń   1: Tarcza   2:Hełm   3:Zbroja   4:Akcesoria   5:"Nogi"   6:"Ramiona"
#_/   
#_/  np.  change_actor_equipment(1, 3, 15)
#_/  Zmieni bohaterowi o id 1 (Ralph domyślnie) zbroją (3) na Chainmail
#_/  (15 w bazie danych)
#_/  Wskazówka: ustawienie ID_Przedmiotu na 0 usunie go z ekwipunku (nadal będzie
#_/  w inwentarzu).
#_/
#_/============================================================================
#_/ Instalacja: Umieść skrypt nad Main
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#=============================================================================#
#                           KONFIGURACJA                                      #
#=============================================================================#

module KGC
  module EquipExtension
  # Dodatkowe rodzaje ekwipunku:
  # Tutaj możesz dodać nowe 'sloty' ekwipunku.
  # Każdej nowej lokacji przyporządkowany jest numer.
  # Pierwsze cztery numery przyporządkowane czterem typom ekwipunku
  # (Tarcza, Hełm, Zbroja, Akcesoria) to kolejno 0, 1, 2, 3.
  # Poniższe dwa typy zatem mają przydzielone cyfry 4 i 5. Oczywiście można dodać
  # ich dowolną ilość.
  # Przykład: EXTRA_EQUIP_KIND = ["Nogi", "Ramiona", "Księga zaklęć"]
 
  EXTRA_EQUIP_KIND = ["Nogi", "Ramiona"]

  # Lokacje ekwipunku
  # Tutaj można wybrać listę lokacji, która wyświetlać się będzie w menu.
  # Istotna jest kolejność!               
  #  0:Broń / Tarcza   1:Hełm   2:Zbroja   3:Akcesoria   4:"Nogi"   5:"Ramiona"

  EQUIP_TYPE = [0, 1, 2, 5, 4, 3, 3]
  end
end

#=============================================================================#
#                          KONIEC KONFIGURACJI                                #
#=============================================================================#

$imported = {} if $imported == nil
$imported["EquipExtension"] = true

module KGC::EquipExtension
#==============================================================================
# KGC::EquipExtension::Regexp
#==============================================================================

# Wpisz <equipkind Lokacja> w Notatkach przedmiotu w bazie danych i w miejsce
# lokacji wpisz rodzaj ekwipunku.
# Przykład: <equipkind Nogi> lub <EQUIP_KIND Nogi> sprawi, że dany przedmiot
# będzie przyporządkowany nogom

  module Regexp       
    module Armor     
      EQUIP_KIND = /<(?:EQUIP_KIND|equipkind)\s*(.+)>/i
    end   
  end
end

#==============================================================================
# KGC::Commands
#==============================================================================

module KGC
module Commands
  module_function
 
  def set_actor_equip_type(actor_id, equip_type = nil)
    actor = $game_actors[actor_id]
    return if actor == nil
    actor.equip_type = equip_type
  end
 
  def change_actor_equipment(actor_id, index, item_id)
    actor = $game_actors[actor_id]
    return if actor == nil
    actor.change_equip_by_id(index, item_id)
  end
end
end

class Game_Interpreter
  include KGC::Commands
end

#==============================================================================
# Vocab
#==============================================================================

module Vocab
  def self.extra_armor(index)
    return KGC::EquipExtension::EXTRA_EQUIP_KIND[index]
  end
end

#==============================================================================
# RPG::BaseItem
#==============================================================================

class RPG::BaseItem
  def create_equip_extension_cache
    @__equip_type = []
  end
  def equip_type
    create_equip_extension_cache if @__equip_type == nil
    return @__equip_type
  end
end
#==============================================================================
# RPG::Armor
#==============================================================================

class RPG::Armor < RPG::BaseItem
 
  def create_equip_extension_cache
    super
    @__kind = -1

    self.note.split(/[\r\n]+/).each { |line|
      if line =~ KGC::EquipExtension::Regexp::Armor::EQUIP_KIND
        e_index = KGC::EquipExtension::EXTRA_EQUIP_KIND.index($1)
        next if e_index == nil
        @__kind = e_index + 4
      end
    }
  end

unless $@
  alias kind_KGC_EquipExtension kind
  def kind
    create_equip_extension_cache if @__kind == nil
    return (@__kind == -1 ? kind_KGC_EquipExtension : @__kind)
  end
end
end


#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
 
  attr_writer   :equip_type
 
  alias setup_KGC_EquipExtension setup
  def setup(actor_id)
    actor = $data_actors[actor_id]
    @extra_armor_id = []
    setup_KGC_EquipExtension(actor_id)
  end
 
  def equip_type
    if @equip_type.is_a?(Array)
      return @equip_type
    else
      return KGC::EquipExtension::EQUIP_TYPE
    end
  end
 
  def armor_number
    return equip_type.size
  end
 
  def extra_armor_number
    return [armor_number - 4, 0].max
  end
 
  def extra_armor_id
    @extra_armor_id = [] if @extra_armor_id == nil
    return @extra_armor_id
  end
 
  alias armors_KGC_EquipExtension armors
  def armors
    result = armors_KGC_EquipExtension
    extra_armor_number.times { |i|
      armor_id = extra_armor_id[i]
      result << (armor_id == nil ? nil : $data_armors[armor_id])
    }
    return result
  end
 
  alias change_equip_KGC_EquipExtension change_equip
  def change_equip(equip_type, item, test = false)
    change_equip_KGC_EquipExtension(equip_type, item, test)

    if extra_armor_number > 0
      item_id = item == nil ? 0 : item.id
      case equip_type
      when 5..armor_number
        @extra_armor_id = [] if @extra_armor_id == nil
        @extra_armor_id[equip_type - 5] = item_id
      end
    end

    restore_battle_skill if $imported["SkillCPSystem"]
    restore_passive_rev  if $imported["PassiveSkill"]
  end
 
 
  alias discard_equip_KGC_EquipExtension discard_equip
  def discard_equip(item)
    last_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]

    discard_equip_KGC_EquipExtension(item)

    curr_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
    return unless item.is_a?(RPG::Armor)
    return if last_armors != curr_armors
   
    extra_armor_number.times { |i|
      if extra_armor_id[i] == item.id
        @extra_armor_id[i] = 0
        break
      end
    }

    restore_battle_skill if $imported["SkillCPSystem"]
    restore_passive_rev  if $imported["PassiveSkill"]
  end
 
  alias class_id_equal_KGC_EquipExtension class_id=
  def class_id=(class_id)
    class_id_equal_KGC_EquipExtension(class_id)
    return if extra_armor_number == 0     
    for i in 5..armor_number
      change_equip(i, nil) unless equippable?(equips[i])
    end
  end   
end

#==============================================================================
# Window_Equip
#==============================================================================

class Window_Equip < Window_Selectable
 
  def refresh
    self.contents.clear
    @data = @actor.equips.clone
    @item_max = [@data.size, @actor.armor_number + 1].min
    create_contents
   
    self.contents.font.color = system_color
    if @actor.two_swords_style
      self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
      self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
    else
      self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
      name = armor_slot_name(@actor.equip_type[0])
      self.contents.draw_text(4, WLH * 1, 92, WLH, name)
    end
    for i in 1...@actor.armor_number
      name = armor_slot_name(@actor.equip_type[i])
      self.contents.draw_text(4, WLH * (i + 1), 92, WLH, name)
    end
   
    rect = Rect.new(92, 0, self.width - 128, WLH)
    @item_max.times { |i|
      rect.y = WLH * i
      draw_item_name(@data[i], rect.x, rect.y)    }
  end
 
  def armor_slot_name(kind)
    case kind
    when 0..3
      return eval("Vocab.armor#{kind + 1}")
    else
      return Vocab.extra_armor(kind - 4)
    end
  end


unless $imported["ExtendedEquipScene"]
 
  def cursor_pagedown
    return if Input.repeat?(Input::R)
    super
  end
 
  def cursor_pageup
    return if Input.repeat?(Input::L)
    super
  end
 
  def update
    super
    return unless self.active

    if Input.repeat?(Input::RIGHT)
      cursor_pagedown
    elsif Input.repeat?(Input::LEFT)
      cursor_pageup
    end
  end
end

end

#==============================================================================
# Window_Status
#==============================================================================

class Window_Status < Window_Base
  def draw_equipments(x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
    item_number = [@actor.equips.size, @actor.armor_number + 1].min
    item_number.times { |i|
      draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1)) }
  end
end


#==============================================================================
# Window_ShopStatus
#==============================================================================

class Window_ShopStatus < Window_Base
  def draw_actor_parameter_change(actor, x, y)
    return if @item.is_a?(RPG::Item)
    enabled = actor.equippable?(@item)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(x, y, 200, WLH, actor.name)
    if @item.is_a?(RPG::Weapon)
      item1 = weaker_weapon(actor)
    elsif actor.two_swords_style and @item.kind == 0
      item1 = nil
    else
      index = actor.equip_type.index(@item.kind)
      item1 = (index != nil ? actor.equips[1 + index] : nil)
    end
    if enabled
      if @item.is_a?(RPG::Weapon)
        atk1 = item1 == nil ? 0 : item1.atk
        atk2 = @item == nil ? 0 : @item.atk
        change = atk2 - atk1
      else
        def1 = item1 == nil ? 0 : item1.def
        def2 = @item == nil ? 0 : @item.def
        change = def2 - def1
      end
      self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
    end
    draw_item_name(item1, x, y + WLH, enabled)
  end
end

#=========================================================================
# Scene_Equip
#=========================================================================

class Scene_Equip < Scene_Base

  EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5

  alias initialize_KGC_EquipExtension initialize
  def initialize(actor_index = 0, equip_index = 0)
    initialize_KGC_EquipExtension(actor_index, equip_index)

    unit = ($imported["LargeParty"] ?
      $game_party.all_members : $game_party.members)
    actor = unit[actor_index]
    @equip_index = [@equip_index, actor.armor_number].min
  end

  alias create_item_windows_KGC_EquipExtension create_item_windows
  def create_item_windows
    create_item_windows_KGC_EquipExtension

    kind = equip_kind(@equip_index)
    EQUIP_TYPE_MAX.times { |i|
      @item_windows[i].visible = (kind == i)
    }
  end

  def update_item_windows
    kind = equip_kind(@equip_window.index)
    for i in 0...EQUIP_TYPE_MAX
      @item_windows[i].visible = (kind == i)
      @item_windows[i].update
    end
    @item_window = @item_windows[kind]
  end
 
  def equip_kind(index)
    if index == 0
      return 0
    else
      return @actor.equip_type[index - 1] + 1
    end
  end

unless $imported["ExtendedEquipScene"]

  def update_status_window
    if @equip_window.active
      @status_window.set_new_parameters(nil, nil, nil, nil)
    elsif @item_window.active
      temp_actor = Marshal.load(Marshal.dump(@actor))
      temp_actor.change_equip(@equip_window.index, @item_window.item, true)
      new_atk = temp_actor.atk
      new_def = temp_actor.def
      new_spi = temp_actor.spi
      new_agi = temp_actor.agi
      @status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
    end
    @status_window.update
  end
end

 alias update_item_selection_KGC_EquipExtension update_item_selection
  def update_item_selection
    if Input.trigger?(Input::C)     
      index = @equip_window.index
      item = @item_window.item
      unless item == nil ||
        @actor.equippable?(item)
        Sound.play_buzzer
        return
      end
    end

    update_item_selection_KGC_EquipExtension
  end
end

#=========================================================================
# Scene_File
#=========================================================================

class Scene_File < Scene_Base
  alias read_save_data_KGC_EquipExtension read_save_data
  def read_save_data(file)
    read_save_data_KGC_EquipExtension(file)
    Graphics.frame_reset
  end
end


Demo
niepotrzebne

Screenshot
Spoiler:




Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.

Piszcie w razie problemów.

rozszerzony_ekwipunek.txt
Pobierz SKRYPT
Pobierz Plik ściągnięto 547 raz(y) 28,89 KB

________________________


 
 
 
Teyan 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 05 Lis 2009
Posty: 48
Wysłany: Sro 16 Gru, 2009 12:58
Mam pomysł:
Gdyby ktoś chciał usunąć slot "Akcesoria" z ekwipunku to wystarczy, że w Data w słowniku wpisze zamiast słowa "Akcesoria" np: słowo "Pierścień". W połączeniu ze skryptem od Ayene będziemy mogli nosić dwa pierścienie.
 
 
Greed 




Preferowany:
RPG Maker VX

Dołączył: 26 Wrz 2009
Posty: 42
Skąd: Tokio
Wysłany: Sro 16 Gru, 2009 21:25
Nawet bardzo fajny tylko nie współgra ze skryptem "Rozszerzone okno statusu" :-P
________________________
"Darker than Black"
Może taki jestem.
 
 
 
bionicl 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 06 Gru 2009
Posty: 99
Skąd: z Huty Mińskiej
Wysłany: Sro 16 Gru, 2009 21:30
spróbuj z tym (tylko zmień sobie początek...) :

Spoiler:

Kod:
# ==========================================================
#                      ~ Rozszerzone okno statusu ~
#                       Data publikacji: 11.10.2009
#                               Autor: KGC
#               Tłumaczenie i poprawki: Ayene [yurika@o2.pl]
#          Zapraszam na stronę UltimaForum - http://www.ultimateam.pl
# ==========================================================
# Instalacja: Umieść ten skrypt nad Main w Edytorze Skryptu.
# Do poprawnego działania wymagane jest umieszczenie w projekcie gry skryptu
# Bitmapa (by KGC). Skrypt dostępny jest na stronie www.ultimateam.pl
# ==========================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# --------------------------- POCZĄTEK SKRYPTU ---------------------------------
$data_states = load_data("Data/States.rvdata") if $data_states == nil
$data_system = load_data("Data/System.rvdata") if $data_system == nil

module KGC
module ExtendedStatusScene

# ---------------------------- POCZĄTEK EDYCJI ---------------------------------   
  # Tekst w profilu
  PROFILE = []
  # W tym miejscu można wpisać tekst, który ma się wyświetlać w profilu.
  # Poniższy fragment skryptu należy wypełnić według wzoru:
  # PROFILE[ID] = 'Tekst w Profilu'

  # Dozwolone jest formatownie tekstu - zmiana koloru (\C[numer]
  # Wyświetlanie imienia bohatera - \N[ID]
  # Przejście do następnej linijki - \|
  PROFILE[1] =
    'Podjęte misje: \v[1]\|' +
    'Wykonane misje: \v[2]\|' +
    '\|' +
    '\|' +
    ''
 
  PROFILE[2] =
    'Name: \N[1]\|' +
    '\C[2]Wpisz co chcesz\C[0]\|' +
    '\|' +
    'Tutaj wpisz informacje o bohaterze z ID 1 \|' +
    'To jest kolejna linijka tekstu'
   
  COMMANDS = [:param, :element_resist, :state_resist, :profile]

  COMMAND_NAME = {
    :param          => "Statystyki",
    :resist         => "Odporność",
    :element_resist => "Atrybuty",
    :state_resist   => "Statusy",
    :profile        => "Profil",
  }

  PARAMS = [:atk, :def, :spi, :agi, :hit, :eva, :cri, :cp, :ep]

  PARAMETER_NAME = {
    :hit => "Celność",
    :eva => "Unik",
    :cri => "Krytyk",
    :element_resist => "Atrybuty",
    :state_resist   => "Statusy",
  }  # &#8249; Nie usuwać tego!

  # Styl wyświetlania odporności
  #   0 .. Układ graficzny
  #   1 .. Wykaz procentowy
  #   2 .. Układ graficzny i wykaz procentowy
  RESIST_STYLE = 2
 
  # Styl wykazu procentowego
  # 0 .. wykazuje procentowo szansę uzyskania przez bohatera konkretnego stanu
    # np. jeśli bohater w bazie danych ma ustawioną odporność na status 'śmierć'
    # i ma ona wartość A, oznacza to, że bohater ma 100% szansy na jego uzyskanie.
 
  # 1 .. wykazuje procentowo szansę obrony przed konkretnym statusem
    # np. jeśli bohater w bazie danych ma ustawioną odporność na status 'śmierć'
    # i ma ona wartość A, oznacza to, że bohater ma 0% szansy na obronę przed nim.
  RESIST_NUM_STYLE = 0

  # Kolor wykresu
  CHART_LINE_COLOR  = Color.new(128, 255, 128)
  CHART_BASE_COLOR  = Color.new(128, 192, 255)
  CHART_FLASH_COLOR = Color.new(128, 255, 128)
 
  # Jakość wykresu
  #   true  : wysokiej jakości
  #   false : niskiej jakości
  CHART_HIGHQUALITY = true

  # Zakres atrybutów/odporności (ID w tablicy)
  # od 1 do 16 w bazie danych
  ELEMENT_RANGE = [1..16]
 
  # Ikonki atrybutów
  # Przyporządkowanie id ikonki do id atrybutu.
  ELEMENT_ICON = [0,                         # ID: 0
     50,   1,   4,  14,  24,  12, 189, 136,  # ID: 1 ~  8
    104, 105, 106, 107, 108, 109, 110, 111,  # ID: 9 ~ 16
  ]  # &#8249; Nie usuwać tego!

  # Zakres statusów/odporności
  # od 1 do tylu ile jest w bazie danych
  STATE_RANGE = [1...$data_states.size]
# ----------------------------- KONIEC EDYCJI ----------------------------------   
end
end

# -----------NIE EDYTUJ PONIŻEJ, CHYBA ŻE WIESZ CO ROBISZ ^^--------------------
$imported = {} if $imported == nil
$imported["ExtendedStatusScene"] = true

module KGC::ExtendedStatusScene
  module_function
  #--------------------------------------------------------------------------
  # - Konwertowanie zasięgu na liczbę
  #--------------------------------------------------------------------------
  def convert_integer_array(array, type = nil)
    result = []
    array.each { |i|
      case i
      when Range
        result |= i.to_a
      when Integer
        result |= [i]
      end
    }
    case type
    when :element
      result.delete_if { |x| x >= $data_system.elements.size }
    when :state
      result.delete_if { |x|
        x >= $data_states.size ||
        $data_states[x].nonresistance ||
        $data_states[x].priority == 0
      }
    end
    return result
  end

  # Sprawdzanie listy atrybutów
  CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE, :element)
  # Sprawdzanie listy statusów
  CHECK_STATE_LIST   = convert_integer_array(STATE_RANGE, :state)

  # Styl wyświetlania
  case RESIST_STYLE
  when 0
    RESIST_STYLE_SYMBOL = :num
  when 1
    RESIST_STYLE_SYMBOL = :chart
  else
    RESIST_STYLE_SYMBOL = :both
  end
end

#=========================================================
# Window_StatusCommand
#------------------------------------------------------------------------------
#   Dodanie nowych opcji do okna statusu
#=========================================================

class Window_StatusCommand < Window_Command
  #--------------------------------------------------------------------------
  # - Rozpoczęcie
  #--------------------------------------------------------------------------
  def initialize
    commands = []
    KGC::ExtendedStatusScene::COMMANDS.each { |c|
      commands << KGC::ExtendedStatusScene::COMMAND_NAME[c]
    }
    super(160, commands)
    self.height = WLH * 5 + 32
    self.active = true
  end
  #--------------------------------------------------------------------------
  # - Dodanie nowych komend
  #--------------------------------------------------------------------------
  def command
    return KGC::ExtendedStatusScene::COMMANDS[index]
  end
  #--------------------------------------------------------------------------
  # - Nstępna strona
  #--------------------------------------------------------------------------
  def cursor_pagedown
    return if Input.repeat?(Input::R)
    super
  end
  #--------------------------------------------------------------------------
  # - Poprzednia strona
  #--------------------------------------------------------------------------
  def cursor_pageup
    return if Input.repeat?(Input::L)
    super
  end
end



#=========================================================
# Window_Status
#=========================================================

class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # - Rozpoczęcie
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(160, 0, Graphics.width - 160, WLH * 5 + 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # - Odświeżenie
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_basic(104, 0)
    draw_exp(104, WLH * 3)
  end
  #--------------------------------------------------------------------------
  # - Rysowanie obiektu
  #--------------------------------------------------------------------------
  def draw_basic(x, y)
    draw_actor_face(@actor, 0, (contents.height - 96) / 2)
    draw_actor_name(@actor, x, y)
    draw_actor_class(@actor, x + 120, y)
    draw_actor_level(@actor, x, y + WLH)
    draw_actor_state(@actor, x, y + WLH * 2)
    draw_actor_hp(@actor, x + 120, y + WLH)
    draw_actor_mp(@actor, x + 120, y + WLH * 2)
  end
  #--------------------------------------------------------------------------
  # - Rysowanie punktów doświadczenia
  #--------------------------------------------------------------------------
  def draw_exp(x, y)
    if $imported["GenericGauge"]
      draw_actor_exp(@actor, x, y + WLH * 0, 240)
      draw_actor_next_exp(@actor, x, y + WLH * 1, 240)
    end

    s1 = @actor.exp_s
    s2 = @actor.next_rest_exp_s
    s_next = sprintf(Vocab::ExpNext, Vocab::level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
    self.contents.draw_text(x, y + WLH * 1, 180, WLH, s_next)
    self.contents.font.color = normal_color

    unless $imported["GenericGauge"]
      self.contents.draw_text(x, y + WLH * 0, 240, WLH, s1, 2)
      self.contents.draw_text(x, y + WLH * 1, 240, WLH, s2, 2)
    end
  end
end


#=========================================================
# Window_StatusDetail
#------------------------------------------------------------------------------
#   Dodanie okna wyświetlającego szczegółowe informacje o bohaterze.
#=========================================================

class Window_StatusDetail < Window_Base
  #--------------------------------------------------------------------------
  # - Zmienne
  #--------------------------------------------------------------------------
  attr_reader   :category
  #--------------------------------------------------------------------------
  # - Rozpoczęcie
  #--------------------------------------------------------------------------
  def initialize(actor)
    @category = nil
    y = WLH * 5 + 32
    super(0, y, Graphics.width, Graphics.height - y)
    create_chart_sprite
    @actor    = actor
    @duration = 0
    self.z = z
  end
  #--------------------------------------------------------------------------
  # - Tworzenie wykazu
  #--------------------------------------------------------------------------
  def create_chart_sprite
    @element_chart_sprite = Sprite_Base.new
    @element_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
    @element_chart_sprite.ox = @element_chart_sprite.width  / 2
    @element_chart_sprite.oy = @element_chart_sprite.height / 2
    @element_chart_sprite.blend_type = 1
    @element_chart_sprite.opacity = 0
    @element_chart_sprite.visible = false

    @state_chart_sprite = Sprite_Base.new
    @state_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
    @state_chart_sprite.ox = @state_chart_sprite.width  / 2
    @state_chart_sprite.oy = @state_chart_sprite.height / 2
    @state_chart_sprite.blend_type = 1
    @state_chart_sprite.opacity = 0
    @state_chart_sprite.visible = false
  end
  #--------------------------------------------------------------------------
  # - Zamknięcie
  #--------------------------------------------------------------------------
  def dispose
    @element_chart_sprite.bitmap.dispose
    @element_chart_sprite.dispose
    @state_chart_sprite.bitmap.dispose
    @state_chart_sprite.dispose
    super
  end
  #--------------------------------------------------------------------------
  # - Wartość Z
  #--------------------------------------------------------------------------
  def z=(value)
    super(value)
    @element_chart_sprite.z = z + 1 if @element_chart_sprite != nil
    @state_chart_sprite.z   = z + 1 if @state_chart_sprite   != nil
  end
  #--------------------------------------------------------------------------
  # - Kategorie
  #--------------------------------------------------------------------------
  def category=(category)
    return if @category == category
    @category = category
    refresh
  end
  #--------------------------------------------------------------------------
  # - Odświeżanie
  #--------------------------------------------------------------------------
  def refresh
    @element_chart_sprite.visible = false
    @state_chart_sprite.visible   = false
    return if @category == nil

    self.contents.clear
    case @category
    when :param
      draw_parameter_list
    when :resist
      draw_resistance
    when :element_resist
      draw_element_resistance(0, 0,
        KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)
    when :state_resist
      draw_state_resistance(0, 0,
        KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)
    when :profile
      draw_profile
    end
    Graphics.frame_reset
  end
  #--------------------------------------------------------------------------
  # - Tworzenie listy parametrów
  #--------------------------------------------------------------------------
  def draw_parameter_list
    y = 0
    KGC::ExtendedStatusScene::PARAMS.each { |param|
      draw_parameter(param, 0, y)
      y += WLH
    }

    x = 192
    contents.font.color = system_color
    contents.draw_text(x, 0, 120, WLH, Vocab::equip)
    @actor.equips.each_with_index { |item, i|
      draw_item_name(item, x, WLH * (i + 1))
    }
    contents.font.color = normal_color
  end
  #--------------------------------------------------------------------------
  # - Tworzenie parametrów
  #--------------------------------------------------------------------------
  def draw_parameter(param, x, y)
    case param
    when :atk
      draw_actor_parameter(@actor, x, y, 0)
    when :def
      draw_actor_parameter(@actor, x, y, 1)
    when :spi
      draw_actor_parameter(@actor, x, y, 2)
    when :agi
      draw_actor_parameter(@actor, x, y, 3)
    when :hit
      draw_actor_parameter(@actor, x, y, 4)
    when :eva
      draw_actor_parameter(@actor, x, y, 5)
    when :cri
      draw_actor_parameter(@actor, x, y, 6)
    when :cp
      return unless $imported["SkillCPSystem"]
      return unless KGC::SkillCPSystem::SHOW_STATUS_CP
      draw_actor_cp(@actor, x, y, 156)
    end
  end
  #--------------------------------------------------------------------------
  # - Tworzenie parametrów bohatera
  #--------------------------------------------------------------------------
  def draw_actor_parameter(actor, x, y, type)
    return super(actor, x, y, type) if type <= 3

    names = KGC::ExtendedStatusScene::PARAMETER_NAME
    case type
    when 4
      parameter_name  = names[:hit]
      parameter_value = actor.hit
    when 5
      parameter_name  = names[:eva]
      parameter_value = actor.eva
    when 6
      parameter_name  = names[:cri]
      parameter_value = actor.cri
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, WLH, parameter_name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, WLH, parameter_value, 2)
  end
  #--------------------------------------------------------------------------
  # - Tworzenie odporności
  #--------------------------------------------------------------------------
  def draw_resistance
    case KGC::ExtendedStatusScene::RESIST_STYLE
    when 0
      type = :num
    else
      type = :chart
    end

    x = 0
    contents.font.color = system_color
    contents.draw_text(x, 0, 120, WLH,
      KGC::ExtendedStatusScene::PARAMETER_NAME[:element_resist])
    contents.font.color = normal_color
    x = draw_element_resistance(x, WLH, type)

    contents.font.color = system_color
    contents.draw_text(x, 0, 120, WLH,
      KGC::ExtendedStatusScene::PARAMETER_NAME[:state_resist])
    x = draw_state_resistance(x, WLH, type)

    contents.font.color = normal_color
  end
  #--------------------------------------------------------------------------
  # - Tworzenie odporności na atrybuty
  #--------------------------------------------------------------------------
  def draw_element_resistance(x, y, type)
    if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
      Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
    end

    if [:chart, :both].include?(type) && $imported["BitmapExtension"]
      x = draw_element_resistance_chart(x, y)
      @element_chart_sprite.visible = true
    end
    if [:num, :both].include?(type)
      x = draw_element_resistance_num(x, y)
    end

    Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT

    return x
  end
  #--------------------------------------------------------------------------
  # - Tworzenie wykresu odporności na atrybuty
  #--------------------------------------------------------------------------
  def draw_element_resistance_chart(x, y)
    r  = (contents.height - y - 56) / 2
    cx = x + r + 28
    cy = y + r + 28
    pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
    elements = KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST

    draw_chart_line(cx, cy, r, elements.size, 3, pw)

    # wykres
    points = []
    elements.each_with_index { |e, i|
      n   = @actor.element_rate(e)
      n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
      n   = [[n, -100].max, 200].min
      dr  = r * (n + 100) / 100 / 3
      rad = Math::PI * (360.0 * i / elements.size - 90.0) / 180.0
      dx  = cx + Integer(dr * Math.cos(-rad))
      dy  = cy + Integer(dr * Math.sin(rad))
      points << [dx, dy]

      dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
      dy = cy + Integer((r + 14) * Math.sin(rad))  - 12
      draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[e], dx, dy)
    }

    draw_chart(cx, cy, r, points, pw)
    draw_chart_flash(@element_chart_sprite, x, y, r, points, pw)

    return (x + cx + r + 42)
  end
  #--------------------------------------------------------------------------
  # - Tworzenie wykazu procentowego odporności na atrybuty
  #--------------------------------------------------------------------------
  def draw_element_resistance_num(x, y)
    origin_y = y
    contents.font.color = normal_color
    KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST.each { |i|
      if y + WLH > contents.height
        x += 84
        y  = origin_y
      end
      draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[i], x, y)
      n = @actor.element_rate(i)
      n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
      rate = sprintf("%4d%%", n)
      contents.draw_text(x + 24, y, 52, WLH, rate, 2)
      y += WLH
    }
    return (x + 96)
  end
  #--------------------------------------------------------------------------
  # - Tworzenie odporności na statusy
  #--------------------------------------------------------------------------
  def draw_state_resistance(x, y, type)
    if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
      Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
    end

    if [:chart, :both].include?(type) && $imported["BitmapExtension"]
      x = draw_state_resistance_chart(x, y)
      @state_chart_sprite.visible = true
    end
    if [:num, :both].include?(type)
      x = draw_state_resistance_num(x, y)
    end

    Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT

    return x
  end
  #--------------------------------------------------------------------------
  # - Tworzenie wykresu odporności na statusy
  #--------------------------------------------------------------------------
  def draw_state_resistance_chart(x, y)
    r  = (contents.height - y - 56) / 2
    cx = x + r + 28
    cy = y + r + 28
    pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
    states = KGC::ExtendedStatusScene::CHECK_STATE_LIST

    draw_chart_line(cx, cy, r, states.size, 2, pw)

    # wykres
    points = []
    states.each_with_index { |s, i|
      state = $data_states[s]
      n   = @actor.state_probability(s)
      n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
      dr  = r * n / 100
      rad = Math::PI * (360.0 * i / states.size - 90.0) / 180.0
      dx  = cx + Integer(dr * Math.cos(-rad))
      dy  = cy + Integer(dr * Math.sin(rad))
      points << [dx, dy]

      dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
      dy = cy + Integer((r + 14) * Math.sin(rad))  - 12
      draw_icon(state.icon_index, dx, dy)
    }

    draw_chart(cx, cy, r, points, pw)
    draw_chart_flash(@state_chart_sprite, x, y, r, points, pw)

    return (x + cx + r + 42)
  end
  #--------------------------------------------------------------------------
  # - Tworzenie wykazu procentowego odporności na statusy
  #--------------------------------------------------------------------------
  def draw_state_resistance_num(x, y)
    origin_y = y
    contents.font.color = normal_color
    KGC::ExtendedStatusScene::CHECK_STATE_LIST.each { |i|
      state = $data_states[i]
      if y + WLH > contents.height
        x += 76
        y  = origin_y
      end
      draw_icon(state.icon_index, x, y)
      n = @actor.state_probability(i)
      n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
      rate = sprintf("%3d%%", n)
      contents.draw_text(x + 24, y, 44, WLH, rate, 2)
      y += WLH
    }
    return x
  end
  #--------------------------------------------------------------------------
  # - Rysowanie wykazu graficznego - linie
  #--------------------------------------------------------------------------
  def draw_chart_line(cx, cy, r, n, breaks, pw)
    color = KGC::ExtendedStatusScene::CHART_BASE_COLOR.clone
    contents.draw_regular_polygon(cx, cy, r, n, color, pw)
    color.alpha = color.alpha * 5 / 8
    contents.draw_spoke(cx, cy, r, n, color, pw)
    (1..breaks).each { |i|
      contents.draw_regular_polygon(cx, cy, r * i / breaks, n, color, pw)
    }
  end
  #--------------------------------------------------------------------------
  # - Tworzenie wykresu
  #--------------------------------------------------------------------------
  def draw_chart(cx, cy, r, points, pw)
    contents.draw_polygon(points, KGC::ExtendedStatusScene::CHART_LINE_COLOR, 2)
  end
  #--------------------------------------------------------------------------
  # - Tworzenie efektu błysku w wykresie
  #--------------------------------------------------------------------------
  def draw_chart_flash(sprite, x, y, r, points, pw)
    points = points.clone
    points.each { |pt| pt[0] -= x }

    cx = x + r + 28
    cy = y + r + 28
    color = KGC::ExtendedStatusScene::CHART_FLASH_COLOR
    sprite.bitmap.clear
    sprite.bitmap.fill_polygon(points, Color.new(0, 0, 0, 0), color)
    sprite.ox = cx - x
    sprite.oy = cy
    sprite.x  = self.x + cx + 16
    sprite.y  = self.y + cy + 16
  end
  #--------------------------------------------------------------------------
  # - Tworzenie profilu
  #--------------------------------------------------------------------------
  def draw_profile
    profile = KGC::ExtendedStatusScene::PROFILE[@actor.id]
    return if profile == nil

    self.contents.font.color = normal_color
    profile.split(/\\\|/).each_with_index { |line, i|
      draw_profile_text(0, WLH * i, line)
    }
  end
  #--------------------------------------------------------------------------
  # - Tworzenie tekstu w profilu
  #--------------------------------------------------------------------------
  def draw_profile_text(x, y, text)
    buf = convert_special_characters(text)
    while (c = buf.slice!(/./m)) != nil
      case c
      when "\x01"                       
        buf.sub!(/\[(\d+)\]/, "")
        contents.font.color = text_color($1.to_i)
        next
      when "\x02"                       
        n  = $game_party.gold.to_s
        cw = contents.text_size(n).width
        contents.draw_text(x, y, cw + 8, WLH, n)
        x += cw
      else                             
        contents.draw_text(x, y, 40, WLH, c)
        x += contents.text_size(c).width
      end
    end
    contents.font.color = normal_color
  end
  #--------------------------------------------------------------------------
  # - Konwertowanie znaków specjalnych
  #--------------------------------------------------------------------------
  def convert_special_characters(text)
    buf = text.dup
    buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
    buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
    buf.gsub!(/\\N\[(\d+)\]/i) { $game_actors[$1.to_i].name }
    buf.gsub!(/\\C\[(\d+)\]/i) { "\x01[#{$1}]" }
    buf.gsub!(/\\G/)           { "\x02" }
    buf.gsub!(/\\\\/)          { "\\" }
    return buf
  end
  #--------------------------------------------------------------------------
  # - Odświeżanie
  #--------------------------------------------------------------------------
  def update
    super
    update_chart
  end
  #--------------------------------------------------------------------------
  # - Aktualizacja wykazu
  #--------------------------------------------------------------------------
  def update_chart
    return if @element_chart_sprite == nil

    @element_chart_sprite.update
    @state_chart_sprite.update

    zoom = opacity = 0
    case @duration
    when 0..11
      zoom    = @duration / 11.0
      opacity = 255
    when 12..27
      zoom    = 1
      opacity = (27 - @duration) * 16
    end
    @element_chart_sprite.zoom_x  = @element_chart_sprite.zoom_y = zoom
    @element_chart_sprite.opacity = opacity
    @state_chart_sprite.zoom_x    = @state_chart_sprite.zoom_y   = zoom
    @state_chart_sprite.opacity   = opacity

    @duration = (@duration + 1) % Graphics.frame_rate
  end
end



#=========================================================
# Scene_Status
#=========================================================

class Scene_Status < Scene_Base
  #--------------------------------------------------------------------------
  # - Rozpoczęcie
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0, command_index = 0)
    @actor_index   = actor_index
    @command_index = command_index
  end
  #--------------------------------------------------------------------------
  # - Start
  #--------------------------------------------------------------------------
  alias start_KGC_ExtendedStatusScene start
  def start
    start_KGC_ExtendedStatusScene

    @command_window = Window_StatusCommand.new
    @command_window.index = @command_index
    @detail_window = Window_StatusDetail.new(@actor)
    @detail_window.category = @command_window.command
  end
  #--------------------------------------------------------------------------
  # - Zakończenie
  #--------------------------------------------------------------------------
  alias terminate_KGC_ExtendedStatusScene terminate
  def terminate
    terminate_KGC_ExtendedStatusScene

    @command_window.dispose
    @detail_window.dispose
  end
  #--------------------------------------------------------------------------
  # - Następny bohater
  #--------------------------------------------------------------------------
  def next_actor
    @actor_index += 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Status.new(@actor_index, @command_window.index)
  end
  #--------------------------------------------------------------------------
  # - Poprzedni bohater
  #--------------------------------------------------------------------------
  def prev_actor
    @actor_index += $game_party.members.size - 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Status.new(@actor_index, @command_window.index)
  end
  #--------------------------------------------------------------------------
  # - Odświeżanie
  #--------------------------------------------------------------------------
  alias update_KGC_ExtendedStatusScene update
  def update
    @command_window.update
    @detail_window.update
    @detail_window.category = @command_window.command

    update_KGC_ExtendedStatusScene
  end
end

 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Czw 17 Gru, 2009 07:55
Greed napisał/a:
Nawet bardzo fajny tylko nie współgra ze skryptem "Rozszerzone okno statusu" :-P

Oto sposób na kompatybilność skryptów:
Znajdź w skrypcie z rozszerzonym statusem definicję (klasa Window_Status):
Kod:
  def draw_basic(x, y)
    draw_actor_face(@actor, 0, (contents.height - 96) / 2)
    draw_actor_name(@actor, x, y)
    draw_actor_class(@actor, x + 120, y)
    draw_actor_level(@actor, x, y + WLH)
    draw_actor_state(@actor, x, y + WLH * 2)
    draw_actor_hp(@actor, x + 120, y + WLH)
    draw_actor_mp(@actor, x + 120, y + WLH * 2)
  end 

i po niej dodaj:
Kod:
  def draw_equipments(x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
    item_number = [@actor.equips.size, @actor.armor_number + 1].min
    item_number.times { |i|
      draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1)) }
  end


Teraz wszystko powinno 'śmigać' :-P
________________________


 
 
 
Szczurek 




Preferowany:
RPG Maker VX

Dołączył: 15 Paź 2009
Posty: 38
Skąd: Opole
Wysłany: Sob 19 Gru, 2009 15:18
Póki wybieram Nową Grę, wszystko jest ok, ale gdy zapiszę stan gry i próbuję go wczytać, wyskakuje:

Cytat:
Script 'Ekwipunek' line 107: NoMethodError occured.
undefined method `restore_equip' for #<Game_Actor:0x2bbbe98>
________________________
Embrace your dreams... And... whatever happens... protect your honor...
Interesuje Cię moja gra ? Dowiedz się więcej TUTAJ lub na FORUM GRY

 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 19 Gru, 2009 19:20
Teraz powinno być w porządku - podmień skrypt z pierwszego posta.
________________________


 
 
 
Szczurek 




Preferowany:
RPG Maker VX

Dołączył: 15 Paź 2009
Posty: 38
Skąd: Opole
Wysłany: Nie 20 Gru, 2009 00:55
No i jest w porządku :) Ayene, jak zwykle niezawodna ! Dziękuję :)

[ Dodano: Nie 20 Gru, 2009 15:41 ]
Sory, za double post. Chyba zostanę Bug Finder'em, albo czymś takim.
Po wejściu do statusu (skrypt "Rozszerzone Okno Statusu" z tego forum) wyskakuje:

Cytat:
Script 'Status' line 403: NameError occured.
unintialized constant KGC::EquipExtension::SHOW_STATUS_EP
________________________
Embrace your dreams... And... whatever happens... protect your honor...
Interesuje Cię moja gra ? Dowiedz się więcej TUTAJ lub na FORUM GRY

 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 20 Gru, 2009 21:52
Znajdź w skrypcie "Rozszerzone okno statusu" i usuń fragment:
Kod:
    when :ep
      return unless $imported["EquipExtension"]
      return unless KGC::EquipExtension::SHOW_STATUS_EP
      draw_actor_ep(@actor, x, y, 156)
________________________


 
 
 
Szczurek 




Preferowany:
RPG Maker VX

Dołączył: 15 Paź 2009
Posty: 38
Skąd: Opole
Wysłany: Nie 20 Gru, 2009 22:05
Kurka wodna, Ayene, przez ten kocioł ze świętami kompletnie tracę zmysły programisty ! Na szczęście Ty, jak zawsze niezawodna :) Dzięki wielkie !!
________________________
Embrace your dreams... And... whatever happens... protect your honor...
Interesuje Cię moja gra ? Dowiedz się więcej TUTAJ lub na FORUM GRY

 
 
 
bionicl 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 06 Gru 2009
Posty: 99
Skąd: z Huty Mińskiej
Wysłany: Pon 01 Mar, 2010 17:57
A dało by się zrobić, aby skrypt współgrał z walką (był taki skrypt że w walce też jest Ekwipunek)?
________________________
Gość, podoba ci się moja gra? ;)
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Wto 02 Mar, 2010 09:24
Umieść to pod skryptem z rozszerzeniem ekwipunku:
Spoiler:

Kod:
# ------------------------------------
# www.ultimateam.pl
# Autor: Ayene
# Data: 15.12.2009
# ------------------------------------
class Window_ActorCommand < Window_Command
  def initialize
    super(128, [], 1, 5)
    self.active = false
    self.height = [4 * WLH + 32].max
  end
 
  def setup(actor)
    s1 = Vocab::attack
    s2 = Vocab::skill
    s3 = Vocab::guard
    s4 = Vocab::item
    s5 = Vocab::equip          # Ekwipunek
    if actor.class.skill_name_valid   
      s2 = actor.class.skill_name       
    end
    @commands = [s1, s2, s3, s4, s5]
    @item_max = 5  # odpowiada ilości komend
    refresh
    self.index = 0
    update
  end   
end


#--------------------------------------------------------------------------
# Scene_Battle
#--------------------------------------------------------------------------
class Scene_Battle < Scene_Base
 
  EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5
 
  def update
    super
    update_basic(true)
    update_info_viewport                 
    if $game_message.visible
      @info_viewport.visible = false
      @message_window.visible = true
    end
    unless $game_message.visible         
      return if judge_win_loss           
      update_scene_change
      if @target_enemy_window != nil
        update_target_enemy_selection     
      elsif @target_actor_window != nil
        update_target_actor_selection     
      elsif @skill_window != nil
        update_skill_selection           
      elsif @item_window != nil
        update_item_selection             
      elsif @party_command_window.active
        update_party_command_selection   
      elsif @actor_command_window.active
        update_actor_command_selection   
      elsif @equip_window != nil
        update_equip
      else
        process_battle_event             
        process_action                   
        process_battle_event             
      end
    end
  end

  def update_actor_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      prior_actor
    elsif Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when 1
        Sound.play_decision
        start_skill_selection
      when 2
        Sound.play_decision
        @active_battler.action.set_guard
        next_actor
      when 3
        Sound.play_decision
        start_item_selection
      when 4  # Ekwipunek
        Sound.play_decision
        start_equip_selection       
      end
    end
  end
 
  def start_equip_selection
    @help_window = Window_Help.new   
    @actor_command_window.active = false
    @equip_window = Window_Equip.new(208, 56, @active_battler)
    @equip_window.help_window = @help_window
    @equip_index=0
    @equip_window.index = @equip_index
    @equip_status_window = Window_EquipStatus.new(0, 56, @active_battler)
    @equip_status_window.active = false   
    @equip_window.refresh
    @equip_window.active = true     
    create_equip_windows
  end
         
  def create_equip_windows
    @item_windows = []
    kind = equip_kind(@equip_index)
    for i in 0...EQUIP_TYPE_MAX
      @item_windows[i] = Window_EquipItem.new(0, 208, 544, 80, @active_battler, i)
      @item_windows[i].help_window = @help_window
      @item_windows[i].visible = (kind == i)
      @item_windows[i].y = 208
      @item_windows[i].height = 80
      @item_windows[i].active = false
      @item_windows[i].index = -1
    end
  end
 
  def update_equip_windows   
    kind = equip_kind(@equip_window.index)
    for i in 0...EQUIP_TYPE_MAX
      @item_windows[i].visible = (kind == i)
      @item_windows[i].update
    end
    @equip_item_window = @item_windows[kind]
  end
 
  def equip_kind(index)   
    if index == 0
      return 0
    else
      return @active_battler.equip_type[index - 1] + 1
    end
  end 
 
  def update_equip_window
    @equip_window.update
  end
 
  def update_equip_status_window
    if @equip_window.active
      @equip_status_window.set_new_parameters(nil, nil, nil, nil)
    elsif @equip_item_window.active
      temp_actor = Marshal.load(Marshal.dump(@active_battler))
      temp_actor.change_equip(@equip_window.index, @equip_item_window.item, true)
      new_atk = temp_actor.atk
      new_def = temp_actor.def
      new_spi = temp_actor.spi
      new_agi = temp_actor.agi
      @equip_status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
    end
    @equip_status_window.update
  end

  def update_equip
    @help_window.update
    update_equip_window
    update_equip_windows   
    update_equip_status_window
    if @equip_window.active
      update_equip_selection
    elsif @equip_item_window.active
      update_equip_item_selection
    end
  end
 
  def update_equip_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_equip_selection
    elsif Input.trigger?(Input::C)
        if @active_battler.fix_equipment
          Sound.play_buzzer
        else
          Sound.play_decision
          @equip_window.active = false
          @equip_item_window.active = true
          @equip_item_window.index = 0         
        end     
    end
  end
 
  def end_equip_selection
    if @equip_window != nil
      @equip_window.dispose
      @equip_window = nil
      @equip_status_window.dispose
      @equip_status_window = nil     
      @help_window.dispose
      @help_window = nil
      @actor_command_window.active = true
      for window in @item_windows
        window.dispose
      end
    end
  end
 
  def update_equip_item_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @equip_window.active = true
      @equip_item_window.index = -1
      @equip_item_window.active = false
    elsif Input.trigger?(Input::C)
      Sound.play_equip
      @active_battler.change_equip(@equip_window.index, @equip_item_window.item)
      @equip_window.active = true
      @equip_window.refresh
      @equip_item_window.active = false
      @equip_item_window.index = -1
      for equip_item_window in @item_windows
        equip_item_window.refresh
      end               
    end
  end
end

________________________


 
 
 
mjack1234 




Preferowany:
RPG Maker VX

Dołączył: 02 Kwi 2010
Posty: 18
Wysłany: Sob 17 Kwi, 2010 21:39
Mam pytanko.
Próbowałem zmieniać wszystko ale nie działało.Gdzie mogę zmienić "słowniczek"?
(chodzi mi aby zmienić Nogi i Ramiona po angielsku)
________________________
Chrono Cross.
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 18 Kwi, 2010 20:27
Linijka:
Kod:
EXTRA_EQUIP_KIND = ["Nogi", "Ramiona"]


Wystarczyło skorzystać z szukajki, a znalazłbyś słowo Nogi użyte w skrypcie.
________________________


 
 
 
mjack1234 




Preferowany:
RPG Maker VX

Dołączył: 02 Kwi 2010
Posty: 18
Wysłany: Pon 19 Kwi, 2010 15:13
Dzienx pomogło :mrgreen:
Lecz się dziwie ponieważ zazwyczaj pojawia się coś takiego jak VOCAB,lub jest czytelne gdzie można zmienić słowniczek.Może to z tłumaczenia na PL.Ale jest oK
________________________
Chrono Cross.
 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene