Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Wybór postaci [XP]
Autor Wiadomość
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 15 Lip, 2011 10:48
Wybór postaci [XP]
~ Wybór postaci [XP] ~

Krótki opis
Skrypt pozwala na wybór postaci na początku gry. Może mieć również zastosowanie przy wyborze więcej niż jednego bohatera (maksymalnie tyle, ile może liczyć drużyna).

Wystarczy na początku gry wywołać za pomocą polecenia "Script" w zdarzeniu:
Kod:
$scene = Scene_Character_Select.new


Jeśli chcesz, aby okno wyboru pojawiło się od razu po wyborze nowej gry:
Spoiler:

Wejdź w klasę 'Scene_Title' i znajdź:
Kod:
$scene = Scene_Map.new

zamień na:
Kod:
$scene = Scene_Character_Select.new

Pamiętaj, aby w konfiguracji skryptu ustawić:
Kod:
NEXT_SCENE = Scene_Map          # kolejna scena 


Autor skryptu
Ayene [yurika@o2.pl]

Kompatybilność
Tylko XP

Skrypt
Spoiler:

Kod:
#==============================================================================
# Wybór postaci [XP]
# by Ayene
# 15.07.2011 ver 2.0
# www.ultimateam.pl
#==============================================================================
# Opis:
# Skrypt pozwala na wybór postaci na początku gry. Może mieć również
# zastosowanie przy wyborze więcej niż jednego bohatera (maksymalnie tyle,
# ile może liczyć drużyna).
#==============================================================================
# Instrukcja:
#==============================================================================
# Na początku gry wywołaj za pomocą polecenia "Script" w zdarzeniu:
# $scene = Scene_Character_Select.new
#
#==============================================================================
# Konfiguracja:
#==============================================================================

module AYENE
  module Character_Select
   
    # Ustawienia czcionki
    FONT_NAME = 'Comic Sans MS'    # nazwa czcionki (folder Fonts)
    FONT_SIZE = 26                 # rozmiar czcionki
    FONT_BOLD = false              # pogrubienie
    FONT_ITALIC = false            # kursywa   
    FONT_COLOR = Color.new(255, 255, 255, 255)   # kolor tekstu
    FONT_OUTLINE = true                          # obwódka? (true/false)   
    FONT_OUTLINE_COLOR = Color.new(0, 0, 0, 255) # kolor obwódki tekstu     
    FONT_SHADOW = true                          # cień? (true/false)
    FONT_SHADOW_COLOR = Color.new(0, 0, 0, 100)  # kolor cienia
     
    WLH = 32                        # interlinia
   
    # Ustawienia tła obrazkowego (folder Graphics/Pitures)   
    BACKGROUND_IMAGE = ''           # nazwa tła; '' wyłącza tło
    BACKGROUND_OPACTIY = 255    # przezroczystość tła
   
    # Ustawienia okna (folder Graphics/Windowskins)
    WINDOW = ''                              # nazwa pliku; '' domyślne okno
    WINDOW_OPACTIY = 255           # przezroczystość okna
    WINDOW_HELP_TEXT = 'Wybierz bohatera'
   
    # Ustawienia muzyki w tle
    STAGE_BGM = ''                  # nazwa pliku z muzyką (folder Audio/BGM)
    STAGE_BGM_VOLUME = 100          # głośność
       
    # Ustawienia postaci
    CHAR_IDS = [1, 5, 4, 2, 3, 6, 7, 8]  # ID postaci do wyboru
   
    # Obrazek bohatera. By go wyświetlić należy w folderze Graphics/Pictures
    # umieścić plik o nazwie "Face_ID", gdzie zamiast ID należy podać id postaci,
    # np. "Face_2" to obrazek bohatera o ID 2.
    CHAR_FACE = true                     # obrazek bohatera? (true/false)   
       
    # Ustawienia statystyk i ich pasków
    # Maksymalna wartość pasków wynosi tyle, ile największa wartość danej
    # statystyki u wszystkich postaci do wyboru. Innymi słowy, skrypt porównuje
    # wielkość danej statystyki u postaci, następnie wyłania najwyższą.
   
    CHAR_PARAMS = [ :hp, :sp, :str, :dex, :agi, :int ]  # nazwy statystyk po przecinku
   
    CHAR_PARAMS_BAR = { # :par => "nazwa", color1, color2
    :hp  => ["Życie", Color.new(0, 100, 17, 255), Color.new(0, 223, 37, 255)],
    :sp  => ["Mana", Color.new(0, 60, 95, 255), Color.new(0, 142, 223, 255)],
    :str => ["Siła", Color.new(140, 20, 20, 255), Color.new(230, 34, 34, 255)],
    :dex => ["Celność", Color.new(124, 38, 132, 255), Color.new(209, 62, 222, 255)],
    :agi => ["Szybkość", Color.new(142, 134, 12, 255), Color.new(228, 219, 71, 255)],
    :int => ["Inteligencja", Color.new(33, 143, 136, 255), Color.new(68,224, 215, 255)],
    }
   
    BAR_WIDTH = 150                 # Szerokość pasków   
    COLMUNS = 3                     # Liczba kolumn
   
    NEXT_SCENE = Scene_Map          # kolejna scena   
    PREVIOUS_SCENE = Scene_Title    # poprzednia scena
   
    MAX_MEMBER = 3        # maksymalna liczba bohaterów w drużynie
    DELCHAR_SWITCH = 4    # przełącznik włączający usuwanie bohaterów z drużyny
  end   
end

#==============================================================================
# ** Game_Party
#==============================================================================

class Game_Party
  attr_accessor   :actors                   # actors
end

#==============================================================================
# ** Scene_Character_Select
#==============================================================================

