Przerobienie Skryptu
Aktualny czas: 28-04-26, 18:23 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[VXAce] Przerobienie Skryptu
Ayene Offline
*


Liczba postów: 758
Dołączył: 09-04-13

Pomógł: 112



Post: #8
RE: Przerobienie Skryptu

Działanie skryptu rozumiem, bo sama jestem jego autorką wink

Ale teraz sposób konfigurowania, jaki chciałeś mieć, wyjaśniłeś, więc przeróbka będzie prosta.

Zamień cały skrypt na poniższy:

#===================================================================
# Wymagania broni i pancerza [VXAce]
# by Ayene
# 08.01.2012 ver 1.0
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie wymagań dla broni i pancerza.
# Na przykład ekwipowanie bohatera w topór dwuręczny byłoby możliwe
# dopiero po osiągnięciu konkretnego poziomu lub posiadaniu odpowiedniej
# statystyki.
#
# Instrukcja:
# By skorzystać ze skryptu w oknie 'Note' przy danym elemencie ekwipunku
# w Bazie Danych umieść tekst <wymagania LV, ATK, DEF, SPI, MDEF, AGI, LUCK, VAR>,
# gdzie:
#   LV - wymagany poziom postaci (level)
#   ATK - atak (attack)
#   DEF - obrona (defence)
#   SPI - wola (spirit)
#   MDEF - obrona magiczna (magical defence)
#   AGI - zręczność/zwinność (agility)
#   LUCK - szczęście (luck)
#   VAR - zmienna (variable)
#
# Przykład:
# Jeśli chcesz, by postać mogła ekwipować broń na poziomie 6, dodatkowo
# pod warunkiem, że ma 40 ataku i 70 obrony oraz że zmienna 1 jest większa od 1
# to w oknie 'Note' tej broni należy wpisać:
# <wymagania 6, 40, 70, 0, 0, 0, 0, 1>
#
# Natomiast, gdy bohater ma mieć tylko odpowiednią zręczność:
# <wymagania 0, 0, 0, 0, 0, 50, 0, 0>
#===================================================================
module AYENE
  module ItemSpec
    ITEM_SPEC = /<(?:WYMAGANIA|wymagania)\s*(\d+)\s*, \s*(\d+), \s*(\d+), \s*(\d+), \s*(\d+), \s*(\d+), \s*(\d+), \s*(\d+)>/i
    WEAPON_TEXT = "Nie potrafisz jeszcze korzystać z tej broni."
    ARMOR_TEXT = "Nie potrafisz jeszcze nosić tego pancerza."  
    ACC_TEXT = "Nie możesz jeszcze nosić tego przedmiotu."
  end
end

module DataManager  
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class << DataManager
    alias aye_dataman_loaddata load_database
  end
  def self.load_database
    aye_dataman_loaddata
    for group in [$data_weapons, $data_armors]
      for obj in group
        next if obj.nil?
        obj.item_spec_ini
      end
    end
  end  
end

#===================================================================
# RPG::BaseItem
#===================================================================
class RPG::EquipItem < RPG::BaseItem
  attr_accessor :spec_params  
  def item_spec_ini
    @spec_params = {}
    (0..7).each{|i| @spec_params[i] = 0}
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when AYENE::ItemSpec::ITEM_SPEC
        @spec_params[0] = $1.to_i
        @spec_params[1] = $2.to_i
        @spec_params[2] = $3.to_i
        @spec_params[3] = $4.to_i
        @spec_params[4] = $5.to_i
        @spec_params[5] = $6.to_i
        @spec_params[6] = $7.to_i
        @spec_params[7] = $8.to_i
      end
    }
  end
end

#===================================================================
# RPG::Weapon
#===================================================================
class RPG::Weapon < RPG::EquipItem
  def spec_text
    return AYENE::ItemSpec::WEAPON_TEXT
  end
end

#===================================================================
# RPG::Armor
#===================================================================
class RPG::Armor < RPG::EquipItem
  def spec_text
    case etype_id
    when 4
      return AYENE::ItemSpec::ACC_TEXT
    else
      return AYENE::ItemSpec::ARMOR_TEXT
    end    
  end
end

