UltimaForum

Skrypty [VX] - Ukrycie umiejętności

Ayene - Wto 17 Lis, 2009 21:37
Temat postu: Ukrycie umiejętności
~ Ukrycie umiejętności ~

Krótki opis
Skrypt pozwala ukryć umiejętności tak, by nie wyświetlały się w menu i podczas walki. Na pierwszy rzut oka skrypt wydaje się być niepotrzebny, jest jednak przydatny, gdy chcemy przerobić komendy podczas walki (by odpowiadały konkretnym umiejętnościom).

Autor skryptu
KGC [http://ytomy.sakura.ne.jp/]

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

Kompatybilność
Tylko VX.

Skrypt
Spoiler:

Kod:
#==============================================================================
#  Ukrycie umiejętności by KGC [http://ytomy.sakura.ne.jp/]
#  Tłumaczenie i korekta by Ayene [ www.ultimateam.pl]
#------------------------------------------------------------------------------
#  Skrypt pozwala ukryć umiejętności tak, by nie wyświetlały się w menu
#  i podczas walki.
#  Wystarczy wpisać przy wybranej umiejętności w miejscu 'Note' w Bazie Danych:
#   - aby ukryć ją w menu:
#    <ukryty menu> lub <UKRYTY MENU>
#   - aby ukryć ją w walce:
#    <ukryty walka> lub <UKRYTY WALKA>
#  Umieść skrypt nad Main.           
#==============================================================================

# --------------------------- POCZĄTEK SKRYPTU -------------------------------
module HiddenSkill

      HIDDEN = /<(?:ukryty|UKRYTY)\s*
                (menu|walka|MENU|WALKA)?>/ix

end

class RPG::Skill < RPG::UsableItem
  #--------------------------------------------------------------------------
  # Jeśli umiejętność nie jest ukryta...
  #--------------------------------------------------------------------------
  def create_hidden_skill_cache
    @__hidden_in_menu   = false
    @__hidden_in_battle = false

    self.note.each_line { |line|
      case line
      when HiddenSkill::HIDDEN
        case $1
        when /^menu|MENU/i
          @__hidden_in_menu   = true
        when /^walka|WALKA/i
          @__hidden_in_battle = true
        when nil
          @__hidden_in_menu   = true
          @__hidden_in_battle = true
        end
      end
    }
  end
  #--------------------------------------------------------------------------
  # Ukrycie w menu
  #--------------------------------------------------------------------------
  def hidden_in_menu?
    create_hidden_skill_cache if @__hidden_in_menu == nil
    return @__hidden_in_menu
  end
  #--------------------------------------------------------------------------
  # Ukrycie podczas walki
  #--------------------------------------------------------------------------
  def hidden_in_battle?
    create_hidden_skill_cache if @__hidden_in_battle == nil
    return @__hidden_in_battle
  end
end

class Window_Skill < Window_Selectable

  unless $@
    alias include_HiddenSkill? include? if method_defined?(:include?)
  end
  def include?(skill)
    return false if skill == nil

    if defined?(include_HiddenSkill?)
      return false unless include_HiddenSkill?(skill)
    end

    if $game_temp.in_battle
      return false if skill.hidden_in_battle?
    else
      return false if skill.hidden_in_menu?
    end

    return true
  end
 
  def refresh
    @data = []
    for skill in @actor.skills
      next unless include?(skill)
      @data.push(skill)
      if skill.id == @actor.last_skill_id
        self.index = @data.size - 1
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
end
# ----------------------------- KONIEC SKRYPTU --------------------------------


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.

pro14ab - Pią 17 Cze, 2011 22:47

Hmmm... mi się chyba nie przyda :D ale może innym :roll:
Aesen - Czw 12 Sty, 2012 19:13

Coś mi nie działa wklejam skrypt pisze <ukryty> i nadal on jest ;-(
Ayene - Czw 12 Sty, 2012 20:49

Zrobiłam korektę skryptu i zaktualizowałam pierwszy post. Teraz powinno działać :->

Powered by phpBB modified by Przemo © 2003 phpBB Group