class Scene_Character_Select
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    start
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    terminate
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    @actor_id = 0
    if STAGE_BGM != ''
      Audio.bgm_play("Audio/BGM/" + STAGE_BGM, STAGE_BGM_VOLUME, 100)
    end
    if BACKGROUND_IMAGE != ''
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture(BACKGROUND_IMAGE)
      @background.opacity = BACKGROUND_OPACTIY
    end     
    @window_command = Window_Command_Select.new
    @window_help = Window_Char_Select_Help.new
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    @window_command.dispose
    @window_help.dispose
    unless @background.nil?
      @background.bitmap.dispose
      @background.dispose
    end   
    Audio.bgm_fade(1500) if STAGE_BGM != ''
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update   
    @window_command.update
    @window_help.update
    if Input.trigger?(Input::C)
      determine_character     
      $game_party.actors = [] if $game_switches[DELCHAR_SWITCH]
      if $game_party.actors.size < MAX_MEMBER   
        $game_party.add_actor(@actor_id)
        $game_system.se_play($data_system.decision_se)
        $scene = eval("#{NEXT_SCENE}.new")       
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    elsif Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = eval("#{PREVIOUS_SCENE}.new")
      return
    end   
  end
  #--------------------------------------------------------------------------
  # * Determine Character
  #--------------------------------------------------------------------------
  def determine_character
    actor_index = @window_command.index
    data = []     
    CHAR_IDS.each {|i| data.push(i) if !$game_party.actors.include?($game_actors[i])}   
    @actor_id = data[actor_index]
  end
end

#==============================================================================
# ** Window_Command_Select
#==============================================================================

class Window_Command_Select < Window_Selectable
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize   
    super(0, 65, 640, 415)
    data = []
    CHAR_IDS.each {|i| data.push(i) if !$game_party.actors.include?($game_actors[i])}   
    @commands = data
    @_blink_count = 0
    @item_max = @commands.size
    @cursor_width = ((width-32) / COLMUNS)     
    self.windowskin = RPG::Cache.windowskin(WINDOW) if WINDOW != ''
    self.opacity = WINDOW_OPACTIY
    self.contents = Bitmap.new(@cursor_width+@item_max * @cursor_width-32, height-32)
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear   
    @commands.each_index { |i| draw_item(i)}   
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)
    x = 4 + @cursor_width * index
    y = 4     
    actor = $game_actors[@commands[index]]     
    draw_actor_status(actor, x, y)
    x = (@cursor_width-BAR_WIDTH)/2 + @cursor_width * index
    CHAR_PARAMS.each_index { |i|
      draw_actor_params(actor, x, y + @bit_height + WLH * (i+2), CHAR_PARAMS[i])
    }
  end
  #--------------------------------------------------------------------------
  # * Draw Actor Status
  #--------------------------------------------------------------------------
  def draw_actor_status(actor, x, y)   
    self.contents.font.size = FONT_SIZE
    self.contents.draw_char_status(x, y, @cursor_width - 8, WLH, "#{actor.name}", FONT_COLOR, 1)           
    if CHAR_FACE
      bitmap = RPG::Cache.picture("Face_#{actor.id}")   
      rect = Rect.new(0, 0, bitmap.width, bitmap.height)
      self.contents.blt(x + (@cursor_width-bitmap.width)/2, y + WLH * 1, bitmap, rect)   
      @bit_height = bitmap.height
      bitmap.dispose
    else
      @bit_height = 0
    end   
    self.contents.font.size = FONT_SIZE-2
    class_name = $data_classes[actor.class_id].name
    text = sprintf("Klasa: %s", class_name)   
    self.contents.draw_char_status(x, y + @bit_height + WLH, @cursor_width - 8, WLH, text, FONT_COLOR, 1)   
  end
  #--------------------------------------------------------------------------
  # * Draw Actor Parameters
  #--------------------------------------------------------------------------
  def draw_actor_params(actor, x, y, type)
    members = []
    @commands.each {|i| members.push($game_actors[i])}   
    case type
    when :hp   
      members.sort!   { |a, b| a.maxhp <=> b.maxhp }     
      gw = BAR_WIDTH * actor.hp / members.pop.maxhp
      text = "#{actor.maxhp}"
    when :sp
      members.sort!   { |a, b| a.maxsp <=> b.maxsp }     
      gw = BAR_WIDTH * actor.sp / members.pop.maxsp
      text = "#{actor.maxsp}"
    when :str
      members.sort!   { |a, b| a.str <=> b.str }
      gw = BAR_WIDTH * actor.str / members.pop.str
      text = "#{actor.str}"   
    when :dex
      members.sort!   { |a, b| a.dex <=> b.dex }
      gw = BAR_WIDTH * actor.dex / members.pop.dex
      text = "#{actor.dex}"
    when :agi
      members.sort!   { |a, b| a.agi <=> b.agi }
      gw = BAR_WIDTH * actor.agi / members.pop.agi
      text = "#{actor.agi}"   
    when :int
      members.sort!   { |a, b| a.int <=> b.int }
      gw = BAR_WIDTH * actor.int / members.pop.int
      text = "#{actor.int}"   
    end
    self.contents.fill_rect(x, y+WLH-8, BAR_WIDTH+2, 8, Color.new(0, 0, 0, 255))
    self.contents.gradient_fill_rect(x+1, y+WLH-7, gw, 6, CHAR_PARAMS_BAR[type][1], CHAR_PARAMS_BAR[type][2])     
    self.contents.draw_char_status(x, y, 100, WLH, CHAR_PARAMS_BAR[type][0], system_color, 0)
    self.contents.draw_char_status(x + BAR_WIDTH - 42, y, 44, WLH, text, FONT_COLOR, 2)
  end   
  #--------------------------------------------------------------------------
  # * Get Top Row
  #--------------------------------------------------------------------------
  def top_row   
    return self.ox / @cursor_width
  end
  #--------------------------------------------------------------------------
  # * Set Top Row
  #--------------------------------------------------------------------------
  def top_row=(row)   
    row = 0 if row < 0
    row = @item_max - 1 if row > @item_max - 1     
    self.ox = row * @cursor_width
  end
  #--------------------------------------------------------------------------
  # * Update Cursor Rectangle
  #--------------------------------------------------------------------------
  def update_cursor_rect     
    if @index < 0
      self.cursor_rect.empty
      return
    end   
    row = @index     
    self.top_row = row if row < self.top_row
    self.top_row = row - (COLMUNS - 1) if row > self.top_row + (COLMUNS - 1)
    x = @index * @cursor_width - self.ox
    y = 0         
    self.cursor_rect.set(x, y, @cursor_width, height-32)   
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if self.active and @item_max > 0 and @index >= 0
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)       
        @index += 1
        @index %= @item_max
      end
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        @index += @item_max - 1
        @index %= @item_max       
      end
    end   
    update_cursor_rect
  end   