#===================================================================
# Scene_Equip
#===================================================================
class Scene_Equip < Scene_MenuBase
  alias aye_itspec_sceq_start start
  alias aye_itspec_sceq_ter terminate
  alias aye_itspec_sceq_update update

  def start    
    @frame = 0  
    @spec_window = Window_Help2.new(22,180,500)
    @spec_window.deactivate
    @spec_window.hide
    aye_itspec_sceq_start
  end

  def terminate
    aye_itspec_sceq_ter
    @spec_window.dispose
  end

  def update    
    @spec_window.update
    if @spec_window.active
      update_spec_selection  
    end  
    aye_itspec_sceq_update
  end
  
  def on_item_ok
    item = @item_window.item
    if item != nil and !@actor.equip_allowed?(item)
      Sound.play_buzzer
      @spec_window.set_text(item.spec_text)
      @spec_window.show
      @spec_window.activate    
      @item_window.deactivate      
    else  
      Sound.play_equip
      @actor.change_equip(@slot_window.index, item)
      @slot_window.activate
      @slot_window.refresh
      @item_window.unselect
      @item_window.refresh
    end    
  end

  def update_spec_selection
    @frame < 50 ? @frame += 1 : @frame = 0
    if @frame == 50
      @spec_window.hide
      @item_window.activate
      @spec_window.deactivate
    end
  end
end

#===================================================================
# Game_Actor
#===================================================================
class Game_Actor < Game_Battler
  
  def optimize_equipments
    clear_equipments
    equip_slots.size.times do |i|
      next if !equip_change_ok?(i)      
      items = $game_party.equip_items.select do |item|        
        item.etype_id == equip_slots[i] &&
        equippable?(item) && item.performance >= 0 &&
        equip_allowed?(item)
      end        
      change_equip(i, items.max_by {|item| item.performance})
    end
  end
  
  def equip_allowed?(item)
    return true if (item.spec_params[0] <= level && item.spec_params[1] <= param(2) &&
          item.spec_params[2] <= param(3) && item.spec_params[3] <= param(4) &&
          item.spec_params[4] <= param(5) && item.spec_params[5] <= param(6) &&
          item.spec_params[6] <= param(7) && (item.spec_params[7] == 0 or $game_variables[item.spec_params[7]] >= 1))
    return false
  end
end

#===================================================================
# Window_Help
#===================================================================
class Window_Help2 < Window_Help
  def initialize(x, y, width)
    super(1)
    self.x = x
    self.y = y
    self.z = 1000
    self.width = width
    create_contents
  end
  
  def set_text(text)
    if text != @text  
      contents.clear
      draw_text(0, 0, contents_width, contents_height, text, 1)
      @text = text    
    end
  end
end

#===================================================================
# Game_Interpreter
#===================================================================
class Game_Interpreter
    
  def check_change_equip(actor)
    actor.equips.each_with_index do |item, i|
      actor.change_equip(i, nil) if !item.nil? && !actor.equip_allowed?(item)
    end
  end
  
  alias aye_command_315 command_315
  def command_315
    aye_command_315
    iterate_actor_var(@params[0], @params[1]) do |actor|    
      check_change_equip(actor)          
    end    
  end

  alias aye_command_316 command_316
  def command_316
    aye_command_316
    iterate_actor_var(@params[0], @params[1]) do |actor|    
      check_change_equip(actor)          
    end    
  end  

  alias aye_command_317 command_317
  def command_317
    aye_command_317
    iterate_actor_var(@params[0], @params[1]) do |actor|
      check_change_equip(actor)
    end
  end
end

[Obrazek: aye_furniture_pres.png]
14-08-13 11:33
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Wiadomości w tym wątku
Przerobienie Skryptu - Dragon - 13-08-13, 18:42
RE: Przerobienie Skryptu - Ayene - 13-08-13, 19:14
RE: Przerobienie Skryptu - Dragon - 13-08-13, 19:21
RE: Przerobienie Skryptu - Ayene - 13-08-13, 20:39
RE: Przerobienie Skryptu - Dragon - 14-08-13, 08:00
RE: Przerobienie Skryptu - Ayene - 14-08-13, 10:30
RE: Przerobienie Skryptu - Dragon - 14-08-13, 11:01
RE: Przerobienie Skryptu - Ayene - 14-08-13 11:33
RE: Przerobienie Skryptu - Dragon - 14-08-13, 12:34

Skocz do:


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

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