Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
Autor Wiadomość
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 22 Lut, 2013 02:00
Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
~ Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP] ~


Krótki opis:
Skrypt powstały niegdyś na zamówienie jednego z Użytkowników Forum. Odkopany po tym, jak chciałam dodać go do aktualnie tworzonego "Systemu".

Każdy kto grał w Final Fantasy X, będzie wiedział o co chodzi. Skrypt umożliwia kodowanie znaków, dzięki czemu można wprowadzić unikatowy język w świecie gry. W miarę zdobywania przez gracza odpowiednich przedmiotów (np. słowników) zakodowane literki zmieniają się w prawidłowe.

Uwaga skrypt nadpisuje definicję "refresh" w Window_Message. Dokładne miejsce dodanego kodu zostało oznaczone w skrypcie, dzięki czemu w przypadku używania w projekcie CMS-ów linijki można własnoręcznie "dokleić".

Autor:
Ayene [ yurika@o2.pl]

Kompatybilność:
RPG Maker XP

Skrypt:
Spoiler:

Kod:
#===================================================================
# Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
# Autor: Ayene [ yurika@o2.pl]
# www.ultimateam.pl
#===================================================================
# Opis:
# Każdy kto grał w Final Fantasy X, będzie wiedział o co chodzi.
# Skrypt umożliwia kodowanie znaków, dzięki czemu można wprowadzić unikatowy
# język w świecie gry. W miarę zdobywania przez gracza odpowiednich przedmiotów
# (np. słowników) zakodowane literki zmieniają się w prawidłowe.
#
# Konfiguracja liter i przedmiotów je odsłaniających znajduje się poniżej.
#
# Instrukcja:
# Wklej skrypt nad Main.
#
# Kompatybilność:
# Uwaga skrypt nadpisuje definicję "refresh" w Window_Message.
# Dokładne miejsce dodanego kodu zostało oznaczone w skrypcie,
# dzięki czemu w przypadku używania w projekcie CMS-ów
# linijki można własnoręcznie "dokleić".
#===================================================================

# KONFIGURACJA
module AYENE
  module AlBhed
 
    CHAR_SWITCH = 13 # przełącznik włączający kodowanie
   
    CHAR_COLOR1 = 3   # kolor zakodowanej literki
    CHAR_COLOR2 = 2   # kolor odkodowanej literki
   
    IGNORE_COLOR = ["?", ".", ",", "!"] # znaki bez koloru
     
    CHAR_TABLE = {# <-- nie usuwać
   
    #"litera kodowana" => ["litera kodująca", ID przedmiotu z literą]
   
    "a" => ["y", 1],
    "ą" => ["y", 2],
    "b" => ["p", 3],
    "c" => ["l", 4],
    "ć" => ["l", 5],
    "d" => ["t", 6],
    "e" => ["a", 7], 
    "ę" => ["a", 8],
    "f" => ["v", 9],
    "g" => ["k", 10],
    "h" => ["r", 11],
    "i" => ["e", 12],
    "j" => ["z", 13],
    "k" => ["g", 14],
    "l" => ["m", 15],
    "ł" => ["m", 16],
    "m" => ["s", 17],
    "n" => ["h", 18],
    "ń" => ["h", 19],
    "o" => ["u", 20],
    "ó" => ["u", 21],
    "p" => ["b", 22],
    "q" => ["x", 23], 
    "r" => ["n", 24],
    "s" => ["c", 25],
    "ś" => ["c", 26],
    "t" => ["d", 27],
    "u" => ["i", 28],
    "v" => ["j", 29],
    "w" => ["f", 30],
    "x" => ["q", 31],
    "y" => ["o", 32],
    "z" => ["w", 33],
    "ź" => ["w", 34],
    "ż" => ["w", 35],
    } # <-- nie usuwać   
     
    def self.char_translate(c)
      char = CHAR_TABLE[c.downcase]
      return c if char.nil?
      return c if $game_party.item_number(char[1]) > 0
      return char[0].downcase if c.clone.downcase!.nil?
      return char[0].upcase
    end 
  end
end
class Window_Message < Window_Selectable   
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    x = y = 0
    @cursor_width = 0
    if $game_temp.choice_start == 0
      x = 8
    end
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      text.gsub!(/\\\\/) { "\000" }
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      while ((c = text.slice!(/./m)) != nil)
        if c == "\000"
          c = "\\"
        end
        if c == "\001"
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          next
        end
        if c == "\002"
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
          next
        end
        if c == "\n"
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          y += 1
          x = 0
          if y >= $game_temp.choice_start
            x = 8
          end
          next
        end       
       
        # EDYCJA BEGIN
        scolor = self.contents.font.color.clone
        if $game_switches[AYENE::AlBhed::CHAR_SWITCH]
          self.contents.font.color = text_color(AYENE::AlBhed::CHAR_COLOR1)
          if c == c = AYENE::AlBhed.char_translate(c)
            self.contents.font.color = text_color(AYENE::AlBhed::CHAR_COLOR2) unless AYENE::AlBhed::IGNORE_COLOR.include?(c)
          end
        end
        # EDYCJA END
       
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
       
        # EDYCJA BEGIN
        self.contents.font.color = scolor
        # EDYCJA END
       
        x += self.contents.text_size(c).width
      end
    end
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
end