end

#==============================================================================
# ** Window_Char_Select_Help
#==============================================================================

class Window_Char_Select_Help < Window_Base
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.windowskin = RPG::Cache.windowskin(WINDOW) if WINDOW != ''
    self.opacity = WINDOW_OPACTIY
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear   
    self.contents.font.size = FONT_SIZE
    self.contents.draw_char_status(4, 0, width-32, WLH, WINDOW_HELP_TEXT, FONT_COLOR, 1)
  end
end

#==============================================================================
# ** Bitmap
#==============================================================================

class Bitmap
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Draw Text Outline
  #--------------------------------------------------------------------------
  def draw_char_status(x, y, width, height, text, color, align = 1)
    font.name = FONT_NAME   
    font.bold = FONT_BOLD
    font.italic = FONT_ITALIC
    if FONT_OUTLINE
      font.color = FONT_OUTLINE_COLOR
      draw_text(x + 1, y, width, height, text, align)
      draw_text(x - 1, y, width, height, text, align)
      draw_text(x, y + 1, width, height, text, align)
      draw_text(x, y - 1, width, height, text, align)
    end   
    if FONT_SHADOW
      font.color = FONT_SHADOW_COLOR   
      draw_text(x + 1, y + 4, width, height, text, align)
    end
    font.color = color
    draw_text(x, y, width, height, text, align)
  end
  #--------------------------------------------------------------------------
  # * Draw Gradient Fill Rectangle
  #--------------------------------------------------------------------------
  def gradient_fill_rect(x, y, width, height, c1, c2)
    (x...x + width).each { |i|
      r = c1.red + (c2.red - c1.red) * (i - x) / (width - 1)
      g = c1.green + (c2.green - c1.green) * (i - x) / (width - 1)
      b = c1.blue + (c2.blue - c1.blue) * (i - x) / (width - 1)
      color = Color.new(r, g, b)
      fill_rect(i, y, 1, height, color)
      }   
  end
end


Demo



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.

[ Komentarz dodany przez: Avara: Nie 04 Lis, 2012 12:14 ]
Dodałam demo wrzucone przez Ayene na kolejnej stronie.
________________________


Ostatnio zmieniony przez Avara Nie 04 Lis, 2012 12:12, w całości zmieniany 3 razy  
 
 
 
rafal3386 



Pomógł: 2 razy
Dołączył: 29 Sty 2011
Posty: 39
Wysłany: Sob 16 Lip, 2011 17:47
No wszystko działa tylko że niewiem jak zmienić głównego bohatera za pomocą tego skryptu :-/ Bo tak jak wytłumaczyłaś to tylko dodaje mi bohatera a mogłabyś objaśnić jak usunąć bierzącego bohatera i dodać tego z listy? :->
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 16 Lip, 2011 17:49
Chcesz, aby skrypt usuwał wszystkich z drużyny i dodawał nowego bohatera, czy pytasz się o skrypt na zmianę drużyny, który to dopiero musiałby powstać? ;-)
________________________


 
 
 
rafal3386 



Pomógł: 2 razy
Dołączył: 29 Sty 2011
Posty: 39
Wysłany: Sob 16 Lip, 2011 19:22
No chodzi mi o to że np. na początku mam wybraną przez siebie postać a potem na którymś miejscy daje ten skrypt i nagle wywołuje mi wybranie postaci (nowej z równoczesnym usunięciem wcześniejszej postaci). Tak żeby po wybraniu bohatera był tylko 1 bohater do gry :-)
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 16 Lip, 2011 21:31
Znajdź:
Kod:
if $game_party.actors.size < 4

przed tym dodaj:
Kod:
$game_party.actors = []

na samym końcu skryptu dodaj:
Kod:
class Game_Party
  attr_accessor   :actors                   # actors
end
________________________


 
 
 
rafal3386 



Pomógł: 2 razy
Dołączył: 29 Sty 2011
Posty: 39
Wysłany: Sob 16 Lip, 2011 22:11
Dzięęęęękiiii!!! :mrgreen: Działa wszystko ;-) Z pewnością nie tylko mnie sie to przyda :-)

EDIT: A mogłabyś powiedzieć jak dodać jeszcze z kilka miejsc na te postacie bo max slotów na postacie mam 7 :-> . Chodziło mi o to żeby było już na początku więcej osób do wyboru bo jak wybiore jakąś osobe to za 2 razem jak próbuje to jest nowa postać zamiast tamtej ale to tylko zastępuje a ja wolałbym jednak żeby było od razu z 15 postaci do wyboru bez zmian :-)
I mam taki problem, bo jak zamieniam oryginalne postaci na te które są mi potrzebne (do wyboru bohaterów) to podczas walki, postać ta jak ma zaatakować z broni zwykłej to tylko biegnie w miejscu (szybko dość). Siła i broń jest u bohatera więc niewiem czemu taki błąd :cry:
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pon 18 Lip, 2011 20:48
Jeśli chcesz więcej postaci do wyboru to edytuj fragment:
Kod:
if $game_party.actors.size < 4   

gdzie zamiast 4 daj maksymalną ilość bohaterów w drużynie.
Jeśli nie chcesz, aby postaci usuwały się z drużyny znajdź:
Kod:
PREVIOUS_SCENE = Scene_Title    # poprzednia scena

dodaj po niej:
Kod:
DELCHAR_SWITCH = 4    # przełącznik włączający usuwanie bohaterów z drużyny

Następnie znajdź:
Kod:
$game_party.actors = []

i zamień na:
Kod:
$game_party.actors = [] if $game_switches[DELCHAR_SWITCH]
________________________


 
 
 
rafal3386 



Pomógł: 2 razy
Dołączył: 29 Sty 2011
Posty: 39
Wysłany: Pon 18 Lip, 2011 21:02
Dzięki wielkie ;-)
 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Czw 21 Lip, 2011 22:29
A ja dalem wywolaj skrypt dalem to co tam napisalas i gdy wchodze do gry gra sie scina nie wyskakuja zadne bledy tylko sie scina
________________________

 
 
 
Feniks 




Preferowany:
RPG Maker XP

Ranga RM:
2 gry

Pomógł: 62 razy
Dołączył: 04 Wrz 2010
Posty: 511
Wysłany: Czw 21 Lip, 2011 22:33
ale ty to wywołujesz autorunem prawda? To na końcu daj erase event. A jeśli to nie to, to użyj anti-laga.
________________________

 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Czw 21 Lip, 2011 22:38
Sluchajcie cos zle edytowalem bo chcialem tak jak Rafal3386 w 1 poscie abym wybieral postac i nia chodzil a nie druzyne i edytowalem tak jak Ayene napisala ale zrobilem cos nie tak bo mi wyskakuje okienko z wyborem postaci i naciskam na postac i sie robi czarne tlo i wywala blad " Script "Skrypt Wybor" line 141 : NoMethodError occurred. undefined method `actors=' for#<Game_Party:0x37aac70>" Zapewne zle to edytowalem.. czy moglby ktos edytowac i dopisac te pare linijek tak jak Ayene napisala ?? Pokaze jak ja to zrobilem ( nie znam sie )
Spoiler:

Kod:
#==============================================================================
# Wybór postaci [XP]
# by Ayene
# 15.07.2011 ver 1.0
# www.ultimateam.pl
#==============================================================================
# Opis:
# Skrypt pozwala na wybór postaci na początku gry. Może mieć również
# zastosowanie przy wyborze więcej niż jednego bohatera (maksymalnie tyle,
# ile może liczyć drużyna).
#==============================================================================
# Instrukcja:
#==============================================================================
# Na początku gry wywołaj za pomocą polecenia "Script" w zdarzeniu:
# $scene = Scene_Character_Select.new
#
#==============================================================================
# Konfiguracja:
#==============================================================================

module AYENE
  module Character_Select
   
    # Ustawienia czcionki
    FONT_NAME = 'Comic Sans MS'    # nazwa czcionki (folder Fonts)
    FONT_SIZE = 26                 # rozmiar czcionki
    FONT_BOLD = false              # pogrubienie
    FONT_ITALIC = false            # kursywa   
    FONT_COLOR = Color.new(255, 255, 255, 255)   # kolor tekstu
    FONT_OUTLINE = false                       # obwódka? (true/false)   
    FONT_OUTLINE_COLOR = Color.new(0, 0, 0, 255) # kolor obwódki tekstu     
    FONT_SHADOW = true                          # cień? (true/false)
    FONT_SHADOW_COLOR = Color.new(0, 0, 0, 100)  # kolor cienia
     
    WLH = 32                        # interlinia
   
    # Ustawienia tła obrazkowego (folder Graphics/Pitures)   
    BACKGROUND_IMAGE = ''           # nazwa tła; '' wyłącza tło
    BACKGROUND_OPACTIY = 255    # przezroczystość tła
   
    # Ustawienia okna (folder Graphics/Windowskins)
    WINDOW = ''                              # nazwa pliku; '' domyślne okno
    WINDOW_OPACTIY = 255           # przezroczystość okna
    WINDOW_HELP_TEXT = 'Wybierz bohatera'
   
    # Ustawienia muzyki w tle
    STAGE_BGM = ''                  # nazwa pliku z muzyką (folder Audio/BGM)
    STAGE_BGM_VOLUME = 100          # głośność
       
    # Ustawienia postaci
    CHAR_IDS = [1, 5, 4, 2, 3, 6, 7]  # ID postaci do wyboru
   
    # Obrazek bohatera. By go wyświetlić należy w folderze Graphics/Pictures
    # umieścić plik o nazwie "Face_ID", gdzie zamiast ID należy podać id postaci,
    # np. "Face_2" to obrazek bohatera o ID 2.
    CHAR_FACE = false                     # obrazek bohatera? (true/false)   
       
    # Ustawienia statystyk i ich pasków
    # Maksymalna wartość pasków wynosi tyle, ile największa wartość danej
    # statystyki u wszystkich postaci do wyboru. Innymi słowy, skrypt porównuje
    # wielkość danej statystyki u postaci, następnie wyłania najwyższą.
   
    CHAR_PARAMS = [ :hp, :sp, :str, :dex, :agi, :int ]  # nazwy statystyk po przecinku
   
    CHAR_PARAMS_BAR = { # :par => "nazwa", color1, color2
    :hp  => ["Życie", Color.new(0, 100, 17, 255), Color.new(0, 223, 37, 255)],
    :sp  => ["Mana", Color.new(0, 60, 95, 255), Color.new(0, 142, 223, 255)],
    :str => ["Siła", Color.new(140, 20, 20, 255), Color.new(230, 34, 34, 255)],
    :dex => ["Celność", Color.new(124, 38, 132, 255), Color.new(209, 62, 222, 255)],
    :agi => ["Szybkość", Color.new(142, 134, 12, 255), Color.new(228, 219, 71, 255)],
    :int => ["Inteligencja", Color.new(33, 143, 136, 255), Color.new(68,224, 215, 255)],
    }
   
    BAR_WIDTH = 150                 # Szerokość pasków   
    COLMUNS = 3                     # Liczba kolumn
   
    NEXT_SCENE = Scene_Map          # kolejna scena   
    PREVIOUS_SCENE = Scene_Title    # poprzednia scena
  end   