Screeny:
Spoiler:



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


 
 
 
Nex 




Preferowany:
RPG Maker XP

Pomógł: 15 razy
Dołączył: 27 Paź 2012
Posty: 145
Wysłany: Pią 22 Lut, 2013 15:56
Cytat:
CHAR_COLOR1 = 3 # kolor zakodowanej literki
CHAR_COLOR2 = 2 # kolor odkodowanej literki

o co chodzi z tymi cyframi przy kolorach?
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 22 Lut, 2013 16:54
To numery kolorów, które wpisuje się w oknie wiadomości \c[nr]. Jeśli ktoś woli można zmienić kolory na RPG, nadpisując skrypt:
Spoiler:

Kod:
#===================================================================
# Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
# Autor: Ayene [ yurika@o2.pl]
# www.ultimateam.pl
#===================================================================
# Opis:
# Każdy kto grał w Final Fantasy X, będzie wiedział o co chodzi.
# Skrypt umożliwia kodowanie znaków, dzięki czemu można wprowadzić unikatowy
# język w świecie gry. W miarę zdobywania przez gracza odpowiednich przedmiotów
# (np. słowników) zakodowane literki zmieniają się w prawidłowe.
#
# Konfiguracja liter i przedmiotów je odsłaniających znajduje się poniżej.
#
# Instrukcja:
# Wklej skrypt nad Main.
#
# Kompatybilność:
# Uwaga skrypt nadpisuje definicję "refresh" w Window_Message.
# Dokładne miejsce dodanego kodu zostało oznaczone w skrypcie,
# dzięki czemu w przypadku używania w projekcie CMS-ów
# linijki można własnoręcznie "dokleić".
#===================================================================

# KONFIGURACJA
module AYENE
  module AlBhed
 
    CHAR_SWITCH = 13 # przełącznik włączający kodowanie
   
   
    # Color.new(R, G, B, przezroczystość)
    CHAR_COLOR1 = Color.new(128, 255, 128, 255)   # kolor zakodowanej literki
    CHAR_COLOR2 = Color.new(255, 128, 128, 255)   # kolor odkodowanej literki
   
    IGNORE_COLOR = ["?", ".", ",", "!"] # znaki bez koloru
     
    CHAR_TABLE = {# <-- nie usuwać
   
    #"litera kodowana" => ["litera kodująca", ID przedmiotu z literą]
   
    "a" => ["y", 1],
    "ą" => ["y", 2],
    "b" => ["p", 3],
    "c" => ["l", 4],
    "ć" => ["l", 5],
    "d" => ["t", 6],
    "e" => ["a", 7], 
    "ę" => ["a", 8],
    "f" => ["v", 9],
    "g" => ["k", 10],
    "h" => ["r", 11],
    "i" => ["e", 12],
    "j" => ["z", 13],
    "k" => ["g", 14],
    "l" => ["m", 15],
    "ł" => ["m", 16],
    "m" => ["s", 17],
    "n" => ["h", 18],
    "ń" => ["h", 19],
    "o" => ["u", 20],
    "ó" => ["u", 21],
    "p" => ["b", 22],
    "q" => ["x", 23], 
    "r" => ["n", 24],
    "s" => ["c", 25],
    "ś" => ["c", 26],
    "t" => ["d", 27],
    "u" => ["i", 28],
    "v" => ["j", 29],
    "w" => ["f", 30],
    "x" => ["q", 31],
    "y" => ["o", 32],
    "z" => ["w", 33],
    "ź" => ["w", 34],
    "ż" => ["w", 35],
    } # <-- nie usuwać   
     
    def self.char_translate(c)
      char = CHAR_TABLE[c.downcase]
      return c if char.nil?
      return c if $game_party.item_number(char[1]) > 0
      return char[0].downcase if c.clone.downcase!.nil?
      return char[0].upcase
    end 
  end
end
class Window_Message < Window_Selectable   
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    x = y = 0
    @cursor_width = 0
    if $game_temp.choice_start == 0
      x = 8
    end
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      text.gsub!(/\\\\/) { "\000" }
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      while ((c = text.slice!(/./m)) != nil)
        if c == "\000"
          c = "\\"
        end
        if c == "\001"
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          next
        end
        if c == "\002"
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
          next
        end
        if c == "\n"
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          y += 1
          x = 0
          if y >= $game_temp.choice_start
            x = 8
          end
          next
        end       
       
        # EDYCJA BEGIN
        scolor = self.contents.font.color.clone
        if $game_switches[AYENE::AlBhed::CHAR_SWITCH]
          self.contents.font.color = AYENE::AlBhed::CHAR_COLOR1
          if c == c = AYENE::AlBhed.char_translate(c)
            self.contents.font.color = AYENE::AlBhed::CHAR_COLOR2 unless AYENE::AlBhed::IGNORE_COLOR.include?(c)
          end
        end
        # EDYCJA END
       
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
       
        # EDYCJA BEGIN
        self.contents.font.color = scolor
        # EDYCJA END
       
        x += self.contents.text_size(c).width
      end
    end
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
end

________________________


 
 
 
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