end

#==============================================================================
# ** Scene_Character_Select
#==============================================================================

class Scene_Character_Select
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    start
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    terminate
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    @actor_id = 0
    if STAGE_BGM != ''
      Audio.bgm_play("Audio/BGM/" + STAGE_BGM, STAGE_BGM_VOLUME, 100)
    end
    if BACKGROUND_IMAGE != ''
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture(BACKGROUND_IMAGE)
      @background.opacity = BACKGROUND_OPACTIY
    end     
    @window_command = Window_Command_Select.new
    @window_help = Window_Char_Select_Help.new
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    @window_command.dispose
    @window_help.dispose
    unless @background.nil?
      @background.bitmap.dispose
      @background.dispose
    end   
    Audio.bgm_fade(1500) if STAGE_BGM != ''
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update   
    @window_command.update
    @window_help.update
    if Input.trigger?(Input::C)
      determine_character
      $game_party.actors = []
      if$game_party.actors.size < 1 
        $game_party.add_actor(@actor_id)
        $game_system.se_play($data_system.decision_se)
        $scene = eval("#{NEXT_SCENE}.new")       
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    elsif Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = eval("#{PREVIOUS_SCENE}.new")
      return
    end   
  end
  #--------------------------------------------------------------------------
  # * Determine Character
  #--------------------------------------------------------------------------
  def determine_character
    actor_index = @window_command.index
    data = []     
    CHAR_IDS.each {|i| data.push(i) if !$game_party.actors.include?($game_actors[i])}   
    @actor_id = data[actor_index]
  end
end

#==============================================================================
# ** Window_Command_Select
#==============================================================================

class Window_Command_Select < Window_Selectable
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize   
    super(0, 65, 640, 415)
    data = []
    CHAR_IDS.each {|i| data.push(i) if !$game_party.actors.include?($game_actors[i])}   
    @commands = data
    @_blink_count = 0
    @item_max = @commands.size
    @cursor_width = ((width-32) / COLMUNS)     
    self.windowskin = RPG::Cache.windowskin(WINDOW) if WINDOW != ''
    self.opacity = WINDOW_OPACTIY
    self.contents = Bitmap.new(@cursor_width+@item_max * @cursor_width-32, height-32)
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear   
    @commands.each_index { |i| draw_item(i)}   
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)
    x = 4 + @cursor_width * index
    y = 4     
    actor = $game_actors[@commands[index]]     
    draw_actor_status(actor, x, y)
    x = (@cursor_width-BAR_WIDTH)/2 + @cursor_width * index
    CHAR_PARAMS.each_index { |i|
      draw_actor_params(actor, x, y + @bit_height + WLH * (i+2), CHAR_PARAMS[i])
    }
  end
  #--------------------------------------------------------------------------
  # * Draw Actor Status
  #--------------------------------------------------------------------------
  def draw_actor_status(actor, x, y)   
    self.contents.font.size = FONT_SIZE
    self.contents.draw_char_status(x, y, @cursor_width - 8, WLH, "#{actor.name}", FONT_COLOR, 1)           
    if CHAR_FACE
      bitmap = RPG::Cache.picture("Face_#{actor.id}")   
      rect = Rect.new(0, 0, bitmap.width, bitmap.height)
      self.contents.blt(x + (@cursor_width-bitmap.width)/2, y + WLH * 1, bitmap, rect)   
      @bit_height = bitmap.height
      bitmap.dispose
    else
      @bit_height = 0
    end   
    self.contents.font.size = FONT_SIZE-2
    class_name = $data_classes[actor.class_id].name
    text = sprintf("Klasa: %s", class_name)   
    self.contents.draw_char_status(x, y + @bit_height + WLH, @cursor_width - 8, WLH, text, FONT_COLOR, 1)   
  end
  #--------------------------------------------------------------------------
  # * Draw Actor Parameters
  #--------------------------------------------------------------------------
  def draw_actor_params(actor, x, y, type)
    members = []
    @commands.each {|i| members.push($game_actors[i])}   
    case type
    when :hp   
      members.sort!   { |a, b| a.maxhp <=> b.maxhp }     
      gw = BAR_WIDTH * actor.hp / members.pop.maxhp
      text = "#{actor.maxhp}"
    when :sp
      members.sort!   { |a, b| a.maxsp <=> b.maxsp }     
      gw = BAR_WIDTH * actor.sp / members.pop.maxsp
      text = "#{actor.maxsp}"
    when :str
      members.sort!   { |a, b| a.str <=> b.str }
      gw = BAR_WIDTH * actor.str / members.pop.str
      text = "#{actor.str}"   
    when :dex
      members.sort!   { |a, b| a.dex <=> b.dex }
      gw = BAR_WIDTH * actor.dex / members.pop.dex
      text = "#{actor.dex}"
    when :agi
      members.sort!   { |a, b| a.agi <=> b.agi }
      gw = BAR_WIDTH * actor.agi / members.pop.agi
      text = "#{actor.agi}"   
    when :int
      members.sort!   { |a, b| a.int <=> b.int }
      gw = BAR_WIDTH * actor.int / members.pop.int
      text = "#{actor.int}"   
    end
    self.contents.fill_rect(x, y+WLH-8, BAR_WIDTH+2, 8, Color.new(0, 0, 0, 255))
    self.contents.gradient_fill_rect(x+1, y+WLH-7, gw, 6, CHAR_PARAMS_BAR[type][1], CHAR_PARAMS_BAR[type][2])     
    self.contents.draw_char_status(x, y, 100, WLH, CHAR_PARAMS_BAR[type][0], system_color, 0)
    self.contents.draw_char_status(x + BAR_WIDTH - 42, y, 44, WLH, text, FONT_COLOR, 2)
  end   
  #--------------------------------------------------------------------------
  # * Get Top Row
  #--------------------------------------------------------------------------
  def top_row   
    return self.ox / @cursor_width
  end
  #--------------------------------------------------------------------------
  # * Set Top Row
  #--------------------------------------------------------------------------
  def top_row=(row)   
    row = 0 if row < 0
    row = @item_max - 1 if row > @item_max - 1     
    self.ox = row * @cursor_width
  end
  #--------------------------------------------------------------------------
  # * Update Cursor Rectangle
  #--------------------------------------------------------------------------
  def update_cursor_rect     
    if @index < 0
      self.cursor_rect.empty
      return
    end   
    row = @index     
    self.top_row = row if row < self.top_row
    self.top_row = row - (COLMUNS - 1) if row > self.top_row + (COLMUNS - 1)
    x = @index * @cursor_width - self.ox
    y = 0         
    self.cursor_rect.set(x, y, @cursor_width, height-32)   
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if self.active and @item_max > 0 and @index >= 0
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)       
        @index += 1
        @index %= @item_max
      end
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        @index += @item_max - 1
        @index %= @item_max       
      end
    end   
    update_cursor_rect
  end   
end

#==============================================================================
# ** Window_Char_Select_Help
#==============================================================================

class Window_Char_Select_Help < Window_Base
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.windowskin = RPG::Cache.windowskin(WINDOW) if WINDOW != ''
    self.opacity = WINDOW_OPACTIY
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear   
    self.contents.font.size = FONT_SIZE
    self.contents.draw_char_status(4, 0, width-32, WLH, WINDOW_HELP_TEXT, FONT_COLOR, 1)
  end
end

#==============================================================================
# ** Bitmap
#==============================================================================

class Bitmap
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Draw Text Outline
  #--------------------------------------------------------------------------
  def draw_char_status(x, y, width, height, text, color, align = 1)
    font.name = FONT_NAME   
    font.bold = FONT_BOLD
    font.italic = FONT_ITALIC
    if FONT_OUTLINE
      font.color = FONT_OUTLINE_COLOR
      draw_text(x + 1, y, width, height, text, align)
      draw_text(x - 1, y, width, height, text, align)
      draw_text(x, y + 1, width, height, text, align)
      draw_text(x, y - 1, width, height, text, align)
    end   
    if FONT_SHADOW
      font.color = FONT_SHADOW_COLOR   
      draw_text(x + 1, y + 4, width, height, text, align)
    end
    font.color = color
    draw_text(x, y, width, height, text, align)
  end
  #--------------------------------------------------------------------------
  # * Draw Gradient Fill Rectangle
  #--------------------------------------------------------------------------
  def gradient_fill_rect(x, y, width, height, c1, c2)
    (x...x + width).each { |i|
      r = c1.red + (c2.red - c1.red) * (i - x) / (width - 1)
      g = c1.green + (c2.green - c1.green) * (i - x) / (width - 1)
      b = c1.blue + (c2.blue - c1.blue) * (i - x) / (width - 1)
      color = Color.new(r, g, b)
      fill_rect(i, y, 1, height, color)
      }   
    end
    class Game_Party
  attr_accessor   :actors                   # actors
  end
end



PS. Line 141 to ta : $game_party.actors = [] (dopisana) z gory dziekuje[/code]
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 22 Lip, 2011 20:58
Zamień skrypt na poniższy:
Spoiler:

Kod:
#==============================================================================
# Wybór postaci [XP]
# by Ayene
# 15.07.2011 ver 1.0
# www.ultimateam.pl
#==============================================================================
# Opis:
# Skrypt pozwala na wybór postaci na początku gry. Może mieć również
# zastosowanie przy wyborze więcej niż jednego bohatera (maksymalnie tyle,
# ile może liczyć drużyna).
#==============================================================================
# Instrukcja:
#==============================================================================
# Na początku gry wywołaj za pomocą polecenia "Script" w zdarzeniu:
# $scene = Scene_Character_Select.new
#
#==============================================================================
# Konfiguracja:
#==============================================================================

module AYENE
  module Character_Select
   
    # Ustawienia czcionki
    FONT_NAME = 'Comic Sans MS'    # nazwa czcionki (folder Fonts)
    FONT_SIZE = 26                 # rozmiar czcionki
    FONT_BOLD = false              # pogrubienie
    FONT_ITALIC = false            # kursywa   
    FONT_COLOR = Color.new(255, 255, 255, 255)   # kolor tekstu
    FONT_OUTLINE = false                       # obwódka? (true/false)   
    FONT_OUTLINE_COLOR = Color.new(0, 0, 0, 255) # kolor obwódki tekstu     
    FONT_SHADOW = true                          # cień? (true/false)
    FONT_SHADOW_COLOR = Color.new(0, 0, 0, 100)  # kolor cienia
     
    WLH = 32                        # interlinia
   
    # Ustawienia tła obrazkowego (folder Graphics/Pitures)   
    BACKGROUND_IMAGE = ''           # nazwa tła; '' wyłącza tło
    BACKGROUND_OPACTIY = 255    # przezroczystość tła
   
    # Ustawienia okna (folder Graphics/Windowskins)
    WINDOW = ''                              # nazwa pliku; '' domyślne okno
    WINDOW_OPACTIY = 255           # przezroczystość okna
    WINDOW_HELP_TEXT = 'Wybierz bohatera'
   
    # Ustawienia muzyki w tle
    STAGE_BGM = ''                  # nazwa pliku z muzyką (folder Audio/BGM)
    STAGE_BGM_VOLUME = 100          # głośność
       
    # Ustawienia postaci
    CHAR_IDS = [1, 5, 4, 2, 3, 6, 7]  # ID postaci do wyboru
   
    # Obrazek bohatera. By go wyświetlić należy w folderze Graphics/Pictures
    # umieścić plik o nazwie "Face_ID", gdzie zamiast ID należy podać id postaci,
    # np. "Face_2" to obrazek bohatera o ID 2.
    CHAR_FACE = false                     # obrazek bohatera? (true/false)   
       
    # Ustawienia statystyk i ich pasków
    # Maksymalna wartość pasków wynosi tyle, ile największa wartość danej
    # statystyki u wszystkich postaci do wyboru. Innymi słowy, skrypt porównuje
    # wielkość danej statystyki u postaci, następnie wyłania najwyższą.
   
    CHAR_PARAMS = [ :hp, :sp, :str, :dex, :agi, :int ]  # nazwy statystyk po przecinku
   
    CHAR_PARAMS_BAR = { # :par => "nazwa", color1, color2
    :hp  => ["Życie", Color.new(0, 100, 17, 255), Color.new(0, 223, 37, 255)],
    :sp  => ["Mana", Color.new(0, 60, 95, 255), Color.new(0, 142, 223, 255)],
    :str => ["Siła", Color.new(140, 20, 20, 255), Color.new(230, 34, 34, 255)],
    :dex => ["Celność", Color.new(124, 38, 132, 255), Color.new(209, 62, 222, 255)],
    :agi => ["Szybkość", Color.new(142, 134, 12, 255), Color.new(228, 219, 71, 255)],
    :int => ["Inteligencja", Color.new(33, 143, 136, 255), Color.new(68,224, 215, 255)],
    }
   
    BAR_WIDTH = 150                 # Szerokość pasków   
    COLMUNS = 3                     # Liczba kolumn
   
    NEXT_SCENE = Scene_Map          # kolejna scena   
    PREVIOUS_SCENE = Scene_Title    # poprzednia scena
  end   
end


class Game_Party
  attr_accessor   :actors                   # actors
end
#==============================================================================
# ** Scene_Character_Select
#==============================================================================

class Scene_Character_Select
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    start
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    terminate
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    @actor_id = 0
    if STAGE_BGM != ''
      Audio.bgm_play("Audio/BGM/" + STAGE_BGM, STAGE_BGM_VOLUME, 100)
    end
    if BACKGROUND_IMAGE != ''
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture(BACKGROUND_IMAGE)
      @background.opacity = BACKGROUND_OPACTIY
    end     
    @window_command = Window_Command_Select.new
    @window_help = Window_Char_Select_Help.new
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    @window_command.dispose
    @window_help.dispose
    unless @background.nil?
      @background.bitmap.dispose
      @background.dispose
    end   
    Audio.bgm_fade(1500) if STAGE_BGM != ''
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update   
    @window_command.update
    @window_help.update
    if Input.trigger?(Input::C)
      determine_character
      $game_party.actors = []
      if$game_party.actors.size < 1
        $game_party.add_actor(@actor_id)
        $game_system.se_play($data_system.decision_se)
        $scene = eval("#{NEXT_SCENE}.new")       
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    elsif Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = eval("#{PREVIOUS_SCENE}.new")
      return
    end   
  end
  #--------------------------------------------------------------------------
  # * Determine Character
  #--------------------------------------------------------------------------
  def determine_character
    actor_index = @window_command.index
    data = []     
    CHAR_IDS.each {|i| data.push(i) if !$game_party.actors.include?($game_actors[i])}   
    @actor_id = data[actor_index]
  end
end

#==============================================================================
# ** Window_Command_Select
#==============================================================================

class Window_Command_Select < Window_Selectable
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize   
    super(0, 65, 640, 415)
    data = []
    CHAR_IDS.each {|i| data.push(i) if !$game_party.actors.include?($game_actors[i])}   
    @commands = data
    @_blink_count = 0
    @item_max = @commands.size
    @cursor_width = ((width-32) / COLMUNS)     
    self.windowskin = RPG::Cache.windowskin(WINDOW) if WINDOW != ''
    self.opacity = WINDOW_OPACTIY
    self.contents = Bitmap.new(@cursor_width+@item_max * @cursor_width-32, height-32)
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear   
    @commands.each_index { |i| draw_item(i)}   
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)
    x = 4 + @cursor_width * index
    y = 4     
    actor = $game_actors[@commands[index]]     
    draw_actor_status(actor, x, y)
    x = (@cursor_width-BAR_WIDTH)/2 + @cursor_width * index
    CHAR_PARAMS.each_index { |i|
      draw_actor_params(actor, x, y + @bit_height + WLH * (i+2), CHAR_PARAMS[i])
    }
  end
  #--------------------------------------------------------------------------
  # * Draw Actor Status
  #--------------------------------------------------------------------------
  def draw_actor_status(actor, x, y)   
    self.contents.font.size = FONT_SIZE
    self.contents.draw_char_status(x, y, @cursor_width - 8, WLH, "#{actor.name}", FONT_COLOR, 1)           
    if CHAR_FACE
      bitmap = RPG::Cache.picture("Face_#{actor.id}")   
      rect = Rect.new(0, 0, bitmap.width, bitmap.height)
      self.contents.blt(x + (@cursor_width-bitmap.width)/2, y + WLH * 1, bitmap, rect)   
      @bit_height = bitmap.height
      bitmap.dispose
    else
      @bit_height = 0
    end   
    self.contents.font.size = FONT_SIZE-2
    class_name = $data_classes[actor.class_id].name
    text = sprintf("Klasa: %s", class_name)   
    self.contents.draw_char_status(x, y + @bit_height + WLH, @cursor_width - 8, WLH, text, FONT_COLOR, 1)   
  end
  #--------------------------------------------------------------------------
  # * Draw Actor Parameters
  #--------------------------------------------------------------------------
  def draw_actor_params(actor, x, y, type)
    members = []
    @commands.each {|i| members.push($game_actors[i])}   
    case type
    when :hp   
      members.sort!   { |a, b| a.maxhp <=> b.maxhp }     
      gw = BAR_WIDTH * actor.hp / members.pop.maxhp
      text = "#{actor.maxhp}"
    when :sp
      members.sort!   { |a, b| a.maxsp <=> b.maxsp }     
      gw = BAR_WIDTH * actor.sp / members.pop.maxsp
      text = "#{actor.maxsp}"
    when :str
      members.sort!   { |a, b| a.str <=> b.str }
      gw = BAR_WIDTH * actor.str / members.pop.str
      text = "#{actor.str}"   
    when :dex
      members.sort!   { |a, b| a.dex <=> b.dex }
      gw = BAR_WIDTH * actor.dex / members.pop.dex
      text = "#{actor.dex}"
    when :agi
      members.sort!   { |a, b| a.agi <=> b.agi }
      gw = BAR_WIDTH * actor.agi / members.pop.agi
      text = "#{actor.agi}"   
    when :int
      members.sort!   { |a, b| a.int <=> b.int }
      gw = BAR_WIDTH * actor.int / members.pop.int
      text = "#{actor.int}"   
    end
    self.contents.fill_rect(x, y+WLH-8, BAR_WIDTH+2, 8, Color.new(0, 0, 0, 255))
    self.contents.gradient_fill_rect(x+1, y+WLH-7, gw, 6, CHAR_PARAMS_BAR[type][1], CHAR_PARAMS_BAR[type][2])     
    self.contents.draw_char_status(x, y, 100, WLH, CHAR_PARAMS_BAR[type][0], system_color, 0)
    self.contents.draw_char_status(x + BAR_WIDTH - 42, y, 44, WLH, text, FONT_COLOR, 2)
  end   
  #--------------------------------------------------------------------------
  # * Get Top Row
  #--------------------------------------------------------------------------
  def top_row   
    return self.ox / @cursor_width
  end
  #--------------------------------------------------------------------------
  # * Set Top Row
  #--------------------------------------------------------------------------
  def top_row=(row)   
    row = 0 if row < 0
    row = @item_max - 1 if row > @item_max - 1     
    self.ox = row * @cursor_width
  end
  #--------------------------------------------------------------------------
  # * Update Cursor Rectangle
  #--------------------------------------------------------------------------
  def update_cursor_rect     
    if @index < 0
      self.cursor_rect.empty
      return
    end   
    row = @index     
    self.top_row = row if row < self.top_row
    self.top_row = row - (COLMUNS - 1) if row > self.top_row + (COLMUNS - 1)
    x = @index * @cursor_width - self.ox
    y = 0         
    self.cursor_rect.set(x, y, @cursor_width, height-32)   
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if self.active and @item_max > 0 and @index >= 0
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)       
        @index += 1
        @index %= @item_max
      end
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        @index += @item_max - 1
        @index %= @item_max       
      end
    end   
    update_cursor_rect
  end   
end

#==============================================================================
# ** Window_Char_Select_Help
#==============================================================================

class Window_Char_Select_Help < Window_Base
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.windowskin = RPG::Cache.windowskin(WINDOW) if WINDOW != ''
    self.opacity = WINDOW_OPACTIY
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear   
    self.contents.font.size = FONT_SIZE
    self.contents.draw_char_status(4, 0, width-32, WLH, WINDOW_HELP_TEXT, FONT_COLOR, 1)
  end
end

#==============================================================================
# ** Bitmap
#==============================================================================

class Bitmap
  include AYENE::Character_Select
  #--------------------------------------------------------------------------
  # * Draw Text Outline
  #--------------------------------------------------------------------------
  def draw_char_status(x, y, width, height, text, color, align = 1)
    font.name = FONT_NAME   
    font.bold = FONT_BOLD
    font.italic = FONT_ITALIC
    if FONT_OUTLINE
      font.color = FONT_OUTLINE_COLOR
      draw_text(x + 1, y, width, height, text, align)
      draw_text(x - 1, y, width, height, text, align)
      draw_text(x, y + 1, width, height, text, align)
      draw_text(x, y - 1, width, height, text, align)
    end   
    if FONT_SHADOW
      font.color = FONT_SHADOW_COLOR   
      draw_text(x + 1, y + 4, width, height, text, align)
    end
    font.color = color
    draw_text(x, y, width, height, text, align)
  end
  #--------------------------------------------------------------------------
  # * Draw Gradient Fill Rectangle
  #--------------------------------------------------------------------------
  def gradient_fill_rect(x, y, width, height, c1, c2)
    (x...x + width).each { |i|
      r = c1.red + (c2.red - c1.red) * (i - x) / (width - 1)
      g = c1.green + (c2.green - c1.green) * (i - x) / (width - 1)
      b = c1.blue + (c2.blue - c1.blue) * (i - x) / (width - 1)
      color = Color.new(r, g, b)
      fill_rect(i, y, 1, height, color)
      }   
    end 
end


PS Pierwszy post zaktualizowany...
________________________


 
 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Pią 22 Lip, 2011 21:15
Dobra dziala mniej wiecej tylko mam jeszcze jeden problem juz wybieram postac i pojawia mi sie moja postac i znowu wyskakuje mi okno wybierania postaci ;/ i tak caly czas :) Prosze o odp
________________________

 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 22 Lip, 2011 21:16
Widocznie zdarzenie masz ustawione na parallel lub autorun. Skorzystaj z self-switcha. Wrzuć go na drugiej stronie i po kłopocie ;-)
________________________


 
 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Pią 22 Lip, 2011 21:44
za pomoca przelacznikow tez nie dziala ... znaczy zabardzo dziala :D wybiore postac a on znowu jaka postac chce wybrac :/
________________________

 
 
 
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